summaryrefslogtreecommitdiff
path: root/openstackclient/image
diff options
context:
space:
mode:
authorxiexs <xiexs@cn.fujitsu.com>2015-12-05 19:25:30 +0800
committerDean Troyer <dtroyer@gmail.com>2015-12-21 11:17:42 -0600
commit0a444fc949584c9ac2a555bfa9ad221913ad4779 (patch)
tree2b2b7770040c20bda0687c870c5c7d8f917fbb1f /openstackclient/image
parentb61104563908dbf76c0fb94b6eb46c91fe109d48 (diff)
downloadpython-openstackclient-0a444fc949584c9ac2a555bfa9ad221913ad4779.tar.gz
Add owner validation for "openstack image create/set"
Owner validation is necessary if a new image owner will be created/set. Change-Id: I621774e02866bfa98a31b613deff5d7b6a962737 Closes-Bug: #1517134
Diffstat (limited to 'openstackclient/image')
-rw-r--r--openstackclient/image/v2/image.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/openstackclient/image/v2/image.py b/openstackclient/image/v2/image.py
index 1fcb92d9..ad536ba2 100644
--- a/openstackclient/image/v2/image.py
+++ b/openstackclient/image/v2/image.py
@@ -220,6 +220,7 @@ class CreateImage(show.ShowOne):
help="Set a tag on this image "
"(repeat option to set multiple tags)",
)
+ common.add_project_domain_option_to_parser(parser)
for deadopt in self.deadopts:
parser.add_argument(
"--%s" % deadopt,
@@ -231,6 +232,7 @@ class CreateImage(show.ShowOne):
def take_action(self, parsed_args):
self.log.debug("take_action(%s)", parsed_args)
+ identity_client = self.app.client_manager.identity
image_client = self.app.client_manager.image
for deadopt in self.deadopts:
@@ -285,6 +287,13 @@ class CreateImage(show.ShowOne):
self.log.warning("Failed to get an image file.")
return {}, {}
+ if parsed_args.owner:
+ kwargs['owner'] = common.find_project(
+ identity_client,
+ parsed_args.owner,
+ parsed_args.project_domain,
+ ).id
+
# If a volume is specified.
if parsed_args.volume:
volume_client = self.app.client_manager.volume
@@ -704,6 +713,7 @@ class SetImage(command.Command):
action="store_true",
help="Activate the image",
)
+ common.add_project_domain_option_to_parser(parser)
for deadopt in self.deadopts:
parser.add_argument(
"--%s" % deadopt,
@@ -715,6 +725,7 @@ class SetImage(command.Command):
def take_action(self, parsed_args):
self.log.debug("take_action(%s)", parsed_args)
+ identity_client = self.app.client_manager.identity
image_client = self.app.client_manager.image
for deadopt in self.deadopts:
@@ -779,6 +790,13 @@ class SetImage(command.Command):
# Tags should be extended, but duplicates removed
kwargs['tags'] = list(set(image.tags).union(set(parsed_args.tags)))
+ if parsed_args.owner:
+ kwargs['owner'] = common.find_project(
+ identity_client,
+ parsed_args.owner,
+ parsed_args.project_domain,
+ ).id
+
try:
image = image_client.images.update(image.id, **kwargs)
except Exception as e: