@@ -131,6 +131,24 @@ def _get_access_extension_upgrade_info(extensions, name):
131131 return publisher , version , auto_upgrade
132132
133133
134+ # separated for aaz based implementation
135+ def _get_access_extension_upgrade_info_aaz (extensions , name ):
136+ version = extension_mappings [name ]['version' ]
137+ publisher = extension_mappings [name ]['publisher' ]
138+
139+ auto_upgrade = None
140+
141+ if extensions :
142+ extension = next ((e for e in extensions if e .get ('name' , '' ) == name ), None )
143+ from packaging .version import parse # pylint: disable=no-name-in-module,import-error
144+ if extension and parse (extension ['typeHandlerVersion' ]) < parse (version ):
145+ auto_upgrade = True
146+ elif extension and parse (extension ['typeHandlerVersion' ]) > parse (version ):
147+ version = extension ['typeHandlerVersion' ]
148+
149+ return publisher , version , auto_upgrade
150+
151+
134152def _get_extension_instance_name (instance_view , publisher , extension_type_name ,
135153 suggested_name = None ):
136154 extension_instance_name = suggested_name or extension_type_name
@@ -3110,28 +3128,31 @@ def list_unmanaged_disks(cmd, resource_group_name, vm_name):
31103128# region VirtualMachines Users
31113129def _update_linux_access_extension (cmd , vm_instance , resource_group_name , protected_settings ,
31123130 no_wait = False ):
3113- client = _compute_client_factory (cmd .cli_ctx )
3114-
3115- VirtualMachineExtension = cmd .get_models ('VirtualMachineExtension' )
3131+ from .operations .vm_extension import VMExtensionCreate
31163132
31173133 # pylint: disable=no-member
3118- instance_name = _get_extension_instance_name (vm_instance . instance_view ,
3119- extension_mappings [_LINUX_ACCESS_EXT ]['publisher' ],
3120- _LINUX_ACCESS_EXT ,
3121- _ACCESS_EXT_HANDLER_NAME )
3134+ instance_name = _get_extension_instance_name_aaz (vm_instance [ 'instanceView' ] ,
3135+ extension_mappings [_LINUX_ACCESS_EXT ]['publisher' ],
3136+ _LINUX_ACCESS_EXT ,
3137+ _ACCESS_EXT_HANDLER_NAME )
31223138
3123- publisher , version , auto_upgrade = _get_access_extension_upgrade_info (
3124- vm_instance .resources , _LINUX_ACCESS_EXT )
3139+ publisher , version , auto_upgrade = _get_access_extension_upgrade_info_aaz (
3140+ vm_instance .get ( ' resources' , []) , _LINUX_ACCESS_EXT )
31253141
3126- ext = VirtualMachineExtension (location = vm_instance .location , # pylint: disable=no-member
3127- publisher = publisher ,
3128- type_properties_type = _LINUX_ACCESS_EXT ,
3129- protected_settings = protected_settings ,
3130- type_handler_version = version ,
3131- settings = {},
3132- auto_upgrade_minor_version = auto_upgrade )
3133- return sdk_no_wait (no_wait , client .virtual_machine_extensions .begin_create_or_update ,
3134- resource_group_name , vm_instance .name , instance_name , ext )
3142+ poller = VMExtensionCreate (cli_ctx = cmd .cli_ctx )(command_args = {
3143+ 'resource_group' : resource_group_name ,
3144+ 'vm_name' : vm_instance ['name' ],
3145+ 'vm_extension_name' : instance_name ,
3146+ 'location' : vm_instance ['location' ],
3147+ 'publisher' : publisher ,
3148+ 'type' : _LINUX_ACCESS_EXT ,
3149+ 'type_handler_version' : version ,
3150+ 'settings' : {},
3151+ 'protected_settings' : protected_settings ,
3152+ 'auto_upgrade_minor_version' : auto_upgrade ,
3153+ 'no_wait' : no_wait
3154+ })
3155+ return poller
31353156
31363157
31373158def _set_linux_user (cmd , vm_instance , resource_group_name , username ,
@@ -3146,75 +3167,83 @@ def _set_linux_user(cmd, vm_instance, resource_group_name, username,
31463167 if ssh_key_value :
31473168 protected_settings ['ssh_key' ] = read_content_if_is_file (ssh_key_value )
31483169
3149- if no_wait :
3150- return _update_linux_access_extension (cmd , vm_instance , resource_group_name ,
3151- protected_settings , no_wait )
31523170 poller = _update_linux_access_extension (cmd , vm_instance , resource_group_name ,
3153- protected_settings )
3154- return ExtensionUpdateLongRunningOperation (cmd .cli_ctx , 'setting user' , 'done' )(poller )
3171+ protected_settings , no_wait )
3172+ return LongRunningOperation (cmd .cli_ctx , 'setting user' , 'done' )(poller )
31553173
31563174
3157- def _reset_windows_admin (cmd , vm_instance , resource_group_name , username , password , no_wait = False ):
3175+ def _reset_windows_admin_aaz (cmd , vm_instance , resource_group_name , username , password , no_wait = False ):
31583176 '''Update the password. You can only change the password. Adding a new user is not supported. '''
3159- client = _compute_client_factory (cmd .cli_ctx )
3160- VirtualMachineExtension = cmd .get_models ('VirtualMachineExtension' )
3177+ from .operations .vm_extension import VMExtensionCreate
31613178
3162- publisher , version , auto_upgrade = _get_access_extension_upgrade_info (
3163- vm_instance .resources , _WINDOWS_ACCESS_EXT )
3179+ publisher , version , auto_upgrade = _get_access_extension_upgrade_info_aaz (
3180+ vm_instance .get ( ' resources' , []) , _WINDOWS_ACCESS_EXT )
31643181 # pylint: disable=no-member
3165- instance_name = _get_extension_instance_name (vm_instance .instance_view ,
3166- publisher ,
3167- _WINDOWS_ACCESS_EXT ,
3168- _ACCESS_EXT_HANDLER_NAME )
3169-
3170- ext = VirtualMachineExtension (location = vm_instance .location , # pylint: disable=no-member
3171- publisher = publisher ,
3172- type_properties_type = _WINDOWS_ACCESS_EXT ,
3173- protected_settings = {'Password' : password },
3174- type_handler_version = version ,
3175- settings = {'UserName' : username },
3176- auto_upgrade_minor_version = auto_upgrade )
3182+ instance_name = _get_extension_instance_name_aaz (vm_instance ['instanceView' ],
3183+ publisher ,
3184+ _WINDOWS_ACCESS_EXT ,
3185+ _ACCESS_EXT_HANDLER_NAME )
31773186
3178- if no_wait :
3179- return sdk_no_wait (no_wait , client .virtual_machine_extensions .create_or_update ,
3180- resource_group_name , vm_instance .name , instance_name , ext )
3181- poller = client .virtual_machine_extensions .begin_create_or_update (
3182- resource_group_name , vm_instance .name , instance_name , ext )
3183- return ExtensionUpdateLongRunningOperation (cmd .cli_ctx , 'resetting admin' , 'done' )(poller )
3187+ poller = VMExtensionCreate (cli_ctx = cmd .cli_ctx )(command_args = {
3188+ 'location' : vm_instance ['location' ],
3189+ 'resource_group' : resource_group_name ,
3190+ 'vm_name' : vm_instance ['name' ],
3191+ 'vm_extension_name' : instance_name ,
3192+ 'publisher' : publisher ,
3193+ 'type' : _WINDOWS_ACCESS_EXT ,
3194+ 'type_handler_version' : version ,
3195+ 'auto_upgrade_minor_version' : auto_upgrade ,
3196+ 'settings' : {'UserName' : username },
3197+ 'protected_settings' : {'Password' : password },
3198+ 'no_wait' : no_wait
3199+ })
3200+
3201+ return LongRunningOperation (cmd .cli_ctx , 'resetting admin' , 'done' )(poller )
31843202
31853203
31863204def set_user (cmd , resource_group_name , vm_name , username , password = None , ssh_key_value = None ,
31873205 no_wait = False ):
3188- vm = get_vm (cmd , resource_group_name , vm_name , 'instanceView' )
3189- if _is_linux_os (vm ):
3206+ from .operations .vm import VMShow
3207+ vm = VMShow (cli_ctx = cmd .cli_ctx )(command_args = {
3208+ 'resource_group' : resource_group_name ,
3209+ 'vm_name' : vm_name ,
3210+ 'expand' : 'instanceView'
3211+ })
3212+ if _is_linux_os_aaz (vm ):
31903213 return _set_linux_user (cmd , vm , resource_group_name , username , password , ssh_key_value , no_wait )
31913214 if ssh_key_value :
31923215 raise CLIError ('SSH key is not appliable on a Windows VM' )
3193- return _reset_windows_admin (cmd , vm , resource_group_name , username , password , no_wait )
3216+ return _reset_windows_admin_aaz (cmd , vm , resource_group_name , username , password , no_wait )
31943217
31953218
31963219def delete_user (cmd , resource_group_name , vm_name , username , no_wait = False ):
3197- vm = get_vm (cmd , resource_group_name , vm_name , 'instanceView' )
3198- if not _is_linux_os (vm ):
3220+ from .operations .vm import VMShow
3221+ vm = VMShow (cli_ctx = cmd .cli_ctx )(command_args = {
3222+ 'resource_group' : resource_group_name ,
3223+ 'vm_name' : vm_name ,
3224+ 'expand' : 'instanceView'
3225+ })
3226+ if not _is_linux_os_aaz (vm ):
31993227 raise CLIError ('Deleting a user is not supported on Windows VM' )
3200- if no_wait :
3201- return _update_linux_access_extension (cmd , vm , resource_group_name ,
3202- {'remove_user' : username }, no_wait )
3228+
32033229 poller = _update_linux_access_extension (cmd , vm , resource_group_name ,
3204- {'remove_user' : username })
3205- return ExtensionUpdateLongRunningOperation (cmd .cli_ctx , 'deleting user' , 'done' )(poller )
3230+ {'remove_user' : username }, no_wait )
3231+ return LongRunningOperation (cmd .cli_ctx , 'deleting user' , 'done' )(poller )
32063232
32073233
32083234def reset_linux_ssh (cmd , resource_group_name , vm_name , no_wait = False ):
3209- vm = get_vm (cmd , resource_group_name , vm_name , 'instanceView' )
3210- if not _is_linux_os (vm ):
3235+ from .operations .vm import VMShow
3236+ vm = VMShow (cli_ctx = cmd .cli_ctx )(command_args = {
3237+ 'resource_group' : resource_group_name ,
3238+ 'vm_name' : vm_name ,
3239+ 'expand' : 'instanceView'
3240+ })
3241+ if not _is_linux_os_aaz (vm ):
32113242 raise CLIError ('Resetting SSH is not supported in Windows VM' )
3212- if no_wait :
3213- return _update_linux_access_extension (cmd , vm , resource_group_name ,
3214- {'reset_ssh' : True }, no_wait )
32153243 poller = _update_linux_access_extension (cmd , vm , resource_group_name ,
3216- {'reset_ssh' : True })
3217- return ExtensionUpdateLongRunningOperation (cmd .cli_ctx , 'resetting SSH' , 'done' )(poller )
3244+ {'reset_ssh' : True }, no_wait )
3245+
3246+ return LongRunningOperation (cmd .cli_ctx , 'resetting SSH' , 'done' )(poller )
32183247# endregion
32193248
32203249
0 commit comments