From 25cfe7022670f44b130b4b3c341daca44f4f438b Mon Sep 17 00:00:00 2001
From: Lars Kellogg-Stedman <lars@redhat.com>
Date: Thu, 18 Sep 2014 21:41:38 -0400
Subject: [PATCH] added a bunch of glance stuff

---
 docker/glance/build-all                    | 10 ++++
 docker/glance/glance-api/Dockerfile        |  7 +--
 docker/glance/glance-api/start.sh          | 59 +---------------------
 docker/glance/glance-base/Dockerfile       | 12 +++++
 docker/glance/glance-base/config-glance.sh | 55 ++++++++++++++++++++
 docker/glance/glance-registry/Dockerfile   |  7 +--
 docker/glance/glance-registry/start.sh     | 40 +++++++++++++++
 docker/glance/glance.json                  | 56 ++++++++++++++++++++
 8 files changed, 177 insertions(+), 69 deletions(-)
 create mode 100644 docker/glance/build-all
 create mode 100644 docker/glance/glance-base/Dockerfile
 create mode 100644 docker/glance/glance-base/config-glance.sh
 create mode 100644 docker/glance/glance-registry/start.sh
 create mode 100644 docker/glance/glance.json

diff --git a/docker/glance/build-all b/docker/glance/build-all
new file mode 100644
index 0000000000..2de2ae6920
--- /dev/null
+++ b/docker/glance/build-all
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+for image in glance-base glance-api glance-registry; do
+(
+	cd $image
+	docker build -t docker.usersys.redhat.com/larsks/${image}:latest .
+	docker push docker.usersys.redhat.com/larsks/${image}:latest
+)
+done
+
diff --git a/docker/glance/glance-api/Dockerfile b/docker/glance/glance-api/Dockerfile
index d89ad15497..10e713fa58 100644
--- a/docker/glance/glance-api/Dockerfile
+++ b/docker/glance/glance-api/Dockerfile
@@ -1,11 +1,6 @@
-FROM docker.usersys.redhat.com/lhh1/rhel-osp-base
+FROM docker.usersys.redhat.com/larsks/glance-base
 MAINTAINER Lars Kellogg-Stedman <lars@redhat.com>
 
-yum -y install \
-	openstack-utils \
-	openstack-glance \
-	mariadb; yum clean all
-
 ADD ./start.sh /start.sh
 CMD ["/start.sh"]
 
diff --git a/docker/glance/glance-api/start.sh b/docker/glance/glance-api/start.sh
index d297a08ff6..dbd1ae2e96 100644
--- a/docker/glance/glance-api/start.sh
+++ b/docker/glance/glance-api/start.sh
@@ -1,60 +1,5 @@
-#!/bin/bash
+#!/bin/sh
 
-: ${GLANCE_DB_USER:=glance}
-: ${GLANCE_DB_NAME:=glance}
-: ${KEYSTONE_ADMIN_PASSWORD:=redhat}
-
-if ! [ "$KEYSTONE_ADMIN_TOKEN" ]; then
-	echo "*** Missing KEYSTONE_ADMIN_TOKEN."
-	exit 1
-fi
-
-if ! [ "$GLANCE_DB_PASSWORD" ]; then
-	GLANCE_DB_PASSWORD=$(openssl rand -hex 15)
-fi
-
-if ! [ "$GLANCE_KEYSTONE_PASSWORD" ]; then
-	GLANCE_KEYSTONE_PASSWORD=$(openssl rand -hex 15)
-fi
-
-mysql -h ${MARIADBMASTER_PORT_3306_TCP_ADDR} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
-CREATE DATABASE IF NOT EXISTS glance;
-GRANT ALL PRIVILEGES ON glance* TO
-	'glance'@'%' IDENTIFIED BY '${GLANCE_DB_PASSWORD}'
-EOF
-
-for service in api registry; do
-        crudini --set /etc/glance/glance-$service \
-                database \
-                connection \
-                mysql://${GLANCE_DB_USER}:${GLANCE_DB_PASSWORD}@${MARIADBMASTER_PORT_3306_TCP_ADDR}/${GLANCE_DB_NAME}
-
-	crudini --set /etc/glance/glance-$service \
-		keystone_authtoken \
-		admin_password \
-		"$GLANCE_KEYSTONE_PASSWORD"
-
-	crudini --set /etc/glance/glance-$service \
-		keystone_authtoken \
-		auth_uri \
-		"http://${KEYSTONEMASTER_5000_PORT_5000_TCP_ADDR}:5000/"
-
-	for option in auth_host auth_port auth_protocol; do
-		crudini --del /etc/glance/glance-$service \
-			keystone_authtoken \
-			$optoin
-	done
-done
-
-/usr/bin/glance-manage db sync
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="http://${KEYSTONEMASTER_35357_PORT_35357_TCP_ADDR}:35357/v2.0"
-
-/bin/keystone user-create --name admin --pass ${KEYSTONE_ADMIN_PASSWORD}
-/bin/keystone role-create --name admin
-/bin/keystone tenant-create --name admin
-/bin/keystone user-role-add --user admin --role admin --tenant admin
+sh /opt/glance/config-glance.sh api
 
 exec /usr/bin/glance-api
