Skip to content

Commit 89eb9c9

Browse files
committed
Migrate code
1 parent b7861d2 commit 89eb9c9

4 files changed

Lines changed: 66 additions & 8 deletions

File tree

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
validate_asg_names_or_ids, validate_keyvault, _validate_proximity_placement_group,
2525
validate_vm_name_for_monitor_metrics)
2626

27-
from azure.cli.command_modules.vm._vm_utils import MSI_LOCAL_ID
27+
from azure.cli.command_modules.vm._vm_utils import MSI_LOCAL_ID, CachingTypes
2828
from azure.cli.command_modules.vm._image_builder import ScriptType
2929

3030
from azure.cli.command_modules.monitor.validators import validate_metric_dimension
@@ -37,7 +37,7 @@ def load_arguments(self, _):
3737
# Model imports
3838
DiskStorageAccountTypes = self.get_models('DiskStorageAccountTypes', operation_group='disks')
3939
SnapshotStorageAccountTypes = self.get_models('SnapshotStorageAccountTypes', operation_group='snapshots')
40-
UpgradeMode, CachingTypes, OperatingSystemTypes = self.get_models('UpgradeMode', 'CachingTypes', 'OperatingSystemTypes')
40+
UpgradeMode, OperatingSystemTypes = self.get_models('UpgradeMode', 'OperatingSystemTypes')
4141
HyperVGenerationTypes = self.get_models('HyperVGenerationTypes')
4242
DedicatedHostLicenseTypes = self.get_models('DedicatedHostLicenseTypes')
4343
OrchestrationServiceNames, OrchestrationServiceStateAction = self.get_models('OrchestrationServiceNames', 'OrchestrationServiceStateAction', operation_group='virtual_machine_scale_sets')

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

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2161,27 +2161,33 @@ def process_image_create_namespace(cmd, namespace):
21612161
'virtualMachines', 'Microsoft.Compute')
21622162
res = parse_resource_id(res_id)
21632163
if res['type'] == 'virtualMachines':
2164-
compute_client = _compute_client_factory(cmd.cli_ctx, subscription_id=res['subscription'])
2165-
vm_info = compute_client.virtual_machines.get(res['resource_group'], res['name'])
2164+
from .operations.vm import VMShow
2165+
command_args = {
2166+
'subscription': res['subscription'],
2167+
'resource_group': res['resource_group'],
2168+
'vm_name': res['name']
2169+
}
2170+
vm_info = VMShow(cli_ctx=cmd.cli_ctx)(command_args=command_args)
21662171
source_from_vm = True
21672172
except ResourceNotFoundError:
21682173
pass
21692174

