From 3740b67854bd9bbff791b215273e2e5fd7a75675 Mon Sep 17 00:00:00 2001 From: Carlos Goncalves Date: Tue, 3 Dec 2019 17:12:22 +0100 Subject: [PATCH] Add support for CentOS 8 amphora images Change-Id: Ic3b1dab418cfd95fe261ca19528ec969ee57610e --- elements/amphora-agent/pkg-map | 9 +++++++++ .../post-install.d/10-enable-network-scripts | 2 +- .../amphorae/backends/agent/api_server/osutils.py | 13 +++++++------ .../backends/agent/api_server/test_osutils.py | 15 ++++++++++++--- ...add-support-for-centos-8-e0730de5d20a48be.yaml | 4 ++++ zuul.d/jobs.yaml | 10 ++++++++++ zuul.d/projects.yaml | 2 ++ 7 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 releasenotes/notes/add-support-for-centos-8-e0730de5d20a48be.yaml diff --git a/elements/amphora-agent/pkg-map b/elements/amphora-agent/pkg-map index 59d7fe64c6..0f525163e6 100644 --- a/elements/amphora-agent/pkg-map +++ b/elements/amphora-agent/pkg-map @@ -8,6 +8,15 @@ "screen": "", "dkms": "" } + }, + "centos": { + "8": { + "isc-dhcp-client": "dhcp-client", + "python-dev": "platform-python-devel", + "vlan": "", + "screen": "", + "dkms": "" + } } }, "family": { diff --git a/elements/amphora-agent/post-install.d/10-enable-network-scripts b/elements/amphora-agent/post-install.d/10-enable-network-scripts index e93464311a..7aaa190f8d 100755 --- a/elements/amphora-agent/post-install.d/10-enable-network-scripts +++ b/elements/amphora-agent/post-install.d/10-enable-network-scripts @@ -7,6 +7,6 @@ fi set -eu set -o pipefail -if [ "$DISTRO_NAME" == "rhel" ] && [ "$DIB_RELEASE" == "8" ]; then +if [[ "$DISTRO_NAME" =~ (rhel|centos) ]] && [ "$DIB_RELEASE" == "8" ]; then chkconfig network on fi diff --git a/octavia/amphorae/backends/agent/api_server/osutils.py b/octavia/amphorae/backends/agent/api_server/osutils.py index 4f5431c938..7ed7bc2811 100644 --- a/octavia/amphorae/backends/agent/api_server/osutils.py +++ b/octavia/amphorae/backends/agent/api_server/osutils.py @@ -41,10 +41,9 @@ j2_env = jinja2.Environment(autoescape=True, loader=jinja2.FileSystemLoader( class BaseOS(object): - PACKAGE_NAME_MAP = {} - def __init__(self, os_name): self.os_name = os_name + self.package_name_map = {} @classmethod def _get_subclasses(cls): @@ -61,9 +60,8 @@ class BaseOS(object): return subclass(os_name) raise octavia_exceptions.InvalidAmphoraOperatingSystem(os_name=os_name) - @classmethod - def _map_package_name(cls, package_name): - return cls.PACKAGE_NAME_MAP.get(package_name, package_name) + def _map_package_name(self, package_name): + return self.package_name_map.get(package_name, package_name) def get_network_interface_file(self, interface): if CONF.amphora_agent.agent_server_network_file: @@ -558,7 +556,10 @@ class RH(BaseOS): class CentOS(RH): - PACKAGE_NAME_MAP = {'haproxy': 'haproxy18'} + def __init__(self, os_name): + super(CentOS, self).__init__(os_name) + if distro.version() == '7': + self.package_name_map.update({'haproxy': 'haproxy18'}) @classmethod def is_os_name(cls, os_name): diff --git a/octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py b/octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py index 1a8409b33d..640ff80370 100644 --- a/octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py +++ b/octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py @@ -43,10 +43,13 @@ class TestOSUtils(base.TestCase): return_value='rhel'): self.rh_os_util = osutils.BaseOS.get_os_util() - with mock.patch('distro.id', - return_value='centos'): + with mock.patch('distro.id', return_value='centos'): self.centos_os_util = osutils.BaseOS.get_os_util() + with mock.patch('distro.id', return_value='centos'): + with mock.patch('distro.version', return_value='7'): + self.centos7_os_util = osutils.BaseOS.get_os_util() + def test_get_os_util(self): with mock.patch('distro.id', return_value='ubuntu'): @@ -178,8 +181,14 @@ class TestOSUtils(base.TestCase): def test_cmd_get_version_of_installed_package_mapped(self): package_name = 'haproxy' - centos_cmd = "rpm -q --queryformat %{VERSION} haproxy18" + centos7_cmd = "rpm -q --queryformat %{VERSION} haproxy18" + returned_centos7_cmd = ( + self.centos7_os_util.cmd_get_version_of_installed_package( + package_name)) + self.assertEqual(centos7_cmd, returned_centos7_cmd) + + centos_cmd = "rpm -q --queryformat %{VERSION} haproxy" returned_centos_cmd = ( self.centos_os_util.cmd_get_version_of_installed_package( package_name)) diff --git a/releasenotes/notes/add-support-for-centos-8-e0730de5d20a48be.yaml b/releasenotes/notes/add-support-for-centos-8-e0730de5d20a48be.yaml new file mode 100644 index 0000000000..efc3fbf249 --- /dev/null +++ b/releasenotes/notes/add-support-for-centos-8-e0730de5d20a48be.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Added support for CentOS 8 amphora images. diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index 1a192474ed..6cee11866d 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -60,6 +60,16 @@ amphora_image_size: 3 amphora_os_release: 7 +- job: + name: publish-openstack-octavia-amphora-image-centos8 + parent: publish-openstack-octavia-amphora-image + description: | + Publish CentOS 8 based amphora image to tarballs.o.o. + vars: + amphora_os: centos + amphora_image_size: 3 + amphora_os_release: 8 + - job: name: octavia-grenade parent: octavia-legacy-dsvm-base diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml index 353106e76d..6e84fbd821 100644 --- a/zuul.d/projects.yaml +++ b/zuul.d/projects.yaml @@ -75,3 +75,5 @@ branches: ^(?!stable/.*).*$ - publish-openstack-octavia-amphora-image-centos7: branches: ^(?!stable/.*).*$ + - publish-openstack-octavia-amphora-image-centos8: + branches: ^(?!stable/.*).*$