diff --git a/README.rst b/README.rst index 46c46159d1..9f7d4c9af3 100644 --- a/README.rst +++ b/README.rst @@ -95,6 +95,7 @@ Kolla provides images to deploy the following OpenStack projects: - `Octavia `__ - `Sahara `__ - `Senlin `__ +- Skyline (`APIServer `__ and `Console `__) - `Solum `__ - `Swift `__ - `Tacker `__ diff --git a/doc/source/matrix_aarch64.csv b/doc/source/matrix_aarch64.csv index fbd5fd1364..406fc2854d 100644 --- a/doc/source/matrix_aarch64.csv +++ b/doc/source/matrix_aarch64.csv @@ -51,6 +51,7 @@ rabbitmq,C,C,C redis,C,C,C sahara,C,C,C senlin,C,C,C +skyline,C,C,C solum,C,C,C swift,C,C,C tacker,C,C,C diff --git a/doc/source/matrix_x86.csv b/doc/source/matrix_x86.csv index 6b9df633c7..8be1e55676 100644 --- a/doc/source/matrix_x86.csv +++ b/doc/source/matrix_x86.csv @@ -52,6 +52,7 @@ rabbitmq,T,T,T redis,T,C,C sahara,C,C,C senlin,C,C,C +skyline,C,C,C solum,C,C,C swift,T,T,C tacker,T,C,C diff --git a/docker/skyline/skyline-apiserver/Dockerfile.j2 b/docker/skyline/skyline-apiserver/Dockerfile.j2 new file mode 100644 index 0000000000..eb59d59de4 --- /dev/null +++ b/docker/skyline/skyline-apiserver/Dockerfile.j2 @@ -0,0 +1,25 @@ +FROM {{ namespace }}/{{ image_prefix }}skyline-base:{{ tag }} +{% block labels %} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" +{% endblock %} + +{% block skyline_apiserver_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +ADD skyline-apiserver-archive /skyline-apiserver-source + +{% set skyline_apiserver_pip_packages = [ + '/skyline-apiserver' +] %} + +COPY extend_start.sh /usr/local/bin/kolla_skyline_extend_start + +RUN ln -s skyline-apiserver-source/* skyline-apiserver \ + && {{ macros.install_pip(skyline_apiserver_pip_packages | customizable("pip_packages")) }} \ + && chmod 644 /usr/local/bin/kolla_skyline_extend_start + +{% block skyline_apiserver_footer %}{% endblock %} +{% block footer %}{% endblock %} + +USER skyline diff --git a/docker/skyline/skyline-apiserver/extend_start.sh b/docker/skyline/skyline-apiserver/extend_start.sh new file mode 100644 index 0000000000..e762106c02 --- /dev/null +++ b/docker/skyline/skyline-apiserver/extend_start.sh @@ -0,0 +1,11 @@ +#!/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 + SITE_PACKAGES="/var/lib/kolla/venv/lib/python${KOLLA_DISTRO_PYTHON_VERSION}/site-packages" + pushd ${SITE_PACKAGES}/skyline_apiserver/db/alembic + alembic upgrade head + popd + exit 0 +fi diff --git a/docker/skyline/skyline-base/Dockerfile.j2 b/docker/skyline/skyline-base/Dockerfile.j2 new file mode 100644 index 0000000000..23ae132235 --- /dev/null +++ b/docker/skyline/skyline-base/Dockerfile.j2 @@ -0,0 +1,17 @@ +FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }} +{% block labels %} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" +{% endblock %} + +{% block skyline_base_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +{{ macros.configure_user(name='skyline') }} + +COPY extend_start.sh /usr/local/bin/kolla_extend_start + +RUN touch /usr/local/bin/kolla_skyline_extend_start \ + && chmod 644 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_skyline_extend_start + +{% block skyline_base_footer %}{% endblock %} diff --git a/docker/skyline/skyline-base/extend_start.sh b/docker/skyline/skyline-base/extend_start.sh new file mode 100644 index 0000000000..34362ad044 --- /dev/null +++ b/docker/skyline/skyline-base/extend_start.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +if [[ ! -d "/var/log/kolla/skyline" ]]; then + mkdir -p /var/log/kolla/skyline +fi +if [[ $(stat -c %U:%G /var/log/kolla/skyline) != "skyline:kolla" ]]; then + chown skyline:kolla /var/log/kolla/skyline +fi +if [[ $(stat -c %a /var/log/kolla/skyline) != "755" ]]; then + chmod 755 /var/log/kolla/skyline +fi + +if [[ ! -d "/var/lib/skyline" ]]; then + mkdir -p /var/lib/skyline +fi +if [[ $(stat -c %U:%G /var/lib/skyline) != "skyline:kolla" ]]; then + chown skyline:kolla /var/lib/skyline +fi +if [[ $(stat -c %a /var/lib/skyline) != "755" ]]; then + chmod 755 /var/lib/skyline +fi + +. /usr/local/bin/kolla_skyline_extend_start diff --git a/docker/skyline/skyline-console/Dockerfile.j2 b/docker/skyline/skyline-console/Dockerfile.j2 new file mode 100644 index 0000000000..0af0f4b245 --- /dev/null +++ b/docker/skyline/skyline-console/Dockerfile.j2 @@ -0,0 +1,28 @@ +FROM {{ namespace }}/{{ image_prefix }}skyline-base:{{ tag }} +{% block labels %} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" +{% endblock %} + +{% block skyline_console_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +{% set skyline_console_packages = [ + 'nginx' +] %} + +{{ macros.install_packages(skyline_console_packages | customizable("packages")) }} + +ADD skyline-console-archive /skyline-console-source + +{% set skyline_console_pip_packages = [ + '/skyline-console' +] %} + +RUN ln -s skyline-console-source/* skyline-console \ + && {{ macros.install_pip(skyline_console_pip_packages | customizable("pip_packages")) }} + +{% block skyline_console_footer %}{% endblock %} +{% block footer %}{% endblock %} + +USER root diff --git a/kolla/common/sources.py b/kolla/common/sources.py index c8a3648e0a..e4397a200b 100644 --- a/kolla/common/sources.py +++ b/kolla/common/sources.py @@ -296,6 +296,14 @@ SOURCES = { 'type': 'url', 'location': ('$tarballs_base/openstack/senlin/' 'senlin-${openstack_branch}.tar.gz')}, + 'skyline-apiserver': { + 'type': 'url', + 'location': ('$tarballs_base/openstack/skyline-apiserver/' + 'skyline-apiserver-${openstack_branch}.tar.gz')}, + 'skyline-console': { + 'type': 'url', + 'location': ('$tarballs_base/openstack/skyline-console/' + 'skyline-console-${openstack_branch}.tar.gz')}, 'solum-base': { 'type': 'url', 'location': ('$tarballs_base/openstack/solum/' diff --git a/kolla/common/users.py b/kolla/common/users.py index fea97743de..3f7686ef81 100644 --- a/kolla/common/users.py +++ b/kolla/common/users.py @@ -333,5 +333,9 @@ USERS = { 'opensearch-user': { 'uid': 42490, 'gid': 42490, + }, + 'skyline-user': { + 'uid': 42491, + 'gid': 42491, } } diff --git a/releasenotes/notes/add-skyline-200d1bca7907b00c.yaml b/releasenotes/notes/add-skyline-200d1bca7907b00c.yaml new file mode 100644 index 0000000000..91147eb8fe --- /dev/null +++ b/releasenotes/notes/add-skyline-200d1bca7907b00c.yaml @@ -0,0 +1,4 @@ +--- +features: + - Add skyline(base, apiserver and console) Dockerfile. + Skyline is an OpenStack dashboard optimized by UI and UX. diff --git a/roles/kolla-build-config/defaults/main.yml b/roles/kolla-build-config/defaults/main.yml index 5f8cdb0611..bbfc0bae81 100644 --- a/roles/kolla-build-config/defaults/main.yml +++ b/roles/kolla-build-config/defaults/main.yml @@ -59,6 +59,7 @@ kolla_build_sources: openstack/octavia: octavia-base openstack/sahara: sahara-base openstack/senlin: senlin-base + openstack/skyline: skyline-base openstack/solum: solum-base swift-base: openstack/swift openstack/tacker: