
Does this patch replace the former [Kimchi-devel] [PATCH] tests/test_osinfo.py: fixes for Power architecture ? Some comments below: On 16/03/2015 16:29, Daniel Henrique Barboza wrote:
- osinfo.py now has a function that returns a specific field from a template configuration (old or modern) which considers the current running arch.
- a new test was added to explictly test the case where an unknown distro/version should return the configuration of an old distro/version after the lookup.
Signed-off-by: Daniel Henrique Barboza <dhbarboza82@gmail.com> --- src/kimchi/osinfo.py | 9 +++++++++ tests/test_osinfo.py | 36 ++++++++++++++++++++++++++---------- 2 files changed, 35 insertions(+), 10 deletions(-)
diff --git a/src/kimchi/osinfo.py b/src/kimchi/osinfo.py index 2496e03..3c31346 100644 --- a/src/kimchi/osinfo.py +++ b/src/kimchi/osinfo.py @@ -104,6 +104,15 @@ def _get_arch(): return arch
+def get_template_default(template_type, field): + host_arch = _get_arch() + # Assuming 'power' = 'ppc64le' because lookup() does the same, + # claiming libvirt compatibility. + if host_arch in ('power', 'ppc64le'): + return template_specs['power'][template_type][field] + return template_specs[host_arch][template_type][field] + + def lookup(distro, version): """ Lookup all parameters needed to run a VM of a known or unknown operating diff --git a/tests/test_osinfo.py b/tests/test_osinfo.py index d5e90b4..0185f52 100644 --- a/tests/test_osinfo.py +++ b/tests/test_osinfo.py @@ -20,7 +20,8 @@ import unittest
-from kimchi.osinfo import lookup, modern_version_bases, _get_arch +from kimchi.osinfo import _get_arch, get_template_default, lookup, \ + modern_version_bases
We usually do not break the import line. Instedd of that we create 2 import lines from kimchi.osinfo import ... from kimchi.osinfo import ...
class OSInfoTests(unittest.TestCase): @@ -35,20 +36,35 @@ class OSInfoTests(unittest.TestCase): 'centos': '5.1', 'rhel': '5.1', 'fedora': '15'} for distro, version in old_versions.iteritems(): entry = lookup(distro, version) - self.assertEquals(entry['disk_bus'], 'ide') - self.assertEquals(entry['nic_model'], 'e1000') + self.assertEquals(entry['disk_bus'], + get_template_default('old', 'disk_bus')) + self.assertEquals(entry['nic_model'], + get_template_default('old', 'nic_model'))
def test_modern_bases(self): for distro, version in modern_version_bases[_get_arch()].iteritems(): entry = lookup(distro, version) - self.assertEquals(entry['disk_bus'], 'virtio') - self.assertEquals(entry['nic_model'], 'virtio') + self.assertEquals(entry['disk_bus'], + get_template_default('modern', 'disk_bus')) + self.assertEquals(entry['nic_model'], + get_template_default('modern', 'nic_model'))
def test_modern_distros(self): - modern_versions = {'debian': '7.0', 'ubuntu': '12.04', - 'opensuse': '12.3', 'centos': '6.4', 'rhel': '6.3', - 'fedora': '18', 'gentoo': '12.1'} + # versions based on ppc64 modern distros + modern_versions = {'ubuntu': '14.04', 'opensuse': '13.1', + 'rhel': '6.5', 'fedora': '19', 'sles': '11sp3'} for distro, version in modern_versions.iteritems(): entry = lookup(distro, version) - self.assertEquals(entry['disk_bus'], 'virtio') - self.assertEquals(entry['nic_model'], 'virtio') + self.assertEquals(entry['disk_bus'], + get_template_default('modern', 'disk_bus')) + self.assertEquals(entry['nic_model'], + get_template_default('modern', 'nic_model')) + + def test_lookup_unknown_distro_version_returns_old_distro(self): + distro = 'unknown_distro' + version = 'unknown_version' + entry = lookup(distro, version) + self.assertEquals(entry['disk_bus'], + get_template_default('old', 'disk_bus')) + self.assertEquals(entry['nic_model'], + get_template_default('old', 'nic_model'))