diff --git a/README.rst b/README.rst index 2bb935a567..52daa1a76f 100644 --- a/README.rst +++ b/README.rst @@ -101,6 +101,7 @@ Kolla provides images to deploy the following OpenStack projects: - `Nova `__ - `Octavia `__ - `Panko `__ +- `Qinling `__ - `Rally `__ - `Sahara `__ - `Searchlight `__ diff --git a/docker/horizon/extend_start.sh b/docker/horizon/extend_start.sh index 7006fafd55..f97171ee05 100644 --- a/docker/horizon/extend_start.sh +++ b/docker/horizon/extend_start.sh @@ -192,6 +192,14 @@ function config_octavia_dashboard { "${SITE_PACKAGES}/openstack_dashboard/local/enabled/_1482_project_load_balancer_panel.py" } +function config_qinling_dashboard { + for file in ${SITE_PACKAGES}/qinling_dashboard/enabled/_*[^__].py; do + config_dashboard "${ENABLE_QINLING}" \ + "${SITE_PACKAGES}/qinling_dashboard/enabled/${file##*/}" \ + "${SITE_PACKAGES}/openstack_dashboard/local/enabled/${file##*/}" + done +} + function config_sahara_dashboard { for file in ${SITE_PACKAGES}/sahara_dashboard/enabled/_*[^__].py; do config_dashboard "${ENABLE_SAHARA}" \ @@ -324,6 +332,7 @@ config_murano_dashboard config_neutron_lbaas config_neutron_vpnaas_dashboard config_octavia_dashboard +config_qinling_dashboard config_sahara_dashboard config_searchlight_ui config_senlin_dashboard diff --git a/docker/qinling/qinling-api/Dockerfile.j2 b/docker/qinling/qinling-api/Dockerfile.j2 new file mode 100644 index 0000000000..046805f4da --- /dev/null +++ b/docker/qinling/qinling-api/Dockerfile.j2 @@ -0,0 +1,19 @@ +FROM {{ namespace }}/{{ image_prefix }}qinling-base:{{ tag }} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" + +{% block qinling_api_header %}{% endblock %} + +{% if install_type == 'binary' %} + +RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \ + && /bin/false + +{% endif %} + +COPY extend_start.sh /usr/local/bin/kolla_qinling_extend_start +RUN chmod 755 /usr/local/bin/kolla_qinling_extend_start + +{% block qinling_api_footer %}{% endblock %} +{% block footer %}{% endblock %} + +USER qinling diff --git a/docker/qinling/qinling-api/extend_start.sh b/docker/qinling/qinling-api/extend_start.sh new file mode 100644 index 0000000000..d5f22dc5f7 --- /dev/null +++ b/docker/qinling/qinling-api/extend_start.sh @@ -0,0 +1,8 @@ +#!/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 + qinling-db-manage upgrade head + exit 0 +fi diff --git a/docker/qinling/qinling-base/Dockerfile.j2 b/docker/qinling/qinling-base/Dockerfile.j2 new file mode 100644 index 0000000000..307fffa25c --- /dev/null +++ b/docker/qinling/qinling-base/Dockerfile.j2 @@ -0,0 +1,36 @@ +FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" + +{% block qinling_base_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +{{ macros.configure_user(name='qinling') }} + +{% if install_type == 'binary' %} + +RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \ + && /bin/false + +{% elif install_type == 'source' %} + +ADD qinling-base-archive /qinling-base-source + +{% set qinling_base_pip_packages = [ + '/qinling' +] %} + +RUN ln -s qinling-base-source/* qinling \ + && {{ macros.install_pip(qinling_base_pip_packages | customizable("pip_packages")) }} \ + && mkdir -p /etc/qinling \ + && cp -r /qinling/etc/* /etc/qinling/ \ + && chown -R qinling: /etc/qinling + +{% endif %} + +COPY extend_start.sh /usr/local/bin/kolla_extend_start + +RUN touch /usr/local/bin/kolla_qinling_extend_start \ + && chmod 755 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_qinling_extend_start + +{% block qinling_base_footer %}{% endblock %} diff --git a/docker/qinling/qinling-base/extend_start.sh b/docker/qinling/qinling-base/extend_start.sh new file mode 100644 index 0000000000..3802bd8785 --- /dev/null +++ b/docker/qinling/qinling-base/extend_start.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [[ ! -d "/var/log/kolla/qinling" ]]; then + mkdir -p /var/log/kolla/qinling +fi +if [[ $(stat -c %a /var/log/kolla/qinling) != "755" ]]; then + chmod 755 /var/log/kolla/qinling +fi + +. /usr/local/bin/kolla_qinling_extend_start diff --git a/docker/qinling/qinling-engine/Dockerfile.j2 b/docker/qinling/qinling-engine/Dockerfile.j2 new file mode 100644 index 0000000000..877822e293 --- /dev/null +++ b/docker/qinling/qinling-engine/Dockerfile.j2 @@ -0,0 +1,16 @@ +FROM {{ namespace }}/{{ image_prefix }}qinling-base:{{ tag }} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" + +{% block qinling_engine_header %}{% endblock %} + +{% if install_type == 'binary' %} + +RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \ + && /bin/false + +{% endif %} + +{% block qinling_engine_footer %}{% endblock %} +{% block footer %}{% endblock %} + +USER qinling diff --git a/kolla/common/config.py b/kolla/common/config.py index f5b0616ff0..c0b6efcde0 100755 --- a/kolla/common/config.py +++ b/kolla/common/config.py @@ -115,6 +115,7 @@ _PROFILE_OPTS = [ 'novajoin', 'octavia', 'panko', + 'qinling', 'rally', 'redis', 'sahara', @@ -450,6 +451,10 @@ SOURCES = { 'type': 'url', 'location': ('$tarballs_base/octavia-dashboard/' 'octavia-dashboard-master.tar.gz')}, + 'horizon-plugin-qinling-dashboard': { + 'type': 'url', + 'location': ('$tarballs_base/qinling-dashboard/' + 'qinling-dashboard-master.tar.gz')}, 'horizon-plugin-sahara-dashboard': { 'type': 'url', 'location': ('$tarballs_base/sahara-dashboard/' @@ -679,6 +684,10 @@ SOURCES = { 'type': 'url', 'location': ('$tarballs_base/placement/' 'placement-master.tar.gz')}, + 'qinling-base': { + 'type': 'url', + 'location': ('$tarballs_base/qinling/' + 'qinling-master.tar.gz')}, 'tempest-plugin-tempest-conf': { 'type': 'url', 'location': ('$tarballs_base/python-tempestconf/' @@ -1188,6 +1197,10 @@ USERS = { 'cyborg-user': { 'uid': 42483, 'gid': 42483, + }, + 'qinling-user': { + 'uid': 42484, + 'gid': 42484, } } diff --git a/kolla/image/build.py b/kolla/image/build.py index 8e7b546e37..eea835d3a2 100755 --- a/kolla/image/build.py +++ b/kolla/image/build.py @@ -91,6 +91,7 @@ SKIPPED_IMAGES = { "monasca-thresh", "nova-mksproxy", "ovsdpdk", + "qinling-base", "searchlight-base", "solum-base", "vmtp", @@ -126,6 +127,7 @@ SKIPPED_IMAGES = { "octavia-base", # There is no qdrouterd package for ubuntu bionic "qdrouterd", + "qinling-base", "searchlight-base", "solum-base", "tacker-base", @@ -167,6 +169,7 @@ SKIPPED_IMAGES = { "nova-mksproxy", "novajoin-base", "octavia-base", + "qinling-base", "searchlight-base", "sensu-base", "solum-base", @@ -199,6 +202,7 @@ SKIPPED_IMAGES = { "monasca-thresh", "nova-mksproxy", "ovsdpdk", + "qinling-base", "searchlight-base", "solum-base", "vmtp", diff --git a/releasenotes/notes/add-qinling-618886c3375eea4a.yaml b/releasenotes/notes/add-qinling-618886c3375eea4a.yaml new file mode 100644 index 0000000000..926bb4ccff --- /dev/null +++ b/releasenotes/notes/add-qinling-618886c3375eea4a.yaml @@ -0,0 +1,5 @@ +--- +features: + - Adds Qinling images. Qinling is an OpenStack project + to provide "Function as a Service". This project aims to + provide a platform to support serverless functions.