From 9e420ba27eac22847870553c15b92ff499eef3aa Mon Sep 17 00:00:00 2001
From: Ryan Hallisey <rhalllise@redhat.com>
Date: Mon, 6 Oct 2014 14:13:16 +0000
Subject: [PATCH] Initial setup for nova-controller

Partial-blueprint: kube-nova-container
Change-Id: Ib48e6318ae458bf03510725a220332d1920cbeae
---
 docker/nova-controller/nova-api/Dockerfile    |  8 ++
 docker/nova-controller/nova-api/build         |  1 +
 docker/nova-controller/nova-api/start.sh      | 41 ++++++++
 .../nova-controller/nova-conductor/Dockerfile |  8 ++
 docker/nova-controller/nova-conductor/build   |  1 +
 .../nova-controller/nova-conductor/start.sh   | 41 ++++++++
 docker/nova-controller/nova-controller.json   | 98 +++++++++++++++++++
 .../nova-controller/Dockerfile                |  8 ++
 docker/nova-controller/nova-controller/build  |  1 +
 .../nova-controller/nova-scheduler/Dockerfile |  8 ++
 docker/nova-controller/nova-scheduler/build   |  1 +
 .../nova-controller/nova-scheduler/start.sh   | 41 ++++++++
 12 files changed, 257 insertions(+)
 create mode 100644 docker/nova-controller/nova-api/Dockerfile
 create mode 120000 docker/nova-controller/nova-api/build
 create mode 100644 docker/nova-controller/nova-api/start.sh
 create mode 100644 docker/nova-controller/nova-conductor/Dockerfile
 create mode 120000 docker/nova-controller/nova-conductor/build
 create mode 100644 docker/nova-controller/nova-conductor/start.sh
 create mode 100644 docker/nova-controller/nova-controller.json
 create mode 100644 docker/nova-controller/nova-controller/Dockerfile
 create mode 120000 docker/nova-controller/nova-controller/build
 create mode 100644 docker/nova-controller/nova-scheduler/Dockerfile
 create mode 120000 docker/nova-controller/nova-scheduler/build
 create mode 100644 docker/nova-controller/nova-scheduler/start.sh

