Skip to content

Commit 19c7842

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add variable SWIFT_STORAGE_IPS"
2 parents a344608 + 91d2245 commit 19c7842

2 files changed

Lines changed: 46 additions & 8 deletions

File tree

doc/source/configuration.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,18 @@ If you only want to do some testing of a real normal swift cluster
513513
with multiple replicas you can do so by customizing the variable
514514
``SWIFT_REPLICAS`` in your ``localrc`` section (usually to 3).
515515

516+
You can manually override the ring building to use specific storage
517+
nodes, for example when you want to test a multinode environment. In
518+
this case you have to set a space-separated list of IPs in
519+
``SWIFT_STORAGE_IPS`` in your ``localrc`` section that should be used
520+
as Swift storage nodes.
521+
Please note that this does not create a multinode setup, it is only
522+
used when adding nodes to the Swift rings.
523+
524+
::
525+
526+
SWIFT_STORAGE_IPS="192.168.1.10 192.168.1.11 192.168.1.12"
527+
516528
Swift S3
517529
++++++++
518530

lib/swift

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,11 @@ SWIFT_TEMPURL_KEY=${SWIFT_TEMPURL_KEY:-}
149149
# Toggle for deploying Swift under HTTPD + mod_wsgi
150150
SWIFT_USE_MOD_WSGI=${SWIFT_USE_MOD_WSGI:-False}
151151

152+
# A space-separated list of storage node IPs that
153+
# should be used to create the Swift rings
154+
SWIFT_STORAGE_IPS=${SWIFT_STORAGE_IPS:-}
155+
156+
152157
# Functions
153158
# ---------
154159

@@ -693,14 +698,35 @@ function init_swift {
693698
swift-ring-builder container.builder create ${SWIFT_PARTITION_POWER_SIZE} ${SWIFT_REPLICAS} 1
694699
swift-ring-builder account.builder create ${SWIFT_PARTITION_POWER_SIZE} ${SWIFT_REPLICAS} 1
695700

696-
for node_number in ${SWIFT_REPLICAS_SEQ}; do
697-
swift-ring-builder object.builder add z${node_number}-${SWIFT_SERVICE_LOCAL_HOST}:$(( OBJECT_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
698-
swift-ring-builder container.builder add z${node_number}-${SWIFT_SERVICE_LOCAL_HOST}:$(( CONTAINER_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
699-
swift-ring-builder account.builder add z${node_number}-${SWIFT_SERVICE_LOCAL_HOST}:$(( ACCOUNT_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
700-
done
701-
swift-ring-builder object.builder rebalance
702-
swift-ring-builder container.builder rebalance
703-
swift-ring-builder account.builder rebalance
701+
# The ring will be created on each node, and because the order of
702+
# nodes is identical we can use a seed for rebalancing, making it
703+
# possible to get a ring on each node that uses the same partition
704+
# assignment.
705+
if [[ -n $SWIFT_STORAGE_IPS ]]; then
706+
local node_number
707+
node_number=1
708+
709+
for node in ${SWIFT_STORAGE_IPS}; do
710+
swift-ring-builder object.builder add z${node_number}-${node}:${OBJECT_PORT_BASE}/sdb1 1
711+
swift-ring-builder container.builder add z${node_number}-${node}:${CONTAINER_PORT_BASE}/sdb1 1
712+
swift-ring-builder account.builder add z${node_number}-${node}:${ACCOUNT_PORT_BASE}/sdb1 1
713+
let "node_number=node_number+1"
714+
done
715+
716+
else
717+
718+
for node_number in ${SWIFT_REPLICAS_SEQ}; do
719+
swift-ring-builder object.builder add z${node_number}-${SWIFT_SERVICE_LOCAL_HOST}:$(( OBJECT_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
720+
swift-ring-builder container.builder add z${node_number}-${SWIFT_SERVICE_LOCAL_HOST}:$(( CONTAINER_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
721+
swift-ring-builder account.builder add z${node_number}-${SWIFT_SERVICE_LOCAL_HOST}:$(( ACCOUNT_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
722+
done
723+
fi
724+
725+
# We use a seed for rebalancing. Doing this allows us to create
726+
# identical rings on multiple nodes if SWIFT_STORAGE_IPS is the same
727+
swift-ring-builder object.builder rebalance 42
728+
swift-ring-builder container.builder rebalance 42
729+
swift-ring-builder account.builder rebalance 42
704730
} && popd >/dev/null
705731

706732
# Create cache dir

0 commit comments

Comments
 (0)