logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 3018043fc2b405e42070b49e965bc7a0a38ecf2a
parent: c2bee07dbc12c799f412a39a4d5499264baac81e
Author: Patrick Figel <patrick@figel.email>
Date:   Mon, 11 Sep 2017 15:11:13 +0200

Add OpenStack Keystone V3 support (#4889)

Keystone V2 is deprecated in favour of V3. This adds the necessary
connection parameters for establishing a V3 connection. Connections
to V2 endpoints are still possible and the configuration should
remain compatible.

This also introduces a SWIFT_REGION variable for multi-region
OpenStack environments and a SWIFT_CACHE_TTL that controls how long
tokens and other meta-data is cached for. Caching tokens avoids
rate-limiting errors that would result in media uploads becoming
unavailable during high load or when using tasks like
media:remove_remote. fog-openstack only supports token caching for
V3 endpoints, so a recommendation for using V3 was added.

Diffstat:

M.env.production.sample8++++++++
Mconfig/initializers/paperclip.rb5++++-
2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/.env.production.sample b/.env.production.sample @@ -101,11 +101,19 @@ SMTP_FROM_ADDRESS=notifications@example.com # Swift (optional) # SWIFT_ENABLED=true # SWIFT_USERNAME= +# For Keystone V3, the value for SWIFT_TENANT should be the project name # SWIFT_TENANT= # SWIFT_PASSWORD= +# Keystone V2 and V3 URLs are supported. Use a V3 URL if possible to avoid +# issues with token rate-limiting during high load. # SWIFT_AUTH_URL= # SWIFT_CONTAINER= # SWIFT_OBJECT_URL= +# SWIFT_REGION= +# Defaults to 'default' +# SWIFT_DOMAIN_NAME= +# Defaults to 60 seconds. Set to 0 to disable +# SWIFT_CACHE_TTL= # Optional alias for S3 if you want to use Cloudfront or Cloudflare in front # S3_CLOUDFRONT_HOST= diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb @@ -47,9 +47,12 @@ elsif ENV['SWIFT_ENABLED'] == 'true' fog_credentials: { provider: 'OpenStack', openstack_username: ENV.fetch('SWIFT_USERNAME'), - openstack_tenant: ENV.fetch('SWIFT_TENANT'), + openstack_project_name: ENV.fetch('SWIFT_TENANT'), openstack_api_key: ENV.fetch('SWIFT_PASSWORD'), openstack_auth_url: ENV.fetch('SWIFT_AUTH_URL'), + openstack_domain_name: ENV['SWIFT_DOMAIN_NAME'] || 'default', + openstack_region: ENV['SWIFT_REGION'], + openstack_cache_ttl: ENV['SWIFT_CACHE_TTL'] || 60, }, fog_directory: ENV.fetch('SWIFT_CONTAINER'), fog_host: ENV.fetch('SWIFT_OBJECT_URL'),