Add support for Static Large Objects

Adds the necessary filter to the swift-proxy config
to support Static Large Objects (SLO).

A new config value 'static-large-object-segments' toggles
SLO support and allows the user to control the maximum object
size when set to a value >0.

Change-Id: I42a88292775badb9fd70e5b99558d084ddcdc29f
Closes-Bug: 1753811
This commit is contained in:
Shane Peters 2018-04-26 12:13:48 -04:00
parent dac707c96b
commit 3b2efe479f
5 changed files with 41 additions and 1 deletions

View File

@ -354,3 +354,20 @@ options:
Sample rate determines what percentage of the metric points a
client should send to the server.
Only takes effect if statsd-host is set.
static-large-object-segments:
default: 0
type: int
description: |
Enable Static Large Objects (SLO) support. This allows the user to
upload several object segments concurrently, after which a manifest
is uploaded that describes how to concatenate them, enabling a
single large object to be downloaded.
.
This option sets the maximum number of object segments allowed per
large object, allowing control over the maximum large object size.
The default minimum segment size is 1MB, while the maximum segment
size corresponds to the largest object swift is configured
to support (5GB by default).
.
Ex. Setting this to 1000 would allow up to 1000 5GB object segments
to be uploaded for a maximum large object size of 5TB.

View File

@ -111,7 +111,9 @@ class SwiftIdentityContext(OSContextGenerator):
'log_headers': config('log-headers'),
'statsd_host': config('statsd-host'),
'statsd_port': config('statsd-port'),
'statsd_sample_rate': config('statsd-sample-rate')
'statsd_sample_rate': config('statsd-sample-rate'),
'static_large_object_segments': config(
'static-large-object-segments')
}
admin_key = leader_get('swauth-admin-key')

View File

@ -118,3 +118,10 @@ set log_name = swauth
super_admin_key = {{ swauth_admin_key }}
default_swift_cluster = local#https://{{ proxy_ip }}:8080/v1
{% endif %}
{% if static_large_object_segments > 0 %}
[filter:slo]
use = egg:swift#slo
max_manifest_size = 536870912
max_manifest_segments = {{ static_large_object_segments }}
{% endif %}

View File

@ -126,3 +126,10 @@ set log_name = swauth
super_admin_key = {{ swauth_admin_key }}
default_swift_cluster = local#https://{{ proxy_ip }}:8080/v1
{% endif %}
{% if static_large_object_segments > 0 %}
[filter:slo]
use = egg:swift#slo
max_manifest_size = 536870912
max_manifest_segments = {{ static_large_object_segments }}
{% endif %}

View File

@ -145,3 +145,10 @@ driver = messagingv2
topic = notifications
log_level = WARN
{% endif -%}
{% if static_large_object_segments > 0 %}
[filter:slo]
use = egg:swift#slo
max_manifest_size = 536870912
max_manifest_segments = {{ static_large_object_segments }}
{% endif %}