diff options
| -rw-r--r-- | cloudinit/sources/helpers/openstack.py | 2 | ||||
| -rw-r--r-- | tests/unittests/test_datasource/test_openstack.py | 30 | 
2 files changed, 31 insertions, 1 deletions
diff --git a/cloudinit/sources/helpers/openstack.py b/cloudinit/sources/helpers/openstack.py index 8f9c1441..e3d372b6 100644 --- a/cloudinit/sources/helpers/openstack.py +++ b/cloudinit/sources/helpers/openstack.py @@ -439,7 +439,7 @@ class MetadataReader(BaseReader):              return self._versions          found = []          version_path = self._path_join(self.base_path, "openstack") -        content = self._path_read(version_path) +        content = self._path_read(version_path, decode=True)          for line in content.splitlines():              line = line.strip()              if not line: diff --git a/tests/unittests/test_datasource/test_openstack.py b/tests/unittests/test_datasource/test_openstack.py index 6e1e971b..ab5d3adc 100644 --- a/tests/unittests/test_datasource/test_openstack.py +++ b/tests/unittests/test_datasource/test_openstack.py @@ -555,4 +555,34 @@ class TestDetectOpenStack(test_helpers.CiTestCase):          m_proc_env.assert_called_with(1) +class TestMetadataReader(test_helpers.HttprettyTestCase): +    """Test the MetadataReader.""" +    burl = 'http://169.254.169.254/' + +    def register(self, path, body=None, status=200): +        hp.register_uri( +            hp.GET, self.burl + "openstack" + path, status=status, body=body) + +    def register_versions(self, versions): +        self.register("", '\n'.join(versions).encode('utf-8')) + +    def test__find_working_version(self): +        """Test a working version ignores unsupported.""" +        unsup = "2016-11-09" +        self.register_versions( +            [openstack.OS_FOLSOM, openstack.OS_LIBERTY, unsup, +             openstack.OS_LATEST]) +        self.assertEqual( +            openstack.OS_LIBERTY, +            openstack.MetadataReader(self.burl)._find_working_version()) + +    def test__find_working_version_uses_latest(self): +        """'latest' should be used if no supported versions.""" +        unsup1, unsup2 = ("2016-11-09", '2017-06-06') +        self.register_versions([unsup1, unsup2, openstack.OS_LATEST]) +        self.assertEqual( +            openstack.OS_LATEST, +            openstack.MetadataReader(self.burl)._find_working_version()) + +  # vi: ts=4 expandtab  | 
