Image fix bug with --volume

Currently after calling the cinderclient to create an image from a volume,
it also then tries to create another image. This fails as the keyword
volume is unexpected. This add checks so the image is not created in
this case. Allowing --volume to not throw an error when it has worked.

Change-Id: I67e650eb0b8c331d86515e3e326c39a5d6dad5e1
Closes-Bug: 1497221
This commit is contained in:
NiallBunting 2015-09-18 15:21:59 +00:00
parent 817ab3ec0e
commit 1afd8f62cd
1 changed files with 13 additions and 11 deletions

View File

@ -213,6 +213,8 @@ class CreateImage(show.ShowOne):
if parsed_args.private:
kwargs['is_public'] = False
info = {}
if not parsed_args.location and not parsed_args.copy_from:
if parsed_args.volume:
volume_client = self.app.client_manager.volume
@ -241,18 +243,18 @@ class CreateImage(show.ShowOne):
# do a chunked transfer
kwargs["data"] = sys.stdin
# Wrap the call to catch exceptions in order to close files
try:
image = image_client.images.create(**kwargs)
finally:
# Clean up open files - make sure data isn't a string
if ('data' in kwargs and hasattr(kwargs['data'], 'close') and
kwargs['data'] != sys.stdin):
kwargs['data'].close()
if not parsed_args.volume:
# Wrap the call to catch exceptions in order to close files
try:
image = image_client.images.create(**kwargs)
finally:
# Clean up open files - make sure data isn't a string
if ('data' in kwargs and hasattr(kwargs['data'], 'close') and
kwargs['data'] != sys.stdin):
kwargs['data'].close()
info = {}
info.update(image._info)
info['properties'] = utils.format_dict(info.get('properties', {}))
info.update(image._info)
info['properties'] = utils.format_dict(info.get('properties', {}))
return zip(*sorted(six.iteritems(info)))