From 2ddee114a1d812fe9dab3a6035c093e2dfa10bdf Mon Sep 17 00:00:00 2001 From: william Date: Wed, 29 Jul 2026 09:14:03 +0800 Subject: [PATCH 1/6] Generate interconnect block aaz code --- .../azext_interconnect_block/__init__.py | 42 ++ .../azext_interconnect_block/_help.py | 11 + .../azext_interconnect_block/_params.py | 13 + .../azext_interconnect_block/aaz/__init__.py | 6 + .../aaz/latest/__init__.py | 10 + .../latest/interconnect_block/__cmd_group.py | 23 + .../aaz/latest/interconnect_block/__init__.py | 17 + .../aaz/latest/interconnect_block/_create.py | 450 +++++++++++++ .../aaz/latest/interconnect_block/_delete.py | 166 +++++ .../aaz/latest/interconnect_block/_list.py | 530 ++++++++++++++++ .../aaz/latest/interconnect_block/_show.py | 308 +++++++++ .../aaz/latest/interconnect_block/_update.py | 596 ++++++++++++++++++ .../aaz/latest/interconnect_block/_wait.py | 301 +++++++++ .../tests/__init__.py | 6 + .../tests/latest/__init__.py | 6 + 15 files changed, 2485 insertions(+) create mode 100644 src/interconnect-block/azext_interconnect_block/__init__.py create mode 100644 src/interconnect-block/azext_interconnect_block/_help.py create mode 100644 src/interconnect-block/azext_interconnect_block/_params.py create mode 100644 src/interconnect-block/azext_interconnect_block/aaz/__init__.py create mode 100644 src/interconnect-block/azext_interconnect_block/aaz/latest/__init__.py create mode 100644 src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/__cmd_group.py create mode 100644 src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/__init__.py create mode 100644 src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_create.py create mode 100644 src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_delete.py create mode 100644 src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_list.py create mode 100644 src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_show.py create mode 100644 src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_update.py create mode 100644 src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_wait.py create mode 100644 src/interconnect-block/azext_interconnect_block/tests/__init__.py create mode 100644 src/interconnect-block/azext_interconnect_block/tests/latest/__init__.py diff --git a/src/interconnect-block/azext_interconnect_block/__init__.py b/src/interconnect-block/azext_interconnect_block/__init__.py new file mode 100644 index 00000000000..704c5df773f --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/__init__.py @@ -0,0 +1,42 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +from azure.cli.core import AzCommandsLoader +from azext_interconnect_block._help import helps # pylint: disable=unused-import + + +class InterconnectBlockCommandsLoader(AzCommandsLoader): + + def __init__(self, cli_ctx=None): + from azure.cli.core.commands import CliCommandType + custom_command_type = CliCommandType( + operations_tmpl='azext_interconnect_block.custom#{}') + super().__init__(cli_ctx=cli_ctx, + custom_command_type=custom_command_type) + + def load_command_table(self, args): + from azext_interconnect_block.commands import load_command_table + from azure.cli.core.aaz import load_aaz_command_table + try: + from . import aaz + except ImportError: + aaz = None + if aaz: + load_aaz_command_table( + loader=self, + aaz_pkg_name=aaz.__name__, + args=args + ) + load_command_table(self, args) + return self.command_table + + def load_arguments(self, command): + from azext_interconnect_block._params import load_arguments + load_arguments(self, command) + + +COMMAND_LOADER_CLS = InterconnectBlockCommandsLoader diff --git a/src/interconnect-block/azext_interconnect_block/_help.py b/src/interconnect-block/azext_interconnect_block/_help.py new file mode 100644 index 00000000000..126d5d00714 --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/_help.py @@ -0,0 +1,11 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=line-too-long +# pylint: disable=too-many-lines + +from knack.help_files import helps # pylint: disable=unused-import diff --git a/src/interconnect-block/azext_interconnect_block/_params.py b/src/interconnect-block/azext_interconnect_block/_params.py new file mode 100644 index 00000000000..cfcec717c9c --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/_params.py @@ -0,0 +1,13 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + + +def load_arguments(self, _): # pylint: disable=unused-argument + pass diff --git a/src/interconnect-block/azext_interconnect_block/aaz/__init__.py b/src/interconnect-block/azext_interconnect_block/aaz/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/aaz/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/interconnect-block/azext_interconnect_block/aaz/latest/__init__.py b/src/interconnect-block/azext_interconnect_block/aaz/latest/__init__.py new file mode 100644 index 00000000000..f6acc11aa4e --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/aaz/latest/__init__.py @@ -0,0 +1,10 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + diff --git a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/__cmd_group.py b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/__cmd_group.py new file mode 100644 index 00000000000..fdf72d0d450 --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "interconnect-block", +) +class __CMDGroup(AAZCommandGroup): + """Manage Interconnect Block + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/__init__.py b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/__init__.py new file mode 100644 index 00000000000..db73033039b --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/__init__.py @@ -0,0 +1,17 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * +from ._wait import * diff --git a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_create.py b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_create.py new file mode 100644 index 00000000000..19f28eb8dfc --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_create.py @@ -0,0 +1,450 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "interconnect-block create", +) +class Create(AAZCommand): + """Create an Interconnect Block. When updating an Interconnect Block, only tags and sku-capacity may be modified. + + :example: Creates a new InterconnectBlock resource. + az interconnect-block create --name training-icb-001 --resource-group ai-training-rg --location eastus --zones 1 --sku-name Standard_ND128isr_GB300_v6 --sku-capacity 36 --interconnect-group-id "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/network-rg/providers/Microsoft.Network/interconnectGroups/training-ig" --tags Environment=Production Workload=AI-Training CostCenter=ML-Engineering + """ + + _aaz_info = { + "version": "2026-03-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/interconnectblocks/{}", "2026-03-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.interconnect_block_name = AAZStrArg( + options=["-n", "--name", "--interconnect-block-name"], + help="The name of the Interconnect Block.", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "InterconnectGroup" + + _args_schema = cls._args_schema + _args_schema.interconnect_group_id = AAZStrArg( + options=["--group-id", "--interconnect-group-id"], + arg_group="InterconnectGroup", + help="The ARM resource id in the form of /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/...", + ) + + # define Arg Group "Placement" + + _args_schema = cls._args_schema + _args_schema.placement_exclude_zones = AAZListArg( + options=["--placement-exclude-zones"], + arg_group="Placement", + help="This property supplements the 'zonePlacementPolicy' property. If 'zonePlacementPolicy' is set to 'Any'/'Auto', availability zone selected by the system must not be present in the list of availability zones passed with 'excludeZones'. If 'excludeZones' is not provided, all availability zones in region will be considered for selection.", + ) + _args_schema.placement_include_zones = AAZListArg( + options=["--placement-include-zones"], + arg_group="Placement", + help="This property supplements the 'zonePlacementPolicy' property. If 'zonePlacementPolicy' is set to 'Any'/'Auto', availability zone selected by the system must be present in the list of availability zones passed with 'includeZones'. If 'includeZones' is not provided, all availability zones in region will be considered for selection.", + ) + _args_schema.zone_placement_policy = AAZStrArg( + options=["--zone-placement-policy"], + arg_group="Placement", + help="Specifies the policy for resource's placement in availability zone. Possible values are: **Any** (used for Virtual Machines), **Auto** (used for Virtual Machine Scale Sets) - An availability zone will be automatically picked by system as part of resource creation.", + enum={"Any": "Any", "Auto": "Auto"}, + ) + + placement_exclude_zones = cls._args_schema.placement_exclude_zones + placement_exclude_zones.Element = AAZStrArg() + + placement_include_zones = cls._args_schema.placement_include_zones + placement_include_zones.Element = AAZStrArg() + + # define Arg Group "Resource" + + _args_schema = cls._args_schema + _args_schema.location = AAZResourceLocationArg( + arg_group="Resource", + help="The geo-location where the resource lives", + required=True, + fmt=AAZResourceLocationArgFormat( + resource_group_arg="resource_group", + ), + ) + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="Resource", + help="Resource tags.", + ) + _args_schema.zones = AAZListArg( + options=["--zones"], + arg_group="Resource", + help="The availability zones.", + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg() + + zones = cls._args_schema.zones + zones.Element = AAZStrArg() + + # define Arg Group "Sku" + + _args_schema = cls._args_schema + _args_schema.sku_capacity = AAZIntArg( + options=["--sku-capacity"], + arg_group="Sku", + help="Specifies the number of virtual machines in the scale set.", + ) + _args_schema.sku_name = AAZStrArg( + options=["--sku-name"], + arg_group="Sku", + help="The sku name.", + ) + _args_schema.sku_tier = AAZStrArg( + options=["--sku-tier"], + arg_group="Sku", + help="Specifies the tier of virtual machines in a scale set.

Possible Values:

**Standard**

