From 0e5deba69102d45d33bc43328dfa2410e6d9f9d9 Mon Sep 17 00:00:00 2001 From: Michal Nasiadka Date: Thu, 18 Jun 2026 17:16:26 +0200 Subject: [PATCH 1/9] kolla-build: normalize mtime in archive creation The reset_userinfo tar filter used when creating plugins and additions archives normalized uid/gid but left mtime untouched. Since archives are created after set_time() has already run, and the default working directory is a fresh temp dir per invocation, the embedded directory mtime was always the current time. Docker computes a content checksum for ADD instructions, so a different mtime in the tar produced a different checksum on every run. Fix by setting tarinfo.mtime = 0 in both reset_userinfo filters and calling os.utime(arc_path, (0, 0)) on the archive file after creation, making the archives binary-identical across runs for the same content. Change-Id: I205dab2c4a74fb9e3cb15c421d5c025849f5632a Signed-off-by: Michal Nasiadka --- kolla/image/tasks.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kolla/image/tasks.py b/kolla/image/tasks.py index 93ba918359..f8d07e2212 100644 --- a/kolla/image/tasks.py +++ b/kolla/image/tasks.py @@ -201,6 +201,7 @@ def process_source(self, image, source): def reset_userinfo(tarinfo): tarinfo.uid = tarinfo.gid = 0 tarinfo.uname = tarinfo.gname = "root" + tarinfo.mtime = 0 return tarinfo if source.get('type') == 'url': @@ -355,10 +356,12 @@ def make_an_archive(items, arcname, item_child_path=None): def reset_userinfo(tarinfo): tarinfo.uid = tarinfo.gid = 0 tarinfo.uname = tarinfo.gname = "root" + tarinfo.mtime = 0 return tarinfo with tarfile.open(arc_path, 'w') as tar: tar.add(items_path, arcname=arcname, filter=reset_userinfo) + os.utime(arc_path, (0, 0)) return len(os.listdir(items_path)) self.logger.debug('Processing') From a1d8036c5cb7731a5488cbdc695eb3c0a27bf4cb Mon Sep 17 00:00:00 2001 From: "Dr. Jens Harbott" Date: Fri, 26 Jun 2026 12:00:49 +0200 Subject: [PATCH 2/9] Adopt an AI policy From the experience we have made so far, a lot of AI based contributions tend to cause more work rather than they bring benefit. So we caution people to avoid this when possible. The wording of the policy was adapted from the Zuul project [0]. [0] https://review.opendev.org/c/zuul/zuul/+/993998 Co-Authored-By: James E. Blair Signed-off-by: Dr. Jens Harbott Change-Id: I5fcd5bea33c4f4c87b6f6cf0a96514e8d2da3af3 --- README.rst | 6 ++-- doc/source/contributor/contributing.rst | 41 +++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 3170ec7265..034c15f883 100644 --- a/README.rst +++ b/README.rst @@ -152,15 +152,17 @@ Getting Involved Need a feature? Find a bug? Let us know! Contributions are much appreciated and should follow the standard `Gerrit -workflow `__. +workflow `__. -- We communicate using the #openstack-kolla irc channel. +- We communicate using the #openstack-kolla IRC channel on OFTC. - File bugs, blueprints, track releases, etc on `Launchpad `__. - Attend weekly `meetings `__. - Contribute `code `__. +- Please respect our `AI policy + `__. Notices ======= diff --git a/doc/source/contributor/contributing.rst b/doc/source/contributor/contributing.rst index 821d6ab882..d24c3b71f6 100644 --- a/doc/source/contributor/contributing.rst +++ b/doc/source/contributor/contributing.rst @@ -18,6 +18,47 @@ The source repository for this project can be found at: https://opendev.org/openstack/kolla +.. _aicontent: + +AI-Generated Content +~~~~~~~~~~~~~~~~~~~~ + +In general, please do not submit AI generated content to the Kolla +project, but some exceptions apply. + +The OpenInfra foundation has created a policy for AI Generated content +at https://openinfra.org/legal/ai-policy which provides useful +background to the Kolla project's policy, but the Kolla project policy +differs somewhat. + +As a free software project, we are concerned with the copyright +ownership of the project's source code. Because most commercially +available LLMs are not able to indicate whether their output may +include training data incompatible with Kolla's licences, accepting +substantial contributions generated by them increases the risk to the +project. And because LLM-generated output is not considered +copyrightable in the United States and other regions, that further +increases the risk to the project. + +In many cases, the code and documentation output from LLMs is not of +sufficient quality for easy incorporation into Kolla. A community of +contributors and reviewers with deep understanding of the project is +healthier in the long run. Contributions generated by LLMs without +that understanding creates more work for the maintainers. + +Nevertheless, if you use an LLM to create a very small patch (one that +would likely not be subject to copyright protection even if generated +by a human), that's fine, but you must annotate it with the +`Assisted-By` or `Generated-By` labels. + +In short: + +* Please do not submit substantial AI-generated content (code or docs) +* Very small/limited use may be okay if it's not copyrightable +* Make sure you fully understand the code or docs you are changing +* If you don't, engage with humans in the Kolla community +* Any AI-Generated content must have `Assisted-By` or `Generated-By` labels + .. _communication: Communication From 19d6e8c1c9f8ef30a6c98ba73ad6d0613bdc1ad0 Mon Sep 17 00:00:00 2001 From: Michael Still Date: Mon, 29 Jun 2026 10:55:46 +1000 Subject: [PATCH 3/9] Add opt-in SPICE support for Rocky via COPR. RHEL9 dropped SPICE support from qemu-kvm, and Rocky Linux followed suit. Up until now the documented guidance has been to use the Debian or Ubuntu container images if you want to serve the ``spice-direct`` console type, because the stock Rocky nova-libvirt image will simply fail to start any SPICE-enabled instance. This change adds a second version of the nova-libvirt container image called nova-libvirt-spice. It is always built, but is identical for all supported container base distributions except for Rocky Linux. In the Rocky Linux case, this container adds the community maintained ligenix/enterprise-qemu-spice COPR repository that provides a rebuild of ``qemu-kvm`` with SPICE support re-enabled for both EPEL 9 and EPEL 10. Which nova-libvirt container should be used in a given deployment is delegated to logic in kolla-ansible, based on the deployer's settings in globals.yml. The COPR is a third-party rebuild with no vendor support contract. The release note and support matrix are updated to describe the opt-in path and call this caveat out explicitly. The earlier "you must use Debian or Ubuntu" wording in the support matrix is softened here, rather than by retroactively editing the kerbside container-build patch that introduced it, so that this feature can land (or not land) independently of the earlier change. Partial-Bug: #2131793 (spice-direct consoles) Prompt: I am interested in seeing how we would go about using https://copr.fedorainfracloud.org/coprs/ligenix/enterprise-qemu-spice/ to add SPICE support back to the Kolla build Rocky Linux containers as a new patch in the kolla/ORDER list. Could you please investigate options here? Assisted-By: Claude Code Co-Authored-By: Claude Opus 4.7 (1M context, medium effort) Change-Id: I410b87b7f8cdd541c48d9a749b3fea634a5f4e6c Signed-off-by: Michael Still --- doc/source/support_matrix.rst | 24 +++- docker/nova/nova-libvirt-spice/Dockerfile.j2 | 117 ++++++++++++++++++ .../nova/nova-libvirt-spice/extend_start.sh | 11 ++ kolla/template/repos.yaml | 5 + ...-kerbside-spice-copr-9a3f4d7c2b1e8a50.yaml | 24 ++++ 5 files changed, 176 insertions(+), 5 deletions(-) create mode 100644 docker/nova/nova-libvirt-spice/Dockerfile.j2 create mode 100644 docker/nova/nova-libvirt-spice/extend_start.sh create mode 100644 releasenotes/notes/rocky-kerbside-spice-copr-9a3f4d7c2b1e8a50.yaml diff --git a/doc/source/support_matrix.rst b/doc/source/support_matrix.rst index bec1aa0bd1..c14c719548 100644 --- a/doc/source/support_matrix.rst +++ b/doc/source/support_matrix.rst @@ -110,8 +110,22 @@ For a list of currently unbuildable images please look into SPICE limitations ================= -The new OpenStack Compute console type ``spice-direct`` requires that -SPICE support be compiled into the qemu running the instance. Sadly, -Red Hat chose to remove SPICE support from qemu in RHEL9, and Rocky -Linux has followed along. You therefore _must_ run the Debian or Ubuntu -container images if you wish to use the ``spice-direct`` console type. +The OpenStack Compute console type ``spice-direct`` requires that +SPICE support be compiled into the qemu running the instance. Red Hat +removed SPICE support from qemu in RHEL9 onwards, and Rocky Linux has +followed suit, so the stock Rocky Linux container images do not support +``spice-direct`` out of the box. + +As a solution, Kolla builds two copies of the ``nova-libvirt`` container +regardless of container distribution. These containers are identical on +other distributions, but for Rocky Linux the community-maintained +`ligenix/enterprise-qemu-spice +`__ +COPR repository is installed as it provides a rebuilt ``qemu-kvm`` +with SPICE re-enabled for EPEL 9 and EPEL 10. Because this COPR is a +third-party rebuild without a vendor support contract, it is recommended +only for proof-of-concept deployments. + +Which container to use for ``nova-libvirt`` is then determined at +``kolla-ansible deploy`` time based on the value of the ``enable_kerbside`` +flag. diff --git a/docker/nova/nova-libvirt-spice/Dockerfile.j2 b/docker/nova/nova-libvirt-spice/Dockerfile.j2 new file mode 100644 index 0000000000..dd090a1e69 --- /dev/null +++ b/docker/nova/nova-libvirt-spice/Dockerfile.j2 @@ -0,0 +1,117 @@ +FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }} +{% block labels %} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" +{% endblock %} + +{% block nova_libvirt_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +{{ macros.configure_user(name='nova', groups='qemu') }} + +{% if base_package_type == 'rpm' %} + + {% set nova_libvirt_extra_repos = ['ceph', 'crb', 'epel', 'openvswitch'] %} + {% if base_distro == 'rocky' %} + {# + The stock Rocky qemu-kvm has SPICE compiled out. To enable + Kerbside and the nova ``spice-direct`` console we therefore + layer the ligenix COPR in so that qemu-kvm and spice-server + are available with SPICE re-enabled. The repo definition + lives in kolla/template/repos.yaml so deployers can override + it like any other extra repo. + #} + {% set nova_libvirt_extra_repos = nova_libvirt_extra_repos + ['ligenix-qemu-spice'] %} + {% endif %} + +{{ macros.enable_extra_repos(nova_libvirt_extra_repos) }} + + {% set nova_libvirt_packages = [ + 'ceph-common', + 'cyrus-sasl-md5', + 'cyrus-sasl-scram', + 'libguestfs', + 'libvirt-client', + 'libvirt-daemon', + 'libvirt-daemon-config-nwfilter', + 'libvirt-daemon-driver-nwfilter', + 'libvirt-daemon-driver-nodedev', + 'openvswitch${KOLLA_RPM_OVS_VERSION}', + 'qemu-img', + 'qemu-kvm', + 'swtpm', + ] %} + {% if base_arch == 'x86_64' %} + {% set nova_libvirt_packages = nova_libvirt_packages + [ + 'edk2-ovmf' + ] %} + {% elif base_arch == 'aarch64' %} + {% set nova_libvirt_packages = nova_libvirt_packages + [ + 'edk2-aarch64' + ] %} + {% endif %} + + {% if use_ligenix_qemu | default(false) and base_distro == 'rocky' %} + {% set nova_libvirt_packages = nova_libvirt_packages + [ + 'qemu-kvm-ui-spice', + 'spice-server', + ] %} + {% endif %} + +{% elif base_package_type == 'deb' %} + + {% set nova_libvirt_packages = [ + 'ceph-common', + 'ebtables', + 'libsasl2-modules-gssapi-mit', + 'libvirt-clients', + 'libvirt-daemon-system', + 'mdevctl', + 'openvswitch-switch', + 'pm-utils', + 'python3-cephfs', + 'python3-rados', + 'python3-rbd', + 'qemu-block-extra', + 'qemu-system', + 'qemu-system-modules-spice', + 'qemu-utils', + 'sasl2-bin', + 'swtpm', + 'swtpm-tools', + 'tpm2-tools', + 'trousers' + ] %} + + {% if base_arch == "aarch64" %} + {% set nova_libvirt_packages = nova_libvirt_packages + [ + 'qemu-efi-aarch64' + ] %} + {% elif base_arch == "x86_64" %} + {% set nova_libvirt_packages = nova_libvirt_packages + [ + 'ovmf', + ] %} + {% endif %} + + {% if base_distro in ['debian'] %} + {% set nova_libvirt_packages = nova_libvirt_packages + [ + 'usermode' + ] %} + {% endif %} +{% endif %} + +{{ macros.install_packages(nova_libvirt_packages | customizable("packages")) }} + +{% if base_package_type == 'deb' %} + +RUN rm -f /etc/libvirt/qemu/networks/default.xml /etc/libvirt/qemu/networks/autostart/default.xml + +{% endif %} + +COPY extend_start.sh /usr/local/bin/kolla_extend_start +RUN chmod 644 /usr/local/bin/kolla_extend_start + +{{ macros.kolla_patch_sources() }} + +{% block nova_libvirt_footer %}{% endblock %} +{% block footer %}{% endblock %} diff --git a/docker/nova/nova-libvirt-spice/extend_start.sh b/docker/nova/nova-libvirt-spice/extend_start.sh new file mode 100644 index 0000000000..cc41b480b2 --- /dev/null +++ b/docker/nova/nova-libvirt-spice/extend_start.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +if [[ ! -e "/var/log/kolla/libvirt/libvirtd.log" ]]; then + mkdir -p /var/log/kolla/libvirt + touch /var/log/kolla/libvirt/libvirtd.log + chmod 644 /var/log/kolla/libvirt/libvirtd.log +fi +if [[ $(stat -c %a /var/log/kolla/libvirt) != "755" ]]; then + chmod 755 /var/log/kolla/libvirt + chmod 644 /var/log/kolla/libvirt/libvirtd.log +fi diff --git a/kolla/template/repos.yaml b/kolla/template/repos.yaml index f23c18eed3..508d829903 100644 --- a/kolla/template/repos.yaml +++ b/kolla/template/repos.yaml @@ -140,6 +140,11 @@ rpm: hacluster: name: "highavailability" distro: true + ligenix-qemu-spice: + baseurl: "https://download.copr.fedorainfracloud.org/results/ligenix/enterprise-qemu-spice/epel-$releasever-$basearch/" + gpgkey: "https://download.copr.fedorainfracloud.org/results/ligenix/enterprise-qemu-spice/pubkey.gpg" + gpgcheck: 1 + name: "ligenix-qemu-spice" mariadb: baseurl: "https://dlm.mariadb.com/repo/mariadb-server/11.4/yum/rhel/$releasever/$basearch" gpgkey: "https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB" diff --git a/releasenotes/notes/rocky-kerbside-spice-copr-9a3f4d7c2b1e8a50.yaml b/releasenotes/notes/rocky-kerbside-spice-copr-9a3f4d7c2b1e8a50.yaml new file mode 100644 index 0000000000..2bb5307ff2 --- /dev/null +++ b/releasenotes/notes/rocky-kerbside-spice-copr-9a3f4d7c2b1e8a50.yaml @@ -0,0 +1,24 @@ +--- +features: + - | + Kolla now builds two ``nova-libvirt`` containers: ``nova-libvirt`` + and ``nova-libvirt-spice``. This second container is used by + ``kolla-ansible`` deployments which set ``enable_kerbside: true`` + in their ``globals.yml``. The two containers are identical, except + on Rocky Linux where the community-maintained + `ligenix/enterprise-qemu-spice + `__ + COPR repository which rebuilds ``qemu-kvm`` with SPICE support + re-enabled is used. The COPR is a third-party rebuild with no vendor + support contract and is recommended only for proof-of-concept + deployments. +issues: + - | + The ligenix/enterprise-qemu-spice COPR builds ship qemu-kvm without + the ``usb-audio`` device. Guests configured with + ``hw_sound_model=usb`` (the recommended default in the Kerbside + ``hw:sound_model`` documentation) will fail to start on Rocky with + ``unsupported configuration: usb-audio controller is not supported + by this QEMU binary``. Use a different model such as ``ich9`` or + ``ac97`` on Rocky deployments until the COPR rebuild ships + usb-audio. From a45e9053a3898312f7d11259887eae666d244a3c Mon Sep 17 00:00:00 2001 From: Michael Still Date: Mon, 29 Jun 2026 10:55:46 +1000 Subject: [PATCH 4/9] Install and start virtlogd in nova-libvirt-spice. The nova-libvirt-spice image is a kerbside fork of the upstream nova-libvirt image, and is what kolla-ansible deploys for the nova_libvirt container when kerbside is enabled. Mirror the virtlogd changes made to the upstream image: install libvirt-daemon-log where it is a separate package, and add the start script which runs virtlogd as a sidecar of libvirtd so that nova instance console logs are rotated. Change-Id: Ifdcd3ae34e62fc484d1a25ef6f6c68c467745fda Depends-On: https://review.opendev.org/c/openstack/kolla/+/993065 Signed-off-by: Michael Still --- docker/nova/nova-libvirt-spice/Dockerfile.j2 | 5 ++++- .../nova-libvirt-spice/kolla_nova_libvirt_start.sh | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 docker/nova/nova-libvirt-spice/kolla_nova_libvirt_start.sh diff --git a/docker/nova/nova-libvirt-spice/Dockerfile.j2 b/docker/nova/nova-libvirt-spice/Dockerfile.j2 index dd090a1e69..4c7ded8944 100644 --- a/docker/nova/nova-libvirt-spice/Dockerfile.j2 +++ b/docker/nova/nova-libvirt-spice/Dockerfile.j2 @@ -33,6 +33,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build 'libguestfs', 'libvirt-client', 'libvirt-daemon', + 'libvirt-daemon-log', 'libvirt-daemon-config-nwfilter', 'libvirt-daemon-driver-nwfilter', 'libvirt-daemon-driver-nodedev', @@ -95,6 +96,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% if base_distro in ['debian'] %} {% set nova_libvirt_packages = nova_libvirt_packages + [ + 'libvirt-daemon-log', 'usermode' ] %} {% endif %} @@ -109,7 +111,8 @@ RUN rm -f /etc/libvirt/qemu/networks/default.xml /etc/libvirt/qemu/networks/auto {% endif %} COPY extend_start.sh /usr/local/bin/kolla_extend_start -RUN chmod 644 /usr/local/bin/kolla_extend_start +COPY kolla_nova_libvirt_start.sh /usr/local/bin/kolla_nova_libvirt_start +RUN chmod 644 /usr/local/bin/kolla_extend_start && chmod 744 /usr/local/bin/kolla_nova_libvirt_start {{ macros.kolla_patch_sources() }} diff --git a/docker/nova/nova-libvirt-spice/kolla_nova_libvirt_start.sh b/docker/nova/nova-libvirt-spice/kolla_nova_libvirt_start.sh new file mode 100644 index 0000000000..f06a63d9ed --- /dev/null +++ b/docker/nova/nova-libvirt-spice/kolla_nova_libvirt_start.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -euo pipefail + +# NOTE(mikal): Start virtlogd as a sidecar. We need this for +# nova instance console logs to rotate. Otherwise they will +# consume unbounded amounts of disk. +# +# No exec here: libvirtd will be the "main" process. +/usr/sbin/virtlogd & + +# Now hand over PID 1's direct child role to libvirtd. +exec /usr/sbin/libvirtd --listen From db35ac8d793506bc43b62e7e39d27a75de1043ed Mon Sep 17 00:00:00 2001 From: Michal Nasiadka Date: Mon, 6 Jul 2026 15:26:00 +0200 Subject: [PATCH 5/9] Migrate to pyproject.toml [tool.setuptools.data-files] does not support recursive directory installation. The old setup.cfg [files] worked because PBR's FilesConfig.expand_globs() used os.walk() to expand docker/*, but this hook is not triggered by the pbr.build PEP-517 backend. Move docker/ into kolla/ and use [tool.setuptools.package-data] instead. Update kolla_worker._get_images_dir() to check the kolla package directory first so both editable and regular installs work. Change-Id: I4fc452c03740ef22ebbb4e8d0d86c4f4783e2d09 Signed-off-by: Michal Nasiadka --- .../docker}/aodh/aodh-api/Dockerfile.j2 | 0 .../docker}/aodh/aodh-api/extend_start.sh | 0 .../docker}/aodh/aodh-base/Dockerfile.j2 | 0 .../docker}/aodh/aodh-base/aodh_sudoers | 0 .../docker}/aodh/aodh-base/extend_start.sh | 0 .../docker}/aodh/aodh-evaluator/Dockerfile.j2 | 0 .../docker}/aodh/aodh-expirer/Dockerfile.j2 | 0 .../docker}/aodh/aodh-listener/Dockerfile.j2 | 0 .../docker}/aodh/aodh-notifier/Dockerfile.j2 | 0 .../barbican/barbican-api/Dockerfile.j2 | 0 .../barbican/barbican-api/extend_start.sh | 0 .../barbican/barbican-base/Dockerfile.j2 | 0 .../barbican/barbican-base/barbican_sudoers | 0 .../barbican/barbican-base/extend_start.sh | 0 .../barbican-keystone-listener/Dockerfile.j2 | 0 .../barbican/barbican-worker/Dockerfile.j2 | 0 {docker => kolla/docker}/base/Dockerfile.j2 | 0 {docker => kolla/docker}/base/apt_preferences | 0 .../docker}/base/apt_preferences.debian | 0 .../docker}/base/apt_preferences.ubuntu | 0 {docker => kolla/docker}/base/ci-centos.repo | 0 {docker => kolla/docker}/base/copy_cacerts.sh | 0 {docker => kolla/docker}/base/curlrc | 0 {docker => kolla/docker}/base/debian.sources | 0 {docker => kolla/docker}/base/dnf.conf | 0 .../docker}/base/dpkg_reducing_disk_footprint | 0 .../docker}/base/healthcheck_curl | 0 .../docker}/base/healthcheck_filemod | 0 .../docker}/base/healthcheck_listen | 0 .../docker}/base/healthcheck_port | 0 .../docker}/base/healthcheck_socket | 0 .../docker}/base/install_projects.sh | 0 {docker => kolla/docker}/base/kolla_bashrc | 0 {docker => kolla/docker}/base/kolla_patch.sh | 0 {docker => kolla/docker}/base/set_configs.py | 0 {docker => kolla/docker}/base/sources.list | 0 {docker => kolla/docker}/base/start.sh | 0 {docker => kolla/docker}/base/sudoers | 0 {docker => kolla/docker}/base/ubuntu.sources | 0 .../docker}/base/ubuntu.sources.arm64 | 0 .../bifrost/bifrost-base/Dockerfile.j2 | 0 .../bifrost/bifrost-base/bifrost_sudoers | 0 .../bifrost/bifrost-base/build_arg.yml | 0 .../bifrost/bifrost-deploy/Dockerfile.j2 | 0 .../docker}/blazar/blazar-api/Dockerfile.j2 | 0 .../docker}/blazar/blazar-api/extend_start.sh | 0 .../docker}/blazar/blazar-base/Dockerfile.j2 | 0 .../blazar/blazar-base/extend_start.sh | 0 .../blazar/blazar-manager/Dockerfile.j2 | 0 .../ceilometer/ceilometer-base/Dockerfile.j2 | 0 .../ceilometer-base/ceilometer_sudoers | 0 .../ceilometer-base/extend_start.sh | 0 .../ceilometer-central/Dockerfile.j2 | 0 .../ceilometer-compute/Dockerfile.j2 | 0 .../ceilometer/ceilometer-ipmi/Dockerfile.j2 | 0 .../ceilometer-notification/Dockerfile.j2 | 0 .../ceilometer-notification/extend_start.sh | 0 .../docker}/cinder/cinder-api/Dockerfile.j2 | 0 .../docker}/cinder/cinder-api/extend_start.sh | 0 .../cinder/cinder-backup/Dockerfile.j2 | 0 .../docker}/cinder/cinder-base/Dockerfile.j2 | 0 .../docker}/cinder/cinder-base/cinder_sudoers | 0 .../cinder/cinder-base/extend_start.sh | 0 .../cinder/cinder-scheduler/Dockerfile.j2 | 0 .../cinder/cinder-volume/Dockerfile.j2 | 0 .../cinder/cinder-volume/cinder_sudoers | 0 .../cinder/cinder-volume/extend_start.sh | 0 .../cloudkitty/cloudkitty-api/Dockerfile.j2 | 0 .../cloudkitty/cloudkitty-api/extend_start.sh | 0 .../cloudkitty/cloudkitty-base/Dockerfile.j2 | 0 .../cloudkitty-base/extend_start.sh | 0 .../cloudkitty-processor/Dockerfile.j2 | 0 .../docker}/collectd/Dockerfile.j2 | 0 .../docker}/collectd/extend_start.sh | 0 {docker => kolla/docker}/cron/Dockerfile.j2 | 0 {docker => kolla/docker}/cron/extend_start.sh | 0 {docker => kolla/docker}/cron/logrotate | 0 .../docker}/cyborg/cyborg-agent/Dockerfile.j2 | 0 .../docker}/cyborg/cyborg-api/Dockerfile.j2 | 0 .../docker}/cyborg/cyborg-api/extend_start.sh | 0 .../docker}/cyborg/cyborg-base/Dockerfile.j2 | 0 .../docker}/cyborg/cyborg-base/cyborg_sudoers | 0 .../cyborg/cyborg-base/extend_start.sh | 0 .../cyborg/cyborg-conductor/Dockerfile.j2 | 0 .../designate/designate-api/Dockerfile.j2 | 0 .../designate-backend-bind9/Dockerfile.j2 | 0 .../designate/designate-base/Dockerfile.j2 | 0 .../designate-base/designate_sudoers | 0 .../designate/designate-base/extend_start.sh | 0 .../designate/designate-central/Dockerfile.j2 | 0 .../designate-central/extend_start.sh | 0 .../designate/designate-mdns/Dockerfile.j2 | 0 .../designate-producer/Dockerfile.j2 | 0 .../designate/designate-sink/Dockerfile.j2 | 0 .../designate/designate-worker/Dockerfile.j2 | 0 .../docker}/dnsmasq/Dockerfile.j2 | 0 .../docker}/dnsmasq/extend_start.sh | 0 {docker => kolla/docker}/etcd/Dockerfile.j2 | 0 {docker => kolla/docker}/etcd/etcd_sudoers | 0 {docker => kolla/docker}/etcd/extend_start.sh | 0 .../docker}/fluentd/Dockerfile.j2 | 0 .../docker}/fluentd/extend_start.sh | 0 .../docker}/fluentd/fluentd_sudoers | 0 .../docker}/glance/glance-api/Dockerfile.j2 | 0 .../docker}/glance/glance-api/extend_start.sh | 0 .../docker}/glance/glance-base/Dockerfile.j2 | 0 .../glance-base/etc/glance/rootwrap.conf | 0 .../rootwrap.d/glance_cinder_store.filters | 0 .../glance/glance-base/extend_start.sh | 0 .../docker}/glance/glance-base/glance_sudoers | 0 .../docker}/gnocchi/gnocchi-api/Dockerfile.j2 | 0 .../gnocchi/gnocchi-api/extend_start.sh | 0 .../gnocchi/gnocchi-base/Dockerfile.j2 | 0 .../gnocchi/gnocchi-base/extend_start.sh | 0 .../gnocchi/gnocchi-base/gnocchi_sudoers | 0 .../gnocchi/gnocchi-metricd/Dockerfile.j2 | 0 .../gnocchi/gnocchi-statsd/Dockerfile.j2 | 0 .../docker}/grafana/Dockerfile.j2 | 0 .../docker}/grafana/extend_start.sh | 0 .../docker}/grafana/grafana_sudoers | 0 .../hacluster/hacluster-base/Dockerfile.j2 | 0 .../hacluster/hacluster-base/extend_start.sh | 0 .../hacluster-corosync/Dockerfile.j2 | 0 .../hacluster-pacemaker-remote/Dockerfile.j2 | 0 .../hacluster-pacemaker/Dockerfile.j2 | 0 .../hacluster/hacluster-pcs/Dockerfile.j2 | 0 .../docker}/haproxy/haproxy-ssh/Dockerfile.j2 | 0 .../haproxy/haproxy-ssh/extend_start.sh | 0 .../haproxy-ssh/update-loadbalancer-cert.sh | 0 .../docker}/haproxy/haproxy/Dockerfile.j2 | 0 .../haproxy/haproxy/ensure_latest_config.sh | 0 .../docker}/heat/heat-api-cfn/Dockerfile.j2 | 0 .../docker}/heat/heat-api/Dockerfile.j2 | 0 .../docker}/heat/heat-api/extend_start.sh | 0 .../docker}/heat/heat-base/Dockerfile.j2 | 0 .../docker}/heat/heat-base/extend_start.sh | 0 .../docker}/heat/heat-engine/Dockerfile.j2 | 0 .../docker}/horizon/Dockerfile.j2 | 0 .../docker}/horizon/extend_start.sh | 0 {docker => kolla/docker}/httpd/Dockerfile.j2 | 0 .../docker}/httpd/extend_start.sh | 0 {docker => kolla/docker}/httpd/httpd_setup.sh | 0 .../docker}/ironic/ironic-api/Dockerfile.j2 | 0 .../docker}/ironic/ironic-api/extend_start.sh | 0 .../docker}/ironic/ironic-base/Dockerfile.j2 | 0 .../ironic/ironic-base/extend_start.sh | 0 .../docker}/ironic/ironic-base/ironic_sudoers | 0 .../ironic/ironic-conductor/Dockerfile.j2 | 0 .../ironic-prometheus-exporter/Dockerfile.j2 | 0 .../ironic/ironic-pxe-filter/Dockerfile.j2 | 0 .../ironic/ironic-pxe-filter/extend_start.sh | 0 .../docker}/ironic/ironic-pxe/Dockerfile.j2 | 0 .../docker}/ironic/ironic-pxe/extend_start.sh | 0 .../ironic/ironic-pxe/tftp-map-file-template | 0 {docker => kolla/docker}/iscsid/Dockerfile.j2 | 0 .../docker}/iscsid/extend_start.sh | 0 .../docker}/keepalived/Dockerfile.j2 | 0 .../docker}/keepalived/check_alive.sh | 0 .../docker}/keepalived/extend_start.sh | 0 .../kerbside/kerbside-api/Dockerfile.j2 | 0 .../kerbside/kerbside-api/extend_start.sh | 0 .../kerbside/kerbside-base/Dockerfile.j2 | 0 .../kerbside/kerbside-proxy/Dockerfile.j2 | 0 .../kerbside/kerbside-proxy/extend_start.sh | 0 .../keystone/keystone-base/Dockerfile.j2 | 0 .../keystone/keystone-fernet/Dockerfile.j2 | 0 .../keystone/keystone-fernet/extend_start.sh | 0 .../keystone-fernet/fetch_fernet_tokens.py | 0 .../keystone-fernet/keystone_bootstrap.sh | 0 .../keystone/keystone-ssh/Dockerfile.j2 | 0 .../keystone/keystone-ssh/extend_start.sh | 0 .../docker}/keystone/keystone/Dockerfile.j2 | 0 .../docker}/keystone/keystone/extend_start.sh | 0 .../keystone/keystone/keystone_bootstrap.sh | 0 .../docker}/kolla-toolbox/Dockerfile.j2 | 0 .../docker}/kolla-toolbox/ansible.cfg | 0 .../docker}/kolla-toolbox/ansible_sudoers | 0 .../apt_preferences_rabbitmq.debian | 0 .../apt_preferences_rabbitmq.ubuntu | 0 .../docker}/kolla-toolbox/extend_start.sh | 0 .../docker}/kolla-toolbox/kolla_toolbox.sh | 0 .../docker}/kolla-toolbox/requirements.yml | 0 .../letsencrypt-base/Dockerfile.j2 | 0 .../letsencrypt-base/extend_start.sh | 0 .../letsencrypt-lego/Dockerfile.j2 | 0 .../letsencrypt-certificates.sh | 0 .../sync-and-update-certificate.sh | 0 {docker => kolla/docker}/macros.j2 | 0 .../docker}/magnum/magnum-api/Dockerfile.j2 | 0 .../docker}/magnum/magnum-api/extend_start.sh | 0 .../docker}/magnum/magnum-base/Dockerfile.j2 | 0 .../magnum/magnum-base/extend_start.sh | 0 .../magnum/magnum-conductor/Dockerfile.j2 | 0 .../docker}/manila/manila-api/Dockerfile.j2 | 0 .../docker}/manila/manila-api/extend_start.sh | 0 .../docker}/manila/manila-base/Dockerfile.j2 | 0 .../manila/manila-base/extend_start.sh | 0 .../docker}/manila/manila-base/manila_sudoers | 0 .../docker}/manila/manila-data/Dockerfile.j2 | 0 .../manila/manila-scheduler/Dockerfile.j2 | 0 .../docker}/manila/manila-share/Dockerfile.j2 | 0 .../docker}/mariadb-server/Dockerfile.j2 | 0 .../docker}/mariadb-server/backup.sh | 0 .../docker}/mariadb-server/backup_replica.sh | 0 .../docker}/mariadb-server/extend_start.sh | 0 .../mariadb-server/healthcheck_mariadb | 0 .../docker}/mariadb-server/mariadb_sudoers | 0 .../mariadb-server/security_reset.expect | 0 .../masakari/masakari-api/Dockerfile.j2 | 0 .../masakari/masakari-api/extend_start.sh | 0 .../masakari/masakari-base/Dockerfile.j2 | 0 .../masakari/masakari-base/extend_start.sh | 0 .../masakari/masakari-engine/Dockerfile.j2 | 0 .../masakari/masakari-monitors/Dockerfile.j2 | 0 .../masakari_monitors_sudoers | 0 .../docker}/memcached/Dockerfile.j2 | 0 .../docker}/mistral/mistral-api/Dockerfile.j2 | 0 .../mistral/mistral-api/extend_start.sh | 0 .../mistral/mistral-base/Dockerfile.j2 | 0 .../mistral/mistral-base/extend_start.sh | 0 .../mistral/mistral-engine/Dockerfile.j2 | 0 .../mistral-event-engine/Dockerfile.j2 | 0 .../mistral/mistral-executor/Dockerfile.j2 | 0 .../docker}/multipathd/Dockerfile.j2 | 0 .../ironic-neutron-agent/Dockerfile.j2 | 0 .../neutron/neutron-base/Dockerfile.j2 | 0 .../neutron/neutron-base/copy-wrappers | 0 .../neutron/neutron-base/delete-wrappers | 0 .../docker}/neutron/neutron-base/dnsmasq | 0 .../neutron/neutron-base/extend_start.sh | 0 .../docker}/neutron/neutron-base/haproxy | 0 .../docker}/neutron/neutron-base/keepalived | 0 .../neutron-keepalived-state-change | 0 .../neutron/neutron-base/neutron_sudoers | 0 .../docker}/neutron/neutron-base/radvd | 0 .../neutron/neutron-bgp-dragent/Dockerfile.j2 | 0 .../neutron/neutron-dhcp-agent/Dockerfile.j2 | 0 .../neutron-dhcp-agent/extend_start.sh | 0 .../neutron/neutron-l3-agent/Dockerfile.j2 | 0 .../neutron/neutron-l3-agent/extend_start.sh | 0 .../neutron-metadata-agent/Dockerfile.j2 | 0 .../neutron-metadata-agent/extend_start.sh | 0 .../neutron-metering-agent/Dockerfile.j2 | 0 .../neutron/neutron-mlnx-agent/Dockerfile.j2 | 0 .../neutron-openvswitch-agent/Dockerfile.j2 | 0 .../neutron/neutron-ovn-agent/Dockerfile.j2 | 0 .../neutron-ovn-vpn-agent/Dockerfile.j2 | 0 .../neutron/neutron-server/Dockerfile.j2 | 0 .../neutron/neutron-server/extend_start.sh | 0 .../neutron/neutron-sriov-agent/Dockerfile.j2 | 0 .../docker}/nova/nova-api/Dockerfile.j2 | 0 .../docker}/nova/nova-api/extend_start.sh | 0 .../docker}/nova/nova-base/Dockerfile.j2 | 0 .../docker}/nova/nova-base/extend_start.sh | 0 .../docker}/nova/nova-base/nova_sudoers | 0 .../nova/nova-compute-ironic/Dockerfile.j2 | 0 .../docker}/nova/nova-compute/Dockerfile.j2 | 0 .../docker}/nova/nova-compute/extend_start.sh | 0 .../docker}/nova/nova-conductor/Dockerfile.j2 | 0 .../nova/nova-conductor/extend_start.sh | 0 .../nova/nova-libvirt-spice/Dockerfile.j2 | 0 .../nova/nova-libvirt-spice/extend_start.sh | 0 .../kolla_nova_libvirt_start.sh | 0 .../docker}/nova/nova-libvirt/Dockerfile.j2 | 0 .../docker}/nova/nova-libvirt/extend_start.sh | 0 .../nova-libvirt/kolla_nova_libvirt_start.sh | 0 .../nova/nova-novncproxy/Dockerfile.j2 | 0 .../docker}/nova/nova-scheduler/Dockerfile.j2 | 0 .../nova/nova-serialproxy/Dockerfile.j2 | 0 .../nova/nova-spicehtml5proxy/Dockerfile.j2 | 0 .../docker}/nova/nova-ssh/Dockerfile.j2 | 0 .../docker}/nova/nova-ssh/extend_start.sh | 0 .../docker}/octavia/octavia-api/Dockerfile.j2 | 0 .../octavia/octavia-api/extend_start.sh | 0 .../octavia/octavia-base/Dockerfile.j2 | 0 .../octavia/octavia-base/extend_start.sh | 0 .../octavia-driver-agent/Dockerfile.j2 | 0 .../octavia-health-manager/Dockerfile.j2 | 0 .../octavia-housekeeping/Dockerfile.j2 | 0 .../octavia/octavia-worker/Dockerfile.j2 | 0 .../opensearch-dashboards/Dockerfile.j2 | 0 .../opensearch-dashboards/extend_start.sh | 0 .../opensearch/opensearch/Dockerfile.j2 | 0 .../opensearch/opensearch/extend_start.sh | 0 .../docker}/openstack-base/Dockerfile.j2 | 0 .../openvswitch-base/Dockerfile.j2 | 0 .../openvswitch-base/extend_start.sh | 0 .../openvswitch-base/ovs_wrapper.sh | 0 .../openvswitch-db-server/Dockerfile.j2 | 0 .../openvswitch-db-server/extend_start.sh | 0 ...vs-ensure-configured-7973d36969e157fa.yaml | 0 .../openvswitch-vswitchd/Dockerfile.j2 | 0 .../openvswitch-vswitchd/extend_start.sh | 0 .../docker}/ovn/ovn-base/Dockerfile.j2 | 0 .../docker}/ovn/ovn-base/extend_start.sh | 0 .../docker}/ovn/ovn-controller/Dockerfile.j2 | 0 .../ovn/ovn-controller/extend_start.sh | 0 .../ovn/ovn-nb-db-server/Dockerfile.j2 | 0 .../ovn/ovn-nb-db-server/extend_start.sh | 0 .../ovn-nb-db-server/start_nb_db_server.sh | 0 .../docker}/ovn/ovn-northd/Dockerfile.j2 | 0 .../docker}/ovn/ovn-northd/extend_start.sh | 0 .../docker}/ovn/ovn-sb-db-relay/Dockerfile.j2 | 0 .../ovn/ovn-sb-db-relay/extend_start.sh | 0 .../ovn/ovn-sb-db-server/Dockerfile.j2 | 0 .../ovn/ovn-sb-db-server/extend_start.sh | 0 .../ovn-sb-db-server/start_sb_db_server.sh | 0 .../docker}/ovsdpdk/ovsdpdk-db/Dockerfile.j2 | 0 .../ovsdpdk/ovsdpdk-db/extend_start.sh | 0 .../ovsdpdk/ovsdpdk-db/start_ovsdb_server.sh | 0 .../ovsdpdk/ovsdpdk-vswitchd/Dockerfile.j2 | 0 .../ovsdpdk/ovsdpdk-vswitchd/extend_start.sh | 0 .../docker}/ovsdpdk/ovsdpdk/Dockerfile.j2 | 0 .../docker}/ovsdpdk/ovsdpdk/extend_start.sh | 0 .../placement/placement-api/Dockerfile.j2 | 0 .../placement/placement-api/extend_start.sh | 0 .../placement/placement-base/Dockerfile.j2 | 0 .../placement/placement-base/extend_start.sh | 0 .../prometheus-alertmanager/Dockerfile.j2 | 0 .../prometheus/prometheus-base/Dockerfile.j2 | 0 .../prometheus-base/extend_start.sh | 0 .../Dockerfile.j2 | 0 .../prometheus-cadvisor/Dockerfile.j2 | 0 .../Dockerfile.j2 | 0 .../prometheus-libvirt-exporter/Dockerfile.j2 | 0 .../Dockerfile.j2 | 0 .../prometheus/prometheus-mtail/Dockerfile.j2 | 0 .../prometheus-mysqld-exporter/Dockerfile.j2 | 0 .../prometheus-node-exporter/Dockerfile.j2 | 0 .../Dockerfile.j2 | 0 .../Dockerfile.j2 | 0 .../prometheus-server/Dockerfile.j2 | 0 .../prometheus-valkey-exporter/Dockerfile.j2 | 0 .../docker}/proxysql/Dockerfile.j2 | 0 .../docker}/proxysql/kolla_extend_start | 0 .../proxysql/kolla_proxysql_config_sync | 0 .../docker}/rabbitmq/Dockerfile.j2 | 0 .../rabbitmq/apt_preferences_rabbitmq.debian | 0 .../rabbitmq/apt_preferences_rabbitmq.ubuntu | 0 .../docker}/rabbitmq/extend_start.sh | 0 .../docker}/rabbitmq/healthcheck_rabbitmq | 0 .../skyline/skyline-apiserver/Dockerfile.j2 | 0 .../skyline/skyline-apiserver/extend_start.sh | 0 .../skyline/skyline-base/Dockerfile.j2 | 0 .../skyline/skyline-base/extend_start.sh | 0 .../skyline/skyline-console/Dockerfile.j2 | 0 .../docker}/tacker/tacker-base/Dockerfile.j2 | 0 .../tacker/tacker-base/extend_start.sh | 0 .../tacker/tacker-conductor/Dockerfile.j2 | 0 .../tacker/tacker-server/Dockerfile.j2 | 0 .../tacker/tacker-server/extend_start.sh | 0 {docker => kolla/docker}/tgtd/Dockerfile.j2 | 0 .../docker}/trove/trove-api/Dockerfile.j2 | 0 .../docker}/trove/trove-api/extend_start.sh | 0 .../docker}/trove/trove-base/Dockerfile.j2 | 0 .../docker}/trove/trove-base/extend_start.sh | 0 .../trove/trove-conductor/Dockerfile.j2 | 0 .../trove/trove-guestagent/Dockerfile.j2 | 0 .../trove/trove-taskmanager/Dockerfile.j2 | 0 .../docker}/valkey/valkey-base/Dockerfile.j2 | 0 .../valkey/valkey-base/extend_start.sh | 0 .../valkey/valkey-sentinel/Dockerfile.j2 | 0 .../valkey/valkey-sentinel/extend_start.sh | 0 .../valkey/valkey-server/Dockerfile.j2 | 0 .../docker}/watcher/watcher-api/Dockerfile.j2 | 0 .../watcher/watcher-api/extend_start.sh | 0 .../watcher/watcher-applier/Dockerfile.j2 | 0 .../watcher/watcher-base/Dockerfile.j2 | 0 .../watcher/watcher-base/extend_start.sh | 0 .../watcher/watcher-engine/Dockerfile.j2 | 0 kolla/image/kolla_worker.py | 3 ++ pyproject.toml | 43 +++++++++++++++++++ setup.cfg | 41 ------------------ tests/test_set_config.py | 2 +- 374 files changed, 47 insertions(+), 42 deletions(-) rename {docker => kolla/docker}/aodh/aodh-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/aodh/aodh-api/extend_start.sh (100%) rename {docker => kolla/docker}/aodh/aodh-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/aodh/aodh-base/aodh_sudoers (100%) rename {docker => kolla/docker}/aodh/aodh-base/extend_start.sh (100%) rename {docker => kolla/docker}/aodh/aodh-evaluator/Dockerfile.j2 (100%) rename {docker => kolla/docker}/aodh/aodh-expirer/Dockerfile.j2 (100%) rename {docker => kolla/docker}/aodh/aodh-listener/Dockerfile.j2 (100%) rename {docker => kolla/docker}/aodh/aodh-notifier/Dockerfile.j2 (100%) rename {docker => kolla/docker}/barbican/barbican-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/barbican/barbican-api/extend_start.sh (100%) rename {docker => kolla/docker}/barbican/barbican-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/barbican/barbican-base/barbican_sudoers (100%) rename {docker => kolla/docker}/barbican/barbican-base/extend_start.sh (100%) rename {docker => kolla/docker}/barbican/barbican-keystone-listener/Dockerfile.j2 (100%) rename {docker => kolla/docker}/barbican/barbican-worker/Dockerfile.j2 (100%) rename {docker => kolla/docker}/base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/base/apt_preferences (100%) rename {docker => kolla/docker}/base/apt_preferences.debian (100%) rename {docker => kolla/docker}/base/apt_preferences.ubuntu (100%) rename {docker => kolla/docker}/base/ci-centos.repo (100%) rename {docker => kolla/docker}/base/copy_cacerts.sh (100%) rename {docker => kolla/docker}/base/curlrc (100%) rename {docker => kolla/docker}/base/debian.sources (100%) rename {docker => kolla/docker}/base/dnf.conf (100%) rename {docker => kolla/docker}/base/dpkg_reducing_disk_footprint (100%) rename {docker => kolla/docker}/base/healthcheck_curl (100%) rename {docker => kolla/docker}/base/healthcheck_filemod (100%) rename {docker => kolla/docker}/base/healthcheck_listen (100%) rename {docker => kolla/docker}/base/healthcheck_port (100%) rename {docker => kolla/docker}/base/healthcheck_socket (100%) rename {docker => kolla/docker}/base/install_projects.sh (100%) rename {docker => kolla/docker}/base/kolla_bashrc (100%) rename {docker => kolla/docker}/base/kolla_patch.sh (100%) rename {docker => kolla/docker}/base/set_configs.py (100%) rename {docker => kolla/docker}/base/sources.list (100%) rename {docker => kolla/docker}/base/start.sh (100%) rename {docker => kolla/docker}/base/sudoers (100%) rename {docker => kolla/docker}/base/ubuntu.sources (100%) rename {docker => kolla/docker}/base/ubuntu.sources.arm64 (100%) rename {docker => kolla/docker}/bifrost/bifrost-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/bifrost/bifrost-base/bifrost_sudoers (100%) rename {docker => kolla/docker}/bifrost/bifrost-base/build_arg.yml (100%) rename {docker => kolla/docker}/bifrost/bifrost-deploy/Dockerfile.j2 (100%) rename {docker => kolla/docker}/blazar/blazar-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/blazar/blazar-api/extend_start.sh (100%) rename {docker => kolla/docker}/blazar/blazar-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/blazar/blazar-base/extend_start.sh (100%) rename {docker => kolla/docker}/blazar/blazar-manager/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ceilometer/ceilometer-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ceilometer/ceilometer-base/ceilometer_sudoers (100%) rename {docker => kolla/docker}/ceilometer/ceilometer-base/extend_start.sh (100%) rename {docker => kolla/docker}/ceilometer/ceilometer-central/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ceilometer/ceilometer-compute/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ceilometer/ceilometer-ipmi/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ceilometer/ceilometer-notification/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ceilometer/ceilometer-notification/extend_start.sh (100%) rename {docker => kolla/docker}/cinder/cinder-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/cinder/cinder-api/extend_start.sh (100%) rename {docker => kolla/docker}/cinder/cinder-backup/Dockerfile.j2 (100%) rename {docker => kolla/docker}/cinder/cinder-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/cinder/cinder-base/cinder_sudoers (100%) rename {docker => kolla/docker}/cinder/cinder-base/extend_start.sh (100%) rename {docker => kolla/docker}/cinder/cinder-scheduler/Dockerfile.j2 (100%) rename {docker => kolla/docker}/cinder/cinder-volume/Dockerfile.j2 (100%) rename {docker => kolla/docker}/cinder/cinder-volume/cinder_sudoers (100%) rename {docker => kolla/docker}/cinder/cinder-volume/extend_start.sh (100%) rename {docker => kolla/docker}/cloudkitty/cloudkitty-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/cloudkitty/cloudkitty-api/extend_start.sh (100%) rename {docker => kolla/docker}/cloudkitty/cloudkitty-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/cloudkitty/cloudkitty-base/extend_start.sh (100%) rename {docker => kolla/docker}/cloudkitty/cloudkitty-processor/Dockerfile.j2 (100%) rename {docker => kolla/docker}/collectd/Dockerfile.j2 (100%) rename {docker => kolla/docker}/collectd/extend_start.sh (100%) rename {docker => kolla/docker}/cron/Dockerfile.j2 (100%) rename {docker => kolla/docker}/cron/extend_start.sh (100%) rename {docker => kolla/docker}/cron/logrotate (100%) rename {docker => kolla/docker}/cyborg/cyborg-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/cyborg/cyborg-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/cyborg/cyborg-api/extend_start.sh (100%) rename {docker => kolla/docker}/cyborg/cyborg-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/cyborg/cyborg-base/cyborg_sudoers (100%) rename {docker => kolla/docker}/cyborg/cyborg-base/extend_start.sh (100%) rename {docker => kolla/docker}/cyborg/cyborg-conductor/Dockerfile.j2 (100%) rename {docker => kolla/docker}/designate/designate-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/designate/designate-backend-bind9/Dockerfile.j2 (100%) rename {docker => kolla/docker}/designate/designate-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/designate/designate-base/designate_sudoers (100%) rename {docker => kolla/docker}/designate/designate-base/extend_start.sh (100%) rename {docker => kolla/docker}/designate/designate-central/Dockerfile.j2 (100%) rename {docker => kolla/docker}/designate/designate-central/extend_start.sh (100%) rename {docker => kolla/docker}/designate/designate-mdns/Dockerfile.j2 (100%) rename {docker => kolla/docker}/designate/designate-producer/Dockerfile.j2 (100%) rename {docker => kolla/docker}/designate/designate-sink/Dockerfile.j2 (100%) rename {docker => kolla/docker}/designate/designate-worker/Dockerfile.j2 (100%) rename {docker => kolla/docker}/dnsmasq/Dockerfile.j2 (100%) rename {docker => kolla/docker}/dnsmasq/extend_start.sh (100%) rename {docker => kolla/docker}/etcd/Dockerfile.j2 (100%) rename {docker => kolla/docker}/etcd/etcd_sudoers (100%) rename {docker => kolla/docker}/etcd/extend_start.sh (100%) rename {docker => kolla/docker}/fluentd/Dockerfile.j2 (100%) rename {docker => kolla/docker}/fluentd/extend_start.sh (100%) rename {docker => kolla/docker}/fluentd/fluentd_sudoers (100%) rename {docker => kolla/docker}/glance/glance-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/glance/glance-api/extend_start.sh (100%) rename {docker => kolla/docker}/glance/glance-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/glance/glance-base/etc/glance/rootwrap.conf (100%) rename {docker => kolla/docker}/glance/glance-base/etc/glance/rootwrap.d/glance_cinder_store.filters (100%) rename {docker => kolla/docker}/glance/glance-base/extend_start.sh (100%) rename {docker => kolla/docker}/glance/glance-base/glance_sudoers (100%) rename {docker => kolla/docker}/gnocchi/gnocchi-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/gnocchi/gnocchi-api/extend_start.sh (100%) rename {docker => kolla/docker}/gnocchi/gnocchi-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/gnocchi/gnocchi-base/extend_start.sh (100%) rename {docker => kolla/docker}/gnocchi/gnocchi-base/gnocchi_sudoers (100%) rename {docker => kolla/docker}/gnocchi/gnocchi-metricd/Dockerfile.j2 (100%) rename {docker => kolla/docker}/gnocchi/gnocchi-statsd/Dockerfile.j2 (100%) rename {docker => kolla/docker}/grafana/Dockerfile.j2 (100%) rename {docker => kolla/docker}/grafana/extend_start.sh (100%) rename {docker => kolla/docker}/grafana/grafana_sudoers (100%) rename {docker => kolla/docker}/hacluster/hacluster-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/hacluster/hacluster-base/extend_start.sh (100%) rename {docker => kolla/docker}/hacluster/hacluster-corosync/Dockerfile.j2 (100%) rename {docker => kolla/docker}/hacluster/hacluster-pacemaker-remote/Dockerfile.j2 (100%) rename {docker => kolla/docker}/hacluster/hacluster-pacemaker/Dockerfile.j2 (100%) rename {docker => kolla/docker}/hacluster/hacluster-pcs/Dockerfile.j2 (100%) rename {docker => kolla/docker}/haproxy/haproxy-ssh/Dockerfile.j2 (100%) rename {docker => kolla/docker}/haproxy/haproxy-ssh/extend_start.sh (100%) rename {docker => kolla/docker}/haproxy/haproxy-ssh/update-loadbalancer-cert.sh (100%) rename {docker => kolla/docker}/haproxy/haproxy/Dockerfile.j2 (100%) rename {docker => kolla/docker}/haproxy/haproxy/ensure_latest_config.sh (100%) rename {docker => kolla/docker}/heat/heat-api-cfn/Dockerfile.j2 (100%) rename {docker => kolla/docker}/heat/heat-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/heat/heat-api/extend_start.sh (100%) rename {docker => kolla/docker}/heat/heat-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/heat/heat-base/extend_start.sh (100%) rename {docker => kolla/docker}/heat/heat-engine/Dockerfile.j2 (100%) rename {docker => kolla/docker}/horizon/Dockerfile.j2 (100%) rename {docker => kolla/docker}/horizon/extend_start.sh (100%) rename {docker => kolla/docker}/httpd/Dockerfile.j2 (100%) rename {docker => kolla/docker}/httpd/extend_start.sh (100%) rename {docker => kolla/docker}/httpd/httpd_setup.sh (100%) rename {docker => kolla/docker}/ironic/ironic-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ironic/ironic-api/extend_start.sh (100%) rename {docker => kolla/docker}/ironic/ironic-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ironic/ironic-base/extend_start.sh (100%) rename {docker => kolla/docker}/ironic/ironic-base/ironic_sudoers (100%) rename {docker => kolla/docker}/ironic/ironic-conductor/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ironic/ironic-prometheus-exporter/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ironic/ironic-pxe-filter/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ironic/ironic-pxe-filter/extend_start.sh (100%) rename {docker => kolla/docker}/ironic/ironic-pxe/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ironic/ironic-pxe/extend_start.sh (100%) rename {docker => kolla/docker}/ironic/ironic-pxe/tftp-map-file-template (100%) rename {docker => kolla/docker}/iscsid/Dockerfile.j2 (100%) rename {docker => kolla/docker}/iscsid/extend_start.sh (100%) rename {docker => kolla/docker}/keepalived/Dockerfile.j2 (100%) rename {docker => kolla/docker}/keepalived/check_alive.sh (100%) rename {docker => kolla/docker}/keepalived/extend_start.sh (100%) rename {docker => kolla/docker}/kerbside/kerbside-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/kerbside/kerbside-api/extend_start.sh (100%) rename {docker => kolla/docker}/kerbside/kerbside-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/kerbside/kerbside-proxy/Dockerfile.j2 (100%) rename {docker => kolla/docker}/kerbside/kerbside-proxy/extend_start.sh (100%) rename {docker => kolla/docker}/keystone/keystone-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/keystone/keystone-fernet/Dockerfile.j2 (100%) rename {docker => kolla/docker}/keystone/keystone-fernet/extend_start.sh (100%) rename {docker => kolla/docker}/keystone/keystone-fernet/fetch_fernet_tokens.py (100%) rename {docker => kolla/docker}/keystone/keystone-fernet/keystone_bootstrap.sh (100%) rename {docker => kolla/docker}/keystone/keystone-ssh/Dockerfile.j2 (100%) rename {docker => kolla/docker}/keystone/keystone-ssh/extend_start.sh (100%) rename {docker => kolla/docker}/keystone/keystone/Dockerfile.j2 (100%) rename {docker => kolla/docker}/keystone/keystone/extend_start.sh (100%) rename {docker => kolla/docker}/keystone/keystone/keystone_bootstrap.sh (100%) rename {docker => kolla/docker}/kolla-toolbox/Dockerfile.j2 (100%) rename {docker => kolla/docker}/kolla-toolbox/ansible.cfg (100%) rename {docker => kolla/docker}/kolla-toolbox/ansible_sudoers (100%) rename {docker => kolla/docker}/kolla-toolbox/apt_preferences_rabbitmq.debian (100%) rename {docker => kolla/docker}/kolla-toolbox/apt_preferences_rabbitmq.ubuntu (100%) rename {docker => kolla/docker}/kolla-toolbox/extend_start.sh (100%) rename {docker => kolla/docker}/kolla-toolbox/kolla_toolbox.sh (100%) rename {docker => kolla/docker}/kolla-toolbox/requirements.yml (100%) rename {docker => kolla/docker}/letsencrypt/letsencrypt-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/letsencrypt/letsencrypt-base/extend_start.sh (100%) rename {docker => kolla/docker}/letsencrypt/letsencrypt-lego/Dockerfile.j2 (100%) rename {docker => kolla/docker}/letsencrypt/letsencrypt-lego/letsencrypt-certificates.sh (100%) rename {docker => kolla/docker}/letsencrypt/letsencrypt-lego/sync-and-update-certificate.sh (100%) rename {docker => kolla/docker}/macros.j2 (100%) rename {docker => kolla/docker}/magnum/magnum-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/magnum/magnum-api/extend_start.sh (100%) rename {docker => kolla/docker}/magnum/magnum-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/magnum/magnum-base/extend_start.sh (100%) rename {docker => kolla/docker}/magnum/magnum-conductor/Dockerfile.j2 (100%) rename {docker => kolla/docker}/manila/manila-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/manila/manila-api/extend_start.sh (100%) rename {docker => kolla/docker}/manila/manila-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/manila/manila-base/extend_start.sh (100%) rename {docker => kolla/docker}/manila/manila-base/manila_sudoers (100%) rename {docker => kolla/docker}/manila/manila-data/Dockerfile.j2 (100%) rename {docker => kolla/docker}/manila/manila-scheduler/Dockerfile.j2 (100%) rename {docker => kolla/docker}/manila/manila-share/Dockerfile.j2 (100%) rename {docker => kolla/docker}/mariadb-server/Dockerfile.j2 (100%) rename {docker => kolla/docker}/mariadb-server/backup.sh (100%) rename {docker => kolla/docker}/mariadb-server/backup_replica.sh (100%) rename {docker => kolla/docker}/mariadb-server/extend_start.sh (100%) rename {docker => kolla/docker}/mariadb-server/healthcheck_mariadb (100%) rename {docker => kolla/docker}/mariadb-server/mariadb_sudoers (100%) rename {docker => kolla/docker}/mariadb-server/security_reset.expect (100%) rename {docker => kolla/docker}/masakari/masakari-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/masakari/masakari-api/extend_start.sh (100%) rename {docker => kolla/docker}/masakari/masakari-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/masakari/masakari-base/extend_start.sh (100%) rename {docker => kolla/docker}/masakari/masakari-engine/Dockerfile.j2 (100%) rename {docker => kolla/docker}/masakari/masakari-monitors/Dockerfile.j2 (100%) rename {docker => kolla/docker}/masakari/masakari-monitors/masakari_monitors_sudoers (100%) rename {docker => kolla/docker}/memcached/Dockerfile.j2 (100%) rename {docker => kolla/docker}/mistral/mistral-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/mistral/mistral-api/extend_start.sh (100%) rename {docker => kolla/docker}/mistral/mistral-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/mistral/mistral-base/extend_start.sh (100%) rename {docker => kolla/docker}/mistral/mistral-engine/Dockerfile.j2 (100%) rename {docker => kolla/docker}/mistral/mistral-event-engine/Dockerfile.j2 (100%) rename {docker => kolla/docker}/mistral/mistral-executor/Dockerfile.j2 (100%) rename {docker => kolla/docker}/multipathd/Dockerfile.j2 (100%) rename {docker => kolla/docker}/networking-baremetal/ironic-neutron-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-base/copy-wrappers (100%) rename {docker => kolla/docker}/neutron/neutron-base/delete-wrappers (100%) rename {docker => kolla/docker}/neutron/neutron-base/dnsmasq (100%) rename {docker => kolla/docker}/neutron/neutron-base/extend_start.sh (100%) rename {docker => kolla/docker}/neutron/neutron-base/haproxy (100%) rename {docker => kolla/docker}/neutron/neutron-base/keepalived (100%) rename {docker => kolla/docker}/neutron/neutron-base/neutron-keepalived-state-change (100%) rename {docker => kolla/docker}/neutron/neutron-base/neutron_sudoers (100%) rename {docker => kolla/docker}/neutron/neutron-base/radvd (100%) rename {docker => kolla/docker}/neutron/neutron-bgp-dragent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-dhcp-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-dhcp-agent/extend_start.sh (100%) rename {docker => kolla/docker}/neutron/neutron-l3-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-l3-agent/extend_start.sh (100%) rename {docker => kolla/docker}/neutron/neutron-metadata-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-metadata-agent/extend_start.sh (100%) rename {docker => kolla/docker}/neutron/neutron-metering-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-mlnx-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-openvswitch-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-ovn-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-ovn-vpn-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-server/Dockerfile.j2 (100%) rename {docker => kolla/docker}/neutron/neutron-server/extend_start.sh (100%) rename {docker => kolla/docker}/neutron/neutron-sriov-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-api/extend_start.sh (100%) rename {docker => kolla/docker}/nova/nova-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-base/extend_start.sh (100%) rename {docker => kolla/docker}/nova/nova-base/nova_sudoers (100%) rename {docker => kolla/docker}/nova/nova-compute-ironic/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-compute/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-compute/extend_start.sh (100%) rename {docker => kolla/docker}/nova/nova-conductor/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-conductor/extend_start.sh (100%) rename {docker => kolla/docker}/nova/nova-libvirt-spice/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-libvirt-spice/extend_start.sh (100%) rename {docker => kolla/docker}/nova/nova-libvirt-spice/kolla_nova_libvirt_start.sh (100%) rename {docker => kolla/docker}/nova/nova-libvirt/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-libvirt/extend_start.sh (100%) rename {docker => kolla/docker}/nova/nova-libvirt/kolla_nova_libvirt_start.sh (100%) rename {docker => kolla/docker}/nova/nova-novncproxy/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-scheduler/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-serialproxy/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-spicehtml5proxy/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-ssh/Dockerfile.j2 (100%) rename {docker => kolla/docker}/nova/nova-ssh/extend_start.sh (100%) rename {docker => kolla/docker}/octavia/octavia-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/octavia/octavia-api/extend_start.sh (100%) rename {docker => kolla/docker}/octavia/octavia-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/octavia/octavia-base/extend_start.sh (100%) rename {docker => kolla/docker}/octavia/octavia-driver-agent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/octavia/octavia-health-manager/Dockerfile.j2 (100%) rename {docker => kolla/docker}/octavia/octavia-housekeeping/Dockerfile.j2 (100%) rename {docker => kolla/docker}/octavia/octavia-worker/Dockerfile.j2 (100%) rename {docker => kolla/docker}/opensearch/opensearch-dashboards/Dockerfile.j2 (100%) rename {docker => kolla/docker}/opensearch/opensearch-dashboards/extend_start.sh (100%) rename {docker => kolla/docker}/opensearch/opensearch/Dockerfile.j2 (100%) rename {docker => kolla/docker}/opensearch/opensearch/extend_start.sh (100%) rename {docker => kolla/docker}/openstack-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/openvswitch/openvswitch-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/openvswitch/openvswitch-base/extend_start.sh (100%) rename {docker => kolla/docker}/openvswitch/openvswitch-base/ovs_wrapper.sh (100%) rename {docker => kolla/docker}/openvswitch/openvswitch-db-server/Dockerfile.j2 (100%) rename {docker => kolla/docker}/openvswitch/openvswitch-db-server/extend_start.sh (100%) rename {docker => kolla/docker}/openvswitch/openvswitch-db-server/releasenotes/notes/drop-ovs-ensure-configured-7973d36969e157fa.yaml (100%) rename {docker => kolla/docker}/openvswitch/openvswitch-vswitchd/Dockerfile.j2 (100%) rename {docker => kolla/docker}/openvswitch/openvswitch-vswitchd/extend_start.sh (100%) rename {docker => kolla/docker}/ovn/ovn-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ovn/ovn-base/extend_start.sh (100%) rename {docker => kolla/docker}/ovn/ovn-controller/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ovn/ovn-controller/extend_start.sh (100%) rename {docker => kolla/docker}/ovn/ovn-nb-db-server/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ovn/ovn-nb-db-server/extend_start.sh (100%) rename {docker => kolla/docker}/ovn/ovn-nb-db-server/start_nb_db_server.sh (100%) rename {docker => kolla/docker}/ovn/ovn-northd/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ovn/ovn-northd/extend_start.sh (100%) rename {docker => kolla/docker}/ovn/ovn-sb-db-relay/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ovn/ovn-sb-db-relay/extend_start.sh (100%) rename {docker => kolla/docker}/ovn/ovn-sb-db-server/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ovn/ovn-sb-db-server/extend_start.sh (100%) rename {docker => kolla/docker}/ovn/ovn-sb-db-server/start_sb_db_server.sh (100%) rename {docker => kolla/docker}/ovsdpdk/ovsdpdk-db/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ovsdpdk/ovsdpdk-db/extend_start.sh (100%) rename {docker => kolla/docker}/ovsdpdk/ovsdpdk-db/start_ovsdb_server.sh (100%) rename {docker => kolla/docker}/ovsdpdk/ovsdpdk-vswitchd/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ovsdpdk/ovsdpdk-vswitchd/extend_start.sh (100%) rename {docker => kolla/docker}/ovsdpdk/ovsdpdk/Dockerfile.j2 (100%) rename {docker => kolla/docker}/ovsdpdk/ovsdpdk/extend_start.sh (100%) rename {docker => kolla/docker}/placement/placement-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/placement/placement-api/extend_start.sh (100%) rename {docker => kolla/docker}/placement/placement-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/placement/placement-base/extend_start.sh (100%) rename {docker => kolla/docker}/prometheus/prometheus-alertmanager/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-base/extend_start.sh (100%) rename {docker => kolla/docker}/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-cadvisor/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-memcached-exporter/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-mtail/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-mysqld-exporter/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-node-exporter/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-openstack-exporter/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-openstack-network-exporter/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-server/Dockerfile.j2 (100%) rename {docker => kolla/docker}/prometheus/prometheus-valkey-exporter/Dockerfile.j2 (100%) rename {docker => kolla/docker}/proxysql/Dockerfile.j2 (100%) rename {docker => kolla/docker}/proxysql/kolla_extend_start (100%) rename {docker => kolla/docker}/proxysql/kolla_proxysql_config_sync (100%) rename {docker => kolla/docker}/rabbitmq/Dockerfile.j2 (100%) rename {docker => kolla/docker}/rabbitmq/apt_preferences_rabbitmq.debian (100%) rename {docker => kolla/docker}/rabbitmq/apt_preferences_rabbitmq.ubuntu (100%) rename {docker => kolla/docker}/rabbitmq/extend_start.sh (100%) rename {docker => kolla/docker}/rabbitmq/healthcheck_rabbitmq (100%) rename {docker => kolla/docker}/skyline/skyline-apiserver/Dockerfile.j2 (100%) rename {docker => kolla/docker}/skyline/skyline-apiserver/extend_start.sh (100%) rename {docker => kolla/docker}/skyline/skyline-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/skyline/skyline-base/extend_start.sh (100%) rename {docker => kolla/docker}/skyline/skyline-console/Dockerfile.j2 (100%) rename {docker => kolla/docker}/tacker/tacker-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/tacker/tacker-base/extend_start.sh (100%) rename {docker => kolla/docker}/tacker/tacker-conductor/Dockerfile.j2 (100%) rename {docker => kolla/docker}/tacker/tacker-server/Dockerfile.j2 (100%) rename {docker => kolla/docker}/tacker/tacker-server/extend_start.sh (100%) rename {docker => kolla/docker}/tgtd/Dockerfile.j2 (100%) rename {docker => kolla/docker}/trove/trove-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/trove/trove-api/extend_start.sh (100%) rename {docker => kolla/docker}/trove/trove-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/trove/trove-base/extend_start.sh (100%) rename {docker => kolla/docker}/trove/trove-conductor/Dockerfile.j2 (100%) rename {docker => kolla/docker}/trove/trove-guestagent/Dockerfile.j2 (100%) rename {docker => kolla/docker}/trove/trove-taskmanager/Dockerfile.j2 (100%) rename {docker => kolla/docker}/valkey/valkey-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/valkey/valkey-base/extend_start.sh (100%) rename {docker => kolla/docker}/valkey/valkey-sentinel/Dockerfile.j2 (100%) rename {docker => kolla/docker}/valkey/valkey-sentinel/extend_start.sh (100%) rename {docker => kolla/docker}/valkey/valkey-server/Dockerfile.j2 (100%) rename {docker => kolla/docker}/watcher/watcher-api/Dockerfile.j2 (100%) rename {docker => kolla/docker}/watcher/watcher-api/extend_start.sh (100%) rename {docker => kolla/docker}/watcher/watcher-applier/Dockerfile.j2 (100%) rename {docker => kolla/docker}/watcher/watcher-base/Dockerfile.j2 (100%) rename {docker => kolla/docker}/watcher/watcher-base/extend_start.sh (100%) rename {docker => kolla/docker}/watcher/watcher-engine/Dockerfile.j2 (100%) create mode 100644 pyproject.toml diff --git a/docker/aodh/aodh-api/Dockerfile.j2 b/kolla/docker/aodh/aodh-api/Dockerfile.j2 similarity index 100% rename from docker/aodh/aodh-api/Dockerfile.j2 rename to kolla/docker/aodh/aodh-api/Dockerfile.j2 diff --git a/docker/aodh/aodh-api/extend_start.sh b/kolla/docker/aodh/aodh-api/extend_start.sh similarity index 100% rename from docker/aodh/aodh-api/extend_start.sh rename to kolla/docker/aodh/aodh-api/extend_start.sh diff --git a/docker/aodh/aodh-base/Dockerfile.j2 b/kolla/docker/aodh/aodh-base/Dockerfile.j2 similarity index 100% rename from docker/aodh/aodh-base/Dockerfile.j2 rename to kolla/docker/aodh/aodh-base/Dockerfile.j2 diff --git a/docker/aodh/aodh-base/aodh_sudoers b/kolla/docker/aodh/aodh-base/aodh_sudoers similarity index 100% rename from docker/aodh/aodh-base/aodh_sudoers rename to kolla/docker/aodh/aodh-base/aodh_sudoers diff --git a/docker/aodh/aodh-base/extend_start.sh b/kolla/docker/aodh/aodh-base/extend_start.sh similarity index 100% rename from docker/aodh/aodh-base/extend_start.sh rename to kolla/docker/aodh/aodh-base/extend_start.sh diff --git a/docker/aodh/aodh-evaluator/Dockerfile.j2 b/kolla/docker/aodh/aodh-evaluator/Dockerfile.j2 similarity index 100% rename from docker/aodh/aodh-evaluator/Dockerfile.j2 rename to kolla/docker/aodh/aodh-evaluator/Dockerfile.j2 diff --git a/docker/aodh/aodh-expirer/Dockerfile.j2 b/kolla/docker/aodh/aodh-expirer/Dockerfile.j2 similarity index 100% rename from docker/aodh/aodh-expirer/Dockerfile.j2 rename to kolla/docker/aodh/aodh-expirer/Dockerfile.j2 diff --git a/docker/aodh/aodh-listener/Dockerfile.j2 b/kolla/docker/aodh/aodh-listener/Dockerfile.j2 similarity index 100% rename from docker/aodh/aodh-listener/Dockerfile.j2 rename to kolla/docker/aodh/aodh-listener/Dockerfile.j2 diff --git a/docker/aodh/aodh-notifier/Dockerfile.j2 b/kolla/docker/aodh/aodh-notifier/Dockerfile.j2 similarity index 100% rename from docker/aodh/aodh-notifier/Dockerfile.j2 rename to kolla/docker/aodh/aodh-notifier/Dockerfile.j2 diff --git a/docker/barbican/barbican-api/Dockerfile.j2 b/kolla/docker/barbican/barbican-api/Dockerfile.j2 similarity index 100% rename from docker/barbican/barbican-api/Dockerfile.j2 rename to kolla/docker/barbican/barbican-api/Dockerfile.j2 diff --git a/docker/barbican/barbican-api/extend_start.sh b/kolla/docker/barbican/barbican-api/extend_start.sh similarity index 100% rename from docker/barbican/barbican-api/extend_start.sh rename to kolla/docker/barbican/barbican-api/extend_start.sh diff --git a/docker/barbican/barbican-base/Dockerfile.j2 b/kolla/docker/barbican/barbican-base/Dockerfile.j2 similarity index 100% rename from docker/barbican/barbican-base/Dockerfile.j2 rename to kolla/docker/barbican/barbican-base/Dockerfile.j2 diff --git a/docker/barbican/barbican-base/barbican_sudoers b/kolla/docker/barbican/barbican-base/barbican_sudoers similarity index 100% rename from docker/barbican/barbican-base/barbican_sudoers rename to kolla/docker/barbican/barbican-base/barbican_sudoers diff --git a/docker/barbican/barbican-base/extend_start.sh b/kolla/docker/barbican/barbican-base/extend_start.sh similarity index 100% rename from docker/barbican/barbican-base/extend_start.sh rename to kolla/docker/barbican/barbican-base/extend_start.sh diff --git a/docker/barbican/barbican-keystone-listener/Dockerfile.j2 b/kolla/docker/barbican/barbican-keystone-listener/Dockerfile.j2 similarity index 100% rename from docker/barbican/barbican-keystone-listener/Dockerfile.j2 rename to kolla/docker/barbican/barbican-keystone-listener/Dockerfile.j2 diff --git a/docker/barbican/barbican-worker/Dockerfile.j2 b/kolla/docker/barbican/barbican-worker/Dockerfile.j2 similarity index 100% rename from docker/barbican/barbican-worker/Dockerfile.j2 rename to kolla/docker/barbican/barbican-worker/Dockerfile.j2 diff --git a/docker/base/Dockerfile.j2 b/kolla/docker/base/Dockerfile.j2 similarity index 100% rename from docker/base/Dockerfile.j2 rename to kolla/docker/base/Dockerfile.j2 diff --git a/docker/base/apt_preferences b/kolla/docker/base/apt_preferences similarity index 100% rename from docker/base/apt_preferences rename to kolla/docker/base/apt_preferences diff --git a/docker/base/apt_preferences.debian b/kolla/docker/base/apt_preferences.debian similarity index 100% rename from docker/base/apt_preferences.debian rename to kolla/docker/base/apt_preferences.debian diff --git a/docker/base/apt_preferences.ubuntu b/kolla/docker/base/apt_preferences.ubuntu similarity index 100% rename from docker/base/apt_preferences.ubuntu rename to kolla/docker/base/apt_preferences.ubuntu diff --git a/docker/base/ci-centos.repo b/kolla/docker/base/ci-centos.repo similarity index 100% rename from docker/base/ci-centos.repo rename to kolla/docker/base/ci-centos.repo diff --git a/docker/base/copy_cacerts.sh b/kolla/docker/base/copy_cacerts.sh similarity index 100% rename from docker/base/copy_cacerts.sh rename to kolla/docker/base/copy_cacerts.sh diff --git a/docker/base/curlrc b/kolla/docker/base/curlrc similarity index 100% rename from docker/base/curlrc rename to kolla/docker/base/curlrc diff --git a/docker/base/debian.sources b/kolla/docker/base/debian.sources similarity index 100% rename from docker/base/debian.sources rename to kolla/docker/base/debian.sources diff --git a/docker/base/dnf.conf b/kolla/docker/base/dnf.conf similarity index 100% rename from docker/base/dnf.conf rename to kolla/docker/base/dnf.conf diff --git a/docker/base/dpkg_reducing_disk_footprint b/kolla/docker/base/dpkg_reducing_disk_footprint similarity index 100% rename from docker/base/dpkg_reducing_disk_footprint rename to kolla/docker/base/dpkg_reducing_disk_footprint diff --git a/docker/base/healthcheck_curl b/kolla/docker/base/healthcheck_curl similarity index 100% rename from docker/base/healthcheck_curl rename to kolla/docker/base/healthcheck_curl diff --git a/docker/base/healthcheck_filemod b/kolla/docker/base/healthcheck_filemod similarity index 100% rename from docker/base/healthcheck_filemod rename to kolla/docker/base/healthcheck_filemod diff --git a/docker/base/healthcheck_listen b/kolla/docker/base/healthcheck_listen similarity index 100% rename from docker/base/healthcheck_listen rename to kolla/docker/base/healthcheck_listen diff --git a/docker/base/healthcheck_port b/kolla/docker/base/healthcheck_port similarity index 100% rename from docker/base/healthcheck_port rename to kolla/docker/base/healthcheck_port diff --git a/docker/base/healthcheck_socket b/kolla/docker/base/healthcheck_socket similarity index 100% rename from docker/base/healthcheck_socket rename to kolla/docker/base/healthcheck_socket diff --git a/docker/base/install_projects.sh b/kolla/docker/base/install_projects.sh similarity index 100% rename from docker/base/install_projects.sh rename to kolla/docker/base/install_projects.sh diff --git a/docker/base/kolla_bashrc b/kolla/docker/base/kolla_bashrc similarity index 100% rename from docker/base/kolla_bashrc rename to kolla/docker/base/kolla_bashrc diff --git a/docker/base/kolla_patch.sh b/kolla/docker/base/kolla_patch.sh similarity index 100% rename from docker/base/kolla_patch.sh rename to kolla/docker/base/kolla_patch.sh diff --git a/docker/base/set_configs.py b/kolla/docker/base/set_configs.py similarity index 100% rename from docker/base/set_configs.py rename to kolla/docker/base/set_configs.py diff --git a/docker/base/sources.list b/kolla/docker/base/sources.list similarity index 100% rename from docker/base/sources.list rename to kolla/docker/base/sources.list diff --git a/docker/base/start.sh b/kolla/docker/base/start.sh similarity index 100% rename from docker/base/start.sh rename to kolla/docker/base/start.sh diff --git a/docker/base/sudoers b/kolla/docker/base/sudoers similarity index 100% rename from docker/base/sudoers rename to kolla/docker/base/sudoers diff --git a/docker/base/ubuntu.sources b/kolla/docker/base/ubuntu.sources similarity index 100% rename from docker/base/ubuntu.sources rename to kolla/docker/base/ubuntu.sources diff --git a/docker/base/ubuntu.sources.arm64 b/kolla/docker/base/ubuntu.sources.arm64 similarity index 100% rename from docker/base/ubuntu.sources.arm64 rename to kolla/docker/base/ubuntu.sources.arm64 diff --git a/docker/bifrost/bifrost-base/Dockerfile.j2 b/kolla/docker/bifrost/bifrost-base/Dockerfile.j2 similarity index 100% rename from docker/bifrost/bifrost-base/Dockerfile.j2 rename to kolla/docker/bifrost/bifrost-base/Dockerfile.j2 diff --git a/docker/bifrost/bifrost-base/bifrost_sudoers b/kolla/docker/bifrost/bifrost-base/bifrost_sudoers similarity index 100% rename from docker/bifrost/bifrost-base/bifrost_sudoers rename to kolla/docker/bifrost/bifrost-base/bifrost_sudoers diff --git a/docker/bifrost/bifrost-base/build_arg.yml b/kolla/docker/bifrost/bifrost-base/build_arg.yml similarity index 100% rename from docker/bifrost/bifrost-base/build_arg.yml rename to kolla/docker/bifrost/bifrost-base/build_arg.yml diff --git a/docker/bifrost/bifrost-deploy/Dockerfile.j2 b/kolla/docker/bifrost/bifrost-deploy/Dockerfile.j2 similarity index 100% rename from docker/bifrost/bifrost-deploy/Dockerfile.j2 rename to kolla/docker/bifrost/bifrost-deploy/Dockerfile.j2 diff --git a/docker/blazar/blazar-api/Dockerfile.j2 b/kolla/docker/blazar/blazar-api/Dockerfile.j2 similarity index 100% rename from docker/blazar/blazar-api/Dockerfile.j2 rename to kolla/docker/blazar/blazar-api/Dockerfile.j2 diff --git a/docker/blazar/blazar-api/extend_start.sh b/kolla/docker/blazar/blazar-api/extend_start.sh similarity index 100% rename from docker/blazar/blazar-api/extend_start.sh rename to kolla/docker/blazar/blazar-api/extend_start.sh diff --git a/docker/blazar/blazar-base/Dockerfile.j2 b/kolla/docker/blazar/blazar-base/Dockerfile.j2 similarity index 100% rename from docker/blazar/blazar-base/Dockerfile.j2 rename to kolla/docker/blazar/blazar-base/Dockerfile.j2 diff --git a/docker/blazar/blazar-base/extend_start.sh b/kolla/docker/blazar/blazar-base/extend_start.sh similarity index 100% rename from docker/blazar/blazar-base/extend_start.sh rename to kolla/docker/blazar/blazar-base/extend_start.sh diff --git a/docker/blazar/blazar-manager/Dockerfile.j2 b/kolla/docker/blazar/blazar-manager/Dockerfile.j2 similarity index 100% rename from docker/blazar/blazar-manager/Dockerfile.j2 rename to kolla/docker/blazar/blazar-manager/Dockerfile.j2 diff --git a/docker/ceilometer/ceilometer-base/Dockerfile.j2 b/kolla/docker/ceilometer/ceilometer-base/Dockerfile.j2 similarity index 100% rename from docker/ceilometer/ceilometer-base/Dockerfile.j2 rename to kolla/docker/ceilometer/ceilometer-base/Dockerfile.j2 diff --git a/docker/ceilometer/ceilometer-base/ceilometer_sudoers b/kolla/docker/ceilometer/ceilometer-base/ceilometer_sudoers similarity index 100% rename from docker/ceilometer/ceilometer-base/ceilometer_sudoers rename to kolla/docker/ceilometer/ceilometer-base/ceilometer_sudoers diff --git a/docker/ceilometer/ceilometer-base/extend_start.sh b/kolla/docker/ceilometer/ceilometer-base/extend_start.sh similarity index 100% rename from docker/ceilometer/ceilometer-base/extend_start.sh rename to kolla/docker/ceilometer/ceilometer-base/extend_start.sh diff --git a/docker/ceilometer/ceilometer-central/Dockerfile.j2 b/kolla/docker/ceilometer/ceilometer-central/Dockerfile.j2 similarity index 100% rename from docker/ceilometer/ceilometer-central/Dockerfile.j2 rename to kolla/docker/ceilometer/ceilometer-central/Dockerfile.j2 diff --git a/docker/ceilometer/ceilometer-compute/Dockerfile.j2 b/kolla/docker/ceilometer/ceilometer-compute/Dockerfile.j2 similarity index 100% rename from docker/ceilometer/ceilometer-compute/Dockerfile.j2 rename to kolla/docker/ceilometer/ceilometer-compute/Dockerfile.j2 diff --git a/docker/ceilometer/ceilometer-ipmi/Dockerfile.j2 b/kolla/docker/ceilometer/ceilometer-ipmi/Dockerfile.j2 similarity index 100% rename from docker/ceilometer/ceilometer-ipmi/Dockerfile.j2 rename to kolla/docker/ceilometer/ceilometer-ipmi/Dockerfile.j2 diff --git a/docker/ceilometer/ceilometer-notification/Dockerfile.j2 b/kolla/docker/ceilometer/ceilometer-notification/Dockerfile.j2 similarity index 100% rename from docker/ceilometer/ceilometer-notification/Dockerfile.j2 rename to kolla/docker/ceilometer/ceilometer-notification/Dockerfile.j2 diff --git a/docker/ceilometer/ceilometer-notification/extend_start.sh b/kolla/docker/ceilometer/ceilometer-notification/extend_start.sh similarity index 100% rename from docker/ceilometer/ceilometer-notification/extend_start.sh rename to kolla/docker/ceilometer/ceilometer-notification/extend_start.sh diff --git a/docker/cinder/cinder-api/Dockerfile.j2 b/kolla/docker/cinder/cinder-api/Dockerfile.j2 similarity index 100% rename from docker/cinder/cinder-api/Dockerfile.j2 rename to kolla/docker/cinder/cinder-api/Dockerfile.j2 diff --git a/docker/cinder/cinder-api/extend_start.sh b/kolla/docker/cinder/cinder-api/extend_start.sh similarity index 100% rename from docker/cinder/cinder-api/extend_start.sh rename to kolla/docker/cinder/cinder-api/extend_start.sh diff --git a/docker/cinder/cinder-backup/Dockerfile.j2 b/kolla/docker/cinder/cinder-backup/Dockerfile.j2 similarity index 100% rename from docker/cinder/cinder-backup/Dockerfile.j2 rename to kolla/docker/cinder/cinder-backup/Dockerfile.j2 diff --git a/docker/cinder/cinder-base/Dockerfile.j2 b/kolla/docker/cinder/cinder-base/Dockerfile.j2 similarity index 100% rename from docker/cinder/cinder-base/Dockerfile.j2 rename to kolla/docker/cinder/cinder-base/Dockerfile.j2 diff --git a/docker/cinder/cinder-base/cinder_sudoers b/kolla/docker/cinder/cinder-base/cinder_sudoers similarity index 100% rename from docker/cinder/cinder-base/cinder_sudoers rename to kolla/docker/cinder/cinder-base/cinder_sudoers diff --git a/docker/cinder/cinder-base/extend_start.sh b/kolla/docker/cinder/cinder-base/extend_start.sh similarity index 100% rename from docker/cinder/cinder-base/extend_start.sh rename to kolla/docker/cinder/cinder-base/extend_start.sh diff --git a/docker/cinder/cinder-scheduler/Dockerfile.j2 b/kolla/docker/cinder/cinder-scheduler/Dockerfile.j2 similarity index 100% rename from docker/cinder/cinder-scheduler/Dockerfile.j2 rename to kolla/docker/cinder/cinder-scheduler/Dockerfile.j2 diff --git a/docker/cinder/cinder-volume/Dockerfile.j2 b/kolla/docker/cinder/cinder-volume/Dockerfile.j2 similarity index 100% rename from docker/cinder/cinder-volume/Dockerfile.j2 rename to kolla/docker/cinder/cinder-volume/Dockerfile.j2 diff --git a/docker/cinder/cinder-volume/cinder_sudoers b/kolla/docker/cinder/cinder-volume/cinder_sudoers similarity index 100% rename from docker/cinder/cinder-volume/cinder_sudoers rename to kolla/docker/cinder/cinder-volume/cinder_sudoers diff --git a/docker/cinder/cinder-volume/extend_start.sh b/kolla/docker/cinder/cinder-volume/extend_start.sh similarity index 100% rename from docker/cinder/cinder-volume/extend_start.sh rename to kolla/docker/cinder/cinder-volume/extend_start.sh diff --git a/docker/cloudkitty/cloudkitty-api/Dockerfile.j2 b/kolla/docker/cloudkitty/cloudkitty-api/Dockerfile.j2 similarity index 100% rename from docker/cloudkitty/cloudkitty-api/Dockerfile.j2 rename to kolla/docker/cloudkitty/cloudkitty-api/Dockerfile.j2 diff --git a/docker/cloudkitty/cloudkitty-api/extend_start.sh b/kolla/docker/cloudkitty/cloudkitty-api/extend_start.sh similarity index 100% rename from docker/cloudkitty/cloudkitty-api/extend_start.sh rename to kolla/docker/cloudkitty/cloudkitty-api/extend_start.sh diff --git a/docker/cloudkitty/cloudkitty-base/Dockerfile.j2 b/kolla/docker/cloudkitty/cloudkitty-base/Dockerfile.j2 similarity index 100% rename from docker/cloudkitty/cloudkitty-base/Dockerfile.j2 rename to kolla/docker/cloudkitty/cloudkitty-base/Dockerfile.j2 diff --git a/docker/cloudkitty/cloudkitty-base/extend_start.sh b/kolla/docker/cloudkitty/cloudkitty-base/extend_start.sh similarity index 100% rename from docker/cloudkitty/cloudkitty-base/extend_start.sh rename to kolla/docker/cloudkitty/cloudkitty-base/extend_start.sh diff --git a/docker/cloudkitty/cloudkitty-processor/Dockerfile.j2 b/kolla/docker/cloudkitty/cloudkitty-processor/Dockerfile.j2 similarity index 100% rename from docker/cloudkitty/cloudkitty-processor/Dockerfile.j2 rename to kolla/docker/cloudkitty/cloudkitty-processor/Dockerfile.j2 diff --git a/docker/collectd/Dockerfile.j2 b/kolla/docker/collectd/Dockerfile.j2 similarity index 100% rename from docker/collectd/Dockerfile.j2 rename to kolla/docker/collectd/Dockerfile.j2 diff --git a/docker/collectd/extend_start.sh b/kolla/docker/collectd/extend_start.sh similarity index 100% rename from docker/collectd/extend_start.sh rename to kolla/docker/collectd/extend_start.sh diff --git a/docker/cron/Dockerfile.j2 b/kolla/docker/cron/Dockerfile.j2 similarity index 100% rename from docker/cron/Dockerfile.j2 rename to kolla/docker/cron/Dockerfile.j2 diff --git a/docker/cron/extend_start.sh b/kolla/docker/cron/extend_start.sh similarity index 100% rename from docker/cron/extend_start.sh rename to kolla/docker/cron/extend_start.sh diff --git a/docker/cron/logrotate b/kolla/docker/cron/logrotate similarity index 100% rename from docker/cron/logrotate rename to kolla/docker/cron/logrotate diff --git a/docker/cyborg/cyborg-agent/Dockerfile.j2 b/kolla/docker/cyborg/cyborg-agent/Dockerfile.j2 similarity index 100% rename from docker/cyborg/cyborg-agent/Dockerfile.j2 rename to kolla/docker/cyborg/cyborg-agent/Dockerfile.j2 diff --git a/docker/cyborg/cyborg-api/Dockerfile.j2 b/kolla/docker/cyborg/cyborg-api/Dockerfile.j2 similarity index 100% rename from docker/cyborg/cyborg-api/Dockerfile.j2 rename to kolla/docker/cyborg/cyborg-api/Dockerfile.j2 diff --git a/docker/cyborg/cyborg-api/extend_start.sh b/kolla/docker/cyborg/cyborg-api/extend_start.sh similarity index 100% rename from docker/cyborg/cyborg-api/extend_start.sh rename to kolla/docker/cyborg/cyborg-api/extend_start.sh diff --git a/docker/cyborg/cyborg-base/Dockerfile.j2 b/kolla/docker/cyborg/cyborg-base/Dockerfile.j2 similarity index 100% rename from docker/cyborg/cyborg-base/Dockerfile.j2 rename to kolla/docker/cyborg/cyborg-base/Dockerfile.j2 diff --git a/docker/cyborg/cyborg-base/cyborg_sudoers b/kolla/docker/cyborg/cyborg-base/cyborg_sudoers similarity index 100% rename from docker/cyborg/cyborg-base/cyborg_sudoers rename to kolla/docker/cyborg/cyborg-base/cyborg_sudoers diff --git a/docker/cyborg/cyborg-base/extend_start.sh b/kolla/docker/cyborg/cyborg-base/extend_start.sh similarity index 100% rename from docker/cyborg/cyborg-base/extend_start.sh rename to kolla/docker/cyborg/cyborg-base/extend_start.sh diff --git a/docker/cyborg/cyborg-conductor/Dockerfile.j2 b/kolla/docker/cyborg/cyborg-conductor/Dockerfile.j2 similarity index 100% rename from docker/cyborg/cyborg-conductor/Dockerfile.j2 rename to kolla/docker/cyborg/cyborg-conductor/Dockerfile.j2 diff --git a/docker/designate/designate-api/Dockerfile.j2 b/kolla/docker/designate/designate-api/Dockerfile.j2 similarity index 100% rename from docker/designate/designate-api/Dockerfile.j2 rename to kolla/docker/designate/designate-api/Dockerfile.j2 diff --git a/docker/designate/designate-backend-bind9/Dockerfile.j2 b/kolla/docker/designate/designate-backend-bind9/Dockerfile.j2 similarity index 100% rename from docker/designate/designate-backend-bind9/Dockerfile.j2 rename to kolla/docker/designate/designate-backend-bind9/Dockerfile.j2 diff --git a/docker/designate/designate-base/Dockerfile.j2 b/kolla/docker/designate/designate-base/Dockerfile.j2 similarity index 100% rename from docker/designate/designate-base/Dockerfile.j2 rename to kolla/docker/designate/designate-base/Dockerfile.j2 diff --git a/docker/designate/designate-base/designate_sudoers b/kolla/docker/designate/designate-base/designate_sudoers similarity index 100% rename from docker/designate/designate-base/designate_sudoers rename to kolla/docker/designate/designate-base/designate_sudoers diff --git a/docker/designate/designate-base/extend_start.sh b/kolla/docker/designate/designate-base/extend_start.sh similarity index 100% rename from docker/designate/designate-base/extend_start.sh rename to kolla/docker/designate/designate-base/extend_start.sh diff --git a/docker/designate/designate-central/Dockerfile.j2 b/kolla/docker/designate/designate-central/Dockerfile.j2 similarity index 100% rename from docker/designate/designate-central/Dockerfile.j2 rename to kolla/docker/designate/designate-central/Dockerfile.j2 diff --git a/docker/designate/designate-central/extend_start.sh b/kolla/docker/designate/designate-central/extend_start.sh similarity index 100% rename from docker/designate/designate-central/extend_start.sh rename to kolla/docker/designate/designate-central/extend_start.sh diff --git a/docker/designate/designate-mdns/Dockerfile.j2 b/kolla/docker/designate/designate-mdns/Dockerfile.j2 similarity index 100% rename from docker/designate/designate-mdns/Dockerfile.j2 rename to kolla/docker/designate/designate-mdns/Dockerfile.j2 diff --git a/docker/designate/designate-producer/Dockerfile.j2 b/kolla/docker/designate/designate-producer/Dockerfile.j2 similarity index 100% rename from docker/designate/designate-producer/Dockerfile.j2 rename to kolla/docker/designate/designate-producer/Dockerfile.j2 diff --git a/docker/designate/designate-sink/Dockerfile.j2 b/kolla/docker/designate/designate-sink/Dockerfile.j2 similarity index 100% rename from docker/designate/designate-sink/Dockerfile.j2 rename to kolla/docker/designate/designate-sink/Dockerfile.j2 diff --git a/docker/designate/designate-worker/Dockerfile.j2 b/kolla/docker/designate/designate-worker/Dockerfile.j2 similarity index 100% rename from docker/designate/designate-worker/Dockerfile.j2 rename to kolla/docker/designate/designate-worker/Dockerfile.j2 diff --git a/docker/dnsmasq/Dockerfile.j2 b/kolla/docker/dnsmasq/Dockerfile.j2 similarity index 100% rename from docker/dnsmasq/Dockerfile.j2 rename to kolla/docker/dnsmasq/Dockerfile.j2 diff --git a/docker/dnsmasq/extend_start.sh b/kolla/docker/dnsmasq/extend_start.sh similarity index 100% rename from docker/dnsmasq/extend_start.sh rename to kolla/docker/dnsmasq/extend_start.sh diff --git a/docker/etcd/Dockerfile.j2 b/kolla/docker/etcd/Dockerfile.j2 similarity index 100% rename from docker/etcd/Dockerfile.j2 rename to kolla/docker/etcd/Dockerfile.j2 diff --git a/docker/etcd/etcd_sudoers b/kolla/docker/etcd/etcd_sudoers similarity index 100% rename from docker/etcd/etcd_sudoers rename to kolla/docker/etcd/etcd_sudoers diff --git a/docker/etcd/extend_start.sh b/kolla/docker/etcd/extend_start.sh similarity index 100% rename from docker/etcd/extend_start.sh rename to kolla/docker/etcd/extend_start.sh diff --git a/docker/fluentd/Dockerfile.j2 b/kolla/docker/fluentd/Dockerfile.j2 similarity index 100% rename from docker/fluentd/Dockerfile.j2 rename to kolla/docker/fluentd/Dockerfile.j2 diff --git a/docker/fluentd/extend_start.sh b/kolla/docker/fluentd/extend_start.sh similarity index 100% rename from docker/fluentd/extend_start.sh rename to kolla/docker/fluentd/extend_start.sh diff --git a/docker/fluentd/fluentd_sudoers b/kolla/docker/fluentd/fluentd_sudoers similarity index 100% rename from docker/fluentd/fluentd_sudoers rename to kolla/docker/fluentd/fluentd_sudoers diff --git a/docker/glance/glance-api/Dockerfile.j2 b/kolla/docker/glance/glance-api/Dockerfile.j2 similarity index 100% rename from docker/glance/glance-api/Dockerfile.j2 rename to kolla/docker/glance/glance-api/Dockerfile.j2 diff --git a/docker/glance/glance-api/extend_start.sh b/kolla/docker/glance/glance-api/extend_start.sh similarity index 100% rename from docker/glance/glance-api/extend_start.sh rename to kolla/docker/glance/glance-api/extend_start.sh diff --git a/docker/glance/glance-base/Dockerfile.j2 b/kolla/docker/glance/glance-base/Dockerfile.j2 similarity index 100% rename from docker/glance/glance-base/Dockerfile.j2 rename to kolla/docker/glance/glance-base/Dockerfile.j2 diff --git a/docker/glance/glance-base/etc/glance/rootwrap.conf b/kolla/docker/glance/glance-base/etc/glance/rootwrap.conf similarity index 100% rename from docker/glance/glance-base/etc/glance/rootwrap.conf rename to kolla/docker/glance/glance-base/etc/glance/rootwrap.conf diff --git a/docker/glance/glance-base/etc/glance/rootwrap.d/glance_cinder_store.filters b/kolla/docker/glance/glance-base/etc/glance/rootwrap.d/glance_cinder_store.filters similarity index 100% rename from docker/glance/glance-base/etc/glance/rootwrap.d/glance_cinder_store.filters rename to kolla/docker/glance/glance-base/etc/glance/rootwrap.d/glance_cinder_store.filters diff --git a/docker/glance/glance-base/extend_start.sh b/kolla/docker/glance/glance-base/extend_start.sh similarity index 100% rename from docker/glance/glance-base/extend_start.sh rename to kolla/docker/glance/glance-base/extend_start.sh diff --git a/docker/glance/glance-base/glance_sudoers b/kolla/docker/glance/glance-base/glance_sudoers similarity index 100% rename from docker/glance/glance-base/glance_sudoers rename to kolla/docker/glance/glance-base/glance_sudoers diff --git a/docker/gnocchi/gnocchi-api/Dockerfile.j2 b/kolla/docker/gnocchi/gnocchi-api/Dockerfile.j2 similarity index 100% rename from docker/gnocchi/gnocchi-api/Dockerfile.j2 rename to kolla/docker/gnocchi/gnocchi-api/Dockerfile.j2 diff --git a/docker/gnocchi/gnocchi-api/extend_start.sh b/kolla/docker/gnocchi/gnocchi-api/extend_start.sh similarity index 100% rename from docker/gnocchi/gnocchi-api/extend_start.sh rename to kolla/docker/gnocchi/gnocchi-api/extend_start.sh diff --git a/docker/gnocchi/gnocchi-base/Dockerfile.j2 b/kolla/docker/gnocchi/gnocchi-base/Dockerfile.j2 similarity index 100% rename from docker/gnocchi/gnocchi-base/Dockerfile.j2 rename to kolla/docker/gnocchi/gnocchi-base/Dockerfile.j2 diff --git a/docker/gnocchi/gnocchi-base/extend_start.sh b/kolla/docker/gnocchi/gnocchi-base/extend_start.sh similarity index 100% rename from docker/gnocchi/gnocchi-base/extend_start.sh rename to kolla/docker/gnocchi/gnocchi-base/extend_start.sh diff --git a/docker/gnocchi/gnocchi-base/gnocchi_sudoers b/kolla/docker/gnocchi/gnocchi-base/gnocchi_sudoers similarity index 100% rename from docker/gnocchi/gnocchi-base/gnocchi_sudoers rename to kolla/docker/gnocchi/gnocchi-base/gnocchi_sudoers diff --git a/docker/gnocchi/gnocchi-metricd/Dockerfile.j2 b/kolla/docker/gnocchi/gnocchi-metricd/Dockerfile.j2 similarity index 100% rename from docker/gnocchi/gnocchi-metricd/Dockerfile.j2 rename to kolla/docker/gnocchi/gnocchi-metricd/Dockerfile.j2 diff --git a/docker/gnocchi/gnocchi-statsd/Dockerfile.j2 b/kolla/docker/gnocchi/gnocchi-statsd/Dockerfile.j2 similarity index 100% rename from docker/gnocchi/gnocchi-statsd/Dockerfile.j2 rename to kolla/docker/gnocchi/gnocchi-statsd/Dockerfile.j2 diff --git a/docker/grafana/Dockerfile.j2 b/kolla/docker/grafana/Dockerfile.j2 similarity index 100% rename from docker/grafana/Dockerfile.j2 rename to kolla/docker/grafana/Dockerfile.j2 diff --git a/docker/grafana/extend_start.sh b/kolla/docker/grafana/extend_start.sh similarity index 100% rename from docker/grafana/extend_start.sh rename to kolla/docker/grafana/extend_start.sh diff --git a/docker/grafana/grafana_sudoers b/kolla/docker/grafana/grafana_sudoers similarity index 100% rename from docker/grafana/grafana_sudoers rename to kolla/docker/grafana/grafana_sudoers diff --git a/docker/hacluster/hacluster-base/Dockerfile.j2 b/kolla/docker/hacluster/hacluster-base/Dockerfile.j2 similarity index 100% rename from docker/hacluster/hacluster-base/Dockerfile.j2 rename to kolla/docker/hacluster/hacluster-base/Dockerfile.j2 diff --git a/docker/hacluster/hacluster-base/extend_start.sh b/kolla/docker/hacluster/hacluster-base/extend_start.sh similarity index 100% rename from docker/hacluster/hacluster-base/extend_start.sh rename to kolla/docker/hacluster/hacluster-base/extend_start.sh diff --git a/docker/hacluster/hacluster-corosync/Dockerfile.j2 b/kolla/docker/hacluster/hacluster-corosync/Dockerfile.j2 similarity index 100% rename from docker/hacluster/hacluster-corosync/Dockerfile.j2 rename to kolla/docker/hacluster/hacluster-corosync/Dockerfile.j2 diff --git a/docker/hacluster/hacluster-pacemaker-remote/Dockerfile.j2 b/kolla/docker/hacluster/hacluster-pacemaker-remote/Dockerfile.j2 similarity index 100% rename from docker/hacluster/hacluster-pacemaker-remote/Dockerfile.j2 rename to kolla/docker/hacluster/hacluster-pacemaker-remote/Dockerfile.j2 diff --git a/docker/hacluster/hacluster-pacemaker/Dockerfile.j2 b/kolla/docker/hacluster/hacluster-pacemaker/Dockerfile.j2 similarity index 100% rename from docker/hacluster/hacluster-pacemaker/Dockerfile.j2 rename to kolla/docker/hacluster/hacluster-pacemaker/Dockerfile.j2 diff --git a/docker/hacluster/hacluster-pcs/Dockerfile.j2 b/kolla/docker/hacluster/hacluster-pcs/Dockerfile.j2 similarity index 100% rename from docker/hacluster/hacluster-pcs/Dockerfile.j2 rename to kolla/docker/hacluster/hacluster-pcs/Dockerfile.j2 diff --git a/docker/haproxy/haproxy-ssh/Dockerfile.j2 b/kolla/docker/haproxy/haproxy-ssh/Dockerfile.j2 similarity index 100% rename from docker/haproxy/haproxy-ssh/Dockerfile.j2 rename to kolla/docker/haproxy/haproxy-ssh/Dockerfile.j2 diff --git a/docker/haproxy/haproxy-ssh/extend_start.sh b/kolla/docker/haproxy/haproxy-ssh/extend_start.sh similarity index 100% rename from docker/haproxy/haproxy-ssh/extend_start.sh rename to kolla/docker/haproxy/haproxy-ssh/extend_start.sh diff --git a/docker/haproxy/haproxy-ssh/update-loadbalancer-cert.sh b/kolla/docker/haproxy/haproxy-ssh/update-loadbalancer-cert.sh similarity index 100% rename from docker/haproxy/haproxy-ssh/update-loadbalancer-cert.sh rename to kolla/docker/haproxy/haproxy-ssh/update-loadbalancer-cert.sh diff --git a/docker/haproxy/haproxy/Dockerfile.j2 b/kolla/docker/haproxy/haproxy/Dockerfile.j2 similarity index 100% rename from docker/haproxy/haproxy/Dockerfile.j2 rename to kolla/docker/haproxy/haproxy/Dockerfile.j2 diff --git a/docker/haproxy/haproxy/ensure_latest_config.sh b/kolla/docker/haproxy/haproxy/ensure_latest_config.sh similarity index 100% rename from docker/haproxy/haproxy/ensure_latest_config.sh rename to kolla/docker/haproxy/haproxy/ensure_latest_config.sh diff --git a/docker/heat/heat-api-cfn/Dockerfile.j2 b/kolla/docker/heat/heat-api-cfn/Dockerfile.j2 similarity index 100% rename from docker/heat/heat-api-cfn/Dockerfile.j2 rename to kolla/docker/heat/heat-api-cfn/Dockerfile.j2 diff --git a/docker/heat/heat-api/Dockerfile.j2 b/kolla/docker/heat/heat-api/Dockerfile.j2 similarity index 100% rename from docker/heat/heat-api/Dockerfile.j2 rename to kolla/docker/heat/heat-api/Dockerfile.j2 diff --git a/docker/heat/heat-api/extend_start.sh b/kolla/docker/heat/heat-api/extend_start.sh similarity index 100% rename from docker/heat/heat-api/extend_start.sh rename to kolla/docker/heat/heat-api/extend_start.sh diff --git a/docker/heat/heat-base/Dockerfile.j2 b/kolla/docker/heat/heat-base/Dockerfile.j2 similarity index 100% rename from docker/heat/heat-base/Dockerfile.j2 rename to kolla/docker/heat/heat-base/Dockerfile.j2 diff --git a/docker/heat/heat-base/extend_start.sh b/kolla/docker/heat/heat-base/extend_start.sh similarity index 100% rename from docker/heat/heat-base/extend_start.sh rename to kolla/docker/heat/heat-base/extend_start.sh diff --git a/docker/heat/heat-engine/Dockerfile.j2 b/kolla/docker/heat/heat-engine/Dockerfile.j2 similarity index 100% rename from docker/heat/heat-engine/Dockerfile.j2 rename to kolla/docker/heat/heat-engine/Dockerfile.j2 diff --git a/docker/horizon/Dockerfile.j2 b/kolla/docker/horizon/Dockerfile.j2 similarity index 100% rename from docker/horizon/Dockerfile.j2 rename to kolla/docker/horizon/Dockerfile.j2 diff --git a/docker/horizon/extend_start.sh b/kolla/docker/horizon/extend_start.sh similarity index 100% rename from docker/horizon/extend_start.sh rename to kolla/docker/horizon/extend_start.sh diff --git a/docker/httpd/Dockerfile.j2 b/kolla/docker/httpd/Dockerfile.j2 similarity index 100% rename from docker/httpd/Dockerfile.j2 rename to kolla/docker/httpd/Dockerfile.j2 diff --git a/docker/httpd/extend_start.sh b/kolla/docker/httpd/extend_start.sh similarity index 100% rename from docker/httpd/extend_start.sh rename to kolla/docker/httpd/extend_start.sh diff --git a/docker/httpd/httpd_setup.sh b/kolla/docker/httpd/httpd_setup.sh similarity index 100% rename from docker/httpd/httpd_setup.sh rename to kolla/docker/httpd/httpd_setup.sh diff --git a/docker/ironic/ironic-api/Dockerfile.j2 b/kolla/docker/ironic/ironic-api/Dockerfile.j2 similarity index 100% rename from docker/ironic/ironic-api/Dockerfile.j2 rename to kolla/docker/ironic/ironic-api/Dockerfile.j2 diff --git a/docker/ironic/ironic-api/extend_start.sh b/kolla/docker/ironic/ironic-api/extend_start.sh similarity index 100% rename from docker/ironic/ironic-api/extend_start.sh rename to kolla/docker/ironic/ironic-api/extend_start.sh diff --git a/docker/ironic/ironic-base/Dockerfile.j2 b/kolla/docker/ironic/ironic-base/Dockerfile.j2 similarity index 100% rename from docker/ironic/ironic-base/Dockerfile.j2 rename to kolla/docker/ironic/ironic-base/Dockerfile.j2 diff --git a/docker/ironic/ironic-base/extend_start.sh b/kolla/docker/ironic/ironic-base/extend_start.sh similarity index 100% rename from docker/ironic/ironic-base/extend_start.sh rename to kolla/docker/ironic/ironic-base/extend_start.sh diff --git a/docker/ironic/ironic-base/ironic_sudoers b/kolla/docker/ironic/ironic-base/ironic_sudoers similarity index 100% rename from docker/ironic/ironic-base/ironic_sudoers rename to kolla/docker/ironic/ironic-base/ironic_sudoers diff --git a/docker/ironic/ironic-conductor/Dockerfile.j2 b/kolla/docker/ironic/ironic-conductor/Dockerfile.j2 similarity index 100% rename from docker/ironic/ironic-conductor/Dockerfile.j2 rename to kolla/docker/ironic/ironic-conductor/Dockerfile.j2 diff --git a/docker/ironic/ironic-prometheus-exporter/Dockerfile.j2 b/kolla/docker/ironic/ironic-prometheus-exporter/Dockerfile.j2 similarity index 100% rename from docker/ironic/ironic-prometheus-exporter/Dockerfile.j2 rename to kolla/docker/ironic/ironic-prometheus-exporter/Dockerfile.j2 diff --git a/docker/ironic/ironic-pxe-filter/Dockerfile.j2 b/kolla/docker/ironic/ironic-pxe-filter/Dockerfile.j2 similarity index 100% rename from docker/ironic/ironic-pxe-filter/Dockerfile.j2 rename to kolla/docker/ironic/ironic-pxe-filter/Dockerfile.j2 diff --git a/docker/ironic/ironic-pxe-filter/extend_start.sh b/kolla/docker/ironic/ironic-pxe-filter/extend_start.sh similarity index 100% rename from docker/ironic/ironic-pxe-filter/extend_start.sh rename to kolla/docker/ironic/ironic-pxe-filter/extend_start.sh diff --git a/docker/ironic/ironic-pxe/Dockerfile.j2 b/kolla/docker/ironic/ironic-pxe/Dockerfile.j2 similarity index 100% rename from docker/ironic/ironic-pxe/Dockerfile.j2 rename to kolla/docker/ironic/ironic-pxe/Dockerfile.j2 diff --git a/docker/ironic/ironic-pxe/extend_start.sh b/kolla/docker/ironic/ironic-pxe/extend_start.sh similarity index 100% rename from docker/ironic/ironic-pxe/extend_start.sh rename to kolla/docker/ironic/ironic-pxe/extend_start.sh diff --git a/docker/ironic/ironic-pxe/tftp-map-file-template b/kolla/docker/ironic/ironic-pxe/tftp-map-file-template similarity index 100% rename from docker/ironic/ironic-pxe/tftp-map-file-template rename to kolla/docker/ironic/ironic-pxe/tftp-map-file-template diff --git a/docker/iscsid/Dockerfile.j2 b/kolla/docker/iscsid/Dockerfile.j2 similarity index 100% rename from docker/iscsid/Dockerfile.j2 rename to kolla/docker/iscsid/Dockerfile.j2 diff --git a/docker/iscsid/extend_start.sh b/kolla/docker/iscsid/extend_start.sh similarity index 100% rename from docker/iscsid/extend_start.sh rename to kolla/docker/iscsid/extend_start.sh diff --git a/docker/keepalived/Dockerfile.j2 b/kolla/docker/keepalived/Dockerfile.j2 similarity index 100% rename from docker/keepalived/Dockerfile.j2 rename to kolla/docker/keepalived/Dockerfile.j2 diff --git a/docker/keepalived/check_alive.sh b/kolla/docker/keepalived/check_alive.sh similarity index 100% rename from docker/keepalived/check_alive.sh rename to kolla/docker/keepalived/check_alive.sh diff --git a/docker/keepalived/extend_start.sh b/kolla/docker/keepalived/extend_start.sh similarity index 100% rename from docker/keepalived/extend_start.sh rename to kolla/docker/keepalived/extend_start.sh diff --git a/docker/kerbside/kerbside-api/Dockerfile.j2 b/kolla/docker/kerbside/kerbside-api/Dockerfile.j2 similarity index 100% rename from docker/kerbside/kerbside-api/Dockerfile.j2 rename to kolla/docker/kerbside/kerbside-api/Dockerfile.j2 diff --git a/docker/kerbside/kerbside-api/extend_start.sh b/kolla/docker/kerbside/kerbside-api/extend_start.sh similarity index 100% rename from docker/kerbside/kerbside-api/extend_start.sh rename to kolla/docker/kerbside/kerbside-api/extend_start.sh diff --git a/docker/kerbside/kerbside-base/Dockerfile.j2 b/kolla/docker/kerbside/kerbside-base/Dockerfile.j2 similarity index 100% rename from docker/kerbside/kerbside-base/Dockerfile.j2 rename to kolla/docker/kerbside/kerbside-base/Dockerfile.j2 diff --git a/docker/kerbside/kerbside-proxy/Dockerfile.j2 b/kolla/docker/kerbside/kerbside-proxy/Dockerfile.j2 similarity index 100% rename from docker/kerbside/kerbside-proxy/Dockerfile.j2 rename to kolla/docker/kerbside/kerbside-proxy/Dockerfile.j2 diff --git a/docker/kerbside/kerbside-proxy/extend_start.sh b/kolla/docker/kerbside/kerbside-proxy/extend_start.sh similarity index 100% rename from docker/kerbside/kerbside-proxy/extend_start.sh rename to kolla/docker/kerbside/kerbside-proxy/extend_start.sh diff --git a/docker/keystone/keystone-base/Dockerfile.j2 b/kolla/docker/keystone/keystone-base/Dockerfile.j2 similarity index 100% rename from docker/keystone/keystone-base/Dockerfile.j2 rename to kolla/docker/keystone/keystone-base/Dockerfile.j2 diff --git a/docker/keystone/keystone-fernet/Dockerfile.j2 b/kolla/docker/keystone/keystone-fernet/Dockerfile.j2 similarity index 100% rename from docker/keystone/keystone-fernet/Dockerfile.j2 rename to kolla/docker/keystone/keystone-fernet/Dockerfile.j2 diff --git a/docker/keystone/keystone-fernet/extend_start.sh b/kolla/docker/keystone/keystone-fernet/extend_start.sh similarity index 100% rename from docker/keystone/keystone-fernet/extend_start.sh rename to kolla/docker/keystone/keystone-fernet/extend_start.sh diff --git a/docker/keystone/keystone-fernet/fetch_fernet_tokens.py b/kolla/docker/keystone/keystone-fernet/fetch_fernet_tokens.py similarity index 100% rename from docker/keystone/keystone-fernet/fetch_fernet_tokens.py rename to kolla/docker/keystone/keystone-fernet/fetch_fernet_tokens.py diff --git a/docker/keystone/keystone-fernet/keystone_bootstrap.sh b/kolla/docker/keystone/keystone-fernet/keystone_bootstrap.sh similarity index 100% rename from docker/keystone/keystone-fernet/keystone_bootstrap.sh rename to kolla/docker/keystone/keystone-fernet/keystone_bootstrap.sh diff --git a/docker/keystone/keystone-ssh/Dockerfile.j2 b/kolla/docker/keystone/keystone-ssh/Dockerfile.j2 similarity index 100% rename from docker/keystone/keystone-ssh/Dockerfile.j2 rename to kolla/docker/keystone/keystone-ssh/Dockerfile.j2 diff --git a/docker/keystone/keystone-ssh/extend_start.sh b/kolla/docker/keystone/keystone-ssh/extend_start.sh similarity index 100% rename from docker/keystone/keystone-ssh/extend_start.sh rename to kolla/docker/keystone/keystone-ssh/extend_start.sh diff --git a/docker/keystone/keystone/Dockerfile.j2 b/kolla/docker/keystone/keystone/Dockerfile.j2 similarity index 100% rename from docker/keystone/keystone/Dockerfile.j2 rename to kolla/docker/keystone/keystone/Dockerfile.j2 diff --git a/docker/keystone/keystone/extend_start.sh b/kolla/docker/keystone/keystone/extend_start.sh similarity index 100% rename from docker/keystone/keystone/extend_start.sh rename to kolla/docker/keystone/keystone/extend_start.sh diff --git a/docker/keystone/keystone/keystone_bootstrap.sh b/kolla/docker/keystone/keystone/keystone_bootstrap.sh similarity index 100% rename from docker/keystone/keystone/keystone_bootstrap.sh rename to kolla/docker/keystone/keystone/keystone_bootstrap.sh diff --git a/docker/kolla-toolbox/Dockerfile.j2 b/kolla/docker/kolla-toolbox/Dockerfile.j2 similarity index 100% rename from docker/kolla-toolbox/Dockerfile.j2 rename to kolla/docker/kolla-toolbox/Dockerfile.j2 diff --git a/docker/kolla-toolbox/ansible.cfg b/kolla/docker/kolla-toolbox/ansible.cfg similarity index 100% rename from docker/kolla-toolbox/ansible.cfg rename to kolla/docker/kolla-toolbox/ansible.cfg diff --git a/docker/kolla-toolbox/ansible_sudoers b/kolla/docker/kolla-toolbox/ansible_sudoers similarity index 100% rename from docker/kolla-toolbox/ansible_sudoers rename to kolla/docker/kolla-toolbox/ansible_sudoers diff --git a/docker/kolla-toolbox/apt_preferences_rabbitmq.debian b/kolla/docker/kolla-toolbox/apt_preferences_rabbitmq.debian similarity index 100% rename from docker/kolla-toolbox/apt_preferences_rabbitmq.debian rename to kolla/docker/kolla-toolbox/apt_preferences_rabbitmq.debian diff --git a/docker/kolla-toolbox/apt_preferences_rabbitmq.ubuntu b/kolla/docker/kolla-toolbox/apt_preferences_rabbitmq.ubuntu similarity index 100% rename from docker/kolla-toolbox/apt_preferences_rabbitmq.ubuntu rename to kolla/docker/kolla-toolbox/apt_preferences_rabbitmq.ubuntu diff --git a/docker/kolla-toolbox/extend_start.sh b/kolla/docker/kolla-toolbox/extend_start.sh similarity index 100% rename from docker/kolla-toolbox/extend_start.sh rename to kolla/docker/kolla-toolbox/extend_start.sh diff --git a/docker/kolla-toolbox/kolla_toolbox.sh b/kolla/docker/kolla-toolbox/kolla_toolbox.sh similarity index 100% rename from docker/kolla-toolbox/kolla_toolbox.sh rename to kolla/docker/kolla-toolbox/kolla_toolbox.sh diff --git a/docker/kolla-toolbox/requirements.yml b/kolla/docker/kolla-toolbox/requirements.yml similarity index 100% rename from docker/kolla-toolbox/requirements.yml rename to kolla/docker/kolla-toolbox/requirements.yml diff --git a/docker/letsencrypt/letsencrypt-base/Dockerfile.j2 b/kolla/docker/letsencrypt/letsencrypt-base/Dockerfile.j2 similarity index 100% rename from docker/letsencrypt/letsencrypt-base/Dockerfile.j2 rename to kolla/docker/letsencrypt/letsencrypt-base/Dockerfile.j2 diff --git a/docker/letsencrypt/letsencrypt-base/extend_start.sh b/kolla/docker/letsencrypt/letsencrypt-base/extend_start.sh similarity index 100% rename from docker/letsencrypt/letsencrypt-base/extend_start.sh rename to kolla/docker/letsencrypt/letsencrypt-base/extend_start.sh diff --git a/docker/letsencrypt/letsencrypt-lego/Dockerfile.j2 b/kolla/docker/letsencrypt/letsencrypt-lego/Dockerfile.j2 similarity index 100% rename from docker/letsencrypt/letsencrypt-lego/Dockerfile.j2 rename to kolla/docker/letsencrypt/letsencrypt-lego/Dockerfile.j2 diff --git a/docker/letsencrypt/letsencrypt-lego/letsencrypt-certificates.sh b/kolla/docker/letsencrypt/letsencrypt-lego/letsencrypt-certificates.sh similarity index 100% rename from docker/letsencrypt/letsencrypt-lego/letsencrypt-certificates.sh rename to kolla/docker/letsencrypt/letsencrypt-lego/letsencrypt-certificates.sh diff --git a/docker/letsencrypt/letsencrypt-lego/sync-and-update-certificate.sh b/kolla/docker/letsencrypt/letsencrypt-lego/sync-and-update-certificate.sh similarity index 100% rename from docker/letsencrypt/letsencrypt-lego/sync-and-update-certificate.sh rename to kolla/docker/letsencrypt/letsencrypt-lego/sync-and-update-certificate.sh diff --git a/docker/macros.j2 b/kolla/docker/macros.j2 similarity index 100% rename from docker/macros.j2 rename to kolla/docker/macros.j2 diff --git a/docker/magnum/magnum-api/Dockerfile.j2 b/kolla/docker/magnum/magnum-api/Dockerfile.j2 similarity index 100% rename from docker/magnum/magnum-api/Dockerfile.j2 rename to kolla/docker/magnum/magnum-api/Dockerfile.j2 diff --git a/docker/magnum/magnum-api/extend_start.sh b/kolla/docker/magnum/magnum-api/extend_start.sh similarity index 100% rename from docker/magnum/magnum-api/extend_start.sh rename to kolla/docker/magnum/magnum-api/extend_start.sh diff --git a/docker/magnum/magnum-base/Dockerfile.j2 b/kolla/docker/magnum/magnum-base/Dockerfile.j2 similarity index 100% rename from docker/magnum/magnum-base/Dockerfile.j2 rename to kolla/docker/magnum/magnum-base/Dockerfile.j2 diff --git a/docker/magnum/magnum-base/extend_start.sh b/kolla/docker/magnum/magnum-base/extend_start.sh similarity index 100% rename from docker/magnum/magnum-base/extend_start.sh rename to kolla/docker/magnum/magnum-base/extend_start.sh diff --git a/docker/magnum/magnum-conductor/Dockerfile.j2 b/kolla/docker/magnum/magnum-conductor/Dockerfile.j2 similarity index 100% rename from docker/magnum/magnum-conductor/Dockerfile.j2 rename to kolla/docker/magnum/magnum-conductor/Dockerfile.j2 diff --git a/docker/manila/manila-api/Dockerfile.j2 b/kolla/docker/manila/manila-api/Dockerfile.j2 similarity index 100% rename from docker/manila/manila-api/Dockerfile.j2 rename to kolla/docker/manila/manila-api/Dockerfile.j2 diff --git a/docker/manila/manila-api/extend_start.sh b/kolla/docker/manila/manila-api/extend_start.sh similarity index 100% rename from docker/manila/manila-api/extend_start.sh rename to kolla/docker/manila/manila-api/extend_start.sh diff --git a/docker/manila/manila-base/Dockerfile.j2 b/kolla/docker/manila/manila-base/Dockerfile.j2 similarity index 100% rename from docker/manila/manila-base/Dockerfile.j2 rename to kolla/docker/manila/manila-base/Dockerfile.j2 diff --git a/docker/manila/manila-base/extend_start.sh b/kolla/docker/manila/manila-base/extend_start.sh similarity index 100% rename from docker/manila/manila-base/extend_start.sh rename to kolla/docker/manila/manila-base/extend_start.sh diff --git a/docker/manila/manila-base/manila_sudoers b/kolla/docker/manila/manila-base/manila_sudoers similarity index 100% rename from docker/manila/manila-base/manila_sudoers rename to kolla/docker/manila/manila-base/manila_sudoers diff --git a/docker/manila/manila-data/Dockerfile.j2 b/kolla/docker/manila/manila-data/Dockerfile.j2 similarity index 100% rename from docker/manila/manila-data/Dockerfile.j2 rename to kolla/docker/manila/manila-data/Dockerfile.j2 diff --git a/docker/manila/manila-scheduler/Dockerfile.j2 b/kolla/docker/manila/manila-scheduler/Dockerfile.j2 similarity index 100% rename from docker/manila/manila-scheduler/Dockerfile.j2 rename to kolla/docker/manila/manila-scheduler/Dockerfile.j2 diff --git a/docker/manila/manila-share/Dockerfile.j2 b/kolla/docker/manila/manila-share/Dockerfile.j2 similarity index 100% rename from docker/manila/manila-share/Dockerfile.j2 rename to kolla/docker/manila/manila-share/Dockerfile.j2 diff --git a/docker/mariadb-server/Dockerfile.j2 b/kolla/docker/mariadb-server/Dockerfile.j2 similarity index 100% rename from docker/mariadb-server/Dockerfile.j2 rename to kolla/docker/mariadb-server/Dockerfile.j2 diff --git a/docker/mariadb-server/backup.sh b/kolla/docker/mariadb-server/backup.sh similarity index 100% rename from docker/mariadb-server/backup.sh rename to kolla/docker/mariadb-server/backup.sh diff --git a/docker/mariadb-server/backup_replica.sh b/kolla/docker/mariadb-server/backup_replica.sh similarity index 100% rename from docker/mariadb-server/backup_replica.sh rename to kolla/docker/mariadb-server/backup_replica.sh diff --git a/docker/mariadb-server/extend_start.sh b/kolla/docker/mariadb-server/extend_start.sh similarity index 100% rename from docker/mariadb-server/extend_start.sh rename to kolla/docker/mariadb-server/extend_start.sh diff --git a/docker/mariadb-server/healthcheck_mariadb b/kolla/docker/mariadb-server/healthcheck_mariadb similarity index 100% rename from docker/mariadb-server/healthcheck_mariadb rename to kolla/docker/mariadb-server/healthcheck_mariadb diff --git a/docker/mariadb-server/mariadb_sudoers b/kolla/docker/mariadb-server/mariadb_sudoers similarity index 100% rename from docker/mariadb-server/mariadb_sudoers rename to kolla/docker/mariadb-server/mariadb_sudoers diff --git a/docker/mariadb-server/security_reset.expect b/kolla/docker/mariadb-server/security_reset.expect similarity index 100% rename from docker/mariadb-server/security_reset.expect rename to kolla/docker/mariadb-server/security_reset.expect diff --git a/docker/masakari/masakari-api/Dockerfile.j2 b/kolla/docker/masakari/masakari-api/Dockerfile.j2 similarity index 100% rename from docker/masakari/masakari-api/Dockerfile.j2 rename to kolla/docker/masakari/masakari-api/Dockerfile.j2 diff --git a/docker/masakari/masakari-api/extend_start.sh b/kolla/docker/masakari/masakari-api/extend_start.sh similarity index 100% rename from docker/masakari/masakari-api/extend_start.sh rename to kolla/docker/masakari/masakari-api/extend_start.sh diff --git a/docker/masakari/masakari-base/Dockerfile.j2 b/kolla/docker/masakari/masakari-base/Dockerfile.j2 similarity index 100% rename from docker/masakari/masakari-base/Dockerfile.j2 rename to kolla/docker/masakari/masakari-base/Dockerfile.j2 diff --git a/docker/masakari/masakari-base/extend_start.sh b/kolla/docker/masakari/masakari-base/extend_start.sh similarity index 100% rename from docker/masakari/masakari-base/extend_start.sh rename to kolla/docker/masakari/masakari-base/extend_start.sh diff --git a/docker/masakari/masakari-engine/Dockerfile.j2 b/kolla/docker/masakari/masakari-engine/Dockerfile.j2 similarity index 100% rename from docker/masakari/masakari-engine/Dockerfile.j2 rename to kolla/docker/masakari/masakari-engine/Dockerfile.j2 diff --git a/docker/masakari/masakari-monitors/Dockerfile.j2 b/kolla/docker/masakari/masakari-monitors/Dockerfile.j2 similarity index 100% rename from docker/masakari/masakari-monitors/Dockerfile.j2 rename to kolla/docker/masakari/masakari-monitors/Dockerfile.j2 diff --git a/docker/masakari/masakari-monitors/masakari_monitors_sudoers b/kolla/docker/masakari/masakari-monitors/masakari_monitors_sudoers similarity index 100% rename from docker/masakari/masakari-monitors/masakari_monitors_sudoers rename to kolla/docker/masakari/masakari-monitors/masakari_monitors_sudoers diff --git a/docker/memcached/Dockerfile.j2 b/kolla/docker/memcached/Dockerfile.j2 similarity index 100% rename from docker/memcached/Dockerfile.j2 rename to kolla/docker/memcached/Dockerfile.j2 diff --git a/docker/mistral/mistral-api/Dockerfile.j2 b/kolla/docker/mistral/mistral-api/Dockerfile.j2 similarity index 100% rename from docker/mistral/mistral-api/Dockerfile.j2 rename to kolla/docker/mistral/mistral-api/Dockerfile.j2 diff --git a/docker/mistral/mistral-api/extend_start.sh b/kolla/docker/mistral/mistral-api/extend_start.sh similarity index 100% rename from docker/mistral/mistral-api/extend_start.sh rename to kolla/docker/mistral/mistral-api/extend_start.sh diff --git a/docker/mistral/mistral-base/Dockerfile.j2 b/kolla/docker/mistral/mistral-base/Dockerfile.j2 similarity index 100% rename from docker/mistral/mistral-base/Dockerfile.j2 rename to kolla/docker/mistral/mistral-base/Dockerfile.j2 diff --git a/docker/mistral/mistral-base/extend_start.sh b/kolla/docker/mistral/mistral-base/extend_start.sh similarity index 100% rename from docker/mistral/mistral-base/extend_start.sh rename to kolla/docker/mistral/mistral-base/extend_start.sh diff --git a/docker/mistral/mistral-engine/Dockerfile.j2 b/kolla/docker/mistral/mistral-engine/Dockerfile.j2 similarity index 100% rename from docker/mistral/mistral-engine/Dockerfile.j2 rename to kolla/docker/mistral/mistral-engine/Dockerfile.j2 diff --git a/docker/mistral/mistral-event-engine/Dockerfile.j2 b/kolla/docker/mistral/mistral-event-engine/Dockerfile.j2 similarity index 100% rename from docker/mistral/mistral-event-engine/Dockerfile.j2 rename to kolla/docker/mistral/mistral-event-engine/Dockerfile.j2 diff --git a/docker/mistral/mistral-executor/Dockerfile.j2 b/kolla/docker/mistral/mistral-executor/Dockerfile.j2 similarity index 100% rename from docker/mistral/mistral-executor/Dockerfile.j2 rename to kolla/docker/mistral/mistral-executor/Dockerfile.j2 diff --git a/docker/multipathd/Dockerfile.j2 b/kolla/docker/multipathd/Dockerfile.j2 similarity index 100% rename from docker/multipathd/Dockerfile.j2 rename to kolla/docker/multipathd/Dockerfile.j2 diff --git a/docker/networking-baremetal/ironic-neutron-agent/Dockerfile.j2 b/kolla/docker/networking-baremetal/ironic-neutron-agent/Dockerfile.j2 similarity index 100% rename from docker/networking-baremetal/ironic-neutron-agent/Dockerfile.j2 rename to kolla/docker/networking-baremetal/ironic-neutron-agent/Dockerfile.j2 diff --git a/docker/neutron/neutron-base/Dockerfile.j2 b/kolla/docker/neutron/neutron-base/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-base/Dockerfile.j2 rename to kolla/docker/neutron/neutron-base/Dockerfile.j2 diff --git a/docker/neutron/neutron-base/copy-wrappers b/kolla/docker/neutron/neutron-base/copy-wrappers similarity index 100% rename from docker/neutron/neutron-base/copy-wrappers rename to kolla/docker/neutron/neutron-base/copy-wrappers diff --git a/docker/neutron/neutron-base/delete-wrappers b/kolla/docker/neutron/neutron-base/delete-wrappers similarity index 100% rename from docker/neutron/neutron-base/delete-wrappers rename to kolla/docker/neutron/neutron-base/delete-wrappers diff --git a/docker/neutron/neutron-base/dnsmasq b/kolla/docker/neutron/neutron-base/dnsmasq similarity index 100% rename from docker/neutron/neutron-base/dnsmasq rename to kolla/docker/neutron/neutron-base/dnsmasq diff --git a/docker/neutron/neutron-base/extend_start.sh b/kolla/docker/neutron/neutron-base/extend_start.sh similarity index 100% rename from docker/neutron/neutron-base/extend_start.sh rename to kolla/docker/neutron/neutron-base/extend_start.sh diff --git a/docker/neutron/neutron-base/haproxy b/kolla/docker/neutron/neutron-base/haproxy similarity index 100% rename from docker/neutron/neutron-base/haproxy rename to kolla/docker/neutron/neutron-base/haproxy diff --git a/docker/neutron/neutron-base/keepalived b/kolla/docker/neutron/neutron-base/keepalived similarity index 100% rename from docker/neutron/neutron-base/keepalived rename to kolla/docker/neutron/neutron-base/keepalived diff --git a/docker/neutron/neutron-base/neutron-keepalived-state-change b/kolla/docker/neutron/neutron-base/neutron-keepalived-state-change similarity index 100% rename from docker/neutron/neutron-base/neutron-keepalived-state-change rename to kolla/docker/neutron/neutron-base/neutron-keepalived-state-change diff --git a/docker/neutron/neutron-base/neutron_sudoers b/kolla/docker/neutron/neutron-base/neutron_sudoers similarity index 100% rename from docker/neutron/neutron-base/neutron_sudoers rename to kolla/docker/neutron/neutron-base/neutron_sudoers diff --git a/docker/neutron/neutron-base/radvd b/kolla/docker/neutron/neutron-base/radvd similarity index 100% rename from docker/neutron/neutron-base/radvd rename to kolla/docker/neutron/neutron-base/radvd diff --git a/docker/neutron/neutron-bgp-dragent/Dockerfile.j2 b/kolla/docker/neutron/neutron-bgp-dragent/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-bgp-dragent/Dockerfile.j2 rename to kolla/docker/neutron/neutron-bgp-dragent/Dockerfile.j2 diff --git a/docker/neutron/neutron-dhcp-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-dhcp-agent/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-dhcp-agent/Dockerfile.j2 rename to kolla/docker/neutron/neutron-dhcp-agent/Dockerfile.j2 diff --git a/docker/neutron/neutron-dhcp-agent/extend_start.sh b/kolla/docker/neutron/neutron-dhcp-agent/extend_start.sh similarity index 100% rename from docker/neutron/neutron-dhcp-agent/extend_start.sh rename to kolla/docker/neutron/neutron-dhcp-agent/extend_start.sh diff --git a/docker/neutron/neutron-l3-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-l3-agent/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-l3-agent/Dockerfile.j2 rename to kolla/docker/neutron/neutron-l3-agent/Dockerfile.j2 diff --git a/docker/neutron/neutron-l3-agent/extend_start.sh b/kolla/docker/neutron/neutron-l3-agent/extend_start.sh similarity index 100% rename from docker/neutron/neutron-l3-agent/extend_start.sh rename to kolla/docker/neutron/neutron-l3-agent/extend_start.sh diff --git a/docker/neutron/neutron-metadata-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-metadata-agent/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-metadata-agent/Dockerfile.j2 rename to kolla/docker/neutron/neutron-metadata-agent/Dockerfile.j2 diff --git a/docker/neutron/neutron-metadata-agent/extend_start.sh b/kolla/docker/neutron/neutron-metadata-agent/extend_start.sh similarity index 100% rename from docker/neutron/neutron-metadata-agent/extend_start.sh rename to kolla/docker/neutron/neutron-metadata-agent/extend_start.sh diff --git a/docker/neutron/neutron-metering-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-metering-agent/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-metering-agent/Dockerfile.j2 rename to kolla/docker/neutron/neutron-metering-agent/Dockerfile.j2 diff --git a/docker/neutron/neutron-mlnx-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-mlnx-agent/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-mlnx-agent/Dockerfile.j2 rename to kolla/docker/neutron/neutron-mlnx-agent/Dockerfile.j2 diff --git a/docker/neutron/neutron-openvswitch-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-openvswitch-agent/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-openvswitch-agent/Dockerfile.j2 rename to kolla/docker/neutron/neutron-openvswitch-agent/Dockerfile.j2 diff --git a/docker/neutron/neutron-ovn-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-ovn-agent/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-ovn-agent/Dockerfile.j2 rename to kolla/docker/neutron/neutron-ovn-agent/Dockerfile.j2 diff --git a/docker/neutron/neutron-ovn-vpn-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-ovn-vpn-agent/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-ovn-vpn-agent/Dockerfile.j2 rename to kolla/docker/neutron/neutron-ovn-vpn-agent/Dockerfile.j2 diff --git a/docker/neutron/neutron-server/Dockerfile.j2 b/kolla/docker/neutron/neutron-server/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-server/Dockerfile.j2 rename to kolla/docker/neutron/neutron-server/Dockerfile.j2 diff --git a/docker/neutron/neutron-server/extend_start.sh b/kolla/docker/neutron/neutron-server/extend_start.sh similarity index 100% rename from docker/neutron/neutron-server/extend_start.sh rename to kolla/docker/neutron/neutron-server/extend_start.sh diff --git a/docker/neutron/neutron-sriov-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-sriov-agent/Dockerfile.j2 similarity index 100% rename from docker/neutron/neutron-sriov-agent/Dockerfile.j2 rename to kolla/docker/neutron/neutron-sriov-agent/Dockerfile.j2 diff --git a/docker/nova/nova-api/Dockerfile.j2 b/kolla/docker/nova/nova-api/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-api/Dockerfile.j2 rename to kolla/docker/nova/nova-api/Dockerfile.j2 diff --git a/docker/nova/nova-api/extend_start.sh b/kolla/docker/nova/nova-api/extend_start.sh similarity index 100% rename from docker/nova/nova-api/extend_start.sh rename to kolla/docker/nova/nova-api/extend_start.sh diff --git a/docker/nova/nova-base/Dockerfile.j2 b/kolla/docker/nova/nova-base/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-base/Dockerfile.j2 rename to kolla/docker/nova/nova-base/Dockerfile.j2 diff --git a/docker/nova/nova-base/extend_start.sh b/kolla/docker/nova/nova-base/extend_start.sh similarity index 100% rename from docker/nova/nova-base/extend_start.sh rename to kolla/docker/nova/nova-base/extend_start.sh diff --git a/docker/nova/nova-base/nova_sudoers b/kolla/docker/nova/nova-base/nova_sudoers similarity index 100% rename from docker/nova/nova-base/nova_sudoers rename to kolla/docker/nova/nova-base/nova_sudoers diff --git a/docker/nova/nova-compute-ironic/Dockerfile.j2 b/kolla/docker/nova/nova-compute-ironic/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-compute-ironic/Dockerfile.j2 rename to kolla/docker/nova/nova-compute-ironic/Dockerfile.j2 diff --git a/docker/nova/nova-compute/Dockerfile.j2 b/kolla/docker/nova/nova-compute/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-compute/Dockerfile.j2 rename to kolla/docker/nova/nova-compute/Dockerfile.j2 diff --git a/docker/nova/nova-compute/extend_start.sh b/kolla/docker/nova/nova-compute/extend_start.sh similarity index 100% rename from docker/nova/nova-compute/extend_start.sh rename to kolla/docker/nova/nova-compute/extend_start.sh diff --git a/docker/nova/nova-conductor/Dockerfile.j2 b/kolla/docker/nova/nova-conductor/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-conductor/Dockerfile.j2 rename to kolla/docker/nova/nova-conductor/Dockerfile.j2 diff --git a/docker/nova/nova-conductor/extend_start.sh b/kolla/docker/nova/nova-conductor/extend_start.sh similarity index 100% rename from docker/nova/nova-conductor/extend_start.sh rename to kolla/docker/nova/nova-conductor/extend_start.sh diff --git a/docker/nova/nova-libvirt-spice/Dockerfile.j2 b/kolla/docker/nova/nova-libvirt-spice/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-libvirt-spice/Dockerfile.j2 rename to kolla/docker/nova/nova-libvirt-spice/Dockerfile.j2 diff --git a/docker/nova/nova-libvirt-spice/extend_start.sh b/kolla/docker/nova/nova-libvirt-spice/extend_start.sh similarity index 100% rename from docker/nova/nova-libvirt-spice/extend_start.sh rename to kolla/docker/nova/nova-libvirt-spice/extend_start.sh diff --git a/docker/nova/nova-libvirt-spice/kolla_nova_libvirt_start.sh b/kolla/docker/nova/nova-libvirt-spice/kolla_nova_libvirt_start.sh similarity index 100% rename from docker/nova/nova-libvirt-spice/kolla_nova_libvirt_start.sh rename to kolla/docker/nova/nova-libvirt-spice/kolla_nova_libvirt_start.sh diff --git a/docker/nova/nova-libvirt/Dockerfile.j2 b/kolla/docker/nova/nova-libvirt/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-libvirt/Dockerfile.j2 rename to kolla/docker/nova/nova-libvirt/Dockerfile.j2 diff --git a/docker/nova/nova-libvirt/extend_start.sh b/kolla/docker/nova/nova-libvirt/extend_start.sh similarity index 100% rename from docker/nova/nova-libvirt/extend_start.sh rename to kolla/docker/nova/nova-libvirt/extend_start.sh diff --git a/docker/nova/nova-libvirt/kolla_nova_libvirt_start.sh b/kolla/docker/nova/nova-libvirt/kolla_nova_libvirt_start.sh similarity index 100% rename from docker/nova/nova-libvirt/kolla_nova_libvirt_start.sh rename to kolla/docker/nova/nova-libvirt/kolla_nova_libvirt_start.sh diff --git a/docker/nova/nova-novncproxy/Dockerfile.j2 b/kolla/docker/nova/nova-novncproxy/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-novncproxy/Dockerfile.j2 rename to kolla/docker/nova/nova-novncproxy/Dockerfile.j2 diff --git a/docker/nova/nova-scheduler/Dockerfile.j2 b/kolla/docker/nova/nova-scheduler/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-scheduler/Dockerfile.j2 rename to kolla/docker/nova/nova-scheduler/Dockerfile.j2 diff --git a/docker/nova/nova-serialproxy/Dockerfile.j2 b/kolla/docker/nova/nova-serialproxy/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-serialproxy/Dockerfile.j2 rename to kolla/docker/nova/nova-serialproxy/Dockerfile.j2 diff --git a/docker/nova/nova-spicehtml5proxy/Dockerfile.j2 b/kolla/docker/nova/nova-spicehtml5proxy/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-spicehtml5proxy/Dockerfile.j2 rename to kolla/docker/nova/nova-spicehtml5proxy/Dockerfile.j2 diff --git a/docker/nova/nova-ssh/Dockerfile.j2 b/kolla/docker/nova/nova-ssh/Dockerfile.j2 similarity index 100% rename from docker/nova/nova-ssh/Dockerfile.j2 rename to kolla/docker/nova/nova-ssh/Dockerfile.j2 diff --git a/docker/nova/nova-ssh/extend_start.sh b/kolla/docker/nova/nova-ssh/extend_start.sh similarity index 100% rename from docker/nova/nova-ssh/extend_start.sh rename to kolla/docker/nova/nova-ssh/extend_start.sh diff --git a/docker/octavia/octavia-api/Dockerfile.j2 b/kolla/docker/octavia/octavia-api/Dockerfile.j2 similarity index 100% rename from docker/octavia/octavia-api/Dockerfile.j2 rename to kolla/docker/octavia/octavia-api/Dockerfile.j2 diff --git a/docker/octavia/octavia-api/extend_start.sh b/kolla/docker/octavia/octavia-api/extend_start.sh similarity index 100% rename from docker/octavia/octavia-api/extend_start.sh rename to kolla/docker/octavia/octavia-api/extend_start.sh diff --git a/docker/octavia/octavia-base/Dockerfile.j2 b/kolla/docker/octavia/octavia-base/Dockerfile.j2 similarity index 100% rename from docker/octavia/octavia-base/Dockerfile.j2 rename to kolla/docker/octavia/octavia-base/Dockerfile.j2 diff --git a/docker/octavia/octavia-base/extend_start.sh b/kolla/docker/octavia/octavia-base/extend_start.sh similarity index 100% rename from docker/octavia/octavia-base/extend_start.sh rename to kolla/docker/octavia/octavia-base/extend_start.sh diff --git a/docker/octavia/octavia-driver-agent/Dockerfile.j2 b/kolla/docker/octavia/octavia-driver-agent/Dockerfile.j2 similarity index 100% rename from docker/octavia/octavia-driver-agent/Dockerfile.j2 rename to kolla/docker/octavia/octavia-driver-agent/Dockerfile.j2 diff --git a/docker/octavia/octavia-health-manager/Dockerfile.j2 b/kolla/docker/octavia/octavia-health-manager/Dockerfile.j2 similarity index 100% rename from docker/octavia/octavia-health-manager/Dockerfile.j2 rename to kolla/docker/octavia/octavia-health-manager/Dockerfile.j2 diff --git a/docker/octavia/octavia-housekeeping/Dockerfile.j2 b/kolla/docker/octavia/octavia-housekeeping/Dockerfile.j2 similarity index 100% rename from docker/octavia/octavia-housekeeping/Dockerfile.j2 rename to kolla/docker/octavia/octavia-housekeeping/Dockerfile.j2 diff --git a/docker/octavia/octavia-worker/Dockerfile.j2 b/kolla/docker/octavia/octavia-worker/Dockerfile.j2 similarity index 100% rename from docker/octavia/octavia-worker/Dockerfile.j2 rename to kolla/docker/octavia/octavia-worker/Dockerfile.j2 diff --git a/docker/opensearch/opensearch-dashboards/Dockerfile.j2 b/kolla/docker/opensearch/opensearch-dashboards/Dockerfile.j2 similarity index 100% rename from docker/opensearch/opensearch-dashboards/Dockerfile.j2 rename to kolla/docker/opensearch/opensearch-dashboards/Dockerfile.j2 diff --git a/docker/opensearch/opensearch-dashboards/extend_start.sh b/kolla/docker/opensearch/opensearch-dashboards/extend_start.sh similarity index 100% rename from docker/opensearch/opensearch-dashboards/extend_start.sh rename to kolla/docker/opensearch/opensearch-dashboards/extend_start.sh diff --git a/docker/opensearch/opensearch/Dockerfile.j2 b/kolla/docker/opensearch/opensearch/Dockerfile.j2 similarity index 100% rename from docker/opensearch/opensearch/Dockerfile.j2 rename to kolla/docker/opensearch/opensearch/Dockerfile.j2 diff --git a/docker/opensearch/opensearch/extend_start.sh b/kolla/docker/opensearch/opensearch/extend_start.sh similarity index 100% rename from docker/opensearch/opensearch/extend_start.sh rename to kolla/docker/opensearch/opensearch/extend_start.sh diff --git a/docker/openstack-base/Dockerfile.j2 b/kolla/docker/openstack-base/Dockerfile.j2 similarity index 100% rename from docker/openstack-base/Dockerfile.j2 rename to kolla/docker/openstack-base/Dockerfile.j2 diff --git a/docker/openvswitch/openvswitch-base/Dockerfile.j2 b/kolla/docker/openvswitch/openvswitch-base/Dockerfile.j2 similarity index 100% rename from docker/openvswitch/openvswitch-base/Dockerfile.j2 rename to kolla/docker/openvswitch/openvswitch-base/Dockerfile.j2 diff --git a/docker/openvswitch/openvswitch-base/extend_start.sh b/kolla/docker/openvswitch/openvswitch-base/extend_start.sh similarity index 100% rename from docker/openvswitch/openvswitch-base/extend_start.sh rename to kolla/docker/openvswitch/openvswitch-base/extend_start.sh diff --git a/docker/openvswitch/openvswitch-base/ovs_wrapper.sh b/kolla/docker/openvswitch/openvswitch-base/ovs_wrapper.sh similarity index 100% rename from docker/openvswitch/openvswitch-base/ovs_wrapper.sh rename to kolla/docker/openvswitch/openvswitch-base/ovs_wrapper.sh diff --git a/docker/openvswitch/openvswitch-db-server/Dockerfile.j2 b/kolla/docker/openvswitch/openvswitch-db-server/Dockerfile.j2 similarity index 100% rename from docker/openvswitch/openvswitch-db-server/Dockerfile.j2 rename to kolla/docker/openvswitch/openvswitch-db-server/Dockerfile.j2 diff --git a/docker/openvswitch/openvswitch-db-server/extend_start.sh b/kolla/docker/openvswitch/openvswitch-db-server/extend_start.sh similarity index 100% rename from docker/openvswitch/openvswitch-db-server/extend_start.sh rename to kolla/docker/openvswitch/openvswitch-db-server/extend_start.sh diff --git a/docker/openvswitch/openvswitch-db-server/releasenotes/notes/drop-ovs-ensure-configured-7973d36969e157fa.yaml b/kolla/docker/openvswitch/openvswitch-db-server/releasenotes/notes/drop-ovs-ensure-configured-7973d36969e157fa.yaml similarity index 100% rename from docker/openvswitch/openvswitch-db-server/releasenotes/notes/drop-ovs-ensure-configured-7973d36969e157fa.yaml rename to kolla/docker/openvswitch/openvswitch-db-server/releasenotes/notes/drop-ovs-ensure-configured-7973d36969e157fa.yaml diff --git a/docker/openvswitch/openvswitch-vswitchd/Dockerfile.j2 b/kolla/docker/openvswitch/openvswitch-vswitchd/Dockerfile.j2 similarity index 100% rename from docker/openvswitch/openvswitch-vswitchd/Dockerfile.j2 rename to kolla/docker/openvswitch/openvswitch-vswitchd/Dockerfile.j2 diff --git a/docker/openvswitch/openvswitch-vswitchd/extend_start.sh b/kolla/docker/openvswitch/openvswitch-vswitchd/extend_start.sh similarity index 100% rename from docker/openvswitch/openvswitch-vswitchd/extend_start.sh rename to kolla/docker/openvswitch/openvswitch-vswitchd/extend_start.sh diff --git a/docker/ovn/ovn-base/Dockerfile.j2 b/kolla/docker/ovn/ovn-base/Dockerfile.j2 similarity index 100% rename from docker/ovn/ovn-base/Dockerfile.j2 rename to kolla/docker/ovn/ovn-base/Dockerfile.j2 diff --git a/docker/ovn/ovn-base/extend_start.sh b/kolla/docker/ovn/ovn-base/extend_start.sh similarity index 100% rename from docker/ovn/ovn-base/extend_start.sh rename to kolla/docker/ovn/ovn-base/extend_start.sh diff --git a/docker/ovn/ovn-controller/Dockerfile.j2 b/kolla/docker/ovn/ovn-controller/Dockerfile.j2 similarity index 100% rename from docker/ovn/ovn-controller/Dockerfile.j2 rename to kolla/docker/ovn/ovn-controller/Dockerfile.j2 diff --git a/docker/ovn/ovn-controller/extend_start.sh b/kolla/docker/ovn/ovn-controller/extend_start.sh similarity index 100% rename from docker/ovn/ovn-controller/extend_start.sh rename to kolla/docker/ovn/ovn-controller/extend_start.sh diff --git a/docker/ovn/ovn-nb-db-server/Dockerfile.j2 b/kolla/docker/ovn/ovn-nb-db-server/Dockerfile.j2 similarity index 100% rename from docker/ovn/ovn-nb-db-server/Dockerfile.j2 rename to kolla/docker/ovn/ovn-nb-db-server/Dockerfile.j2 diff --git a/docker/ovn/ovn-nb-db-server/extend_start.sh b/kolla/docker/ovn/ovn-nb-db-server/extend_start.sh similarity index 100% rename from docker/ovn/ovn-nb-db-server/extend_start.sh rename to kolla/docker/ovn/ovn-nb-db-server/extend_start.sh diff --git a/docker/ovn/ovn-nb-db-server/start_nb_db_server.sh b/kolla/docker/ovn/ovn-nb-db-server/start_nb_db_server.sh similarity index 100% rename from docker/ovn/ovn-nb-db-server/start_nb_db_server.sh rename to kolla/docker/ovn/ovn-nb-db-server/start_nb_db_server.sh diff --git a/docker/ovn/ovn-northd/Dockerfile.j2 b/kolla/docker/ovn/ovn-northd/Dockerfile.j2 similarity index 100% rename from docker/ovn/ovn-northd/Dockerfile.j2 rename to kolla/docker/ovn/ovn-northd/Dockerfile.j2 diff --git a/docker/ovn/ovn-northd/extend_start.sh b/kolla/docker/ovn/ovn-northd/extend_start.sh similarity index 100% rename from docker/ovn/ovn-northd/extend_start.sh rename to kolla/docker/ovn/ovn-northd/extend_start.sh diff --git a/docker/ovn/ovn-sb-db-relay/Dockerfile.j2 b/kolla/docker/ovn/ovn-sb-db-relay/Dockerfile.j2 similarity index 100% rename from docker/ovn/ovn-sb-db-relay/Dockerfile.j2 rename to kolla/docker/ovn/ovn-sb-db-relay/Dockerfile.j2 diff --git a/docker/ovn/ovn-sb-db-relay/extend_start.sh b/kolla/docker/ovn/ovn-sb-db-relay/extend_start.sh similarity index 100% rename from docker/ovn/ovn-sb-db-relay/extend_start.sh rename to kolla/docker/ovn/ovn-sb-db-relay/extend_start.sh diff --git a/docker/ovn/ovn-sb-db-server/Dockerfile.j2 b/kolla/docker/ovn/ovn-sb-db-server/Dockerfile.j2 similarity index 100% rename from docker/ovn/ovn-sb-db-server/Dockerfile.j2 rename to kolla/docker/ovn/ovn-sb-db-server/Dockerfile.j2 diff --git a/docker/ovn/ovn-sb-db-server/extend_start.sh b/kolla/docker/ovn/ovn-sb-db-server/extend_start.sh similarity index 100% rename from docker/ovn/ovn-sb-db-server/extend_start.sh rename to kolla/docker/ovn/ovn-sb-db-server/extend_start.sh diff --git a/docker/ovn/ovn-sb-db-server/start_sb_db_server.sh b/kolla/docker/ovn/ovn-sb-db-server/start_sb_db_server.sh similarity index 100% rename from docker/ovn/ovn-sb-db-server/start_sb_db_server.sh rename to kolla/docker/ovn/ovn-sb-db-server/start_sb_db_server.sh diff --git a/docker/ovsdpdk/ovsdpdk-db/Dockerfile.j2 b/kolla/docker/ovsdpdk/ovsdpdk-db/Dockerfile.j2 similarity index 100% rename from docker/ovsdpdk/ovsdpdk-db/Dockerfile.j2 rename to kolla/docker/ovsdpdk/ovsdpdk-db/Dockerfile.j2 diff --git a/docker/ovsdpdk/ovsdpdk-db/extend_start.sh b/kolla/docker/ovsdpdk/ovsdpdk-db/extend_start.sh similarity index 100% rename from docker/ovsdpdk/ovsdpdk-db/extend_start.sh rename to kolla/docker/ovsdpdk/ovsdpdk-db/extend_start.sh diff --git a/docker/ovsdpdk/ovsdpdk-db/start_ovsdb_server.sh b/kolla/docker/ovsdpdk/ovsdpdk-db/start_ovsdb_server.sh similarity index 100% rename from docker/ovsdpdk/ovsdpdk-db/start_ovsdb_server.sh rename to kolla/docker/ovsdpdk/ovsdpdk-db/start_ovsdb_server.sh diff --git a/docker/ovsdpdk/ovsdpdk-vswitchd/Dockerfile.j2 b/kolla/docker/ovsdpdk/ovsdpdk-vswitchd/Dockerfile.j2 similarity index 100% rename from docker/ovsdpdk/ovsdpdk-vswitchd/Dockerfile.j2 rename to kolla/docker/ovsdpdk/ovsdpdk-vswitchd/Dockerfile.j2 diff --git a/docker/ovsdpdk/ovsdpdk-vswitchd/extend_start.sh b/kolla/docker/ovsdpdk/ovsdpdk-vswitchd/extend_start.sh similarity index 100% rename from docker/ovsdpdk/ovsdpdk-vswitchd/extend_start.sh rename to kolla/docker/ovsdpdk/ovsdpdk-vswitchd/extend_start.sh diff --git a/docker/ovsdpdk/ovsdpdk/Dockerfile.j2 b/kolla/docker/ovsdpdk/ovsdpdk/Dockerfile.j2 similarity index 100% rename from docker/ovsdpdk/ovsdpdk/Dockerfile.j2 rename to kolla/docker/ovsdpdk/ovsdpdk/Dockerfile.j2 diff --git a/docker/ovsdpdk/ovsdpdk/extend_start.sh b/kolla/docker/ovsdpdk/ovsdpdk/extend_start.sh similarity index 100% rename from docker/ovsdpdk/ovsdpdk/extend_start.sh rename to kolla/docker/ovsdpdk/ovsdpdk/extend_start.sh diff --git a/docker/placement/placement-api/Dockerfile.j2 b/kolla/docker/placement/placement-api/Dockerfile.j2 similarity index 100% rename from docker/placement/placement-api/Dockerfile.j2 rename to kolla/docker/placement/placement-api/Dockerfile.j2 diff --git a/docker/placement/placement-api/extend_start.sh b/kolla/docker/placement/placement-api/extend_start.sh similarity index 100% rename from docker/placement/placement-api/extend_start.sh rename to kolla/docker/placement/placement-api/extend_start.sh diff --git a/docker/placement/placement-base/Dockerfile.j2 b/kolla/docker/placement/placement-base/Dockerfile.j2 similarity index 100% rename from docker/placement/placement-base/Dockerfile.j2 rename to kolla/docker/placement/placement-base/Dockerfile.j2 diff --git a/docker/placement/placement-base/extend_start.sh b/kolla/docker/placement/placement-base/extend_start.sh similarity index 100% rename from docker/placement/placement-base/extend_start.sh rename to kolla/docker/placement/placement-base/extend_start.sh diff --git a/docker/prometheus/prometheus-alertmanager/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-alertmanager/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-alertmanager/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-alertmanager/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-base/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-base/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-base/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-base/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-base/extend_start.sh b/kolla/docker/prometheus/prometheus-base/extend_start.sh similarity index 100% rename from docker/prometheus/prometheus-base/extend_start.sh rename to kolla/docker/prometheus/prometheus-base/extend_start.sh diff --git a/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-cadvisor/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-cadvisor/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-cadvisor/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-cadvisor/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-mtail/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-mtail/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-mtail/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-mtail/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-node-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-node-exporter/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-node-exporter/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-node-exporter/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-openstack-network-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-openstack-network-exporter/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-openstack-network-exporter/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-openstack-network-exporter/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-server/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-server/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-server/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-server/Dockerfile.j2 diff --git a/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 similarity index 100% rename from docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 rename to kolla/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 diff --git a/docker/proxysql/Dockerfile.j2 b/kolla/docker/proxysql/Dockerfile.j2 similarity index 100% rename from docker/proxysql/Dockerfile.j2 rename to kolla/docker/proxysql/Dockerfile.j2 diff --git a/docker/proxysql/kolla_extend_start b/kolla/docker/proxysql/kolla_extend_start similarity index 100% rename from docker/proxysql/kolla_extend_start rename to kolla/docker/proxysql/kolla_extend_start diff --git a/docker/proxysql/kolla_proxysql_config_sync b/kolla/docker/proxysql/kolla_proxysql_config_sync similarity index 100% rename from docker/proxysql/kolla_proxysql_config_sync rename to kolla/docker/proxysql/kolla_proxysql_config_sync diff --git a/docker/rabbitmq/Dockerfile.j2 b/kolla/docker/rabbitmq/Dockerfile.j2 similarity index 100% rename from docker/rabbitmq/Dockerfile.j2 rename to kolla/docker/rabbitmq/Dockerfile.j2 diff --git a/docker/rabbitmq/apt_preferences_rabbitmq.debian b/kolla/docker/rabbitmq/apt_preferences_rabbitmq.debian similarity index 100% rename from docker/rabbitmq/apt_preferences_rabbitmq.debian rename to kolla/docker/rabbitmq/apt_preferences_rabbitmq.debian diff --git a/docker/rabbitmq/apt_preferences_rabbitmq.ubuntu b/kolla/docker/rabbitmq/apt_preferences_rabbitmq.ubuntu similarity index 100% rename from docker/rabbitmq/apt_preferences_rabbitmq.ubuntu rename to kolla/docker/rabbitmq/apt_preferences_rabbitmq.ubuntu diff --git a/docker/rabbitmq/extend_start.sh b/kolla/docker/rabbitmq/extend_start.sh similarity index 100% rename from docker/rabbitmq/extend_start.sh rename to kolla/docker/rabbitmq/extend_start.sh diff --git a/docker/rabbitmq/healthcheck_rabbitmq b/kolla/docker/rabbitmq/healthcheck_rabbitmq similarity index 100% rename from docker/rabbitmq/healthcheck_rabbitmq rename to kolla/docker/rabbitmq/healthcheck_rabbitmq diff --git a/docker/skyline/skyline-apiserver/Dockerfile.j2 b/kolla/docker/skyline/skyline-apiserver/Dockerfile.j2 similarity index 100% rename from docker/skyline/skyline-apiserver/Dockerfile.j2 rename to kolla/docker/skyline/skyline-apiserver/Dockerfile.j2 diff --git a/docker/skyline/skyline-apiserver/extend_start.sh b/kolla/docker/skyline/skyline-apiserver/extend_start.sh similarity index 100% rename from docker/skyline/skyline-apiserver/extend_start.sh rename to kolla/docker/skyline/skyline-apiserver/extend_start.sh diff --git a/docker/skyline/skyline-base/Dockerfile.j2 b/kolla/docker/skyline/skyline-base/Dockerfile.j2 similarity index 100% rename from docker/skyline/skyline-base/Dockerfile.j2 rename to kolla/docker/skyline/skyline-base/Dockerfile.j2 diff --git a/docker/skyline/skyline-base/extend_start.sh b/kolla/docker/skyline/skyline-base/extend_start.sh similarity index 100% rename from docker/skyline/skyline-base/extend_start.sh rename to kolla/docker/skyline/skyline-base/extend_start.sh diff --git a/docker/skyline/skyline-console/Dockerfile.j2 b/kolla/docker/skyline/skyline-console/Dockerfile.j2 similarity index 100% rename from docker/skyline/skyline-console/Dockerfile.j2 rename to kolla/docker/skyline/skyline-console/Dockerfile.j2 diff --git a/docker/tacker/tacker-base/Dockerfile.j2 b/kolla/docker/tacker/tacker-base/Dockerfile.j2 similarity index 100% rename from docker/tacker/tacker-base/Dockerfile.j2 rename to kolla/docker/tacker/tacker-base/Dockerfile.j2 diff --git a/docker/tacker/tacker-base/extend_start.sh b/kolla/docker/tacker/tacker-base/extend_start.sh similarity index 100% rename from docker/tacker/tacker-base/extend_start.sh rename to kolla/docker/tacker/tacker-base/extend_start.sh diff --git a/docker/tacker/tacker-conductor/Dockerfile.j2 b/kolla/docker/tacker/tacker-conductor/Dockerfile.j2 similarity index 100% rename from docker/tacker/tacker-conductor/Dockerfile.j2 rename to kolla/docker/tacker/tacker-conductor/Dockerfile.j2 diff --git a/docker/tacker/tacker-server/Dockerfile.j2 b/kolla/docker/tacker/tacker-server/Dockerfile.j2 similarity index 100% rename from docker/tacker/tacker-server/Dockerfile.j2 rename to kolla/docker/tacker/tacker-server/Dockerfile.j2 diff --git a/docker/tacker/tacker-server/extend_start.sh b/kolla/docker/tacker/tacker-server/extend_start.sh similarity index 100% rename from docker/tacker/tacker-server/extend_start.sh rename to kolla/docker/tacker/tacker-server/extend_start.sh diff --git a/docker/tgtd/Dockerfile.j2 b/kolla/docker/tgtd/Dockerfile.j2 similarity index 100% rename from docker/tgtd/Dockerfile.j2 rename to kolla/docker/tgtd/Dockerfile.j2 diff --git a/docker/trove/trove-api/Dockerfile.j2 b/kolla/docker/trove/trove-api/Dockerfile.j2 similarity index 100% rename from docker/trove/trove-api/Dockerfile.j2 rename to kolla/docker/trove/trove-api/Dockerfile.j2 diff --git a/docker/trove/trove-api/extend_start.sh b/kolla/docker/trove/trove-api/extend_start.sh similarity index 100% rename from docker/trove/trove-api/extend_start.sh rename to kolla/docker/trove/trove-api/extend_start.sh diff --git a/docker/trove/trove-base/Dockerfile.j2 b/kolla/docker/trove/trove-base/Dockerfile.j2 similarity index 100% rename from docker/trove/trove-base/Dockerfile.j2 rename to kolla/docker/trove/trove-base/Dockerfile.j2 diff --git a/docker/trove/trove-base/extend_start.sh b/kolla/docker/trove/trove-base/extend_start.sh similarity index 100% rename from docker/trove/trove-base/extend_start.sh rename to kolla/docker/trove/trove-base/extend_start.sh diff --git a/docker/trove/trove-conductor/Dockerfile.j2 b/kolla/docker/trove/trove-conductor/Dockerfile.j2 similarity index 100% rename from docker/trove/trove-conductor/Dockerfile.j2 rename to kolla/docker/trove/trove-conductor/Dockerfile.j2 diff --git a/docker/trove/trove-guestagent/Dockerfile.j2 b/kolla/docker/trove/trove-guestagent/Dockerfile.j2 similarity index 100% rename from docker/trove/trove-guestagent/Dockerfile.j2 rename to kolla/docker/trove/trove-guestagent/Dockerfile.j2 diff --git a/docker/trove/trove-taskmanager/Dockerfile.j2 b/kolla/docker/trove/trove-taskmanager/Dockerfile.j2 similarity index 100% rename from docker/trove/trove-taskmanager/Dockerfile.j2 rename to kolla/docker/trove/trove-taskmanager/Dockerfile.j2 diff --git a/docker/valkey/valkey-base/Dockerfile.j2 b/kolla/docker/valkey/valkey-base/Dockerfile.j2 similarity index 100% rename from docker/valkey/valkey-base/Dockerfile.j2 rename to kolla/docker/valkey/valkey-base/Dockerfile.j2 diff --git a/docker/valkey/valkey-base/extend_start.sh b/kolla/docker/valkey/valkey-base/extend_start.sh similarity index 100% rename from docker/valkey/valkey-base/extend_start.sh rename to kolla/docker/valkey/valkey-base/extend_start.sh diff --git a/docker/valkey/valkey-sentinel/Dockerfile.j2 b/kolla/docker/valkey/valkey-sentinel/Dockerfile.j2 similarity index 100% rename from docker/valkey/valkey-sentinel/Dockerfile.j2 rename to kolla/docker/valkey/valkey-sentinel/Dockerfile.j2 diff --git a/docker/valkey/valkey-sentinel/extend_start.sh b/kolla/docker/valkey/valkey-sentinel/extend_start.sh similarity index 100% rename from docker/valkey/valkey-sentinel/extend_start.sh rename to kolla/docker/valkey/valkey-sentinel/extend_start.sh diff --git a/docker/valkey/valkey-server/Dockerfile.j2 b/kolla/docker/valkey/valkey-server/Dockerfile.j2 similarity index 100% rename from docker/valkey/valkey-server/Dockerfile.j2 rename to kolla/docker/valkey/valkey-server/Dockerfile.j2 diff --git a/docker/watcher/watcher-api/Dockerfile.j2 b/kolla/docker/watcher/watcher-api/Dockerfile.j2 similarity index 100% rename from docker/watcher/watcher-api/Dockerfile.j2 rename to kolla/docker/watcher/watcher-api/Dockerfile.j2 diff --git a/docker/watcher/watcher-api/extend_start.sh b/kolla/docker/watcher/watcher-api/extend_start.sh similarity index 100% rename from docker/watcher/watcher-api/extend_start.sh rename to kolla/docker/watcher/watcher-api/extend_start.sh diff --git a/docker/watcher/watcher-applier/Dockerfile.j2 b/kolla/docker/watcher/watcher-applier/Dockerfile.j2 similarity index 100% rename from docker/watcher/watcher-applier/Dockerfile.j2 rename to kolla/docker/watcher/watcher-applier/Dockerfile.j2 diff --git a/docker/watcher/watcher-base/Dockerfile.j2 b/kolla/docker/watcher/watcher-base/Dockerfile.j2 similarity index 100% rename from docker/watcher/watcher-base/Dockerfile.j2 rename to kolla/docker/watcher/watcher-base/Dockerfile.j2 diff --git a/docker/watcher/watcher-base/extend_start.sh b/kolla/docker/watcher/watcher-base/extend_start.sh similarity index 100% rename from docker/watcher/watcher-base/extend_start.sh rename to kolla/docker/watcher/watcher-base/extend_start.sh diff --git a/docker/watcher/watcher-engine/Dockerfile.j2 b/kolla/docker/watcher/watcher-engine/Dockerfile.j2 similarity index 100% rename from docker/watcher/watcher-engine/Dockerfile.j2 rename to kolla/docker/watcher/watcher-engine/Dockerfile.j2 diff --git a/kolla/image/kolla_worker.py b/kolla/image/kolla_worker.py index 1c704d1cf6..1dc37e2a60 100644 --- a/kolla/image/kolla_worker.py +++ b/kolla/image/kolla_worker.py @@ -40,6 +40,8 @@ PROJECT_ROOT = os.path.abspath(os.path.join( os.path.dirname(os.path.realpath(__file__)), '../..')) +KOLLA_PACKAGE_DIR = os.path.abspath(os.path.join( + os.path.dirname(os.path.realpath(__file__)), '..')) class Image(object): @@ -213,6 +215,7 @@ def _get_scm_labels(self): def _get_images_dir(self): possible_paths = ( + KOLLA_PACKAGE_DIR, PROJECT_ROOT, os.path.join(sys.prefix, 'share/kolla'), os.path.join(sys.prefix, 'local/share/kolla'), diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..25628706c5 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,43 @@ +[build-system] +requires = ["pbr>=6.1.1"] +build-backend = "pbr.build" + +[project] +name = "kolla" +description = "Tool for building production-ready OpenStack and infrastructure containers" +authors = [ + {name = "OpenStack", email = "openstack-discuss@lists.openstack.org"}, +] +readme = {file = "README.rst", content-type = "text/x-rst"} +license = "Apache-2.0" +dynamic = ["version", "dependencies"] +requires-python = ">=3.10" +classifiers = [ + "Environment :: OpenStack", + "Intended Audience :: Information Technology", + "Intended Audience :: System Administrators", + "Operating System :: POSIX :: Linux", + "Programming Language :: Python", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", +] + +[project.urls] +Homepage = "https://docs.openstack.org/kolla/latest/" + +[project.scripts] +kolla-build = "kolla.cmd.build:main" + +[project.entry-points."oslo.config.opts"] +kolla = "kolla.opts:list_opts" + +[tool.setuptools.packages.find] +include = ["kolla*"] + +[tool.setuptools.package-data] +kolla = ["docker/**"] diff --git a/setup.cfg b/setup.cfg index 2634ee512e..f75aa848db 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,43 +1,2 @@ [metadata] name = kolla -summary = Kolla OpenStack Deployment -description_file = - README.rst -author = OpenStack -author_email = openstack-discuss@lists.openstack.org -home_page = https://docs.openstack.org/kolla/latest/ -python_requires = >=3.10 -license = Apache License, Version 2.0 -classifier = - Environment :: OpenStack - Intended Audience :: Information Technology - Intended Audience :: System Administrators - License :: OSI Approved :: Apache Software License - Operating System :: POSIX :: Linux - Programming Language :: Python - Programming Language :: Python :: Implementation :: CPython - Programming Language :: Python :: 3 :: Only - Programming Language :: Python :: 3 - Programming Language :: Python :: 3.10 - Programming Language :: Python :: 3.11 - Programming Language :: Python :: 3.12 - Programming Language :: Python :: 3.13 - -[files] -packages = - kolla -data_files = - share/kolla/docker = docker/* - share/kolla/tools = tools/validate-docker-execute.sh - share/kolla/tools = tools/cleanup-images - share/kolla/tools = tools/start-registry - share/kolla/doc = doc/* - share/kolla/etc_examples = etc/* - share/kolla/contrib = contrib/* - share/kolla = setup.cfg - -[entry_points] -console_scripts = - kolla-build = kolla.cmd.build:main -oslo.config.opts = - kolla = kolla.opts:list_opts diff --git a/tests/test_set_config.py b/tests/test_set_config.py index bf78ed4aa1..831850b0a7 100644 --- a/tests/test_set_config.py +++ b/tests/test_set_config.py @@ -32,7 +32,7 @@ def load_module(name, path): # nasty: to import set_config (not a part of the kolla package) this_dir = os.path.dirname(sys.modules[__name__].__file__) set_configs_file = os.path.abspath( - os.path.join(this_dir, '..', + os.path.join(this_dir, '..', 'kolla', 'docker', 'base', 'set_configs.py')) set_configs = load_module('set_configs', set_configs_file) From 77d310a9ff344a09f35b2c0536b0f7b9e8677deb Mon Sep 17 00:00:00 2001 From: Michal Nasiadka Date: Mon, 15 Jun 2026 17:49:31 +0200 Subject: [PATCH 6/9] Add support to override base repos BaseOS and AppStream for CentOS/Rocky ubuntu, ubuntu-security for Ubuntu debian, debian-security for Debian ubuntu-cloud-archive is not really a base repo - so removing it from ubuntu.sources Change-Id: Iab98de963f2e8532389b7563bb572d8aa20c7aa6 Signed-off-by: Michal Nasiadka --- doc/source/admin/image-building.rst | 91 ++++++++ kolla/common/config.py | 3 +- kolla/docker/base/Dockerfile.j2 | 14 +- kolla/docker/base/ubuntu.sources | 7 - kolla/template/methods.py | 105 +++++++-- kolla/template/repos.yaml | 44 +++- kolla/tests/test_methods.py | 212 ++++++++++++++++-- .../base-repos-in-yaml-f6a4a871da92c823.yaml | 23 ++ roles/kolla-build/defaults/main.yml | 1 + roles/kolla-build/tasks/main.yml | 9 + tests/playbooks/run.yml | 10 + tests/templates/repos.yaml.j2 | 63 ++++++ tests/templates/template_overrides.j2 | 44 +--- 13 files changed, 532 insertions(+), 94 deletions(-) create mode 100644 releasenotes/notes/base-repos-in-yaml-f6a4a871da92c823.yaml create mode 100644 tests/templates/repos.yaml.j2 diff --git a/doc/source/admin/image-building.rst b/doc/source/admin/image-building.rst index af59e4a2ef..4a2c6773b2 100644 --- a/doc/source/admin/image-building.rst +++ b/doc/source/admin/image-building.rst @@ -679,6 +679,97 @@ Can I use the ``--template-override`` option for custom templates? Yes! Custom repos ------------ +repos.yaml +^^^^^^^^^^ + +Kolla uses ``kolla/template/repos.yaml`` to define repositories used during +image builds. Each entry is keyed by a logical name and contains the +information needed to configure the repository. + +Repositories marked with ``distro: True`` are default repos that require no +additional configuration. For RPM-based distros they are enabled via +``dnf config-manager --enable``; for Debian-based distros they are a no-op +as the sources are already provided by the base image. Examples include +``crb``, ``extras``, and the base repos ``baseos`` and ``appstream`` for +CentOS and Rocky Linux, as well as ``debian``, ``debian-security``, +``ubuntu``, ``ubuntu-security``. + +Repositories without ``distro: True`` are fully templated into a new +repository file and must provide at least one of ``baseurl``, ``metalink``, +or ``mirrorlist`` (RPM), or ``url`` (Debian/Ubuntu). + +To override repositories (e.g. to point base repos at a local mirror), +provide a custom ``repos.yaml`` via the ``--repos-yaml`` option and supply +entries without ``distro: True`` and with the desired URL. + +Example for Rocky Linux: + +.. code-block:: yaml + + rocky: + baseos: + name: "baseos" + baseurl: "https://my-mirror.example.com/rocky/10/BaseOS/$basearch/os/" + gpgkey: "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10" + appstream: + name: "appstream" + baseurl: "https://my-mirror.example.com/rocky/10/AppStream/$basearch/os/" + gpgkey: "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10" + crb: + name: "crb" + baseurl: "https://my-mirror.example.com/rocky/10/CRB/$basearch/os/" + gpgkey: "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10" + +Example for Debian: + +.. code-block:: yaml + + debian: + debian: + component: "main" + gpg_key: "/usr/share/keyrings/debian-archive-keyring.gpg" + suite: "trixie trixie-updates trixie-backports" + url: "https://my-mirror.example.com/debian" + debian-security: + component: "main" + gpg_key: "/usr/share/keyrings/debian-archive-keyring.gpg" + suite: "trixie-security" + url: "https://my-mirror.example.com/debian-security" + +Example for Ubuntu: + +.. code-block:: yaml + + ubuntu: + ubuntu: + component: "main universe" + gpg_key: "/usr/share/keyrings/ubuntu-archive-keyring.gpg" + suite: "noble noble-updates noble-backports" + url: "https://my-mirror.example.com/ubuntu/" + ubuntu-security: + component: "main universe" + gpg_key: "/usr/share/keyrings/ubuntu-archive-keyring.gpg" + suite: "noble-security" + url: "https://my-mirror.example.com/ubuntu/" + +.. code-block:: ini + + repos_yaml = /path/to/custom-repos.yaml + +When overriding a base repo, any existing ``.repo`` file on the image +containing that repository ID is automatically removed before the new one +is created. + +Some distro repos share a single ``.repo`` file on disk (for example, +``baseos``, ``appstream``, and ``crb`` all live in ``rocky.repo`` on Rocky +Linux). These repos are annotated with a ``file_group`` field in +``repos.yaml`` that names the shared file. If any repo in a ``file_group`` +is overridden, all other repos sharing that ``file_group`` must also be +overridden — otherwise removing the shared file would silently disable them. +Kolla validates this at build time and raises an error listing the missing +overrides. For Rocky Linux this means overriding ``baseos`` or ``appstream`` +requires also overriding ``crb``. + Red Hat ^^^^^^^ diff --git a/kolla/common/config.py b/kolla/common/config.py index d46de40953..245afce508 100644 --- a/kolla/common/config.py +++ b/kolla/common/config.py @@ -246,7 +246,8 @@ 'kolla-toolbox image'), cfg.StrOpt('openstack-release-codename', default=OPENSTACK_RELEASE_CODENAME, - help='OpenStack release codename for Debian OpenStack extrepo'), + help='OpenStack release codename for Debian OpenStack extrepo ' + 'and Ubuntu Cloud Archive'), cfg.StrOpt('openstack-branch', help='Branch for source images (internal; with a dash; ' 'please set openstack-release instead)'), diff --git a/kolla/docker/base/Dockerfile.j2 b/kolla/docker/base/Dockerfile.j2 index 0e2f3c1abe..6c1022ece3 100644 --- a/kolla/docker/base/Dockerfile.j2 +++ b/kolla/docker/base/Dockerfile.j2 @@ -34,10 +34,8 @@ RUN cat /tmp/kolla_bashrc >> /etc/skel/.bashrc \ ENV PS1="$(tput bold)($(printenv KOLLA_SERVICE_NAME))$(tput sgr0)[$(id -un)@$(hostname -s) $(pwd)]$ " {% if base_package_type == 'rpm' %} -# For RPM Variants, enable the correct repositories - this should all be done -# in the base image so repos are consistent throughout the system. This also -# enables to provide repo overrides at a later date in a simple fashion if we -# desire such functionality. I think we will :) + +{{ macros.enable_extra_repos(['baseos', 'appstream']) }} ENV KOLLA_RPM_OVS_VERSION=3.5 \ KOLLA_RPM_OVN_VERSION=26.03 @@ -154,6 +152,7 @@ RUN {{ macros.install_packages(base_centos_yum_repo_packages | customizable("cen {# endif for base_package_type rpm #} {% elif base_package_type == 'deb' %} + # This will prevent questions from being asked during the install ENV DEBIAN_FRONTEND noninteractive @@ -195,9 +194,16 @@ COPY {{ base_distro }}.sources.arm64 /etc/apt/sources.list.d/{{ base_distro }}.s {% else %} COPY {{ base_distro }}.sources /etc/apt/sources.list.d/ {% endif %} + COPY sources.list /etc/apt/sources.list.d/kolla-custom.list {% endblock %} +{% if base_distro == 'debian' %} +{{ macros.enable_extra_repos(['debian', 'debian-security']) }} +{% elif base_distro == 'ubuntu' %} +{{ macros.enable_extra_repos(['ubuntu', 'ubuntu-security', 'ubuntu-cloud-archive']) }} +{% endif %} + {% block base_debian_after_sources_list %}{% endblock %} {# install Debian Openstack repos - they are not mirrored on CI #} diff --git a/kolla/docker/base/ubuntu.sources b/kolla/docker/base/ubuntu.sources index f8f609ceed..46b817b7e1 100644 --- a/kolla/docker/base/ubuntu.sources +++ b/kolla/docker/base/ubuntu.sources @@ -12,13 +12,6 @@ Suites: noble-security Components: main universe Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg -## Ubuntu Cloud Archive -Types: deb -URIs: http://ubuntu-cloud.archive.canonical.com/ubuntu -Suites: noble-updates/gazpacho -Components: main -Signed-By: /usr/share/keyrings/ubuntu-cloud-keyring.gpg - # NOTE(hrw): extra repositories are added into image when they are needed as # separate files in /etc/apt/sources.list.d/ directory. For that purpose they # are defined in kolla/template/repos.yaml file. diff --git a/kolla/template/methods.py b/kolla/template/methods.py index 5dbf8da1bb..3d67672068 100644 --- a/kolla/template/methods.py +++ b/kolla/template/methods.py @@ -24,7 +24,9 @@ echo 'Components: {component}' >>/etc/apt/sources.list.d/{repo}.sources && \ echo 'Types: deb' >>/etc/apt/sources.list.d/{repo}.sources && \ echo 'Suites: {suite}' >>/etc/apt/sources.list.d/{repo}.sources && \ -echo 'Signed-By: /etc/kolla/apt-keys/{gpg_key}' \ +echo 'Signed-By: {signed_by}' \ +>>/etc/apt/sources.list.d/{repo}.sources" +APT_TRUSTED = " && echo 'Trusted: yes' \ >>/etc/apt/sources.list.d/{repo}.sources" DNF_BASEURL = " && echo 'baseurl={baseurl}' >>/etc/yum.repos.d/{repo}.repo" DNF_DISABLE = "dnf config-manager --disable {name} || true" @@ -35,6 +37,8 @@ DNF_METALINK = " && echo 'metalink={metalink}' >>/etc/yum.repos.d/{repo}.repo" DNF_MIRRORLIST = " && \ echo 'mirrorlist={mirrorlist}' >>/etc/yum.repos.d/{repo}.repo" +DNF_REMOVE_EXISTING = \ + "grep -rlF '[{name}]' /etc/yum.repos.d/ 2>/dev/null | xargs -r rm -f" DNF_REPO = "echo '[{name}]' >/etc/yum.repos.d/{repo}.repo && \ echo 'name={name}' >>/etc/yum.repos.d/{repo}.repo && \ echo 'enabled=1' >>/etc/yum.repos.d/{repo}.repo" @@ -112,6 +116,7 @@ def handle_repos(context, reponames, mode): os.path.realpath(__file__)) + '/repos.yaml' with open(default_repofile, 'r') as repos_file: repo_data = yaml.safe_load(repos_file) + default_repo_data = {k: dict(v) for k, v in repo_data.items()} if context.get('repos_yaml'): with open(context.get('repos_yaml'), 'r') as repos_file: @@ -125,23 +130,63 @@ def handle_repos(context, reponames, mode): base_distro = context.get('base_distro') base_arch = context.get('base_arch') image_name = context.get('image_name') + openstack_release_codename = context.get('openstack_release_codename') commands = '' + def _build_repo_list(data): + result = {} + for section in (base_package_type, base_distro, + '%s-%s' % (base_distro, base_arch)): + for repo_name, repo_info in data.get(section, {}).items(): + if repo_name in result: + merged = {**result[repo_name], **repo_info} + if any(k in merged for k in + ('baseurl', 'metalink', 'mirrorlist', 'url')): + merged.pop('distro', None) + result[repo_name] = merged + else: + result[repo_name] = repo_info + return result + try: - repo_list = repo_data.get(base_package_type, dict()) | \ - repo_data.get(base_distro, dict()) | \ - repo_data.get('%s-%s' % (base_distro, base_arch), dict()) + repo_list = _build_repo_list(repo_data) except KeyError: # NOTE(hrw): Fallback to distro list repo_list = repo_data[base_distro] + if base_package_type == 'rpm' and context.get('repos_yaml'): + default_repo_list = _build_repo_list(default_repo_data) + distro_overridden = {r for r, d in repo_list.items() + if not d.get('distro') + and default_repo_list.get(r, {}).get('distro')} + if distro_overridden: + overridden_groups = { + default_repo_list[r].get('file_group') + for r in distro_overridden + if default_repo_list.get(r, {}).get('file_group')} + distro_not_overridden = sorted( + r for r, d in repo_list.items() + if d.get('distro') + and r not in distro_overridden + and d.get('file_group') in overridden_groups) + if distro_not_overridden: + raise ValueError( + "Repositories %s override distro-provided repos and will " + "remove their .repo file. Repositories %s are still using " + "distro defaults and share the same file. Please also " + "override them in your repos.yaml." + % (sorted(distro_overridden), distro_not_overridden)) + for index, repo in enumerate(reponames): try: _repo = repo_list[repo] if base_package_type == 'rpm': if mode == 'enable': if not _repo.get('distro'): + commands += DNF_REMOVE_EXISTING.format( + name=_repo['name']) + commands += " && " commands += DNF_REPO.format( name=_repo['name'], repo=repo, @@ -156,6 +201,14 @@ def handle_repos(context, reponames, mode): repo_gpgcheck=_repo['repo_gpgcheck'], repo=repo) + if not any(k in _repo for k in + ('baseurl', 'metalink', 'mirrorlist')): + raise ValueError( + "Repository '%s' has no baseurl, metalink," + " or mirrorlist" % repo) + if 'gpgkey' not in _repo: + raise ValueError( + "Repository '%s' has no gpgkey" % repo) # NOTE(mnasiadka): Support multiple gpgkeys gpgkeys = _repo['gpgkey'].splitlines() for _, gpgkey in enumerate(gpgkeys): @@ -166,25 +219,23 @@ def handle_repos(context, reponames, mode): commands += DNF_GPGKEY_ADD.format( gpgkey=gpgkey, repo=repo) + if 'baseurl' in _repo: + # NOTE(mnasiadka): Support multiple baseurls + baseurl = _repo['baseurl'].splitlines() + for url in baseurl: + commands += DNF_BASEURL.format(baseurl=url, + repo=repo) + elif 'metalink' in _repo: + commands += DNF_METALINK.format( + metalink=_repo['metalink'], repo=repo + ) + elif 'mirrorlist' in _repo: + commands += DNF_MIRRORLIST.format( + mirrorlist=_repo['mirrorlist'], repo=repo + ) else: commands += DNF_ENABLE.format(name=_repo['name']) - if 'baseurl' in _repo: - # NOTE(mnasiadka): Support multiple baseurls - baseurl = _repo['baseurl'].splitlines() - for url in baseurl: - commands += DNF_BASEURL.format(baseurl=url, - repo=repo) - elif 'metalink' in _repo: - commands += DNF_METALINK.format( - metalink=_repo['metalink'], repo=repo - ) - - elif 'mirrorlist' in _repo: - commands += DNF_MIRRORLIST.format( - mirrorlist=_repo['mirrorlist'], repo=repo - ) - if index != len(reponames) - 1: commands += " && " @@ -192,14 +243,22 @@ def handle_repos(context, reponames, mode): commands += DNF_DISABLE.format(name=_repo['name']) elif base_package_type == "deb": - if mode == "enable": + if mode == "enable" and not _repo.get('distro'): + gpg_key = _repo['gpg_key'] + signed_by = gpg_key if gpg_key.startswith('/') \ + else '/etc/kolla/apt-keys/' + gpg_key + suite = _repo['suite'].replace( + '{openstack_release_codename}', + openstack_release_codename.lower()) commands += APT_REPO.format( component=_repo['component'], - gpg_key=_repo['gpg_key'], - suite=_repo['suite'], + signed_by=signed_by, + suite=suite, url=_repo['url'], repo=repo, ) + if _repo.get('trusted'): + commands += APT_TRUSTED.format(repo=repo) if 'arch' in _repo: commands += APT_ARCH.format( diff --git a/kolla/template/repos.yaml b/kolla/template/repos.yaml index 508d829903..42e0185c47 100644 --- a/kolla/template/repos.yaml +++ b/kolla/template/repos.yaml @@ -20,6 +20,10 @@ deb: gpg_key: "opensearch.asc" debian: + debian: + distro: True + debian-security: + distro: True erlang: url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang/ubuntu" suite: "noble" @@ -63,6 +67,15 @@ debian-aarch64: gpg_key: "rabbitmq.gpg" ubuntu: + ubuntu: + distro: True + ubuntu-security: + distro: True + ubuntu-cloud-archive: + url: "http://ubuntu-cloud.archive.canonical.com/ubuntu" + suite: "noble-updates/{openstack_release_codename}" + component: "main" + gpg_key: "/usr/share/keyrings/ubuntu-cloud-keyring.gpg" erlang: url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang/ubuntu" suite: "noble" @@ -95,6 +108,10 @@ ubuntu: gpg_key: "rabbitmq.gpg" ubuntu-aarch64: + ubuntu: + distro: True + ubuntu-security: + distro: True rabbitmq: url: "https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/noble" suite: "noble" @@ -106,8 +123,7 @@ ubuntu-aarch64: rpm: ceph: - gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage" - metalink: "https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-10-stream&arch=$basearch" + distro: True name: "centos-ceph-squid" crb: distro: True @@ -179,12 +195,36 @@ rpm: https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc name: "rabbitmq_rabbitmq-server" +centos: + appstream: + distro: True + file_group: "centos.repo" + name: "appstream" + baseos: + distro: True + file_group: "centos.repo" + name: "baseos" + crb: + file_group: "centos.repo" + centos-aarch64: erlang: baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/rhel-$releasever-aarch64/" gpgkey: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/pubkey.gpg" name: "copr-rabbitmq-erlang" +rocky: + appstream: + distro: True + file_group: "rocky.repo" + name: "appstream" + baseos: + distro: True + file_group: "rocky.repo" + name: "baseos" + crb: + file_group: "rocky.repo" + rocky-aarch64: erlang: baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/rhel-$releasever-aarch64/" diff --git a/kolla/tests/test_methods.py b/kolla/tests/test_methods.py index e1dc810d1d..8a577aead0 100644 --- a/kolla/tests/test_methods.py +++ b/kolla/tests/test_methods.py @@ -10,6 +10,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +import tempfile + +import yaml + from kolla.template import methods from kolla.tests import base @@ -30,7 +34,9 @@ def test_enable_repos_centos_baseurl(self): } result = methods.handle_repos(template_vars, ["grafana"], "enable") - expectCmd = "RUN echo '[grafana]' " + expectCmd = "RUN grep -rlF '[grafana]' /etc/yum.repos.d/ " + expectCmd += "2>/dev/null | xargs -r rm -f && " + expectCmd += "echo '[grafana]' " expectCmd += ">/etc/yum.repos.d/grafana.repo && " expectCmd += "echo 'name=grafana' " expectCmd += ">>/etc/yum.repos.d/grafana.repo && " @@ -42,7 +48,7 @@ def test_enable_repos_centos_baseurl(self): expectCmd += ">>/etc/yum.repos.d/grafana.repo" self.assertEqual(expectCmd, result) - def test_enable_repos_centos_metalink(self): + def test_enable_repos_centos_ceph_distro(self): template_vars = { 'base_arch': 'x86_64', 'base_distro': 'centos', @@ -50,16 +56,7 @@ def test_enable_repos_centos_metalink(self): } result = methods.handle_repos(template_vars, ["ceph"], "enable") - expectCmd = "RUN echo '[centos-ceph-squid]' " - expectCmd += ">/etc/yum.repos.d/ceph.repo && " - expectCmd += "echo 'name=centos-ceph-squid' " - expectCmd += ">>/etc/yum.repos.d/ceph.repo && " - expectCmd += "echo 'enabled=1' " - expectCmd += ">>/etc/yum.repos.d/ceph.repo && " - expectCmd += "echo 'gpgkey=https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage' " # noqa: E501 - expectCmd += ">>/etc/yum.repos.d/ceph.repo && " - expectCmd += "echo 'metalink=https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-10-stream&arch=$basearch' " # noqa: E501 - expectCmd += ">>/etc/yum.repos.d/ceph.repo" + expectCmd = "RUN dnf config-manager --enable centos-ceph-squid || true" self.assertEqual(expectCmd, result) def test_enable_repos_centos_arch(self): @@ -70,7 +67,9 @@ def test_enable_repos_centos_arch(self): } result = methods.handle_repos(template_vars, ["grafana"], "enable") - expectCmd = "RUN echo '[grafana]' " + expectCmd = "RUN grep -rlF '[grafana]' /etc/yum.repos.d/ " + expectCmd += "2>/dev/null | xargs -r rm -f && " + expectCmd += "echo '[grafana]' " expectCmd += ">/etc/yum.repos.d/grafana.repo && " expectCmd += "echo 'name=grafana' " expectCmd += ">>/etc/yum.repos.d/grafana.repo && " @@ -91,7 +90,9 @@ def test_enable_repos_centos_multiple(self): result = methods.handle_repos(template_vars, ["grafana", "rabbitmq"], "enable") - expectCmd = "RUN echo '[grafana]' " + expectCmd = "RUN grep -rlF '[grafana]' /etc/yum.repos.d/ " + expectCmd += "2>/dev/null | xargs -r rm -f && " + expectCmd += "echo '[grafana]' " expectCmd += ">/etc/yum.repos.d/grafana.repo && " expectCmd += "echo 'name=grafana' " expectCmd += ">>/etc/yum.repos.d/grafana.repo && " @@ -102,6 +103,8 @@ def test_enable_repos_centos_multiple(self): expectCmd += "echo 'baseurl=https://rpm.grafana.com' " expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "grep -rlF '[rabbitmq_rabbitmq-server]' " + expectCmd += "/etc/yum.repos.d/ 2>/dev/null | xargs -r rm -f && " expectCmd += "echo '[rabbitmq_rabbitmq-server]' " expectCmd += ">/etc/yum.repos.d/rabbitmq.repo && " expectCmd += "echo 'name=rabbitmq_rabbitmq-server' " @@ -151,6 +154,8 @@ def test_enable_repos_centos_distro_enable_multiple(self): result = methods.handle_repos(template_vars, ['crb', 'grafana'], 'enable') expectCmd = "RUN dnf config-manager --enable crb || true && " + expectCmd += "grep -rlF '[grafana]' /etc/yum.repos.d/ " + expectCmd += "2>/dev/null | xargs -r rm -f && " expectCmd += "echo '[grafana]' " expectCmd += ">/etc/yum.repos.d/grafana.repo && " expectCmd += "echo 'name=grafana' " @@ -168,6 +173,7 @@ def test_enable_repos_debian(self): "base_arch": "x86_64", "base_distro": "debian", "base_package_type": "deb", + "openstack_release_codename": "Gazpacho", } result = methods.handle_repos(template_vars, ["grafana"], "enable") @@ -188,6 +194,7 @@ def test_enable_repos_debian_arch(self): 'base_arch': 'aarch64', 'base_distro': 'debian', 'base_package_type': 'deb', + 'openstack_release_codename': 'Gazpacho', } result = methods.handle_repos(template_vars, ["rabbitmq"], "enable") @@ -220,6 +227,7 @@ def test_enable_repos_debian_multiple(self): 'base_arch': 'x86_64', 'base_distro': 'debian', 'base_package_type': 'deb', + 'openstack_release_codename': 'Gazpacho', } result = methods.handle_repos(template_vars, @@ -273,3 +281,179 @@ def test_handle_repos_string(self): r'repositories', methods.handle_repos, template_vars, 'grafana', 'disable') + + def test_enable_repos_debian_distro_noop(self): + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'debian', + 'base_package_type': 'deb', + } + + result = methods.handle_repos(template_vars, ['debian'], 'enable') + self.assertEqual('', result) + + def test_enable_repos_deb_absolute_signed_by(self): + repos = {'debian': {'test-repo': { + 'url': 'http://example.com/debian', + 'suite': 'trixie', + 'component': 'main', + 'gpg_key': '/usr/share/keyrings/test.gpg', + }}} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml') as f: + yaml.dump(repos, f) + f.flush() + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'debian', + 'base_package_type': 'deb', + 'openstack_release_codename': 'Gazpacho', + 'repos_yaml': f.name, + } + result = methods.handle_repos( + template_vars, ['test-repo'], 'enable') + self.assertIn( + 'Signed-By: /usr/share/keyrings/test.gpg', result) + + def test_repos_yaml_merge_keeps_default_repos(self): + repos = {'rocky': {'baseos': { + 'name': 'baseos', + 'baseurl': 'http://mirror.example.com/rocky/10/BaseOS/$basearch/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10', + }}} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml') as f: + yaml.dump(repos, f) + f.flush() + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'centos', + 'base_package_type': 'rpm', + 'repos_yaml': f.name, + } + expected_commands = methods.handle_repos( + template_vars, ['grafana'], 'enable') + self.assertIn( + "echo 'gpgkey=https://rpm.grafana.com/gpg.key' " + ">>/etc/yum.repos.d/grafana.repo", + expected_commands) + + def test_repos_yaml_distro_override_validation(self): + """Overriding baseos and appstream would delete rocky.repo. + + crb is a distro repo that also uses that file group. Verify a + ValueError is raised so the user knows to override crb as well. + """ + repos = {'rocky': { + 'baseos': { + 'name': 'baseos', + 'baseurl': 'http://mirror.example.com/rocky/10/BaseOS/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10', + }, + 'appstream': { + 'name': 'appstream', + 'baseurl': 'http://mirror.example.com/rocky/10/AppStream/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10', + }, + }} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml') as f: + yaml.dump(repos, f) + f.flush() + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'rocky', + 'base_package_type': 'rpm', + 'repos_yaml': f.name, + } + self.assertRaisesRegex( + ValueError, "still using distro defaults and share the same", + methods.handle_repos, template_vars, ['baseos'], 'enable') + + def test_enable_repos_rpm_missing_url_raises(self): + repos = {'rpm': {'test-repo': {'name': 'test-repo'}}} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml') as f: + yaml.dump(repos, f) + f.flush() + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'centos', + 'base_package_type': 'rpm', + 'repos_yaml': f.name, + } + self.assertRaises(ValueError, methods.handle_repos, + template_vars, ['test-repo'], 'enable') + + def test_enable_repos_rpm_missing_gpgkey_raises(self): + repos = {'rpm': {'test-repo': { + 'name': 'test-repo', + 'baseurl': 'http://mirror.example.com/repo/', + }}} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml') as f: + yaml.dump(repos, f) + f.flush() + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'centos', + 'base_package_type': 'rpm', + 'repos_yaml': f.name, + } + self.assertRaises(ValueError, methods.handle_repos, + template_vars, ['test-repo'], 'enable') + + def test_repos_yaml_rpm_section_override_not_blocked_by_distro_section( + self): + """Overriding distro repos in 'rpm' section must not be undone. + + The more-specific distro section must not merge distro:True back + on top of a URL-bearing override from the generic 'rpm' section. + """ + base = 'http://mirror.example.com/centos/10' + gpgkey = 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial' + repos = {'rpm': { + 'baseos': { + 'name': 'baseos', + 'baseurl': base + '/BaseOS/$basearch/', + 'gpgkey': gpgkey, + }, + 'appstream': { + 'name': 'appstream', + 'baseurl': base + '/AppStream/$basearch/', + 'gpgkey': gpgkey, + }, + 'crb': { + 'name': 'crb', + 'baseurl': base + '/CRB/$basearch/', + 'gpgkey': gpgkey, + }, + }} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml') as f: + yaml.dump(repos, f) + f.flush() + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'centos', + 'base_package_type': 'rpm', + 'repos_yaml': f.name, + } + result = methods.handle_repos( + template_vars, ['baseos', 'appstream', 'crb'], 'enable') + self.assertIn('mirror.example.com', result) + + def test_enable_repos_openstack_release_codename_substitution(self): + repos = {'ubuntu': {'ubuntu-cloud-archive': { + 'url': 'http://ubuntu-cloud.archive.canonical.com/ubuntu', + 'suite': 'noble-updates/{openstack_release_codename}', + 'component': 'main', + 'gpg_key': '/usr/share/keyrings/ubuntu-cloud-keyring.gpg', + }}} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml') as f: + yaml.dump(repos, f) + f.flush() + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'ubuntu', + 'base_package_type': 'deb', + 'openstack_release_codename': 'Gazpacho', + 'repos_yaml': f.name, + } + result = methods.handle_repos( + template_vars, ['ubuntu-cloud-archive'], 'enable') + self.assertIn('noble-updates/gazpacho', result) diff --git a/releasenotes/notes/base-repos-in-yaml-f6a4a871da92c823.yaml b/releasenotes/notes/base-repos-in-yaml-f6a4a871da92c823.yaml new file mode 100644 index 0000000000..1f98f7d60c --- /dev/null +++ b/releasenotes/notes/base-repos-in-yaml-f6a4a871da92c823.yaml @@ -0,0 +1,23 @@ +--- +features: + - | + Base OS repositories for CentOS Stream and Rocky Linux (``baseos``, + ``appstream``, ``crb``) are now defined in ``repos.yaml`` and can be + overridden via ``--repos-yaml`` to point at local mirrors. When + overriding any of these repositories, all others sharing the same + ``.repo`` file (identified by the ``file_group`` field) must also be + overridden to avoid silently disabling them. + - | + Base OS repositories for Debian and Ubuntu are now defined in + ``repos.yaml`` with ``distro: True``. They can be overridden via + ``--repos-yaml`` to point at local mirrors. The ``gpg_key`` field for + Debian/Ubuntu repositories now supports absolute paths, allowing use of + distro-provided keyrings such as + ``/usr/share/keyrings/debian-archive-keyring.gpg``. + - | + When overriding an RPM base repository, any existing ``.repo`` file on + the image containing that repository ID is automatically removed before + the new one is created. + - | + User-provided ``repos.yaml`` is now merged with upstream default instead of + requiring a full copy of stock file. diff --git a/roles/kolla-build/defaults/main.yml b/roles/kolla-build/defaults/main.yml index fe7c33a339..98051c97bb 100644 --- a/roles/kolla-build/defaults/main.yml +++ b/roles/kolla-build/defaults/main.yml @@ -1,4 +1,5 @@ --- kolla_build_logs_dir: "{{ zuul_output_dir }}/logs/kolla/build" +kolla_build_repos_yaml_path: "" kolla_build_template_overrides_path: "" kolla_build_venv_path: "/tmp/kolla-virtualenv" diff --git a/roles/kolla-build/tasks/main.yml b/roles/kolla-build/tasks/main.yml index e5529f381d..927bb13099 100644 --- a/roles/kolla-build/tasks/main.yml +++ b/roles/kolla-build/tasks/main.yml @@ -1,4 +1,13 @@ --- +- name: Template repos.yaml + ansible.builtin.template: + src: "{{ kolla_build_repos_yaml_path }}" + dest: /etc/kolla/repos.yaml + mode: "0660" + owner: zuul + group: zuul + when: kolla_build_repos_yaml_path | length > 0 + - name: Template template_overrides.j2 ansible.builtin.template: src: "{{ kolla_build_template_overrides_path }}" diff --git a/tests/playbooks/run.yml b/tests/playbooks/run.yml index ad3c80075d..99791da0f1 100644 --- a/tests/playbooks/run.yml +++ b/tests/playbooks/run.yml @@ -62,6 +62,16 @@ when: - not publisher + - name: Set up base repo overrides + vars: + kolla_repos_yaml_config: + DEFAULT: + repos_yaml: /etc/kolla/repos.yaml + ansible.builtin.set_fact: + kolla_build_config: "{{ kolla_build_config | combine(kolla_repos_yaml_config, recursive=True) }}" + kolla_build_repos_yaml_path: "{{ zuul.executor.work_root }}/{{ zuul.projects['opendev.org/openstack/kolla'].src_dir }}/tests/templates/repos.yaml.j2" + when: base_distro in ['debian', 'rocky', 'ubuntu'] + - name: Import kolla-build-config role import_role: name: kolla-build-config diff --git a/tests/templates/repos.yaml.j2 b/tests/templates/repos.yaml.j2 new file mode 100644 index 0000000000..42c6724f92 --- /dev/null +++ b/tests/templates/repos.yaml.j2 @@ -0,0 +1,63 @@ +--- +{% if base_distro == 'debian' %} +debian: + debian: + component: "main" + gpg_key: "/usr/share/keyrings/debian-archive-keyring.gpg" + suite: "trixie trixie-updates trixie-backports" + trusted: True + url: "http://{{ nodepool_mirror_host }}/debian" + debian-security: + component: "main" + gpg_key: "/usr/share/keyrings/debian-archive-keyring.gpg" + suite: "trixie-security" + trusted: True + url: "http://{{ nodepool_mirror_host }}/debian-security" +{% elif base_distro == 'rocky' %} +rocky: + appstream: + baseurl: "http://dl.rockylinux.org/$contentdir/$releasever/AppStream/$basearch/os/" + gpgkey: "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10" + name: "appstream" + baseos: + baseurl: "http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/" + gpgkey: "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10" + name: "baseos" + crb: + baseurl: "http://dl.rockylinux.org/$contentdir/$releasever/CRB/$basearch/os/" + gpgkey: "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10" + name: "crb" +{% elif base_distro == 'ubuntu' %} +ubuntu: + ubuntu: + component: "main universe" + gpg_key: "/usr/share/keyrings/ubuntu-archive-keyring.gpg" + suite: "noble noble-updates noble-backports" + trusted: True + url: "http://{{ nodepool_mirror_host }}/ubuntu/" + ubuntu-security: + component: "main universe" + gpg_key: "/usr/share/keyrings/ubuntu-archive-keyring.gpg" + suite: "noble-security" + trusted: True + url: "http://{{ nodepool_mirror_host }}/ubuntu/" + ubuntu-cloud-archive: + component: "main" + gpg_key: "/usr/share/keyrings/ubuntu-cloud-keyring.gpg" + suite: "noble-updates/gazpacho" + trusted: True + url: "http://{{ nodepool_mirror_host }}/ubuntu-cloud-archive" +ubuntu-aarch64: + ubuntu: + component: "main universe" + gpg_key: "/usr/share/keyrings/ubuntu-archive-keyring.gpg" + suite: "noble noble-updates noble-backports" + trusted: True + url: "http://{{ nodepool_mirror_host }}/ubuntu-ports/" + ubuntu-security: + component: "main universe" + gpg_key: "/usr/share/keyrings/ubuntu-archive-keyring.gpg" + suite: "noble-security" + trusted: True + url: "http://{{ nodepool_mirror_host }}/ubuntu-ports/" +{% endif %} diff --git a/tests/templates/template_overrides.j2 b/tests/templates/template_overrides.j2 index 481795cd65..cf34eb37f5 100644 --- a/tests/templates/template_overrides.j2 +++ b/tests/templates/template_overrides.j2 @@ -18,42 +18,9 @@ RUN echo registry={{ nodepool_npmjs_proxy }} > /etc/npmrc \ {% endblock %} {% endraw %} -{% if base_distro == 'rocky' %} -{% raw %} -{% block base_centos_repo_overrides_post_copy %} -{% endraw %} -RUN sed -i -e "s/^mirrorlist/#mirrorlist/g" -e "s/^#baseurl/baseurl/g" \ - /etc/yum.repos.d/rocky.repo -{% raw %} -{% endblock %} -{% endraw %} -{% endif %} - -{% raw %} -{% block base_debian_after_sources_list %} -{% endraw %} -{% if base_distro == "debian" %} - -RUN cp /etc/apt/sources.list.d/debian.sources /tmp/ && \ - sed -i -e "s|^URIs: http://deb.debian.org/debian$|URIs: http://{{ nodepool_mirror_host }}/debian\nTrusted: yes|" \ - -e "s|^URIs: http://deb.debian.org/debian-security|URIs: http://{{ nodepool_mirror_host }}/debian-security\nTrusted: yes|" \ - /etc/apt/sources.list.d/debian.sources - -{% elif base_distro == "ubuntu" %} - -RUN cp /etc/apt/sources.list.d/ubuntu.sources /tmp/ && \ - sed -i -e "s|^URIs: http://archive.ubuntu.com/ubuntu/$|URIs: http://{{ nodepool_mirror_host }}/ubuntu/\nTrusted: yes|" \ - -e "s|^URIs: http://security.ubuntu.com/ubuntu/$|URIs: http://{{ nodepool_mirror_host }}/ubuntu/\nTrusted: yes|" \ - -e "s|^URIs: http://ports.ubuntu.com/ubuntu-ports/$|URIs: http://{{ nodepool_mirror_host }}/ubuntu-ports/\nTrusted: yes|" \ - -e "s|^URIs: http://ubuntu-cloud.archive.canonical.com/ubuntu$|URIs: http://{{ nodepool_mirror_host }}/ubuntu-cloud-archive\nTrusted: yes|" \ - /etc/apt/sources.list.d/ubuntu.sources - -{% endif %} -{% raw %} -{% endblock %} - {# Revert to upstream mirrors after build is complete #} +{% raw %} {% block footer %} {% endraw %} @@ -67,15 +34,6 @@ RUN if [ -f /usr/etc/npmrc ]; then \ fi \ && rm -f /etc/npmrc -{% if base_distro == "debian" %} -RUN if [ -f /tmp/debian.sources ]; then \ - mv -f /tmp/debian.sources /etc/apt/sources.list.d/debian.sources; \ - fi -{% elif base_distro == "ubuntu" %} -RUN if [ -f /tmp/ubuntu.sources ]; then \ - mv -f /tmp/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources; \ - fi -{% endif %} {% raw %} {% endblock %} {% endraw %} From 2d9f8ca4515d1557b67c255c65138b9231c57831 Mon Sep 17 00:00:00 2001 From: Michal Nasiadka Date: Thu, 9 Jul 2026 08:53:32 +0200 Subject: [PATCH 7/9] Update docstring in handle_repos Change-Id: Ic088f5a85f3c033b0c5024d0b2e1bc889c52648d Signed-off-by: Michal Nasiadka --- kolla/template/methods.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/kolla/template/methods.py b/kolla/template/methods.py index 3d67672068..8bb7a7fc3d 100644 --- a/kolla/template/methods.py +++ b/kolla/template/methods.py @@ -101,12 +101,20 @@ def debian_package_install(packages, clean_package_cache=True): @pass_context def handle_repos(context, reponames, mode): - """NOTE(hrw): we need to handle CentOS, Debian and Ubuntu with one macro. + """Generate Dockerfile RUN commands to enable or disable package repos. - Repo names have to be simple names mapped to proper ones. So 'ceph' == - 'centos-ceph-pacific' for CentOS, UCA for Ubuntu (enabled by default) and - something else for Debian. - Distro/arch are not required to have all entries - we ignore missing ones. + Takes a list of logical repo names (e.g. 'ceph', 'grafana') and a mode + ('enable' or 'disable'), looks them up in repos.yaml (merging any + user-supplied repos_yaml override), and returns a shell command string + suitable for use in a Dockerfile RUN instruction. + + Repo names are distro/arch-agnostic aliases that map to the real repo + name and URL for the target platform. So 'ceph' becomes + 'centos-ceph-squid' on CentOS, uses UCA on Ubuntu, and so on. + Distro/arch sections are not required to have all entries - missing ones + are silently ignored. + + NOTE(hrw): we need to handle CentOS, Debian and Ubuntu with one macro. """ if not isinstance(reponames, list): From 2743e10856d4cfcf9eed2fe21cfccf8dd3533c52 Mon Sep 17 00:00:00 2001 From: Michal Nasiadka Date: Tue, 16 Jun 2026 21:53:03 +0200 Subject: [PATCH 8/9] CI: Remove npm proxy configuration We don't use npm anywhere Change-Id: Ibc1b213d575775f79fd5b7b6b8c6e21685fdb0b0 Signed-off-by: Michal Nasiadka --- tests/templates/template_overrides.j2 | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tests/templates/template_overrides.j2 b/tests/templates/template_overrides.j2 index 481795cd65..ee67e2a629 100644 --- a/tests/templates/template_overrides.j2 +++ b/tests/templates/template_overrides.j2 @@ -10,10 +10,6 @@ ENV PIP_TRUSTED_HOST {{ nodepool_mirror_host }} ENV PIP_EXTRA_INDEX_URL {{ nodepool_wheel_mirror }} {% endif %} -RUN echo registry={{ nodepool_npmjs_proxy }} > /etc/npmrc \ - && mkdir -p /usr/etc \ - && ln -s /etc/npmrc /usr/etc/npmrc - {% raw %} {% endblock %} {% endraw %} @@ -62,10 +58,6 @@ ENV PIP_TRUSTED_HOST= {% if use_infra_wheels_mirror | default(true) %} ENV PIP_EXTRA_INDEX_URL= {% endif %} -RUN if [ -f /usr/etc/npmrc ]; then \ - unlink /usr/etc/npmrc; \ - fi \ - && rm -f /etc/npmrc {% if base_distro == "debian" %} RUN if [ -f /tmp/debian.sources ]; then \ From 6b3724a59c94dd7818821f5ea9c9d50b2a880d09 Mon Sep 17 00:00:00 2001 From: Michal Nasiadka Date: Fri, 10 Jul 2026 07:19:32 +0200 Subject: [PATCH 9/9] CI: Fix file triggers after docker/ move Change-Id: Icb27b676ae686fe57f894e8da103da8641ed8eb2 Signed-off-by: Michal Nasiadka --- zuul.d/scenarios/aio.yaml | 46 ++++++++++++--------------------- zuul.d/scenarios/bifrost.yaml | 10 +++---- zuul.d/scenarios/cells.yaml | 10 +++---- zuul.d/scenarios/cephadm.yaml | 19 +++++--------- zuul.d/scenarios/ironic.yaml | 10 +++---- zuul.d/scenarios/mariadb.yaml | 10 +++---- zuul.d/scenarios/masakari.yaml | 10 +++---- zuul.d/scenarios/octavia.yaml | 7 +++-- zuul.d/scenarios/ovn.yaml | 10 +++---- zuul.d/scenarios/telemetry.yaml | 10 +++---- 10 files changed, 54 insertions(+), 88 deletions(-) diff --git a/zuul.d/scenarios/aio.yaml b/zuul.d/scenarios/aio.yaml index f7ed01d31d..4a8a324ea2 100644 --- a/zuul.d/scenarios/aio.yaml +++ b/zuul.d/scenarios/aio.yaml @@ -5,37 +5,23 @@ Runs Kolla-Ansible AIO jobs on all Kolla changes. check: jobs: - - kolla-ansible-centos-10s: - files: ^docker/ - - kolla-ansible-debian-trixie: - files: ^docker/ - - kolla-ansible-debian-trixie-upgrade: - files: ^docker/ - - kolla-ansible-rocky-10: - files: ^docker/ - - kolla-ansible-rocky-10-upgrade: - files: ^docker/ - - kolla-ansible-ubuntu-noble: - files: ^docker/ - - kolla-ansible-ubuntu-noble-upgrade: - files: ^docker/ + - kolla-ansible-centos-10s: &files + files: ^kolla/docker/ + - kolla-ansible-debian-trixie: *files + - kolla-ansible-debian-trixie-upgrade: *files + - kolla-ansible-rocky-10: *files + - kolla-ansible-rocky-10-upgrade: *files + - kolla-ansible-ubuntu-noble: *files + - kolla-ansible-ubuntu-noble-upgrade: *files check-arm64: jobs: - - kolla-ansible-centos-10s-aarch64: - files: ^docker/ - - kolla-ansible-debian-trixie-aarch64: - files: ^docker/ + - kolla-ansible-centos-10s-aarch64: *files + - kolla-ansible-debian-trixie-aarch64: *files gate: jobs: - - kolla-ansible-debian-trixie: - files: ^docker/ - - kolla-ansible-debian-trixie-upgrade: - files: ^docker/ - - kolla-ansible-rocky-10: - files: ^docker/ - - kolla-ansible-rocky-10-upgrade: - files: ^docker/ - - kolla-ansible-ubuntu-noble: - files: ^docker/ - - kolla-ansible-ubuntu-noble-upgrade: - files: ^docker/ + - kolla-ansible-debian-trixie: *files + - kolla-ansible-debian-trixie-upgrade: *files + - kolla-ansible-rocky-10: *files + - kolla-ansible-rocky-10-upgrade: *files + - kolla-ansible-ubuntu-noble: *files + - kolla-ansible-ubuntu-noble-upgrade: *files diff --git a/zuul.d/scenarios/bifrost.yaml b/zuul.d/scenarios/bifrost.yaml index 9a507ec17d..a8eeb4154e 100644 --- a/zuul.d/scenarios/bifrost.yaml +++ b/zuul.d/scenarios/bifrost.yaml @@ -5,9 +5,7 @@ Runs Kolla-Ansible Bifrost scenario jobs on particular Kolla changes. check: jobs: - - kolla-ansible-debian-trixie-bifrost: - files: ^docker/bifrost/ - - kolla-ansible-rocky-10-bifrost: - files: ^docker/bifrost/ - - kolla-ansible-ubuntu-noble-bifrost: - files: ^docker/bifrost/ + - kolla-ansible-debian-trixie-bifrost: &files + files: ^kolla/docker/bifrost/ + - kolla-ansible-rocky-10-bifrost: *files + - kolla-ansible-ubuntu-noble-bifrost: *files diff --git a/zuul.d/scenarios/cells.yaml b/zuul.d/scenarios/cells.yaml index 541d6777f3..ed0ad5f7a1 100644 --- a/zuul.d/scenarios/cells.yaml +++ b/zuul.d/scenarios/cells.yaml @@ -5,9 +5,7 @@ Runs Kolla-Ansible Nova Cells scenario jobs on particular Kolla changes. check: jobs: - - kolla-ansible-debian-trixie-cells: - files: ^docker/proxysql/ - - kolla-ansible-rocky-10-cells: - files: ^docker/proxysql/ - - kolla-ansible-ubuntu-noble-cells: - files: ^docker/proxysql/ + - kolla-ansible-debian-trixie-cells: &files + files: ^docker/docker/proxysql/ + - kolla-ansible-rocky-10-cells: *files + - kolla-ansible-ubuntu-noble-cells: *files diff --git a/zuul.d/scenarios/cephadm.yaml b/zuul.d/scenarios/cephadm.yaml index 66f173ff5a..06f48209bd 100644 --- a/zuul.d/scenarios/cephadm.yaml +++ b/zuul.d/scenarios/cephadm.yaml @@ -5,15 +5,10 @@ Runs Kolla-Ansible CephAdm scenario jobs on particular Kolla changes. check: jobs: - - kolla-ansible-debian-trixie-cephadm: - files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* - - kolla-ansible-debian-bookworm-cephadm-upgrade: - files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* - - kolla-ansible-rocky-10-cephadm: - files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* - - kolla-ansible-rocky-10-cephadm-upgrade: - files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* - - kolla-ansible-ubuntu-noble-cephadm: - files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* - - kolla-ansible-ubuntu-noble-cephadm-upgrade: - files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* + - kolla-ansible-debian-trixie-cephadm: &files + files: ^kolla/docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* + - kolla-ansible-debian-bookworm-cephadm-upgrade: *files + - kolla-ansible-rocky-10-cephadm: *files + - kolla-ansible-rocky-10-cephadm-upgrade: *files + - kolla-ansible-ubuntu-noble-cephadm: *files + - kolla-ansible-ubuntu-noble-cephadm-upgrade: *files diff --git a/zuul.d/scenarios/ironic.yaml b/zuul.d/scenarios/ironic.yaml index f6528ef98e..72a9bf66e4 100644 --- a/zuul.d/scenarios/ironic.yaml +++ b/zuul.d/scenarios/ironic.yaml @@ -5,9 +5,7 @@ Runs Kolla-Ansible Ironic scenario jobs on particular Kolla changes. check: jobs: - - kolla-ansible-debian-trixie-ironic: - files: ^docker\/(base|dnsmasq|ironic|iscsid|openstack-base)\/.* - - kolla-ansible-rocky-10-ironic: - files: ^docker\/(base|dnsmasq|ironic|iscsid|openstack-base)\/.* - - kolla-ansible-ubuntu-noble-ironic: - files: ^docker\/(base|dnsmasq|ironic|iscsid|openstack-base)\/.* + - kolla-ansible-debian-trixie-ironic: &files + files: ^kolla/docker\/(base|dnsmasq|ironic|iscsid|openstack-base)\/.* + - kolla-ansible-rocky-10-ironic: *files + - kolla-ansible-ubuntu-noble-ironic: *files diff --git a/zuul.d/scenarios/mariadb.yaml b/zuul.d/scenarios/mariadb.yaml index 5905a10577..882e1338e2 100644 --- a/zuul.d/scenarios/mariadb.yaml +++ b/zuul.d/scenarios/mariadb.yaml @@ -5,9 +5,7 @@ Runs Kolla-Ansible MariaDB scenario jobs on particular Kolla changes. check: jobs: - - kolla-ansible-debian-trixie-mariadb: - files: ^docker/(base|mariadb-server)/ - - kolla-ansible-rocky-10-mariadb: - files: ^docker/(base|mariadb-server)/ - - kolla-ansible-ubuntu-noble-mariadb: - files: ^docker/(base|mariadb-server)/ + - kolla-ansible-debian-trixie-mariadb: &files + files: ^kolla/docker/(base|mariadb-server)/ + - kolla-ansible-rocky-10-mariadb: *files + - kolla-ansible-ubuntu-noble-mariadb: *files diff --git a/zuul.d/scenarios/masakari.yaml b/zuul.d/scenarios/masakari.yaml index dc7744853f..1a6d355e9c 100644 --- a/zuul.d/scenarios/masakari.yaml +++ b/zuul.d/scenarios/masakari.yaml @@ -5,9 +5,7 @@ Runs Kolla-Ansible Masakari scenario jobs on particular Kolla changes. check: jobs: - - kolla-ansible-debian-trixie-masakari: - files: ^docker/(base|masakari|openstack-base)/ - - kolla-ansible-rocky-10-masakari: - files: ^docker/(base|masakari|openstack-base)/ - - kolla-ansible-ubuntu-noble-masakari: - files: ^docker/(base|masakari|openstack-base)/ + - kolla-ansible-debian-trixie-masakari: &files + files: ^kolla/docker/(base|masakari|openstack-base)/ + - kolla-ansible-rocky-10-masakari: *files + - kolla-ansible-ubuntu-noble-masakari: *files diff --git a/zuul.d/scenarios/octavia.yaml b/zuul.d/scenarios/octavia.yaml index ddfb1e0e8b..c899cc93fc 100644 --- a/zuul.d/scenarios/octavia.yaml +++ b/zuul.d/scenarios/octavia.yaml @@ -5,7 +5,6 @@ Runs Kolla-Ansible Octavia scenario jobs on particular Kolla changes. check: jobs: - - kolla-ansible-debian-trixie-octavia: - files: ^docker/(base|neutron|octavia|openstack-base|openvswitch|ovn)/ - - kolla-ansible-ubuntu-noble-octavia: - files: ^docker/(base|neutron|octavia|openstack-base|openvswitch|ovn)/ + - kolla-ansible-debian-trixie-octavia: &files + files: ^kolla/docker/(base|neutron|octavia|openstack-base|openvswitch|ovn)/ + - kolla-ansible-ubuntu-noble-octavia: *files diff --git a/zuul.d/scenarios/ovn.yaml b/zuul.d/scenarios/ovn.yaml index 1bd5e7e1e1..dee5480c5d 100644 --- a/zuul.d/scenarios/ovn.yaml +++ b/zuul.d/scenarios/ovn.yaml @@ -5,9 +5,7 @@ Runs Kolla-Ansible OVN scenario jobs on particular Kolla changes. check: jobs: - - kolla-ansible-debian-trixie-ovn: - files: ^docker/(base|neutron|openstack-base|openvswitch|ovn|prometheus/prometheus-openstack-network-exporter)/ - - kolla-ansible-rocky-10-ovn: - files: ^docker/(base|neutron|openstack-base|openvswitch|ovn|prometheus/prometheus-openstack-network-exporter)/ - - kolla-ansible-ubuntu-noble-ovn: - files: ^docker/(base|neutron|openstack-base|openvswitch|ovn|prometheus/prometheus-openstack-network-exporter)/ + - kolla-ansible-debian-trixie-ovn: &files + files: ^kolla/docker/(base|neutron|openstack-base|openvswitch|ovn|prometheus/prometheus-openstack-network-exporter)/ + - kolla-ansible-rocky-10-ovn: *files + - kolla-ansible-ubuntu-noble-ovn: *files diff --git a/zuul.d/scenarios/telemetry.yaml b/zuul.d/scenarios/telemetry.yaml index ef90c34af3..04ab2b0f80 100644 --- a/zuul.d/scenarios/telemetry.yaml +++ b/zuul.d/scenarios/telemetry.yaml @@ -5,9 +5,7 @@ Runs Kolla-Ansible Telemetry scenario jobs on particular Kolla changes. check: jobs: - - kolla-ansible-debian-trixie-telemetry: - files: ^docker\/(base|aodh|ceilometer|gnocchi|valkey|openstack-base)\/.* - - kolla-ansible-rocky-10-telemetry: - files: ^docker\/(base|aodh|ceilometer|gnocchi|valkey|openstack-base)\/.* - - kolla-ansible-ubuntu-noble-telemetry: - files: ^docker\/(base|aodh|ceilometer|gnocchi|valkey|openstack-base)\/.* + - kolla-ansible-debian-trixie-telemetry: &files + files: ^kolla/docker\/(base|aodh|ceilometer|gnocchi|valkey|openstack-base)\/.* + - kolla-ansible-rocky-10-telemetry: *files + - kolla-ansible-ubuntu-noble-telemetry: *files