Skip to content

Commit b09a45c

Browse files
committed
Migrated create_managed_disk
1 parent fc7894e commit b09a45c

File tree

2 files changed

+48
-9
lines changed

2 files changed

+48
-9
lines changed

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,3 +323,36 @@ def _get_latest_image_version(cli_ctx, location, publisher, offer, sku, edge_zon
323323
if not top_one:
324324
raise InvalidArgumentValueError("Can't resolve the version of '{}:{}:{}'".format(publisher, offer, sku))
325325
return top_one[0].name
326+
327+
328+
def _get_latest_image_version_by_aaz(cli_ctx, location, publisher, offer, sku, edge_zone=None):
329+
from azure.cli.core.azclierror import InvalidArgumentValueError
330+
if edge_zone is not None:
331+
from .aaz.latest.vm.image.edge_zone import List as VmImageEdgeZoneList
332+
command_args = {
333+
'edge_zone': edge_zone,
334+
'location': location,
335+
'offer': offer,
336+
'publisher': publisher,
337+
'sku': sku,
338+
'orderby': 'name desc',
339+
'top': 1,
340+
}
341+
top_one = VmImageEdgeZoneList(cli_ctx=cli_ctx)(command_args=command_args)
342+
if not top_one:
343+
raise InvalidArgumentValueError("Can't resolve the version of '{}:{}:{}:{}'"
344+
.format(publisher, offer, sku, edge_zone))
345+
else:
346+
from .aaz.latest.vm.image import List as VmImageList
347+
command_args = {
348+
'location': location,
349+
'offer': offer,
350+
'publisher': publisher,
351+
'sku': sku,
352+
'orderby': 'name desc',
353+
'top': 1,
354+
}
355+
top_one = VmImageList(cli_ctx=cli_ctx)(command_args=command_args)
356+
if not top_one:
357+
raise InvalidArgumentValueError("Can't resolve the version of '{}:{}:{}'".format(publisher, offer, sku))
358+
return top_one[0].get('name')

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
from ._vm_diagnostics_templates import get_default_diag_config
4343

4444
from ._actions import (load_images_from_aliases_doc, load_extension_images_thru_services,
45-
load_images_thru_services, _get_latest_image_version)
45+
load_images_thru_services, _get_latest_image_version, _get_latest_image_version_by_aaz)
4646
from ._client_factory import (_compute_client_factory, cf_vm_image_term)
4747

4848
from .aaz.latest.vm.disk import AttachDetachDataDisk
@@ -485,7 +485,7 @@ def create_managed_disk(cmd, resource_group_name, disk_name, location=None, # p
485485
if len(terms) == 4: # URN
486486
disk_publisher, disk_offer, disk_sku, disk_version = terms[0], terms[1], terms[2], terms[3]
487487
if disk_version.lower() == 'latest':
488-
disk_version = _get_latest_image_version(cmd.cli_ctx, location, disk_publisher, disk_offer,
488+
disk_version = _get_latest_image_version_by_aaz(cmd.cli_ctx, location, disk_publisher, disk_offer,
489489
disk_sku)
490490
else: # error
491491
raise CLIError('usage error: --image-reference should be ID or URN (publisher:offer:sku:version).')
@@ -495,14 +495,20 @@ def create_managed_disk(cmd, resource_group_name, disk_name, location=None, # p
495495
disk_publisher, disk_offer, disk_sku, disk_version = \
496496
terms['child_name_1'], terms['child_name_3'], terms['child_name_4'], terms['child_name_5']
497497

498-
client = _compute_client_factory(cmd.cli_ctx)
499-
response = client.virtual_machine_images.get(location=location, publisher_name=disk_publisher,
500-
offer=disk_offer, skus=disk_sku, version=disk_version)
498+
from .aaz.latest.vm.image import Show as VmImageShow
499+
command_args = {
500+
'location': location,
501+
'offer': disk_offer,
502+
'publisher': disk_publisher,
503+
'sku': disk_sku,
504+
'version': disk_version,
505+
}
506+
response = VmImageShow(cli_ctx=cmd.cli_ctx)(command_args=command_args)
501507

502-
if hasattr(response, 'hyper_v_generation'):
503-
if response.hyper_v_generation == 'V1':
508+
if response.get('hyper_v_generation'):
509+
if response.get('hyper_v_generation') == 'V1':
504510
logger.warning(UPGRADE_SECURITY_HINT)
505-
elif response.hyper_v_generation == 'V2':
511+
elif response.get('hyper_v_generation') == 'V2':
506512
# set default value of hyper_v_generation
507513
if hyper_v_generation == 'V1':
508514
hyper_v_generation = 'V2'
@@ -513,7 +519,7 @@ def create_managed_disk(cmd, resource_group_name, disk_name, location=None, # p
513519
logger.warning(UPGRADE_SECURITY_HINT)
514520

515521
# image_reference is an ID now
516-
image_reference = {'id': response.id}
522+
image_reference = {'id': response.get('id')}
517523
if image_reference_lun is not None:
518524
image_reference['lun'] = image_reference_lun
519525

0 commit comments

Comments
 (0)