Skip to content

Commit c4b09a2

Browse files
committed
make BaseReader select latest supported version
1 parent 0ea631a commit c4b09a2

File tree

3 files changed

+20
-18
lines changed

3 files changed

+20
-18
lines changed

cloudinit/sources/DataSourceConfigDrive.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -167,17 +167,13 @@ def get_ds_mode(cfgdrv_ver, ds_cfg=None, user=None):
167167
return "net"
168168

169169

170-
def read_config_drive(source_dir):
171-
excps = []
172-
finders = []
170+
def read_config_drive(source_dir, version=None):
173171
reader = openstack.ConfigDriveReader(source_dir)
174-
175-
# openstack.OS_VERSIONS is stored in chronological order, so to check the
176-
# newest first, use reversed()
177-
for version in reversed(openstack.OS_VERSIONS):
178-
finders.append((reader.read_v2, [], {'version': version}))
179-
finders.append((reader.read_v1, [], {}))
180-
172+
finders = [
173+
(reader.read_v2, [], {'version': version}),
174+
(reader.read_v1, [], {}),
175+
]
176+
excps = []
181177
for (functor, args, kwargs) in finders:
182178
try:
183179
return functor(*args, **kwargs)

cloudinit/sources/DataSourceOpenStack.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,7 @@ def get_data(self):
119119
'Crawl of openstack metadata service',
120120
read_metadata_service,
121121
args=[self.metadata_address],
122-
kwargs={'ssl_details': self.ssl_details,
123-
'version': openstack.OS_HAVANA})
122+
kwargs={'ssl_details': self.ssl_details})
124123
except openstack.NonReadable:
125124
return False
126125
except (openstack.BrokenMetadata, IOError):

cloudinit/sources/helpers/openstack.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
OS_FOLSOM = '2012-08-10'
4949
OS_GRIZZLY = '2013-04-04'
5050
OS_HAVANA = '2013-10-17'
51-
# keep this in chronological order by time: add new entries to the end
51+
# keep this in chronological order. new supported versions go at the end.
5252
OS_VERSIONS = (
5353
OS_FOLSOM,
5454
OS_GRIZZLY,
@@ -162,27 +162,35 @@ def _fetch_available_versions(self):
162162
def _read_ec2_metadata(self):
163163
pass
164164

165-
def _find_working_version(self, version):
165+
def _find_working_version(self, version=None):
166166
try:
167167
versions_available = self._fetch_available_versions()
168168
except Exception as e:
169169
LOG.debug("Unable to read openstack versions from %s due to: %s",
170170
self.base_path, e)
171171
versions_available = []
172172

173-
search_versions = [version] + list(OS_VERSIONS)
173+
# openstack.OS_VERSIONS is stored in chronological order, so
174+
# reverse it to check newest first.
175+
supported = [v for v in reversed(list(OS_VERSIONS))]
176+
if version is not None:
177+
search_versions = [version] + supported
178+
else:
179+
search_versions = supported
180+
174181
selected_version = OS_LATEST
175182
for potential_version in search_versions:
176183
if potential_version not in versions_available:
177184
continue
178185
selected_version = potential_version
179186
break
180187

181-
if selected_version != version:
188+
if version is not None and selected_version != version:
182189
LOG.warn("Version '%s' not available, attempting to use "
183190
"version '%s' instead", version, selected_version)
184191
else:
185-
LOG.debug("Version '%s' was available.", version)
192+
LOG.debug("Selected version '%s' from %s", version,
193+
versions_available)
186194
return selected_version
187195

188196
def _read_content_path(self, item):
@@ -434,7 +442,6 @@ def _fetch_available_versions(self):
434442
self._versions = found
435443
return self._versions
436444

437-
438445
def _path_read(self, path):
439446

440447
def should_retry_cb(_request_args, cause):

0 commit comments

Comments
 (0)