diff --git a/.ansible-lint b/.ansible-lint index a46703146c..0e51220542 100644 --- a/.ansible-lint +++ b/.ansible-lint @@ -2,6 +2,7 @@ exclude_paths: - .cache/ # implicit unless exclude_paths is defined in config - zuul.d/ + - kolla/template/repos.yaml offline: true parseable: true profile: basic diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2 index e0d95ff992..3ea1e5bc6c 100644 --- a/docker/base/Dockerfile.j2 +++ b/docker/base/Dockerfile.j2 @@ -54,46 +54,12 @@ COPY dnf.conf /etc/dnf/dnf.conf {% endblock %} #### BEGIN REPO ENABLEMENT -{% set base_yum_repo_files = [ - 'docker-ce.repo', - 'grafana.repo', - 'influxdb.repo', - 'kolla_el10.repo', - 'mariadb.repo', - 'opensearch.repo', - 'proxysql.repo', - 'rabbitmq_rabbitmq-server.repo', - 'td.repo', -] %} - {% set base_yum_url_packages = [ ] %} {% set base_yum_repo_keys = [ ] %} -{% if base_arch == 'x86_64' %} - {% set base_yum_repo_files = base_yum_repo_files + [ - 'rabbitmq_rabbitmq-erlang.repo', - ] %} - -{% elif base_arch == 'aarch64' %} - {% set base_yum_repo_files = base_yum_repo_files + [ - 'copr-rabbitmq-erlang.repo', - ] %} - -{# -SHA1 keys are not supported in RHEL9: https://github.com/rpm-software-management/rpm/issues/1977 - 'https://packages.erlang-solutions.com/rpm/erlang_solutions.asc', - #} - {% set base_yum_repo_keys = base_yum_repo_keys + [ - ] %} -{% endif %} - -{%- for repo_file in base_yum_repo_files | customizable('yum_repo_files') %} -COPY {{ repo_file }} /etc/yum.repos.d/{{ repo_file }} -{%- endfor %} - {% block base_centos_repo_overrides_post_copy %}{% endblock %} # Install what is needed for en_US.UTF-8 @@ -142,24 +108,9 @@ RUN rm -f /etc/rpm/macros.image-language-conf \ {% set base_centos_yum_repo_packages = base_centos_yum_repo_packages + [ 'dnf-plugins-core' ] %} -{% set base_centos_yum_repos_to_enable = [ -] %} - -{% set base_centos_yum_repos_to_disable = [ - 'centos-ceph-squid', - 'centos-nfv-openvswitch', - 'epel', - 'influxdb', - 'opensearch-3.x', - 'opensearch-dashboards-3.x', -] %} RUN {{ macros.install_packages(base_centos_yum_repo_packages | customizable("centos_yum_repo_packages"), chain=True, clean=False) }} -{%- for repo in base_centos_yum_repos_to_enable | customizable('centos_yum_repos_to_enable') %} && dnf config-manager --enable {{ repo }} {% endfor -%} - -{%- for repo in base_centos_yum_repos_to_disable | customizable('centos_yum_repos_to_disable') %} && dnf config-manager --disable {{ repo }} {% endfor -%} - {%- for key in base_centos_yum_repo_keys | customizable('centos_yum_repo_keys') %} && rpm --import {{ key }} {% endfor %} \ {% block base_centos_repo_overrides_post_yum %}{% endblock -%} && {{ macros.rpm_security_update(clean_package_cache) }} @@ -203,8 +154,7 @@ RUN dnf config-manager --save --setopt=*.metalink="https://mirrors.fedoraproject # Install base packages {{ macros.enable_extra_repos(['epel']) }} -{{ macros.install_packages( base_centos_packages | customizable("centos_packages") | customizable("centos_binary_packages") | customizable("centos_source_packages") ) }} -{{ macros.disable_extra_repos(['epel']) }} +{{ macros.install_packages(base_centos_packages | customizable("centos_packages") | customizable("centos_binary_packages") | customizable("centos_source_packages")) }} {# endif for base_package_type rpm #} {% elif base_package_type == 'deb' %} diff --git a/docker/base/copr-rabbitmq-erlang.repo b/docker/base/copr-rabbitmq-erlang.repo deleted file mode 100644 index fdfbf269ac..0000000000 --- a/docker/base/copr-rabbitmq-erlang.repo +++ /dev/null @@ -1,11 +0,0 @@ -# NOTE(hrw): this repository contains rebuild of Erlang package from RabbitMQ team -# from https://github.com/rabbitmq/erlang-rpm/ -# Thanks to COPR we have aarch64 packages for Rocky Linux - -[copr-rabbitmq-erlang] -name=openstack-kolla COPR with Erlang build for RabbitMQ -baseurl=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/rhel-$releasever-aarch64/ -gpgcheck=1 -enabled=0 -gpgkey=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/pubkey.gpg -repo_gpgcheck=0 diff --git a/docker/base/docker-ce.repo b/docker/base/docker-ce.repo deleted file mode 100644 index 9698823b99..0000000000 --- a/docker/base/docker-ce.repo +++ /dev/null @@ -1,6 +0,0 @@ -[docker-ce] -name=Docker CE Stable - $basearch -baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable -enabled=0 -gpgcheck=1 -gpgkey=https://download.docker.com/linux/centos/gpg diff --git a/docker/base/grafana.repo b/docker/base/grafana.repo deleted file mode 100644 index 002ac89294..0000000000 --- a/docker/base/grafana.repo +++ /dev/null @@ -1,8 +0,0 @@ -[grafana] -name=grafana -baseurl=https://rpm.grafana.com -enabled=0 -gpgcheck=1 -gpgkey=https://rpm.grafana.com/gpg.key -sslverify=1 -sslcacert=/etc/pki/tls/certs/ca-bundle.crt diff --git a/docker/base/influxdb.repo b/docker/base/influxdb.repo deleted file mode 100644 index ae63c20bea..0000000000 --- a/docker/base/influxdb.repo +++ /dev/null @@ -1,6 +0,0 @@ -[influxdb] -name = InfluxDB Repository - RHEL $releasever -baseurl = https://repos.influxdata.com/stable/$basearch/main -enabled = 0 -gpgcheck = 1 -gpgkey = https://repos.influxdata.com/influxdata-archive.key diff --git a/docker/base/kolla_el10.repo b/docker/base/kolla_el10.repo deleted file mode 100644 index b1ffee6757..0000000000 --- a/docker/base/kolla_el10.repo +++ /dev/null @@ -1,10 +0,0 @@ -[kolla_el10] -name=Copr repo for el10-missing owned by @openstack-kolla -baseurl=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/ -type=rpm-md -skip_if_unavailable=True -gpgcheck=1 -gpgkey=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/pubkey.gpg -repo_gpgcheck=0 -enabled=0 -enabled_metadata=1 diff --git a/docker/base/mariadb.repo b/docker/base/mariadb.repo deleted file mode 100644 index 07d97ef205..0000000000 --- a/docker/base/mariadb.repo +++ /dev/null @@ -1,7 +0,0 @@ -[mariadb] -name = MariaDB Server -baseurl = https://dlm.mariadb.com/repo/mariadb-server/10.11/yum/rhel/$releasever/$basearch -gpgcheck = 1 -enabled = 0 -module_hotfixes = 1 -gpgkey = https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB diff --git a/docker/base/opensearch.repo b/docker/base/opensearch.repo deleted file mode 100644 index 63caa75f80..0000000000 --- a/docker/base/opensearch.repo +++ /dev/null @@ -1,19 +0,0 @@ -[opensearch-3.x] -name=OpenSearch 3.x -baseurl=https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum -enabled=0 -repo_gpgcheck=1 -gpgcheck=1 -gpgkey=https://artifacts.opensearch.org/publickeys/opensearch-release.pgp -autorefresh=1 -type=rpm-md - -[opensearch-dashboards-3.x] -name=OpenSearch Dashboards 3.x -baseurl=https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum -enabled=0 -repo_gpgcheck=1 -gpgcheck=1 -gpgkey=https://artifacts.opensearch.org/publickeys/opensearch-release.pgp -autorefresh=1 -type=rpm-md diff --git a/docker/base/proxysql.repo b/docker/base/proxysql.repo deleted file mode 100644 index 1bd2c55c3e..0000000000 --- a/docker/base/proxysql.repo +++ /dev/null @@ -1,7 +0,0 @@ -[proxysql] -name = ProxySQL -# NOTE(mnasiadka): No EL10 packages yet -baseurl = https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9 -gpgkey = https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key -gpgcheck = 1 -enabled = 0 diff --git a/docker/base/rabbitmq_rabbitmq-erlang.repo b/docker/base/rabbitmq_rabbitmq-erlang.repo deleted file mode 100644 index 82b0441e06..0000000000 --- a/docker/base/rabbitmq_rabbitmq-erlang.repo +++ /dev/null @@ -1,9 +0,0 @@ -[rabbitmq_rabbitmq-erlang] -name=rabbitmq_rabbitmq-erlang -# Use a set of mirrors maintained by the RabbitMQ core team. -# The mirrors have significantly higher bandwidth quotas. -baseurl=https://yum1.rabbitmq.com/erlang/el/9/$basearch - https://yum2.rabbitmq.com/erlang/el/9/$basearch -gpgcheck=1 -enabled=0 -gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key diff --git a/docker/base/rabbitmq_rabbitmq-server.repo b/docker/base/rabbitmq_rabbitmq-server.repo deleted file mode 100644 index 0680c11e1d..0000000000 --- a/docker/base/rabbitmq_rabbitmq-server.repo +++ /dev/null @@ -1,9 +0,0 @@ -[rabbitmq_rabbitmq-server] -name=rabbitmq_rabbitmq-server -baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/noarch - https://yum1.rabbitmq.com/rabbitmq/el/9/noarch -gpgcheck=1 -enabled=0 -# Cloudsmith's repository key and RabbitMQ package signing key -gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key - https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc diff --git a/docker/base/td.repo b/docker/base/td.repo deleted file mode 100644 index 8212817fab..0000000000 --- a/docker/base/td.repo +++ /dev/null @@ -1,7 +0,0 @@ -[fluent-package-lts] -name=Fluentd Project -# NOTE(mnasiadka): Use EL9 packages for now - 10 are not available yet -baseurl=https://packages.treasuredata.com/lts/5/redhat/9/$basearch -gpgcheck=1 -gpgkey=https://packages.treasuredata.com/GPG-KEY-td-agent -enabled=0 diff --git a/kolla/template/methods.py b/kolla/template/methods.py index e9edbfeb01..388d4858f4 100644 --- a/kolla/template/methods.py +++ b/kolla/template/methods.py @@ -10,6 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +from kolla.image.utils import LOG import os import typing as t @@ -17,6 +18,29 @@ import yaml from jinja2 import pass_context +APT_ARCH = " && echo 'Architectures: {arch}' \ +>>/etc/apt/sources.list.d/{repo}.sources" +APT_REPO = "echo 'Uris: {url}' >/etc/apt/sources.list.d/{repo}.sources && \ +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}' \ +>>/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" +DNF_ENABLE = "dnf config-manager --enable {name} || true" +DNF_GPGCHECK = " && echo 'gpgcheck={gpgcheck}' >>/etc/yum.repos.d/{repo}.repo" +DNF_GPGKEY = " && echo 'gpgkey={gpgkey}' >>/etc/yum.repos.d/{repo}.repo" +DNF_GPGKEY_ADD = " && echo ' {gpgkey}' >>/etc/yum.repos.d/{repo}.repo" +DNF_METALINK = " && echo 'metalink={metalink}' >>/etc/yum.repos.d/{repo}.repo" +DNF_MIRRORLIST = " && \ +echo 'mirrorlist={mirrorlist}' >>/etc/yum.repos.d/{repo}.repo" +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" +DNF_REPO_GPGCHECK = " && echo 'repo_gpgcheck={repo_gpgcheck}' \ +>>/etc/yum.repos.d/{repo}.repo" + def debian_package_install(packages, clean_package_cache=True): """Jinja utility method for building debian-based package install command. @@ -81,13 +105,6 @@ def handle_repos(context, reponames, mode): Distro/arch are not required to have all entries - we ignore missing ones. """ - if mode == 'enable': - rpm_switch = '--enable' - elif mode == 'disable': - rpm_switch = '--disable' - else: - raise KeyError - if not isinstance(reponames, list): raise TypeError("First argument should be a list of repositories") @@ -104,6 +121,7 @@ def handle_repos(context, reponames, mode): base_package_type = context.get('base_package_type') base_distro = context.get('base_distro') base_arch = context.get('base_arch') + image_name = context.get('image_name') commands = '' @@ -113,40 +131,82 @@ def handle_repos(context, reponames, mode): # NOTE(hrw): Fallback to distro list repo_list = repo_data[base_distro] - for repo in reponames: + for index, repo in enumerate(reponames): try: + _repo = repo_list[repo] if base_package_type == 'rpm': - commands += ' %s %s' % (rpm_switch, repo_list[repo]) - elif base_package_type == 'deb': if mode == 'enable': - commands += f"""echo 'Uris: {repo_list[repo]['url']}' \ ->/etc/apt/sources.list.d/{repo}.sources \ -&& echo 'Components: {repo_list[repo]['component']}' \ ->>/etc/apt/sources.list.d/{repo}.sources \ -&& echo 'Types: deb' >>/etc/apt/sources.list.d/{repo}.sources \ -&& echo 'Suites: {repo_list[repo]['suite']}' \ ->>/etc/apt/sources.list.d/{repo}.sources \ -&& echo 'Signed-By: /etc/kolla/apt-keys/{repo_list[repo]['gpg_key']}' \ ->>/etc/apt/sources.list.d/{repo}.sources \ -&& """ - if repo_list[repo]['arch']: - commands += f"""echo 'Architectures: \ -{repo_list[repo]['arch']}' \ ->>/etc/apt/sources.list.d/{repo}.sources \ -&& """ - except KeyError: - # NOTE(hrw): we ignore missing repositories for a given - # distro/arch - pass + if not _repo.get('distro'): + commands += DNF_REPO.format( + name=_repo['name'], + repo=repo, + ) + if _repo.get('gpgcheck'): + commands += DNF_GPGCHECK.format( + gpgcheck=_repo['gpgcheck'], + repo=repo) - if base_package_type == 'rpm' and commands: - # NOTE(hrw): if commands is empty then no repos are enabled - # otherwise we need to add command to handle repositories - # NOTE(hrw) dnf errors out if we enable unknown repo - commands = 'dnf config-manager %s || true' % commands - elif base_package_type == 'deb': - # NOTE(hrw): Debian commands end with '&&' - commands = commands[0:-4] + if _repo.get('repo_gpgcheck'): + commands += DNF_REPO_GPGCHECK.format( + repo_gpgcheck=_repo['repo_gpgcheck'], + repo=repo) + + # NOTE(mnasiadka): Support multiple gpgkeys + gpgkeys = _repo['gpgkey'].splitlines() + for _, gpgkey in enumerate(gpgkeys): + if _ == 0: + commands += DNF_GPGKEY.format(gpgkey=gpgkey, + repo=repo) + else: + commands += DNF_GPGKEY_ADD.format( + gpgkey=gpgkey, + 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 += " && " + + elif mode == 'disable' and _repo.get('distro'): + commands += DNF_DISABLE.format(name=_repo['name']) + + elif base_package_type == "deb": + if mode == "enable": + commands += APT_REPO.format( + component=_repo['component'], + gpg_key=_repo['gpg_key'], + suite=_repo['suite'], + url=_repo['url'], + repo=repo, + ) + + if 'arch' in _repo: + commands += APT_ARCH.format( + arch=_repo['arch'], repo=repo + ) + + if index != len(reponames) - 1: + commands += ' && ' + except KeyError as e: + LOG.exception("Error enabling repository %s in image %s", e, + image_name) + raise if commands: commands = "RUN %s" % commands diff --git a/kolla/template/repos.yaml b/kolla/template/repos.yaml index f45ecb3aa9..b7d82c7046 100644 --- a/kolla/template/repos.yaml +++ b/kolla/template/repos.yaml @@ -1,43 +1,157 @@ --- centos: - ceph: "centos-ceph-squid" - crb: "crb" - docker-ce: "docker-ce" - epel: "epel" - erlang: "rabbitmq_rabbitmq-erlang" - extras: "extras" - fluentd: "fluent-package-lts" - grafana: "grafana" - hacluster: "highavailability" - influxdb: "influxdb" - kolla_el10: "kolla_el10" - mariadb: "mariadb" - opensearch: "opensearch-3.x" - opensearch-dashboards: "opensearch-dashboards-3.x" - openvswitch: "centos-nfv-openvswitch" - opstools: "centos-opstools" - proxysql: "proxysql" - rabbitmq: "rabbitmq_rabbitmq-server" + 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-9-stream&arch=$basearch" + name: "centos-ceph-squid" + crb: + distro: True + name: "crb" + docker-ce: + gpgkey: "https://download.docker.com/linux/centos/gpg" + baseurl: "https://download.docker.com/linux/centos/$releasever/$basearch/stable" + name: "docker-ce" + epel: + gpgkey: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-$releasever" + metalink: "https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir" + name: "epel" + erlang: + baseurl: | + https://yum1.rabbitmq.com/erlang/el/9/$basearch + https://yum2.rabbitmq.com/erlang/el/9/$basearch + gpgkey: "https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key" + name: "rabbitmq_rabbitmq-erlang" + extras: + distro: True + name: "extras" + fluentd: + baseurl: "https://packages.treasuredata.com/lts/5/redhat/9/$basearch" + gpgkey: "https://packages.treasuredata.com/GPG-KEY-td-agent" + name: "fluent-package-lts" + grafana: + baseurl: "https://rpm.grafana.com" + gpgkey: "https://rpm.grafana.com/gpg.key" + name: "grafana" + hacluster: + name: "highavailability" + distro: true + influxdb: + baseurl: "https://repos.influxdata.com/rhel/9/$basearch/stable" + gpgkey: "https://repos.influxdata.com/influxdata-archive_compat.key" + name: "influxdb" + kolla_el10: + baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/" + gpgkey: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/pubkey.gpg" + name: "kolla_el10" + mariadb: + baseurl: "https://dlm.mariadb.com/repo/mariadb-server/10.11/yum/rhel/$releasever/$basearch" + gpgkey: "https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB" + name: "mariadb" + opensearch: + baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum" + gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp" + repo_gpgcheck: 1 + name: "opensearch32.x" + opensearch-dashboards: + baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum" + gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp" + repo_gpgcheck: 1 + name: "opensearch-dashboards-3.x" + openvswitch: + gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-NFV" + metalink: "https://mirrors.centos.org/metalink?repo=centos-nfv-sig-openvswitch-2-$stream&arch=$basearch&protocol=https,http" + name: "centos-nfv-openvswitch" + opstools: + distro: True + name: "opstools" + proxysql: + baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9" + gpgkey: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key" + name: "proxysql" + rabbitmq: + baseurl: | + https://yum1.rabbitmq.com/rabbitmq/el/9/noarch + https://yum2.rabbitmq.com/rabbitmq/el/9/noarch + gpgkey: | + https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key + https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc + name: "rabbitmq_rabbitmq-server" centos-aarch64: - ceph: "centos-ceph-squid" - crb: "crb" - docker-ce: "docker-ce" - epel: "epel" - erlang: "copr-rabbitmq-erlang" - extras: "extras" - fluentd: "fluent-package-lts" - grafana: "grafana" - hacluster: "highavailability" - influxdb: "influxdb" - kolla_el10: "kolla_el10" - mariadb: "mariadb" - opensearch: "opensearch-3.x" - opensearch-dashboards: "opensearch-dashboards-3.x" - openvswitch: "centos-nfv-openvswitch" - opstools: "centos-opstools" - proxysql: "proxysql" - rabbitmq: "rabbitmq_rabbitmq-server" + 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-9-stream&arch=$basearch" + name: "centos-ceph-squid" + crb: + distro: True + name: "crb" + docker-ce: + gpgkey: "https://download.docker.com/linux/centos/gpg" + baseurl: "https://download.docker.com/linux/centos/$releasever/$basearch/stable" + name: "docker-ce" + epel: + gpgkey: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-$releasever" + metalink: "https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir" + name: "epel" + 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" + extras: + distro: True + name: "extras" + fluentd: + baseurl: "https://packages.treasuredata.com/lts/5/redhat/9/$basearch" + gpgkey: "https://packages.treasuredata.com/GPG-KEY-td-agent" + name: "fluent-package-lts" + grafana: + baseurl: "https://rpm.grafana.com" + gpgkey: "https://rpm.grafana.com/gpg.key" + name: "grafana" + hacluster: + name: "highavailability" + distro: true + influxdb: + baseurl: "https://repos.influxdata.com/rhel/9/$basearch/stable" + gpgkey: "https://repos.influxdata.com/influxdata-archive_compat.key" + name: "influxdb" + kolla_el10: + baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/" + gpgkey: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/pubkey.gpg" + name: "kolla_el10" + mariadb: + baseurl: "https://dlm.mariadb.com/repo/mariadb-server/10.11/yum/rhel/$releasever/$basearch" + gpgkey: "https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB" + name: "mariadb" + opensearch: + baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum" + gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp" + repo_gpgcheck: 1 + name: "opensearch32.x" + opensearch-dashboards: + baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum" + gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp" + repo_gpgcheck: 1 + name: "opensearch-dashboards-3.x" + openvswitch: + gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-NFV" + metalink: "https://mirrors.centos.org/metalink?repo=centos-nfv-sig-openvswitch-2-$stream&arch=$basearch&protocol=https,http" + name: "centos-nfv-openvswitch" + opstools: + distro: True + name: "opstools" + proxysql: + baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9" + gpgkey: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key" + name: "proxysql" + rabbitmq: + baseurl: | + https://yum1.rabbitmq.com/rabbitmq/el/9/noarch + https://yum2.rabbitmq.com/rabbitmq/el/9/noarch + gpgkey: | + https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key + https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc + name: "rabbitmq_rabbitmq-server" # NOTE(mnasiadka): For RabbitMQ Debuntu suite names is following: # https://www.rabbitmq.com/install-debian.html#apt-cloudsmith @@ -150,44 +264,158 @@ debian-aarch64: gpg_key: "rabbitmq.gpg" rocky: - ceph: "centos-ceph-squid" - crb: "crb" - docker-ce: "docker-ce" - epel: "epel" - erlang: "rabbitmq_rabbitmq-erlang" - extras: "extras" - fluentd: "fluent-package-lts" - grafana: "grafana" - hacluster: "highavailability" - influxdb: "influxdb" - kolla_el10: "kolla_el10" - mariadb: "mariadb" - opensearch: "opensearch-3.x" - opensearch-dashboards: "opensearch-dashboards-3.x" - openvswitch: "centos-nfv-openvswitch" - opstools: "centos-opstools" - proxysql: "proxysql" - rabbitmq: "rabbitmq_rabbitmq-server" + 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-9-stream&arch=$basearch" + name: "centos-ceph-squid" + crb: + distro: True + name: "crb" + docker-ce: + gpgkey: "https://download.docker.com/linux/centos/gpg" + baseurl: "https://download.docker.com/linux/centos/$releasever/$basearch/stable" + name: "docker-ce" + epel: + gpgkey: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-$releasever" + metalink: "https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir" + name: "epel" + erlang: + baseurl: | + https://yum1.rabbitmq.com/erlang/el/9/$basearch + https://yum2.rabbitmq.com/erlang/el/9/$basearch + gpgkey: "https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key" + name: "rabbitmq_rabbitmq-erlang" + extras: + distro: True + name: "extras" + fluentd: + baseurl: "https://packages.treasuredata.com/lts/5/redhat/9/$basearch" + gpgkey: "https://packages.treasuredata.com/GPG-KEY-td-agent" + name: "fluent-package-lts" + grafana: + baseurl: "https://rpm.grafana.com" + gpgkey: "https://rpm.grafana.com/gpg.key" + name: "grafana" + hacluster: + name: "highavailability" + distro: true + influxdb: + baseurl: "https://repos.influxdata.com/rhel/9/$basearch/stable" + gpgkey: "https://repos.influxdata.com/influxdata-archive_compat.key" + name: "influxdb" + kolla_el10: + baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/" + gpgkey: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/pubkey.gpg" + name: "kolla_el10" + mariadb: + baseurl: "https://dlm.mariadb.com/repo/mariadb-server/10.11/yum/rhel/$releasever/$basearch" + gpgkey: "https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB" + name: "mariadb" + opensearch: + baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum" + gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp" + repo_gpgcheck: 1 + name: "opensearch32.x" + opensearch-dashboards: + baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum" + gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp" + repo_gpgcheck: 1 + name: "opensearch-dashboards-3.x" + openvswitch: + gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-NFV" + metalink: "https://mirrors.centos.org/metalink?repo=centos-nfv-sig-openvswitch-2-$stream&arch=$basearch&protocol=https,http" + name: "centos-nfv-openvswitch" + opstools: + distro: True + name: "opstools" + proxysql: + baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9" + gpgkey: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key" + name: "proxysql" + rabbitmq: + baseurl: | + https://yum1.rabbitmq.com/rabbitmq/el/9/noarch + https://yum2.rabbitmq.com/rabbitmq/el/9/noarch + gpgkey: | + https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key + https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc + name: "rabbitmq_rabbitmq-server" rocky-aarch64: - ceph: "centos-ceph-squid" - crb: "crb" - docker-ce: "docker-ce" - epel: "epel" - erlang: "copr-rabbitmq-erlang" - extras: "extras" - fluentd: "fluent-package-lts" - grafana: "grafana" - influxdb: "influxdb" - kolla_el10: "kolla_el10" - hacluster: "highavailability" - mariadb: "mariadb" - opensearch: "opensearch-3.x" - opensearch-dashboards: "opensearch-dashboards-3.x" - openvswitch: "centos-nfv-openvswitch" - opstools: "centos-opstools" - proxysql: "proxysql" - rabbitmq: "rabbitmq_rabbitmq-server" + 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-9-stream&arch=$basearch" + name: "centos-ceph-squid" + crb: + distro: True + name: "crb" + docker-ce: + gpgkey: "https://download.docker.com/linux/centos/gpg" + baseurl: "https://download.docker.com/linux/centos/$releasever/$basearch/stable" + name: "docker-ce" + epel: + gpgkey: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-$releasever" + metalink: "https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir" + name: "epel" + 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" + extras: + distro: True + name: "extras" + fluentd: + baseurl: "https://packages.treasuredata.com/lts/5/redhat/9/$basearch" + gpgkey: "https://packages.treasuredata.com/GPG-KEY-td-agent" + name: "fluent-package-lts" + grafana: + baseurl: "https://rpm.grafana.com" + gpgkey: "https://rpm.grafana.com/gpg.key" + name: "grafana" + hacluster: + name: "highavailability" + distro: true + influxdb: + baseurl: "https://repos.influxdata.com/rhel/9/$basearch/stable" + gpgkey: "https://repos.influxdata.com/influxdata-archive_compat.key" + name: "influxdb" + kolla_el10: + baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/" + gpgkey: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/pubkey.gpg" + name: "kolla_el10" + mariadb: + baseurl: "https://dlm.mariadb.com/repo/mariadb-server/10.11/yum/rhel/$releasever/$basearch" + gpgkey: "https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB" + name: "mariadb" + opensearch: + baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum" + gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp" + repo_gpgcheck: 1 + name: "opensearch32.x" + opensearch-dashboards: + baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum" + gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp" + repo_gpgcheck: 1 + name: "opensearch-dashboards-3.x" + openvswitch: + gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-NFV" + metalink: "https://mirrors.centos.org/metalink?repo=centos-nfv-sig-openvswitch-2-$stream&arch=$basearch&protocol=https,http" + name: "centos-nfv-openvswitch" + opstools: + distro: True + name: "opstools" + proxysql: + baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9" + gpgkey: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key" + name: "proxysql" + rabbitmq: + baseurl: | + https://yum1.rabbitmq.com/rabbitmq/el/9/noarch + https://yum2.rabbitmq.com/rabbitmq/el/9/noarch + gpgkey: | + https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key + https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc + name: "rabbitmq_rabbitmq-server" ubuntu: docker-ce: diff --git a/kolla/tests/test_methods.py b/kolla/tests/test_methods.py index 395dadd4e5..6559c5d4de 100644 --- a/kolla/tests/test_methods.py +++ b/kolla/tests/test_methods.py @@ -22,50 +22,155 @@ class MethodsTest(base.TestCase): expectCmd = 'apt-get -y install --no-install-recommends package2.deb' self.assertEqual(expectCmd, result.split("&&")[1].strip()) - def test_enable_repos_centos(self): + def test_enable_repos_centos_baseurl(self): template_vars = { 'base_arch': 'x86_64', 'base_distro': 'centos', 'base_package_type': 'rpm', } - result = methods.handle_repos(template_vars, ['grafana'], 'enable') - expectCmd = 'RUN dnf config-manager --enable grafana || true' + result = methods.handle_repos(template_vars, ["grafana"], "enable") + expectCmd = "RUN echo '[grafana]' " + expectCmd += ">/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'name=grafana' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'enabled=1' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'gpgkey=https://rpm.grafana.com/gpg.key' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'baseurl=https://rpm.grafana.com' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo" self.assertEqual(expectCmd, result) - def test_enable_repos_centos_missing_repo(self): + def test_enable_repos_centos_metalink(self): template_vars = { 'base_arch': 'x86_64', 'base_distro': 'centos', 'base_package_type': 'rpm', } - result = methods.handle_repos(template_vars, ['missing_repo'], - 'enable') - expectCmd = '' + 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-9-stream&arch=$basearch' " # noqa: E501 + expectCmd += ">>/etc/yum.repos.d/ceph.repo" + self.assertEqual(expectCmd, result) + + def test_enable_repos_centos_arch(self): + template_vars = { + "base_arch": "aarch64", + "base_distro": "centos", + "base_package_type": "rpm", + } + + result = methods.handle_repos(template_vars, ["grafana"], "enable") + expectCmd = "RUN echo '[grafana]' " + expectCmd += ">/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'name=grafana' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'enabled=1' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'gpgkey=https://rpm.grafana.com/gpg.key' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'baseurl=https://rpm.grafana.com' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo" self.assertEqual(expectCmd, result) def test_enable_repos_centos_multiple(self): template_vars = { - 'base_arch': 'x86_64', - 'base_distro': 'centos', - 'base_package_type': 'rpm', + "base_arch": "x86_64", + "base_distro": "centos", + "base_package_type": "rpm", } - result = methods.handle_repos(template_vars, ['grafana', 'ceph'], - 'enable') - expectCmd = 'RUN dnf config-manager --enable grafana ' - expectCmd += '--enable centos-ceph-squid || true' + result = methods.handle_repos(template_vars, + ["grafana", "rabbitmq"], "enable") + expectCmd = "RUN echo '[grafana]' " + expectCmd += ">/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'name=grafana' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'enabled=1' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'gpgkey=https://rpm.grafana.com/gpg.key' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'baseurl=https://rpm.grafana.com' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + + expectCmd += "echo '[rabbitmq_rabbitmq-server]' " + expectCmd += ">/etc/yum.repos.d/rabbitmq.repo && " + expectCmd += "echo 'name=rabbitmq_rabbitmq-server' " + expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo && " + expectCmd += "echo 'enabled=1' " + expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo && " + expectCmd += "echo 'gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key' " # noqa + expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo && " + expectCmd += "echo ' https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc' " # noqa + expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo && " + expectCmd += "echo 'baseurl=https://yum1.rabbitmq.com/rabbitmq/el/9/noarch' " # noqa + expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo && " + expectCmd += "echo 'baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/noarch' " # noqa + expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo" + self.assertEqual(expectCmd, result) + + def test_enable_repos_centos_distro_enable(self): + template_vars = { + "base_arch": "x86_64", + "base_distro": "centos", + "base_package_type": "rpm", + } + + result = methods.handle_repos(template_vars, + ['crb'], 'enable') + expectCmd = "RUN dnf config-manager --enable crb || true" + self.assertEqual(expectCmd, result) + + def test_enable_repos_centos_distro_disable(self): + template_vars = { + "base_arch": "x86_64", + "base_distro": "centos", + "base_package_type": "rpm", + } + + result = methods.handle_repos(template_vars, ['crb'], 'disable') + expectCmd = "RUN dnf config-manager --disable crb || true" + self.assertEqual(expectCmd, result) + + def test_enable_repos_centos_distro_enable_multiple(self): + template_vars = { + "base_arch": "x86_64", + "base_distro": "centos", + "base_package_type": "rpm", + } + + result = methods.handle_repos(template_vars, + ['crb', 'grafana'], 'enable') + expectCmd = "RUN dnf config-manager --enable crb || true && " + expectCmd += "echo '[grafana]' " + expectCmd += ">/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'name=grafana' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'enabled=1' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'gpgkey=https://rpm.grafana.com/gpg.key' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo && " + expectCmd += "echo 'baseurl=https://rpm.grafana.com' " + expectCmd += ">>/etc/yum.repos.d/grafana.repo" self.assertEqual(expectCmd, result) def test_enable_repos_debian(self): template_vars = { - 'base_arch': 'x86_64', - 'base_distro': 'debian', - 'base_package_type': 'deb' + "base_arch": "x86_64", + "base_distro": "debian", + "base_package_type": "deb", } - result = methods.handle_repos(template_vars, ['grafana'], 'enable') + result = methods.handle_repos(template_vars, ["grafana"], "enable") expectCmd = "RUN echo 'Uris: https://apt.grafana.com' " expectCmd += ">/etc/apt/sources.list.d/grafana.sources && " expectCmd += "echo 'Components: main' " @@ -82,10 +187,10 @@ class MethodsTest(base.TestCase): template_vars = { 'base_arch': 'aarch64', 'base_distro': 'debian', - 'base_package_type': 'deb' + 'base_package_type': 'deb', } - result = methods.handle_repos(template_vars, ['rabbitmq'], 'enable') + result = methods.handle_repos(template_vars, ["rabbitmq"], "enable") expectCmd = "RUN echo 'Uris: https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian' " # noqa: E501 expectCmd += ">/etc/apt/sources.list.d/rabbitmq.sources && " expectCmd += "echo 'Components: main' " @@ -104,23 +209,21 @@ class MethodsTest(base.TestCase): template_vars = { 'base_arch': 'x86_64', 'base_distro': 'debian', - 'base_package_type': 'deb' + 'base_package_type': 'deb', } - result = methods.handle_repos(template_vars, ['missing_repo'], - 'enable') - expectCmd = '' - self.assertEqual(expectCmd, result) + self.assertRaises(KeyError, methods.handle_repos, template_vars, + ['missing_repo'], 'enable') def test_enable_repos_debian_multiple(self): template_vars = { 'base_arch': 'x86_64', 'base_distro': 'debian', - 'base_package_type': 'deb' + 'base_package_type': 'deb', } - result = methods.handle_repos(template_vars, ['grafana', 'rabbitmq'], - 'enable') + result = methods.handle_repos(template_vars, + ['grafana', 'rabbitmq'], 'enable') expectCmd = "RUN echo 'Uris: https://apt.grafana.com' " expectCmd += ">/etc/apt/sources.list.d/grafana.sources && " expectCmd += "echo 'Components: main' " @@ -146,47 +249,23 @@ class MethodsTest(base.TestCase): self.assertEqual(expectCmd, result) - def test_disable_repos_centos(self): - template_vars = { - 'base_arch': 'x86_64', - 'base_distro': 'centos', - 'base_package_type': 'rpm', - } - - result = methods.handle_repos(template_vars, ['grafana'], 'disable') - expectCmd = 'RUN dnf config-manager --disable grafana || true' - self.assertEqual(expectCmd, result) - - def test_disable_repos_centos_multiple(self): - template_vars = { - 'base_arch': 'x86_64', - 'base_distro': 'centos', - 'base_package_type': 'rpm', - } - - result = methods.handle_repos(template_vars, ['grafana', 'ceph'], - 'disable') - expectCmd = 'RUN dnf config-manager --disable grafana ' - expectCmd += '--disable centos-ceph-squid || true' - self.assertEqual(expectCmd, result) - # NOTE(hrw): there is no disabling of repos for Debian/Ubuntu def test_disable_repos_debian(self): template_vars = { 'base_arch': 'x86_64', 'base_distro': 'debian', - 'base_package_type': 'deb' + 'base_package_type': 'deb', } - result = methods.handle_repos(template_vars, ['grafana'], 'disable') - expectCmd = '' + result = methods.handle_repos(template_vars, ["grafana"], "disable") + expectCmd = "" self.assertEqual(expectCmd, result) def test_handle_repos_string(self): template_vars = { 'base_arch': 'x86_64', 'base_distro': 'debian', - 'base_package_type': 'deb' + 'base_package_type': 'deb', } self.assertRaisesRegex(TypeError, diff --git a/releasenotes/notes/repos-yaml-rpm-support-01ff7f5fc3b9ecf2.yaml b/releasenotes/notes/repos-yaml-rpm-support-01ff7f5fc3b9ecf2.yaml new file mode 100644 index 0000000000..b3815928fc --- /dev/null +++ b/releasenotes/notes/repos-yaml-rpm-support-01ff7f5fc3b9ecf2.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Adds support for configuring RPM distributions repositories + using ``repos.yaml`` functionality. diff --git a/tests/templates/template_overrides.j2 b/tests/templates/template_overrides.j2 index 003e8005be..d9d89b3e0e 100644 --- a/tests/templates/template_overrides.j2 +++ b/tests/templates/template_overrides.j2 @@ -65,18 +65,7 @@ RUN if [ -f /usr/etc/npmrc ]; then \ fi \ && rm -f /etc/npmrc -{% if base_distro in ['centos', 'rocky'] %} -{# NOTE(hrw): Some images have two footer blocks. - For example neutron-infobox-ipam-agent being - child of neutron-server. -#} -RUN if [ -d /etc/yum.repos.d/not-for-ci/ ]; then \ - cd /etc/yum.repos.d/ && \ - rm ci-{{ base_distro }}.repo && \ - mv not-for-ci/*.repo . && \ - rm -rf not-for-ci; \ - fi; -{% elif base_distro == "debian" %} +{% if base_distro == "debian" %} RUN sed -i -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}|http://deb.debian.org|" \ -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}|http://security.debian.org|" \ /etc/apt/sources.list