From 69b0b0433777afc5ad1761292780536b5df7d4b4 Mon Sep 17 00:00:00 2001 From: william051200 Date: Thu, 5 Mar 2026 14:39:35 +0800 Subject: [PATCH 1/9] Generate vm capacity reservation group --- .../capacity/reservation/group/__init__.py | 3 + .../capacity/reservation/group/_create.py | 402 +++++++++++++ .../capacity/reservation/group/_show.py | 318 ++++++++++ .../capacity/reservation/group/_update.py | 551 ++++++++++++++++++ 4 files changed, 1274 insertions(+) create mode 100644 src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_create.py create mode 100644 src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_show.py create mode 100644 src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_update.py diff --git a/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/__init__.py b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/__init__.py index a3559a3f9bb..c401f439385 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/__init__.py +++ b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/__init__.py @@ -9,5 +9,8 @@ # flake8: noqa from .__cmd_group import * +from ._create import * from ._delete import * from ._list import * +from ._show import * +from ._update import * diff --git a/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_create.py b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_create.py new file mode 100644 index 00000000000..d3443642833 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_create.py @@ -0,0 +1,402 @@ +# -------------------------------------------------------------------------------------------- +# 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 * + + +class Create(AAZCommand): + """Create operation to create or update a capacity reservation group. When updating a capacity reservation group, only tags may be modified. Please refer to https://aka.ms/CapacityReservation for more details. + """ + + _aaz_info = { + "version": "2024-11-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/capacityreservationgroups/{}", "2024-11-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.capacity_reservation_group_name = AAZStrArg( + options=["-n", "--capacity-reservation-group", "--capacity-reservation-group-name"], + help="The name of the capacity reservation group.", + required=True, + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Parameters" + + _args_schema = cls._args_schema + _args_schema.location = AAZResourceLocationArg( + arg_group="Parameters", + help="Resource location", + required=True, + fmt=AAZResourceLocationArgFormat( + resource_group_arg="resource_group", + ), + ) + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="Parameters", + help="Space-separated tags: key[=value] [key[=value] ...].", + ) + _args_schema.zones = AAZListArg( + options=["--zones"], + arg_group="Parameters", + help="Availability Zones to use for this capacity reservation group. The zones can be assigned only during creation. If not provided, the group supports only regional resources in the region. If provided, enforces each capacity reservation in the group to be in one of the zones.", + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg() + + zones = cls._args_schema.zones + zones.Element = AAZStrArg() + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.sharing_profile = AAZObjectArg( + options=["--sharing-profile"], + arg_group="Properties", + help="Specifies the settings to enable sharing across subscriptions for the capacity reservation group resource. The capacity reservation group resource can generally be shared across subscriptions belonging to a single Azure AAD tenant or across AAD tenants if there is a trust relationship established between the tenants. Block capacity reservation does not support sharing across subscriptions. **Note:** Minimum api-version: 2023-09-01. Please refer to https://aka.ms/computereservationsharing for more details.", + ) + + sharing_profile = cls._args_schema.sharing_profile + sharing_profile.subscription_ids = AAZListArg( + options=["subscription-ids"], + help="Specifies an array of subscription resource IDs that capacity reservation group is shared with. Block Capacity Reservations does not support sharing across subscriptions. **Note:** Minimum api-version: 2023-09-01. Please refer to https://aka.ms/computereservationsharing for more details.", + ) + + subscription_ids = cls._args_schema.sharing_profile.subscription_ids + subscription_ids.Element = AAZObjectArg() + + _element = cls._args_schema.sharing_profile.subscription_ids.Element + _element.id = AAZStrArg( + options=["id"], + help="Resource Id", + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.CapacityReservationGroupsCreateOrUpdate(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 CapacityReservationGroupsCreateOrUpdate(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, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}", + **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( + "capacityReservationGroupName", self.ctx.args.capacity_reservation_group_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", "2024-11-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("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + _builder.set_prop("tags", AAZDictType, ".tags") + _builder.set_prop("zones", AAZListType, ".zones") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("sharingProfile", AAZObjectType, ".sharing_profile") + + sharing_profile = _builder.get(".properties.sharingProfile") + if sharing_profile is not None: + sharing_profile.set_prop("subscriptionIds", AAZListType, ".subscription_ids") + + subscription_ids = _builder.get(".properties.sharingProfile.subscriptionIds") + if subscription_ids is not None: + subscription_ids.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.sharingProfile.subscriptionIds[]") + if _elements is not None: + _elements.set_prop("id", AAZStrType, ".id") + + 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.properties = AAZObjectType( + flags={"client_flatten": 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() + + properties = cls._schema_on_200_201.properties + properties.capacity_reservations = AAZListType( + serialized_name="capacityReservations", + flags={"read_only": True}, + ) + properties.instance_view = AAZObjectType( + serialized_name="instanceView", + flags={"read_only": True}, + ) + properties.sharing_profile = AAZObjectType( + serialized_name="sharingProfile", + ) + properties.virtual_machines_associated = AAZListType( + serialized_name="virtualMachinesAssociated", + flags={"read_only": True}, + ) + + capacity_reservations = cls._schema_on_200_201.properties.capacity_reservations + capacity_reservations.Element = AAZObjectType() + _CreateHelper._build_schema_sub_resource_read_only_read(capacity_reservations.Element) + + instance_view = cls._schema_on_200_201.properties.instance_view + instance_view.capacity_reservations = AAZListType( + serialized_name="capacityReservations", + flags={"read_only": True}, + ) + instance_view.shared_subscription_ids = AAZListType( + serialized_name="sharedSubscriptionIds", + flags={"read_only": True}, + ) + + capacity_reservations = cls._schema_on_200_201.properties.instance_view.capacity_reservations + capacity_reservations.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.instance_view.capacity_reservations.Element + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.statuses = AAZListType() + _element.utilization_info = AAZObjectType( + serialized_name="utilizationInfo", + ) + + statuses = cls._schema_on_200_201.properties.instance_view.capacity_reservations.Element.statuses + statuses.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.instance_view.capacity_reservations.Element.statuses.Element + _element.code = AAZStrType() + _element.display_status = AAZStrType( + serialized_name="displayStatus", + ) + _element.level = AAZStrType() + _element.message = AAZStrType() + _element.time = AAZStrType() + + utilization_info = cls._schema_on_200_201.properties.instance_view.capacity_reservations.Element.utilization_info + utilization_info.current_capacity = AAZIntType( + serialized_name="currentCapacity", + flags={"read_only": True}, + ) + utilization_info.virtual_machines_allocated = AAZListType( + serialized_name="virtualMachinesAllocated", + flags={"read_only": True}, + ) + + virtual_machines_allocated = cls._schema_on_200_201.properties.instance_view.capacity_reservations.Element.utilization_info.virtual_machines_allocated + virtual_machines_allocated.Element = AAZObjectType() + _CreateHelper._build_schema_sub_resource_read_only_read(virtual_machines_allocated.Element) + + shared_subscription_ids = cls._schema_on_200_201.properties.instance_view.shared_subscription_ids + shared_subscription_ids.Element = AAZObjectType() + _CreateHelper._build_schema_sub_resource_read_only_read(shared_subscription_ids.Element) + + sharing_profile = cls._schema_on_200_201.properties.sharing_profile + sharing_profile.subscription_ids = AAZListType( + serialized_name="subscriptionIds", + ) + + subscription_ids = cls._schema_on_200_201.properties.sharing_profile.subscription_ids + subscription_ids.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.sharing_profile.subscription_ids.Element + _element.id = AAZStrType() + + virtual_machines_associated = cls._schema_on_200_201.properties.virtual_machines_associated + virtual_machines_associated.Element = AAZObjectType() + _CreateHelper._build_schema_sub_resource_read_only_read(virtual_machines_associated.Element) + + 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""" + + _schema_sub_resource_read_only_read = None + + @classmethod + def _build_schema_sub_resource_read_only_read(cls, _schema): + if cls._schema_sub_resource_read_only_read is not None: + _schema.id = cls._schema_sub_resource_read_only_read.id + return + + cls._schema_sub_resource_read_only_read = _schema_sub_resource_read_only_read = AAZObjectType() + + sub_resource_read_only_read = _schema_sub_resource_read_only_read + sub_resource_read_only_read.id = AAZStrType( + flags={"read_only": True}, + ) + + _schema.id = cls._schema_sub_resource_read_only_read.id + + +__all__ = ["Create"] diff --git a/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_show.py b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_show.py new file mode 100644 index 00000000000..a23cc452d8e --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_show.py @@ -0,0 +1,318 @@ +# -------------------------------------------------------------------------------------------- +# 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 * + + +class Show(AAZCommand): + """Get operation that retrieves information about a capacity reservation group. + """ + + _aaz_info = { + "version": "2024-11-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/capacityreservationgroups/{}", "2024-11-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.capacity_reservation_group_name = AAZStrArg( + options=["-n", "--capacity-reservation-group", "--capacity-reservation-group-name"], + help="The name of the capacity reservation group.", + 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' will retrieve the list of instance views of the capacity reservations under the capacity reservation group which is a snapshot of the runtime properties of a capacity reservation 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.CapacityReservationGroupsGet(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 CapacityReservationGroupsGet(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/capacityReservationGroups/{capacityReservationGroupName}", + **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( + "capacityReservationGroupName", self.ctx.args.capacity_reservation_group_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", "2024-11-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.properties = AAZObjectType( + flags={"client_flatten": 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() + + properties = cls._schema_on_200.properties + properties.capacity_reservations = AAZListType( + serialized_name="capacityReservations", + flags={"read_only": True}, + ) + properties.instance_view = AAZObjectType( + serialized_name="instanceView", + flags={"read_only": True}, + ) + properties.sharing_profile = AAZObjectType( + serialized_name="sharingProfile", + ) + properties.virtual_machines_associated = AAZListType( + serialized_name="virtualMachinesAssociated", + flags={"read_only": True}, + ) + + capacity_reservations = cls._schema_on_200.properties.capacity_reservations + capacity_reservations.Element = AAZObjectType() + _ShowHelper._build_schema_sub_resource_read_only_read(capacity_reservations.Element) + + instance_view = cls._schema_on_200.properties.instance_view + instance_view.capacity_reservations = AAZListType( + serialized_name="capacityReservations", + flags={"read_only": True}, + ) + instance_view.shared_subscription_ids = AAZListType( + serialized_name="sharedSubscriptionIds", + flags={"read_only": True}, + ) + + capacity_reservations = cls._schema_on_200.properties.instance_view.capacity_reservations + capacity_reservations.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.instance_view.capacity_reservations.Element + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.statuses = AAZListType() + _element.utilization_info = AAZObjectType( + serialized_name="utilizationInfo", + ) + + statuses = cls._schema_on_200.properties.instance_view.capacity_reservations.Element.statuses + statuses.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.instance_view.capacity_reservations.Element.statuses.Element + _element.code = AAZStrType() + _element.display_status = AAZStrType( + serialized_name="displayStatus", + ) + _element.level = AAZStrType() + _element.message = AAZStrType() + _element.time = AAZStrType() + + utilization_info = cls._schema_on_200.properties.instance_view.capacity_reservations.Element.utilization_info + utilization_info.current_capacity = AAZIntType( + serialized_name="currentCapacity", + flags={"read_only": True}, + ) + utilization_info.virtual_machines_allocated = AAZListType( + serialized_name="virtualMachinesAllocated", + flags={"read_only": True}, + ) + + virtual_machines_allocated = cls._schema_on_200.properties.instance_view.capacity_reservations.Element.utilization_info.virtual_machines_allocated + virtual_machines_allocated.Element = AAZObjectType() + _ShowHelper._build_schema_sub_resource_read_only_read(virtual_machines_allocated.Element) + + shared_subscription_ids = cls._schema_on_200.properties.instance_view.shared_subscription_ids + shared_subscription_ids.Element = AAZObjectType() + _ShowHelper._build_schema_sub_resource_read_only_read(shared_subscription_ids.Element) + + sharing_profile = cls._schema_on_200.properties.sharing_profile + sharing_profile.subscription_ids = AAZListType( + serialized_name="subscriptionIds", + ) + + subscription_ids = cls._schema_on_200.properties.sharing_profile.subscription_ids + subscription_ids.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.sharing_profile.subscription_ids.Element + _element.id = AAZStrType() + + virtual_machines_associated = cls._schema_on_200.properties.virtual_machines_associated + virtual_machines_associated.Element = AAZObjectType() + _ShowHelper._build_schema_sub_resource_read_only_read(virtual_machines_associated.Element) + + 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""" + + _schema_sub_resource_read_only_read = None + + @classmethod + def _build_schema_sub_resource_read_only_read(cls, _schema): + if cls._schema_sub_resource_read_only_read is not None: + _schema.id = cls._schema_sub_resource_read_only_read.id + return + + cls._schema_sub_resource_read_only_read = _schema_sub_resource_read_only_read = AAZObjectType() + + sub_resource_read_only_read = _schema_sub_resource_read_only_read + sub_resource_read_only_read.id = AAZStrType( + flags={"read_only": True}, + ) + + _schema.id = cls._schema_sub_resource_read_only_read.id + + +__all__ = ["Show"] diff --git a/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_update.py b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_update.py new file mode 100644 index 00000000000..1953a16d945 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/capacity/reservation/group/_update.py @@ -0,0 +1,551 @@ +# -------------------------------------------------------------------------------------------- +# 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 * + + +class Update(AAZCommand): + """Update operation to create or update a capacity reservation group. When updating a capacity reservation group, only tags may be modified. Please refer to https://aka.ms/CapacityReservation for more details. + """ + + _aaz_info = { + "version": "2024-11-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/capacityreservationgroups/{}", "2024-11-01"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + 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.capacity_reservation_group_name = AAZStrArg( + options=["-n", "--capacity-reservation-group", "--capacity-reservation-group-name"], + help="The name of the capacity reservation group.", + required=True, + id_part="name", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Parameters" + + _args_schema = cls._args_schema + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="Parameters", + help="Space-separated tags: key[=value] [key[=value] ...].", + nullable=True, + ) + _args_schema.zones = AAZListArg( + options=["--zones"], + arg_group="Parameters", + help="Availability Zones to use for this capacity reservation group. The zones can be assigned only during creation. If not provided, the group supports only regional resources in the region. If provided, enforces each capacity reservation in the group to be in one of the 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 "Properties" + + _args_schema = cls._args_schema + _args_schema.sharing_profile = AAZObjectArg( + options=["--sharing-profile"], + arg_group="Properties", + help="Specifies the settings to enable sharing across subscriptions for the capacity reservation group resource. The capacity reservation group resource can generally be shared across subscriptions belonging to a single Azure AAD tenant or across AAD tenants if there is a trust relationship established between the tenants. Block capacity reservation does not support sharing across subscriptions. **Note:** Minimum api-version: 2023-09-01. Please refer to https://aka.ms/computereservationsharing for more details.", + nullable=True, + ) + + sharing_profile = cls._args_schema.sharing_profile + sharing_profile.subscription_ids = AAZListArg( + options=["subscription-ids"], + help="Specifies an array of subscription resource IDs that capacity reservation group is shared with. Block Capacity Reservations does not support sharing across subscriptions. **Note:** Minimum api-version: 2023-09-01. Please refer to https://aka.ms/computereservationsharing for more details.", + nullable=True, + ) + + subscription_ids = cls._args_schema.sharing_profile.subscription_ids + subscription_ids.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.sharing_profile.subscription_ids.Element + _element.id = AAZStrArg( + options=["id"], + help="Resource Id", + nullable=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.CapacityReservationGroupsGet(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) + self.CapacityReservationGroupsCreateOrUpdate(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 CapacityReservationGroupsGet(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/capacityReservationGroups/{capacityReservationGroupName}", + **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( + "capacityReservationGroupName", self.ctx.args.capacity_reservation_group_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", "2024-11-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_capacity_reservation_group_read(cls._schema_on_200) + + return cls._schema_on_200 + + class CapacityReservationGroupsCreateOrUpdate(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, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}", + **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( + "capacityReservationGroupName", self.ctx.args.capacity_reservation_group_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", "2024-11-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_capacity_reservation_group_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("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + _builder.set_prop("tags", AAZDictType, ".tags") + _builder.set_prop("zones", AAZListType, ".zones") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("sharingProfile", AAZObjectType, ".sharing_profile") + + sharing_profile = _builder.get(".properties.sharingProfile") + if sharing_profile is not None: + sharing_profile.set_prop("subscriptionIds", AAZListType, ".subscription_ids") + + subscription_ids = _builder.get(".properties.sharingProfile.subscriptionIds") + if subscription_ids is not None: + subscription_ids.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.sharingProfile.subscriptionIds[]") + if _elements is not None: + _elements.set_prop("id", AAZStrType, ".id") + + 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_capacity_reservation_group_read = None + + @classmethod + def _build_schema_capacity_reservation_group_read(cls, _schema): + if cls._schema_capacity_reservation_group_read is not None: + _schema.id = cls._schema_capacity_reservation_group_read.id + _schema.location = cls._schema_capacity_reservation_group_read.location + _schema.name = cls._schema_capacity_reservation_group_read.name + _schema.properties = cls._schema_capacity_reservation_group_read.properties + _schema.system_data = cls._schema_capacity_reservation_group_read.system_data + _schema.tags = cls._schema_capacity_reservation_group_read.tags + _schema.type = cls._schema_capacity_reservation_group_read.type + _schema.zones = cls._schema_capacity_reservation_group_read.zones + return + + cls._schema_capacity_reservation_group_read = _schema_capacity_reservation_group_read = AAZObjectType() + + capacity_reservation_group_read = _schema_capacity_reservation_group_read + capacity_reservation_group_read.id = AAZStrType( + flags={"read_only": True}, + ) + capacity_reservation_group_read.location = AAZStrType( + flags={"required": True}, + ) + capacity_reservation_group_read.name = AAZStrType( + flags={"read_only": True}, + ) + capacity_reservation_group_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + capacity_reservation_group_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + capacity_reservation_group_read.tags = AAZDictType() + capacity_reservation_group_read.type = AAZStrType( + flags={"read_only": True}, + ) + capacity_reservation_group_read.zones = AAZListType() + + properties = _schema_capacity_reservation_group_read.properties + properties.capacity_reservations = AAZListType( + serialized_name="capacityReservations", + flags={"read_only": True}, + ) + properties.instance_view = AAZObjectType( + serialized_name="instanceView", + flags={"read_only": True}, + ) + properties.sharing_profile = AAZObjectType( + serialized_name="sharingProfile", + ) + properties.virtual_machines_associated = AAZListType( + serialized_name="virtualMachinesAssociated", + flags={"read_only": True}, + ) + + capacity_reservations = _schema_capacity_reservation_group_read.properties.capacity_reservations + capacity_reservations.Element = AAZObjectType() + cls._build_schema_sub_resource_read_only_read(capacity_reservations.Element) + + instance_view = _schema_capacity_reservation_group_read.properties.instance_view + instance_view.capacity_reservations = AAZListType( + serialized_name="capacityReservations", + flags={"read_only": True}, + ) + instance_view.shared_subscription_ids = AAZListType( + serialized_name="sharedSubscriptionIds", + flags={"read_only": True}, + ) + + capacity_reservations = _schema_capacity_reservation_group_read.properties.instance_view.capacity_reservations + capacity_reservations.Element = AAZObjectType() + + _element = _schema_capacity_reservation_group_read.properties.instance_view.capacity_reservations.Element + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.statuses = AAZListType() + _element.utilization_info = AAZObjectType( + serialized_name="utilizationInfo", + ) + + statuses = _schema_capacity_reservation_group_read.properties.instance_view.capacity_reservations.Element.statuses + statuses.Element = AAZObjectType() + + _element = _schema_capacity_reservation_group_read.properties.instance_view.capacity_reservations.Element.statuses.Element + _element.code = AAZStrType() + _element.display_status = AAZStrType( + serialized_name="displayStatus", + ) + _element.level = AAZStrType() + _element.message = AAZStrType() + _element.time = AAZStrType() + + utilization_info = _schema_capacity_reservation_group_read.properties.instance_view.capacity_reservations.Element.utilization_info + utilization_info.current_capacity = AAZIntType( + serialized_name="currentCapacity", + flags={"read_only": True}, + ) + utilization_info.virtual_machines_allocated = AAZListType( + serialized_name="virtualMachinesAllocated", + flags={"read_only": True}, + ) + + virtual_machines_allocated = _schema_capacity_reservation_group_read.properties.instance_view.capacity_reservations.Element.utilization_info.virtual_machines_allocated + virtual_machines_allocated.Element = AAZObjectType() + cls._build_schema_sub_resource_read_only_read(virtual_machines_allocated.Element) + + shared_subscription_ids = _schema_capacity_reservation_group_read.properties.instance_view.shared_subscription_ids + shared_subscription_ids.Element = AAZObjectType() + cls._build_schema_sub_resource_read_only_read(shared_subscription_ids.Element) + + sharing_profile = _schema_capacity_reservation_group_read.properties.sharing_profile + sharing_profile.subscription_ids = AAZListType( + serialized_name="subscriptionIds", + ) + + subscription_ids = _schema_capacity_reservation_group_read.properties.sharing_profile.subscription_ids + subscription_ids.Element = AAZObjectType() + + _element = _schema_capacity_reservation_group_read.properties.sharing_profile.subscription_ids.Element + _element.id = AAZStrType() + + virtual_machines_associated = _schema_capacity_reservation_group_read.properties.virtual_machines_associated + virtual_machines_associated.Element = AAZObjectType() + cls._build_schema_sub_resource_read_only_read(virtual_machines_associated.Element) + + system_data = _schema_capacity_reservation_group_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_capacity_reservation_group_read.tags + tags.Element = AAZStrType() + + zones = _schema_capacity_reservation_group_read.zones + zones.Element = AAZStrType() + + _schema.id = cls._schema_capacity_reservation_group_read.id + _schema.location = cls._schema_capacity_reservation_group_read.location + _schema.name = cls._schema_capacity_reservation_group_read.name + _schema.properties = cls._schema_capacity_reservation_group_read.properties + _schema.system_data = cls._schema_capacity_reservation_group_read.system_data + _schema.tags = cls._schema_capacity_reservation_group_read.tags + _schema.type = cls._schema_capacity_reservation_group_read.type + _schema.zones = cls._schema_capacity_reservation_group_read.zones + + _schema_sub_resource_read_only_read = None + + @classmethod + def _build_schema_sub_resource_read_only_read(cls, _schema): + if cls._schema_sub_resource_read_only_read is not None: + _schema.id = cls._schema_sub_resource_read_only_read.id + return + + cls._schema_sub_resource_read_only_read = _schema_sub_resource_read_only_read = AAZObjectType() + + sub_resource_read_only_read = _schema_sub_resource_read_only_read + sub_resource_read_only_read.id = AAZStrType( + flags={"read_only": True}, + ) + + _schema.id = cls._schema_sub_resource_read_only_read.id + + +__all__ = ["Update"] From d23d86860b53e4d9149c5d9912b347260da44d4d Mon Sep 17 00:00:00 2001 From: william051200 Date: Thu, 5 Mar 2026 14:43:29 +0800 Subject: [PATCH 2/9] Migrate capacity reservation group create --- .../azure/cli/command_modules/vm/commands.py | 3 +-- .../azure/cli/command_modules/vm/custom.py | 27 +++++++++++++------ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/vm/commands.py b/src/azure-cli/azure/cli/command_modules/vm/commands.py index 165e8664a6c..475bc723577 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/commands.py +++ b/src/azure-cli/azure/cli/command_modules/vm/commands.py @@ -534,8 +534,7 @@ def load_command_table(self, _): except APIVersionException: pass - with self.command_group('capacity reservation group', capacity_reservation_groups_sdk, min_api='2021-04-01', - client_factory=cf_capacity_reservation_groups) as g: + with self.command_group('capacity reservation group') as g: g.custom_command('create', 'create_capacity_reservation_group') g.custom_command('update', 'update_capacity_reservation_group') g.custom_show_command('show', 'show_capacity_reservation_group') diff --git a/src/azure-cli/azure/cli/command_modules/vm/custom.py b/src/azure-cli/azure/cli/command_modules/vm/custom.py index 6c6f602148b..2956769d591 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/custom.py +++ b/src/azure-cli/azure/cli/command_modules/vm/custom.py @@ -6243,17 +6243,28 @@ def gallery_application_version_update(client, gallery_application_version=gallery_application_version) -def create_capacity_reservation_group(cmd, client, resource_group_name, capacity_reservation_group_name, location=None, +def create_capacity_reservation_group(cmd, resource_group_name, capacity_reservation_group_name, location=None, tags=None, zones=None, sharing_profile=None): - CapacityReservationGroup = cmd.get_models('CapacityReservationGroup') + from .aaz.latest.capacity.reservation.group import Create as CapacityReservationGroupCreate + command_args = { + 'capacity_reservation_group_name': capacity_reservation_group_name, + 'resource_group': resource_group_name, + } + + if location: + command_args['location'] = location + + if tags: + command_args['tags'] = tags + + if zones: + command_args['zones'] = zones + if sharing_profile is not None: subscription_ids = [{'id': sub_id} for sub_id in sharing_profile] - sharing_profile = {'subscriptionIds': subscription_ids} - capacity_reservation_group = CapacityReservationGroup(location=location, tags=tags, - zones=zones, sharing_profile=sharing_profile) - return client.create_or_update(resource_group_name=resource_group_name, - capacity_reservation_group_name=capacity_reservation_group_name, - parameters=capacity_reservation_group) + command_args['sharing_profile'] = {'subscription_ids': subscription_ids} + + return CapacityReservationGroupCreate(cli_ctx=cmd.cli_ctx)(command_args=command_args) def update_capacity_reservation_group(cmd, client, resource_group_name, capacity_reservation_group_name, tags=None, From d301460d66380e4f46e003754aace5e5209903b1 Mon Sep 17 00:00:00 2001 From: william051200 Date: Thu, 5 Mar 2026 14:45:25 +0800 Subject: [PATCH 3/9] Migrate capacity reservation group update --- .../azure/cli/command_modules/vm/custom.py | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/vm/custom.py b/src/azure-cli/azure/cli/command_modules/vm/custom.py index 2956769d591..c7d8f811e10 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/custom.py +++ b/src/azure-cli/azure/cli/command_modules/vm/custom.py @@ -6267,16 +6267,22 @@ def create_capacity_reservation_group(cmd, resource_group_name, capacity_reserva return CapacityReservationGroupCreate(cli_ctx=cmd.cli_ctx)(command_args=command_args) -def update_capacity_reservation_group(cmd, client, resource_group_name, capacity_reservation_group_name, tags=None, +def update_capacity_reservation_group(cmd, resource_group_name, capacity_reservation_group_name, tags=None, sharing_profile=None): - CapacityReservationGroupUpdate = cmd.get_models('CapacityReservationGroupUpdate') + from .aaz.latest.capacity.reservation.group import Update as CapacityReservationGroupUpdate + command_args = { + 'capacity_reservation_group_name': capacity_reservation_group_name, + 'resource_group': resource_group_name, + } + + if tags: + command_args['tags'] = tags + if sharing_profile is not None: subscription_ids = [{'id': sub_id} for sub_id in sharing_profile] - sharing_profile = {'subscriptionIds': subscription_ids} - capacity_reservation_group = CapacityReservationGroupUpdate(tags=tags, sharing_profile=sharing_profile) - return client.update(resource_group_name=resource_group_name, - capacity_reservation_group_name=capacity_reservation_group_name, - parameters=capacity_reservation_group) + command_args['sharing_profile'] = {'subscription_ids': subscription_ids} + + return CapacityReservationGroupUpdate(cli_ctx=cmd.cli_ctx)(command_args=command_args) def show_capacity_reservation_group(client, resource_group_name, capacity_reservation_group_name, From 3c43f65037ffa57a32db8273ef5b20dac2510897 Mon Sep 17 00:00:00 2001 From: william051200 Date: Thu, 5 Mar 2026 14:47:08 +0800 Subject: [PATCH 4/9] Migrate capacity reservation group show --- .../azure/cli/command_modules/vm/custom.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/vm/custom.py b/src/azure-cli/azure/cli/command_modules/vm/custom.py index c7d8f811e10..2a8aee471b1 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/custom.py +++ b/src/azure-cli/azure/cli/command_modules/vm/custom.py @@ -6285,14 +6285,17 @@ def update_capacity_reservation_group(cmd, resource_group_name, capacity_reserva return CapacityReservationGroupUpdate(cli_ctx=cmd.cli_ctx)(command_args=command_args) -def show_capacity_reservation_group(client, resource_group_name, capacity_reservation_group_name, - instance_view=None): - expand = None +def show_capacity_reservation_group(cmd, resource_group_name, capacity_reservation_group_name, instance_view=None): + from .aaz.latest.capacity.reservation.group import Show as CapacityReservationGroupShow + command_args = { + 'capacity_reservation_group_name': capacity_reservation_group_name, + 'resource_group': resource_group_name + } + if instance_view: - expand = 'instanceView' - return client.get(resource_group_name=resource_group_name, - capacity_reservation_group_name=capacity_reservation_group_name, - expand=expand) + command_args['expand'] = 'instanceView' + + return CapacityReservationGroupShow(cli_ctx=cmd.cli_ctx)(command_args=command_args) def set_vm_applications(cmd, vm_name, resource_group_name, application_version_ids, order_applications=False, application_configuration_overrides=None, treat_deployment_as_failure=None, enable_automatic_upgrade=None, no_wait=False): From 5105765c7d94641b794520d91c8558b5e98597e1 Mon Sep 17 00:00:00 2001 From: william051200 Date: Fri, 6 Mar 2026 08:01:26 +0800 Subject: [PATCH 5/9] Update code --- src/azure-cli/azure/cli/command_modules/vm/custom.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/vm/custom.py b/src/azure-cli/azure/cli/command_modules/vm/custom.py index 2a8aee471b1..363ebff01e2 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/custom.py +++ b/src/azure-cli/azure/cli/command_modules/vm/custom.py @@ -6249,16 +6249,14 @@ def create_capacity_reservation_group(cmd, resource_group_name, capacity_reserva command_args = { 'capacity_reservation_group_name': capacity_reservation_group_name, 'resource_group': resource_group_name, + 'location': location or _get_resource_group_location(cmd.cli_ctx, resource_group_name) } - if location: - command_args['location'] = location - - if tags: - command_args['tags'] = tags + if tags is not None: + command_args['tags'] = tags or {} - if zones: - command_args['zones'] = zones + if zones is not None: + command_args['zones'] = zones or [] if sharing_profile is not None: subscription_ids = [{'id': sub_id} for sub_id in sharing_profile] From e05853ebfa0fe64caae742369fe4d186e4e0d6ae Mon Sep 17 00:00:00 2001 From: william051200 Date: Fri, 6 Mar 2026 08:02:34 +0800 Subject: [PATCH 6/9] Remove unused import --- .../azure/cli/command_modules/vm/_client_factory.py | 4 ---- src/azure-cli/azure/cli/command_modules/vm/commands.py | 8 +------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/vm/_client_factory.py b/src/azure-cli/azure/cli/command_modules/vm/_client_factory.py index ee6329e9129..eabe1af77b2 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/_client_factory.py +++ b/src/azure-cli/azure/cli/command_modules/vm/_client_factory.py @@ -151,9 +151,5 @@ def cf_community_gallery_image_version(cli_ctx, *_): return cf_vm_cl(cli_ctx).community_gallery_image_versions -def cf_capacity_reservation_groups(cli_ctx, *_): - return cf_vm_cl(cli_ctx).capacity_reservation_groups - - def cf_capacity_reservations(cli_ctx, *_): return cf_vm_cl(cli_ctx).capacity_reservations diff --git a/src/azure-cli/azure/cli/command_modules/vm/commands.py b/src/azure-cli/azure/cli/command_modules/vm/commands.py index 475bc723577..df1cd70cf3e 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/commands.py +++ b/src/azure-cli/azure/cli/command_modules/vm/commands.py @@ -10,8 +10,7 @@ cf_galleries, cf_gallery_images, cf_gallery_image_versions, cf_proximity_placement_groups, cf_dedicated_hosts, cf_dedicated_host_groups, - cf_log_analytics_data_plane, - cf_capacity_reservation_groups, cf_capacity_reservations, + cf_log_analytics_data_plane, cf_capacity_reservations, cf_community_gallery) from azure.cli.command_modules.vm._format import ( transform_ip_addresses, transform_vm, transform_vm_create_output, transform_vm_usage_list, transform_vm_list, @@ -170,11 +169,6 @@ def load_command_table(self, _): exception_handler=monitor_exception_handler ) - capacity_reservation_groups_sdk = CliCommandType( - operations_tmpl='azure.mgmt.compute.operations#CapacityReservationGroupsOperations.{}', - client_factory=cf_capacity_reservation_groups - ) - capacity_reservations_sdk = CliCommandType( operations_tmpl='azure.mgmt.compute.operations#CapacityReservationsOperations.{}', client_factory=cf_capacity_reservations From 87767e0ba7195ba09779a07543f94b4e10a02902 Mon Sep 17 00:00:00 2001 From: william051200 Date: Fri, 6 Mar 2026 10:27:12 +0800 Subject: [PATCH 7/9] Update code --- src/azure-cli/azure/cli/command_modules/vm/custom.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/vm/custom.py b/src/azure-cli/azure/cli/command_modules/vm/custom.py index 363ebff01e2..b38eb959a89 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/custom.py +++ b/src/azure-cli/azure/cli/command_modules/vm/custom.py @@ -6243,13 +6243,13 @@ def gallery_application_version_update(client, gallery_application_version=gallery_application_version) -def create_capacity_reservation_group(cmd, resource_group_name, capacity_reservation_group_name, location=None, - tags=None, zones=None, sharing_profile=None): +def create_capacity_reservation_group(cmd, resource_group_name, capacity_reservation_group_name, location, tags=None, + zones=None, sharing_profile=None): from .aaz.latest.capacity.reservation.group import Create as CapacityReservationGroupCreate command_args = { 'capacity_reservation_group_name': capacity_reservation_group_name, 'resource_group': resource_group_name, - 'location': location or _get_resource_group_location(cmd.cli_ctx, resource_group_name) + 'location': location } if tags is not None: From 254f9057f53da5c75455e6f014aaa2391057c95c Mon Sep 17 00:00:00 2001 From: william051200 Date: Fri, 6 Mar 2026 11:14:15 +0800 Subject: [PATCH 8/9] Update code --- src/azure-cli/azure/cli/command_modules/vm/custom.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/vm/custom.py b/src/azure-cli/azure/cli/command_modules/vm/custom.py index b38eb959a89..2751cf0f0a8 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/custom.py +++ b/src/azure-cli/azure/cli/command_modules/vm/custom.py @@ -6243,15 +6243,17 @@ def gallery_application_version_update(client, gallery_application_version=gallery_application_version) -def create_capacity_reservation_group(cmd, resource_group_name, capacity_reservation_group_name, location, tags=None, - zones=None, sharing_profile=None): +def create_capacity_reservation_group(cmd, resource_group_name, capacity_reservation_group_name, location=None, + tags=None, zones=None, sharing_profile=None): from .aaz.latest.capacity.reservation.group import Create as CapacityReservationGroupCreate command_args = { 'capacity_reservation_group_name': capacity_reservation_group_name, 'resource_group': resource_group_name, - 'location': location } + if location: + command_args['location'] = location + if tags is not None: command_args['tags'] = tags or {} From 08ea0a1b6e6e1940c05224a3d4d6eedc7c9493f8 Mon Sep 17 00:00:00 2001 From: william051200 Date: Thu, 26 Mar 2026 07:28:23 +0800 Subject: [PATCH 9/9] Update code --- .../azure/cli/command_modules/vm/custom.py | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/vm/custom.py b/src/azure-cli/azure/cli/command_modules/vm/custom.py index 2751cf0f0a8..f84f6d9d16f 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/custom.py +++ b/src/azure-cli/azure/cli/command_modules/vm/custom.py @@ -6249,20 +6249,16 @@ def create_capacity_reservation_group(cmd, resource_group_name, capacity_reserva command_args = { 'capacity_reservation_group_name': capacity_reservation_group_name, 'resource_group': resource_group_name, + 'location': location, + 'tags': tags, + 'zones': zones } - if location: - command_args['location'] = location - - if tags is not None: - command_args['tags'] = tags or {} - - if zones is not None: - command_args['zones'] = zones or [] - if sharing_profile is not None: subscription_ids = [{'id': sub_id} for sub_id in sharing_profile] command_args['sharing_profile'] = {'subscription_ids': subscription_ids} + else: + command_args['sharing_profile'] = sharing_profile return CapacityReservationGroupCreate(cli_ctx=cmd.cli_ctx)(command_args=command_args) @@ -6273,14 +6269,14 @@ def update_capacity_reservation_group(cmd, resource_group_name, capacity_reserva command_args = { 'capacity_reservation_group_name': capacity_reservation_group_name, 'resource_group': resource_group_name, + 'tags': tags } - if tags: - command_args['tags'] = tags - if sharing_profile is not None: subscription_ids = [{'id': sub_id} for sub_id in sharing_profile] command_args['sharing_profile'] = {'subscription_ids': subscription_ids} + else: + command_args['sharing_profile'] = sharing_profile return CapacityReservationGroupUpdate(cli_ctx=cmd.cli_ctx)(command_args=command_args)