Merge "Fix for referencing cloud image by ID"
This commit is contained in:
commit
eb52394c8c
@ -69,14 +69,6 @@ class ProviderCloudImage(ConfigValue):
|
||||
def __repr__(self):
|
||||
return "<ProviderCloudImage %s>" % self.name
|
||||
|
||||
@property
|
||||
def external(self):
|
||||
'''External identifier to pass to the cloud.'''
|
||||
if self.image_id:
|
||||
return dict(id=self.image_id)
|
||||
else:
|
||||
return self.image_name or self.name
|
||||
|
||||
@property
|
||||
def external_name(self):
|
||||
'''Human readable version of external.'''
|
||||
|
@ -76,6 +76,8 @@ class OpenStackNodeLauncher(NodeLauncher):
|
||||
)
|
||||
|
||||
config_drive = diskimage.config_drive
|
||||
# Using a dict with the ID bypasses an image search during
|
||||
# server creation.
|
||||
image_external = dict(id=cloud_image.external_id)
|
||||
image_id = "{path}/{upload_id}".format(
|
||||
path=self.handler.zk._imageUploadPath(
|
||||
@ -92,7 +94,13 @@ class OpenStackNodeLauncher(NodeLauncher):
|
||||
# launch using unmanaged cloud image
|
||||
config_drive = self.label.cloud_image.config_drive
|
||||
|
||||
image_external = self.label.cloud_image.external
|
||||
if self.label.cloud_image.image_id:
|
||||
# Using a dict with the ID bypasses an image search during
|
||||
# server creation.
|
||||
image_external = dict(id=self.label.cloud_image.image_id)
|
||||
else:
|
||||
image_external = self.label.cloud_image.external_name
|
||||
|
||||
image_id = self.label.cloud_image.name
|
||||
image_name = self.label.cloud_image.name
|
||||
username = self.label.cloud_image.username
|
||||
|
@ -395,7 +395,14 @@ class OpenStackProvider(Provider):
|
||||
def labelReady(self, label):
|
||||
if not label.cloud_image:
|
||||
return False
|
||||
image = self.getImage(label.cloud_image.external)
|
||||
|
||||
# If an image ID was supplied, we'll assume it is ready since
|
||||
# we don't currently have a way of validating that (except during
|
||||
# server creation).
|
||||
if label.cloud_image.image_id:
|
||||
return True
|
||||
|
||||
image = self.getImage(label.cloud_image.external_name)
|
||||
if not image:
|
||||
self.log.warning(
|
||||
"Provider %s is configured to use %s as the"
|
||||
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
For pre-existing cloud images (not managed by nodepool), referencing
|
||||
them by ID was failing since they could not be found with this data,
|
||||
only by name.
|
Loading…
x
Reference in New Issue
Block a user