Skip to content

Commit d7af431

Browse files
committed
migrate to aaz
1 parent f7c9331 commit d7af431

File tree

1 file changed

+92
-63
lines changed
  • src/azure-cli/azure/cli/command_modules/vm

1 file changed

+92
-63
lines changed

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

Lines changed: 92 additions & 63 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,
@@ -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

31863204
def 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

31963219
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):
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

32083234
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):
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

Comments
 (0)