From ab96e4a51eaf260dc2ec6050afded536ac81007f Mon Sep 17 00:00:00 2001
From: digambar <digambarpatil15@yahoo.co.in>
Date: Fri, 3 Jul 2015 15:21:57 +0530
Subject: [PATCH] Add config-internal/config-external to Zaqar containers

Partially Implements: Blueprint standard-start
Co-Authored-By: Swapnil Kulkarni <me@coolsvap.net>
Change-Id: I4623f2495365e3178d3cd7f453683c2ceaf16b02
---
 docker/centos/binary/zaqar/Dockerfile         |  2 +
 docker/centos/binary/zaqar/config-external.sh |  1 +
 docker/centos/binary/zaqar/config-internal.sh |  1 +
 docker/common/zaqar/config-external.sh        | 10 +++
 docker/common/zaqar/config-internal.sh        | 64 ++++++++++++++++
 docker/common/zaqar/start.sh                  | 73 ++++---------------
 docs/minimal-environment-vars.md              |  6 +-
 7 files changed, 94 insertions(+), 63 deletions(-)
 create mode 100644 docker/centos/binary/zaqar/config-external.sh
 create mode 100644 docker/centos/binary/zaqar/config-internal.sh
 create mode 100644 docker/common/zaqar/config-external.sh
 create mode 100644 docker/common/zaqar/config-internal.sh

diff --git a/docker/centos/binary/zaqar/Dockerfile b/docker/centos/binary/zaqar/Dockerfile
index 956f908254..ddb198fe39 100644
--- a/docker/centos/binary/zaqar/Dockerfile
+++ b/docker/centos/binary/zaqar/Dockerfile
@@ -6,4 +6,6 @@ RUN yum -y install openstack-zaqar && yum clean all
 ADD ./start.sh /start.sh
 ADD ./check.sh /check.sh
 
+COPY config-internal.sh config-external.sh /opt/kolla/
+
 CMD ["/start.sh"]
diff --git a/docker/centos/binary/zaqar/config-external.sh b/docker/centos/binary/zaqar/config-external.sh
new file mode 100644
index 0000000000..3459a6f72e
--- /dev/null
+++ b/docker/centos/binary/zaqar/config-external.sh
@@ -0,0 +1 @@
+../../../../common/zaqar/config-external.sh
diff --git a/docker/centos/binary/zaqar/config-internal.sh b/docker/centos/binary/zaqar/config-internal.sh
new file mode 100644
index 0000000000..10b7affb76
--- /dev/null
+++ b/docker/centos/binary/zaqar/config-internal.sh
@@ -0,0 +1 @@
+../../../../common/zaqar/config-internal.sh
diff --git a/docker/common/zaqar/config-external.sh b/docker/common/zaqar/config-external.sh
new file mode 100644
index 0000000000..7ed6da2eb4
--- /dev/null
+++ b/docker/common/zaqar/config-external.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+SOURCE="/opt/kolla/zaqar/zaqar.conf"
+TARGET="/etc/zaqar/zaqar.conf"
+OWNER="zaqar"
+
+if [[ -f "$SOURCE" ]]; then
+    cp $SOURCE $TARGET
+    chown ${OWNER}: $TARGET
+    chmod 0644 $TARGET
+fi
diff --git a/docker/common/zaqar/config-internal.sh b/docker/common/zaqar/config-internal.sh
new file mode 100644
index 0000000000..6c68fccf22
--- /dev/null
+++ b/docker/common/zaqar/config-internal.sh
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+set -e
+
+. /opt/kolla/kolla-common.sh
+
+: ${ADMIN_TENANT_NAME:=admin}
+: ${ZAQAR_KEYSTONE_USER:=zaqar}
+: ${KEYSTONE_AUTH_PROTOCOL:=http}
+
+check_required_vars ZAQAR_KEYSTONE_PASSWORD ZAQAR_SERVER_SERVICE_HOST \
+                    KEYSTONE_ADMIN_SERVICE_HOST KEYSTONE_ADMIN_TOKEN \
+                    PUBLIC_IP
+dump_vars
+
+#check_for_mongodb
+check_for_keystone
+
+cat > /openrc <<EOF
+export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
+export OS_USERNAME="${ZAQAR_KEYSTONE_USER}"
+export OS_PASSWORD="${ZAQAR_KEYSTONE_PASSWORD}"
+export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
+EOF
+
+cfg=/etc/zaqar/zaqar.conf
+
+crudini --set $cfg DEFAULT log_file \
+    ""
+crudini --set $cfg DEFAULT use_stderr \
+    true
+
+crudini --set $cfg drivers storage \
+    sqlite
+
+crudini --set $cfg keystone_authtoken admin_password \
+    "${ZAQAR_KEYSTONE_PASSWORD}"
+crudini --set $cfg keystone_authtoken admin_user \
+    "${ZAQAR_KEYSTONE_USER}"
+crudini --set $cfg  keystone_authtoken admin_tenant_name \
+    "${ADMIN_TENANT_NAME}"
+crudini --set $cfg keystone_authtoken auth_uri \
+    "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
+crudini --set $cfg keystone_authtoken auth_protocol \
+    "${KEYSTONE_AUTH_PROTOCOL}"
+crudini --set $cfg keystone_authtoken auth_host \
+    "${KEYSTONE_PUBLIC_SERVICE_HOST}"
+crudini --set $cfg keystone_authtoken auth_port \
+    5000
+
+
+export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
+crux user-create -n ${ZAQAR_KEYSTONE_USER} \
+    -p ${ZAQAR_KEYSTONE_PASSWORD} \
+    -t ${ADMIN_TENANT_NAME} \
+    -r admin
+
+crux endpoint-create --remove-all -n ${ZAQAR_KEYSTONE_USER} -t messaging \
+    -I "${KEYSTONE_AUTH_PROTOCOL}://${ZAQAR_SERVER_SERVICE_HOST}:8888" \
+    -P "${KEYSTONE_AUTH_PROTOCOL}://${PUBLIC_IP}:8888" \
+    -A "${KEYSTONE_AUTH_PROTOCOL}://${ZAQAR_SERVER_SERVICE_HOST}:8888"
+
+exec /usr/bin/zaqar-server
diff --git a/docker/common/zaqar/start.sh b/docker/common/zaqar/start.sh
index 6c68fccf22..4d3f752380 100755
--- a/docker/common/zaqar/start.sh
+++ b/docker/common/zaqar/start.sh
@@ -1,64 +1,21 @@
-#!/bin/sh
+#!/bin/bash
 