diff --git a/docker/nova-controller/nova-api/Dockerfile b/docker/nova-controller/nova-api/Dockerfile
new file mode 100644
index 000000000..d43db5840
--- /dev/null
+++ b/docker/nova-controller/nova-api/Dockerfile
@@ -0,0 +1,8 @@
+FROM kollaglue/fedora-rdo-nova-controller
+MAINTAINER Ryan Hallisey <rhallise@redhat.com>
+
+RUN yum -y install \
+        openstack-nova-api && yum clean all
+
+ADD ./start.sh /start.sh
+CMD ["/start.sh"]
diff --git a/docker/nova-controller/nova-api/build b/docker/nova-controller/nova-api/build
new file mode 120000
index 000000000..43944faa0
--- /dev/null
+++ b/docker/nova-controller/nova-api/build
@@ -0,0 +1 @@
+../../../tools/build-docker-image
\ No newline at end of file
diff --git a/docker/nova-controller/nova-api/start.sh b/docker/nova-controller/nova-api/start.sh
new file mode 100644
index 000000000..ed2c11109
--- /dev/null
+++ b/docker/nova-controller/nova-api/start.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+: ${NOVA_DB_USER:=nova}
+: ${NOVA_DB_NAME:=nova}
+: ${KEYSTONE_AUTH_PROTOCOL:=http}
+: ${NOVA_KEYSTONE_USER:=admin}
+: ${NOVA_ADMIN_PASSWORD:=kolla}
+: ${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 ! [ "$NOVA_DB_PASSWORD" ]; then
+	NOVA_DB_PASSWORD=$(openssl rand -hex 15)
+	export NOVA_DB_PASSWORD
+fi
+
+sh /opt/nova/config-nova.sh api
+
+mysql -h ${MARIADBMASTER_PORT_3306_TCP_ADDR} -u root \
+	-p${DB_ROOT_PASSWORD} mysql <<EOF
+CREATE DATABASE IF NOT EXISTS ${NOVA_DB_NAME};
+GRANT ALL PRIVILEGES ON nova* TO
+	'${NOVA_DB_USER}'@'%' IDENTIFIED BY '${NOVA_DB_PASSWORD}'
+EOF
+
+export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONEMASTER_35357_PORT_35357_TCP_ADDR}:35357/v2.0"
+
+/usr/bin/keystone user-create --name ${NOVA_KEYSTONE_USER} --pass ${NOVA_ADMIN_PASSWORD}
+/usr/bin/keystone role-create --name ${NOVA_KEYSTONE_USER}
+/usr/bin/keystone user-role-add --user ${NOVA_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME}
+
+exec /usr/bin/nova-api
diff --git a/docker/nova-controller/nova-conductor/Dockerfile b/docker/nova-controller/nova-conductor/Dockerfile
new file mode 100644
index 000000000..32d1e71ee
--- /dev/null
+++ b/docker/nova-controller/nova-conductor/Dockerfile
@@ -0,0 +1,8 @@
+FROM kollaglue/fedora-rdo-nova-controller
+MAINTAINER Ryan Hallisey <rhallisey@redhat.com>
+
+RUN yum -y install \
+        openstack-nova-conductor && yum clean all
+
+ADD ./start.sh /start.sh
+CMD ["/start.sh"]
diff --git a/docker/nova-controller/nova-conductor/build b/docker/nova-controller/nova-conductor/build
new file mode 120000
index 000000000..43944faa0
--- /dev/null
+++ b/docker/nova-controller/nova-conductor/build
@@ -0,0 +1 @@
+../../../tools/build-docker-image
\ No newline at end of file
diff --git a/docker/nova-controller/nova-conductor/start.sh b/docker/nova-controller/nova-conductor/start.sh
new file mode 100644
index 000000000..38775c3d8
--- /dev/null
+++ b/docker/nova-controller/nova-conductor/start.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+: ${NOVA_DB_USER:=nova}
+: ${NOVA_DB_NAME:=nova}
+: ${KEYSTONE_AUTH_PROTOCOL:=http}
+: ${NOVA_KEYSTONE_USER:=admin}
+: ${NOVA_ADMIN_PASSWORD:=kolla}
+: ${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 ! [ "$NOVA_DB_PASSWORD" ]; then
+	NOVA_DB_PASSWORD=$(openssl rand -hex 15)
+	export NOVA_DB_PASSWORD
+fi
+
+sh /opt/nova/config-nova.sh conductor
+
+mysql -h ${MARIADBMASTER_PORT_3306_TCP_ADDR} -u root \
+	-p${DB_ROOT_PASSWORD} mysql <<EOF
+CREATE DATABASE IF NOT EXISTS ${NOVA_DB_NAME};
+GRANT ALL PRIVILEGES ON nova* TO
+	'${NOVA_DB_USER}'@'%' IDENTIFIED BY '${NOVA_DB_PASSWORD}'
+EOF
+
+export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONEMASTER_35357_PORT_35357_TCP_ADDR}:35357/v2.0"
+
+/usr/bin/keystone user-create --name ${NOVA_KEYSTONE_USER} --pass ${NOVA_ADMIN_PASSWORD}
+/usr/bin/keystone role-create --name ${NOVA_KEYSTONE_USER}
+/usr/bin/keystone user-role-add --user ${NOVA_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME}
+
+exec /usr/bin/nova-conductor
diff --git a/docker/nova-controller/nova-controller.json b/docker/nova-controller/nova-controller.json
new file mode 100644
index 000000000..5faae5ca9
--- /dev/null
+++ b/docker/nova-controller/nova-controller.json
@@ -0,0 +1,98 @@
+{
+  "id": "nova",
+  "desiredState": {
+    "manifest": {
+      "version": "v1beta1",
+      "id": "nova-1",
+      "containers": [
+        {
+          "name": "nova-controller",
+          "image": "kollaglue/fedora-rdo-nova-controller",
+          "ports": [
+            {"containerPort": 9292}
+          ],
+          "env": [
+            {
+              "name": "DB_ROOT_PASSWORD",
+              "value": "password"
+            },
+            {
+              "name": "NOVA_DB_PASSWORD",
+              "value": "novadbpassword"
+            },
+            {
+              "name": "KEYSTONE_ADMIN_TOKEN",
+              "value": "ADMINTOKEN"
+            }
+          ]
+        },
+        {
+          "name": "nova-conductor",
+          "image": "kollaglue/fedora-rdo-nova-conductor",
+          "ports": [
+            {"containerPort": 9292}
+          ],
+          "env": [
+            {
+              "name": "DB_ROOT_PASSWORD",
+              "value": "password"
+            },
+            {
+              "name": "NOVA_DB_PASSWORD",
+              "value": "novadbpassword"
+            },
+            {
+              "name": "KEYSTONE_ADMIN_TOKEN",
+              "value": "ADMINTOKEN"
+            }
+          ]
+        },
+        {
+          "name": "nova-scheduler",
+          "image": "kollaglue/fedora-rdo-nova-scheduler",
+          "ports": [
+            {"containerPort": 9292}
+          ],
+          "env": [
+            {
+              "name": "DB_ROOT_PASSWORD",
+              "value": "password"
+            },
+            {
+              "name": "NOVA_DB_PASSWORD",
+              "value": "novadbpassword"
+            },
+            {
+              "name": "KEYSTONE_ADMIN_TOKEN",
+              "value": "ADMINTOKEN"
+            }
+          ]
+        },
+        {
+          "name": "nova-api",
+          "image": "kollaglue/fedora-rdo-nova-api",
+          "ports": [
+            {"containerPort": 9292}
+          ],
+          "env": [
+            {
+              "name": "DB_ROOT_PASSWORD",
+              "value": "password"
+            },
+            {
+              "name": "NOVA_DB_PASSWORD",
+              "value": "novadbpassword"
+            },
+            {
+              "name": "KEYSTONE_ADMIN_TOKEN",
+              "value": "ADMINTOKEN"
+            }
+          ]
+        }
+      ]
+    }
+  },
+  "labels": {
+    "name": "nova-controller"
+  }
+}
diff --git a/docker/nova-controller/nova-controller/Dockerfile b/docker/nova-controller/nova-controller/Dockerfile
new file mode 100644
index 000000000..279034824
--- /dev/null
+++ b/docker/nova-controller/nova-controller/Dockerfile
@@ -0,0 +1,8 @@
+FROM kollaglue/fedora-rdo-base
+MAINTAINER Ryan Hallisey <rhallisey@redhat.com>
+
+RUN yum -y install openstack-nova-common \
+    install python-keystoneclient \
+    install python-nova \
+    install python-oslo-messaging \
+    install python-websockify && yum clean all
diff --git a/docker/nova-controller/nova-controller/build b/docker/nova-controller/nova-controller/build
new file mode 120000
index 000000000..43944faa0
--- /dev/null
+++ b/docker/nova-controller/nova-controller/build
@@ -0,0 +1 @@
+../../../tools/build-docker-image
\ No newline at end of file
diff --git a/docker/nova-controller/nova-scheduler/Dockerfile b/docker/nova-controller/nova-scheduler/Dockerfile
new file mode 100644
index 000000000..8b28875fc
--- /dev/null
+++ b/docker/nova-controller/nova-scheduler/Dockerfile
@@ -0,0 +1,8 @@
+FROM kollaglue/fedora-rdo-nova-controller
+MAINTAINER Ryan Hallisey <rhallise@redhat.com>
+
+RUN yum -y install \
+        openstack-nova-scheduler && yum clean all
+
+ADD ./start.sh /start.sh
+CMD ["/start.sh"]
diff --git a/docker/nova-controller/nova-scheduler/build b/docker/nova-controller/nova-scheduler/build
new file mode 120000
index 000000000..43944faa0
--- /dev/null
+++ b/docker/nova-controller/nova-scheduler/build
@@ -0,0 +1 @@
+../../../tools/build-docker-image
\ No newline at end of file
diff --git a/docker/nova-controller/nova-scheduler/start.sh b/docker/nova-controller/nova-scheduler/start.sh
new file mode 100644
index 000000000..8ca13b66e
--- /dev/null
+++ b/docker/nova-controller/nova-scheduler/start.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+: ${NOVA_DB_USER:=nova}
+: ${NOVA_DB_NAME:=nova}
+: ${KEYSTONE_AUTH_PROTOCOL:=http}
+: ${NOVA_KEYSTONE_USER:=admin}
+: ${NOVA_ADMIN_PASSWORD:=kolla}
+: ${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 ! [ "$NOVA_DB_PASSWORD" ]; then
+	NOVA_DB_PASSWORD=$(openssl rand -hex 15)
+	export NOVA_DB_PASSWORD
+fi
+
+sh /opt/nova/config-nova.sh scheduler
+
+mysql -h ${MARIADBMASTER_PORT_3306_TCP_ADDR} -u root \
+	-p${DB_ROOT_PASSWORD} mysql <<EOF
+CREATE DATABASE IF NOT EXISTS ${NOVA_DB_NAME};
+GRANT ALL PRIVILEGES ON nova* TO
+	'${NOVA_DB_USER}'@'%' IDENTIFIED BY '${NOVA_DB_PASSWORD}'
+EOF
+
+export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONEMASTER_35357_PORT_35357_TCP_ADDR}:35357/v2.0"
+
+/usr/bin/keystone user-create --name ${NOVA_KEYSTONE_USER} --pass ${NOVA_ADMIN_PASSWORD}
+/usr/bin/keystone role-create --name ${NOVA_KEYSTONE_USER}
+/usr/bin/keystone user-role-add --user ${NOVA_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME}
+
+exec /usr/bin/nova-scheduler
-- 
GitLab