Skip to content

Commit 94190a1

Browse files
committed
migrate
1 parent f7c9331 commit 94190a1

1 file changed

Lines changed: 90 additions & 48 deletions

File tree

  • src/azure-cli/azure/cli/command_modules/vm

src/azure-cli/azure/cli/command_modules/vm/custom.py

Lines changed: 90 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
134152
def _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
31113129
def _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

31373158
def _set_linux_user(cmd, vm_instance, resource_group_name, username,
@@ -3149,72 +3170,93 @@ def _set_linux_user(cmd, vm_instance, resource_group_name, username,
31493170
if no_wait:
31503171
return _update_linux_access_extension(cmd, vm_instance, resource_group_name,
31513172
protected_settings, no_wait)
3173+
31523174
poller = _update_linux_access_extension(cmd, vm_instance, resource_group_name,
31533175
protected_settings)
3154-
return ExtensionUpdateLongRunningOperation(cmd.cli_ctx, 'setting user', 'done')(poller)
3176+
return LongRunningOperation(cmd.cli_ctx, 'setting user', 'done')(poller)
31553177

31563178

31573179
def _reset_windows_admin(cmd, vm_instance, resource_group_name, username, password, no_wait=False):
31583180
'''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')
3181+
from .operations.vm_extension import VMExtensionCreate
31613182

3162-
publisher, version, auto_upgrade = _get_access_extension_upgrade_info(
3163-
vm_instance.resources, _WINDOWS_ACCESS_EXT)
3183+
publisher, version, auto_upgrade = _get_access_extension_upgrade_info_aaz(
3184+
vm_instance.get('resources', []), _WINDOWS_ACCESS_EXT)
31643185
# 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)
3186+
instance_name = _get_extension_instance_name_aaz(vm_instance['instanceView'],
3187+
publisher,
3188+
_WINDOWS_ACCESS_EXT,
3189+
_ACCESS_EXT_HANDLER_NAME)
3190+
3191+
poller = VMExtensionCreate(cli_ctx=cmd.cli_ctx)(command_args={
3192+
'location': vm_instance['location'],
3193+
'resource_group': resource_group_name,
3194+
'vm_name': vm_instance['name'],
3195+
'vm_extension_name': instance_name,
3196+
'publisher': publisher,
3197+
'type': _WINDOWS_ACCESS_EXT,
3198+
'type_handler_version': version,
3199+
'auto_upgrade_minor_version': auto_upgrade,
3200+
'settings': {'UserName': username},
3201+
'protected_settings': {'Password': password},
3202+
'no_wait': no_wait
3203+
})
31773204

31783205
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)
3206+
return poller
3207+
3208+
return LongRunningOperation(cmd.cli_ctx, 'resetting admin', 'done')(poller)
31843209

31853210

31863211
def set_user(cmd, resource_group_name, vm_name, username, password=None, ssh_key_value=None,
31873212
no_wait=False):
3188-
vm = get_vm(cmd, resource_group_name, vm_name, 'instanceView')
3189-
if _is_linux_os(vm):
3213+
from .operations.vm import VMShow
3214+
vm = VMShow(cli_ctx=cmd.cli_ctx)(command_args={
3215+
'resource_group': resource_group_name,
3216+
'vm_name': vm_name,
3217+
'expand': 'instanceView'
3218+
})
3219+
if _is_linux_os_aaz(vm):
31903220
return _set_linux_user(cmd, vm, resource_group_name, username, password, ssh_key_value, no_wait)
31913221
if ssh_key_value:
31923222
raise CLIError('SSH key is not appliable on a Windows VM')
31933223
return _reset_windows_admin(cmd, vm, resource_group_name, username, password, no_wait)
31943224

31953225

31963226
def 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):
3227+
from .operations.vm import VMShow
3228+
vm = VMShow(cli_ctx=cmd.cli_ctx)(command_args={
3229+
'resource_group': resource_group_name,
3230+
'vm_name': vm_name,
3231+
'expand': 'instanceView'
3232+
})
3233+
if not _is_linux_os_aaz(vm):
31993234
raise CLIError('Deleting a user is not supported on Windows VM')
32003235
if no_wait:
32013236
return _update_linux_access_extension(cmd, vm, resource_group_name,
32023237
{'remove_user': username}, no_wait)
3238+
32033239
poller = _update_linux_access_extension(cmd, vm, resource_group_name,
32043240
{'remove_user': username})
3205-
return ExtensionUpdateLongRunningOperation(cmd.cli_ctx, 'deleting user', 'done')(poller)
3241+
return LongRunningOperation(cmd.cli_ctx, 'deleting user', 'done')(poller)
32063242

32073243

32083244
def 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):
3245+
from .operations.vm import VMShow
3246+
vm = VMShow(cli_ctx=cmd.cli_ctx)(command_args={
3247+
'resource_group': resource_group_name,
3248+
'vm_name': vm_name,
3249+
'expand': 'instanceView'
3250+
})
3251+
if not _is_linux_os_aaz(vm):
32113252
raise CLIError('Resetting SSH is not supported in Windows VM')
32123253
if no_wait:
32133254
return _update_linux_access_extension(cmd, vm, resource_group_name,
32143255
{'reset_ssh': True}, no_wait)
3256+
32153257
poller = _update_linux_access_extension(cmd, vm, resource_group_name,
32163258
{'reset_ssh': True})
3217-
return ExtensionUpdateLongRunningOperation(cmd.cli_ctx, 'resetting SSH', 'done')(poller)
3259+
return LongRunningOperation(cmd.cli_ctx, 'resetting SSH', 'done')(poller)
32183260
# endregion
32193261

32203262

0 commit comments

Comments
 (0)