2828from openstackclient .common import exceptions
2929from openstackclient .common import parseractions
3030from openstackclient .common import utils
31+ from openstackclient .i18n import _ # noqa
3132from openstackclient .identity import common
3233
3334
@@ -147,11 +148,6 @@ def get_parser(self, prog_name):
147148 help = "Image disk format "
148149 "(default: %s)" % DEFAULT_DISK_FORMAT ,
149150 )
150- parser .add_argument (
151- "--owner" ,
152- metavar = "<owner>" ,
153- help = "Image owner project name or ID" ,
154- )
155151 parser .add_argument (
156152 "--min-disk" ,
157153 metavar = "<disk-gb>" ,
@@ -220,6 +216,20 @@ def get_parser(self, prog_name):
220216 help = "Set a tag on this image "
221217 "(repeat option to set multiple tags)" ,
222218 )
219+ # NOTE(dtroyer): --owner is deprecated in Jan 2016 in an early
220+ # 2.x release. Do not remove before Jan 2017
221+ # and a 3.x release.
222+ project_group = parser .add_mutually_exclusive_group ()
223+ project_group .add_argument (
224+ "--project" ,
225+ metavar = "<project>" ,
226+ help = "Set an alternate project on this image (name or ID)" ,
227+ )
228+ project_group .add_argument (
229+ "--owner" ,
230+ metavar = "<project>" ,
231+ help = argparse .SUPPRESS ,
232+ )
223233 common .add_project_domain_option_to_parser (parser )
224234 for deadopt in self .deadopts :
225235 parser .add_argument (
@@ -246,15 +256,15 @@ def take_action(self, parsed_args):
246256 kwargs = {}
247257 copy_attrs = ('name' , 'id' ,
248258 'container_format' , 'disk_format' ,
249- 'min_disk' , 'min_ram' ,
250- 'tags' , 'owner' )
259+ 'min_disk' , 'min_ram' , 'tags' )
251260 for attr in copy_attrs :
252261 if attr in parsed_args :
253262 val = getattr (parsed_args , attr , None )
254263 if val :
255264 # Only include a value in kwargs for attributes that
256265 # are actually present on the command line
257266 kwargs [attr ] = val
267+
258268 # properties should get flattened into the general kwargs
259269 if getattr (parsed_args , 'properties' , None ):
260270 for k , v in six .iteritems (parsed_args .properties ):
@@ -275,6 +285,21 @@ def take_action(self, parsed_args):
275285 if parsed_args .private :
276286 kwargs ['visibility' ] = 'private'
277287
288+ # Handle deprecated --owner option
289+ project_arg = parsed_args .project
290+ if parsed_args .owner :
291+ project_arg = parsed_args .owner
292+ self .log .warning (_ (
293+ 'The --owner option is deprecated, '
294+ 'please use --project instead.'
295+ ))
296+ if project_arg :
297+ kwargs ['owner' ] = common .find_project (
298+ identity_client ,
299+ project_arg ,
300+ parsed_args .project_domain ,
301+ ).id
302+
278303 # open the file first to ensure any failures are handled before the
279304 # image is created
280305 fp = gc_utils .get_data_file (parsed_args )
@@ -458,7 +483,7 @@ def take_action(self, parsed_args):
458483 'Status' ,
459484 'Visibility' ,
460485 'Protected' ,
461- 'Owner ' ,
486+ 'Project ' ,
462487 'Tags' ,
463488 )
464489 else :
@@ -598,11 +623,6 @@ def get_parser(self, prog_name):
598623 metavar = "<name>" ,
599624 help = "New image name"
600625 )
601- parser .add_argument (
602- "--owner" ,
603- metavar = "<project>" ,
604- help = "New image owner project (name or ID)" ,
605- )
606626 parser .add_argument (
607627 "--min-disk" ,
608628 type = int ,
@@ -713,6 +733,20 @@ def get_parser(self, prog_name):
713733 action = "store_true" ,
714734 help = "Activate the image" ,
715735 )
736+ # NOTE(dtroyer): --owner is deprecated in Jan 2016 in an early
737+ # 2.x release. Do not remove before Jan 2017
738+ # and a 3.x release.
739+ project_group = parser .add_mutually_exclusive_group ()
740+ project_group .add_argument (
741+ "--project" ,
742+ metavar = "<project>" ,
743+ help = "Set an alternate project on this image (name or ID)" ,
744+ )
745+ project_group .add_argument (
746+ "--owner" ,
747+ metavar = "<project>" ,
748+ help = argparse .SUPPRESS ,
749+ )
716750 common .add_project_domain_option_to_parser (parser )
717751 for deadopt in self .deadopts :
718752 parser .add_argument (
@@ -738,7 +772,7 @@ def take_action(self, parsed_args):
738772 copy_attrs = ('architecture' , 'container_format' , 'disk_format' ,
739773 'file' , 'instance_id' , 'kernel_id' , 'locations' ,
740774 'min_disk' , 'min_ram' , 'name' , 'os_distro' , 'os_version' ,
741- 'owner' , ' prefix' , 'progress' , 'ramdisk_id' , 'tags' )
775+ 'prefix' , 'progress' , 'ramdisk_id' , 'tags' )
742776 for attr in copy_attrs :
743777 if attr in parsed_args :
744778 val = getattr (parsed_args , attr , None )
@@ -767,6 +801,21 @@ def take_action(self, parsed_args):
767801 if parsed_args .private :
768802 kwargs ['visibility' ] = 'private'
769803
804+ # Handle deprecated --owner option
805+ project_arg = parsed_args .project
806+ if parsed_args .owner :
807+ project_arg = parsed_args .owner
808+ self .log .warning (_ (
809+ 'The --owner option is deprecated, '
810+ 'please use --project instead.'
811+ ))
812+ if project_arg :
813+ kwargs ['owner' ] = common .find_project (
814+ identity_client ,
815+ project_arg ,
816+ parsed_args .project_domain ,
817+ ).id
818+
770819 # Checks if anything that requires getting the image
771820 if not (kwargs or parsed_args .deactivate or parsed_args .activate ):
772821 self .log .warning ("No arguments specified" )
@@ -790,13 +839,6 @@ def take_action(self, parsed_args):
790839 # Tags should be extended, but duplicates removed
791840 kwargs ['tags' ] = list (set (image .tags ).union (set (parsed_args .tags )))
792841
793- if parsed_args .owner :
794- kwargs ['owner' ] = common .find_project (
795- identity_client ,
796- parsed_args .owner ,
797- parsed_args .project_domain ,
798- ).id
799-
800842 try :
801843 image = image_client .images .update (image .id , ** kwargs )
802844 except Exception as e :
0 commit comments