|
48 | 48 | OS_FOLSOM = '2012-08-10' |
49 | 49 | OS_GRIZZLY = '2013-04-04' |
50 | 50 | 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. |
52 | 52 | OS_VERSIONS = ( |
53 | 53 | OS_FOLSOM, |
54 | 54 | OS_GRIZZLY, |
@@ -162,27 +162,35 @@ def _fetch_available_versions(self): |
162 | 162 | def _read_ec2_metadata(self): |
163 | 163 | pass |
164 | 164 |
|
165 | | - def _find_working_version(self, version): |
| 165 | + def _find_working_version(self, version=None): |
166 | 166 | try: |
167 | 167 | versions_available = self._fetch_available_versions() |
168 | 168 | except Exception as e: |
169 | 169 | LOG.debug("Unable to read openstack versions from %s due to: %s", |
170 | 170 | self.base_path, e) |
171 | 171 | versions_available = [] |
172 | 172 |
|
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 | + |
174 | 181 | selected_version = OS_LATEST |
175 | 182 | for potential_version in search_versions: |
176 | 183 | if potential_version not in versions_available: |
177 | 184 | continue |
178 | 185 | selected_version = potential_version |
179 | 186 | break |
180 | 187 |
|
181 | | - if selected_version != version: |
| 188 | + if version is not None and selected_version != version: |
182 | 189 | LOG.warn("Version '%s' not available, attempting to use " |
183 | 190 | "version '%s' instead", version, selected_version) |
184 | 191 | else: |
185 | | - LOG.debug("Version '%s' was available.", version) |
| 192 | + LOG.debug("Selected version '%s' from %s", version, |
| 193 | + versions_available) |
186 | 194 | return selected_version |
187 | 195 |
|
188 | 196 | def _read_content_path(self, item): |
@@ -434,7 +442,6 @@ def _fetch_available_versions(self): |
434 | 442 | self._versions = found |
435 | 443 | return self._versions |
436 | 444 |
|
437 | | - |
438 | 445 | def _path_read(self, path): |
439 | 446 |
|
440 | 447 | def should_retry_cb(_request_args, cause): |
|
0 commit comments