diff --git a/stacktach/image_type.py b/stacktach/image_type.py index c4f142d..236a0f2 100644 --- a/stacktach/image_type.py +++ b/stacktach/image_type.py @@ -1,3 +1,6 @@ +from operator import itemgetter + + BASE_IMAGE = 0x1 SNAPSHOT_IMAGE = 0x2 @@ -30,7 +33,7 @@ flags = {'base' : BASE_IMAGE, def readable(num): result = [] - for k, v in sorted(flags.iteritems(), key=lambda x: x[1]): + for k, v in sorted(flags.iteritems(), key=itemgetter(1)): if isset(num, v): result.append(k) return result @@ -38,8 +41,6 @@ def readable(num): def get_numeric_code(payload, default=0): meta = payload.get('image_meta', {}) - if default == None: - default = 0 num = default image_type = meta.get('image_type', '') diff --git a/tests/unit/test_image_type.py b/tests/unit/test_image_type.py index d9b3d0e..f579dcf 100644 --- a/tests/unit/test_image_type.py +++ b/tests/unit/test_image_type.py @@ -26,8 +26,8 @@ from stacktach import image_type class ImageTypeTestCase(unittest.TestCase): # Abstractions - def _test_get_numeric_code(self, image, os_type, os_distro, - expected, default=0): + def _test_get_numeric_code(self, image, os_type, os_distro, expected, + default=0): payload = { "image_meta": { "image_type": image, @@ -40,12 +40,15 @@ class ImageTypeTestCase(unittest.TestCase): self.assertEqual(result, expected) - def _test_readable(self, value, image, os_type, os_distro): + def _test_readable_with_os_distro(self, value, image, os_type, os_distro): result = image_type.readable(value) - if os_distro is None: - self.assertEqual(result, [image, os_type]) - else: - self.assertEqual(result, [image, os_type, os_distro]) + + self.assertEqual(result, [image, os_type, os_distro]) + + def _test_readable_without_os_distro(self, value, image, os_type, os_distro): + result = image_type.readable(value) + + self.assertEqual(result, [image, os_type]) def _test_isset(self, code): value = 0 @@ -61,16 +64,20 @@ class ImageTypeTestCase(unittest.TestCase): # Test get_numeric_code def test_get_numeric_code_base_linux_ubuntu(self): - self._test_get_numeric_code('base', 'linux', 'ubuntu', expected=0x111) + self._test_get_numeric_code('base', 'linux', 'ubuntu', + expected=0x111) def test_get_numeric_code_base_linux_debian(self): - self._test_get_numeric_code('base', 'linux', 'debian', expected=0x211) + self._test_get_numeric_code('base', 'linux', 'debian', + expected=0x211) def test_get_numeric_code_base_linux_centos(self): - self._test_get_numeric_code('base', 'linux', 'centos', expected=0x411) + self._test_get_numeric_code('base', 'linux', 'centos', + expected=0x411) def test_get_numeric_code_base_linux_rhel(self): - self._test_get_numeric_code('base', 'linux', 'rhel', expected=0x811) + self._test_get_numeric_code('base', 'linux', 'rhel', + expected=0x811) def test_get_numeric_code_snapshot_linux_ubuntu(self): self._test_get_numeric_code('snapshot', 'linux', 'ubuntu', @@ -85,59 +92,62 @@ class ImageTypeTestCase(unittest.TestCase): expected=0x412) def test_get_numeric_code_snapshot_linux_rhel(self): - self._test_get_numeric_code('snapshot', 'linux', 'rhel', expected=0x812) + self._test_get_numeric_code('snapshot', 'linux', 'rhel', + expected=0x812) def test_get_numeric_code_base_windows(self): - self._test_get_numeric_code('base', 'windows', None, expected=0x21) + self._test_get_numeric_code('base', 'windows', None, + expected=0x21) def test_get_numeric_code_snapshot_windows(self): - self._test_get_numeric_code('snapshot', 'windows', None, expected=0x22) + self._test_get_numeric_code('snapshot', 'windows', None, + expected=0x22) def test_get_numeric_code_base_freebsd(self): - self._test_get_numeric_code('base', 'freebsd', None, expected=0x41) + self._test_get_numeric_code('base', 'freebsd', None, + expected=0x41) def test_get_numeric_code_snapshot_freebsd(self): - self._test_get_numeric_code('snapshot', 'freebsd', None, expected=0x42) + self._test_get_numeric_code('snapshot', 'freebsd', None, + expected=0x42) - def test_get_numeric_code_default_none(self): - self._test_get_numeric_code('', '', '', expected=0x0, default=None) + # Test readable with os_distro available + def _test_readable_with_os_distro_base_linux_ubuntu(self): + self._test_readable_with_os_distro(0x111, 'base', 'linux', 'ubuntu') - # Test readable - def test_readable_base_linux_ubuntu(self): - self._test_readable(0x111, 'base', 'linux', 'ubuntu') + def _test_readable_with_os_distro_base_linux_debian(self): + self._test_readable_with_os_distro(0x211, 'base', 'linux', 'debian') - def test_readable_base_linux_debian(self): - self._test_readable(0x211, 'base', 'linux', 'debian') + def _test_readable_with_os_distro_base_linux_centos(self): + self._test_readable_with_os_distro(0x411, 'base', 'linux', 'centos') - def test_readable_base_linux_centos(self): - self._test_readable(0x411, 'base', 'linux', 'centos') + def _test_readable_with_os_distro_base_linux_rhel(self): + self._test_readable_with_os_distro(0x811, 'base', 'linux', 'rhel') - def test_readable_base_linux_rhel(self): - self._test_readable(0x811, 'base', 'linux', 'rhel') + def _test_readable_with_os_distro_snapshot_linux_ubuntu(self): + self._test_readable_with_os_distro(0x112, 'snapshot', 'linux', 'ubuntu') - def test_readable_snapshot_linux_ubuntu(self): - self._test_readable(0x112, 'snapshot', 'linux', 'ubuntu') + def _test_readable_with_os_distro_snapshot_linux_debian(self): + self._test_readable_with_os_distro(0x212, 'snapshot', 'linux', 'debian') - def test_readable_snapshot_linux_debian(self): - self._test_readable(0x212, 'snapshot', 'linux', 'debian') + def _test_readable_with_os_distro_snapshot_linux_centos(self): + self._test_readable_with_os_distro(0x412, 'snapshot', 'linux', 'centos') - def test_readable_snapshot_linux_centos(self): - self._test_readable(0x412, 'snapshot', 'linux', 'centos') + def _test_readable_with_os_distro_snapshot_linux_rhel(self): + self._test_readable_with_os_distro(0x812, 'snapshot', 'linux', 'rhel') - def test_readable_snapshot_linux_rhel(self): - self._test_readable(0x812, 'snapshot', 'linux', 'rhel') + # Test readable without os_distro available + def test_readable_without_os_distro_base_windows_(self): + self._test_readable_without_os_distro(0x21, 'base', 'windows', None) - def test_readable_base_windows(self): - self._test_readable(0x21, 'base', 'windows', None) + def test_readable_without_os_distro_snapshot_windows(self): + self._test_readable_without_os_distro(0x22, 'snapshot', 'windows', None) - def test_readable_snapshot_windows(self): - self._test_readable(0x22, 'snapshot', 'windows', None) + def test_readable_without_distro_base_freebsd(self): + self._test_readable_without_os_distro(0x41, 'base', 'freebsd', None) - def test_readable_base_freebsd(self): - self._test_readable(0x41, 'base', 'freebsd', None) - - def test_readable_snapshot_freebsd(self): - self._test_readable(0x42, 'snapshot', 'freebsd', None) + def test_readable__without_distro_snapshot_freebsd(self): + self._test_readable_without_os_distro(0x42, 'snapshot', 'freebsd', None) # Test isset def test_isset_base_image(self): @@ -167,10 +177,6 @@ class ImageTypeTestCase(unittest.TestCase): def test_isset_os_rhel(self): self._test_isset(image_type.OS_RHEL) - # Test blank argument to isset - def test_blank_argument_isset(self): - self.assertFalse(image_type.isset(None, image_type.OS_CENTOS)) - # Negative test isset def test_false_isset_base_image_from_payload(self): self._test_false_isset(image_type.SNAPSHOT_IMAGE, image_type.BASE_IMAGE) @@ -222,3 +228,7 @@ class ImageTypeTestCase(unittest.TestCase): def test_false_isset_os_ubuntu_os_rhel(self): self._test_false_isset(image_type.OS_UBUNTU, image_type.OS_RHEL) + + # Test blank argument to isset + def test_blank_argument_isset(self): + self.assertFalse(image_type.isset(None, image_type.OS_CENTOS))