21702175
if source_from_vm:
21712176
# pylint: disable=no-member
2172-
namespace.os_type = vm_info.storage_profile.os_disk.os_type
2177+
namespace.os_type = vm_info.get('storageProfile', {}).get('osDisk', {}).get('osType', '')
21732178
namespace.source_virtual_machine = res_id
21742179
if namespace.data_disk_sources:
21752180
raise CLIError("'--data-disk-sources' is not allowed when capturing "
21762181
"images from virtual machines")
21772182
else:
2178-
namespace.os_blob_uri, namespace.os_disk, namespace.os_snapshot, _, _ = _figure_out_storage_source(cmd.cli_ctx, namespace.resource_group_name, namespace.source) # pylint: disable=line-too-long
2183+
namespace.os_blob_uri, namespace.os_disk, namespace.os_snapshot, _, _ = \
2184+
_figure_out_storage_source_by_aaz(cmd.cli_ctx, namespace.resource_group_name, namespace.source)
21792185
namespace.data_blob_uris = []
21802186
namespace.data_disks = []
21812187
namespace.data_snapshots = []
21822188
if namespace.data_disk_sources:
21832189
for data_disk_source in namespace.data_disk_sources:
2184-
source_blob_uri, source_disk, source_snapshot, _, _ = _figure_out_storage_source(
2190+
source_blob_uri, source_disk, source_snapshot, _, _ = _figure_out_storage_source_by_aaz(
21852191
cmd.cli_ctx, namespace.resource_group_name, data_disk_source)
21862192
if source_blob_uri:
21872193
namespace.data_blob_uris.append(source_blob_uri)
@@ -2218,6 +2224,30 @@ def _figure_out_storage_source(cli_ctx, resource_group_name, source):
22182224
return (source_blob_uri, source_disk, source_snapshot, source_restore_point, source_info)
22192225

22202226

2227+
def _figure_out_storage_source_by_aaz(cli_ctx, resource_group_name, source):
2228+
source_blob_uri = None
2229+
source_disk = None
2230+
source_snapshot = None
2231+
source_info = None
2232+
source_restore_point = None
2233+
if urlparse(source).scheme: # a uri?
2234+
source_blob_uri = source
2235+
elif '/disks/' in source.lower():
2236+
source_disk = source
2237+
elif '/snapshots/' in source.lower():
2238+
source_snapshot = source
2239+
elif '/restorepoints/' in source.lower():
2240+
source_restore_point = source
2241+
else:
2242+
source_info, is_snapshot = _get_disk_or_snapshot_info_by_aaz(cli_ctx, resource_group_name, source)
2243+
if is_snapshot:
2244+
source_snapshot = source_info.get('id')
2245+
else:
2246+
source_disk = source_info.get('id')
2247+
2248+
return (source_blob_uri, source_disk, source_snapshot, source_restore_point, source_info)
2249+
2250+
22212251
def _get_disk_or_snapshot_info(cli_ctx, resource_group_name, source):
22222252
compute_client = _compute_client_factory(cli_ctx)
22232253
is_snapshot = True
@@ -2231,6 +2261,28 @@ def _get_disk_or_snapshot_info(cli_ctx, resource_group_name, source):
22312261
return info, is_snapshot
22322262

22332263

2264+
def _get_disk_or_snapshot_info_by_aaz(cli_ctx, resource_group_name, source):
2265+
from .aaz.latest.snapshot import Show as SnapshotShow
2266+
from .aaz.latest.disk import Show as DiskShow
2267+
is_snapshot = True
2268+
2269+
try:
2270+
command_args = {
2271+
'resource_group': resource_group_name,
2272+
'snapshot_name': source
2273+
}
2274+
info = SnapshotShow(cli_ctx=cli_ctx)(command_args=command_args)
2275+
except ResourceNotFoundError:
2276+
command_args = {
2277+
'resource_group': resource_group_name,
2278+
'disk_name': source
2279+
}
2280+
is_snapshot = False
2281+
info = DiskShow(cli_ctx=cli_ctx)(command_args=command_args)
2282+
2283+
return info, is_snapshot
2284+
2285+
22342286
def process_disk_encryption_namespace(cmd, namespace):
22352287
namespace.disk_encryption_keyvault = _get_resource_id(cmd.cli_ctx, namespace.disk_encryption_keyvault,
22362288
namespace.resource_group_name,

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,12 @@ class VMGuestPatchClassificationLinux(Enum):
805805
SECURITY = 'Security'
806806

807807

808+
class CachingTypes(Enum):
809+
NONE = 'None'
810+
READ_ONLY = 'ReadOnly'
811+
READ_WRITE = 'ReadWrite'
812+
813+
808814
class DiskCreateOptionTypes(Enum):
809815
ATTACH = 'Attach'
810816
COPY = 'Copy'

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ def load_command_table(self, _):
221221
self.command_table['disk-encryption-set identity remove'] = DiskEncryptionSetIdentityRemove(loader=self)
222222
g.custom_show_command('show', 'show_disk_encryption_set_identity')
223223

224-
with self.command_group('image', compute_image_sdk) as g:
224+
with self.command_group('image') as g:
225225
g.custom_command('create', 'create_image', validator=process_image_create_namespace)
226226

227227
with self.command_group('image builder', image_builder_image_templates_sdk, custom_command_type=image_builder_custom) as g:

0 commit comments

Comments
 (0)