From 8960e070f2ffdc514b949b3e4c2d59a6f93dfc15 Mon Sep 17 00:00:00 2001 From: Corey Bryant Date: Thu, 22 Apr 2021 15:56:02 -0400 Subject: [PATCH] Use openstack-release package to determine codename The use of package versions to look up OpenStack codenames is deprecated for in favor of using the openstack-release package. The openstack-release package is available for Wallaby onward. Change-Id: I9038c9785a4f36b854a1fb7e8d5baaf91a99c70e --- charms_openstack/charm/core.py | 13 +++++++++++++ unit_tests/charms_openstack/charm/test_core.py | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/charms_openstack/charm/core.py b/charms_openstack/charm/core.py index 1ea316c..14208c7 100644 --- a/charms_openstack/charm/core.py +++ b/charms_openstack/charm/core.py @@ -616,6 +616,14 @@ class BaseOpenStackCharm(object, metaclass=BaseOpenStackCharmMeta): apt_cache_sufficient=False): """Derive OpenStack release codename from a package. + + Initially, see if the openstack-release pkg is available (by trying + to install it) and use it instead. + + If it isn't then it falls back to the existing method of checking the + version of the package passed and then resolving the version from that + using lookup tables. + :param package: Package name to lookup (ie. in apt cache) :type package: str :param codenames: Map of package to (version, os_release) tuples. @@ -644,6 +652,11 @@ class BaseOpenStackCharm(object, metaclass=BaseOpenStackCharmMeta): :rtype: Optional[str] :raises: AttributeError, ValueError """ + + codename = os_utils.get_installed_os_version() + if codename: + return codename + try: vers = BaseOpenStackCharm.get_package_version( package, diff --git a/unit_tests/charms_openstack/charm/test_core.py b/unit_tests/charms_openstack/charm/test_core.py index 2b7d18f..66ad6dd 100644 --- a/unit_tests/charms_openstack/charm/test_core.py +++ b/unit_tests/charms_openstack/charm/test_core.py @@ -899,6 +899,8 @@ class TestMyOpenStackCharm(BaseOpenStackCharmTest): 'upstream_version') self.patch_object(chm_core.os_utils, 'snap_install_requested', return_value=False) + self.patch_object(chm_core.os_utils, 'get_installed_os_version') + self.get_installed_os_version.return_value = None self.upstream_version.return_value = '3.0.0~b1' self.assertEqual( chm_core.BaseOpenStackCharm.get_os_codename_package( @@ -913,7 +915,14 @@ class TestMyOpenStackCharm(BaseOpenStackCharmTest): 'newton') self.upstream_version.assert_called_once_with( pkg_mock.version) + # Test Wallaby + self.get_installed_os_version.return_value = 'wallaby' + self.assertEqual( + chm_core.BaseOpenStackCharm.get_os_codename_package( + 'testpkg', codenames), + 'wallaby') # Test non-fatal fail + self.get_installed_os_version.return_value = None self.assertEqual( chm_core.BaseOpenStackCharm.get_os_codename_package( 'unknownpkg', codenames, fatal=False),