summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Hallisey <rhallise@redhat.com>2014-11-19 18:14:42 -0500
committerRyan Hallisey <rhallise@redhat.com>2014-11-24 17:09:29 -0500
commitfdb5c77a9051f580cb02f868d83254af0385b39e (patch)
treeafbdb5b206ffa4aba4c34e7d7b2d53ad56984489
parent1520f41a653b947817bbe2ca9c8910fb11ed538b (diff)
downloadkolla-fdb5c77a9051f580cb02f868d83254af0385b39e.tar.gz
kolla-fdb5c77a9051f580cb02f868d83254af0385b39e.zip
Horizon container implementation
Horizon requires that Nova, Neutron(Nova Network), Glance, and Keystone are running. Therefore, the container needs to check for the availablity of each service on startup. The config file is not a .ini file, but rather a python file so it requires using sed instead of crudini. Change-Id: I5ed14514881fe9aef688ca08bcb94881ef5b25cb
-rw-r--r--docker/fedora-rdo-base/kolla-common.sh28
-rw-r--r--docker/horizon/Dockerfile11
l---------docker/horizon/build1
-rwxr-xr-xdocker/horizon/start.sh23
-rw-r--r--k8s/pod/horizon-pod.yaml13
-rw-r--r--k8s/service/horizon-service.yaml7
-rwxr-xr-xtools/start-all-pods1
-rwxr-xr-xtools/start-all-services1
8 files changed, 85 insertions, 0 deletions
diff --git a/docker/fedora-rdo-base/kolla-common.sh b/docker/fedora-rdo-base/kolla-common.sh
index b625588b3..b917ebd68 100644
--- a/docker/fedora-rdo-base/kolla-common.sh
+++ b/docker/fedora-rdo-base/kolla-common.sh
@@ -44,6 +44,34 @@ check_for_keystone() {
echo "keystone is active @ $KEYSTONE_URL"
}
+# Exit unless we receive a successful response from the Nova API.
+check_for_nova() {
+ check_required_vars NOVA_API_SERVICE_HOST
+
+ NOVA_API_URL="http://${NOVA_API_SERVICE_HOST}:8774"
+
+ curl -sf -o /dev/null "$NOVA_API_URL" || {
+ echo "ERROR: nova is not available @ $NOVA_API_URL" >&2
+ exit 1
+ }
+
+ echo "nova is active @ $NOVA_API_URL"
+}
+
+# Exit unless we receive a successful response from the Neutron API.
+check_for_neutron() {
+ check_required_vars NEUTRON_API_SERVICE_HOST
+
+ NEUTRON_API_URL="http://${NEUTRON_SERVER_SERVICE_HOST}:9696"
+
+ curl -sf -o /dev/null "$NEUTRON_API_URL" || {
+ echo "ERROR: neutron is not available @ $NEUTRON_API_URL" >&2
+ exit 1
+ }
+
+ echo "neutron is active @ $NEUTRON_API_URL"
+}
+
# Exit unless we receive a successful response from the database server.
check_for_db() {
check_required_vars MARIADB_SERVICE_HOST DB_ROOT_PASSWORD
diff --git a/docker/horizon/Dockerfile b/docker/horizon/Dockerfile
new file mode 100644
index 000000000..71785aad0
--- /dev/null
+++ b/docker/horizon/Dockerfile
@@ -0,0 +1,11 @@
+FROM kollaglue/fedora-rdo-base
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+RUN yum -y install \
+ openstack-dashboard && yum clean all
+
+EXPOSE 80
+
+ADD ./start.sh /start.sh
+
+CMD ["/start.sh"]
diff --git a/docker/horizon/build b/docker/horizon/build
new file mode 120000
index 000000000..d2accf7d3
--- /dev/null
+++ b/docker/horizon/build
@@ -0,0 +1 @@
+../../tools/build-docker-image \ No newline at end of file
diff --git a/docker/horizon/start.sh b/docker/horizon/start.sh
new file mode 100755
index 000000000..d51cac655
--- /dev/null
+++ b/docker/horizon/start.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -e
+
+: ${HORIZON_KEYSTONE_USER:=horizon}
+
+. /opt/kolla/kolla-common.sh
+
+check_required_vars HORIZON_KEYSTONE_USER
+
+check_for_keystone
+check_for_glance
+check_for_nova
+check_for_neutron
+
+cfg=/etc/openstack-dashboard/local_settings
+
+sed -ri 's/#ALLOWED_HOSTS = \['\''horizon.example.com'\'', '\''localhost'\''\]/ALLOWED_HOSTS = \['\''*'\'', \]/' /etc/openstack-dashboard/local_settings
+
+sed -ri 's/OPENSTACK_KEYSTONE_URL = \"http:\/\/%s:5000\/v2.0\" % OPENSTACK_HOST/OPENSTACK_KEYSTONE_URL = \"http:\/\/'"$KEYSTONE_PUBLIC_SERVICE_HOST"':5000\/v2.0\"/' /etc/openstack-dashboard/local_settings
+
+sed -ri 's/OPENSTACK_HOST = \"127.0.0.1\"/OPENSTACK_HOST = \"'"$KEYSTONE_PUBLIC_SERVICE_HOST"'\" /' /etc/openstack-dashboard/local_settings
+
+/bin/keystone role-create --name ${HORIZON_KEYSTONE_USER}
diff --git a/k8s/pod/horizon-pod.yaml b/k8s/pod/horizon-pod.yaml
new file mode 100644
index 000000000..a7f64c22e
--- /dev/null
+++ b/k8s/pod/horizon-pod.yaml
@@ -0,0 +1,13 @@
+desiredState:
+ manifest:
+ containers:
+ - env:
+ image: kollaglue/fedora-rdo-horizon
+ name: horizon
+ ports:
+ - containerPort: 80
+ id: horizon-1
+ version: v1beta1
+id: horizon
+labels:
+ name: horizon
diff --git a/k8s/service/horizon-service.yaml b/k8s/service/horizon-service.yaml
new file mode 100644
index 000000000..7b03b5684
--- /dev/null
+++ b/k8s/service/horizon-service.yaml
@@ -0,0 +1,7 @@
+apiVersion: v1beta1
+containerPort: 80
+id: horizon
+kind: Service
+port: 80
+selector:
+ name: horizon
diff --git a/tools/start-all-pods b/tools/start-all-pods
index 3d7df36aa..f22e85c15 100755
--- a/tools/start-all-pods
+++ b/tools/start-all-pods
@@ -14,6 +14,7 @@ heat
mongodb
ceilometer-controller
zaqar
+horizon
'
for pod in $pods; do
diff --git a/tools/start-all-services b/tools/start-all-services
index c2875bb00..a78e9b186 100755
--- a/tools/start-all-services
+++ b/tools/start-all-services
@@ -18,6 +18,7 @@ rabbitmq
neutron-server
heat-api
zaqar-server
+horizon
'
for svc in $services; do