aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-07-31 17:52:43 +0000
committerGerrit Code Review <review@openstack.org>2015-07-31 17:52:43 +0000
commita20fbed2520db9b1ab0bde80acf9b59466ec56f6 (patch)
tree8c1ecd5c4ef88b30dfb008c35b67e85512f444d0
parent2887c6d2e4d511888d9156668e2b75b48d58add8 (diff)
parent5e28eb8496c356f2074c21d72b52906451696e12 (diff)
downloadkolla-a20fbed2520db9b1ab0bde80acf9b59466ec56f6.tar.gz
kolla-a20fbed2520db9b1ab0bde80acf9b59466ec56f6.zip
Merge "Implement Swift Containers"
-rw-r--r--compose/swift-proxy.yml7
-rw-r--r--compose/swift-storage.yml73
-rw-r--r--docker/centos/binary/swift/swift-account-server/Dockerfile (renamed from docker/centos/binary/swift/swift-account/Dockerfile)5
l---------docker/centos/binary/swift/swift-account-server/build (renamed from docker/centos/binary/swift/swift-account/build)0
l---------docker/centos/binary/swift/swift-account-server/config-external.sh1
l---------docker/centos/binary/swift/swift-account-server/config-internal.sh1
l---------docker/centos/binary/swift/swift-account-server/start.sh1
l---------docker/centos/binary/swift/swift-account/config-external.sh1
l---------docker/centos/binary/swift/swift-account/config-internal.sh1
l---------docker/centos/binary/swift/swift-account/start.sh1
-rw-r--r--docker/centos/binary/swift/swift-base/Dockerfile6
l---------docker/centos/binary/swift/swift-base/build-swift-ring.py1
l---------docker/centos/binary/swift/swift-base/config-swift.sh1
-rw-r--r--docker/centos/binary/swift/swift-container-server/Dockerfile (renamed from docker/centos/binary/swift/swift-container/Dockerfile)5
l---------docker/centos/binary/swift/swift-container-server/build (renamed from docker/centos/binary/swift/swift-container/build)0
l---------docker/centos/binary/swift/swift-container-server/config-external.sh1
l---------docker/centos/binary/swift/swift-container-server/config-internal.sh1
l---------docker/centos/binary/swift/swift-container-server/start.sh1
l---------docker/centos/binary/swift/swift-container/config-external.sh1
l---------docker/centos/binary/swift/swift-container/config-internal.sh1
l---------docker/centos/binary/swift/swift-container/start.sh1
-rw-r--r--docker/centos/binary/swift/swift-data/Dockerfile13
l---------docker/centos/binary/swift/swift-data/build (renamed from docker/centos/binary/swift/swift-object/build)0
-rw-r--r--docker/centos/binary/swift/swift-object-auditor/Dockerfile (renamed from docker/centos/binary/swift/swift-object/Dockerfile)5
l---------docker/centos/binary/swift/swift-object-auditor/build1
l---------docker/centos/binary/swift/swift-object-auditor/config-external.sh1
l---------docker/centos/binary/swift/swift-object-auditor/config-internal.sh1
l---------docker/centos/binary/swift/swift-object-auditor/start.sh1
-rw-r--r--docker/centos/binary/swift/swift-object-base/Dockerfile8
l---------docker/centos/binary/swift/swift-object-base/build1
l---------docker/centos/binary/swift/swift-object-base/config-swift-object.sh1
-rw-r--r--docker/centos/binary/swift/swift-object-expirer/Dockerfile12
l---------docker/centos/binary/swift/swift-object-expirer/build1
l---------docker/centos/binary/swift/swift-object-expirer/config-external.sh1
l---------docker/centos/binary/swift/swift-object-expirer/config-internal.sh1
l---------docker/centos/binary/swift/swift-object-expirer/start.sh1
-rw-r--r--docker/centos/binary/swift/swift-object-replicator/Dockerfile7
l---------docker/centos/binary/swift/swift-object-replicator/build1
l---------docker/centos/binary/swift/swift-object-replicator/config-external.sh1
l---------docker/centos/binary/swift/swift-object-replicator/config-internal.sh1
l---------docker/centos/binary/swift/swift-object-replicator/start.sh1
-rw-r--r--docker/centos/binary/swift/swift-object-server/Dockerfile7
l---------docker/centos/binary/swift/swift-object-server/build1
l---------docker/centos/binary/swift/swift-object-server/config-external.sh1
l---------docker/centos/binary/swift/swift-object-server/config-internal.sh1
l---------docker/centos/binary/swift/swift-object-server/start.sh1
-rw-r--r--docker/centos/binary/swift/swift-object-updater/Dockerfile7
l---------docker/centos/binary/swift/swift-object-updater/build1
l---------docker/centos/binary/swift/swift-object-updater/config-external.sh1
l---------docker/centos/binary/swift/swift-object-updater/config-internal.sh1
l---------docker/centos/binary/swift/swift-object-updater/start.sh1
l---------docker/centos/binary/swift/swift-object/config-external.sh1
l---------docker/centos/binary/swift/swift-object/config-internal.sh1
l---------docker/centos/binary/swift/swift-object/start.sh1
-rw-r--r--docker/centos/binary/swift/swift-proxy-server/Dockerfile2
l---------docker/centos/binary/swift/swift-proxy-server/config-external.sh2
l---------docker/centos/binary/swift/swift-proxy-server/config-internal.sh2
l---------docker/centos/binary/swift/swift-proxy-server/start.sh2
-rw-r--r--docker/common/swift/swift-account-server/config-external.sh13
-rwxr-xr-xdocker/common/swift/swift-account-server/config-internal.sh54
-rwxr-xr-xdocker/common/swift/swift-account-server/start.sh14
-rwxr-xr-xdocker/common/swift/swift-account/config-external.sh10
-rwxr-xr-xdocker/common/swift/swift-account/config-internal.sh29
-rw-r--r--docker/common/swift/swift-base/build-swift-ring.py93
-rwxr-xr-xdocker/common/swift/swift-base/config-swift.sh9
-rw-r--r--docker/common/swift/swift-container-server/config-external.sh13
-rwxr-xr-xdocker/common/swift/swift-container-server/config-internal.sh52
-rwxr-xr-xdocker/common/swift/swift-container-server/start.sh (renamed from docker/common/swift/swift-container/start.sh)3
-rwxr-xr-xdocker/common/swift/swift-container/config-external.sh10
-rwxr-xr-xdocker/common/swift/swift-container/config-internal.sh29
-rw-r--r--docker/common/swift/swift-object-auditor/config-external.sh13
-rwxr-xr-xdocker/common/swift/swift-object-auditor/config-internal.sh11
-rwxr-xr-xdocker/common/swift/swift-object-auditor/start.sh (renamed from docker/common/swift/swift-account/start.sh)5
-rw-r--r--docker/common/swift/swift-object-base/config-swift-object.sh72
-rw-r--r--docker/common/swift/swift-object-expirer/config-external.sh13
-rwxr-xr-xdocker/common/swift/swift-object-expirer/config-internal.sh11
-rwxr-xr-xdocker/common/swift/swift-object-expirer/start.sh14
-rw-r--r--docker/common/swift/swift-object-replicator/config-external.sh13
-rwxr-xr-xdocker/common/swift/swift-object-replicator/config-internal.sh11
-rwxr-xr-xdocker/common/swift/swift-object-replicator/start.sh14
-rw-r--r--docker/common/swift/swift-object-server/config-external.sh13
-rwxr-xr-xdocker/common/swift/swift-object-server/config-internal.sh11
-rwxr-xr-xdocker/common/swift/swift-object-server/start.sh (renamed from docker/common/swift/swift-object/start.sh)3
-rw-r--r--docker/common/swift/swift-object-updater/config-external.sh13
-rwxr-xr-xdocker/common/swift/swift-object-updater/config-internal.sh11
-rwxr-xr-xdocker/common/swift/swift-object-updater/start.sh14
-rwxr-xr-xdocker/common/swift/swift-object/config-external.sh10
-rwxr-xr-xdocker/common/swift/swift-object/config-internal.sh29
-rwxr-xr-xdocker/common/swift/swift-proxy-server/config-external.sh2
-rwxr-xr-xdocker/common/swift/swift-proxy-server/config-internal.sh148
-rwxr-xr-xdocker/common/swift/swift-proxy-server/start.sh3
-rw-r--r--docs/minimal-environment-vars.md131
-rw-r--r--[-rwxr-xr-x]tools/genenv120
93 files changed, 1052 insertions, 164 deletions
diff --git a/compose/swift-proxy.yml b/compose/swift-proxy.yml
new file mode 100644
index 000000000..0f59e7bdb
--- /dev/null
+++ b/compose/swift-proxy.yml
@@ -0,0 +1,7 @@
+swiftproxyserver:
+ image: kollaglue/centos-rdo-swift-proxy-server:latest
+ name: swiftproxyserver
+ restart: always
+ net: host
+ env_file:
+ - openstack.env
diff --git a/compose/swift-storage.yml b/compose/swift-storage.yml
new file mode 100644
index 000000000..e790a5e71
--- /dev/null
+++ b/compose/swift-storage.yml
@@ -0,0 +1,73 @@
+swiftdata:
+ image: kollaglue/centos-rdo-swift-data:latest
+ name: swiftdata
+
+swiftobjectserver:
+ image: kollaglue/centos-rdo-swift-object-server:latest
+ name: swiftobjectserver
+ restart: always
+ net: host
+ env_file:
+ - openstack.env
+ volumes_from:
+ - swiftdata
+
+swiftobjectauditor:
+ image: kollaglue/centos-rdo-swift-object-auditor:latest
+ name: swiftobjectauditor
+ restart: always
+ net: host
+ env_file:
+ - openstack.env
+ volumes_from:
+ - swiftdata
+
+swiftobjectexpirer:
+ image: kollaglue/centos-rdo-swift-object-expirer:latest
+ name: swiftobjectexpirer
+ restart: always
+ net: host
+ env_file:
+ - openstack.env
+ volumes_from:
+ - swiftdata
+
+swiftobjectreplicator:
+ image: kollaglue/centos-rdo-swift-object-replicator:latest
+ name: swiftobjectreplicator
+ restart: always
+ net: host
+ env_file:
+ - openstack.env
+ volumes_from:
+ - swiftdata
+
+swiftobjectupdater:
+ image: kollaglue/centos-rdo-swift-object-updater:latest
+ name: swiftobjectupdater
+ restart: always
+ net: host
+ env_file:
+ - openstack.env
+ volumes_from:
+ - swiftdata
+
+swiftcontainerserver:
+ image: kollaglue/centos-rdo-swift-container-server:latest
+ name: swiftcontainerserver
+ restart: always
+ net: host
+ env_file:
+ - openstack.env
+ volumes_from:
+ - swiftdata
+
+swiftaccountserver:
+ image: kollaglue/centos-rdo-swift-account-server:latest
+ name: swiftaccountserver
+ restart: always
+ net: host
+ env_file:
+ - openstack.env
+ volumes_from:
+ - swiftdata
diff --git a/docker/centos/binary/swift/swift-account/Dockerfile b/docker/centos/binary/swift/swift-account-server/Dockerfile
index 4c407ea82..b60a267a8 100644
--- a/docker/centos/binary/swift/swift-account/Dockerfile
+++ b/docker/centos/binary/swift/swift-account-server/Dockerfile
@@ -1,8 +1,11 @@
FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%swift-base:%%KOLLA_TAG%%
MAINTAINER Kolla Project (https://launchpad.net/kolla)
-COPY ./start.sh /start.sh
+RUN yum -y install \
+ openstack-swift-account \
+ && yum clean all
+COPY start.sh /
COPY config-internal.sh config-external.sh /opt/kolla/
CMD ["/start.sh"]
diff --git a/docker/centos/binary/swift/swift-account/build b/docker/centos/binary/swift/swift-account-server/build
index ec1913803..ec1913803 120000
--- a/docker/centos/binary/swift/swift-account/build
+++ b/docker/centos/binary/swift/swift-account-server/build
diff --git a/docker/centos/binary/swift/swift-account-server/config-external.sh b/docker/centos/binary/swift/swift-account-server/config-external.sh
new file mode 120000
index 000000000..93a15ca3b
--- /dev/null
+++ b/docker/centos/binary/swift/swift-account-server/config-external.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-account-server/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-account-server/config-internal.sh b/docker/centos/binary/swift/swift-account-server/config-internal.sh
new file mode 120000
index 000000000..93174deb0
--- /dev/null
+++ b/docker/centos/binary/swift/swift-account-server/config-internal.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-account-server/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-account-server/start.sh b/docker/centos/binary/swift/swift-account-server/start.sh
new file mode 120000
index 000000000..acf6b18d7
--- /dev/null
+++ b/docker/centos/binary/swift/swift-account-server/start.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-account-server/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-account/config-external.sh b/docker/centos/binary/swift/swift-account/config-external.sh
deleted file mode 120000
index e7c6637fe..000000000
--- a/docker/centos/binary/swift/swift-account/config-external.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/swift/swift-account/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-account/config-internal.sh b/docker/centos/binary/swift/swift-account/config-internal.sh
deleted file mode 120000
index 48504d07e..000000000
--- a/docker/centos/binary/swift/swift-account/config-internal.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/swift/swift-account/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-account/start.sh b/docker/centos/binary/swift/swift-account/start.sh
deleted file mode 120000
index f9e76aa5b..000000000
--- a/docker/centos/binary/swift/swift-account/start.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/swift/swift-account/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-base/Dockerfile b/docker/centos/binary/swift/swift-base/Dockerfile
index 59600a23d..d31f9ebf6 100644
--- a/docker/centos/binary/swift/swift-base/Dockerfile
+++ b/docker/centos/binary/swift/swift-base/Dockerfile
@@ -1,8 +1,8 @@
FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base:%%KOLLA_TAG%%
MAINTAINER Kolla Project (https://launchpad.net/kolla)
-RUN yum -y install openstack-utils openstack-swift && yum clean all
+RUN yum -y install openstack-swift && yum clean all
+
+COPY config-swift.sh build-swift-ring.py /opt/kolla/
-# These will come after we sort out start time config
RUN mkdir /opt/swift
-config-swift.sh /opt/swift/config-swift.sh
diff --git a/docker/centos/binary/swift/swift-base/build-swift-ring.py b/docker/centos/binary/swift/swift-base/build-swift-ring.py
new file mode 120000
index 000000000..325bf93c5
--- /dev/null
+++ b/docker/centos/binary/swift/swift-base/build-swift-ring.py
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-base/build-swift-ring.py \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-base/config-swift.sh b/docker/centos/binary/swift/swift-base/config-swift.sh
new file mode 120000
index 000000000..fb883f482
--- /dev/null
+++ b/docker/centos/binary/swift/swift-base/config-swift.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-base/config-swift.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-container/Dockerfile b/docker/centos/binary/swift/swift-container-server/Dockerfile
index 4c407ea82..e88e1ebcc 100644
--- a/docker/centos/binary/swift/swift-container/Dockerfile
+++ b/docker/centos/binary/swift/swift-container-server/Dockerfile
@@ -1,8 +1,11 @@
FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%swift-base:%%KOLLA_TAG%%
MAINTAINER Kolla Project (https://launchpad.net/kolla)
-COPY ./start.sh /start.sh
+RUN yum -y install \
+ openstack-swift-container \
+ && yum clean all
+COPY start.sh /
COPY config-internal.sh config-external.sh /opt/kolla/
CMD ["/start.sh"]
diff --git a/docker/centos/binary/swift/swift-container/build b/docker/centos/binary/swift/swift-container-server/build
index ec1913803..ec1913803 120000
--- a/docker/centos/binary/swift/swift-container/build
+++ b/docker/centos/binary/swift/swift-container-server/build
diff --git a/docker/centos/binary/swift/swift-container-server/config-external.sh b/docker/centos/binary/swift/swift-container-server/config-external.sh
new file mode 120000
index 000000000..8fa814ca7
--- /dev/null
+++ b/docker/centos/binary/swift/swift-container-server/config-external.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-container-server/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-container-server/config-internal.sh b/docker/centos/binary/swift/swift-container-server/config-internal.sh
new file mode 120000
index 000000000..3b3c7fcdf
--- /dev/null
+++ b/docker/centos/binary/swift/swift-container-server/config-internal.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-container-server/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-container-server/start.sh b/docker/centos/binary/swift/swift-container-server/start.sh
new file mode 120000
index 000000000..b7d3cd9fc
--- /dev/null
+++ b/docker/centos/binary/swift/swift-container-server/start.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-container-server/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-container/config-external.sh b/docker/centos/binary/swift/swift-container/config-external.sh
deleted file mode 120000
index efc76b7af..000000000
--- a/docker/centos/binary/swift/swift-container/config-external.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/swift/swift-container/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-container/config-internal.sh b/docker/centos/binary/swift/swift-container/config-internal.sh
deleted file mode 120000
index 789a210a3..000000000
--- a/docker/centos/binary/swift/swift-container/config-internal.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/swift/swift-container/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-container/start.sh b/docker/centos/binary/swift/swift-container/start.sh
deleted file mode 120000
index dc3c88490..000000000
--- a/docker/centos/binary/swift/swift-container/start.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/swift/swift-container/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-data/Dockerfile b/docker/centos/binary/swift/swift-data/Dockerfile
new file mode 100644
index 000000000..ab675045c
--- /dev/null
+++ b/docker/centos/binary/swift/swift-data/Dockerfile
@@ -0,0 +1,13 @@
+FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base:%%KOLLA_TAG%%
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+# NOTE(pbourke): This is emulating the Swift "all-in-one" setups where there are 3 disks/partitions
+# on which to mirror data. This is extremely inefficient and is really only to prove everything
+# works in an AIO setup. For production deploys the Ansible provisioned setup should be used.
+VOLUME [ "/srv/node/sdb1" ]
+VOLUME [ "/srv/node/sdb2" ]
+VOLUME [ "/srv/node/sdb3" ]
+
+# Command needed to start the data container.
+# Note: data containers do not need to be persistent.
+CMD ["/bin/true"]
diff --git a/docker/centos/binary/swift/swift-object/build b/docker/centos/binary/swift/swift-data/build
index ec1913803..ec1913803 120000
--- a/docker/centos/binary/swift/swift-object/build
+++ b/docker/centos/binary/swift/swift-data/build
diff --git a/docker/centos/binary/swift/swift-object/Dockerfile b/docker/centos/binary/swift/swift-object-auditor/Dockerfile
index 4c407ea82..9cbbd53c0 100644
--- a/docker/centos/binary/swift/swift-object/Dockerfile
+++ b/docker/centos/binary/swift/swift-object-auditor/Dockerfile
@@ -1,8 +1,7 @@
-FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%swift-base:%%KOLLA_TAG%%
+FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%swift-object-base:%%KOLLA_TAG%%
MAINTAINER Kolla Project (https://launchpad.net/kolla)
-COPY ./start.sh /start.sh
-
+COPY start.sh /
COPY config-internal.sh config-external.sh /opt/kolla/
CMD ["/start.sh"]
diff --git a/docker/centos/binary/swift/swift-object-auditor/build b/docker/centos/binary/swift/swift-object-auditor/build
new file mode 120000
index 000000000..ec1913803
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-auditor/build
@@ -0,0 +1 @@
+../../../../../tools/build-docker-image \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-auditor/config-external.sh b/docker/centos/binary/swift/swift-object-auditor/config-external.sh
new file mode 120000
index 000000000..1adf26bcb
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-auditor/config-external.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-auditor/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-auditor/config-internal.sh b/docker/centos/binary/swift/swift-object-auditor/config-internal.sh
new file mode 120000
index 000000000..e3802f38d
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-auditor/config-internal.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-auditor/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-auditor/start.sh b/docker/centos/binary/swift/swift-object-auditor/start.sh
new file mode 120000
index 000000000..5ef316559
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-auditor/start.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-auditor/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-base/Dockerfile b/docker/centos/binary/swift/swift-object-base/Dockerfile
new file mode 100644
index 000000000..c41502e6c
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-base/Dockerfile
@@ -0,0 +1,8 @@
+FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%swift-base:%%KOLLA_TAG%%
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+RUN yum -y install \
+ openstack-swift-object \
+ && yum clean all
+
+COPY config-swift-object.sh /opt/kolla/
diff --git a/docker/centos/binary/swift/swift-object-base/build b/docker/centos/binary/swift/swift-object-base/build
new file mode 120000
index 000000000..ec1913803
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-base/build
@@ -0,0 +1 @@
+../../../../../tools/build-docker-image \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-base/config-swift-object.sh b/docker/centos/binary/swift/swift-object-base/config-swift-object.sh
new file mode 120000
index 000000000..a289b4d0d
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-base/config-swift-object.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-base/config-swift-object.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-expirer/Dockerfile b/docker/centos/binary/swift/swift-object-expirer/Dockerfile
new file mode 100644
index 000000000..d1a79c6ab
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-expirer/Dockerfile
@@ -0,0 +1,12 @@
+FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%swift-object-base:%%KOLLA_TAG%%
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+RUN yum -y install \
+ openstack-swift-proxy \
+ openstack-swift-container \
+ && yum clean all
+
+COPY start.sh /
+COPY config-internal.sh config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
diff --git a/docker/centos/binary/swift/swift-object-expirer/build b/docker/centos/binary/swift/swift-object-expirer/build
new file mode 120000
index 000000000..ec1913803
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-expirer/build
@@ -0,0 +1 @@
+../../../../../tools/build-docker-image \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-expirer/config-external.sh b/docker/centos/binary/swift/swift-object-expirer/config-external.sh
new file mode 120000
index 000000000..7f8d3e37e
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-expirer/config-external.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-expirer/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-expirer/config-internal.sh b/docker/centos/binary/swift/swift-object-expirer/config-internal.sh
new file mode 120000
index 000000000..ebd7f0f3e
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-expirer/config-internal.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-expirer/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-expirer/start.sh b/docker/centos/binary/swift/swift-object-expirer/start.sh
new file mode 120000
index 000000000..3b9a9c3ee
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-expirer/start.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-expirer/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-replicator/Dockerfile b/docker/centos/binary/swift/swift-object-replicator/Dockerfile
new file mode 100644
index 000000000..9cbbd53c0
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-replicator/Dockerfile
@@ -0,0 +1,7 @@
+FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%swift-object-base:%%KOLLA_TAG%%
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+COPY start.sh /
+COPY config-internal.sh config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
diff --git a/docker/centos/binary/swift/swift-object-replicator/build b/docker/centos/binary/swift/swift-object-replicator/build
new file mode 120000
index 000000000..ec1913803
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-replicator/build
@@ -0,0 +1 @@
+../../../../../tools/build-docker-image \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-replicator/config-external.sh b/docker/centos/binary/swift/swift-object-replicator/config-external.sh
new file mode 120000
index 000000000..69e793df4
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-replicator/config-external.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-replicator/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-replicator/config-internal.sh b/docker/centos/binary/swift/swift-object-replicator/config-internal.sh
new file mode 120000
index 000000000..f2a7e134e
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-replicator/config-internal.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-replicator/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-replicator/start.sh b/docker/centos/binary/swift/swift-object-replicator/start.sh
new file mode 120000
index 000000000..da27b6312
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-replicator/start.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-replicator/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-server/Dockerfile b/docker/centos/binary/swift/swift-object-server/Dockerfile
new file mode 100644
index 000000000..9cbbd53c0
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-server/Dockerfile
@@ -0,0 +1,7 @@
+FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%swift-object-base:%%KOLLA_TAG%%
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+COPY start.sh /
+COPY config-internal.sh config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
diff --git a/docker/centos/binary/swift/swift-object-server/build b/docker/centos/binary/swift/swift-object-server/build
new file mode 120000
index 000000000..ec1913803
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-server/build
@@ -0,0 +1 @@
+../../../../../tools/build-docker-image \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-server/config-external.sh b/docker/centos/binary/swift/swift-object-server/config-external.sh
new file mode 120000
index 000000000..a9213fffa
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-server/config-external.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-server/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-server/config-internal.sh b/docker/centos/binary/swift/swift-object-server/config-internal.sh
new file mode 120000
index 000000000..24821e4d2
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-server/config-internal.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-server/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-server/start.sh b/docker/centos/binary/swift/swift-object-server/start.sh
new file mode 120000
index 000000000..7e47f8018
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-server/start.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-server/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-updater/Dockerfile b/docker/centos/binary/swift/swift-object-updater/Dockerfile
new file mode 100644
index 000000000..9cbbd53c0
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-updater/Dockerfile
@@ -0,0 +1,7 @@
+FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%swift-object-base:%%KOLLA_TAG%%
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+COPY start.sh /
+COPY config-internal.sh config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
diff --git a/docker/centos/binary/swift/swift-object-updater/build b/docker/centos/binary/swift/swift-object-updater/build
new file mode 120000
index 000000000..ec1913803
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-updater/build
@@ -0,0 +1 @@
+../../../../../tools/build-docker-image \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-updater/config-external.sh b/docker/centos/binary/swift/swift-object-updater/config-external.sh
new file mode 120000
index 000000000..94ba9e60c
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-updater/config-external.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-updater/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-updater/config-internal.sh b/docker/centos/binary/swift/swift-object-updater/config-internal.sh
new file mode 120000
index 000000000..fb1e9bdff
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-updater/config-internal.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-updater/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object-updater/start.sh b/docker/centos/binary/swift/swift-object-updater/start.sh
new file mode 120000
index 000000000..2e78e5c09
--- /dev/null
+++ b/docker/centos/binary/swift/swift-object-updater/start.sh
@@ -0,0 +1 @@
+../../../../../docker/common/swift/swift-object-updater/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object/config-external.sh b/docker/centos/binary/swift/swift-object/config-external.sh
deleted file mode 120000
index f4256fa63..000000000
--- a/docker/centos/binary/swift/swift-object/config-external.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/swift/swift-object/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object/config-internal.sh b/docker/centos/binary/swift/swift-object/config-internal.sh
deleted file mode 120000
index 3f8ba1de9..000000000
--- a/docker/centos/binary/swift/swift-object/config-internal.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/swift/swift-object/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object/start.sh b/docker/centos/binary/swift/swift-object/start.sh
deleted file mode 120000
index 690be2540..000000000
--- a/docker/centos/binary/swift/swift-object/start.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/swift/swift-object/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-proxy-server/Dockerfile b/docker/centos/binary/swift/swift-proxy-server/Dockerfile
index 4c407ea82..4f8b27b49 100644
--- a/docker/centos/binary/swift/swift-proxy-server/Dockerfile
+++ b/docker/centos/binary/swift/swift-proxy-server/Dockerfile
@@ -1,6 +1,8 @@
FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%swift-base:%%KOLLA_TAG%%
MAINTAINER Kolla Project (https://launchpad.net/kolla)
+RUN yum -y install openstack-swift-proxy && yum clean all
+
COPY ./start.sh /start.sh
COPY config-internal.sh config-external.sh /opt/kolla/
diff --git a/docker/centos/binary/swift/swift-proxy-server/config-external.sh b/docker/centos/binary/swift/swift-proxy-server/config-external.sh
index 04e1c640f..178516af5 120000
--- a/docker/centos/binary/swift/swift-proxy-server/config-external.sh
+++ b/docker/centos/binary/swift/swift-proxy-server/config-external.sh
@@ -1 +1 @@
-../../../../common/swift/swift-proxy-server/config-external.sh \ No newline at end of file
+../../../../../docker/common/swift/swift-proxy-server/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-proxy-server/config-internal.sh b/docker/centos/binary/swift/swift-proxy-server/config-internal.sh
index f95866fdd..a33b6be4f 120000
--- a/docker/centos/binary/swift/swift-proxy-server/config-internal.sh
+++ b/docker/centos/binary/swift/swift-proxy-server/config-internal.sh
@@ -1 +1 @@
-../../../../common/swift/swift-proxy-server/config-internal.sh \ No newline at end of file
+../../../../../docker/common/swift/swift-proxy-server/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-proxy-server/start.sh b/docker/centos/binary/swift/swift-proxy-server/start.sh
index 6a5581a46..63d0ec91a 120000
--- a/docker/centos/binary/swift/swift-proxy-server/start.sh
+++ b/docker/centos/binary/swift/swift-proxy-server/start.sh
@@ -1 +1 @@
-../../../../common/swift/swift-proxy-server/start.sh \ No newline at end of file
+../../../../../docker/common/swift/swift-proxy-server/start.sh \ No newline at end of file
diff --git a/docker/common/swift/swift-account-server/config-external.sh b/docker/common/swift/swift-account-server/config-external.sh
new file mode 100644
index 000000000..fe20dcb92
--- /dev/null
+++ b/docker/common/swift/swift-account-server/config-external.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+if [[ -f /opt/kolla/swift/swift.conf ]]; then
+ cp /opt/kolla/swift/swift.conf /etc/swift/
+ chown swift: /etc/swift/swift.conf
+ chmod 0640 /etc/swift/swift.conf
+fi
+
+if [[ -f /opt/kolla/swift/account-server.conf ]]; then
+ cp /opt/kolla/swift/account-server.conf /etc/swift/
+ chown swift: /etc/swift/account-server.conf
+ chmod 0640 /etc/swift/account-server.conf
+fi
diff --git a/docker/common/swift/swift-account-server/config-internal.sh b/docker/common/swift/swift-account-server/config-internal.sh
new file mode 100755
index 000000000..461020fd0
--- /dev/null
+++ b/docker/common/swift/swift-account-server/config-internal.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+set -e
+
+CMD="/usr/bin/swift-account-server"
+ARGS="/etc/swift/account-server.conf --verbose"
+
+. /opt/kolla/config-swift.sh
+
+check_required_vars \
+ SWIFT_ACCOUNT_SVC_BIND_IP \
+ SWIFT_ACCOUNT_SVC_BIND_PORT \
+ SWIFT_ACCOUNT_SVC_DEVICES \
+ SWIFT_ACCOUNT_SVC_MOUNT_CHECK \
+ SWIFT_ACCOUNT_SVC_RING_DEVICES \
+ SWIFT_ACCOUNT_SVC_RING_HOSTS \
+ SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS \
+ SWIFT_ACCOUNT_SVC_RING_NAME \
+ SWIFT_ACCOUNT_SVC_RING_PART_POWER \
+ SWIFT_ACCOUNT_SVC_RING_REPLICAS \
+ SWIFT_ACCOUNT_SVC_RING_WEIGHTS \
+ SWIFT_ACCOUNT_SVC_RING_ZONES \
+ SWIFT_DIR \
+ SWIFT_USER
+
+exec $CMD $ARGS
+
+cfg=/etc/swift/account-server.conf
+
+# [DEFAULT]
+crudini --set $cfg DEFAULT bind_ip "${SWIFT_ACCOUNT_SVC_BIND_IP}"
+crudini --set $cfg DEFAULT bind_port "${SWIFT_ACCOUNT_SVC_BIND_PORT}"
+crudini --set $cfg DEFAULT user "${SWIFT_USER}"
+crudini --set $cfg DEFAULT swift_dir "${SWIFT_DIR}"
+crudini --set $cfg DEFAULT devices "${SWIFT_ACCOUNT_SVC_DEVICES}"
+crudini --set $cfg DEFAULT mount_check "${SWIFT_ACCOUNT_SVC_MOUNT_CHECK}"
+
+# Create swift user and group if they don't exist
+id -u swift &>/dev/null || useradd --user-group swift
+
+# Ensure proper ownership of the mount point directory structure
+chown -R swift:swift /srv/node
+
+python /opt/kolla/build-swift-ring.py \
+ -f ${SWIFT_ACCOUNT_SVC_RING_NAME} \
+ -p ${SWIFT_ACCOUNT_SVC_RING_PART_POWER} \
+ -r ${SWIFT_ACCOUNT_SVC_RING_REPLICAS} \
+ -m ${SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS} \
+ -H ${SWIFT_ACCOUNT_SVC_RING_HOSTS} \
+ -w ${SWIFT_ACCOUNT_SVC_RING_WEIGHTS} \
+ -d ${SWIFT_ACCOUNT_SVC_RING_DEVICES} \
+ -z ${SWIFT_ACCOUNT_SVC_RING_ZONES}
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-account-server/start.sh b/docker/common/swift/swift-account-server/start.sh
new file mode 100755
index 000000000..96ce90d07
--- /dev/null
+++ b/docker/common/swift/swift-account-server/start.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+set -o errexit
+
+CMD="/usr/bin/swift-account-server"
+ARGS="/etc/swift/account-server.conf --verbose"
+
+# Loading common functions.
+source /opt/kolla/kolla-common.sh
+
+# Config-internal script exec out of this function, it does not return here.
+set_configs
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-account/config-external.sh b/docker/common/swift/swift-account/config-external.sh
deleted file mode 100755
index 2de263dda..000000000
--- a/docker/common/swift/swift-account/config-external.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-SOURCE="/opt/kolla/swift-account/swift.conf"
-TARGET="/etc/swift/swift.conf"
-OWNER="swift"
-
-if [[ -f "$SOURCE" ]]; then
- cp $SOURCE $TARGET
- chown ${OWNER}: $TARGET
- chmod 0644 $TARGET
-fi
diff --git a/docker/common/swift/swift-account/config-internal.sh b/docker/common/swift/swift-account/config-internal.sh
deleted file mode 100755
index c0531f46e..000000000
--- a/docker/common/swift/swift-account/config-internal.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-
-check_required_vars KEYSTONE_ADMIN_SERVICE_HOST \
- KEYSTONE_ADMIN_TOKEN \
- SWIFT_ADMIN_PASSWORD
-fail_unless_db
-fail_unless_os_service_running keystone
-
-if ! [ "$SWIFT_DB_PASSWORD" ]; then
- SWIFT_DB_PASSWORD=$(openssl rand -hex 15)
- export SWIFT_DB_PASSWORD
-fi
-
-sh /opt/swift/config-swift.sh account-server
-
-mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
-CREATE DATABASE IF NOT EXISTS ${SWIFT_DB_NAME};
-GRANT ALL PRIVILEGES ON swift* TO
-'${SWIFT_DB_USER}'@'%' IDENTIFIED BY '${SWIFT_DB_PASSWORD}'
-EOF
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
-
-/bin/keystone user-create --name ${SWIFT_KEYSTONE_USER} --pass ${SWIFT_ADMIN_PASSWORD}
-/bin/keystone role-create --name ${SWIFT_KEYSTONE_USER}
-/bin/keystone user-role-add --user ${SWIFT_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME}
-
-exec /usr/bin/swift-engine
diff --git a/docker/common/swift/swift-base/build-swift-ring.py b/docker/common/swift/swift-base/build-swift-ring.py
new file mode 100644
index 000000000..d7386392d
--- /dev/null
+++ b/docker/common/swift/swift-base/build-swift-ring.py
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+
+# Copyright 2015 Paul Bourke
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""
+This script is a simple wrapper used to create and rebalance Swift ring files.
+"""
+
+import argparse
+import subprocess
+import sys
+
+
+def setup_args():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-f", "--ring-file",
+ required=True,
+ help="Path to ring file")
+ parser.add_argument("-p", "--part-power",
+ required=True,
+ help="Part power")
+ parser.add_argument("-r", "--num-replicas",
+ required=True,
+ help="Number of replicas")
+ parser.add_argument("-m", "--min-part-hours",
+ required=True,
+ help="Min part hours")
+ parser.add_argument("-H", "--hosts",
+ required=True,
+ help="Hosts in the ring, comma delimited")
+ parser.add_argument("-w", "--weights",
+ required=True,
+ help="Weight of each host, comma delimited")
+ parser.add_argument("-d", "--devices",
+ required=True,
+ help="Device on each host, comma delimited")
+ parser.add_argument("-z", "--zones",
+ required=True,
+ help="Zone of each host, comma delimited")
+ return parser.parse_args()
+
+
+def run_cmd(cmd):
+ print(' '.join(cmd))
+ subprocess.call(cmd)
+
+
+def run(args):
+ hosts = args.hosts.split(',')
+ weights = args.weights.split(',')
+ zones = args.zones.split(',')
+ devices = args.devices.split(',')
+ if not (len(hosts) == len(weights) == len(zones) == len(devices)):
+ print('Error: an equal amount of hosts, devices, weights, '
+ 'and zones are required')
+ sys.exit(1)
+
+ run_cmd(['/usr/bin/swift-ring-builder',
+ args.ring_file,
+ 'create',
+ args.part_power,
+ args.num_replicas,
+ args.min_part_hours])
+
+ for i in xrange(len(hosts)):
+ run_cmd(['/usr/bin/swift-ring-builder',
+ args.ring_file,
+ 'add',
+ 'z{}-{}/{}'.format(zones[i], hosts[i], devices[i]),
+ weights[i]])
+
+ run_cmd(['/usr/bin/swift-ring-builder', args.ring_file, 'rebalance'])
+
+
+def main():
+ args = setup_args()
+ run(args)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/docker/common/swift/swift-base/config-swift.sh b/docker/common/swift/swift-base/config-swift.sh
new file mode 100755
index 000000000..343abdcec
--- /dev/null
+++ b/docker/common/swift/swift-base/config-swift.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+. /opt/kolla/kolla-common.sh
+
+check_required_vars SWIFT_HASH_PATH_SUFFIX
+
+cfg=/etc/swift/swift.conf
+
+crudini --set $cfg swift-hash swift_hash_path_suffix "${SWIFT_HASH_PATH_SUFFIX}"
diff --git a/docker/common/swift/swift-container-server/config-external.sh b/docker/common/swift/swift-container-server/config-external.sh
new file mode 100644
index 000000000..6f4186e0f
--- /dev/null
+++ b/docker/common/swift/swift-container-server/config-external.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+if [[ -f /opt/kolla/swift/swift.conf ]]; then
+ cp /opt/kolla/swift/swift.conf /etc/swift/
+ chown swift: /etc/swift/swift.conf
+ chmod 0640 /etc/swift/swift.conf
+fi
+
+if [[ -f /opt/kolla/swift/container-server.conf ]]; then
+ cp /opt/kolla/swift/container-server.conf /etc/swift/
+ chown swift: /etc/swift/container-server.conf
+ chmod 0640 /etc/swift/container-server.conf
+fi
diff --git a/docker/common/swift/swift-container-server/config-internal.sh b/docker/common/swift/swift-container-server/config-internal.sh
new file mode 100755
index 000000000..5404baea2
--- /dev/null
+++ b/docker/common/swift/swift-container-server/config-internal.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -e
+
+CMD="/usr/bin/swift-container-server"
+ARGS="/etc/swift/container-server.conf --verbose"
+
+. /opt/kolla/config-swift.sh
+
+check_required_vars \
+ SWIFT_CONTAINER_SVC_BIND_IP \
+ SWIFT_CONTAINER_SVC_BIND_PORT \
+ SWIFT_CONTAINER_SVC_DEVICES \
+ SWIFT_CONTAINER_SVC_MOUNT_CHECK \
+ SWIFT_CONTAINER_SVC_RING_DEVICES \
+ SWIFT_CONTAINER_SVC_RING_HOSTS \
+ SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS \
+ SWIFT_CONTAINER_SVC_RING_NAME \
+ SWIFT_CONTAINER_SVC_RING_PART_POWER \
+ SWIFT_CONTAINER_SVC_RING_REPLICAS \
+ SWIFT_CONTAINER_SVC_RING_WEIGHTS \
+ SWIFT_CONTAINER_SVC_RING_ZONES \
+ SWIFT_DIR \
+ SWIFT_USER
+
+cfg=/etc/swift/container-server.conf
+
+# [DEFAULT]
+crudini --set $cfg DEFAULT bind_ip "${SWIFT_CONTAINER_SVC_BIND_IP}"
+crudini --set $cfg DEFAULT bind_port "${SWIFT_CONTAINER_SVC_BIND_PORT}"
+crudini --set $cfg DEFAULT user "${SWIFT_USER}"
+crudini --set $cfg DEFAULT swift_dir "${SWIFT_DIR}"
+crudini --set $cfg DEFAULT devices "${SWIFT_CONTAINER_SVC_DEVICES}"
+crudini --set $cfg DEFAULT mount_check "${SWIFT_CONTAINER_SVC_MOUNT_CHECK}"
+
+# Create swift user and group if they don't exist
+id -u swift &>/dev/null || useradd --user-group swift
+
+# Ensure proper ownership of the mount point directory structure
+chown -R swift:swift /srv/node
+
+python /opt/kolla/build-swift-ring.py \
+ -f ${SWIFT_CONTAINER_SVC_RING_NAME} \
+ -p ${SWIFT_CONTAINER_SVC_RING_PART_POWER} \
+ -r ${SWIFT_CONTAINER_SVC_RING_REPLICAS} \
+ -m ${SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS} \
+ -H ${SWIFT_CONTAINER_SVC_RING_HOSTS} \
+ -w ${SWIFT_CONTAINER_SVC_RING_WEIGHTS} \
+ -d ${SWIFT_CONTAINER_SVC_RING_DEVICES} \
+ -z ${SWIFT_CONTAINER_SVC_RING_ZONES}
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-container/start.sh b/docker/common/swift/swift-container-server/start.sh
index e3187b367..40ec93960 100755
--- a/docker/common/swift/swift-container/start.sh
+++ b/docker/common/swift/swift-container-server/start.sh
@@ -1,8 +1,9 @@
#!/bin/bash
+
set -o errexit
CMD="/usr/bin/swift-container-server"
-ARGS=""
+ARGS="/etc/swift/container-server.conf --verbose"
# Loading common functions.
source /opt/kolla/kolla-common.sh
diff --git a/docker/common/swift/swift-container/config-external.sh b/docker/common/swift/swift-container/config-external.sh
deleted file mode 100755
index 23c9bb4ef..000000000
--- a/docker/common/swift/swift-container/config-external.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-SOURCE="/opt/kolla/swift-container/swift.conf"
-TARGET="/etc/swift/swift.conf"
-OWNER="swift"
-
-if [[ -f "$SOURCE" ]]; then
- cp $SOURCE $TARGET
- chown ${OWNER}: $TARGET
- chmod 0644 $TARGET
-fi
diff --git a/docker/common/swift/swift-container/config-internal.sh b/docker/common/swift/swift-container/config-internal.sh
deleted file mode 100755
index a11c10561..000000000
--- a/docker/common/swift/swift-container/config-internal.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-
-check_required_vars KEYSTONE_ADMIN_SERVICE_HOST \
- KEYSTONE_ADMIN_TOKEN \
- SWIFT_ADMIN_PASSWORD
-fail_unless_db
-fail_unless_os_service_running keystone
-
-if ! [ "$SWIFT_DB_PASSWORD" ]; then
- SWIFT_DB_PASSWORD=$(openssl rand -hex 15)
- export SWIFT_DB_PASSWORD
-fi
-
-sh /opt/swift/config-swift.sh container
-
-mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
-CREATE DATABASE IF NOT EXISTS ${SWIFT_DB_NAME};
-GRANT ALL PRIVILEGES ON swift* TO
-'${SWIFT_DB_USER}'@'%' IDENTIFIED BY '${SWIFT_DB_PASSWORD}'
-EOF
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
-
-/bin/keystone user-create --name ${SWIFT_KEYSTONE_USER} --pass ${SWIFT_ADMIN_PASSWORD}
-/bin/keystone role-create --name ${SWIFT_KEYSTONE_USER}
-/bin/keystone user-role-add --user ${SWIFT_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME}
-
-exec /usr/bin/swift-container-server
diff --git a/docker/common/swift/swift-object-auditor/config-external.sh b/docker/common/swift/swift-object-auditor/config-external.sh
new file mode 100644
index 000000000..f06689532
--- /dev/null
+++ b/docker/common/swift/swift-object-auditor/config-external.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+if [[ -f /opt/kolla/swift/swift.conf ]]; then
+ cp /opt/kolla/swift/swift.conf /etc/swift/
+ chown swift: /etc/swift/swift.conf
+ chmod 0640 /etc/swift/swift.conf
+fi
+
+if [[ -f /opt/kolla/swift/object-server.conf ]]; then
+ cp /opt/kolla/swift/object-server.conf /etc/swift/
+ chown swift: /opt/kolla/swift/object-server.conf
+ chmod 0640 /etc/swift/object-server.conf
+fi
diff --git a/docker/common/swift/swift-object-auditor/config-internal.sh b/docker/common/swift/swift-object-auditor/config-internal.sh
new file mode 100755
index 000000000..8d3a19853
--- /dev/null
+++ b/docker/common/swift/swift-object-auditor/config-internal.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -e
+
+CMD="/usr/bin/swift-object-auditor"
+ARGS="/etc/swift/object-server.conf --verbose"
+
+. /opt/kolla/config-swift.sh
+. /opt/kolla/config-swift-object.sh
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-account/start.sh b/docker/common/swift/swift-object-auditor/start.sh
index 7465fbc5d..ea587cfad 100755
--- a/docker/common/swift/swift-account/start.sh
+++ b/docker/common/swift/swift-object-auditor/start.sh
@@ -1,8 +1,9 @@
#!/bin/bash
+
set -o errexit
-CMD="/usr/bin/swift-engine"
-ARGS=""
+CMD="/usr/bin/swift-object-auditor"
+ARGS="/etc/swift/object-server.conf --verbose"
# Loading common functions.
source /opt/kolla/kolla-common.sh
diff --git a/docker/common/swift/swift-object-base/config-swift-object.sh b/docker/common/swift/swift-object-base/config-swift-object.sh
new file mode 100644
index 000000000..0d3d58dc3
--- /dev/null
+++ b/docker/common/swift/swift-object-base/config-swift-object.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+
+. /opt/kolla/kolla-common.sh
+
+check_required_vars \
+ SWIFT_CONTAINER_SVC_RING_DEVICES \
+ SWIFT_CONTAINER_SVC_RING_HOSTS \
+ SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS \
+ SWIFT_CONTAINER_SVC_RING_NAME \
+ SWIFT_CONTAINER_SVC_RING_PART_POWER \
+ SWIFT_CONTAINER_SVC_RING_REPLICAS \
+ SWIFT_CONTAINER_SVC_RING_WEIGHTS \
+ SWIFT_CONTAINER_SVC_RING_ZONES \
+ SWIFT_DIR \
+ SWIFT_OBJECT_SVC_BIND_IP \
+ SWIFT_OBJECT_SVC_BIND_PORT \
+ SWIFT_OBJECT_SVC_DEVICES \
+ SWIFT_OBJECT_SVC_MOUNT_CHECK \
+ SWIFT_OBJECT_SVC_PIPELINE \
+ SWIFT_OBJECT_SVC_RING_DEVICES \
+ SWIFT_OBJECT_SVC_RING_HOSTS \
+ SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS \
+ SWIFT_OBJECT_SVC_RING_NAME \
+ SWIFT_OBJECT_SVC_RING_PART_POWER \
+ SWIFT_OBJECT_SVC_RING_REPLICAS \
+ SWIFT_OBJECT_SVC_RING_WEIGHTS \
+ SWIFT_OBJECT_SVC_RING_ZONES \
+ SWIFT_USER
+
+cfg=/etc/swift/object-server.conf
+
+crudini --set $cfg DEFAULT bind_ip "${SWIFT_OBJECT_SVC_BIND_IP}"
+crudini --set $cfg DEFAULT bind_port "${SWIFT_OBJECT_SVC_BIND_PORT}"
+crudini --set $cfg DEFAULT user "${SWIFT_USER}"
+crudini --set $cfg DEFAULT swift_dir "${SWIFT_DIR}"
+crudini --set $cfg DEFAULT devices "${SWIFT_OBJECT_SVC_DEVICES}"
+crudini --set $cfg DEFAULT mount_check "${SWIFT_OBJECT_SVC_MOUNT_CHECK}"
+
+crudini --set $cfg pipeline:main pipeline "${SWIFT_OBJECT_SVC_PIPELINE}"
+
+# NOTE(pbourke): some services require a section in the conf, even if empty
+crudini --set $cfg object-expirer
+
+# Create swift user and group if they don't exist
+id -u swift &>/dev/null || useradd --user-group swift
+
+# Ensure proper ownership of the mount point directory structure
+chown -R swift:swift /srv/node
+
+# TODO(pbourke): does this need to be on a data vol?
+mkdir -p /var/cache/swift
+chown -R swift:swift /var/cache/swift
+
+python /opt/kolla/build-swift-ring.py \
+ -f ${SWIFT_OBJECT_SVC_RING_NAME} \
+ -p ${SWIFT_OBJECT_SVC_RING_PART_POWER} \
+ -r ${SWIFT_OBJECT_SVC_RING_REPLICAS} \
+ -m ${SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS} \
+ -H ${SWIFT_OBJECT_SVC_RING_HOSTS} \
+ -w ${SWIFT_OBJECT_SVC_RING_WEIGHTS} \
+ -d ${SWIFT_OBJECT_SVC_RING_DEVICES} \
+ -z ${SWIFT_OBJECT_SVC_RING_ZONES}
+
+python /opt/kolla/build-swift-ring.py \
+ -f ${SWIFT_CONTAINER_SVC_RING_NAME} \
+ -p ${SWIFT_CONTAINER_SVC_RING_PART_POWER} \
+ -r ${SWIFT_CONTAINER_SVC_RING_REPLICAS} \
+ -m ${SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS} \
+ -H ${SWIFT_CONTAINER_SVC_RING_HOSTS} \
+ -w ${SWIFT_CONTAINER_SVC_RING_WEIGHTS} \
+ -d ${SWIFT_CONTAINER_SVC_RING_DEVICES} \
+ -z ${SWIFT_CONTAINER_SVC_RING_ZONES}
diff --git a/docker/common/swift/swift-object-expirer/config-external.sh b/docker/common/swift/swift-object-expirer/config-external.sh
new file mode 100644
index 000000000..ca4b35499
--- /dev/null
+++ b/docker/common/swift/swift-object-expirer/config-external.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+if [[ -f /opt/kolla/swift/swift.conf ]]; then
+ cp /opt/kolla/swift/swift.conf /etc/swift/
+ chown swift: /opt/kolla/swift/swift.conf
+ chmod 0640 /etc/swift/swift.conf
+fi
+
+if [[ -f /opt/kolla/swift/object-expirer.conf ]]; then
+ cp /opt/kolla/swift/object-expirer.conf /etc/swift/
+ chown swift: /opt/kolla/swift/object-expirer.conf
+ chmod 0640 /etc/swift/object-expirer.conf
+fi
diff --git a/docker/common/swift/swift-object-expirer/config-internal.sh b/docker/common/swift/swift-object-expirer/config-internal.sh
new file mode 100755
index 000000000..8b3cac0dc
--- /dev/null
+++ b/docker/common/swift/swift-object-expirer/config-internal.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -e
+
+CMD="/usr/bin/swift-object-expirer"
+ARGS="/etc/swift/object-server.conf --verbose"
+
+. /opt/kolla/config-swift.sh
+. /opt/kolla/config-swift-object.sh
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-object-expirer/start.sh b/docker/common/swift/swift-object-expirer/start.sh
new file mode 100755
index 000000000..e4cfa7369
--- /dev/null
+++ b/docker/common/swift/swift-object-expirer/start.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+set -o errexit
+
+CMD="/usr/bin/swift-object-expirer"
+ARGS="/etc/swift/object-server.conf --verbose"
+
+# Loading common functions.
+source /opt/kolla/kolla-common.sh
+
+# Config-internal script exec out of this function, it does not return here.
+set_configs
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-object-replicator/config-external.sh b/docker/common/swift/swift-object-replicator/config-external.sh
new file mode 100644
index 000000000..fdf92592c
--- /dev/null
+++ b/docker/common/swift/swift-object-replicator/config-external.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+if [[ -f /opt/kolla/swift/swift.conf ]]; then
+ cp /opt/kolla/swift/swift.conf /etc/swift/
+ chown swift: /opt/kolla/swift/swift.conf
+ chmod 0640 /etc/swift/swift.conf
+fi
+
+if [[ -f /opt/kolla/swift/object-server.conf ]]; then
+ cp /opt/kolla/swift/object-server.conf /etc/swift/
+ chown swift: /opt/kolla/swift/object-server.conf
+ chmod 0640 /etc/swift/object-server.conf
+fi
diff --git a/docker/common/swift/swift-object-replicator/config-internal.sh b/docker/common/swift/swift-object-replicator/config-internal.sh
new file mode 100755
index 000000000..101fa90f8
--- /dev/null
+++ b/docker/common/swift/swift-object-replicator/config-internal.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -e
+
+CMD="/usr/bin/swift-object-replicator"
+ARGS="/etc/swift/object-server.conf --verbose"
+
+. /opt/kolla/config-swift.sh
+. /opt/kolla/config-swift-object.sh
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-object-replicator/start.sh b/docker/common/swift/swift-object-replicator/start.sh
new file mode 100755
index 000000000..e6049717a
--- /dev/null
+++ b/docker/common/swift/swift-object-replicator/start.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+set -o errexit
+
+CMD="/usr/bin/swift-object-replicator"
+ARGS="/etc/swift/object-server.conf --verbose"
+
+# Loading common functions.
+source /opt/kolla/kolla-common.sh
+
+# Config-internal script exec out of this function, it does not return here.
+set_configs
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-object-server/config-external.sh b/docker/common/swift/swift-object-server/config-external.sh
new file mode 100644
index 000000000..fdf92592c
--- /dev/null
+++ b/docker/common/swift/swift-object-server/config-external.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+if [[ -f /opt/kolla/swift/swift.conf ]]; then
+ cp /opt/kolla/swift/swift.conf /etc/swift/
+ chown swift: /opt/kolla/swift/swift.conf
+ chmod 0640 /etc/swift/swift.conf
+fi
+
+if [[ -f /opt/kolla/swift/object-server.conf ]]; then
+ cp /opt/kolla/swift/object-server.conf /etc/swift/
+ chown swift: /opt/kolla/swift/object-server.conf
+ chmod 0640 /etc/swift/object-server.conf
+fi
diff --git a/docker/common/swift/swift-object-server/config-internal.sh b/docker/common/swift/swift-object-server/config-internal.sh
new file mode 100755
index 000000000..fbee94383
--- /dev/null
+++ b/docker/common/swift/swift-object-server/config-internal.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -e
+
+CMD="/usr/bin/swift-object-server"
+ARGS="/etc/swift/object-server.conf --verbose"
+
+. /opt/kolla/config-swift.sh
+. /opt/kolla/config-swift-object.sh
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-object/start.sh b/docker/common/swift/swift-object-server/start.sh
index abda77dbe..7b9f022f2 100755
--- a/docker/common/swift/swift-object/start.sh
+++ b/docker/common/swift/swift-object-server/start.sh
@@ -1,8 +1,9 @@
#!/bin/bash
+
set -o errexit
CMD="/usr/bin/swift-object-server"
-ARGS=""
+ARGS="/etc/swift/object-server.conf --verbose"
# Loading common functions.
source /opt/kolla/kolla-common.sh
diff --git a/docker/common/swift/swift-object-updater/config-external.sh b/docker/common/swift/swift-object-updater/config-external.sh
new file mode 100644
index 000000000..ebd1ad9a9
--- /dev/null
+++ b/docker/common/swift/swift-object-updater/config-external.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+if [[ -f /opt/kolla/swift/swift.conf ]]; then
+ cp /opt/kolla/swift/swift.conf /etc/swift/
+ chown swift: /etc/swift/swift.conf
+ chmod 0640 /etc/swift/swift.conf
+fi
+
+if [[ -f /opt/kolla/swift/object-server.conf ]]; then
+ cp /opt/kolla/swift/object-server.conf /etc/swift/
+ chown swift: /etc/swift/object-server.conf
+ chmod 0640 /etc/swift/object-server.conf
+fi
diff --git a/docker/common/swift/swift-object-updater/config-internal.sh b/docker/common/swift/swift-object-updater/config-internal.sh
new file mode 100755
index 000000000..accaea6c7
--- /dev/null
+++ b/docker/common/swift/swift-object-updater/config-internal.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -e
+
+CMD="/usr/bin/swift-object-updater"
+ARGS="/etc/swift/object-server.conf --verbose"
+
+. /opt/kolla/config-swift.sh
+. /opt/kolla/config-swift-object.sh
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-object-updater/start.sh b/docker/common/swift/swift-object-updater/start.sh
new file mode 100755
index 000000000..e3b111e79
--- /dev/null
+++ b/docker/common/swift/swift-object-updater/start.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+set -o errexit
+
+CMD="/usr/bin/swift-object-updater"
+ARGS="/etc/swift/object-server.conf --verbose"
+
+# Loading common functions.
+source /opt/kolla/kolla-common.sh
+
+# Config-internal script exec out of this function, it does not return here.
+set_configs
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-object/config-external.sh b/docker/common/swift/swift-object/config-external.sh
deleted file mode 100755
index d56baf152..000000000
--- a/docker/common/swift/swift-object/config-external.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-SOURCE="/opt/kolla/swift-object/swift.conf"
-TARGET="/etc/swift/swift.conf"
-OWNER="swift"
-
-if [[ -f "$SOURCE" ]]; then
- cp $SOURCE $TARGET
- chown ${OWNER}: $TARGET
- chmod 0644 $TARGET
-fi
diff --git a/docker/common/swift/swift-object/config-internal.sh b/docker/common/swift/swift-object/config-internal.sh
deleted file mode 100755
index 5931e89d6..000000000
--- a/docker/common/swift/swift-object/config-internal.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-
-check_required_vars KEYSTONE_ADMIN_SERVICE_HOST \
- KEYSTONE_ADMIN_TOKEN \
- SWIFT_ADMIN_PASSWORD
-fail_unless_db
-fail_unless_os_service_running keystone
-
-if ! [ "$SWIFT_DB_PASSWORD" ]; then
- SWIFT_DB_PASSWORD=$(openssl rand -hex 15)
- export SWIFT_DB_PASSWORD
-fi
-
-sh /opt/swift/config-swift.sh engine
-
-mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
-CREATE DATABASE IF NOT EXISTS ${SWIFT_DB_NAME};
-GRANT ALL PRIVILEGES ON swift* TO
-'${SWIFT_DB_USER}'@'%' IDENTIFIED BY '${SWIFT_DB_PASSWORD}'
-EOF
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
-
-/bin/keystone user-create --name ${SWIFT_KEYSTONE_USER} --pass ${SWIFT_ADMIN_PASSWORD}
-/bin/keystone role-create --name ${SWIFT_KEYSTONE_USER}
-/bin/keystone user-role-add --user ${SWIFT_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME}
-
-exec /usr/bin/swift-object-server
diff --git a/docker/common/swift/swift-proxy-server/config-external.sh b/docker/common/swift/swift-proxy-server/config-external.sh
index 813462735..2b3327b33 100755
--- a/docker/common/swift/swift-proxy-server/config-external.sh
+++ b/docker/common/swift/swift-proxy-server/config-external.sh
@@ -6,5 +6,5 @@ OWNER="swift"
if [[ -f "$SOURCE" ]]; then
cp $SOURCE $TARGET
chown ${OWNER}: $TARGET
- chmod 0644 $TARGET
+ chmod 0640 $TARGET
fi
diff --git a/docker/common/swift/swift-proxy-server/config-internal.sh b/docker/common/swift/swift-proxy-server/config-internal.sh
index 3f387d187..436d1fbba 100755
--- a/docker/common/swift/swift-proxy-server/config-internal.sh
+++ b/docker/common/swift/swift-proxy-server/config-internal.sh
@@ -1,5 +1,149 @@
#!/bin/bash
-sh /opt/swift/config-swift.sh proxy
+set -e
-exec /usr/bin/swift-proxy-server
+CMD="/usr/bin/swift-proxy-server"
+ARGS="/etc/swift/proxy-server.conf --verbose"
+
+. /opt/kolla/config-swift.sh
+
+check_required_vars \
+ SWIFT_ACCOUNT_SVC_RING_DEVICES \
+ SWIFT_ACCOUNT_SVC_RING_HOSTS \
+ SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS \
+ SWIFT_ACCOUNT_SVC_RING_NAME \
+ SWIFT_ACCOUNT_SVC_RING_PART_POWER \
+ SWIFT_ACCOUNT_SVC_RING_REPLICAS \
+ SWIFT_ACCOUNT_SVC_RING_WEIGHTS \
+ SWIFT_ACCOUNT_SVC_RING_ZONES \
+ SWIFT_ADMIN_USER \
+ SWIFT_CONTAINER_SVC_RING_DEVICES \
+ SWIFT_CONTAINER_SVC_RING_HOSTS \
+ SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS \
+ SWIFT_CONTAINER_SVC_RING_NAME \
+ SWIFT_CONTAINER_SVC_RING_PART_POWER \
+ SWIFT_CONTAINER_SVC_RING_REPLICAS \
+ SWIFT_CONTAINER_SVC_RING_WEIGHTS \
+ SWIFT_CONTAINER_SVC_RING_ZONES \
+ SWIFT_KEYSTONE_PASSWORD \
+ SWIFT_KEYSTONE_USER \
+ SWIFT_OBJECT_SVC_RING_DEVICES \
+ SWIFT_OBJECT_SVC_RING_HOSTS \
+ SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS \
+ SWIFT_OBJECT_SVC_RING_NAME \
+ SWIFT_OBJECT_SVC_RING_PART_POWER \
+ SWIFT_OBJECT_SVC_RING_REPLICAS \
+ SWIFT_OBJECT_SVC_RING_WEIGHTS \
+ SWIFT_OBJECT_SVC_RING_ZONES \
+ SWIFT_PROXY_ACCOUNT_AUTOCREATE \
+ SWIFT_PROXY_AUTH_PLUGIN \
+ SWIFT_PROXY_BIND_IP \
+ SWIFT_PROXY_BIND_PORT \
+ SWIFT_PROXY_DELAY_AUTH_DECISION \
+ SWIFT_PROXY_DIR \
+ SWIFT_PROXY_OPERATOR_ROLES \
+ SWIFT_PROXY_PASSWORD \
+ SWIFT_PROXY_PIPELINE_MAIN \
+ SWIFT_PROXY_PROJECT_DOMAIN_ID \
+ SWIFT_PROXY_PROJECT_NAME \
+ SWIFT_PROXY_SIGNING_DIR \
+ SWIFT_PROXY_USER_DOMAIN_ID \
+ SWIFT_PROXY_USERNAME \
+ SWIFT_USER
+
+export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
+
+crux user-create --update \
+ -n "${SWIFT_KEYSTONE_USER}" \
+ -p "${SWIFT_KEYSTONE_PASSWORD}" \
+ -t "${ADMIN_TENANT_NAME}" \
+ -r admin
+
+crux endpoint-create --remove-all \
+ -n swift -t object-store \
+ -I "http://${SWIFT_API_SERVICE_HOST}:8080/v1/AUTH_%(tenant_id)s'" \
+ -P "http://${PUBLIC_IP}:8080/v1/AUTH_%(tenant_id)s" \
+ -A "http://${SWIFT_API_SERVICE_HOST}:8080'"
+
+cfg=/etc/swift/proxy-server.conf
+
+crudini --set $cfg DEFAULT bind_port "${SWIFT_PROXY_BIND_PORT}"
+crudini --set $cfg DEFAULT user "${SWIFT_USER}"
+crudini --set $cfg DEFAULT swift_dir "${SWIFT_PROXY_DIR}"
+crudini --set $cfg DEFAULT bind_ip "${SWIFT_PROXY_BIND_IP}"
+
+crudini --set $cfg pipeline:main pipeline "${SWIFT_PROXY_PIPELINE_MAIN}"
+
+crudini --set $cfg app:proxy-server account_autocreate "${SWIFT_PROXY_ACCOUNT_AUTOCREATE}"
+
+crudini --del $cfg filter:keystone
+crudini --set $cfg filter:keystoneauth use egg:swift#keystoneauth
+crudini --set $cfg filter:keystoneauth operator_roles "${SWIFT_PROXY_OPERATOR_ROLES}"
+
+crudini --set $cfg filter:container_sync use egg:swift#container_sync
+
+crudini --set $cfg filter:bulk use egg:swift#bulk
+
+crudini --set $cfg filter:ratelimit use egg:swift#ratelimit
+
+crudini --set $cfg filter:authtoken auth_uri \
+ "http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/"
+crudini --set $cfg filter:authtoken auth_url \
+ "http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/"
+crudini --set $cfg filter:authtoken auth_host "${KEYSTONE_PUBLIC_SERVICE_HOST}"
+crudini --set $cfg filter:authtoken auth_port "${KEYSTONE_ADMIN_SERVICE_PORT}"
+crudini --set $cfg filter:authtoken admin_tenant_name "${ADMIN_TENANT_NAME}"
+crudini --set $cfg filter:authtoken admin_user "${SWIFT_KEYSTONE_USER}"
+crudini --set $cfg filter:authtoken admin_password "${SWIFT_KEYSTONE_PASSWORD}"
+crudini --set $cfg filter:authtoken delay_auth_decision "${SWIFT_PROXY_DELAY_AUTH_DECISION}"
+crudini --set $cfg filter:authtoken signing_dir "${SWIFT_PROXY_SIGNING_DIR}"
+
+crudini --set $cfg filter:cache memcache_servers "${PUBLIC_IP}:11211"
+
+crudini --set $cfg filter:gatekeeper use egg:swift#gatekeeper
+
+crudini --set $cfg filter:slo use egg:swift#slo
+
+crudini --set $cfg filter:dlo use egg:swift#dlo
+
+# Create swift user and group if they don't exist
+id -u swift &>/dev/null || useradd --user-group swift
+
+# TODO(pbourke): should these go into the Dockerfile instead?
+# TODO(pbourke): do we need a data vol for these?
+mkdir -p ${SWIFT_PROXY_SIGNING_DIR}
+chown swift: ${SWIFT_PROXY_SIGNING_DIR}
+chmod 0700 ${SWIFT_PROXY_SIGNING_DIR}
+
+python /opt/kolla/build-swift-ring.py \
+ -f ${SWIFT_OBJECT_SVC_RING_NAME} \
+ -p ${SWIFT_OBJECT_SVC_RING_PART_POWER} \
+ -r ${SWIFT_OBJECT_SVC_RING_REPLICAS} \
+ -m ${SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS} \
+ -H ${SWIFT_OBJECT_SVC_RING_HOSTS} \
+ -w ${SWIFT_OBJECT_SVC_RING_WEIGHTS} \
+ -d ${SWIFT_OBJECT_SVC_RING_DEVICES} \
+ -z ${SWIFT_OBJECT_SVC_RING_ZONES}
+
+python /opt/kolla/build-swift-ring.py \
+ -f ${SWIFT_ACCOUNT_SVC_RING_NAME} \
+ -p ${SWIFT_ACCOUNT_SVC_RING_PART_POWER} \
+ -r ${SWIFT_ACCOUNT_SVC_RING_REPLICAS} \
+ -m ${SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS} \
+ -H ${SWIFT_ACCOUNT_SVC_RING_HOSTS} \
+ -w ${SWIFT_ACCOUNT_SVC_RING_WEIGHTS} \
+ -d ${SWIFT_ACCOUNT_SVC_RING_DEVICES} \
+ -z ${SWIFT_ACCOUNT_SVC_RING_ZONES}
+
+python /opt/kolla/build-swift-ring.py \
+ -f ${SWIFT_CONTAINER_SVC_RING_NAME} \
+ -p ${SWIFT_CONTAINER_SVC_RING_PART_POWER} \
+ -r ${SWIFT_CONTAINER_SVC_RING_REPLICAS} \
+ -m ${SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS} \
+ -H ${SWIFT_CONTAINER_SVC_RING_HOSTS} \
+ -w ${SWIFT_CONTAINER_SVC_RING_WEIGHTS} \
+ -d ${SWIFT_CONTAINER_SVC_RING_DEVICES} \
+ -z ${SWIFT_CONTAINER_SVC_RING_ZONES}
+
+exec $CMD $ARGS
diff --git a/docker/common/swift/swift-proxy-server/start.sh b/docker/common/swift/swift-proxy-server/start.sh
index 8957b5052..c1b5b29cd 100755
--- a/docker/common/swift/swift-proxy-server/start.sh
+++ b/docker/common/swift/swift-proxy-server/start.sh
@@ -1,8 +1,9 @@
#!/bin/bash
+
set -o errexit
CMD="/usr/bin/swift-proxy-server"
-ARGS=""
+ARGS="/etc/swift/proxy-server.conf --verbose"
# Loading common functions.
source /opt/kolla/kolla-common.sh
diff --git a/docs/minimal-environment-vars.md b/docs/minimal-environment-vars.md
index 83cd6a5ef..d9d41c481 100644
--- a/docs/minimal-environment-vars.md
+++ b/docs/minimal-environment-vars.md
@@ -510,32 +510,135 @@ In order for each service to function, there is a minimum set of required variab
RABBITMQ_PASS
RABBITMQ_USER
-# Swift-account
-
- KEYSTONE_ADMIN_SERVICE_HOST
- KEYSTONE_ADMIN_TOKEN
- SWIFT_ADMIN_PASSWORD
+# Swift-account-server
+
+ SWIFT_ACCOUNT_SVC_BIND_IP
+ SWIFT_ACCOUNT_SVC_BIND_PORT
+ SWIFT_ACCOUNT_SVC_DEVICES
+ SWIFT_ACCOUNT_SVC_MOUNT_CHECK
+ SWIFT_ACCOUNT_SVC_RING_DEVICES
+ SWIFT_ACCOUNT_SVC_RING_HOSTS
+ SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS
+ SWIFT_ACCOUNT_SVC_RING_NAME
+ SWIFT_ACCOUNT_SVC_RING_PART_POWER
+ SWIFT_ACCOUNT_SVC_RING_REPLICAS
+ SWIFT_ACCOUNT_SVC_RING_WEIGHTS
+ SWIFT_ACCOUNT_SVC_RING_ZONES
+ SWIFT_DIR
+ SWIFT_USER
# Swift-base
+ SWIFT_HASH_PATH_SUFFIX
+
+# Swift-container-server
+
+ SWIFT_CONTAINER_SVC_BIND_IP
+ SWIFT_CONTAINER_SVC_BIND_PORT
+ SWIFT_CONTAINER_SVC_DEVICES
+ SWIFT_CONTAINER_SVC_MOUNT_CHECK
+ SWIFT_CONTAINER_SVC_RING_DEVICES
+ SWIFT_CONTAINER_SVC_RING_HOSTS
+ SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS
+ SWIFT_CONTAINER_SVC_RING_NAME
+ SWIFT_CONTAINER_SVC_RING_PART_POWER
+ SWIFT_CONTAINER_SVC_RING_REPLICAS
+ SWIFT_CONTAINER_SVC_RING_WEIGHTS
+ SWIFT_CONTAINER_SVC_RING_ZONES
+ SWIFT_DIR
+ SWIFT_USER
+
+# Swift-object-auditor
+
None
-# Swift-container
+# Swift-object-base
+
+ SWIFT_CONTAINER_SVC_RING_DEVICES
+ SWIFT_CONTAINER_SVC_RING_HOSTS
+ SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS
+ SWIFT_CONTAINER_SVC_RING_NAME
+ SWIFT_CONTAINER_SVC_RING_PART_POWER
+ SWIFT_CONTAINER_SVC_RING_REPLICAS
+ SWIFT_CONTAINER_SVC_RING_WEIGHTS
+ SWIFT_CONTAINER_SVC_RING_ZONES
+ SWIFT_DIR
+ SWIFT_OBJECT_SVC_BIND_IP
+ SWIFT_OBJECT_SVC_BIND_PORT
+ SWIFT_OBJECT_SVC_DEVICES
+ SWIFT_OBJECT_SVC_MOUNT_CHECK
+ SWIFT_OBJECT_SVC_PIPELINE
+ SWIFT_OBJECT_SVC_RING_DEVICES
+ SWIFT_OBJECT_SVC_RING_HOSTS
+ SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS
+ SWIFT_OBJECT_SVC_RING_NAME
+ SWIFT_OBJECT_SVC_RING_PART_POWER
+ SWIFT_OBJECT_SVC_RING_REPLICAS
+ SWIFT_OBJECT_SVC_RING_WEIGHTS
+ SWIFT_OBJECT_SVC_RING_ZONES
+ SWIFT_USER
+
+# Swift-object-expirer
- KEYSTONE_ADMIN_SERVICE_HOST
- KEYSTONE_ADMIN_TOKEN
- SWIFT_ADMIN_PASSWORD
+ None
-# Swift-object
+# Swift-object-replicator
- KEYSTONE_ADMIN_SERVICE_HOST
- KEYSTONE_ADMIN_TOKEN
- SWIFT_ADMIN_PASSWORD
+ None
-# Swift-proxy-server
+# Swift-object-server
+
+ None
+
+# Swift-object-updater
None
+# Swift-proxy-server
+
+ SWIFT_ACCOUNT_SVC_RING_DEVICES
+ SWIFT_ACCOUNT_SVC_RING_HOSTS
+ SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS
+ SWIFT_ACCOUNT_SVC_RING_NAME
+ SWIFT_ACCOUNT_SVC_RING_PART_POWER
+ SWIFT_ACCOUNT_SVC_RING_REPLICAS
+ SWIFT_ACCOUNT_SVC_RING_WEIGHTS
+ SWIFT_ACCOUNT_SVC_RING_ZONES
+ SWIFT_ADMIN_USER
+ SWIFT_CONTAINER_SVC_RING_DEVICES
+ SWIFT_CONTAINER_SVC_RING_HOSTS
+ SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS
+ SWIFT_CONTAINER_SVC_RING_NAME
+ SWIFT_CONTAINER_SVC_RING_PART_POWER
+ SWIFT_CONTAINER_SVC_RING_REPLICAS
+ SWIFT_CONTAINER_SVC_RING_WEIGHTS
+ SWIFT_CONTAINER_SVC_RING_ZONES
+ SWIFT_KEYSTONE_PASSWORD
+ SWIFT_KEYSTONE_USER
+ SWIFT_OBJECT_SVC_RING_DEVICES
+ SWIFT_OBJECT_SVC_RING_HOSTS
+ SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS
+ SWIFT_OBJECT_SVC_RING_NAME
+ SWIFT_OBJECT_SVC_RING_PART_POWER
+ SWIFT_OBJECT_SVC_RING_REPLICAS
+ SWIFT_OBJECT_SVC_RING_WEIGHTS
+ SWIFT_OBJECT_SVC_RING_ZONES
+ SWIFT_PROXY_ACCOUNT_AUTOCREATE
+ SWIFT_PROXY_AUTH_PLUGIN
+ SWIFT_PROXY_BIND_IP
+ SWIFT_PROXY_BIND_PORT
+ SWIFT_PROXY_DELAY_AUTH_DECISION
+ SWIFT_PROXY_DIR
+ SWIFT_PROXY_OPERATOR_ROLES
+ SWIFT_PROXY_PASSWORD
+ SWIFT_PROXY_PIPELINE_MAIN
+ SWIFT_PROXY_PROJECT_DOMAIN_ID
+ SWIFT_PROXY_PROJECT_NAME
+ SWIFT_PROXY_SIGNING_DIR
+ SWIFT_PROXY_USERNAME
+ SWIFT_PROXY_USER_DOMAIN_ID
+ SWIFT_USER
+
# Zaqar
KEYSTONE_ADMIN_SERVICE_HOST
diff --git a/tools/genenv b/tools/genenv
index bcb1d1f72..7161d2d1d 100755..100644
--- a/tools/genenv
+++ b/tools/genenv
@@ -300,10 +300,65 @@ NOVA_VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP
# Nova/Neutron
NEUTRON_SHARED_SECRET=sharedsecret
-#Swift
-SWIFT_DB_NAME=swift
-SWIFT_DB_USER=swift
+# Swift
+SWIFT_ACCOUNT_SVC_BIND_IP=$PUBLIC_IP
+SWIFT_ACCOUNT_SVC_BIND_PORT=6002
+SWIFT_ACCOUNT_SVC_DEVICES=/srv/node
+SWIFT_ACCOUNT_SVC_MOUNT_CHECK=false
+SWIFT_ADMIN_USER=swift
+SWIFT_API_SERVICE_HOST=$HOST_IP
+SWIFT_CONTAINER_SVC_BIND_IP=$PUBLIC_IP
+SWIFT_CONTAINER_SVC_BIND_PORT=6001
+SWIFT_CONTAINER_SVC_DEVICES=/srv/node
+SWIFT_CONTAINER_SVC_MOUNT_CHECK=false
+SWIFT_DIR=/etc/swift
+SWIFT_HASH_PATH_SUFFIX=$(openssl rand -hex 8)
+SWIFT_KEYSTONE_PASSWORD=swift
SWIFT_KEYSTONE_USER=swift
+SWIFT_OBJECT_SVC_BIND_IP=$PUBLIC_IP
+SWIFT_OBJECT_SVC_BIND_PORT=6000
+SWIFT_OBJECT_SVC_DEVICES=/srv/node
+SWIFT_OBJECT_SVC_MOUNT_CHECK=false
+SWIFT_OBJECT_SVC_PIPELINE=object-server
+SWIFT_PROXY_ACCOUNT_AUTOCREATE=true
+SWIFT_PROXY_AUTH_PLUGIN=password
+SWIFT_PROXY_BIND_IP=$PUBLIC_IP
+SWIFT_PROXY_BIND_PORT=8080
+SWIFT_PROXY_DELAY_AUTH_DECISION=true
+SWIFT_PROXY_DIR=/etc/swift
+SWIFT_PROXY_OPERATOR_ROLES=admin,user
+SWIFT_PROXY_PASSWORD=swift
+SWIFT_PROXY_PIPELINE_MAIN="catch_errors gatekeeper healthcheck cache container_sync bulk ratelimit authtoken keystoneauth slo dlo proxy-server"
+SWIFT_PROXY_PROJECT_DOMAIN_ID=default
+SWIFT_PROXY_PROJECT_NAME=service
+SWIFT_PROXY_SIGNING_DIR=/var/cache/swift
+SWIFT_PROXY_USER_DOMAIN_ID=default
+SWIFT_PROXY_USERNAME=swift
+SWIFT_USER=swift
+SWIFT_OBJECT_SVC_RING_NAME=/etc/swift/object.builder
+SWIFT_OBJECT_SVC_RING_PART_POWER=10
+SWIFT_OBJECT_SVC_RING_REPLICAS=3
+SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS=1
+SWIFT_OBJECT_SVC_RING_HOSTS="${HOST_IP}:6000,${HOST_IP}:6000,${HOST_IP}:6000"
+SWIFT_OBJECT_SVC_RING_DEVICES="sdb1,sdb2,sdb3"
+SWIFT_OBJECT_SVC_RING_WEIGHTS="1,1,1"
+SWIFT_OBJECT_SVC_RING_ZONES="1,2,3"
+SWIFT_CONTAINER_SVC_RING_NAME=/etc/swift/container.builder
+SWIFT_CONTAINER_SVC_RING_PART_POWER=10
+SWIFT_CONTAINER_SVC_RING_REPLICAS=3
+SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS=1
+SWIFT_CONTAINER_SVC_RING_HOSTS="${HOST_IP}:6001,${HOST_IP}:6001,${HOST_IP}:6001"
+SWIFT_CONTAINER_SVC_RING_DEVICES="sdb1,sdb2,sdb3"
+SWIFT_CONTAINER_SVC_RING_WEIGHTS="1,1,1"
+SWIFT_CONTAINER_SVC_RING_ZONES="1,2,3"
+SWIFT_ACCOUNT_SVC_RING_NAME=/etc/swift/account.builder
+SWIFT_ACCOUNT_SVC_RING_PART_POWER=10
+SWIFT_ACCOUNT_SVC_RING_REPLICAS=3
+SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS=1
+SWIFT_ACCOUNT_SVC_RING_HOSTS="${HOST_IP}:6002,${HOST_IP}:6002,${HOST_IP}:6002"
+SWIFT_ACCOUNT_SVC_RING_DEVICES="sdb1,sdb2,sdb3"
+SWIFT_ACCOUNT_SVC_RING_WEIGHTS="1,1,1"
+SWIFT_ACCOUNT_SVC_RING_ZONES="1,2,3"
#Zaqar
ZAQAR_KEYSTONE_USER=zaqar
@@ -500,9 +555,64 @@ RABBITMQ_USER=$RABBIT_USER
RABBIT_PASSWORD=$RABBIT_PASSWORD
RABBIT_USERID=$RABBIT_USER
ROOT_HELPER=$ROOT_HELPER
-SWIFT_DB_NAME=$SWIFT_DB_NAME
-SWIFT_DB_USER=$SWIFT_DB_USER
+SWIFT_ACCOUNT_SVC_BIND_IP=$SWIFT_ACCOUNT_SVC_BIND_IP
+SWIFT_ACCOUNT_SVC_BIND_PORT=$SWIFT_ACCOUNT_SVC_BIND_PORT
+SWIFT_ACCOUNT_SVC_DEVICES=$SWIFT_ACCOUNT_SVC_DEVICES
+SWIFT_ACCOUNT_SVC_MOUNT_CHECK=$SWIFT_ACCOUNT_SVC_MOUNT_CHECK
+SWIFT_ADMIN_USER=$SWIFT_ADMIN_USER
+SWIFT_API_SERVICE_HOST=$SWIFT_API_SERVICE_HOST
+SWIFT_CONTAINER_SVC_BIND_IP=$PUBLIC_IP
+SWIFT_CONTAINER_SVC_BIND_PORT=$SWIFT_CONTAINER_SVC_BIND_PORT
+SWIFT_CONTAINER_SVC_DEVICES=$SWIFT_CONTAINER_SVC_DEVICES
+SWIFT_CONTAINER_SVC_MOUNT_CHECK=$SWIFT_CONTAINER_SVC_MOUNT_CHECK
+SWIFT_DIR=$SWIFT_DIR
+SWIFT_HASH_PATH_SUFFIX=$SWIFT_HASH_PATH_SUFFIX
+SWIFT_KEYSTONE_PASSWORD=$SWIFT_KEYSTONE_PASSWORD
SWIFT_KEYSTONE_USER=$SWIFT_KEYSTONE_USER
+SWIFT_OBJECT_SVC_BIND_IP=$SWIFT_OBJECT_SVC_BIND_IP
+SWIFT_OBJECT_SVC_BIND_PORT=$SWIFT_OBJECT_SVC_BIND_PORT
+SWIFT_OBJECT_SVC_DEVICES=$SWIFT_OBJECT_SVC_DEVICES
+SWIFT_OBJECT_SVC_MOUNT_CHECK=$SWIFT_OBJECT_SVC_MOUNT_CHECK
+SWIFT_OBJECT_SVC_PIPELINE=$SWIFT_OBJECT_SVC_PIPELINE
+SWIFT_PROXY_ACCOUNT_AUTOCREATE=$SWIFT_PROXY_ACCOUNT_AUTOCREATE
+SWIFT_PROXY_AUTH_PLUGIN=$SWIFT_PROXY_AUTH_PLUGIN
+SWIFT_PROXY_BIND_IP=$SWIFT_PROXY_BIND_IP
+SWIFT_PROXY_BIND_PORT=$SWIFT_PROXY_BIND_PORT
+SWIFT_PROXY_DELAY_AUTH_DECISION=$SWIFT_PROXY_DELAY_AUTH_DECISION
+SWIFT_PROXY_DIR=$SWIFT_PROXY_DIR
+SWIFT_PROXY_OPERATOR_ROLES=$SWIFT_PROXY_OPERATOR_ROLES
+SWIFT_PROXY_PASSWORD=$SWIFT_PROXY_PASSWORD
+SWIFT_PROXY_PIPELINE_MAIN=$SWIFT_PROXY_PIPELINE_MAIN
+SWIFT_PROXY_PROJECT_DOMAIN_ID=$SWIFT_PROXY_PROJECT_DOMAIN_ID
+SWIFT_PROXY_PROJECT_NAME=$SWIFT_PROXY_PROJECT_NAME
+SWIFT_PROXY_SIGNING_DIR=$SWIFT_PROXY_SIGNING_DIR
+SWIFT_PROXY_USER_DOMAIN_ID=$SWIFT_PROXY_USER_DOMAIN_ID
+SWIFT_PROXY_USERNAME=$SWIFT_PROXY_USERNAME
+SWIFT_USER=$SWIFT_USER
+SWIFT_OBJECT_SVC_RING_NAME=${SWIFT_OBJECT_SVC_RING_NAME}
+SWIFT_OBJECT_SVC_RING_PART_POWER=${SWIFT_OBJECT_SVC_RING_PART_POWER}
+SWIFT_OBJECT_SVC_RING_REPLICAS=${SWIFT_OBJECT_SVC_RING_REPLICAS}
+SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS=${SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS}
+SWIFT_OBJECT_SVC_RING_HOSTS=${SWIFT_OBJECT_SVC_RING_HOSTS}
+SWIFT_OBJECT_SVC_RING_DEVICES=${SWIFT_OBJECT_SVC_RING_DEVICES}
+SWIFT_OBJECT_SVC_RING_WEIGHTS=${SWIFT_OBJECT_SVC_RING_WEIGHTS}
+SWIFT_OBJECT_SVC_RING_ZONES=${SWIFT_OBJECT_SVC_RING_ZONES}
+SWIFT_CONTAINER_SVC_RING_NAME=${SWIFT_CONTAINER_SVC_RING_NAME}
+SWIFT_CONTAINER_SVC_RING_PART_POWER=${SWIFT_CONTAINER_SVC_RING_PART_POWER}
+SWIFT_CONTAINER_SVC_RING_REPLICAS=${SWIFT_CONTAINER_SVC_RING_REPLICAS}
+SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS=${SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS}
+SWIFT_CONTAINER_SVC_RING_HOSTS=${SWIFT_CONTAINER_SVC_RING_HOSTS}
+SWIFT_CONTAINER_SVC_RING_DEVICES=${SWIFT_CONTAINER_SVC_RING_DEVICES}
+SWIFT_CONTAINER_SVC_RING_WEIGHTS=${SWIFT_CONTAINER_SVC_RING_WEIGHTS}
+SWIFT_CONTAINER_SVC_RING_ZONES=${SWIFT_CONTAINER_SVC_RING_ZONES}
+SWIFT_ACCOUNT_SVC_RING_NAME=${SWIFT_ACCOUNT_SVC_RING_NAME}
+SWIFT_ACCOUNT_SVC_RING_PART_POWER=${SWIFT_ACCOUNT_SVC_RING_PART_POWER}
+SWIFT_ACCOUNT_SVC_RING_REPLICAS=${SWIFT_ACCOUNT_SVC_RING_REPLICAS}
+SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS=${SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS}
+SWIFT_ACCOUNT_SVC_RING_HOSTS=${SWIFT_ACCOUNT_SVC_RING_HOSTS}
+SWIFT_ACCOUNT_SVC_RING_DEVICES=${SWIFT_ACCOUNT_SVC_RING_DEVICES}
+SWIFT_ACCOUNT_SVC_RING_WEIGHTS=${SWIFT_ACCOUNT_SVC_RING_WEIGHTS}
+SWIFT_ACCOUNT_SVC_RING_ZONES=${SWIFT_ACCOUNT_SVC_RING_ZONES}
TEMP_FILE=$TEMP_FILE
TENANT_NETWORK_TYPES=$TENANT_NETWORK_TYPES
TOKEN_DRIVER=$TOKEN_DRIVER