aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docker/ec2-api/Dockerfile.j249
-rw-r--r--docker/ec2-api/extend_start.sh15
-rwxr-xr-xkolla/common/config.py9
-rw-r--r--releasenotes/notes/add-ec2-api-e7d3e60173e8a3d8.yaml3
-rw-r--r--tests/test_build.py2
5 files changed, 78 insertions, 0 deletions
diff --git a/docker/ec2-api/Dockerfile.j2 b/docker/ec2-api/Dockerfile.j2
new file mode 100644
index 000000000..c461af526
--- /dev/null
+++ b/docker/ec2-api/Dockerfile.j2
@@ -0,0 +1,49 @@
+FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
+
+{% block ec2_api_header %}{% endblock %}
+
+{% import "macros.j2" as macros with context %}
+
+{{ macros.configure_user(name='ec2api') }}
+
+{% if install_type == 'binary' %}
+
+ {% if base_distro in ['centos', 'oraclelinux', 'rhel'] %}
+ {% set ec2_api_packages = [
+ 'openstack-ec2-api'
+ ] %}
+
+ {% elif base_distro in ['debian', 'ubuntu'] %}
+
+RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
+ && /bin/false
+
+ {% endif %}
+
+{{ macros.install_packages(ec2_api_packages | customizable("packages")) }}
+
+{% elif install_type == 'source' %}
+
+ADD ec2-api-archive /ec2-api-source
+
+{% set ec2_api_pip_packages = [
+ '/ec2-api'
+] %}
+
+RUN ln -s ec2-api-source/* ec2-api \
+ && {{ macros.install_pip(ec2_api_pip_packages | customizable("pip_packages")) }} \
+ && mkdir -p /etc/ec2api \
+ && cp -r /ec2-api/etc/ec2api/* /etc/ec2api \
+ && chown -R ec2api: /etc/ec2api
+
+{% endif %}
+
+COPY extend_start.sh /usr/local/bin/kolla_extend_start
+
+RUN chmod 755 /usr/local/bin/kolla_extend_start
+
+{% block ec2_api_footer %}{% endblock %}
+{% block footer %}{% endblock %}
+
+USER ec2api
diff --git a/docker/ec2-api/extend_start.sh b/docker/ec2-api/extend_start.sh
new file mode 100644
index 000000000..2ecd20b20
--- /dev/null
+++ b/docker/ec2-api/extend_start.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+if [[ ! -d "/var/log/kolla/ec2-api" ]]; then
+ mkdir -p /var/log/kolla/ec2-api
+fi
+if [[ $(stat -c %a /var/log/kolla/ec2-api) != "755" ]]; then
+ chmod 755 /var/log/kolla/ec2-api
+fi
+
+# 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
+ ec2-api-manage db_sync
+ exit 0
+fi
diff --git a/kolla/common/config.py b/kolla/common/config.py
index 90fbc2777..5c8ba3f33 100755
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -97,6 +97,7 @@ _PROFILE_OPTS = [
'congress',
'designate',
'dragonflow',
+ 'ec2-api',
'freezer',
'gnocchi',
'influxdb',
@@ -309,6 +310,10 @@ SOURCES = {
'type': 'url',
'location': ('$tarballs_base/dragonflow/'
'dragonflow-master.tar.gz')},
+ 'ec2-api': {
+ 'type': 'url',
+ 'location': ('$tarballs_base/ec2-api/'
+ 'ec2-api-master.tar.gz')},
'freezer-api': {
'type': 'url',
'location': ('$tarballs_base/freezer-api/'
@@ -853,6 +858,10 @@ USERS = {
'qdrouterd-user': {
'uid': 42465,
'gid': 42465,
+ },
+ 'ec2api-user': {
+ 'uid': 42466,
+ 'gid': 42466,
}
}
diff --git a/releasenotes/notes/add-ec2-api-e7d3e60173e8a3d8.yaml b/releasenotes/notes/add-ec2-api-e7d3e60173e8a3d8.yaml
new file mode 100644
index 000000000..c5438be6e
--- /dev/null
+++ b/releasenotes/notes/add-ec2-api-e7d3e60173e8a3d8.yaml
@@ -0,0 +1,3 @@
+---
+features:
+ - add image for EC2-API service
diff --git a/tests/test_build.py b/tests/test_build.py
index 8e7c80d27..42f8aa95a 100644
--- a/tests/test_build.py
+++ b/tests/test_build.py
@@ -117,6 +117,7 @@ class BuildTestUbuntuBinary(BuildTest, base.BaseTestCase):
"cloudkitty-base",
"congress-base",
"dragonflow-base",
+ "ec2-api",
"freezer-base",
"heat-all",
"karbor-base",
@@ -160,6 +161,7 @@ class BuildTestDebianBinary(BuildTest, base.BaseTestCase):
"cloudkitty-base",
"congress-base",
"dragonflow-base",
+ "ec2-api",
"freezer-base",
"heat-all",
"karbor-base",