**Basic**", + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.InterconnectBlocksCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class InterconnectBlocksCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/interconnectBlocks/{interconnectBlockName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "interconnectBlockName", self.ctx.args.interconnect_block_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("location", AAZStrType, ".location", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("placement", AAZObjectType) + _builder.set_prop("properties", AAZObjectType) + _builder.set_prop("sku", AAZObjectType, ".", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("tags", AAZDictType, ".tags") + _builder.set_prop("zones", AAZListType, ".zones") + + placement = _builder.get(".placement") + if placement is not None: + placement.set_prop("excludeZones", AAZListType, ".placement_exclude_zones") + placement.set_prop("includeZones", AAZListType, ".placement_include_zones") + placement.set_prop("zonePlacementPolicy", AAZStrType, ".zone_placement_policy") + + exclude_zones = _builder.get(".placement.excludeZones") + if exclude_zones is not None: + exclude_zones.set_elements(AAZStrType, ".") + + include_zones = _builder.get(".placement.includeZones") + if include_zones is not None: + include_zones.set_elements(AAZStrType, ".") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("interconnectGroup", AAZObjectType, ".", typ_kwargs={"flags": {"required": True}}) + + interconnect_group = _builder.get(".properties.interconnectGroup") + if interconnect_group is not None: + interconnect_group.set_prop("id", AAZStrType, ".interconnect_group_id") + + sku = _builder.get(".sku") + if sku is not None: + sku.set_prop("capacity", AAZIntType, ".sku_capacity") + sku.set_prop("name", AAZStrType, ".sku_name") + sku.set_prop("tier", AAZStrType, ".sku_tier") + + tags = _builder.get(".tags") + if tags is not None: + tags.set_elements(AAZStrType, ".") + + zones = _builder.get(".zones") + if zones is not None: + zones.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.location = AAZStrType( + flags={"required": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.placement = AAZObjectType() + _schema_on_200_201.properties = AAZObjectType() + _schema_on_200_201.sku = AAZObjectType( + flags={"required": True}, + ) + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.tags = AAZDictType() + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.zones = AAZListType() + + placement = cls._schema_on_200_201.placement + placement.exclude_zones = AAZListType( + serialized_name="excludeZones", + ) + placement.include_zones = AAZListType( + serialized_name="includeZones", + ) + placement.zone_placement_policy = AAZStrType( + serialized_name="zonePlacementPolicy", + ) + + exclude_zones = cls._schema_on_200_201.placement.exclude_zones + exclude_zones.Element = AAZStrType() + + include_zones = cls._schema_on_200_201.placement.include_zones + include_zones.Element = AAZStrType() + + properties = cls._schema_on_200_201.properties + properties.instance_view = AAZObjectType( + serialized_name="instanceView", + flags={"read_only": True}, + ) + properties.interconnect_block_id = AAZStrType( + serialized_name="interconnectBlockId", + flags={"read_only": True}, + ) + properties.interconnect_group = AAZObjectType( + serialized_name="interconnectGroup", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.provisioning_time = AAZStrType( + serialized_name="provisioningTime", + flags={"read_only": True}, + ) + properties.time_created = AAZStrType( + serialized_name="timeCreated", + flags={"read_only": True}, + ) + properties.virtual_machines_associated = AAZListType( + serialized_name="virtualMachinesAssociated", + flags={"read_only": True}, + ) + + instance_view = cls._schema_on_200_201.properties.instance_view + instance_view.current_capacity = AAZIntType( + serialized_name="currentCapacity", + flags={"read_only": True}, + ) + instance_view.statuses = AAZListType( + flags={"read_only": True}, + ) + + statuses = cls._schema_on_200_201.properties.instance_view.statuses + statuses.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.instance_view.statuses.Element + _element.code = AAZStrType() + _element.display_status = AAZStrType( + serialized_name="displayStatus", + ) + _element.level = AAZStrType() + _element.message = AAZStrType() + _element.time = AAZStrType() + + interconnect_group = cls._schema_on_200_201.properties.interconnect_group + interconnect_group.id = AAZStrType() + + virtual_machines_associated = cls._schema_on_200_201.properties.virtual_machines_associated + virtual_machines_associated.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.virtual_machines_associated.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + + sku = cls._schema_on_200_201.sku + sku.capacity = AAZIntType() + sku.name = AAZStrType() + sku.tier = AAZStrType() + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + tags = cls._schema_on_200_201.tags + tags.Element = AAZStrType() + + zones = cls._schema_on_200_201.zones + zones.Element = AAZStrType() + + return cls._schema_on_200_201 + + +class _CreateHelper: + """Helper class for Create""" + + +__all__ = ["Create"] diff --git a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_delete.py b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_delete.py new file mode 100644 index 00000000000..ed65117ea9d --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_delete.py @@ -0,0 +1,166 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "interconnect-block delete", + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete an Interconnect Block. The operation is only allowed when there are no virtual machines or VMSS VM instances associated with the Interconnect Block. + + :example: Delete with confirmation + az interconnect-block delete --name training-icb-001 --resource-group ai-training-rg + + :example: Delete without confirmation + az interconnect-block delete --name training-icb-001 --resource-group ai-training-rg --yes + """ + + _aaz_info = { + "version": "2026-03-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/interconnectblocks/{}", "2026-03-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, None) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.interconnect_block_name = AAZStrArg( + options=["-n", "--name", "--interconnect-block-name"], + help="The name of the Interconnect Block.", + required=True, + id_part="name", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.InterconnectBlocksDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class InterconnectBlocksDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [204]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_204, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/interconnectBlocks/{interconnectBlockName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "interconnectBlockName", self.ctx.args.interconnect_block_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-03-01", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_list.py b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_list.py new file mode 100644 index 00000000000..a789d8c10fd --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_list.py @@ -0,0 +1,530 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "interconnect-block list", +) +class List(AAZCommand): + """List all of the Interconnect Blocks in the subscription. Use the nextLink property in the response to get the next page of Interconnect Blocks. + + :example: List all in subscription + az interconnect-block list + + :example: List by resource group + az interconnect-block list --resource-group ai-training-rg + + :example: List and filter by capacity + az interconnect-block list --resource-group ai-training-rg --query "[?sku.capacity>=36]" + """ + + _aaz_info = { + "version": "2026-03-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/providers/microsoft.compute/interconnectblocks", "2026-03-01"], + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/interconnectblocks", "2026-03-01"], + ] + } + + AZ_SUPPORT_PAGINATION = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg() + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + condition_0 = has_value(self.ctx.subscription_id) and has_value(self.ctx.args.resource_group) is not True + condition_1 = has_value(self.ctx.args.resource_group) and has_value(self.ctx.subscription_id) + if condition_0: + self.InterconnectBlocksListBySubscription(ctx=self.ctx)() + if condition_1: + self.InterconnectBlocksListByResourceGroup(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class InterconnectBlocksListBySubscription(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/interconnectBlocks", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.location = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.placement = AAZObjectType() + _element.properties = AAZObjectType() + _element.sku = AAZObjectType( + flags={"required": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.tags = AAZDictType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + _element.zones = AAZListType() + + placement = cls._schema_on_200.value.Element.placement + placement.exclude_zones = AAZListType( + serialized_name="excludeZones", + ) + placement.include_zones = AAZListType( + serialized_name="includeZones", + ) + placement.zone_placement_policy = AAZStrType( + serialized_name="zonePlacementPolicy", + ) + + exclude_zones = cls._schema_on_200.value.Element.placement.exclude_zones + exclude_zones.Element = AAZStrType() + + include_zones = cls._schema_on_200.value.Element.placement.include_zones + include_zones.Element = AAZStrType() + + properties = cls._schema_on_200.value.Element.properties + properties.instance_view = AAZObjectType( + serialized_name="instanceView", + flags={"read_only": True}, + ) + properties.interconnect_block_id = AAZStrType( + serialized_name="interconnectBlockId", + flags={"read_only": True}, + ) + properties.interconnect_group = AAZObjectType( + serialized_name="interconnectGroup", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.provisioning_time = AAZStrType( + serialized_name="provisioningTime", + flags={"read_only": True}, + ) + properties.time_created = AAZStrType( + serialized_name="timeCreated", + flags={"read_only": True}, + ) + properties.virtual_machines_associated = AAZListType( + serialized_name="virtualMachinesAssociated", + flags={"read_only": True}, + ) + + instance_view = cls._schema_on_200.value.Element.properties.instance_view + instance_view.current_capacity = AAZIntType( + serialized_name="currentCapacity", + flags={"read_only": True}, + ) + instance_view.statuses = AAZListType( + flags={"read_only": True}, + ) + + statuses = cls._schema_on_200.value.Element.properties.instance_view.statuses + statuses.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.instance_view.statuses.Element + _element.code = AAZStrType() + _element.display_status = AAZStrType( + serialized_name="displayStatus", + ) + _element.level = AAZStrType() + _element.message = AAZStrType() + _element.time = AAZStrType() + + interconnect_group = cls._schema_on_200.value.Element.properties.interconnect_group + interconnect_group.id = AAZStrType() + + virtual_machines_associated = cls._schema_on_200.value.Element.properties.virtual_machines_associated + virtual_machines_associated.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.virtual_machines_associated.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + + sku = cls._schema_on_200.value.Element.sku + sku.capacity = AAZIntType() + sku.name = AAZStrType() + sku.tier = AAZStrType() + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + tags = cls._schema_on_200.value.Element.tags + tags.Element = AAZStrType() + + zones = cls._schema_on_200.value.Element.zones + zones.Element = AAZStrType() + + return cls._schema_on_200 + + class InterconnectBlocksListByResourceGroup(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/interconnectBlocks", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.location = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.placement = AAZObjectType() + _element.properties = AAZObjectType() + _element.sku = AAZObjectType( + flags={"required": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.tags = AAZDictType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + _element.zones = AAZListType() + + placement = cls._schema_on_200.value.Element.placement + placement.exclude_zones = AAZListType( + serialized_name="excludeZones", + ) + placement.include_zones = AAZListType( + serialized_name="includeZones", + ) + placement.zone_placement_policy = AAZStrType( + serialized_name="zonePlacementPolicy", + ) + + exclude_zones = cls._schema_on_200.value.Element.placement.exclude_zones + exclude_zones.Element = AAZStrType() + + include_zones = cls._schema_on_200.value.Element.placement.include_zones + include_zones.Element = AAZStrType() + + properties = cls._schema_on_200.value.Element.properties + properties.instance_view = AAZObjectType( + serialized_name="instanceView", + flags={"read_only": True}, + ) + properties.interconnect_block_id = AAZStrType( + serialized_name="interconnectBlockId", + flags={"read_only": True}, + ) + properties.interconnect_group = AAZObjectType( + serialized_name="interconnectGroup", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.provisioning_time = AAZStrType( + serialized_name="provisioningTime", + flags={"read_only": True}, + ) + properties.time_created = AAZStrType( + serialized_name="timeCreated", + flags={"read_only": True}, + ) + properties.virtual_machines_associated = AAZListType( + serialized_name="virtualMachinesAssociated", + flags={"read_only": True}, + ) + + instance_view = cls._schema_on_200.value.Element.properties.instance_view + instance_view.current_capacity = AAZIntType( + serialized_name="currentCapacity", + flags={"read_only": True}, + ) + instance_view.statuses = AAZListType( + flags={"read_only": True}, + ) + + statuses = cls._schema_on_200.value.Element.properties.instance_view.statuses + statuses.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.instance_view.statuses.Element + _element.code = AAZStrType() + _element.display_status = AAZStrType( + serialized_name="displayStatus", + ) + _element.level = AAZStrType() + _element.message = AAZStrType() + _element.time = AAZStrType() + + interconnect_group = cls._schema_on_200.value.Element.properties.interconnect_group + interconnect_group.id = AAZStrType() + + virtual_machines_associated = cls._schema_on_200.value.Element.properties.virtual_machines_associated + virtual_machines_associated.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.virtual_machines_associated.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + + sku = cls._schema_on_200.value.Element.sku + sku.capacity = AAZIntType() + sku.name = AAZStrType() + sku.tier = AAZStrType() + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + tags = cls._schema_on_200.value.Element.tags + tags.Element = AAZStrType() + + zones = cls._schema_on_200.value.Element.zones + zones.Element = AAZStrType() + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_show.py b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_show.py new file mode 100644 index 00000000000..e873341717d --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_show.py @@ -0,0 +1,308 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "interconnect-block show", +) +class Show(AAZCommand): + """Get information about an Interconnect Block. + + :example: Get basic information + az interconnect-block show --name training-icb-001 --resource-group ai-training-rg + + :example: Get with instance view (includes runtime details) + az interconnect-block show --name training-icb-001 --resource-group ai-training-rg --expand instanceView + """ + + _aaz_info = { + "version": "2026-03-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/interconnectblocks/{}", "2026-03-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.interconnect_block_name = AAZStrArg( + options=["-n", "--name", "--interconnect-block-name"], + help="The name of the Interconnect Block.", + required=True, + id_part="name", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.expand = AAZStrArg( + options=["--expand"], + help="The expand expression to apply on the operation. 'instanceView' retrieves a snapshot of the runtime properties of the Interconnect Block that is managed by the platform and can change outside of control plane operations.", + enum={"instanceView": "instanceView"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.InterconnectBlocksGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class InterconnectBlocksGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/interconnectBlocks/{interconnectBlockName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "interconnectBlockName", self.ctx.args.interconnect_block_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$expand", self.ctx.args.expand, + ), + **self.serialize_query_param( + "api-version", "2026-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.location = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.placement = AAZObjectType() + _schema_on_200.properties = AAZObjectType() + _schema_on_200.sku = AAZObjectType( + flags={"required": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.tags = AAZDictType() + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.zones = AAZListType() + + placement = cls._schema_on_200.placement + placement.exclude_zones = AAZListType( + serialized_name="excludeZones", + ) + placement.include_zones = AAZListType( + serialized_name="includeZones", + ) + placement.zone_placement_policy = AAZStrType( + serialized_name="zonePlacementPolicy", + ) + + exclude_zones = cls._schema_on_200.placement.exclude_zones + exclude_zones.Element = AAZStrType() + + include_zones = cls._schema_on_200.placement.include_zones + include_zones.Element = AAZStrType() + + properties = cls._schema_on_200.properties + properties.instance_view = AAZObjectType( + serialized_name="instanceView", + flags={"read_only": True}, + ) + properties.interconnect_block_id = AAZStrType( + serialized_name="interconnectBlockId", + flags={"read_only": True}, + ) + properties.interconnect_group = AAZObjectType( + serialized_name="interconnectGroup", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.provisioning_time = AAZStrType( + serialized_name="provisioningTime", + flags={"read_only": True}, + ) + properties.time_created = AAZStrType( + serialized_name="timeCreated", + flags={"read_only": True}, + ) + properties.virtual_machines_associated = AAZListType( + serialized_name="virtualMachinesAssociated", + flags={"read_only": True}, + ) + + instance_view = cls._schema_on_200.properties.instance_view + instance_view.current_capacity = AAZIntType( + serialized_name="currentCapacity", + flags={"read_only": True}, + ) + instance_view.statuses = AAZListType( + flags={"read_only": True}, + ) + + statuses = cls._schema_on_200.properties.instance_view.statuses + statuses.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.instance_view.statuses.Element + _element.code = AAZStrType() + _element.display_status = AAZStrType( + serialized_name="displayStatus", + ) + _element.level = AAZStrType() + _element.message = AAZStrType() + _element.time = AAZStrType() + + interconnect_group = cls._schema_on_200.properties.interconnect_group + interconnect_group.id = AAZStrType() + + virtual_machines_associated = cls._schema_on_200.properties.virtual_machines_associated + virtual_machines_associated.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.virtual_machines_associated.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + + sku = cls._schema_on_200.sku + sku.capacity = AAZIntType() + sku.name = AAZStrType() + sku.tier = AAZStrType() + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + tags = cls._schema_on_200.tags + tags.Element = AAZStrType() + + zones = cls._schema_on_200.zones + zones.Element = AAZStrType() + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_update.py b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_update.py new file mode 100644 index 00000000000..e79dc4320af --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_update.py @@ -0,0 +1,596 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "interconnect-block update", +) +class Update(AAZCommand): + """Update an Interconnect Block. When updating an Interconnect Block, only tags and sku-capacity may be modified. + + :example: Update scale capacity + az interconnect-block update --name training-icb-001 --resource-group ai-training-rg --sku-capacity 54 + + :example: Update tags + az interconnect-block update --name training-icb-001 --resource-group ai-training-rg --tags Environment=Production Capacity=54-nodes LastScaled=$(date +%Y-%m-%d) + + :example: Update scale with no-wait + az interconnect-block update --name training-icb-001 --resource-group ai-training-rg --sku-capacity 72 --no-wait + """ + + _aaz_info = { + "version": "2026-03-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/interconnectblocks/{}", "2026-03-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.interconnect_block_name = AAZStrArg( + options=["-n", "--name", "--interconnect-block-name"], + help="The name of the Interconnect Block.", + required=True, + id_part="name", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Placement" + + _args_schema = cls._args_schema + _args_schema.placement_exclude_zones = AAZListArg( + options=["--placement-exclude-zones"], + arg_group="Placement", + help="This property supplements the 'zonePlacementPolicy' property. If 'zonePlacementPolicy' is set to 'Any'/'Auto', availability zone selected by the system must not be present in the list of availability zones passed with 'excludeZones'. If 'excludeZones' is not provided, all availability zones in region will be considered for selection.", + nullable=True, + ) + _args_schema.placement_include_zones = AAZListArg( + options=["--placement-include-zones"], + arg_group="Placement", + help="This property supplements the 'zonePlacementPolicy' property. If 'zonePlacementPolicy' is set to 'Any'/'Auto', availability zone selected by the system must be present in the list of availability zones passed with 'includeZones'. If 'includeZones' is not provided, all availability zones in region will be considered for selection.", + nullable=True, + ) + _args_schema.zone_placement_policy = AAZStrArg( + options=["--zone-placement-policy"], + arg_group="Placement", + help="Specifies the policy for resource's placement in availability zone. Possible values are: **Any** (used for Virtual Machines), **Auto** (used for Virtual Machine Scale Sets) - An availability zone will be automatically picked by system as part of resource creation.", + nullable=True, + enum={"Any": "Any", "Auto": "Auto"}, + ) + + placement_exclude_zones = cls._args_schema.placement_exclude_zones + placement_exclude_zones.Element = AAZStrArg( + nullable=True, + ) + + placement_include_zones = cls._args_schema.placement_include_zones + placement_include_zones.Element = AAZStrArg( + nullable=True, + ) + + # define Arg Group "Resource" + + _args_schema = cls._args_schema + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="Resource", + help="Resource tags.", + nullable=True, + ) + _args_schema.zones = AAZListArg( + options=["--zones"], + arg_group="Resource", + help="The availability zones.", + nullable=True, + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg( + nullable=True, + ) + + zones = cls._args_schema.zones + zones.Element = AAZStrArg( + nullable=True, + ) + + # define Arg Group "Sku" + + _args_schema = cls._args_schema + _args_schema.sku_capacity = AAZIntArg( + options=["--sku-capacity"], + arg_group="Sku", + help="Specifies the number of virtual machines in the scale set.", + nullable=True, + ) + _args_schema.sku_name = AAZStrArg( + options=["--sku-name"], + arg_group="Sku", + help="The sku name.", + nullable=True, + ) + _args_schema.sku_tier = AAZStrArg( + options=["--sku-tier"], + arg_group="Sku", + help="Specifies the tier of virtual machines in a scale set.

Possible Values:

**Standard**

**Basic**", + nullable=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.InterconnectBlocksGet(ctx=self.ctx)() + self.pre_instance_update(self.ctx.vars.instance) + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.post_instance_update(self.ctx.vars.instance) + yield self.InterconnectBlocksCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + @register_callback + def pre_instance_update(self, instance): + pass + + @register_callback + def post_instance_update(self, instance): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class InterconnectBlocksGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/interconnectBlocks/{interconnectBlockName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "interconnectBlockName", self.ctx.args.interconnect_block_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _UpdateHelper._build_schema_interconnect_block_read(cls._schema_on_200) + + return cls._schema_on_200 + + class InterconnectBlocksCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/interconnectBlocks/{interconnectBlockName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "interconnectBlockName", self.ctx.args.interconnect_block_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _UpdateHelper._build_schema_interconnect_block_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("placement", AAZObjectType) + _builder.set_prop("sku", AAZObjectType, ".", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("tags", AAZDictType, ".tags") + _builder.set_prop("zones", AAZListType, ".zones") + + placement = _builder.get(".placement") + if placement is not None: + placement.set_prop("excludeZones", AAZListType, ".placement_exclude_zones") + placement.set_prop("includeZones", AAZListType, ".placement_include_zones") + placement.set_prop("zonePlacementPolicy", AAZStrType, ".zone_placement_policy") + + exclude_zones = _builder.get(".placement.excludeZones") + if exclude_zones is not None: + exclude_zones.set_elements(AAZStrType, ".") + + include_zones = _builder.get(".placement.includeZones") + if include_zones is not None: + include_zones.set_elements(AAZStrType, ".") + + sku = _builder.get(".sku") + if sku is not None: + sku.set_prop("capacity", AAZIntType, ".sku_capacity") + sku.set_prop("name", AAZStrType, ".sku_name") + sku.set_prop("tier", AAZStrType, ".sku_tier") + + tags = _builder.get(".tags") + if tags is not None: + tags.set_elements(AAZStrType, ".") + + zones = _builder.get(".zones") + if zones is not None: + zones.set_elements(AAZStrType, ".") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +class _UpdateHelper: + """Helper class for Update""" + + _schema_interconnect_block_read = None + + @classmethod + def _build_schema_interconnect_block_read(cls, _schema): + if cls._schema_interconnect_block_read is not None: + _schema.id = cls._schema_interconnect_block_read.id + _schema.location = cls._schema_interconnect_block_read.location + _schema.name = cls._schema_interconnect_block_read.name + _schema.placement = cls._schema_interconnect_block_read.placement + _schema.properties = cls._schema_interconnect_block_read.properties + _schema.sku = cls._schema_interconnect_block_read.sku + _schema.system_data = cls._schema_interconnect_block_read.system_data + _schema.tags = cls._schema_interconnect_block_read.tags + _schema.type = cls._schema_interconnect_block_read.type + _schema.zones = cls._schema_interconnect_block_read.zones + return + + cls._schema_interconnect_block_read = _schema_interconnect_block_read = AAZObjectType() + + interconnect_block_read = _schema_interconnect_block_read + interconnect_block_read.id = AAZStrType( + flags={"read_only": True}, + ) + interconnect_block_read.location = AAZStrType( + flags={"required": True}, + ) + interconnect_block_read.name = AAZStrType( + flags={"read_only": True}, + ) + interconnect_block_read.placement = AAZObjectType() + interconnect_block_read.properties = AAZObjectType() + interconnect_block_read.sku = AAZObjectType( + flags={"required": True}, + ) + interconnect_block_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + interconnect_block_read.tags = AAZDictType() + interconnect_block_read.type = AAZStrType( + flags={"read_only": True}, + ) + interconnect_block_read.zones = AAZListType() + + placement = _schema_interconnect_block_read.placement + placement.exclude_zones = AAZListType( + serialized_name="excludeZones", + ) + placement.include_zones = AAZListType( + serialized_name="includeZones", + ) + placement.zone_placement_policy = AAZStrType( + serialized_name="zonePlacementPolicy", + ) + + exclude_zones = _schema_interconnect_block_read.placement.exclude_zones + exclude_zones.Element = AAZStrType() + + include_zones = _schema_interconnect_block_read.placement.include_zones + include_zones.Element = AAZStrType() + + properties = _schema_interconnect_block_read.properties + properties.instance_view = AAZObjectType( + serialized_name="instanceView", + flags={"read_only": True}, + ) + properties.interconnect_block_id = AAZStrType( + serialized_name="interconnectBlockId", + flags={"read_only": True}, + ) + properties.interconnect_group = AAZObjectType( + serialized_name="interconnectGroup", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.provisioning_time = AAZStrType( + serialized_name="provisioningTime", + flags={"read_only": True}, + ) + properties.time_created = AAZStrType( + serialized_name="timeCreated", + flags={"read_only": True}, + ) + properties.virtual_machines_associated = AAZListType( + serialized_name="virtualMachinesAssociated", + flags={"read_only": True}, + ) + + instance_view = _schema_interconnect_block_read.properties.instance_view + instance_view.current_capacity = AAZIntType( + serialized_name="currentCapacity", + flags={"read_only": True}, + ) + instance_view.statuses = AAZListType( + flags={"read_only": True}, + ) + + statuses = _schema_interconnect_block_read.properties.instance_view.statuses + statuses.Element = AAZObjectType() + + _element = _schema_interconnect_block_read.properties.instance_view.statuses.Element + _element.code = AAZStrType() + _element.display_status = AAZStrType( + serialized_name="displayStatus", + ) + _element.level = AAZStrType() + _element.message = AAZStrType() + _element.time = AAZStrType() + + interconnect_group = _schema_interconnect_block_read.properties.interconnect_group + interconnect_group.id = AAZStrType() + + virtual_machines_associated = _schema_interconnect_block_read.properties.virtual_machines_associated + virtual_machines_associated.Element = AAZObjectType() + + _element = _schema_interconnect_block_read.properties.virtual_machines_associated.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + + sku = _schema_interconnect_block_read.sku + sku.capacity = AAZIntType() + sku.name = AAZStrType() + sku.tier = AAZStrType() + + system_data = _schema_interconnect_block_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + tags = _schema_interconnect_block_read.tags + tags.Element = AAZStrType() + + zones = _schema_interconnect_block_read.zones + zones.Element = AAZStrType() + + _schema.id = cls._schema_interconnect_block_read.id + _schema.location = cls._schema_interconnect_block_read.location + _schema.name = cls._schema_interconnect_block_read.name + _schema.placement = cls._schema_interconnect_block_read.placement + _schema.properties = cls._schema_interconnect_block_read.properties + _schema.sku = cls._schema_interconnect_block_read.sku + _schema.system_data = cls._schema_interconnect_block_read.system_data + _schema.tags = cls._schema_interconnect_block_read.tags + _schema.type = cls._schema_interconnect_block_read.type + _schema.zones = cls._schema_interconnect_block_read.zones + + +__all__ = ["Update"] diff --git a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_wait.py b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_wait.py new file mode 100644 index 00000000000..cc8e3dfbbda --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_wait.py @@ -0,0 +1,301 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "interconnect-block wait", +) +class Wait(AAZWaitCommand): + """Place the CLI in a waiting state until a condition is met. + """ + + _aaz_info = { + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/interconnectblocks/{}", "2026-03-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.interconnect_block_name = AAZStrArg( + options=["-n", "--name", "--interconnect-block-name"], + help="The name of the Interconnect Block.", + required=True, + id_part="name", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.expand = AAZStrArg( + options=["--expand"], + help="The expand expression to apply on the operation. 'instanceView' retrieves a snapshot of the runtime properties of the Interconnect Block that is managed by the platform and can change outside of control plane operations.", + enum={"instanceView": "instanceView"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.InterconnectBlocksGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=False) + return result + + class InterconnectBlocksGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/interconnectBlocks/{interconnectBlockName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "interconnectBlockName", self.ctx.args.interconnect_block_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "$expand", self.ctx.args.expand, + ), + **self.serialize_query_param( + "api-version", "2026-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.location = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.placement = AAZObjectType() + _schema_on_200.properties = AAZObjectType() + _schema_on_200.sku = AAZObjectType( + flags={"required": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.tags = AAZDictType() + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.zones = AAZListType() + + placement = cls._schema_on_200.placement + placement.exclude_zones = AAZListType( + serialized_name="excludeZones", + ) + placement.include_zones = AAZListType( + serialized_name="includeZones", + ) + placement.zone_placement_policy = AAZStrType( + serialized_name="zonePlacementPolicy", + ) + + exclude_zones = cls._schema_on_200.placement.exclude_zones + exclude_zones.Element = AAZStrType() + + include_zones = cls._schema_on_200.placement.include_zones + include_zones.Element = AAZStrType() + + properties = cls._schema_on_200.properties + properties.instance_view = AAZObjectType( + serialized_name="instanceView", + flags={"read_only": True}, + ) + properties.interconnect_block_id = AAZStrType( + serialized_name="interconnectBlockId", + flags={"read_only": True}, + ) + properties.interconnect_group = AAZObjectType( + serialized_name="interconnectGroup", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.provisioning_time = AAZStrType( + serialized_name="provisioningTime", + flags={"read_only": True}, + ) + properties.time_created = AAZStrType( + serialized_name="timeCreated", + flags={"read_only": True}, + ) + properties.virtual_machines_associated = AAZListType( + serialized_name="virtualMachinesAssociated", + flags={"read_only": True}, + ) + + instance_view = cls._schema_on_200.properties.instance_view + instance_view.current_capacity = AAZIntType( + serialized_name="currentCapacity", + flags={"read_only": True}, + ) + instance_view.statuses = AAZListType( + flags={"read_only": True}, + ) + + statuses = cls._schema_on_200.properties.instance_view.statuses + statuses.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.instance_view.statuses.Element + _element.code = AAZStrType() + _element.display_status = AAZStrType( + serialized_name="displayStatus", + ) + _element.level = AAZStrType() + _element.message = AAZStrType() + _element.time = AAZStrType() + + interconnect_group = cls._schema_on_200.properties.interconnect_group + interconnect_group.id = AAZStrType() + + virtual_machines_associated = cls._schema_on_200.properties.virtual_machines_associated + virtual_machines_associated.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.virtual_machines_associated.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + + sku = cls._schema_on_200.sku + sku.capacity = AAZIntType() + sku.name = AAZStrType() + sku.tier = AAZStrType() + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + tags = cls._schema_on_200.tags + tags.Element = AAZStrType() + + zones = cls._schema_on_200.zones + zones.Element = AAZStrType() + + return cls._schema_on_200 + + +class _WaitHelper: + """Helper class for Wait""" + + +__all__ = ["Wait"] diff --git a/src/interconnect-block/azext_interconnect_block/tests/__init__.py b/src/interconnect-block/azext_interconnect_block/tests/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/tests/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/interconnect-block/azext_interconnect_block/tests/latest/__init__.py b/src/interconnect-block/azext_interconnect_block/tests/latest/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/tests/latest/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- From 0fdf8f0029b2b36f2cda8cde3b0ddecd2ae97eee Mon Sep 17 00:00:00 2001 From: william Date: Wed, 29 Jul 2026 09:51:01 +0800 Subject: [PATCH 2/6] Setup new command --- src/interconnect-block/HISTORY.rst | 8 ++ src/interconnect-block/README.md | 78 +++++++++++++++++++ .../azext_metadata.json | 4 + .../azext_interconnect_block/commands.py | 15 ++++ .../azext_interconnect_block/custom.py | 14 ++++ src/interconnect-block/setup.cfg | 1 + src/interconnect-block/setup.py | 51 ++++++++++++ 7 files changed, 171 insertions(+) create mode 100644 src/interconnect-block/HISTORY.rst create mode 100644 src/interconnect-block/README.md create mode 100644 src/interconnect-block/azext_interconnect_block/azext_metadata.json create mode 100644 src/interconnect-block/azext_interconnect_block/commands.py create mode 100644 src/interconnect-block/azext_interconnect_block/custom.py create mode 100644 src/interconnect-block/setup.cfg create mode 100644 src/interconnect-block/setup.py diff --git a/src/interconnect-block/HISTORY.rst b/src/interconnect-block/HISTORY.rst new file mode 100644 index 00000000000..abbff5a61a7 --- /dev/null +++ b/src/interconnect-block/HISTORY.rst @@ -0,0 +1,8 @@ +.. :changelog: + +Release History +=============== + +1.0.0b1 +++++++ +* Initial release. \ No newline at end of file diff --git a/src/interconnect-block/README.md b/src/interconnect-block/README.md new file mode 100644 index 00000000000..ca1abcca64f --- /dev/null +++ b/src/interconnect-block/README.md @@ -0,0 +1,78 @@ +# Azure CLI InterconnectBlock Extension # +This is an extension to Azure CLI to manage InterconnectBlock resources. + +## How to use ## +Install this extension using the below CLI command +``` +az extension add --name interconnect-block +``` + +### Included Features +#### Interconnect Block: +*Examples:* + +##### Creates a new InterconnectBlock resource. +``` +az interconnect-block create --name training-icb-001 --resource-group ai-training-rg \ + --location eastus --zone 1 --sku-name Standard_ND128isr_GB300_v6 --sku-capacity 36 \ + --interconnect-group-id \ + "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/network-\ + rg/providers/Microsoft.Network/interconnectGroups/training-ig" --tags Environment=Production\ + Workload=AI-Training CostCenter=ML-Engineering +``` + +##### Delete an Interconnect Block. +``` +az interconnect-block delete --name training-icb-001 --resource-group ai-training-rg +``` + +##### Delete without confirmation +``` +az interconnect-block delete --name training-icb-001 --resource-group ai-training-rg --yes +``` + +##### List all in subscription +``` +az interconnect-block list +``` + +##### List by resource group +``` +az interconnect-block list --resource-group ai-training-rg +``` + +##### List and filter by capacity +``` +az interconnect-block list --resource-group ai-training-rg --query "[?sku.capacity>=36]" +``` + +##### Get basic information +``` +az interconnect-block show --name training-icb-001 --resource-group ai-training-rg +``` + +##### Get with instance view (includes runtime details) +``` +az interconnect-block show --name training-icb-001 --resource-group ai-training-rg --expand \ + instanceView +``` + +##### Update scale capacity +``` +az interconnect-block update --name training-icb-001 --resource-group ai-training-rg --sku-\ + capacity 54 +``` + +##### Update tags +``` +az interconnect-block update --name training-icb-001 --resource-group ai-training-rg --tags \ + Environment=Production Capacity=54-nodes LastScaled=$(date +%Y-%m-%d) +``` + +##### Update scale with no-wait +``` +az interconnect-block update --name training-icb-001 --resource-group ai-training-rg --sku-\ + capacity 72 --no-wait +``` + +If you have issues, please give feedback by opening an issue at https://github.com/Azure/azure-cli-extensions/issues. diff --git a/src/interconnect-block/azext_interconnect_block/azext_metadata.json b/src/interconnect-block/azext_interconnect_block/azext_metadata.json new file mode 100644 index 00000000000..71889bb136b --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/azext_metadata.json @@ -0,0 +1,4 @@ +{ + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.75.0" +} \ No newline at end of file diff --git a/src/interconnect-block/azext_interconnect_block/commands.py b/src/interconnect-block/azext_interconnect_block/commands.py new file mode 100644 index 00000000000..b0d842e4993 --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/commands.py @@ -0,0 +1,15 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + +# from azure.cli.core.commands import CliCommandType + + +def load_command_table(self, _): # pylint: disable=unused-argument + pass diff --git a/src/interconnect-block/azext_interconnect_block/custom.py b/src/interconnect-block/azext_interconnect_block/custom.py new file mode 100644 index 00000000000..86df1e48ef5 --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/custom.py @@ -0,0 +1,14 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + +from knack.log import get_logger + + +logger = get_logger(__name__) diff --git a/src/interconnect-block/setup.cfg b/src/interconnect-block/setup.cfg new file mode 100644 index 00000000000..2fdd96e5d39 --- /dev/null +++ b/src/interconnect-block/setup.cfg @@ -0,0 +1 @@ +#setup.cfg \ No newline at end of file diff --git a/src/interconnect-block/setup.py b/src/interconnect-block/setup.py new file mode 100644 index 00000000000..6c0c2ff138f --- /dev/null +++ b/src/interconnect-block/setup.py @@ -0,0 +1,51 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +from codecs import open +from setuptools import setup, find_packages + + +# HISTORY.rst entry. +VERSION = '1.0.0b1' + +# The full list of classifiers is available at +# https://pypi.python.org/pypi?%3Aaction=list_classifiers +CLASSIFIERS = [ + 'Development Status :: 4 - Beta', + 'Intended Audience :: Developers', + 'Intended Audience :: System Administrators', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', + 'License :: OSI Approved :: MIT License', +] + +DEPENDENCIES = [] + +with open('README.md', 'r', encoding='utf-8') as f: + README = f.read() +with open('HISTORY.rst', 'r', encoding='utf-8') as f: + HISTORY = f.read() + +setup( + name='interconnect-block', + version=VERSION, + description='Microsoft Azure Command-Line Tools InterconnectBlock Extension.', + long_description=README + '\n\n' + HISTORY, + license='MIT', + author='Microsoft Corporation', + author_email='azpycli@microsoft.com', + url='https://github.com/Azure/azure-cli-extensions/tree/main/src/interconnect-block', + classifiers=CLASSIFIERS, + packages=find_packages(exclude=["tests"]), + package_data={'azext_interconnect_block': ['azext_metadata.json']}, + install_requires=DEPENDENCIES +) From e3b8b55ceee576515acd670057dfd56233b19bc7 Mon Sep 17 00:00:00 2001 From: william Date: Wed, 29 Jul 2026 15:38:12 +0800 Subject: [PATCH 3/6] Add test case and recording --- .../recordings/test_interconnect_block.yaml | 938 ++++++++++++++++++ .../tests/latest/test_interconnect_block.py | 82 ++ 2 files changed, 1020 insertions(+) create mode 100644 src/interconnect-block/azext_interconnect_block/tests/latest/recordings/test_interconnect_block.yaml create mode 100644 src/interconnect-block/azext_interconnect_block/tests/latest/test_interconnect_block.py diff --git a/src/interconnect-block/azext_interconnect_block/tests/latest/recordings/test_interconnect_block.yaml b/src/interconnect-block/azext_interconnect_block/tests/latest/recordings/test_interconnect_block.yaml new file mode 100644 index 00000000000..ded5eb99e48 --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/tests/latest/recordings/test_interconnect_block.yaml @@ -0,0 +1,938 @@ +interactions: +- request: + body: '{"location": "eastus2euap", "properties": {"scope": "InfiniBand", "subgroupProfile": + {"vmSize": "Standard_ND128isr_GB300_v6", "scope": "VerticalConnect", "size": + 18}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - resource create + Connection: + - keep-alive + Content-Length: + - '167' + Content-Type: + - application/json + ParameterSetName: + - -g -n --resource-type --api-version --location --properties + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig?api-version=2026-01-01 + response: + body: + string: '{"name":"training-ig","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig","etag":"W/\"769d1d03-1f4a-4c8a-98c6-9240651c5781\"","type":"Microsoft.Network/interconnectGroups","location":"eastus2euap","properties":{"provisioningState":"Succeeded","resourceGuid":"9b1fdf1c-a5cd-4f4e-aab8-6afa2bccabb7","scope":"InfiniBand","subgroupProfile":{"vmSize":"Standard_ND128isr_GB300_v6","scope":"VerticalConnect","size":18},"subgroups":[]}}' + headers: + cache-control: + - no-cache + content-length: + - '544' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:37:47 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-arm-service-request-id: + - 4d88e918-a29d-49ae-a456-34c9de81e20f + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=50aa02a5-cef7-4a1c-be56-d7b8a8c363ab/eastus2euap/ec6772e4-1ceb-4cea-9f75-a6c2e08ef85c + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-ms-throttle-levels: + - operationRatePct=0.1, operationConcurrencyPct=0.3, subscriptionWriteRatePct=0.1, + etc + x-ms-throttling-version: + - v2 + x-msedge-ref: + - 'Ref A: 24051EBDC71B42399C4B410C4641394F Ref B: KUL201100111031 Ref C: 2026-07-29T06:37:47Z' + status: + code: 201 + message: '' +- request: + body: '{"location": "eastus2euap", "placement": {"zonePlacementPolicy": "Any"}, + "properties": {"interconnectGroup": {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig"}}, + "sku": {"capacity": 18, "name": "Standard_ND128isr_GB300_v6"}, "tags": {"env": + "test"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block create + Connection: + - keep-alive + Content-Length: + - '369' + Content-Type: + - application/json + ParameterSetName: + - -g -n --location --zone-placement-policy --sku-name --sku-capacity --interconnect-group-id + --tags + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002?api-version=2026-03-01 + response: + body: + string: "{\r\n \"Result\": {\r\n \"name\": \"icb000002\",\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002\",\r\n + \ \"type\": \"Microsoft.Compute/interconnectBlocks\",\r\n \"location\": + \"eastus2euap\",\r\n \"tags\": {\r\n \"env\": \"test\"\r\n },\r\n + \ \"sku\": {\r\n \"name\": \"Standard_ND128isr_GB300_v6\",\r\n \"capacity\": + 18\r\n },\r\n \"placement\": {\r\n \"zonePlacementPolicy\": \"Any\"\r\n + \ },\r\n \"properties\": {\r\n \"interconnectGroup\": {\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig\"\r\n + \ },\r\n \"interconnectBlockId\": \"83f953b8-9a85-4cef-b969-378d49c2ef86\",\r\n + \ \"provisioningState\": \"Creating\"\r\n }\r\n },\r\n \"Id\": 4347597,\r\n + \ \"Status\": \"RanToCompletion\",\r\n \"IsCanceled\": false,\r\n \"IsCompleted\": + true,\r\n \"CreationOptions\": \"None\",\r\n \"IsFaulted\": false\r\n}" + headers: + azure-asyncnotification: + - Enabled + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/EastUS2EUAP/operations/b547ce7b-23df-44ce-bd0d-8a89b58d014c?p=f6830f8f-cf25-42e7-9aa3-89582227249f&api-version=2026-03-01&t=639209038706476040&c=MIIH9TCCBt2gAwIBAgIRAIv6bqY7SwhL3LG8FAICEKMwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UEAxMrQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgRVUyQyBDQSAwMTAeFw0yNjA3MjAxOTMxMjBaFw0yNzAxMTYwMTMxMjBaMEAxPjA8BgNVBAMTNWFzeW5jb3BlcmF0aW9uc2lnbmluZ2NlcnRpZmljYXRlLm1hbmFnZW1lbnQuYXp1cmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA60XvbHp6raPh7-g9YtwjAqWd8-7lJaqYevbtT_chcmJKVGCqalDpcpjm1c7dJ0qttCqzgccGmOaUWRed2_AMGGNlJShP44ilyJABuOT-EaoRkb3opVLWjv64yC_HkTxj2rVcdFdi0mzKyfN-4xe_IO6lAgKTxPPX2W5koMP89MUtB9_TIF0ZmAmHkUJ2buzabC1mfecmfqeNzrWGwtYHEeBWwdbVL2G8hvN1QfQR8Fn7voXnu_aco27ks_o_kTCamRZw9DWQxrZpUKOcr-oF3519-slXDvongk1J2qEhVwm4ubCSPVapkQk-IT3Ta9s8LWV2Xxc4kK3ltL6a3X8HsQIDAQABo4IE8jCCBO4wgZ0GA1UdIASBlTCBkjAMBgorBgEEAYI3ewEBMGYGCisGAQQBgjd7AgIwWDBWBggrBgEFBQcCAjBKHkgAMwAzAGUAMAAxADkAMgAxAC0ANABkADYANAAtADQAZgA4AGMALQBhADAANQA1AC0ANQBiAGQAYQBmAGYAZAA1AGUAMwAzAGQwDAYKKwYBBAGCN3sDAjAMBgorBgEEAYI3ewQCMAwGA1UdEwEB_wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA4GA1UdDwEB_wQEAwIFoDAdBgNVHQ4EFgQUQVGqcnvgw6L4YX39W1RhWMO33mMwHwYDVR0jBBgwFoAUz1EBqulDLGR2G0rwqsDykvhPw7swggHiBgNVHR8EggHZMIIB1TB1oHOgcYZvaHR0cDovL3ByaW1hcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHegdaBzhnFodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9lYXN0dXMyZXVhcC9jcmxzL2NjbWVlYXN0dXMyZXVhcHBraS9jY21lZWFzdHVzMmV1YXBpY2EwMS82My9jdXJyZW50LmNybDBmoGSgYoZgaHR0cDovL2NybC5taWNyb3NvZnQuY29tL2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHugeaB3hnVodHRwOi8vY2NtZWVhc3R1czJldWFwcGtpLmVhc3R1czJldWFwLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWVhc3R1czJldWFwaWNhMDEvNjMvY3VycmVudC5jcmwwggHnBggrBgEFBQcBAQSCAdkwggHVMHgGCCsGAQUFBzAChmxodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwegYIKwYBBQUHMAKGbmh0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NhY2VydHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxL2NlcnQuY2VyMGkGCCsGAQUFBzAChl1odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwcgYIKwYBBQUHMAKGZmh0dHA6Ly9jY21lZWFzdHVzMmV1YXBwa2kuZWFzdHVzMmV1YXAucGtpLmNvcmUud2luZG93cy5uZXQvY2VydGlmaWNhdGVBdXRob3JpdGllcy9jY21lZWFzdHVzMmV1YXBpY2EwMTANBgkqhkiG9w0BAQsFAAOCAQEALvKIKeG4LLHrBV6i-dD6mlha6SyIEw86psNUSqq7gX5SSbyC2LJl0hFPP6eZnQIrAgslagPJmiu8xxyQWfXEKPk7iNcOu63xs7xRhS-vgQ0kFSP5UxHToK0eCIC8X2PnmZ7uEC9lLcC8zR4xTCvuFX0aJc2tjjIiJnrnU8CZ8y8Tp6poCS2KvpJk1Rk2x5p-AouDt-0UkRsaEIlvVM95rgiZ4yKxGKzI02X8n3p__rHt7iaxLW9fSrXQnyDr5zIzVd9UvUEpXgp3vGpV6iDTwYvEwQbg3Lj4sYLyDjKV2rOvDeOPa6rGbGc3mvGUerYDmqPuw4XWatkr7IoISbVPeg&s=5V9r8sjoDqseVfXtUpijegN39QlBkavXEJUJGxisy-mg17twztP8Ln13F50YhWl9qRWgYGFlBTK-e4_-1uJl4723q-3VTQYPlH8Gay_-xV-4dtP5L0PfXoy8ZbY2U7RaSefjPh7OseHAdCqBXbERKnMHOG1AdqLgHP1mgEMhBOGzMHsEuyi7obLn-AWCSjm0TrlxM1nF6-nu0Koj3dETd1GVtQYY7nX_e98jxRvw-nV-FlyKD_l_WAEJsJcuIHzfIfRf6vJnpnGrKKtUUKxQTnwFTyt-gFVHawD0U6jav0oiTiXbLzXJQaEqRwnktYFo4ybX8vxLkAth9_elx8v8Uw&h=F42neehGBEe7OZhpjiJ6HmG_PB0KgJ_-_wsKa-WLkGI + cache-control: + - no-cache + content-length: + - '1011' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:37:50 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=50aa02a5-cef7-4a1c-be56-d7b8a8c363ab/eastus2euap/24b3e37a-d388-48b2-bd61-b7cec2ceb58f + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/PutDeleteInterconnectBlockSubscriptionMaximum;119 + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-ms-throttling-version: + - v2 + x-msedge-ref: + - 'Ref A: 43B94BA329B04BEF97A5D83D3E86F55E Ref B: KUL201100110040 Ref C: 2026-07-29T06:37:49Z' + status: + code: 201 + message: '' +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block create + Connection: + - keep-alive + ParameterSetName: + - -g -n --location --zone-placement-policy --sku-name --sku-capacity --interconnect-group-id + --tags + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/EastUS2EUAP/operations/b547ce7b-23df-44ce-bd0d-8a89b58d014c?p=f6830f8f-cf25-42e7-9aa3-89582227249f&api-version=2026-03-01&t=639209038706476040&c=MIIH9TCCBt2gAwIBAgIRAIv6bqY7SwhL3LG8FAICEKMwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UEAxMrQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgRVUyQyBDQSAwMTAeFw0yNjA3MjAxOTMxMjBaFw0yNzAxMTYwMTMxMjBaMEAxPjA8BgNVBAMTNWFzeW5jb3BlcmF0aW9uc2lnbmluZ2NlcnRpZmljYXRlLm1hbmFnZW1lbnQuYXp1cmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA60XvbHp6raPh7-g9YtwjAqWd8-7lJaqYevbtT_chcmJKVGCqalDpcpjm1c7dJ0qttCqzgccGmOaUWRed2_AMGGNlJShP44ilyJABuOT-EaoRkb3opVLWjv64yC_HkTxj2rVcdFdi0mzKyfN-4xe_IO6lAgKTxPPX2W5koMP89MUtB9_TIF0ZmAmHkUJ2buzabC1mfecmfqeNzrWGwtYHEeBWwdbVL2G8hvN1QfQR8Fn7voXnu_aco27ks_o_kTCamRZw9DWQxrZpUKOcr-oF3519-slXDvongk1J2qEhVwm4ubCSPVapkQk-IT3Ta9s8LWV2Xxc4kK3ltL6a3X8HsQIDAQABo4IE8jCCBO4wgZ0GA1UdIASBlTCBkjAMBgorBgEEAYI3ewEBMGYGCisGAQQBgjd7AgIwWDBWBggrBgEFBQcCAjBKHkgAMwAzAGUAMAAxADkAMgAxAC0ANABkADYANAAtADQAZgA4AGMALQBhADAANQA1AC0ANQBiAGQAYQBmAGYAZAA1AGUAMwAzAGQwDAYKKwYBBAGCN3sDAjAMBgorBgEEAYI3ewQCMAwGA1UdEwEB_wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA4GA1UdDwEB_wQEAwIFoDAdBgNVHQ4EFgQUQVGqcnvgw6L4YX39W1RhWMO33mMwHwYDVR0jBBgwFoAUz1EBqulDLGR2G0rwqsDykvhPw7swggHiBgNVHR8EggHZMIIB1TB1oHOgcYZvaHR0cDovL3ByaW1hcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHegdaBzhnFodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9lYXN0dXMyZXVhcC9jcmxzL2NjbWVlYXN0dXMyZXVhcHBraS9jY21lZWFzdHVzMmV1YXBpY2EwMS82My9jdXJyZW50LmNybDBmoGSgYoZgaHR0cDovL2NybC5taWNyb3NvZnQuY29tL2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHugeaB3hnVodHRwOi8vY2NtZWVhc3R1czJldWFwcGtpLmVhc3R1czJldWFwLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWVhc3R1czJldWFwaWNhMDEvNjMvY3VycmVudC5jcmwwggHnBggrBgEFBQcBAQSCAdkwggHVMHgGCCsGAQUFBzAChmxodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwegYIKwYBBQUHMAKGbmh0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NhY2VydHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxL2NlcnQuY2VyMGkGCCsGAQUFBzAChl1odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwcgYIKwYBBQUHMAKGZmh0dHA6Ly9jY21lZWFzdHVzMmV1YXBwa2kuZWFzdHVzMmV1YXAucGtpLmNvcmUud2luZG93cy5uZXQvY2VydGlmaWNhdGVBdXRob3JpdGllcy9jY21lZWFzdHVzMmV1YXBpY2EwMTANBgkqhkiG9w0BAQsFAAOCAQEALvKIKeG4LLHrBV6i-dD6mlha6SyIEw86psNUSqq7gX5SSbyC2LJl0hFPP6eZnQIrAgslagPJmiu8xxyQWfXEKPk7iNcOu63xs7xRhS-vgQ0kFSP5UxHToK0eCIC8X2PnmZ7uEC9lLcC8zR4xTCvuFX0aJc2tjjIiJnrnU8CZ8y8Tp6poCS2KvpJk1Rk2x5p-AouDt-0UkRsaEIlvVM95rgiZ4yKxGKzI02X8n3p__rHt7iaxLW9fSrXQnyDr5zIzVd9UvUEpXgp3vGpV6iDTwYvEwQbg3Lj4sYLyDjKV2rOvDeOPa6rGbGc3mvGUerYDmqPuw4XWatkr7IoISbVPeg&s=5V9r8sjoDqseVfXtUpijegN39QlBkavXEJUJGxisy-mg17twztP8Ln13F50YhWl9qRWgYGFlBTK-e4_-1uJl4723q-3VTQYPlH8Gay_-xV-4dtP5L0PfXoy8ZbY2U7RaSefjPh7OseHAdCqBXbERKnMHOG1AdqLgHP1mgEMhBOGzMHsEuyi7obLn-AWCSjm0TrlxM1nF6-nu0Koj3dETd1GVtQYY7nX_e98jxRvw-nV-FlyKD_l_WAEJsJcuIHzfIfRf6vJnpnGrKKtUUKxQTnwFTyt-gFVHawD0U6jav0oiTiXbLzXJQaEqRwnktYFo4ybX8vxLkAth9_elx8v8Uw&h=F42neehGBEe7OZhpjiJ6HmG_PB0KgJ_-_wsKa-WLkGI + response: + body: + string: "{\r\n \"startTime\": \"2026-07-29T06:37:50.315218+00:00\",\r\n \"endTime\": + \"2026-07-29T06:37:50.8846346+00:00\",\r\n \"status\": \"Succeeded\",\r\n + \ \"name\": \"b547ce7b-23df-44ce-bd0d-8a89b58d014c\"\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '183' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:37:51 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=50aa02a5-cef7-4a1c-be56-d7b8a8c363ab/southeastasia/b8f7ef1f-aef6-46de-9476-71dc177cd5c6 + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetOperationResource;44,Microsoft.Compute/GetOperationSubscriptionMaximum;14999 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 62DFF6362B8F45F8A2EB14E4D59BCB3C Ref B: KUL201100111034 Ref C: 2026-07-29T06:37:51Z' + status: + code: 200 + message: '' +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block create + Connection: + - keep-alive + ParameterSetName: + - -g -n --location --zone-placement-policy --sku-name --sku-capacity --interconnect-group-id + --tags + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002?api-version=2026-03-01 + response: + body: + string: "{\r\n \"name\": \"icb000002\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002\",\r\n + \ \"type\": \"Microsoft.Compute/interconnectBlocks\",\r\n \"location\": \"eastus2euap\",\r\n + \ \"tags\": {\r\n \"env\": \"test\"\r\n },\r\n \"sku\": {\r\n \"name\": + \"Standard_ND128isr_GB300_v6\",\r\n \"capacity\": 18\r\n },\r\n \"zones\": + [\r\n \"2\"\r\n ],\r\n \"placement\": {\r\n \"zonePlacementPolicy\": + \"Any\"\r\n },\r\n \"properties\": {\r\n \"interconnectGroup\": {\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig\"\r\n + \ },\r\n \"interconnectBlockId\": \"83f953b8-9a85-4cef-b969-378d49c2ef86\",\r\n + \ \"provisioningTime\": \"2026-07-29T06:37:50.8313551+00:00\",\r\n \"provisioningState\": + \"Succeeded\"\r\n }\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '890' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:37:52 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetInterconnectBlockSubscriptionMaximum;268 + x-ms-throttling-version: + - v2 + x-msedge-ref: + - 'Ref A: 8F1D8F95A85946C2BABD226716B5614B Ref B: KUL201100111031 Ref C: 2026-07-29T06:37:52Z' + status: + code: 200 + message: '' +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002?api-version=2026-03-01 + response: + body: + string: "{\r\n \"name\": \"icb000002\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002\",\r\n + \ \"type\": \"Microsoft.Compute/interconnectBlocks\",\r\n \"location\": \"eastus2euap\",\r\n + \ \"tags\": {\r\n \"env\": \"test\"\r\n },\r\n \"sku\": {\r\n \"name\": + \"Standard_ND128isr_GB300_v6\",\r\n \"capacity\": 18\r\n },\r\n \"zones\": + [\r\n \"2\"\r\n ],\r\n \"placement\": {\r\n \"zonePlacementPolicy\": + \"Any\"\r\n },\r\n \"properties\": {\r\n \"interconnectGroup\": {\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig\"\r\n + \ },\r\n \"interconnectBlockId\": \"83f953b8-9a85-4cef-b969-378d49c2ef86\",\r\n + \ \"provisioningTime\": \"2026-07-29T06:37:50.8313551+00:00\",\r\n \"provisioningState\": + \"Succeeded\"\r\n }\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '890' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:37:53 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetInterconnectBlockSubscriptionMaximum;267 + x-ms-throttling-version: + - v2 + x-msedge-ref: + - 'Ref A: 1A529ACA34BF494EBF7C9E052E7531FC Ref B: KUL201100111054 Ref C: 2026-07-29T06:37:54Z' + status: + code: 200 + message: '' +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block show + Connection: + - keep-alive + ParameterSetName: + - -g -n --expand + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002?$expand=instanceView&api-version=2026-03-01 + response: + body: + string: "{\r\n \"name\": \"icb000002\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002\",\r\n + \ \"type\": \"Microsoft.Compute/interconnectBlocks\",\r\n \"location\": \"eastus2euap\",\r\n + \ \"tags\": {\r\n \"env\": \"test\"\r\n },\r\n \"sku\": {\r\n \"name\": + \"Standard_ND128isr_GB300_v6\",\r\n \"capacity\": 18\r\n },\r\n \"zones\": + [\r\n \"2\"\r\n ],\r\n \"placement\": {\r\n \"zonePlacementPolicy\": + \"Any\"\r\n },\r\n \"properties\": {\r\n \"interconnectGroup\": {\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig\"\r\n + \ },\r\n \"interconnectBlockId\": \"83f953b8-9a85-4cef-b969-378d49c2ef86\",\r\n + \ \"provisioningTime\": \"2026-07-29T06:37:50.8313551+00:00\",\r\n \"provisioningState\": + \"Succeeded\",\r\n \"instanceView\": {\r\n \"currentCapacity\": 18,\r\n + \ \"statuses\": [\r\n {\r\n \"code\": \"ProvisioningState/succeeded\",\r\n + \ \"level\": \"Info\",\r\n \"displayStatus\": \"Provisioning + succeeded\",\r\n \"time\": \"2026-07-29T06:37:50.8641415+00:00\"\r\n + \ }\r\n ]\r\n }\r\n }\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '1190' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:37:55 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetInterconnectBlockSubscriptionMaximum;266 + x-ms-throttling-version: + - v2 + x-msedge-ref: + - 'Ref A: E5C0F4947C6841129E9BFB102770B3E5 Ref B: KUL201100111060 Ref C: 2026-07-29T06:37:55Z' + status: + code: 200 + message: '' +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block list + Connection: + - keep-alive + ParameterSetName: + - -g + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks?api-version=2026-03-01 + response: + body: + string: '{"value":[{"name":"icb000002","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CLI_TEST_INTERCONNECT_BLOCK_GFW6TSFOCHHEWOAGD57PLUXOIWUJH2JIQDAS2GJCH6UGJEJ/providers/Microsoft.Compute/interconnectBlocks/icb000002","type":"Microsoft.Compute/interconnectBlocks","location":"eastus2euap","tags":{"env":"test"},"sku":{"name":"Standard_ND128isr_GB300_v6","capacity":18},"zones":["2"],"placement":{"zonePlacementPolicy":"Any"},"properties":{"interconnectGroup":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig"},"interconnectBlockId":"83f953b8-9a85-4cef-b969-378d49c2ef86","provisioningTime":"2026-07-29T06:37:50.8313551+00:00","provisioningState":"Succeeded"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '799' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:37:57 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-original-request-ids: + - 21592c57-719c-463b-b032-a28e4dc073b4 + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetInterconnectBlockSubscriptionMaximum;265 + x-ms-throttling-version: + - v2 + x-msedge-ref: + - 'Ref A: 228F9048AE6740F39DFD43453908F1DF Ref B: KUL201100110025 Ref C: 2026-07-29T06:37:57Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block list + Connection: + - keep-alive + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/interconnectBlocks?api-version=2026-03-01 + response: + body: + string: '{"value":[{"name":"icb000002","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CLI_TEST_INTERCONNECT_BLOCK_GFW6TSFOCHHEWOAGD57PLUXOIWUJH2JIQDAS2GJCH6UGJEJ/providers/Microsoft.Compute/interconnectBlocks/icb000002","type":"Microsoft.Compute/interconnectBlocks","location":"eastus2euap","tags":{"env":"test"},"sku":{"name":"Standard_ND128isr_GB300_v6","capacity":18},"zones":["2"],"placement":{"zonePlacementPolicy":"Any"},"properties":{"interconnectGroup":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig"},"interconnectBlockId":"83f953b8-9a85-4cef-b969-378d49c2ef86","provisioningTime":"2026-07-29T06:37:50.8313551+00:00","provisioningState":"Succeeded"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '799' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:37:59 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-original-request-ids: + - 0d6a4eb0-92b9-4ce7-94a6-3a827725be17 + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetInterconnectBlockSubscriptionMaximum;264 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 5FEAD036A3B3407E8194C39D382A7413 Ref B: KUL201100110023 Ref C: 2026-07-29T06:37:58Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block update + Connection: + - keep-alive + ParameterSetName: + - -g -n --sku-capacity --tags + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002?api-version=2026-03-01 + response: + body: + string: "{\r\n \"name\": \"icb000002\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002\",\r\n + \ \"type\": \"Microsoft.Compute/interconnectBlocks\",\r\n \"location\": \"eastus2euap\",\r\n + \ \"tags\": {\r\n \"env\": \"test\"\r\n },\r\n \"sku\": {\r\n \"name\": + \"Standard_ND128isr_GB300_v6\",\r\n \"capacity\": 18\r\n },\r\n \"zones\": + [\r\n \"2\"\r\n ],\r\n \"placement\": {\r\n \"zonePlacementPolicy\": + \"Any\"\r\n },\r\n \"properties\": {\r\n \"interconnectGroup\": {\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig\"\r\n + \ },\r\n \"interconnectBlockId\": \"83f953b8-9a85-4cef-b969-378d49c2ef86\",\r\n + \ \"provisioningTime\": \"2026-07-29T06:37:50.8313551+00:00\",\r\n \"provisioningState\": + \"Succeeded\"\r\n }\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '890' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:38:00 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetInterconnectBlockSubscriptionMaximum;263 + x-ms-throttling-version: + - v2 + x-msedge-ref: + - 'Ref A: 2B5A056D9185470EB1B3991D7FB99AA6 Ref B: KUL201100110062 Ref C: 2026-07-29T06:38:00Z' + status: + code: 200 + message: '' +- request: + body: '{"location": "eastus2euap", "placement": {"zonePlacementPolicy": "Any"}, + "properties": {"interconnectGroup": {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig"}}, + "sku": {"capacity": 18, "name": "Standard_ND128isr_GB300_v6"}, "tags": {"env": + "prod"}, "zones": ["2"]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block update + Connection: + - keep-alive + Content-Length: + - '385' + Content-Type: + - application/json + ParameterSetName: + - -g -n --sku-capacity --tags + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002?api-version=2026-03-01 + response: + body: + string: "{\r\n \"Result\": {\r\n \"name\": \"icb000002\",\r\n \"id\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002\",\r\n + \ \"type\": \"Microsoft.Compute/interconnectBlocks\",\r\n \"location\": + \"eastus2euap\",\r\n \"tags\": {\r\n \"env\": \"prod\"\r\n },\r\n + \ \"sku\": {\r\n \"name\": \"Standard_ND128isr_GB300_v6\",\r\n \"capacity\": + 18\r\n },\r\n \"zones\": [\r\n \"2\"\r\n ],\r\n \"placement\": + {\r\n \"zonePlacementPolicy\": \"Any\"\r\n },\r\n \"properties\": + {\r\n \"interconnectGroup\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig\"\r\n + \ },\r\n \"interconnectBlockId\": \"83f953b8-9a85-4cef-b969-378d49c2ef86\",\r\n + \ \"provisioningTime\": \"2026-07-29T06:37:50.8313551+00:00\",\r\n \"provisioningState\": + \"Succeeded\"\r\n }\r\n },\r\n \"Id\": 4350228,\r\n \"Status\": \"RanToCompletion\",\r\n + \ \"IsCanceled\": false,\r\n \"IsCompleted\": true,\r\n \"CreationOptions\": + \"None\",\r\n \"IsFaulted\": false\r\n}" + headers: + azure-asyncnotification: + - Enabled + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/EastUS2EUAP/operations/2c81632f-ba3d-46d6-86e7-c7941fe0a93f?p=f6830f8f-cf25-42e7-9aa3-89582227249f&api-version=2026-03-01&t=639209038827199756&c=MIIH9TCCBt2gAwIBAgIRAIv6bqY7SwhL3LG8FAICEKMwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UEAxMrQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgRVUyQyBDQSAwMTAeFw0yNjA3MjAxOTMxMjBaFw0yNzAxMTYwMTMxMjBaMEAxPjA8BgNVBAMTNWFzeW5jb3BlcmF0aW9uc2lnbmluZ2NlcnRpZmljYXRlLm1hbmFnZW1lbnQuYXp1cmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA60XvbHp6raPh7-g9YtwjAqWd8-7lJaqYevbtT_chcmJKVGCqalDpcpjm1c7dJ0qttCqzgccGmOaUWRed2_AMGGNlJShP44ilyJABuOT-EaoRkb3opVLWjv64yC_HkTxj2rVcdFdi0mzKyfN-4xe_IO6lAgKTxPPX2W5koMP89MUtB9_TIF0ZmAmHkUJ2buzabC1mfecmfqeNzrWGwtYHEeBWwdbVL2G8hvN1QfQR8Fn7voXnu_aco27ks_o_kTCamRZw9DWQxrZpUKOcr-oF3519-slXDvongk1J2qEhVwm4ubCSPVapkQk-IT3Ta9s8LWV2Xxc4kK3ltL6a3X8HsQIDAQABo4IE8jCCBO4wgZ0GA1UdIASBlTCBkjAMBgorBgEEAYI3ewEBMGYGCisGAQQBgjd7AgIwWDBWBggrBgEFBQcCAjBKHkgAMwAzAGUAMAAxADkAMgAxAC0ANABkADYANAAtADQAZgA4AGMALQBhADAANQA1AC0ANQBiAGQAYQBmAGYAZAA1AGUAMwAzAGQwDAYKKwYBBAGCN3sDAjAMBgorBgEEAYI3ewQCMAwGA1UdEwEB_wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA4GA1UdDwEB_wQEAwIFoDAdBgNVHQ4EFgQUQVGqcnvgw6L4YX39W1RhWMO33mMwHwYDVR0jBBgwFoAUz1EBqulDLGR2G0rwqsDykvhPw7swggHiBgNVHR8EggHZMIIB1TB1oHOgcYZvaHR0cDovL3ByaW1hcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHegdaBzhnFodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9lYXN0dXMyZXVhcC9jcmxzL2NjbWVlYXN0dXMyZXVhcHBraS9jY21lZWFzdHVzMmV1YXBpY2EwMS82My9jdXJyZW50LmNybDBmoGSgYoZgaHR0cDovL2NybC5taWNyb3NvZnQuY29tL2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHugeaB3hnVodHRwOi8vY2NtZWVhc3R1czJldWFwcGtpLmVhc3R1czJldWFwLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWVhc3R1czJldWFwaWNhMDEvNjMvY3VycmVudC5jcmwwggHnBggrBgEFBQcBAQSCAdkwggHVMHgGCCsGAQUFBzAChmxodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwegYIKwYBBQUHMAKGbmh0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NhY2VydHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxL2NlcnQuY2VyMGkGCCsGAQUFBzAChl1odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwcgYIKwYBBQUHMAKGZmh0dHA6Ly9jY21lZWFzdHVzMmV1YXBwa2kuZWFzdHVzMmV1YXAucGtpLmNvcmUud2luZG93cy5uZXQvY2VydGlmaWNhdGVBdXRob3JpdGllcy9jY21lZWFzdHVzMmV1YXBpY2EwMTANBgkqhkiG9w0BAQsFAAOCAQEALvKIKeG4LLHrBV6i-dD6mlha6SyIEw86psNUSqq7gX5SSbyC2LJl0hFPP6eZnQIrAgslagPJmiu8xxyQWfXEKPk7iNcOu63xs7xRhS-vgQ0kFSP5UxHToK0eCIC8X2PnmZ7uEC9lLcC8zR4xTCvuFX0aJc2tjjIiJnrnU8CZ8y8Tp6poCS2KvpJk1Rk2x5p-AouDt-0UkRsaEIlvVM95rgiZ4yKxGKzI02X8n3p__rHt7iaxLW9fSrXQnyDr5zIzVd9UvUEpXgp3vGpV6iDTwYvEwQbg3Lj4sYLyDjKV2rOvDeOPa6rGbGc3mvGUerYDmqPuw4XWatkr7IoISbVPeg&s=GQ_HtobuBK6U44AMNyhuwSRSp3lM3nyfmU523uzaQnaGi4GrUfL_XigHOWZXPGsFstngHYkPKvxSuf7pSGJIL0H5ylr0ovfcYH_jxqyeKGLdiLVuMR3YjDyTr14zTtibnHsk1IN9dgEdBX3NVy00DJbqn8NhsJwsjPo0zI04Fx0YjX693UjcfBTB8Vz5uVH9PFOjmsQ_fC5G32C3Rh35OQE086iC5zQT2nVSx0kcCJzRzGRxlJt9OjNkzFPhbqGeupkL-oKfl_9y3htCXNoIliB5TyswBLP8LH2aozBIs8U9dW4TgohNZv5esPJ1LWNoe0iJ5mfvwH_YcfqFkjVB-A&h=nmy_GxFnl65iREpzYSdrrJDvBcqwsO4O1fB_A1tz4TM + cache-control: + - no-cache + content-length: + - '1111' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:38:02 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=50aa02a5-cef7-4a1c-be56-d7b8a8c363ab/eastus2euap/d013b1ab-3824-46dc-92c0-42de3b995e0c + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/PutDeleteInterconnectBlockSubscriptionMaximum;118 + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-ms-throttling-version: + - v2 + x-msedge-ref: + - 'Ref A: E416E9CC99144CBE8FA872B080B4FAE7 Ref B: KUL201100110036 Ref C: 2026-07-29T06:38:01Z' + status: + code: 200 + message: '' +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block update + Connection: + - keep-alive + ParameterSetName: + - -g -n --sku-capacity --tags + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/EastUS2EUAP/operations/2c81632f-ba3d-46d6-86e7-c7941fe0a93f?p=f6830f8f-cf25-42e7-9aa3-89582227249f&api-version=2026-03-01&t=639209038827199756&c=MIIH9TCCBt2gAwIBAgIRAIv6bqY7SwhL3LG8FAICEKMwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UEAxMrQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgRVUyQyBDQSAwMTAeFw0yNjA3MjAxOTMxMjBaFw0yNzAxMTYwMTMxMjBaMEAxPjA8BgNVBAMTNWFzeW5jb3BlcmF0aW9uc2lnbmluZ2NlcnRpZmljYXRlLm1hbmFnZW1lbnQuYXp1cmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA60XvbHp6raPh7-g9YtwjAqWd8-7lJaqYevbtT_chcmJKVGCqalDpcpjm1c7dJ0qttCqzgccGmOaUWRed2_AMGGNlJShP44ilyJABuOT-EaoRkb3opVLWjv64yC_HkTxj2rVcdFdi0mzKyfN-4xe_IO6lAgKTxPPX2W5koMP89MUtB9_TIF0ZmAmHkUJ2buzabC1mfecmfqeNzrWGwtYHEeBWwdbVL2G8hvN1QfQR8Fn7voXnu_aco27ks_o_kTCamRZw9DWQxrZpUKOcr-oF3519-slXDvongk1J2qEhVwm4ubCSPVapkQk-IT3Ta9s8LWV2Xxc4kK3ltL6a3X8HsQIDAQABo4IE8jCCBO4wgZ0GA1UdIASBlTCBkjAMBgorBgEEAYI3ewEBMGYGCisGAQQBgjd7AgIwWDBWBggrBgEFBQcCAjBKHkgAMwAzAGUAMAAxADkAMgAxAC0ANABkADYANAAtADQAZgA4AGMALQBhADAANQA1AC0ANQBiAGQAYQBmAGYAZAA1AGUAMwAzAGQwDAYKKwYBBAGCN3sDAjAMBgorBgEEAYI3ewQCMAwGA1UdEwEB_wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA4GA1UdDwEB_wQEAwIFoDAdBgNVHQ4EFgQUQVGqcnvgw6L4YX39W1RhWMO33mMwHwYDVR0jBBgwFoAUz1EBqulDLGR2G0rwqsDykvhPw7swggHiBgNVHR8EggHZMIIB1TB1oHOgcYZvaHR0cDovL3ByaW1hcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHegdaBzhnFodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9lYXN0dXMyZXVhcC9jcmxzL2NjbWVlYXN0dXMyZXVhcHBraS9jY21lZWFzdHVzMmV1YXBpY2EwMS82My9jdXJyZW50LmNybDBmoGSgYoZgaHR0cDovL2NybC5taWNyb3NvZnQuY29tL2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHugeaB3hnVodHRwOi8vY2NtZWVhc3R1czJldWFwcGtpLmVhc3R1czJldWFwLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWVhc3R1czJldWFwaWNhMDEvNjMvY3VycmVudC5jcmwwggHnBggrBgEFBQcBAQSCAdkwggHVMHgGCCsGAQUFBzAChmxodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwegYIKwYBBQUHMAKGbmh0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NhY2VydHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxL2NlcnQuY2VyMGkGCCsGAQUFBzAChl1odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwcgYIKwYBBQUHMAKGZmh0dHA6Ly9jY21lZWFzdHVzMmV1YXBwa2kuZWFzdHVzMmV1YXAucGtpLmNvcmUud2luZG93cy5uZXQvY2VydGlmaWNhdGVBdXRob3JpdGllcy9jY21lZWFzdHVzMmV1YXBpY2EwMTANBgkqhkiG9w0BAQsFAAOCAQEALvKIKeG4LLHrBV6i-dD6mlha6SyIEw86psNUSqq7gX5SSbyC2LJl0hFPP6eZnQIrAgslagPJmiu8xxyQWfXEKPk7iNcOu63xs7xRhS-vgQ0kFSP5UxHToK0eCIC8X2PnmZ7uEC9lLcC8zR4xTCvuFX0aJc2tjjIiJnrnU8CZ8y8Tp6poCS2KvpJk1Rk2x5p-AouDt-0UkRsaEIlvVM95rgiZ4yKxGKzI02X8n3p__rHt7iaxLW9fSrXQnyDr5zIzVd9UvUEpXgp3vGpV6iDTwYvEwQbg3Lj4sYLyDjKV2rOvDeOPa6rGbGc3mvGUerYDmqPuw4XWatkr7IoISbVPeg&s=GQ_HtobuBK6U44AMNyhuwSRSp3lM3nyfmU523uzaQnaGi4GrUfL_XigHOWZXPGsFstngHYkPKvxSuf7pSGJIL0H5ylr0ovfcYH_jxqyeKGLdiLVuMR3YjDyTr14zTtibnHsk1IN9dgEdBX3NVy00DJbqn8NhsJwsjPo0zI04Fx0YjX693UjcfBTB8Vz5uVH9PFOjmsQ_fC5G32C3Rh35OQE086iC5zQT2nVSx0kcCJzRzGRxlJt9OjNkzFPhbqGeupkL-oKfl_9y3htCXNoIliB5TyswBLP8LH2aozBIs8U9dW4TgohNZv5esPJ1LWNoe0iJ5mfvwH_YcfqFkjVB-A&h=nmy_GxFnl65iREpzYSdrrJDvBcqwsO4O1fB_A1tz4TM + response: + body: + string: "{\r\n \"startTime\": \"2026-07-29T06:38:02.5513479+00:00\",\r\n \"endTime\": + \"2026-07-29T06:38:02.5826943+00:00\",\r\n \"status\": \"Succeeded\",\r\n + \ \"name\": \"2c81632f-ba3d-46d6-86e7-c7941fe0a93f\"\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '184' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:38:03 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=50aa02a5-cef7-4a1c-be56-d7b8a8c363ab/southeastasia/34393a47-1243-4a57-9099-5adae26807ed + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetOperationResource;44,Microsoft.Compute/GetOperationSubscriptionMaximum;14998 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: DB4A30EA69B84A38AB25D4CF2A973BDB Ref B: KUL201100111060 Ref C: 2026-07-29T06:38:03Z' + status: + code: 200 + message: '' +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block update + Connection: + - keep-alive + ParameterSetName: + - -g -n --sku-capacity --tags + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002?api-version=2026-03-01 + response: + body: + string: "{\r\n \"name\": \"icb000002\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002\",\r\n + \ \"type\": \"Microsoft.Compute/interconnectBlocks\",\r\n \"location\": \"eastus2euap\",\r\n + \ \"tags\": {\r\n \"env\": \"prod\"\r\n },\r\n \"sku\": {\r\n \"name\": + \"Standard_ND128isr_GB300_v6\",\r\n \"capacity\": 18\r\n },\r\n \"zones\": + [\r\n \"2\"\r\n ],\r\n \"placement\": {\r\n \"zonePlacementPolicy\": + \"Any\"\r\n },\r\n \"properties\": {\r\n \"interconnectGroup\": {\r\n + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Network/interconnectGroups/training-ig\"\r\n + \ },\r\n \"interconnectBlockId\": \"83f953b8-9a85-4cef-b969-378d49c2ef86\",\r\n + \ \"provisioningTime\": \"2026-07-29T06:37:50.8313551+00:00\",\r\n \"provisioningState\": + \"Succeeded\"\r\n }\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '890' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:38:04 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetInterconnectBlockSubscriptionMaximum;261 + x-ms-throttling-version: + - v2 + x-msedge-ref: + - 'Ref A: 3646FD2D802845C4A8CDAAF658E5DF27 Ref B: KUL201100111023 Ref C: 2026-07-29T06:38:05Z' + status: + code: 200 + message: '' +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g -n --yes + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks/icb000002?api-version=2026-03-01 + response: + body: + string: '' + headers: + azure-asyncnotification: + - Enabled + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/EastUS2EUAP/operations/bff9396e-0308-4781-bf65-10bc226d8f2f?p=f6830f8f-cf25-42e7-9aa3-89582227249f&api-version=2026-03-01&t=639209038868663931&c=MIIH9TCCBt2gAwIBAgIRAIv6bqY7SwhL3LG8FAICEKMwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UEAxMrQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgRVUyQyBDQSAwMTAeFw0yNjA3MjAxOTMxMjBaFw0yNzAxMTYwMTMxMjBaMEAxPjA8BgNVBAMTNWFzeW5jb3BlcmF0aW9uc2lnbmluZ2NlcnRpZmljYXRlLm1hbmFnZW1lbnQuYXp1cmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA60XvbHp6raPh7-g9YtwjAqWd8-7lJaqYevbtT_chcmJKVGCqalDpcpjm1c7dJ0qttCqzgccGmOaUWRed2_AMGGNlJShP44ilyJABuOT-EaoRkb3opVLWjv64yC_HkTxj2rVcdFdi0mzKyfN-4xe_IO6lAgKTxPPX2W5koMP89MUtB9_TIF0ZmAmHkUJ2buzabC1mfecmfqeNzrWGwtYHEeBWwdbVL2G8hvN1QfQR8Fn7voXnu_aco27ks_o_kTCamRZw9DWQxrZpUKOcr-oF3519-slXDvongk1J2qEhVwm4ubCSPVapkQk-IT3Ta9s8LWV2Xxc4kK3ltL6a3X8HsQIDAQABo4IE8jCCBO4wgZ0GA1UdIASBlTCBkjAMBgorBgEEAYI3ewEBMGYGCisGAQQBgjd7AgIwWDBWBggrBgEFBQcCAjBKHkgAMwAzAGUAMAAxADkAMgAxAC0ANABkADYANAAtADQAZgA4AGMALQBhADAANQA1AC0ANQBiAGQAYQBmAGYAZAA1AGUAMwAzAGQwDAYKKwYBBAGCN3sDAjAMBgorBgEEAYI3ewQCMAwGA1UdEwEB_wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA4GA1UdDwEB_wQEAwIFoDAdBgNVHQ4EFgQUQVGqcnvgw6L4YX39W1RhWMO33mMwHwYDVR0jBBgwFoAUz1EBqulDLGR2G0rwqsDykvhPw7swggHiBgNVHR8EggHZMIIB1TB1oHOgcYZvaHR0cDovL3ByaW1hcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHegdaBzhnFodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9lYXN0dXMyZXVhcC9jcmxzL2NjbWVlYXN0dXMyZXVhcHBraS9jY21lZWFzdHVzMmV1YXBpY2EwMS82My9jdXJyZW50LmNybDBmoGSgYoZgaHR0cDovL2NybC5taWNyb3NvZnQuY29tL2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHugeaB3hnVodHRwOi8vY2NtZWVhc3R1czJldWFwcGtpLmVhc3R1czJldWFwLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWVhc3R1czJldWFwaWNhMDEvNjMvY3VycmVudC5jcmwwggHnBggrBgEFBQcBAQSCAdkwggHVMHgGCCsGAQUFBzAChmxodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwegYIKwYBBQUHMAKGbmh0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NhY2VydHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxL2NlcnQuY2VyMGkGCCsGAQUFBzAChl1odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwcgYIKwYBBQUHMAKGZmh0dHA6Ly9jY21lZWFzdHVzMmV1YXBwa2kuZWFzdHVzMmV1YXAucGtpLmNvcmUud2luZG93cy5uZXQvY2VydGlmaWNhdGVBdXRob3JpdGllcy9jY21lZWFzdHVzMmV1YXBpY2EwMTANBgkqhkiG9w0BAQsFAAOCAQEALvKIKeG4LLHrBV6i-dD6mlha6SyIEw86psNUSqq7gX5SSbyC2LJl0hFPP6eZnQIrAgslagPJmiu8xxyQWfXEKPk7iNcOu63xs7xRhS-vgQ0kFSP5UxHToK0eCIC8X2PnmZ7uEC9lLcC8zR4xTCvuFX0aJc2tjjIiJnrnU8CZ8y8Tp6poCS2KvpJk1Rk2x5p-AouDt-0UkRsaEIlvVM95rgiZ4yKxGKzI02X8n3p__rHt7iaxLW9fSrXQnyDr5zIzVd9UvUEpXgp3vGpV6iDTwYvEwQbg3Lj4sYLyDjKV2rOvDeOPa6rGbGc3mvGUerYDmqPuw4XWatkr7IoISbVPeg&s=jq89dj1p-zxb_Gp3INuOWCUjesBy039CVYHj6ivLD2sbJb3gUIQwNWJveK538ZD9h6HFex3cxVVlAp0Rtvgvq0gayDTAjLglyKopBoSBTZ2TIWuoEzPwcfc9bXHaFguIuXrVzS4CCcMGUHK2HPiahAhkkAR0W27brNyll4VHo0RbZxMPbvZ2QSb1xmWcUpMAtoDPn2CjiHaFYP83UlAsXujCY2A6xgVh_bJRatHjwi5NKjk34fTBCle5GnLLwHfbVII6gyGds-_UOeumZgTvRh3p42SlucnlDkn78VDLJJn0N9F-UqKisaBQ5RKeGD2joQBOeB4GqAG2tB5TdnCAJA&h=ZwbBftKNJyY1x88lRwk2mTNkgfnaoSi6-R9m-tjVvRI + cache-control: + - no-cache + content-length: + - '0' + date: + - Wed, 29 Jul 2026 06:38:06 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/EastUS2EUAP/operations/bff9396e-0308-4781-bf65-10bc226d8f2f?p=f6830f8f-cf25-42e7-9aa3-89582227249f&monitor=true&api-version=2026-03-01&t=639209038868820240&c=MIIH9TCCBt2gAwIBAgIRAIv6bqY7SwhL3LG8FAICEKMwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UEAxMrQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgRVUyQyBDQSAwMTAeFw0yNjA3MjAxOTMxMjBaFw0yNzAxMTYwMTMxMjBaMEAxPjA8BgNVBAMTNWFzeW5jb3BlcmF0aW9uc2lnbmluZ2NlcnRpZmljYXRlLm1hbmFnZW1lbnQuYXp1cmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA60XvbHp6raPh7-g9YtwjAqWd8-7lJaqYevbtT_chcmJKVGCqalDpcpjm1c7dJ0qttCqzgccGmOaUWRed2_AMGGNlJShP44ilyJABuOT-EaoRkb3opVLWjv64yC_HkTxj2rVcdFdi0mzKyfN-4xe_IO6lAgKTxPPX2W5koMP89MUtB9_TIF0ZmAmHkUJ2buzabC1mfecmfqeNzrWGwtYHEeBWwdbVL2G8hvN1QfQR8Fn7voXnu_aco27ks_o_kTCamRZw9DWQxrZpUKOcr-oF3519-slXDvongk1J2qEhVwm4ubCSPVapkQk-IT3Ta9s8LWV2Xxc4kK3ltL6a3X8HsQIDAQABo4IE8jCCBO4wgZ0GA1UdIASBlTCBkjAMBgorBgEEAYI3ewEBMGYGCisGAQQBgjd7AgIwWDBWBggrBgEFBQcCAjBKHkgAMwAzAGUAMAAxADkAMgAxAC0ANABkADYANAAtADQAZgA4AGMALQBhADAANQA1AC0ANQBiAGQAYQBmAGYAZAA1AGUAMwAzAGQwDAYKKwYBBAGCN3sDAjAMBgorBgEEAYI3ewQCMAwGA1UdEwEB_wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA4GA1UdDwEB_wQEAwIFoDAdBgNVHQ4EFgQUQVGqcnvgw6L4YX39W1RhWMO33mMwHwYDVR0jBBgwFoAUz1EBqulDLGR2G0rwqsDykvhPw7swggHiBgNVHR8EggHZMIIB1TB1oHOgcYZvaHR0cDovL3ByaW1hcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHegdaBzhnFodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9lYXN0dXMyZXVhcC9jcmxzL2NjbWVlYXN0dXMyZXVhcHBraS9jY21lZWFzdHVzMmV1YXBpY2EwMS82My9jdXJyZW50LmNybDBmoGSgYoZgaHR0cDovL2NybC5taWNyb3NvZnQuY29tL2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHugeaB3hnVodHRwOi8vY2NtZWVhc3R1czJldWFwcGtpLmVhc3R1czJldWFwLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWVhc3R1czJldWFwaWNhMDEvNjMvY3VycmVudC5jcmwwggHnBggrBgEFBQcBAQSCAdkwggHVMHgGCCsGAQUFBzAChmxodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwegYIKwYBBQUHMAKGbmh0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NhY2VydHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxL2NlcnQuY2VyMGkGCCsGAQUFBzAChl1odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwcgYIKwYBBQUHMAKGZmh0dHA6Ly9jY21lZWFzdHVzMmV1YXBwa2kuZWFzdHVzMmV1YXAucGtpLmNvcmUud2luZG93cy5uZXQvY2VydGlmaWNhdGVBdXRob3JpdGllcy9jY21lZWFzdHVzMmV1YXBpY2EwMTANBgkqhkiG9w0BAQsFAAOCAQEALvKIKeG4LLHrBV6i-dD6mlha6SyIEw86psNUSqq7gX5SSbyC2LJl0hFPP6eZnQIrAgslagPJmiu8xxyQWfXEKPk7iNcOu63xs7xRhS-vgQ0kFSP5UxHToK0eCIC8X2PnmZ7uEC9lLcC8zR4xTCvuFX0aJc2tjjIiJnrnU8CZ8y8Tp6poCS2KvpJk1Rk2x5p-AouDt-0UkRsaEIlvVM95rgiZ4yKxGKzI02X8n3p__rHt7iaxLW9fSrXQnyDr5zIzVd9UvUEpXgp3vGpV6iDTwYvEwQbg3Lj4sYLyDjKV2rOvDeOPa6rGbGc3mvGUerYDmqPuw4XWatkr7IoISbVPeg&s=ILWEsEamKxnvlWKqUo9TTFltK_cagOryew6ZS22yVhZBIs60WZsavMNEZbUMEhlv8eWH7STV8sPwFgQ6D-FLk8aF8dhz_Z9F8DrPVDhAtZVSMpC59EoAx0NHC689HG5mXLT4GE-goPivBpwdz8YXiGXm0j_jbtjcBRNPABcJf3XXMZPZZYqx3GerJ9AKqUQbWi7j0DB90X6mZL-YLX6dum-YUqqkSkfKcXY_9c3kDvw4uHEFGUtA814jadAXpbJlpSvGu7N-PrsNDYibWsV_yLqLh2fkhFNx82GgznA8CxOOeYBUA5MwRasHa8Jhr3YxSDY0C7XHdcMi3288yjwpAA&h=KqpAke6BzqUm21d7gCRomvTRYqkA7lUtRxtnBiIoiP0 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=50aa02a5-cef7-4a1c-be56-d7b8a8c363ab/eastus2euap/1c4998f3-931f-45ca-8ea8-8ed255903625 + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/PutDeleteInterconnectBlockSubscriptionMaximum;119 + x-ms-ratelimit-remaining-subscription-deletes: + - '799' + x-ms-throttling-version: + - v2 + x-msedge-ref: + - 'Ref A: 4D8B763C90C543A68AC181AD15645DCA Ref B: KUL201100110023 Ref C: 2026-07-29T06:38:06Z' + status: + code: 202 + message: '' +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block delete + Connection: + - keep-alive + ParameterSetName: + - -g -n --yes + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/EastUS2EUAP/operations/bff9396e-0308-4781-bf65-10bc226d8f2f?p=f6830f8f-cf25-42e7-9aa3-89582227249f&api-version=2026-03-01&t=639209038868663931&c=MIIH9TCCBt2gAwIBAgIRAIv6bqY7SwhL3LG8FAICEKMwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UEAxMrQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgRVUyQyBDQSAwMTAeFw0yNjA3MjAxOTMxMjBaFw0yNzAxMTYwMTMxMjBaMEAxPjA8BgNVBAMTNWFzeW5jb3BlcmF0aW9uc2lnbmluZ2NlcnRpZmljYXRlLm1hbmFnZW1lbnQuYXp1cmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA60XvbHp6raPh7-g9YtwjAqWd8-7lJaqYevbtT_chcmJKVGCqalDpcpjm1c7dJ0qttCqzgccGmOaUWRed2_AMGGNlJShP44ilyJABuOT-EaoRkb3opVLWjv64yC_HkTxj2rVcdFdi0mzKyfN-4xe_IO6lAgKTxPPX2W5koMP89MUtB9_TIF0ZmAmHkUJ2buzabC1mfecmfqeNzrWGwtYHEeBWwdbVL2G8hvN1QfQR8Fn7voXnu_aco27ks_o_kTCamRZw9DWQxrZpUKOcr-oF3519-slXDvongk1J2qEhVwm4ubCSPVapkQk-IT3Ta9s8LWV2Xxc4kK3ltL6a3X8HsQIDAQABo4IE8jCCBO4wgZ0GA1UdIASBlTCBkjAMBgorBgEEAYI3ewEBMGYGCisGAQQBgjd7AgIwWDBWBggrBgEFBQcCAjBKHkgAMwAzAGUAMAAxADkAMgAxAC0ANABkADYANAAtADQAZgA4AGMALQBhADAANQA1AC0ANQBiAGQAYQBmAGYAZAA1AGUAMwAzAGQwDAYKKwYBBAGCN3sDAjAMBgorBgEEAYI3ewQCMAwGA1UdEwEB_wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA4GA1UdDwEB_wQEAwIFoDAdBgNVHQ4EFgQUQVGqcnvgw6L4YX39W1RhWMO33mMwHwYDVR0jBBgwFoAUz1EBqulDLGR2G0rwqsDykvhPw7swggHiBgNVHR8EggHZMIIB1TB1oHOgcYZvaHR0cDovL3ByaW1hcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHegdaBzhnFodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9lYXN0dXMyZXVhcC9jcmxzL2NjbWVlYXN0dXMyZXVhcHBraS9jY21lZWFzdHVzMmV1YXBpY2EwMS82My9jdXJyZW50LmNybDBmoGSgYoZgaHR0cDovL2NybC5taWNyb3NvZnQuY29tL2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHugeaB3hnVodHRwOi8vY2NtZWVhc3R1czJldWFwcGtpLmVhc3R1czJldWFwLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWVhc3R1czJldWFwaWNhMDEvNjMvY3VycmVudC5jcmwwggHnBggrBgEFBQcBAQSCAdkwggHVMHgGCCsGAQUFBzAChmxodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwegYIKwYBBQUHMAKGbmh0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NhY2VydHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxL2NlcnQuY2VyMGkGCCsGAQUFBzAChl1odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwcgYIKwYBBQUHMAKGZmh0dHA6Ly9jY21lZWFzdHVzMmV1YXBwa2kuZWFzdHVzMmV1YXAucGtpLmNvcmUud2luZG93cy5uZXQvY2VydGlmaWNhdGVBdXRob3JpdGllcy9jY21lZWFzdHVzMmV1YXBpY2EwMTANBgkqhkiG9w0BAQsFAAOCAQEALvKIKeG4LLHrBV6i-dD6mlha6SyIEw86psNUSqq7gX5SSbyC2LJl0hFPP6eZnQIrAgslagPJmiu8xxyQWfXEKPk7iNcOu63xs7xRhS-vgQ0kFSP5UxHToK0eCIC8X2PnmZ7uEC9lLcC8zR4xTCvuFX0aJc2tjjIiJnrnU8CZ8y8Tp6poCS2KvpJk1Rk2x5p-AouDt-0UkRsaEIlvVM95rgiZ4yKxGKzI02X8n3p__rHt7iaxLW9fSrXQnyDr5zIzVd9UvUEpXgp3vGpV6iDTwYvEwQbg3Lj4sYLyDjKV2rOvDeOPa6rGbGc3mvGUerYDmqPuw4XWatkr7IoISbVPeg&s=jq89dj1p-zxb_Gp3INuOWCUjesBy039CVYHj6ivLD2sbJb3gUIQwNWJveK538ZD9h6HFex3cxVVlAp0Rtvgvq0gayDTAjLglyKopBoSBTZ2TIWuoEzPwcfc9bXHaFguIuXrVzS4CCcMGUHK2HPiahAhkkAR0W27brNyll4VHo0RbZxMPbvZ2QSb1xmWcUpMAtoDPn2CjiHaFYP83UlAsXujCY2A6xgVh_bJRatHjwi5NKjk34fTBCle5GnLLwHfbVII6gyGds-_UOeumZgTvRh3p42SlucnlDkn78VDLJJn0N9F-UqKisaBQ5RKeGD2joQBOeB4GqAG2tB5TdnCAJA&h=ZwbBftKNJyY1x88lRwk2mTNkgfnaoSi6-R9m-tjVvRI + response: + body: + string: "{\r\n \"startTime\": \"2026-07-29T06:38:06.8255755+00:00\",\r\n \"endTime\": + \"2026-07-29T06:38:07.0546366+00:00\",\r\n \"status\": \"Succeeded\",\r\n + \ \"name\": \"bff9396e-0308-4781-bf65-10bc226d8f2f\"\r\n}" + headers: + cache-control: + - no-cache + content-length: + - '184' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:38:07 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=50aa02a5-cef7-4a1c-be56-d7b8a8c363ab/southeastasia/6e954b33-8419-4eed-9fb9-eb338b75e225 + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetOperationResource;44,Microsoft.Compute/GetOperationSubscriptionMaximum;14997 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 6FC8FBDA730C4E38B0B8C9727BAA0B94 Ref B: KUL201100111060 Ref C: 2026-07-29T06:38:07Z' + status: + code: 200 + message: '' +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block delete + Connection: + - keep-alive + ParameterSetName: + - -g -n --yes + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/EastUS2EUAP/operations/bff9396e-0308-4781-bf65-10bc226d8f2f?p=f6830f8f-cf25-42e7-9aa3-89582227249f&monitor=true&api-version=2026-03-01&t=639209038868820240&c=MIIH9TCCBt2gAwIBAgIRAIv6bqY7SwhL3LG8FAICEKMwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UEAxMrQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgRVUyQyBDQSAwMTAeFw0yNjA3MjAxOTMxMjBaFw0yNzAxMTYwMTMxMjBaMEAxPjA8BgNVBAMTNWFzeW5jb3BlcmF0aW9uc2lnbmluZ2NlcnRpZmljYXRlLm1hbmFnZW1lbnQuYXp1cmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA60XvbHp6raPh7-g9YtwjAqWd8-7lJaqYevbtT_chcmJKVGCqalDpcpjm1c7dJ0qttCqzgccGmOaUWRed2_AMGGNlJShP44ilyJABuOT-EaoRkb3opVLWjv64yC_HkTxj2rVcdFdi0mzKyfN-4xe_IO6lAgKTxPPX2W5koMP89MUtB9_TIF0ZmAmHkUJ2buzabC1mfecmfqeNzrWGwtYHEeBWwdbVL2G8hvN1QfQR8Fn7voXnu_aco27ks_o_kTCamRZw9DWQxrZpUKOcr-oF3519-slXDvongk1J2qEhVwm4ubCSPVapkQk-IT3Ta9s8LWV2Xxc4kK3ltL6a3X8HsQIDAQABo4IE8jCCBO4wgZ0GA1UdIASBlTCBkjAMBgorBgEEAYI3ewEBMGYGCisGAQQBgjd7AgIwWDBWBggrBgEFBQcCAjBKHkgAMwAzAGUAMAAxADkAMgAxAC0ANABkADYANAAtADQAZgA4AGMALQBhADAANQA1AC0ANQBiAGQAYQBmAGYAZAA1AGUAMwAzAGQwDAYKKwYBBAGCN3sDAjAMBgorBgEEAYI3ewQCMAwGA1UdEwEB_wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA4GA1UdDwEB_wQEAwIFoDAdBgNVHQ4EFgQUQVGqcnvgw6L4YX39W1RhWMO33mMwHwYDVR0jBBgwFoAUz1EBqulDLGR2G0rwqsDykvhPw7swggHiBgNVHR8EggHZMIIB1TB1oHOgcYZvaHR0cDovL3ByaW1hcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHegdaBzhnFodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9lYXN0dXMyZXVhcC9jcmxzL2NjbWVlYXN0dXMyZXVhcHBraS9jY21lZWFzdHVzMmV1YXBpY2EwMS82My9jdXJyZW50LmNybDBmoGSgYoZgaHR0cDovL2NybC5taWNyb3NvZnQuY29tL2Vhc3R1czJldWFwL2NybHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxLzYzL2N1cnJlbnQuY3JsMHugeaB3hnVodHRwOi8vY2NtZWVhc3R1czJldWFwcGtpLmVhc3R1czJldWFwLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWVhc3R1czJldWFwaWNhMDEvNjMvY3VycmVudC5jcmwwggHnBggrBgEFBQcBAQSCAdkwggHVMHgGCCsGAQUFBzAChmxodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwegYIKwYBBQUHMAKGbmh0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czJldWFwL2NhY2VydHMvY2NtZWVhc3R1czJldWFwcGtpL2NjbWVlYXN0dXMyZXVhcGljYTAxL2NlcnQuY2VyMGkGCCsGAQUFBzAChl1odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vZWFzdHVzMmV1YXAvY2FjZXJ0cy9jY21lZWFzdHVzMmV1YXBwa2kvY2NtZWVhc3R1czJldWFwaWNhMDEvY2VydC5jZXIwcgYIKwYBBQUHMAKGZmh0dHA6Ly9jY21lZWFzdHVzMmV1YXBwa2kuZWFzdHVzMmV1YXAucGtpLmNvcmUud2luZG93cy5uZXQvY2VydGlmaWNhdGVBdXRob3JpdGllcy9jY21lZWFzdHVzMmV1YXBpY2EwMTANBgkqhkiG9w0BAQsFAAOCAQEALvKIKeG4LLHrBV6i-dD6mlha6SyIEw86psNUSqq7gX5SSbyC2LJl0hFPP6eZnQIrAgslagPJmiu8xxyQWfXEKPk7iNcOu63xs7xRhS-vgQ0kFSP5UxHToK0eCIC8X2PnmZ7uEC9lLcC8zR4xTCvuFX0aJc2tjjIiJnrnU8CZ8y8Tp6poCS2KvpJk1Rk2x5p-AouDt-0UkRsaEIlvVM95rgiZ4yKxGKzI02X8n3p__rHt7iaxLW9fSrXQnyDr5zIzVd9UvUEpXgp3vGpV6iDTwYvEwQbg3Lj4sYLyDjKV2rOvDeOPa6rGbGc3mvGUerYDmqPuw4XWatkr7IoISbVPeg&s=ILWEsEamKxnvlWKqUo9TTFltK_cagOryew6ZS22yVhZBIs60WZsavMNEZbUMEhlv8eWH7STV8sPwFgQ6D-FLk8aF8dhz_Z9F8DrPVDhAtZVSMpC59EoAx0NHC689HG5mXLT4GE-goPivBpwdz8YXiGXm0j_jbtjcBRNPABcJf3XXMZPZZYqx3GerJ9AKqUQbWi7j0DB90X6mZL-YLX6dum-YUqqkSkfKcXY_9c3kDvw4uHEFGUtA814jadAXpbJlpSvGu7N-PrsNDYibWsV_yLqLh2fkhFNx82GgznA8CxOOeYBUA5MwRasHa8Jhr3YxSDY0C7XHdcMi3288yjwpAA&h=KqpAke6BzqUm21d7gCRomvTRYqkA7lUtRxtnBiIoiP0 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + date: + - Wed, 29 Jul 2026 06:38:10 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-need-to-refresh-epl-cache: + - 'False' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=50aa02a5-cef7-4a1c-be56-d7b8a8c363ab/southeastasia/6e87e481-fed1-420e-ac64-403cd43fed01 + x-ms-ratelimit-remaining-resource: + - Microsoft.Compute/GetOperationResource;43,Microsoft.Compute/GetOperationSubscriptionMaximum;14996 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: E4DC6528AE15431A86D90246B9778198 Ref B: KUL201100111036 Ref C: 2026-07-29T06:38:09Z' + status: + code: 200 + message: '' +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - interconnect-block list + Connection: + - keep-alive + ParameterSetName: + - -g + User-Agent: + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_interconnect_block_000001/providers/Microsoft.Compute/interconnectBlocks?api-version=2026-03-01 + response: + body: + string: '{"value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '12' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 29 Jul 2026 06:38:11 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-ms-throttling-version: + - v2 + x-msedge-ref: + - 'Ref A: FDB7B89D714041739DA14EB41B69B6CC Ref B: KUL201100110023 Ref C: 2026-07-29T06:38:11Z' + status: + code: 200 + message: OK +version: 1 diff --git a/src/interconnect-block/azext_interconnect_block/tests/latest/test_interconnect_block.py b/src/interconnect-block/azext_interconnect_block/tests/latest/test_interconnect_block.py new file mode 100644 index 00000000000..c09959f1b38 --- /dev/null +++ b/src/interconnect-block/azext_interconnect_block/tests/latest/test_interconnect_block.py @@ -0,0 +1,82 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +from azure.cli.testsdk import * + + +class InterconnectBlockScenario(ScenarioTest): + @ResourceGroupPreparer(name_prefix='cli_test_interconnect_block_', location='eastus2euap') + def test_interconnect_block(self, resource_group): + self.kwargs.update({ + 'icb': self.create_random_name('icb', 15), + 'ig': 'training-ig', + 'sku': 'Standard_ND128isr_GB300_v6', + 'ig_props': '{"scope":"InfiniBand","subgroupProfile":' + '{"vmSize":"Standard_ND128isr_GB300_v6","scope":"VerticalConnect","size":18}}', + 'ig_id': '/subscriptions/{}/resourceGroups/{}/providers/Microsoft.Network/' + 'interconnectGroups/training-ig'.format(self.get_subscription_id(), resource_group), + 'location': 'eastus2euap' + }) + + # create the prerequisite interconnect group (no dedicated command exists yet) + self.cmd("resource create -g {rg} -n {ig} " + "--resource-type Microsoft.Network/interconnectGroups " + "--api-version 2026-01-01 --location {location} --properties '{ig_props}'") + + # create + self.cmd('interconnect-block create -g {rg} -n {icb} --location {location} ' + '--zone-placement-policy Any ' + '--sku-name {sku} --sku-capacity 18 --interconnect-group-id {ig_id} ' + '--tags env=test', checks=[ + self.check('name', '{icb}'), + self.check('location', '{location}'), + self.check('sku.name', '{sku}'), + self.check('sku.capacity', 18), + self.check('tags.env', 'test'), + self.check('placement.zonePlacementPolicy', 'Any'), + self.check('properties.provisioningState', 'Succeeded'), + self.check('properties.interconnectGroup.id', '{ig_id}'), + ]) + + # show + self.cmd('interconnect-block show -g {rg} -n {icb}', checks=[ + self.check('name', '{icb}'), + self.check('sku.capacity', 18), + self.check('placement.zonePlacementPolicy', 'Any'), + self.check('properties.provisioningState', 'Succeeded'), + self.check('properties.interconnectGroup.id', '{ig_id}'), + ]) + + # show with instance view (runtime details managed by the platform) + self.cmd('interconnect-block show -g {rg} -n {icb} --expand instanceView', checks=[ + self.check('name', '{icb}'), + self.check('sku.capacity', 18), + self.exists('properties.instanceView'), + ]) + + # list (resource group scope) + self.cmd('interconnect-block list -g {rg}', checks=[ + self.check('length(@)', 1), + self.check('[0].name', '{icb}'), + ]) + + # list (subscription scope) - separate API path; ensure our block is present + self.cmd('interconnect-block list', checks=[ + self.check("length([?name=='{icb}'])", 1), + ]) + + # update: only tags change + self.cmd('interconnect-block update -g {rg} -n {icb} --sku-capacity 18 --tags env=prod', checks=[ + self.check('sku.capacity', 18), + self.check('tags.env', 'prod'), + ]) + + # delete + self.cmd('interconnect-block delete -g {rg} -n {icb} --yes') + self.cmd('interconnect-block list -g {rg}', checks=[ + self.check('length(@)', 0), + ]) From a2fd1fe5e3b580b81ed324b4c3be6bef7f7e818b Mon Sep 17 00:00:00 2001 From: william Date: Thu, 30 Jul 2026 07:17:02 +0800 Subject: [PATCH 4/6] Update service_name --- src/service_name.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/service_name.json b/src/service_name.json index e2d64bd2d29..0b01bc43d68 100644 --- a/src/service_name.json +++ b/src/service_name.json @@ -1073,5 +1073,10 @@ "Command": "az changesafety", "AzureServiceName": "ChangeSafety", "URL": "" + }, + { + "Command": "az interconnect-block", + "AzureServiceName": "Interconnect Block", + "URL": "" } ] From 2d31bcf95934029ba1aed5da10d88611d1a9a843 Mon Sep 17 00:00:00 2001 From: william Date: Thu, 30 Jul 2026 07:30:11 +0800 Subject: [PATCH 5/6] Update README.md --- src/interconnect-block/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interconnect-block/README.md b/src/interconnect-block/README.md index ca1abcca64f..9af6b6f6bae 100644 --- a/src/interconnect-block/README.md +++ b/src/interconnect-block/README.md @@ -14,7 +14,7 @@ az extension add --name interconnect-block ##### Creates a new InterconnectBlock resource. ``` az interconnect-block create --name training-icb-001 --resource-group ai-training-rg \ - --location eastus --zone 1 --sku-name Standard_ND128isr_GB300_v6 --sku-capacity 36 \ + --location eastus --zones 1 --sku-name Standard_ND128isr_GB300_v6 --sku-capacity 36 \ --interconnect-group-id \ "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/network-\ rg/providers/Microsoft.Network/interconnectGroups/training-ig" --tags Environment=Production\ From c05973409c2f586ecf42d3d6fead64e6274a6040 Mon Sep 17 00:00:00 2001 From: william Date: Thu, 30 Jul 2026 08:47:55 +0800 Subject: [PATCH 6/6] Update interconnect-block command options --- .../aaz/latest/interconnect_block/_create.py | 6 +++--- .../aaz/latest/interconnect_block/_update.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_create.py b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_create.py index 19f28eb8dfc..d15ca926f8a 100644 --- a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_create.py +++ b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_create.py @@ -67,17 +67,17 @@ def _build_arguments_schema(cls, *args, **kwargs): _args_schema = cls._args_schema _args_schema.placement_exclude_zones = AAZListArg( - options=["--placement-exclude-zones"], + options=["--exclude-zones", "--placement-exclude-zones"], arg_group="Placement", help="This property supplements the 'zonePlacementPolicy' property. If 'zonePlacementPolicy' is set to 'Any'/'Auto', availability zone selected by the system must not be present in the list of availability zones passed with 'excludeZones'. If 'excludeZones' is not provided, all availability zones in region will be considered for selection.", ) _args_schema.placement_include_zones = AAZListArg( - options=["--placement-include-zones"], + options=["--include-zones", "--placement-include-zones"], arg_group="Placement", help="This property supplements the 'zonePlacementPolicy' property. If 'zonePlacementPolicy' is set to 'Any'/'Auto', availability zone selected by the system must be present in the list of availability zones passed with 'includeZones'. If 'includeZones' is not provided, all availability zones in region will be considered for selection.", ) _args_schema.zone_placement_policy = AAZStrArg( - options=["--zone-placement-policy"], + options=["--placement-policy", "--zone-placement-policy"], arg_group="Placement", help="Specifies the policy for resource's placement in availability zone. Possible values are: **Any** (used for Virtual Machines), **Auto** (used for Virtual Machine Scale Sets) - An availability zone will be automatically picked by system as part of resource creation.", enum={"Any": "Any", "Auto": "Auto"}, diff --git a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_update.py b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_update.py index e79dc4320af..6d87ac09083 100644 --- a/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_update.py +++ b/src/interconnect-block/azext_interconnect_block/aaz/latest/interconnect_block/_update.py @@ -67,19 +67,19 @@ def _build_arguments_schema(cls, *args, **kwargs): _args_schema = cls._args_schema _args_schema.placement_exclude_zones = AAZListArg( - options=["--placement-exclude-zones"], + options=["--exclude-zones", "--placement-exclude-zones"], arg_group="Placement", help="This property supplements the 'zonePlacementPolicy' property. If 'zonePlacementPolicy' is set to 'Any'/'Auto', availability zone selected by the system must not be present in the list of availability zones passed with 'excludeZones'. If 'excludeZones' is not provided, all availability zones in region will be considered for selection.", nullable=True, ) _args_schema.placement_include_zones = AAZListArg( - options=["--placement-include-zones"], + options=["--include-zones", "--placement-include-zones"], arg_group="Placement", help="This property supplements the 'zonePlacementPolicy' property. If 'zonePlacementPolicy' is set to 'Any'/'Auto', availability zone selected by the system must be present in the list of availability zones passed with 'includeZones'. If 'includeZones' is not provided, all availability zones in region will be considered for selection.", nullable=True, ) _args_schema.zone_placement_policy = AAZStrArg( - options=["--zone-placement-policy"], + options=["--placement-policy", "--zone-placement-policy"], arg_group="Placement", help="Specifies the policy for resource's placement in availability zone. Possible values are: **Any** (used for Virtual Machines), **Auto** (used for Virtual Machine Scale Sets) - An availability zone will be automatically picked by system as part of resource creation.", nullable=True,