1818import getpass
1919import logging
2020
21- from novaclient import api_versions
2221from osc_lib .cli import parseractions
2322from osc_lib .command import command
2423from osc_lib import exceptions
25- from osc_lib import utils
2624
2725from openstackclient .i18n import _
2826
27+ from openstack import utils as sdk_utils
28+
2929from otcextensions import sdk
3030
3131
@@ -53,11 +53,14 @@ def get_parser(self, prog_name):
5353 help = _ ('Set new root password (interactive only)' ),
5454 )
5555 parser .add_argument (
56- " --property" ,
57- metavar = " <key=value>" ,
56+ ' --property' ,
57+ metavar = ' <key=value>' ,
5858 action = parseractions .KeyValueAction ,
59- help = _ ('Property to add/change for this server '
60- '(repeat option to set multiple properties)' ),
59+ dest = 'properties' ,
60+ help = _ (
61+ 'Property to add/change for this server '
62+ '(repeat option to set multiple properties)'
63+ ),
6164 )
6265 parser .add_argument (
6366 '--state' ,
@@ -83,18 +86,16 @@ def get_parser(self, prog_name):
8386 def take_action (self , parsed_args ):
8487
8588 compute_client = self .app .client_manager .compute
86- server = utils .find_resource (
87- compute_client .servers ,
88- parsed_args .server ,
89+ server = compute_client .find_server (
90+ parsed_args .server , ignore_missing = False
8991 )
9092
9193 if parsed_args .name :
9294 server .update (name = parsed_args .name )
9395
94- if parsed_args .property :
95- compute_client .servers .set_meta (
96- server ,
97- parsed_args .property ,
96+ if parsed_args .properties :
97+ compute_client .set_server_metadata (
98+ server , ** parsed_args .properties
9899 )
99100
100101 if parsed_args .state :
@@ -110,16 +111,20 @@ def take_action(self, parsed_args):
110111 raise exceptions .CommandError (msg )
111112
112113 if parsed_args .description :
113- if server .api_version < api_versions .APIVersion ("2.19" ):
114- msg = _ ("Description is not supported for "
115- "--os-compute-api-version less than 2.19" )
114+ if not sdk_utils .supports_microversion (compute_client , '2.19' ):
115+ msg = _ (
116+ '--os-compute-api-version 2.19 or greater is required to '
117+ 'support the --description option'
118+ )
116119 raise exceptions .CommandError (msg )
117120 server .update (description = parsed_args .description )
118121
119122 if parsed_args .tag :
120- if server .api_version < api_versions .APIVersion ("2.26" ):
121- msg = _ ("Modifying tags is not supported for "
122- "--os-compute-api-version less than 2.26" )
123+ if not sdk_utils .supports_microversion (compute_client , '2.26' ):
124+ msg = _ (
125+ '--os-compute-api-version 2.26 or greater is required to '
126+ 'support the --tag option'
127+ )
123128 raise exceptions .CommandError (msg )
124129 sdk .load (self .app .client_manager .sdk_connection )
125130 client = self .app .client_manager .sdk_connection .compute
@@ -140,11 +145,13 @@ def get_parser(self, prog_name):
140145 )
141146 parser .add_argument (
142147 '--property' ,
143- metavar = '<key>' ,
144- action = 'append' ,
145- default = [],
146- help = _ ('Property key to remove from server '
147- '(repeat option to remove multiple values)' ),
148+ metavar = '<key=value>' ,
149+ action = parseractions .KeyValueAction ,
150+ dest = 'properties' ,
151+ help = _ (
152+ 'Property to add/change for this server '
153+ '(repeat option to set multiple properties)'
154+ ),
148155 )
149156 parser .add_argument (
150157 '--description' ,
@@ -164,31 +171,31 @@ def get_parser(self, prog_name):
164171
165172 def take_action (self , parsed_args ):
166173 compute_client = self .app .client_manager .compute
167- server = utils .find_resource (
168- compute_client .servers ,
169- parsed_args .server ,
174+ server = compute_client .find_server (
175+ parsed_args .server , ignore_missing = False
170176 )
171177
172- if parsed_args .property :
173- compute_client .servers .delete_meta (
174- server ,
175- parsed_args .property ,
178+ if parsed_args .properties :
179+ compute_client .delete_server_metadata (
180+ server , parsed_args .properties or None
176181 )
177182
178183 if parsed_args .description :
179- if compute_client .api_version < api_versions .APIVersion ("2.19" ):
180- msg = _ ("Description is not supported for "
181- "--os-compute-api-version less than 2.19" )
184+ if not sdk_utils .supports_microversion (compute_client , '2.19' ):
185+ msg = _ (
186+ '--os-compute-api-version 2.19 or greater is required to '
187+ 'support the --description option'
188+ )
182189 raise exceptions .CommandError (msg )
183- compute_client .servers .update (
184- server ,
185- description = "" ,
186- )
190+
191+ compute_client .update_server (server , description = "" )
187192
188193 if parsed_args .tag :
189- if compute_client .api_version < api_versions .APIVersion ("2.26" ):
190- msg = _ ("Modifying tags is not supported for "
191- "--os-compute-api-version less than 2.26" )
194+ if not sdk_utils .supports_microversion (compute_client , '2.26' ):
195+ msg = _ (
196+ '--os-compute-api-version 2.26 or greater is required to '
197+ 'support the --tag option'
198+ )
192199 raise exceptions .CommandError (msg )
193200 sdk .load (self .app .client_manager .sdk_connection )
194201 client = self .app .client_manager .sdk_connection .compute
0 commit comments