-
diff --git a/docker/glance/glance-base/Dockerfile b/docker/glance/glance-base/Dockerfile
new file mode 100644
index 0000000000..d9967cd7b9
--- /dev/null
+++ b/docker/glance/glance-base/Dockerfile
@@ -0,0 +1,12 @@
+FROM docker.usersys.redhat.com/lhh1/rhel-osp-base
+MAINTAINER Lars Kellogg-Stedman <lars@redhat.com>
+
+RUN yum -y install \
+	openstack-utils \
+	openstack-glance \
+	python-keystoneclient \
+	mariadb; yum clean all
+
+RUN mkdir /opt/glance
+COPY config-glance.sh /opt/glance/config-glance.sh
+
diff --git a/docker/glance/glance-base/config-glance.sh b/docker/glance/glance-base/config-glance.sh
new file mode 100644
index 0000000000..ae15b1a782
--- /dev/null
+++ b/docker/glance/glance-base/config-glance.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+#
+# usage config-glance.sh ( api | registry )
+
+service=$1
+cfg=/etc/glance/glance-${service}.conf
+
+: ${GLANCE_DB_USER:=glance}
+: ${GLANCE_DB_NAME:=glance}
+: ${GLANCE_KEYSTONE_USER:=glance}
+: ${KEYSTONE_AUTH_PROTOCOL:=http}
+: ${ADMIN_TENANT_NAME:=admin}
+
+if ! [ "$GLANCE_DB_PASSWORD" ]; then
+	echo "*** Missing GLANCE_DB_PASSWORD" >&2
+	exit 1
+fi
+
+crudini --del $cfg \
+        DEFAULT \
+        log_file \
+crudini --set $cfg \
+        keystone_authtoken \
+        admin_password \
+        "${GLANCE_KEYSTONE_PASS}"
+
+for option in auth_protocol auth_host auth_Port; do
+	crudini --del $cfg \
+		keystone_authtoken \
+		$option
+done
+
+crudini --set $cfg
+        keystone_authtoken \
+        auth_uri \
+        "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONEMASTER_5000_PORT_5000_TCP_ADDR}:5000/"
+crudini --set $cfg
+        keystone_authtoken \
+        admin_tenant_name \
+       	"${ADMIN_TENANT_NAME}"
+crudini --set $cfg
+        keystone_authtoken \
+        admin_user \
+       	"${GLANCE_KEYSTONE_USER}"
+crudini --set $cfg
+        keystone_authtoken \
+        admin_password \
+        "${GLANCE_KEYSTONE_PASS}"
+
+crudini --set $cfg \
+	database \
+	connection \
+	"mysql://${GLANCE_DB_USER}:${GLANCE_DB_PASSWORD}@${MARIADBMASTER_PORT_3306_TCP_ADDR}:${MARIADBMASTER_PORT_3306_TCP_PORT}/${GLANCE_DB_NAME}"
+
+
diff --git a/docker/glance/glance-registry/Dockerfile b/docker/glance/glance-registry/Dockerfile
index d89ad15497..10e713fa58 100644
--- a/docker/glance/glance-registry/Dockerfile
+++ b/docker/glance/glance-registry/Dockerfile
@@ -1,11 +1,6 @@
-FROM docker.usersys.redhat.com/lhh1/rhel-osp-base
+FROM docker.usersys.redhat.com/larsks/glance-base
 MAINTAINER Lars Kellogg-Stedman <lars@redhat.com>
 
