aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEduardo Gonzalez <dabarren@gmail.com>2018-10-26 16:02:21 +0200
committerLee Yarwood <lyarwood@redhat.com>2018-12-19 14:41:20 +0000
commit2f657085c67302ab54dcb64b335a2f3732ba4de4 (patch)
tree4a15dda81596d5a8238ca464d4343ba892aae1eb
parent772b52572289832de68c75adea458dc88aedfec9 (diff)
downloadkolla-2f657085c67302ab54dcb64b335a2f3732ba4de4.tar.gz
kolla-2f657085c67302ab54dcb64b335a2f3732ba4de4.zip
Split placement-api from nova
This change breaks out the Placement service from Nova ahead of it's removal from the project later in Stein. For the time being the original Nova Placement images are left in place but they will be removed later in the cycle once the Placement code is removed from the Nova project by the following change: https://review.openstack.org/#/c/618215/ Co-Authored-By: Lee Yarwood <lyarwood@redhat.com> Change-Id: I2bf6f5bf45b76e6900f41c21e9af30c69dc6e9c0
-rw-r--r--docker/placement/placement-api/Dockerfile.j262
-rw-r--r--docker/placement/placement-api/extend_start.sh18
-rw-r--r--docker/placement/placement-base/Dockerfile.j247
-rw-r--r--docker/placement/placement-base/extend_start.sh12
-rwxr-xr-xkolla/common/config.py8
-rwxr-xr-xkolla/image/build.py1
-rw-r--r--releasenotes/notes/split-placement-from-nova-27b7ea2359c2d3ae.yaml7
7 files changed, 155 insertions, 0 deletions
diff --git a/docker/placement/placement-api/Dockerfile.j2 b/docker/placement/placement-api/Dockerfile.j2
new file mode 100644
index 000000000..0ef86d6b2
--- /dev/null
+++ b/docker/placement/placement-api/Dockerfile.j2
@@ -0,0 +1,62 @@
+FROM {{ namespace }}/{{ image_prefix }}placement-base:{{ tag }}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
+
+{% block placement_api_header %}{% endblock %}
+
+{% import "macros.j2" as macros with context %}
+
+{% if install_type == 'binary' %}
+ {% if base_distro in ['centos', 'oraclelinux', 'rhel'] %}
+
+ {% set placement_api_packages = [
+ 'httpd',
+ 'mod_ssl',
+ 'mod_wsgi',
+ 'openstack-placement-api'
+ ] %}
+
+{{ macros.install_packages(placement_api_packages | customizable("packages")) }}
+RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
+ && sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
+
+ {% elif base_distro in ['debian', 'ubuntu'] %}
+
+ {% set placement_api_packages = [
+ 'apache2',
+ 'libapache2-mod-wsgi',
+ 'placement-api'
+ ] %}
+
+{{ macros.install_packages(placement_api_packages | customizable("packages")) }}
+RUN truncate -s 0 /etc/apache2/ports.conf
+
+ {% endif %}
+{% elif install_type == 'source' %}
+ {% if base_distro in ['centos', 'oraclelinux', 'rhel'] %}
+
+ {% set placement_api_packages = [
+ 'httpd',
+ 'mod_ssl',
+ 'mod_wsgi'
+ ] %}
+
+{{ macros.install_packages(placement_api_packages | customizable("packages")) }}
+RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
+ && sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
+ {% elif base_distro in ['debian', 'ubuntu'] %}
+
+ {% set placement_api_packages = [
+ 'apache2',
+ 'libapache2-mod-wsgi'
+ ] %}
+
+{{ macros.install_packages(placement_api_packages | customizable("packages")) }}
+RUN truncate -s 0 /etc/apache2/ports.conf
+
+ {% endif %}
+{% endif %}
+
+COPY extend_start.sh /usr/local/bin/kolla_placement_extend_start
+
+{% block placement_api_footer %}{% endblock %}
+{% block footer %}{% endblock %}
diff --git a/docker/placement/placement-api/extend_start.sh b/docker/placement/placement-api/extend_start.sh
new file mode 100644
index 000000000..a8e9635d1
--- /dev/null
+++ b/docker/placement/placement-api/extend_start.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# 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
+ placement-manage db sync
+ exit 0
+fi
+
+# NOTE(pbourke): httpd will not clean up after itself in some cases which
+# results in the container not being able to restart. (bug #1489676, 1557036)
+if [[ "${KOLLA_BASE_DISTRO}" =~ debian|ubuntu ]]; then
+ # Loading Apache2 ENV variables
+ . /etc/apache2/envvars
+ rm -rf /var/run/apache2/*
+else
+ rm -rf /var/run/httpd/* /run/httpd/* /tmp/httpd*
+fi
diff --git a/docker/placement/placement-base/Dockerfile.j2 b/docker/placement/placement-base/Dockerfile.j2
new file mode 100644
index 000000000..e108944b4
--- /dev/null
+++ b/docker/placement/placement-base/Dockerfile.j2
@@ -0,0 +1,47 @@
+FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
+
+{% block placement_base_header %}{% endblock %}
+
+{% import "macros.j2" as macros with context %}
+
+{{ macros.configure_user(name='placement') }}
+
+{% if install_type == 'binary' %}
+ {% if base_distro in ['centos', 'oraclelinux', 'rhel'] %}
+
+ {% set placement_base_packages = [
+ 'openstack-placement-common',
+ ] %}
+
+ {% elif base_distro in ['debian', 'ubuntu'] %}
+
+ {% set placement_base_packages = [] %}
+
+ {% endif %}
+
+{{ macros.install_packages(placement_base_packages | customizable("packages")) }}
+
+{% elif install_type == 'source' %}
+
+ADD placement-base-archive /placement-base-source
+ADD plugins-archive /
+
+{% set placement_base_pip_packages = [
+ '/placement'
+] %}
+
+RUN ln -s placement-base-source/* placement \
+ && {{ macros.install_pip(placement_base_pip_packages | customizable("pip_packages")) }} \
+ && mkdir -p /etc/placement/ \
+ && cp -r /placement/etc/placement/* /etc/placement/ \
+ && chown -R placement: /etc/placement/
+
+{% endif %}
+
+COPY extend_start.sh /usr/local/bin/kolla_extend_start
+
+RUN touch /usr/local/bin/kolla_placement_extend_start \
+ && chmod 755 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_placement_extend_start
+
+{% block placement_base_footer %}{% endblock %}
diff --git a/docker/placement/placement-base/extend_start.sh b/docker/placement/placement-base/extend_start.sh
new file mode 100644
index 000000000..68a7b01c6
--- /dev/null
+++ b/docker/placement/placement-base/extend_start.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+if [[ ! -d "/var/log/kolla/placement" ]]; then
+ mkdir -p /var/log/kolla/placement
+ touch /var/log/kolla/placement/placement-api.log
+fi
+if [[ $(stat -c %a /var/log/kolla/placement) != "755" ]]; then
+ chmod 755 /var/log/kolla/placement
+ chmod 644 /var/log/kolla/placement/placement-api.log
+fi
+
+. /usr/local/bin/kolla_placement_extend_start
diff --git a/kolla/common/config.py b/kolla/common/config.py
index 16a790197..5ba95bd2a 100755
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -657,6 +657,10 @@ SOURCES = {
'type': 'url',
'location': ('$tarballs_base/panko/'
'panko-master.tar.gz')},
+ 'placement-base': {
+ 'type': 'url',
+ 'location': ('$tarballs_base/placement/'
+ 'placement-master.tar.gz')},
'tempest-plugin-tempest-conf': {
'type': 'url',
'location': ('$tarballs_base/python-tempestconf/'
@@ -1135,6 +1139,10 @@ USERS = {
'uid': 42481, # unused user, but we need the group for thales hsm
'gid': 42481,
},
+ 'placement-user': {
+ 'uid': 42482,
+ 'gid': 42482,
+ }
}
diff --git a/kolla/image/build.py b/kolla/image/build.py
index a2c1ecc86..d11b098b7 100755
--- a/kolla/image/build.py
+++ b/kolla/image/build.py
@@ -121,6 +121,7 @@ SKIPPED_IMAGES = {
"nova-mksproxy",
"novajoin-base",
"octavia-base",
+ "placement-base",
# There is no qdrouterd package for ubuntu bionic
"qdrouterd",
"searchlight-base",
diff --git a/releasenotes/notes/split-placement-from-nova-27b7ea2359c2d3ae.yaml b/releasenotes/notes/split-placement-from-nova-27b7ea2359c2d3ae.yaml
new file mode 100644
index 000000000..1281537c2
--- /dev/null
+++ b/releasenotes/notes/split-placement-from-nova-27b7ea2359c2d3ae.yaml
@@ -0,0 +1,7 @@
+---
+features:
+ - |
+ Nova placement API has been moved into its own images.
+upgrade:
+ - |
+ nova-placement-api image will be renamed to placement-api.