diff options
Diffstat (limited to 'cloudinit/sources')
| -rw-r--r-- | cloudinit/sources/DataSourceConfigDrive.py | 16 | ||||
| -rw-r--r-- | cloudinit/sources/DataSourceOpenStack.py | 3 | ||||
| -rw-r--r-- | cloudinit/sources/helpers/openstack.py | 19 | 
3 files changed, 20 insertions, 18 deletions
| diff --git a/cloudinit/sources/DataSourceConfigDrive.py b/cloudinit/sources/DataSourceConfigDrive.py index 83cc6b25..b8c16361 100644 --- a/cloudinit/sources/DataSourceConfigDrive.py +++ b/cloudinit/sources/DataSourceConfigDrive.py @@ -167,17 +167,13 @@ def get_ds_mode(cfgdrv_ver, ds_cfg=None, user=None):      return "net" -def read_config_drive(source_dir): -    excps = [] -    finders = [] +def read_config_drive(source_dir, version=None):      reader = openstack.ConfigDriveReader(source_dir) - -    # openstack.OS_VERSIONS is stored in chronological order, so to check the -    # newest first, use reversed() -    for version in reversed(openstack.OS_VERSIONS): -        finders.append((reader.read_v2, [], {'version': version})) -    finders.append((reader.read_v1, [], {})) - +    finders = [ +        (reader.read_v2, [], {'version': version}), +        (reader.read_v1, [], {}), +    ] +    excps = []      for (functor, args, kwargs) in finders:          try:              return functor(*args, **kwargs) diff --git a/cloudinit/sources/DataSourceOpenStack.py b/cloudinit/sources/DataSourceOpenStack.py index 0970d07b..ce8e8364 100644 --- a/cloudinit/sources/DataSourceOpenStack.py +++ b/cloudinit/sources/DataSourceOpenStack.py @@ -119,8 +119,7 @@ class DataSourceOpenStack(openstack.SourceMixin, sources.DataSource):                                      'Crawl of openstack metadata service',                                      read_metadata_service,                                      args=[self.metadata_address], -                                    kwargs={'ssl_details': self.ssl_details, -                                            'version': openstack.OS_HAVANA}) +                                    kwargs={'ssl_details': self.ssl_details})          except openstack.NonReadable:              return False          except (openstack.BrokenMetadata, IOError): diff --git a/cloudinit/sources/helpers/openstack.py b/cloudinit/sources/helpers/openstack.py index ed91a55c..ed9cdbaa 100644 --- a/cloudinit/sources/helpers/openstack.py +++ b/cloudinit/sources/helpers/openstack.py @@ -48,7 +48,7 @@ OS_LATEST = 'latest'  OS_FOLSOM = '2012-08-10'  OS_GRIZZLY = '2013-04-04'  OS_HAVANA = '2013-10-17' -# keep this in chronological order by time: add new entries to the end +# keep this in chronological order. new supported versions go at the end.  OS_VERSIONS = (      OS_FOLSOM,      OS_GRIZZLY, @@ -162,7 +162,7 @@ class BaseReader(object):      def _read_ec2_metadata(self):          pass -    def _find_working_version(self, version): +    def _find_working_version(self, version=None):          try:              versions_available = self._fetch_available_versions()          except Exception as e: @@ -170,7 +170,14 @@ class BaseReader(object):                        self.base_path, e)              versions_available = [] -        search_versions = [version] + list(OS_VERSIONS) +        # openstack.OS_VERSIONS is stored in chronological order, so +        # reverse it to check newest first. +        supported = [v for v in reversed(list(OS_VERSIONS))] +        if version is not None: +            search_versions = [version] + supported +        else: +            search_versions = supported +          selected_version = OS_LATEST          for potential_version in search_versions:              if potential_version not in versions_available: @@ -178,11 +185,12 @@ class BaseReader(object):              selected_version = potential_version              break -        if selected_version != version: +        if version is not None and selected_version != version:              LOG.warn("Version '%s' not available, attempting to use "                       "version '%s' instead", version, selected_version)          else: -            LOG.debug("Version '%s' was available.", version) +            LOG.debug("Selected version '%s' from %s", version, +                      versions_available)          return selected_version      def _read_content_path(self, item): @@ -434,7 +442,6 @@ class MetadataReader(BaseReader):          self._versions = found          return self._versions -      def _path_read(self, path):          def should_retry_cb(_request_args, cause): | 
