@@ -4415,30 +4415,29 @@ def get_parser(self, prog_name):
44154415 return parser
44164416
44174417 def take_action (self , parsed_args ):
4418- compute_client = self .app .client_manager .compute
4419- server = utils .find_resource (
4420- compute_client .servers ,
4421- parsed_args .server ,
4418+ compute_client = self .app .client_manager .sdk_connection .compute
4419+ server = compute_client .find_server (
4420+ parsed_args .server , ignore_missing = False
44224421 )
44234422
44244423 if parsed_args .description :
4425- if compute_client . api_version < api_versions . APIVersion ( " 2.19" ):
4424+ if not sdk_utils . supports_microversion ( compute_client , ' 2.19' ):
44264425 msg = _ (
44274426 '--os-compute-api-version 2.19 or greater is required to '
44284427 'support the --description option'
44294428 )
44304429 raise exceptions .CommandError (msg )
44314430
44324431 if parsed_args .tags :
4433- if compute_client . api_version < api_versions . APIVersion ( '2.26' ):
4432+ if not sdk_utils . supports_microversion ( compute_client , '2.26' ):
44344433 msg = _ (
44354434 '--os-compute-api-version 2.26 or greater is required to '
44364435 'support the --tag option'
44374436 )
44384437 raise exceptions .CommandError (msg )
44394438
44404439 if parsed_args .hostname :
4441- if compute_client . api_version < api_versions . APIVersion ( '2.90' ):
4440+ if not sdk_utils . supports_microversion ( compute_client , '2.90' ):
44424441 msg = _ (
44434442 '--os-compute-api-version 2.90 or greater is required to '
44444443 'support the --hostname option'
@@ -4457,30 +4456,32 @@ def take_action(self, parsed_args):
44574456 update_kwargs ['hostname' ] = parsed_args .hostname
44584457
44594458 if update_kwargs :
4460- server . update ( ** update_kwargs )
4459+ compute_client . update_server ( server , ** update_kwargs )
44614460
44624461 if parsed_args .properties :
4463- compute_client .servers .set_meta (server , parsed_args .properties )
4462+ compute_client .set_server_metadata (
4463+ server , ** parsed_args .properties
4464+ )
44644465
44654466 if parsed_args .state :
4466- server . reset_state ( state = parsed_args .state )
4467+ compute_client . reset_server_state ( server , state = parsed_args .state )
44674468
44684469 if parsed_args .root_password :
44694470 p1 = getpass .getpass (_ ('New password: ' ))
44704471 p2 = getpass .getpass (_ ('Retype new password: ' ))
44714472 if p1 == p2 :
4472- server . change_password ( p1 )
4473+ compute_client . change_server_password ( server , p1 )
44734474 else :
44744475 msg = _ ("Passwords do not match, password unchanged" )
44754476 raise exceptions .CommandError (msg )
44764477 elif parsed_args .password :
4477- server . change_password ( parsed_args .password )
4478+ compute_client . change_server_password ( server , parsed_args .password )
44784479 elif parsed_args .no_password :
4479- server . clear_password ( )
4480+ compute_client . clear_server_password ( server )
44804481
44814482 if parsed_args .tags :
44824483 for tag in parsed_args .tags :
4483- server . add_tag ( tag = tag )
4484+ compute_client . add_tag_to_server ( server , tag = tag )
44844485
44854486
44864487class ShelveServer (command .Command ):
@@ -4995,7 +4996,8 @@ def get_parser(self, prog_name):
49954996 metavar = '<server>' ,
49964997 help = _ ('Server (name or ID)' ),
49974998 )
4998- parser .add_argument (
4999+ property_group = parser .add_mutually_exclusive_group ()
5000+ property_group .add_argument (
49995001 '--property' ,
50005002 metavar = '<key>' ,
50015003 action = 'append' ,
@@ -5006,16 +5008,22 @@ def get_parser(self, prog_name):
50065008 '(repeat option to remove multiple values)'
50075009 ),
50085010 )
5011+ property_group .add_argument (
5012+ '--all-properties' ,
5013+ action = 'store_true' ,
5014+ help = _ ('Remove all properties' ),
5015+ )
50095016 parser .add_argument (
50105017 '--description' ,
50115018 dest = 'description' ,
50125019 action = 'store_true' ,
50135020 help = _ (
5014- 'Unset server description (supported by '
5015- '--os-compute-api-version 2.19 or above)'
5021+ 'Unset server description '
5022+ '(supported by --os-compute-api-version 2.19 or above)'
50165023 ),
50175024 )
5018- parser .add_argument (
5025+ tag_group = parser .add_mutually_exclusive_group ()
5026+ tag_group .add_argument (
50195027 '--tag' ,
50205028 metavar = '<tag>' ,
50215029 action = 'append' ,
@@ -5027,40 +5035,51 @@ def get_parser(self, prog_name):
50275035 '(supported by --os-compute-api-version 2.26 or above)'
50285036 ),
50295037 )
5038+ tag_group .add_argument (
5039+ '--all-tags' ,
5040+ action = 'store_true' ,
5041+ help = _ (
5042+ 'Remove all tags '
5043+ '(supported by --os-compute-api-version 2.26 or above)'
5044+ ),
5045+ )
50305046 return parser
50315047
50325048 def take_action (self , parsed_args ):
5033- compute_client = self .app .client_manager .compute
5034- server = utils . find_resource (
5035- compute_client .servers ,
5036- parsed_args .server ,
5049+ compute_client = self .app .client_manager .sdk_connection . compute
5050+
5051+ server = compute_client .find_server (
5052+ parsed_args .server , ignore_missing = False
50375053 )
50385054
5039- if parsed_args .properties :
5040- compute_client .servers .delete_meta (server , parsed_args .properties )
5055+ if parsed_args .properties or parsed_args .all_properties :
5056+ compute_client .delete_server_metadata (
5057+ server , parsed_args .properties or None
5058+ )
50415059
50425060 if parsed_args .description :
5043- if compute_client . api_version < api_versions . APIVersion ( " 2.19" ):
5061+ if not sdk_utils . supports_microversion ( compute_client , ' 2.19' ):
50445062 msg = _ (
5045- '--os-compute-api-version 2.19 or greater is '
5046- 'required to support the --description option'
5063+ '--os-compute-api-version 2.19 or greater is required to '
5064+ 'support the --description option'
50475065 )
50485066 raise exceptions .CommandError (msg )
5049- compute_client .servers .update (
5050- server ,
5051- description = "" ,
5052- )
50535067
5054- if parsed_args .tags :
5055- if compute_client .api_version < api_versions .APIVersion ('2.26' ):
5068+ compute_client .update_server (server , description = "" )
5069+
5070+ if parsed_args .tags or parsed_args .all_tags :
5071+ if not sdk_utils .supports_microversion (compute_client , '2.26' ):
50565072 msg = _ (
50575073 '--os-compute-api-version 2.26 or greater is required to '
50585074 'support the --tag option'
50595075 )
50605076 raise exceptions .CommandError (msg )
50615077
50625078 for tag in parsed_args .tags :
5063- compute_client .servers .delete_tag (server , tag = tag )
5079+ compute_client .remove_tag_from_server (server , tag )
5080+
5081+ if parsed_args .all_tags :
5082+ compute_client .remove_tags_from_server (server )
50645083
50655084
50665085class UnshelveServer (command .Command ):
0 commit comments