Merge "Translate expected package names to installed ones"
This commit is contained in:
commit
32790f5456
|
@ -40,17 +40,30 @@ 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
|
||||
|
||||
@classmethod
|
||||
def _get_subclasses(cls):
|
||||
for subclass in cls.__subclasses__():
|
||||
for sc in subclass._get_subclasses():
|
||||
yield sc
|
||||
yield subclass
|
||||
|
||||
@classmethod
|
||||
def get_os_util(cls):
|
||||
os_name = distro.id()
|
||||
for subclass in BaseOS.__subclasses__():
|
||||
for subclass in cls._get_subclasses():
|
||||
if subclass.is_os_name(os_name):
|
||||
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 get_network_interface_file(self, interface):
|
||||
if CONF.amphora_agent.agent_server_network_file:
|
||||
return CONF.amphora_agent.agent_server_network_file
|
||||
|
@ -223,7 +236,8 @@ class Ubuntu(BaseOS):
|
|||
return os_name in ['ubuntu']
|
||||
|
||||
def cmd_get_version_of_installed_package(self, package_name):
|
||||
return "dpkg-query -W -f=${{Version}} {name}".format(name=package_name)
|
||||
name = self._map_package_name(package_name)
|
||||
return "dpkg-query -W -f=${{Version}} {name}".format(name=name)
|
||||
|
||||
def get_network_interface_file(self, interface):
|
||||
if CONF.amphora_agent.agent_server_network_file:
|
||||
|
@ -304,11 +318,11 @@ class RH(BaseOS):
|
|||
|
||||
@classmethod
|
||||
def is_os_name(cls, os_name):
|
||||
return os_name in ['fedora', 'rhel', 'centos']
|
||||
return os_name in ['fedora', 'rhel']
|
||||
|
||||
def cmd_get_version_of_installed_package(self, package_name):
|
||||
return "rpm -q --queryformat %{{VERSION}} {name}".format(
|
||||
name=package_name)
|
||||
name = self._map_package_name(package_name)
|
||||
return "rpm -q --queryformat %{{VERSION}} {name}".format(name=name)
|
||||
|
||||
def get_network_interface_file(self, interface):
|
||||
if CONF.amphora_agent.agent_server_network_file:
|
||||
|
@ -458,3 +472,12 @@ class RH(BaseOS):
|
|||
|
||||
def has_ifup_all(self):
|
||||
return False
|
||||
|
||||
|
||||
class CentOS(RH):
|
||||
|
||||
PACKAGE_NAME_MAP = {'haproxy': 'haproxy18'}
|
||||
|
||||
@classmethod
|
||||
def is_os_name(cls, os_name):
|
||||
return os_name in ['centos']
|
||||
|
|
|
@ -37,9 +37,13 @@ class TestOSUtils(base.TestCase):
|
|||
self.ubuntu_os_util = osutils.BaseOS.get_os_util()
|
||||
|
||||
with mock.patch('distro.id',
|
||||
return_value='centos'):
|
||||
return_value='rhel'):
|
||||
self.rh_os_util = osutils.BaseOS.get_os_util()
|
||||
|
||||
with mock.patch('distro.id',
|
||||
return_value='centos'):
|
||||
self.centos_os_util = osutils.BaseOS.get_os_util()
|
||||
|
||||
def test_get_os_util(self):
|
||||
with mock.patch('distro.id',
|
||||
return_value='ubuntu'):
|
||||
|
@ -56,7 +60,7 @@ class TestOSUtils(base.TestCase):
|
|||
with mock.patch('distro.id',
|
||||
return_value='centos'):
|
||||
returned_cls = osutils.BaseOS.get_os_util()
|
||||
self.assertIsInstance(returned_cls, osutils.RH)
|
||||
self.assertIsInstance(returned_cls, osutils.CentOS)
|
||||
with mock.patch('distro.id',
|
||||
return_value='FakeOS'):
|
||||
self.assertRaises(
|
||||
|
@ -169,6 +173,15 @@ class TestOSUtils(base.TestCase):
|
|||
cmd_get_version_of_installed_package(package_name))
|
||||
self.assertEqual(rh_cmd, returned_rh_cmd)
|
||||
|
||||
def test_cmd_get_version_of_installed_package_mapped(self):
|
||||
package_name = 'haproxy'
|
||||
centos_cmd = "rpm -q --queryformat %{VERSION} haproxy18"
|
||||
|
||||
returned_centos_cmd = (
|
||||
self.centos_os_util.cmd_get_version_of_installed_package(
|
||||
package_name))
|
||||
self.assertEqual(centos_cmd, returned_centos_cmd)
|
||||
|
||||
def test_has_ifup_all(self):
|
||||
self.assertTrue(self.base_os_util.has_ifup_all())
|
||||
self.assertTrue(self.ubuntu_os_util.has_ifup_all())
|
||||
|
|
Loading…
Reference in New Issue