-set -e
+set -o errexit
 
-. /opt/kolla/kolla-common.sh
+CMD="/usr/bin/zaqar-server"
+ARGS=""
 
-: ${ADMIN_TENANT_NAME:=admin}
-: ${ZAQAR_KEYSTONE_USER:=zaqar}
-: ${KEYSTONE_AUTH_PROTOCOL:=http}
+# Loading common functions.
+source /opt/kolla/kolla-common.sh
 
-check_required_vars ZAQAR_KEYSTONE_PASSWORD ZAQAR_SERVER_SERVICE_HOST \
-                    KEYSTONE_ADMIN_SERVICE_HOST KEYSTONE_ADMIN_TOKEN \
-                    PUBLIC_IP
-dump_vars
+# Config-internal script exec out of this function, it does not return here.
+set_configs
 
-#check_for_mongodb
-check_for_keystone
+# Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases
+# of the KOLLA_BOOTSTRAP variable being set, including empty.
+if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then
+    su -s /bin/sh -c "zaqar-manage db_sync" cinder
+    exit 0
+fi
 
-cat > /openrc <<EOF
-export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
-export OS_USERNAME="${ZAQAR_KEYSTONE_USER}"
-export OS_PASSWORD="${ZAQAR_KEYSTONE_PASSWORD}"
-export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
-EOF
-
-cfg=/etc/zaqar/zaqar.conf
-
-crudini --set $cfg DEFAULT log_file \
-    ""
-crudini --set $cfg DEFAULT use_stderr \
-    true
-
-crudini --set $cfg drivers storage \
-    sqlite
-
-crudini --set $cfg keystone_authtoken admin_password \
-    "${ZAQAR_KEYSTONE_PASSWORD}"
-crudini --set $cfg keystone_authtoken admin_user \
-    "${ZAQAR_KEYSTONE_USER}"
-crudini --set $cfg  keystone_authtoken admin_tenant_name \
-    "${ADMIN_TENANT_NAME}"
-crudini --set $cfg keystone_authtoken auth_uri \
-    "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
-crudini --set $cfg keystone_authtoken auth_protocol \
-    "${KEYSTONE_AUTH_PROTOCOL}"
-crudini --set $cfg keystone_authtoken auth_host \
-    "${KEYSTONE_PUBLIC_SERVICE_HOST}"
-crudini --set $cfg keystone_authtoken auth_port \
-    5000
-
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
-crux user-create -n ${ZAQAR_KEYSTONE_USER} \
-    -p ${ZAQAR_KEYSTONE_PASSWORD} \
-    -t ${ADMIN_TENANT_NAME} \
-    -r admin
-
-crux endpoint-create --remove-all -n ${ZAQAR_KEYSTONE_USER} -t messaging \
-    -I "${KEYSTONE_AUTH_PROTOCOL}://${ZAQAR_SERVER_SERVICE_HOST}:8888" \
-    -P "${KEYSTONE_AUTH_PROTOCOL}://${PUBLIC_IP}:8888" \
-    -A "${KEYSTONE_AUTH_PROTOCOL}://${ZAQAR_SERVER_SERVICE_HOST}:8888"
-
-exec /usr/bin/zaqar-server
+exec $CMD $ARGS
diff --git a/docs/minimal-environment-vars.md b/docs/minimal-environment-vars.md
index 8e11781a3a..b106e2e89f 100644
--- a/docs/minimal-environment-vars.md
+++ b/docs/minimal-environment-vars.md
@@ -503,8 +503,4 @@ In order for each service to function, there is a minimum set of required variab
 
 # Zaqar
 
-    KEYSTONE_ADMIN_SERVICE_HOST
-    KEYSTONE_ADMIN_TOKEN
-    PUBLIC_IP
-    ZAQAR_KEYSTONE_PASSWORD
-    ZAQAR_SERVER_SERVICE_HOST
+    None