-yum -y install \
-	openstack-utils \
-	openstack-glance \
-	mariadb; yum clean all
-
 ADD ./start.sh /start.sh
 CMD ["/start.sh"]
 
diff --git a/docker/glance/glance-registry/start.sh b/docker/glance/glance-registry/start.sh
new file mode 100644
index 0000000000..4c362fc24e
--- /dev/null
+++ b/docker/glance/glance-registry/start.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+: ${GLANCE_DB_USER:=glance}
+: ${GLANCE_DB_NAME:=glance}
+: ${KEYSTONE_AUTH_PROTOCOL:=http}
+: ${GLANCE_KEYSTONE_USER:=glance}
+: ${ADMIN_TENANT_NAME:=admin}
+
+if ! [ "$KEYSTONE_ADMIN_TOKEN" ]; then
+	echo "*** Missing KEYSTONE_ADMIN_TOKEN" >&2
+	exit 1
+fi
+
+if ! [ "$DB_ROOT_PASSWORD" ]; then
+	echo "*** Missing DB_ROOT_PASSWORD" >&2
+	exit 1
+fi
+
+if ! [ "$GLANCE_DB_PASSWORD" ]; then
+	GLANCE_DB_PASSWORD=$(openssl rand -hex 15)
+	export GLANCE_DB_PASSWORD
+fi
+
+sh /opt/glance/config-glance.sh registry
+
+mysql -h ${MARIADBMASTER_PORT_3306_TCP_ADDR} -u root \
+	-p${DB_ROOT_PASSWORD} mysql <<EOF
+CREATE DATABASE IF NOT EXISTS ${GLANCE_DB_NAME};
+GRANT ALL PRIVILEGES ON glance* TO
+	'${GLANCE_DB_USER}'@'%' IDENTIFIED BY '${GLANCE_DB_PASSWORD}'
+EOF
+
+export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONEMASTER_35357_PORT_35357_TCP_ADDR}:35357/v2.0"
+
+/bin/keystone user-create --name ${GLANCE_KEYSTONE_USER} --pass ${GLANCE_ADMIN_PASSWORD}
+/bin/keystone role-create --name ${GLANCE_KEYSTONE_USER}
+/bin/keystone user-role-add --user ${GLANCE_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME}
+
+exec /usr/bin/glance-registry
diff --git a/docker/glance/glance.json b/docker/glance/glance.json
new file mode 100644
index 0000000000..57abad7b4b
--- /dev/null
+++ b/docker/glance/glance.json
@@ -0,0 +1,56 @@
+{
+  "id": "glance",
+  "desiredState": {
+    "manifest": {
+      "version": "v1beta1",
+      "id": "glance-1",
+      "containers": [
+        {
+          "name": "glance-registry",
+          "image": "docker.usersys.redhat.com/larsks/glance-registry",
+          "ports": [
+            {"containerPort": 9292},
+          ],
+          "env": [
+            {
+              "name": "DB_ROOT_PASSWORD",
+              "value": "password"
+            },
+            {
+              "name": "GLANCE_DB_PASSWORD",
+              "value": "glancedbpassword"
+            },
+            {
+              "name": "KEYSTONE_ADMIN_TOKEN",
+              "value": "ADMINTOKEN"
+            },
+          ]
+        },
+        {
+          "name": "glance-api",
+          "image": "docker.usersys.redhat.com/larsks/glance-api",
+          "ports": [
+            {"containerPort": 9292},
+          ],
+          "env": [
+            {
+              "name": "DB_ROOT_PASSWORD",
+              "value": "password"
+            },
+            {
+              "name": "GLANCE_DB_PASSWORD",
+              "value": "glancedbpassword"
+            },
+            {
+              "name": "KEYSTONE_ADMIN_TOKEN",
+              "value": "ADMINTOKEN"
+            },
+          ]
+        },
+      ]
+    }
+  },
+  "labels": {
+    "name": "keystone-master"
+  }
+}