diff --git a/src/purestorageblock/HISTORY.rst b/src/purestorageblock/HISTORY.rst new file mode 100644 index 00000000000..abbff5a61a7 --- /dev/null +++ b/src/purestorageblock/HISTORY.rst @@ -0,0 +1,8 @@ +.. :changelog: + +Release History +=============== + +1.0.0b1 +++++++ +* Initial release. \ No newline at end of file diff --git a/src/purestorageblock/README.md b/src/purestorageblock/README.md new file mode 100644 index 00000000000..aa4c5a34b2a --- /dev/null +++ b/src/purestorageblock/README.md @@ -0,0 +1,5 @@ +# Azure CLI Purestorageblock Extension # +This is an extension to Azure CLI to manage Purestorageblock resources. + +## How to use ## +Please add commands usage here. \ No newline at end of file diff --git a/src/purestorageblock/azext_purestorageblock/__init__.py b/src/purestorageblock/azext_purestorageblock/__init__.py new file mode 100644 index 00000000000..1dbbb631fcc --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/__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_purestorageblock._help import helps # pylint: disable=unused-import + + +class PurestorageblockCommandsLoader(AzCommandsLoader): + + def __init__(self, cli_ctx=None): + from azure.cli.core.commands import CliCommandType + custom_command_type = CliCommandType( + operations_tmpl='azext_purestorageblock.custom#{}') + super().__init__(cli_ctx=cli_ctx, + custom_command_type=custom_command_type) + + def load_command_table(self, args): + from azext_purestorageblock.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_purestorageblock._params import load_arguments + load_arguments(self, command) + + +COMMAND_LOADER_CLS = PurestorageblockCommandsLoader diff --git a/src/purestorageblock/azext_purestorageblock/_help.py b/src/purestorageblock/azext_purestorageblock/_help.py new file mode 100644 index 00000000000..126d5d00714 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/_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/purestorageblock/azext_purestorageblock/_params.py b/src/purestorageblock/azext_purestorageblock/_params.py new file mode 100644 index 00000000000..cfcec717c9c --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/_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/purestorageblock/azext_purestorageblock/aaz/__init__.py b/src/purestorageblock/azext_purestorageblock/aaz/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/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/purestorageblock/azext_purestorageblock/aaz/latest/__init__.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/__init__.py new file mode 100644 index 00000000000..f6acc11aa4e --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/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/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/__cmd_group.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/__cmd_group.py new file mode 100644 index 00000000000..4279a08d0ad --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/__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( + "purestorageblock", +) +class __CMDGroup(AAZCommandGroup): + """Manage Pure Storage Block Resources + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/__init__.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/__init__.py new file mode 100644 index 00000000000..5a9d61963d6 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/__init__.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: skip-file +# flake8: noqa + +from .__cmd_group import * diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/__cmd_group.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/__cmd_group.py new file mode 100644 index 00000000000..4b0aca8c7cc --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/__cmd_group.py @@ -0,0 +1,24 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock reservation", + is_preview=True, +) +class __CMDGroup(AAZCommandGroup): + """Manage Reservation + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/__init__.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/__init__.py new file mode 100644 index 00000000000..6e133313ce6 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/__init__.py @@ -0,0 +1,20 @@ +# -------------------------------------------------------------------------------------------- +# 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 ._get_billing_report import * +from ._get_billing_status import * +from ._get_resource_limit import * +from ._list import * +from ._show import * +from ._update import * +from ._wait import * diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_create.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_create.py new file mode 100644 index 00000000000..adeee4bfa5d --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_create.py @@ -0,0 +1,542 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock reservation create", + is_preview=True, +) +class Create(AAZCommand): + """Create a reservation + + :example: Reservations_Create + az purestorageblock reservation create --resource-group rgpurestorage --reservation-name storagePoolname --marketplace "{subscription-status:PendingFulfillmentStart,offer-details:{publisher-id:vejockfhoavaqjvhtwvctdnaefvw,offer-id:efojrbphbimq,plan-id:caj,plan-name:lvvzchm,term-unit:ose,term-id:ucyvzkedohfjazifxweylhnbcmeza}}" --user "{first-name:bucysqbbclhwxrzig,last-name:fnsvxlop,email-address:abc@example.com,upn:ekqbqgpdylggddusuiifrnjcwiefay,phone-number:jglihtgsacdxocc,company-details:{company-name:nrndfzmrakk,address:{address-line1:f,address-line2:gycfosmknj,city:qxzhxjoatyuajoljfkd,state:dnusygshfvmebpmcjsd,country:nuexbknolfphlfguyzq,postal-code:yjzqichkfffbdtcswzolmrl}}}" --tags "{key1110:euhfdmtfpucwurtu}" --location jynnbjysbc + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/reservations/{}", "2024-11-01-preview"], + ] + } + + 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.reservation_name = AAZStrArg( + options=["-n", "--name", "--reservation-name"], + help="Name of the reservation.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.marketplace = AAZObjectArg( + options=["--marketplace"], + arg_group="Properties", + help="Marketplace details", + ) + _args_schema.user = AAZObjectArg( + options=["--user"], + arg_group="Properties", + help="User details", + ) + + marketplace = cls._args_schema.marketplace + marketplace.offer_details = AAZObjectArg( + options=["offer-details"], + help="Offer details of the marketplace subscription", + required=True, + ) + marketplace.subscription_status = AAZStrArg( + options=["subscription-status"], + help="Marketplace subscription status", + enum={"PendingFulfillmentStart": "PendingFulfillmentStart", "Subscribed": "Subscribed", "Suspended": "Suspended", "Unsubscribed": "Unsubscribed"}, + ) + + offer_details = cls._args_schema.marketplace.offer_details + offer_details.offer_id = AAZStrArg( + options=["offer-id"], + help="Offer ID for the marketplace offer", + required=True, + ) + offer_details.plan_id = AAZStrArg( + options=["plan-id"], + help="Plan ID for the marketplace offer", + required=True, + ) + offer_details.plan_name = AAZStrArg( + options=["plan-name"], + help="Plan Name for the marketplace offer", + ) + offer_details.publisher_id = AAZStrArg( + options=["publisher-id"], + help="Publisher ID for the marketplace offer", + required=True, + ) + offer_details.term_id = AAZStrArg( + options=["term-id"], + help="Term ID for the marketplace offer", + ) + offer_details.term_unit = AAZStrArg( + options=["term-unit"], + help="Term Unit for the marketplace offer", + ) + + user = cls._args_schema.user + user.company_details = AAZObjectArg( + options=["company-details"], + help="Company details", + ) + user.email_address = AAZStrArg( + options=["email-address"], + help="Email address", + required=True, + fmt=AAZStrArgFormat( + pattern="^[A-Za-z0-9._%+-]+@(?:[A-Za-z0-9-]+\\.)+[A-Za-z]{2,}$", + ), + ) + user.first_name = AAZStrArg( + options=["first-name"], + help="First name", + required=True, + ) + user.last_name = AAZStrArg( + options=["last-name"], + help="Last name", + required=True, + ) + user.phone_number = AAZStrArg( + options=["phone-number"], + help="Phone number", + ) + user.upn = AAZStrArg( + options=["upn"], + help="Principal name", + ) + + company_details = cls._args_schema.user.company_details + company_details.address = AAZObjectArg( + options=["address"], + help="Company address", + ) + company_details.company_name = AAZStrArg( + options=["company-name"], + help="Company name", + required=True, + ) + + address = cls._args_schema.user.company_details.address + address.address_line1 = AAZStrArg( + options=["address-line1"], + help="Address line 1", + required=True, + ) + address.address_line2 = AAZStrArg( + options=["address-line2"], + help="Address line 2", + ) + address.city = AAZStrArg( + options=["city"], + help="Name of the city", + required=True, + ) + address.country = AAZStrArg( + options=["country"], + help="Name of the country", + required=True, + ) + address.postal_code = AAZStrArg( + options=["postal-code"], + help="Postal code", + required=True, + ) + address.state = AAZStrArg( + options=["state"], + help="State (if any)", + required=True, + ) + + # 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.", + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.ReservationsCreate(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 ReservationsCreate(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": "azure-async-operation"}, + 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": "azure-async-operation"}, + 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/PureStorage.Block/reservations/{reservationName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "reservationName", self.ctx.args.reservation_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-preview", + 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") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("marketplace", AAZObjectType, ".marketplace", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("user", AAZObjectType, ".user", typ_kwargs={"flags": {"required": True}}) + + marketplace = _builder.get(".properties.marketplace") + if marketplace is not None: + marketplace.set_prop("offerDetails", AAZObjectType, ".offer_details", typ_kwargs={"flags": {"required": True}}) + marketplace.set_prop("subscriptionStatus", AAZStrType, ".subscription_status") + + offer_details = _builder.get(".properties.marketplace.offerDetails") + if offer_details is not None: + offer_details.set_prop("offerId", AAZStrType, ".offer_id", typ_kwargs={"flags": {"required": True}}) + offer_details.set_prop("planId", AAZStrType, ".plan_id", typ_kwargs={"flags": {"required": True}}) + offer_details.set_prop("planName", AAZStrType, ".plan_name") + offer_details.set_prop("publisherId", AAZStrType, ".publisher_id", typ_kwargs={"flags": {"required": True}}) + offer_details.set_prop("termId", AAZStrType, ".term_id") + offer_details.set_prop("termUnit", AAZStrType, ".term_unit") + + user = _builder.get(".properties.user") + if user is not None: + user.set_prop("companyDetails", AAZObjectType, ".company_details") + user.set_prop("emailAddress", AAZStrType, ".email_address", typ_kwargs={"flags": {"required": True}}) + user.set_prop("firstName", AAZStrType, ".first_name", typ_kwargs={"flags": {"required": True}}) + user.set_prop("lastName", AAZStrType, ".last_name", typ_kwargs={"flags": {"required": True}}) + user.set_prop("phoneNumber", AAZStrType, ".phone_number") + user.set_prop("upn", AAZStrType, ".upn") + + company_details = _builder.get(".properties.user.companyDetails") + if company_details is not None: + company_details.set_prop("address", AAZObjectType, ".address") + company_details.set_prop("companyName", AAZStrType, ".company_name", typ_kwargs={"flags": {"required": True}}) + + address = _builder.get(".properties.user.companyDetails.address") + if address is not None: + address.set_prop("addressLine1", AAZStrType, ".address_line1", typ_kwargs={"flags": {"required": True}}) + address.set_prop("addressLine2", AAZStrType, ".address_line2") + address.set_prop("city", AAZStrType, ".city", typ_kwargs={"flags": {"required": True}}) + address.set_prop("country", AAZStrType, ".country", typ_kwargs={"flags": {"required": True}}) + address.set_prop("postalCode", AAZStrType, ".postal_code", typ_kwargs={"flags": {"required": True}}) + address.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + tags = _builder.get(".tags") + if tags is not None: + tags.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}, + ) + + properties = cls._schema_on_200_201.properties + properties.marketplace = AAZObjectType( + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_internal_id = AAZStrType( + serialized_name="reservationInternalId", + flags={"read_only": True}, + ) + properties.user = AAZObjectType( + flags={"required": True}, + ) + + marketplace = cls._schema_on_200_201.properties.marketplace + marketplace.offer_details = AAZObjectType( + serialized_name="offerDetails", + flags={"required": True}, + ) + marketplace.subscription_id = AAZStrType( + serialized_name="subscriptionId", + flags={"read_only": True}, + ) + marketplace.subscription_status = AAZStrType( + serialized_name="subscriptionStatus", + ) + + offer_details = cls._schema_on_200_201.properties.marketplace.offer_details + offer_details.offer_id = AAZStrType( + serialized_name="offerId", + flags={"required": True}, + ) + offer_details.plan_id = AAZStrType( + serialized_name="planId", + flags={"required": True}, + ) + offer_details.plan_name = AAZStrType( + serialized_name="planName", + ) + offer_details.publisher_id = AAZStrType( + serialized_name="publisherId", + flags={"required": True}, + ) + offer_details.term_id = AAZStrType( + serialized_name="termId", + ) + offer_details.term_unit = AAZStrType( + serialized_name="termUnit", + ) + + user = cls._schema_on_200_201.properties.user + user.company_details = AAZObjectType( + serialized_name="companyDetails", + ) + user.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + user.first_name = AAZStrType( + serialized_name="firstName", + flags={"required": True}, + ) + user.last_name = AAZStrType( + serialized_name="lastName", + flags={"required": True}, + ) + user.phone_number = AAZStrType( + serialized_name="phoneNumber", + ) + user.upn = AAZStrType() + + company_details = cls._schema_on_200_201.properties.user.company_details + company_details.address = AAZObjectType() + company_details.company_name = AAZStrType( + serialized_name="companyName", + flags={"required": True}, + ) + + address = cls._schema_on_200_201.properties.user.company_details.address + address.address_line1 = AAZStrType( + serialized_name="addressLine1", + flags={"required": True}, + ) + address.address_line2 = AAZStrType( + serialized_name="addressLine2", + ) + address.city = AAZStrType( + flags={"required": True}, + ) + address.country = AAZStrType( + flags={"required": True}, + ) + address.postal_code = AAZStrType( + serialized_name="postalCode", + flags={"required": True}, + ) + address.state = AAZStrType( + flags={"required": True}, + ) + + 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() + + return cls._schema_on_200_201 + + +class _CreateHelper: + """Helper class for Create""" + + +__all__ = ["Create"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_delete.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_delete.py new file mode 100644 index 00000000000..8195dad603a --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_delete.py @@ -0,0 +1,169 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock reservation delete", + is_preview=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a reservation + + :example: Reservations_Delete + az purestorageblock reservation delete --resource-group rgpurestorage --reservation-name storagePoolname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/reservations/{}", "2024-11-01-preview"], + ] + } + + 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.reservation_name = AAZStrArg( + options=["-n", "--name", "--reservation-name"], + help="Name of the reservation.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.ReservationsDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class ReservationsDelete(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 [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, + ) + 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/PureStorage.Block/reservations/{reservationName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "reservationName", self.ctx.args.reservation_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-preview", + required=True, + ), + } + return parameters + + def on_204(self, session): + pass + + def on_200_201(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_get_billing_report.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_get_billing_report.py new file mode 100644 index 00000000000..86227de068d --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_get_billing_report.py @@ -0,0 +1,239 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock reservation get-billing-report", + is_preview=True, +) +class GetBillingReport(AAZCommand): + """Provides a summarized report along with actions for resources billed via given reservation + + :example: Reservations_GetBillingReport_MaximumSet + az purestorageblock reservation get-billing-report --resource-group rgpurestorage --reservation-name reservationname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/reservations/{}/getbillingreport", "2024-11-01-preview"], + ] + } + + 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.reservation_name = AAZStrArg( + options=["--reservation-name"], + help="Name of the reservation.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.ReservationsGetBillingReport(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 ReservationsGetBillingReport(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/PureStorage.Block/reservations/{reservationName}/getBillingReport", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "reservationName", self.ctx.args.reservation_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-preview", + 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.billing_usage_properties = AAZListType( + serialized_name="billingUsageProperties", + flags={"required": True}, + ) + _schema_on_200.overall_status_message = AAZStrType( + serialized_name="overallStatusMessage", + flags={"required": True}, + ) + _schema_on_200.timestamp = AAZStrType( + flags={"required": True}, + ) + + billing_usage_properties = cls._schema_on_200.billing_usage_properties + billing_usage_properties.Element = AAZObjectType() + _GetBillingReportHelper._build_schema_billing_usage_property_read(billing_usage_properties.Element) + + return cls._schema_on_200 + + +class _GetBillingReportHelper: + """Helper class for GetBillingReport""" + + _schema_billing_usage_property_read = None + + @classmethod + def _build_schema_billing_usage_property_read(cls, _schema): + if cls._schema_billing_usage_property_read is not None: + _schema.current_value = cls._schema_billing_usage_property_read.current_value + _schema.previous_value = cls._schema_billing_usage_property_read.previous_value + _schema.property_id = cls._schema_billing_usage_property_read.property_id + _schema.property_name = cls._schema_billing_usage_property_read.property_name + _schema.severity = cls._schema_billing_usage_property_read.severity + _schema.status_message = cls._schema_billing_usage_property_read.status_message + _schema.sub_properties = cls._schema_billing_usage_property_read.sub_properties + return + + cls._schema_billing_usage_property_read = _schema_billing_usage_property_read = AAZObjectType() + + billing_usage_property_read = _schema_billing_usage_property_read + billing_usage_property_read.current_value = AAZStrType( + serialized_name="currentValue", + flags={"required": True}, + ) + billing_usage_property_read.previous_value = AAZStrType( + serialized_name="previousValue", + ) + billing_usage_property_read.property_id = AAZStrType( + serialized_name="propertyId", + flags={"required": True}, + ) + billing_usage_property_read.property_name = AAZStrType( + serialized_name="propertyName", + flags={"required": True}, + ) + billing_usage_property_read.severity = AAZStrType( + flags={"required": True}, + ) + billing_usage_property_read.status_message = AAZStrType( + serialized_name="statusMessage", + ) + billing_usage_property_read.sub_properties = AAZListType( + serialized_name="subProperties", + ) + + sub_properties = _schema_billing_usage_property_read.sub_properties + sub_properties.Element = AAZObjectType() + cls._build_schema_billing_usage_property_read(sub_properties.Element) + + _schema.current_value = cls._schema_billing_usage_property_read.current_value + _schema.previous_value = cls._schema_billing_usage_property_read.previous_value + _schema.property_id = cls._schema_billing_usage_property_read.property_id + _schema.property_name = cls._schema_billing_usage_property_read.property_name + _schema.severity = cls._schema_billing_usage_property_read.severity + _schema.status_message = cls._schema_billing_usage_property_read.status_message + _schema.sub_properties = cls._schema_billing_usage_property_read.sub_properties + + +__all__ = ["GetBillingReport"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_get_billing_status.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_get_billing_status.py new file mode 100644 index 00000000000..bf51cff1afd --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_get_billing_status.py @@ -0,0 +1,225 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock reservation get-billing-status", + is_preview=True, +) +class GetBillingStatus(AAZCommand): + """Provides various statistics about resources billed via given reservation. + + :example: Reservations_GetBillingStatus_MaximumSet + az purestorageblock reservation get-billing-status --resource-group rgpurestorage --reservation-name reservationname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/reservations/{}/getbillingstatus", "2024-11-01-preview"], + ] + } + + 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.reservation_name = AAZStrArg( + options=["--reservation-name"], + help="Name of the reservation.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.ReservationsGetBillingStatus(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 ReservationsGetBillingStatus(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/PureStorage.Block/reservations/{reservationName}/getBillingStatus", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "reservationName", self.ctx.args.reservation_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-preview", + 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.drr_weighted_average = AAZFloatType( + serialized_name="drrWeightedAverage", + flags={"required": True}, + ) + _schema_on_200.extra_used_capacity_low_usage_rounding = AAZIntType( + serialized_name="extraUsedCapacityLowUsageRounding", + flags={"required": True}, + ) + _schema_on_200.extra_used_capacity_non_reducible = AAZIntType( + serialized_name="extraUsedCapacityNonReducible", + flags={"required": True}, + ) + _schema_on_200.extra_used_capacity_non_reducible_plan_discount = AAZIntType( + serialized_name="extraUsedCapacityNonReduciblePlanDiscount", + flags={"required": True}, + ) + _schema_on_200.low_drr_pool_count = AAZIntType( + serialized_name="lowDrrPoolCount", + flags={"required": True}, + ) + _schema_on_200.timestamp = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.total_non_reducible_reported = AAZIntType( + serialized_name="totalNonReducibleReported", + flags={"required": True}, + ) + _schema_on_200.total_performance_included_plan = AAZIntType( + serialized_name="totalPerformanceIncludedPlan", + flags={"required": True}, + ) + _schema_on_200.total_performance_overage = AAZIntType( + serialized_name="totalPerformanceOverage", + flags={"required": True}, + ) + _schema_on_200.total_performance_reported = AAZIntType( + serialized_name="totalPerformanceReported", + flags={"required": True}, + ) + _schema_on_200.total_used_capacity_billed = AAZIntType( + serialized_name="totalUsedCapacityBilled", + flags={"required": True}, + ) + _schema_on_200.total_used_capacity_included_plan = AAZIntType( + serialized_name="totalUsedCapacityIncludedPlan", + flags={"required": True}, + ) + _schema_on_200.total_used_capacity_overage = AAZIntType( + serialized_name="totalUsedCapacityOverage", + flags={"required": True}, + ) + _schema_on_200.total_used_capacity_reported = AAZIntType( + serialized_name="totalUsedCapacityReported", + flags={"required": True}, + ) + + return cls._schema_on_200 + + +class _GetBillingStatusHelper: + """Helper class for GetBillingStatus""" + + +__all__ = ["GetBillingStatus"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_get_resource_limit.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_get_resource_limit.py new file mode 100644 index 00000000000..ba230376bc0 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_get_resource_limit.py @@ -0,0 +1,255 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock reservation get-resource-limit", + is_preview=True, +) +class GetResourceLimit(AAZCommand): + """Limits constraining certain resource properties. + + :example: Reservations_GetResourceLimits + az purestorageblock reservation get-resource-limit --resource-group rgpurestorage --reservation-name storagePoolname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/reservations/{}/getresourcelimits", "2024-11-01-preview"], + ] + } + + 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.reservation_name = AAZStrArg( + options=["--reservation-name"], + help="Name of the reservation.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.ReservationsGetResourceLimits(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 ReservationsGetResourceLimits(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/PureStorage.Block/reservations/{reservationName}/getResourceLimits", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "reservationName", self.ctx.args.reservation_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-preview", + 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.performance_policy = AAZObjectType( + serialized_name="performancePolicy", + flags={"required": True}, + ) + _schema_on_200.protection_policy = AAZObjectType( + serialized_name="protectionPolicy", + flags={"required": True}, + ) + _schema_on_200.storage_pool = AAZObjectType( + serialized_name="storagePool", + flags={"required": True}, + ) + _schema_on_200.volume = AAZObjectType( + flags={"required": True}, + ) + + performance_policy = cls._schema_on_200.performance_policy + performance_policy.bandwidth_limit = AAZObjectType( + serialized_name="bandwidthLimit", + flags={"required": True}, + ) + _GetResourceLimitHelper._build_schema_range_limits_read(performance_policy.bandwidth_limit) + performance_policy.iops_limit = AAZObjectType( + serialized_name="iopsLimit", + flags={"required": True}, + ) + _GetResourceLimitHelper._build_schema_range_limits_read(performance_policy.iops_limit) + + protection_policy = cls._schema_on_200.protection_policy + protection_policy.frequency = AAZObjectType( + flags={"required": True}, + ) + _GetResourceLimitHelper._build_schema_range_limits_read(protection_policy.frequency) + protection_policy.retention = AAZObjectType( + flags={"required": True}, + ) + _GetResourceLimitHelper._build_schema_range_limits_read(protection_policy.retention) + + storage_pool = cls._schema_on_200.storage_pool + storage_pool.physical_availability_zones = AAZListType( + serialized_name="physicalAvailabilityZones", + flags={"required": True}, + ) + storage_pool.provisioned_bandwidth_mb_per_sec = AAZObjectType( + serialized_name="provisionedBandwidthMbPerSec", + flags={"required": True}, + ) + _GetResourceLimitHelper._build_schema_range_limits_read(storage_pool.provisioned_bandwidth_mb_per_sec) + storage_pool.provisioned_iops = AAZObjectType( + serialized_name="provisionedIops", + flags={"required": True}, + ) + _GetResourceLimitHelper._build_schema_range_limits_read(storage_pool.provisioned_iops) + + physical_availability_zones = cls._schema_on_200.storage_pool.physical_availability_zones + physical_availability_zones.Element = AAZStrType() + + volume = cls._schema_on_200.volume + volume.provisioned_size = AAZObjectType( + serialized_name="provisionedSize", + flags={"required": True}, + ) + _GetResourceLimitHelper._build_schema_range_limits_read(volume.provisioned_size) + + return cls._schema_on_200 + + +class _GetResourceLimitHelper: + """Helper class for GetResourceLimit""" + + _schema_range_limits_read = None + + @classmethod + def _build_schema_range_limits_read(cls, _schema): + if cls._schema_range_limits_read is not None: + _schema.max = cls._schema_range_limits_read.max + _schema.min = cls._schema_range_limits_read.min + return + + cls._schema_range_limits_read = _schema_range_limits_read = AAZObjectType() + + range_limits_read = _schema_range_limits_read + range_limits_read.max = AAZIntType( + flags={"required": True}, + ) + range_limits_read.min = AAZIntType( + flags={"required": True}, + ) + + _schema.max = cls._schema_range_limits_read.max + _schema.min = cls._schema_range_limits_read.min + + +__all__ = ["GetResourceLimit"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_list.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_list.py new file mode 100644 index 00000000000..cf28dfcba76 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_list.py @@ -0,0 +1,549 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock reservation list", + is_preview=True, +) +class List(AAZCommand): + """List reservations by Azure subscription ID + + :example: Reservations_ListBySubscription + az purestorageblock reservation list + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/providers/purestorage.block/reservations", "2024-11-01-preview"], + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/reservations", "2024-11-01-preview"], + ] + } + + 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.ReservationsListBySubscription(ctx=self.ctx)() + if condition_1: + self.ReservationsListByResourceGroup(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 ReservationsListBySubscription(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/PureStorage.Block/reservations", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @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", "2024-11-01-preview", + 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.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.tags = AAZDictType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.marketplace = AAZObjectType( + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_internal_id = AAZStrType( + serialized_name="reservationInternalId", + flags={"read_only": True}, + ) + properties.user = AAZObjectType( + flags={"required": True}, + ) + + marketplace = cls._schema_on_200.value.Element.properties.marketplace + marketplace.offer_details = AAZObjectType( + serialized_name="offerDetails", + flags={"required": True}, + ) + marketplace.subscription_id = AAZStrType( + serialized_name="subscriptionId", + flags={"read_only": True}, + ) + marketplace.subscription_status = AAZStrType( + serialized_name="subscriptionStatus", + ) + + offer_details = cls._schema_on_200.value.Element.properties.marketplace.offer_details + offer_details.offer_id = AAZStrType( + serialized_name="offerId", + flags={"required": True}, + ) + offer_details.plan_id = AAZStrType( + serialized_name="planId", + flags={"required": True}, + ) + offer_details.plan_name = AAZStrType( + serialized_name="planName", + ) + offer_details.publisher_id = AAZStrType( + serialized_name="publisherId", + flags={"required": True}, + ) + offer_details.term_id = AAZStrType( + serialized_name="termId", + ) + offer_details.term_unit = AAZStrType( + serialized_name="termUnit", + ) + + user = cls._schema_on_200.value.Element.properties.user + user.company_details = AAZObjectType( + serialized_name="companyDetails", + ) + user.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + user.first_name = AAZStrType( + serialized_name="firstName", + flags={"required": True}, + ) + user.last_name = AAZStrType( + serialized_name="lastName", + flags={"required": True}, + ) + user.phone_number = AAZStrType( + serialized_name="phoneNumber", + ) + user.upn = AAZStrType() + + company_details = cls._schema_on_200.value.Element.properties.user.company_details + company_details.address = AAZObjectType() + company_details.company_name = AAZStrType( + serialized_name="companyName", + flags={"required": True}, + ) + + address = cls._schema_on_200.value.Element.properties.user.company_details.address + address.address_line1 = AAZStrType( + serialized_name="addressLine1", + flags={"required": True}, + ) + address.address_line2 = AAZStrType( + serialized_name="addressLine2", + ) + address.city = AAZStrType( + flags={"required": True}, + ) + address.country = AAZStrType( + flags={"required": True}, + ) + address.postal_code = AAZStrType( + serialized_name="postalCode", + flags={"required": True}, + ) + address.state = AAZStrType( + flags={"required": True}, + ) + + 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() + + return cls._schema_on_200 + + class ReservationsListByResourceGroup(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/PureStorage.Block/reservations", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @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", "2024-11-01-preview", + 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.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.tags = AAZDictType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.marketplace = AAZObjectType( + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_internal_id = AAZStrType( + serialized_name="reservationInternalId", + flags={"read_only": True}, + ) + properties.user = AAZObjectType( + flags={"required": True}, + ) + + marketplace = cls._schema_on_200.value.Element.properties.marketplace + marketplace.offer_details = AAZObjectType( + serialized_name="offerDetails", + flags={"required": True}, + ) + marketplace.subscription_id = AAZStrType( + serialized_name="subscriptionId", + flags={"read_only": True}, + ) + marketplace.subscription_status = AAZStrType( + serialized_name="subscriptionStatus", + ) + + offer_details = cls._schema_on_200.value.Element.properties.marketplace.offer_details + offer_details.offer_id = AAZStrType( + serialized_name="offerId", + flags={"required": True}, + ) + offer_details.plan_id = AAZStrType( + serialized_name="planId", + flags={"required": True}, + ) + offer_details.plan_name = AAZStrType( + serialized_name="planName", + ) + offer_details.publisher_id = AAZStrType( + serialized_name="publisherId", + flags={"required": True}, + ) + offer_details.term_id = AAZStrType( + serialized_name="termId", + ) + offer_details.term_unit = AAZStrType( + serialized_name="termUnit", + ) + + user = cls._schema_on_200.value.Element.properties.user + user.company_details = AAZObjectType( + serialized_name="companyDetails", + ) + user.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + user.first_name = AAZStrType( + serialized_name="firstName", + flags={"required": True}, + ) + user.last_name = AAZStrType( + serialized_name="lastName", + flags={"required": True}, + ) + user.phone_number = AAZStrType( + serialized_name="phoneNumber", + ) + user.upn = AAZStrType() + + company_details = cls._schema_on_200.value.Element.properties.user.company_details + company_details.address = AAZObjectType() + company_details.company_name = AAZStrType( + serialized_name="companyName", + flags={"required": True}, + ) + + address = cls._schema_on_200.value.Element.properties.user.company_details.address + address.address_line1 = AAZStrType( + serialized_name="addressLine1", + flags={"required": True}, + ) + address.address_line2 = AAZStrType( + serialized_name="addressLine2", + ) + address.city = AAZStrType( + flags={"required": True}, + ) + address.country = AAZStrType( + flags={"required": True}, + ) + address.postal_code = AAZStrType( + serialized_name="postalCode", + flags={"required": True}, + ) + address.state = AAZStrType( + flags={"required": True}, + ) + + 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() + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_show.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_show.py new file mode 100644 index 00000000000..46a93a8cb56 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_show.py @@ -0,0 +1,315 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock reservation show", + is_preview=True, +) +class Show(AAZCommand): + """Get a reservation + + :example: Reservations_Get + az purestorageblock reservation show --resource-group rgpurestorage --reservation-name storagePoolname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/reservations/{}", "2024-11-01-preview"], + ] + } + + 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.reservation_name = AAZStrArg( + options=["-n", "--name", "--reservation-name"], + help="Name of the reservation.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.ReservationsGet(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 ReservationsGet(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/PureStorage.Block/reservations/{reservationName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "reservationName", self.ctx.args.reservation_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-preview", + 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}, + ) + + properties = cls._schema_on_200.properties + properties.marketplace = AAZObjectType( + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_internal_id = AAZStrType( + serialized_name="reservationInternalId", + flags={"read_only": True}, + ) + properties.user = AAZObjectType( + flags={"required": True}, + ) + + marketplace = cls._schema_on_200.properties.marketplace + marketplace.offer_details = AAZObjectType( + serialized_name="offerDetails", + flags={"required": True}, + ) + marketplace.subscription_id = AAZStrType( + serialized_name="subscriptionId", + flags={"read_only": True}, + ) + marketplace.subscription_status = AAZStrType( + serialized_name="subscriptionStatus", + ) + + offer_details = cls._schema_on_200.properties.marketplace.offer_details + offer_details.offer_id = AAZStrType( + serialized_name="offerId", + flags={"required": True}, + ) + offer_details.plan_id = AAZStrType( + serialized_name="planId", + flags={"required": True}, + ) + offer_details.plan_name = AAZStrType( + serialized_name="planName", + ) + offer_details.publisher_id = AAZStrType( + serialized_name="publisherId", + flags={"required": True}, + ) + offer_details.term_id = AAZStrType( + serialized_name="termId", + ) + offer_details.term_unit = AAZStrType( + serialized_name="termUnit", + ) + + user = cls._schema_on_200.properties.user + user.company_details = AAZObjectType( + serialized_name="companyDetails", + ) + user.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + user.first_name = AAZStrType( + serialized_name="firstName", + flags={"required": True}, + ) + user.last_name = AAZStrType( + serialized_name="lastName", + flags={"required": True}, + ) + user.phone_number = AAZStrType( + serialized_name="phoneNumber", + ) + user.upn = AAZStrType() + + company_details = cls._schema_on_200.properties.user.company_details + company_details.address = AAZObjectType() + company_details.company_name = AAZStrType( + serialized_name="companyName", + flags={"required": True}, + ) + + address = cls._schema_on_200.properties.user.company_details.address + address.address_line1 = AAZStrType( + serialized_name="addressLine1", + flags={"required": True}, + ) + address.address_line2 = AAZStrType( + serialized_name="addressLine2", + ) + address.city = AAZStrType( + flags={"required": True}, + ) + address.country = AAZStrType( + flags={"required": True}, + ) + address.postal_code = AAZStrType( + serialized_name="postalCode", + flags={"required": True}, + ) + address.state = AAZStrType( + flags={"required": True}, + ) + + 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() + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_update.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_update.py new file mode 100644 index 00000000000..26bfe84cdef --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_update.py @@ -0,0 +1,613 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock reservation update", + is_preview=True, +) +class Update(AAZCommand): + """Update a reservation + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/reservations/{}", "2024-11-01-preview"], + ] + } + + 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.reservation_name = AAZStrArg( + options=["-n", "--name", "--reservation-name"], + help="Name of the reservation.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.user = AAZObjectArg( + options=["--user"], + arg_group="Properties", + help="User details", + ) + + user = cls._args_schema.user + user.company_details = AAZObjectArg( + options=["company-details"], + help="Company details", + nullable=True, + ) + user.email_address = AAZStrArg( + options=["email-address"], + help="Email address", + fmt=AAZStrArgFormat( + pattern="^[A-Za-z0-9._%+-]+@(?:[A-Za-z0-9-]+\\.)+[A-Za-z]{2,}$", + ), + ) + user.first_name = AAZStrArg( + options=["first-name"], + help="First name", + ) + user.last_name = AAZStrArg( + options=["last-name"], + help="Last name", + ) + user.phone_number = AAZStrArg( + options=["phone-number"], + help="Phone number", + nullable=True, + ) + user.upn = AAZStrArg( + options=["upn"], + help="Principal name", + nullable=True, + ) + + company_details = cls._args_schema.user.company_details + company_details.address = AAZObjectArg( + options=["address"], + help="Company address", + nullable=True, + ) + company_details.company_name = AAZStrArg( + options=["company-name"], + help="Company name", + ) + + address = cls._args_schema.user.company_details.address + address.address_line1 = AAZStrArg( + options=["address-line1"], + help="Address line 1", + ) + address.address_line2 = AAZStrArg( + options=["address-line2"], + help="Address line 2", + nullable=True, + ) + address.city = AAZStrArg( + options=["city"], + help="Name of the city", + ) + address.country = AAZStrArg( + options=["country"], + help="Name of the country", + ) + address.postal_code = AAZStrArg( + options=["postal-code"], + help="Postal code", + ) + address.state = AAZStrArg( + options=["state"], + help="State (if any)", + ) + + # define Arg Group "Resource" + + _args_schema = cls._args_schema + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="Resource", + help="Resource tags.", + nullable=True, + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg( + nullable=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.ReservationsGet(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.ReservationsCreate(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 ReservationsGet(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/PureStorage.Block/reservations/{reservationName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "reservationName", self.ctx.args.reservation_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-preview", + 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_reservation_read(cls._schema_on_200) + + return cls._schema_on_200 + + class ReservationsCreate(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": "azure-async-operation"}, + 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": "azure-async-operation"}, + 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/PureStorage.Block/reservations/{reservationName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "reservationName", self.ctx.args.reservation_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-preview", + 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_reservation_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") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("user", AAZObjectType, ".user", typ_kwargs={"flags": {"required": True}}) + + user = _builder.get(".properties.user") + if user is not None: + user.set_prop("companyDetails", AAZObjectType, ".company_details") + user.set_prop("emailAddress", AAZStrType, ".email_address", typ_kwargs={"flags": {"required": True}}) + user.set_prop("firstName", AAZStrType, ".first_name", typ_kwargs={"flags": {"required": True}}) + user.set_prop("lastName", AAZStrType, ".last_name", typ_kwargs={"flags": {"required": True}}) + user.set_prop("phoneNumber", AAZStrType, ".phone_number") + user.set_prop("upn", AAZStrType, ".upn") + + company_details = _builder.get(".properties.user.companyDetails") + if company_details is not None: + company_details.set_prop("address", AAZObjectType, ".address") + company_details.set_prop("companyName", AAZStrType, ".company_name", typ_kwargs={"flags": {"required": True}}) + + address = _builder.get(".properties.user.companyDetails.address") + if address is not None: + address.set_prop("addressLine1", AAZStrType, ".address_line1", typ_kwargs={"flags": {"required": True}}) + address.set_prop("addressLine2", AAZStrType, ".address_line2") + address.set_prop("city", AAZStrType, ".city", typ_kwargs={"flags": {"required": True}}) + address.set_prop("country", AAZStrType, ".country", typ_kwargs={"flags": {"required": True}}) + address.set_prop("postalCode", AAZStrType, ".postal_code", typ_kwargs={"flags": {"required": True}}) + address.set_prop("state", AAZStrType, ".state", typ_kwargs={"flags": {"required": True}}) + + tags = _builder.get(".tags") + if tags is not None: + tags.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_reservation_read = None + + @classmethod + def _build_schema_reservation_read(cls, _schema): + if cls._schema_reservation_read is not None: + _schema.id = cls._schema_reservation_read.id + _schema.location = cls._schema_reservation_read.location + _schema.name = cls._schema_reservation_read.name + _schema.properties = cls._schema_reservation_read.properties + _schema.system_data = cls._schema_reservation_read.system_data + _schema.tags = cls._schema_reservation_read.tags + _schema.type = cls._schema_reservation_read.type + return + + cls._schema_reservation_read = _schema_reservation_read = AAZObjectType() + + reservation_read = _schema_reservation_read + reservation_read.id = AAZStrType( + flags={"read_only": True}, + ) + reservation_read.location = AAZStrType( + flags={"required": True}, + ) + reservation_read.name = AAZStrType( + flags={"read_only": True}, + ) + reservation_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + reservation_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + reservation_read.tags = AAZDictType() + reservation_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_reservation_read.properties + properties.marketplace = AAZObjectType( + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_internal_id = AAZStrType( + serialized_name="reservationInternalId", + flags={"read_only": True}, + ) + properties.user = AAZObjectType( + flags={"required": True}, + ) + + marketplace = _schema_reservation_read.properties.marketplace + marketplace.offer_details = AAZObjectType( + serialized_name="offerDetails", + flags={"required": True}, + ) + marketplace.subscription_id = AAZStrType( + serialized_name="subscriptionId", + flags={"read_only": True}, + ) + marketplace.subscription_status = AAZStrType( + serialized_name="subscriptionStatus", + ) + + offer_details = _schema_reservation_read.properties.marketplace.offer_details + offer_details.offer_id = AAZStrType( + serialized_name="offerId", + flags={"required": True}, + ) + offer_details.plan_id = AAZStrType( + serialized_name="planId", + flags={"required": True}, + ) + offer_details.plan_name = AAZStrType( + serialized_name="planName", + ) + offer_details.publisher_id = AAZStrType( + serialized_name="publisherId", + flags={"required": True}, + ) + offer_details.term_id = AAZStrType( + serialized_name="termId", + ) + offer_details.term_unit = AAZStrType( + serialized_name="termUnit", + ) + + user = _schema_reservation_read.properties.user + user.company_details = AAZObjectType( + serialized_name="companyDetails", + ) + user.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + user.first_name = AAZStrType( + serialized_name="firstName", + flags={"required": True}, + ) + user.last_name = AAZStrType( + serialized_name="lastName", + flags={"required": True}, + ) + user.phone_number = AAZStrType( + serialized_name="phoneNumber", + ) + user.upn = AAZStrType() + + company_details = _schema_reservation_read.properties.user.company_details + company_details.address = AAZObjectType() + company_details.company_name = AAZStrType( + serialized_name="companyName", + flags={"required": True}, + ) + + address = _schema_reservation_read.properties.user.company_details.address + address.address_line1 = AAZStrType( + serialized_name="addressLine1", + flags={"required": True}, + ) + address.address_line2 = AAZStrType( + serialized_name="addressLine2", + ) + address.city = AAZStrType( + flags={"required": True}, + ) + address.country = AAZStrType( + flags={"required": True}, + ) + address.postal_code = AAZStrType( + serialized_name="postalCode", + flags={"required": True}, + ) + address.state = AAZStrType( + flags={"required": True}, + ) + + system_data = _schema_reservation_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_reservation_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_reservation_read.id + _schema.location = cls._schema_reservation_read.location + _schema.name = cls._schema_reservation_read.name + _schema.properties = cls._schema_reservation_read.properties + _schema.system_data = cls._schema_reservation_read.system_data + _schema.tags = cls._schema_reservation_read.tags + _schema.type = cls._schema_reservation_read.type + + +__all__ = ["Update"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_wait.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_wait.py new file mode 100644 index 00000000000..2526c74643e --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/reservation/_wait.py @@ -0,0 +1,310 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock reservation wait", +) +class Wait(AAZWaitCommand): + """Place the CLI in a waiting state until a condition is met. + """ + + _aaz_info = { + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/reservations/{}", "2024-11-01-preview"], + ] + } + + 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.reservation_name = AAZStrArg( + options=["-n", "--name", "--reservation-name"], + help="Name of the reservation.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.ReservationsGet(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 ReservationsGet(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/PureStorage.Block/reservations/{reservationName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "reservationName", self.ctx.args.reservation_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-preview", + 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}, + ) + + properties = cls._schema_on_200.properties + properties.marketplace = AAZObjectType( + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_internal_id = AAZStrType( + serialized_name="reservationInternalId", + flags={"read_only": True}, + ) + properties.user = AAZObjectType( + flags={"required": True}, + ) + + marketplace = cls._schema_on_200.properties.marketplace + marketplace.offer_details = AAZObjectType( + serialized_name="offerDetails", + flags={"required": True}, + ) + marketplace.subscription_id = AAZStrType( + serialized_name="subscriptionId", + flags={"read_only": True}, + ) + marketplace.subscription_status = AAZStrType( + serialized_name="subscriptionStatus", + ) + + offer_details = cls._schema_on_200.properties.marketplace.offer_details + offer_details.offer_id = AAZStrType( + serialized_name="offerId", + flags={"required": True}, + ) + offer_details.plan_id = AAZStrType( + serialized_name="planId", + flags={"required": True}, + ) + offer_details.plan_name = AAZStrType( + serialized_name="planName", + ) + offer_details.publisher_id = AAZStrType( + serialized_name="publisherId", + flags={"required": True}, + ) + offer_details.term_id = AAZStrType( + serialized_name="termId", + ) + offer_details.term_unit = AAZStrType( + serialized_name="termUnit", + ) + + user = cls._schema_on_200.properties.user + user.company_details = AAZObjectType( + serialized_name="companyDetails", + ) + user.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + user.first_name = AAZStrType( + serialized_name="firstName", + flags={"required": True}, + ) + user.last_name = AAZStrType( + serialized_name="lastName", + flags={"required": True}, + ) + user.phone_number = AAZStrType( + serialized_name="phoneNumber", + ) + user.upn = AAZStrType() + + company_details = cls._schema_on_200.properties.user.company_details + company_details.address = AAZObjectType() + company_details.company_name = AAZStrType( + serialized_name="companyName", + flags={"required": True}, + ) + + address = cls._schema_on_200.properties.user.company_details.address + address.address_line1 = AAZStrType( + serialized_name="addressLine1", + flags={"required": True}, + ) + address.address_line2 = AAZStrType( + serialized_name="addressLine2", + ) + address.city = AAZStrType( + flags={"required": True}, + ) + address.country = AAZStrType( + flags={"required": True}, + ) + address.postal_code = AAZStrType( + serialized_name="postalCode", + flags={"required": True}, + ) + address.state = AAZStrType( + flags={"required": True}, + ) + + 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() + + return cls._schema_on_200 + + +class _WaitHelper: + """Helper class for Wait""" + + +__all__ = ["Wait"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/__cmd_group.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/__cmd_group.py new file mode 100644 index 00000000000..f67bc9e8843 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/__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( + "purestorageblock storage-pool", +) +class __CMDGroup(AAZCommandGroup): + """Manage Storage Pool + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/__init__.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/__init__.py new file mode 100644 index 00000000000..aff5ab00852 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/__init__.py @@ -0,0 +1,24 @@ +# -------------------------------------------------------------------------------------------- +# 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 ._disable_avs_connection import * +from ._enable_avs_connection import * +from ._finalize_avs_connection import * +from ._get_avs_connection import * +from ._get_avs_status import * +from ._get_health_status import * +from ._list import * +from ._repair_avs_connection import * +from ._show import * +from ._update import * +from ._wait import * diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_create.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_create.py new file mode 100644 index 00000000000..be88ad5aed6 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_create.py @@ -0,0 +1,434 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool create", + is_preview=True, +) +class Create(AAZCommand): + """Create a storage pool + + :example: StoragePools_Create + az purestorageblock storage-pool create --resource-group rgpurestorage --storage-pool-name storagePoolname --availability-zone vknyl --vnet-injection "{subnet-id:tnlctolrxdvnkjiphlrdxq,vnet-id:zbumtytyqwewjcyckwqchiypshv}" --provisioned-bandwidth 17 --reservation-id xiowoxnbtcotutcmmrofvgdi --type None --user-assigned-identities "{key4211:{}}" --tags "{key7593:vsyiygyurvwlfaezpuqu}" --location lonlc + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["-n", "--name", "--storage-pool-name"], + help="Name of the storage pool", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + + # define Arg Group "Identity" + + _args_schema = cls._args_schema + _args_schema.mi_system_assigned = AAZStrArg( + options=["--system-assigned", "--mi-system-assigned"], + arg_group="Identity", + help="Set the system managed identity.", + blank="True", + ) + _args_schema.mi_user_assigned = AAZListArg( + options=["--user-assigned", "--mi-user-assigned"], + arg_group="Identity", + help="Set the user managed identities.", + blank=[], + ) + + mi_user_assigned = cls._args_schema.mi_user_assigned + mi_user_assigned.Element = AAZStrArg() + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.availability_zone = AAZStrArg( + options=["--availability-zone"], + arg_group="Properties", + help="Azure Availability Zone the Pool is located in", + ) + _args_schema.provisioned_bandwidth = AAZIntArg( + options=["--provisioned-bandwidth"], + arg_group="Properties", + help="Total bandwidth provisioned for the pool, in MB/s", + ) + _args_schema.reservation_id = AAZStrArg( + options=["--reservation-id"], + arg_group="Properties", + help="Azure resource ID of the Pure Storage Cloud service (reservation resource) this storage pool belongs to", + ) + _args_schema.vnet_injection = AAZObjectArg( + options=["--vnet-injection"], + arg_group="Properties", + help="Network properties of the storage pool", + ) + + vnet_injection = cls._args_schema.vnet_injection + vnet_injection.subnet_id = AAZStrArg( + options=["subnet-id"], + help="Azure resource ID of the Virtual Network subnet where the storage pool will be connected", + required=True, + ) + vnet_injection.vnet_id = AAZStrArg( + options=["vnet-id"], + help="Azure resource ID of the Virtual Network in which the subnet is located", + required=True, + ) + + # 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.", + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.StoragePoolsCreate(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 StoragePoolsCreate(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": "azure-async-operation"}, + 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": "azure-async-operation"}, + 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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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("identity", AAZIdentityObjectType) + _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") + + identity = _builder.get(".identity") + if identity is not None: + identity.set_prop("userAssigned", AAZListType, ".mi_user_assigned", typ_kwargs={"flags": {"action": "create"}}) + identity.set_prop("systemAssigned", AAZStrType, ".mi_system_assigned", typ_kwargs={"flags": {"action": "create"}}) + + user_assigned = _builder.get(".identity.userAssigned") + if user_assigned is not None: + user_assigned.set_elements(AAZStrType, ".") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("availabilityZone", AAZStrType, ".availability_zone", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("provisionedBandwidthMbPerSec", AAZIntType, ".provisioned_bandwidth", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("reservationResourceId", AAZStrType, ".reservation_id", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("vnetInjection", AAZObjectType, ".vnet_injection", typ_kwargs={"flags": {"required": True}}) + + vnet_injection = _builder.get(".properties.vnetInjection") + if vnet_injection is not None: + vnet_injection.set_prop("subnetId", AAZStrType, ".subnet_id", typ_kwargs={"flags": {"required": True}}) + vnet_injection.set_prop("vnetId", AAZStrType, ".vnet_id", typ_kwargs={"flags": {"required": True}}) + + tags = _builder.get(".tags") + if tags is not None: + tags.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.identity = AAZIdentityObjectType() + _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}, + ) + + identity = cls._schema_on_200_201.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200_201.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = cls._schema_on_200_201.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.availability_zone = AAZStrType( + serialized_name="availabilityZone", + flags={"required": True}, + ) + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.data_retention_period = AAZIntType( + serialized_name="dataRetentionPeriod", + flags={"read_only": True}, + ) + properties.provisioned_bandwidth_mb_per_sec = AAZIntType( + serialized_name="provisionedBandwidthMbPerSec", + flags={"required": True}, + ) + properties.provisioned_iops = AAZIntType( + serialized_name="provisionedIops", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_resource_id = AAZStrType( + serialized_name="reservationResourceId", + flags={"required": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.vnet_injection = AAZObjectType( + serialized_name="vnetInjection", + flags={"required": True}, + ) + + avs = cls._schema_on_200_201.properties.avs + avs.avs_enabled = AAZBoolType( + serialized_name="avsEnabled", + flags={"required": True}, + ) + avs.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + + vnet_injection = cls._schema_on_200_201.properties.vnet_injection + vnet_injection.subnet_id = AAZStrType( + serialized_name="subnetId", + flags={"required": True}, + ) + vnet_injection.vnet_id = AAZStrType( + serialized_name="vnetId", + flags={"required": True}, + ) + + 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() + + return cls._schema_on_200_201 + + +class _CreateHelper: + """Helper class for Create""" + + +__all__ = ["Create"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_delete.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_delete.py new file mode 100644 index 00000000000..1ef36a13d13 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_delete.py @@ -0,0 +1,169 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool delete", + is_preview=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a storage pool + + :example: StoragePools_Delete + az purestorageblock storage-pool delete --resource-group rgpurestorage --storage-pool-name storagePoolname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["-n", "--name", "--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.StoragePoolsDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class StoragePoolsDelete(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 [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, + ) + 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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + required=True, + ), + } + return parameters + + def on_204(self, session): + pass + + def on_200_201(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_disable_avs_connection.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_disable_avs_connection.py new file mode 100644 index 00000000000..1908a0435c8 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_disable_avs_connection.py @@ -0,0 +1,144 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool disable-avs-connection", + is_preview=True, +) +class DisableAvsConnection(AAZCommand): + """Disable the existing AVS connection + + :example: StoragePools_DisableAvsConnection + az purestorageblock storage-pool disable-avs-connection --resource-group rgpurestorage --storage-pool-name storagePoolname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/disableavsconnection", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.StoragePoolsDisableAvsConnection(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class StoragePoolsDisableAvsConnection(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, + None, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + 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/PureStorage.Block/storagePools/{storagePoolName}/disableAvsConnection", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + required=True, + ), + } + return parameters + + +class _DisableAvsConnectionHelper: + """Helper class for DisableAvsConnection""" + + +__all__ = ["DisableAvsConnection"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_enable_avs_connection.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_enable_avs_connection.py new file mode 100644 index 00000000000..290a14c70ef --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_enable_avs_connection.py @@ -0,0 +1,174 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool enable-avs-connection", + is_preview=True, +) +class EnableAvsConnection(AAZCommand): + """Initiate a connection between the storage pool and a specified AVS SDDC resource + + :example: StoragePools_EnableAvsConnection + az purestorageblock storage-pool enable-avs-connection --resource-group rgpurestorage --storage-pool-name storagePoolname --sddc-resource-id tghkgktlddwlszbeh + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/enableavsconnection", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.sddc_resource_id = AAZStrArg( + options=["--sddc-resource-id"], + arg_group="Properties", + help="Azure resource ID of the AVS SDDC to connect to", + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.StoragePoolsEnableAvsConnection(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class StoragePoolsEnableAvsConnection(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, + None, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + 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/PureStorage.Block/storagePools/{storagePoolName}/enableAvsConnection", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "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("sddcResourceId", AAZStrType, ".sddc_resource_id", typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + +class _EnableAvsConnectionHelper: + """Helper class for EnableAvsConnection""" + + +__all__ = ["EnableAvsConnection"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_finalize_avs_connection.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_finalize_avs_connection.py new file mode 100644 index 00000000000..374143f121f --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_finalize_avs_connection.py @@ -0,0 +1,207 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool finalize-avs-connection", + is_preview=True, +) +class FinalizeAvsConnection(AAZCommand): + """Finalize an already started AVS connection to a specific AVS SDDC + + :example: StoragePools_FinalizeAvsConnection + az purestorageblock storage-pool finalize-avs-connection --resource-group rgpurestorage --storage-pool-name storagePoolname --service-init-data-enc hlgzaxrohv --service-init-data "{service-account-username:axchgm,service-account-password:i,v-sphere-ip:lhbajnykbznxnxpxozyfdjaciennks,v-sphere-certificate:s}" + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/finalizeavsconnection", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.service_init_data = AAZObjectArg( + options=["--service-init-data"], + arg_group="Properties", + help="Explicit AVS connection information", + ) + _args_schema.service_init_data_enc = AAZStrArg( + options=["--service-init-data-enc"], + arg_group="Properties", + help="Encoded AVS connection information", + ) + + service_init_data = cls._args_schema.service_init_data + service_init_data.service_account_password = AAZPasswordArg( + options=["service-account-password"], + help="Service account password", + blank=AAZPromptPasswordInput( + msg="Password:", + ), + ) + service_init_data.service_account_username = AAZStrArg( + options=["service-account-username"], + help="Service account username", + ) + service_init_data.v_sphere_certificate = AAZStrArg( + options=["v-sphere-certificate"], + help="AVS instance's vSphere certificate", + ) + service_init_data.v_sphere_ip = AAZStrArg( + options=["v-sphere-ip"], + help="AVS instance's vSphere IP address", + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.StoragePoolsFinalizeAvsConnection(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class StoragePoolsFinalizeAvsConnection(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, + None, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + 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/PureStorage.Block/storagePools/{storagePoolName}/finalizeAvsConnection", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "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("serviceInitializationData", AAZObjectType, ".service_init_data") + _builder.set_prop("serviceInitializationDataEnc", AAZStrType, ".service_init_data_enc") + + service_initialization_data = _builder.get(".serviceInitializationData") + if service_initialization_data is not None: + service_initialization_data.set_prop("serviceAccountPassword", AAZStrType, ".service_account_password", typ_kwargs={"flags": {"secret": True}}) + service_initialization_data.set_prop("serviceAccountUsername", AAZStrType, ".service_account_username") + service_initialization_data.set_prop("vSphereCertificate", AAZStrType, ".v_sphere_certificate") + service_initialization_data.set_prop("vSphereIp", AAZStrType, ".v_sphere_ip") + + return self.serialize_content(_content_value) + + +class _FinalizeAvsConnectionHelper: + """Helper class for FinalizeAvsConnection""" + + +__all__ = ["FinalizeAvsConnection"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_get_avs_connection.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_get_avs_connection.py new file mode 100644 index 00000000000..583b8ec5f71 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_get_avs_connection.py @@ -0,0 +1,188 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool get-avs-connection", + is_preview=True, +) +class GetAvsConnection(AAZCommand): + """Returns current information about an on-going connection to an AVS instance + + :example: StoragePools_GetAvsConnection + az purestorageblock storage-pool get-avs-connection --resource-group rgpurestorage --storage-pool-name storagePoolname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/getavsconnection", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.StoragePoolsGetAvsConnection(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 StoragePoolsGetAvsConnection(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/PureStorage.Block/storagePools/{storagePoolName}/getAvsConnection", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.service_initialization_completed = AAZBoolType( + serialized_name="serviceInitializationCompleted", + flags={"required": True}, + ) + _schema_on_200.service_initialization_handle = AAZObjectType( + serialized_name="serviceInitializationHandle", + ) + _schema_on_200.service_initialization_handle_enc = AAZStrType( + serialized_name="serviceInitializationHandleEnc", + ) + + service_initialization_handle = cls._schema_on_200.service_initialization_handle + service_initialization_handle.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + service_initialization_handle.service_account_username = AAZStrType( + serialized_name="serviceAccountUsername", + ) + + return cls._schema_on_200 + + +class _GetAvsConnectionHelper: + """Helper class for GetAvsConnection""" + + +__all__ = ["GetAvsConnection"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_get_avs_status.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_get_avs_status.py new file mode 100644 index 00000000000..1ad0f0b7503 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_get_avs_status.py @@ -0,0 +1,181 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool get-avs-status", + is_preview=True, +) +class GetAvsStatus(AAZCommand): + """Returns the status of the storage pool connection to AVS + + :example: StoragePools_GetAvsStatus + az purestorageblock storage-pool get-avs-status --resource-group rgpurestorage --storage-pool-name storagePoolname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/getavsstatus", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.StoragePoolsGetAvsStatus(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 StoragePoolsGetAvsStatus(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/PureStorage.Block/storagePools/{storagePoolName}/getAvsStatus", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.avs_enabled = AAZBoolType( + serialized_name="avsEnabled", + flags={"required": True}, + ) + _schema_on_200.current_connection_status = AAZStrType( + serialized_name="currentConnectionStatus", + flags={"required": True}, + ) + _schema_on_200.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + + return cls._schema_on_200 + + +class _GetAvsStatusHelper: + """Helper class for GetAvsStatus""" + + +__all__ = ["GetAvsStatus"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_get_health_status.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_get_health_status.py new file mode 100644 index 00000000000..81df854659f --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_get_health_status.py @@ -0,0 +1,249 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool get-health-status", + is_preview=True, +) +class GetHealthStatus(AAZCommand): + """Retrieve health metrics of a storage pool + + :example: StoragePools_GetHealthStatus + az purestorageblock storage-pool get-health-status --resource-group rgpurestorage --storage-pool-name storagePoolname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/gethealthstatus", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.StoragePoolsGetHealthStatus(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 StoragePoolsGetHealthStatus(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/PureStorage.Block/storagePools/{storagePoolName}/getHealthStatus", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.alerts = AAZListType( + flags={"required": True}, + ) + _schema_on_200.health = AAZObjectType( + flags={"required": True}, + ) + + alerts = cls._schema_on_200.alerts + alerts.Element = AAZObjectType() + + _element = cls._schema_on_200.alerts.Element + _element.level = AAZStrType( + flags={"required": True}, + ) + _element.message = AAZStrType( + flags={"required": True}, + ) + + health = cls._schema_on_200.health + health.bandwidth_usage = AAZObjectType( + serialized_name="bandwidthUsage", + flags={"required": True}, + ) + health.data_reduction_ratio = AAZFloatType( + serialized_name="dataReductionRatio", + flags={"required": True}, + ) + health.estimated_max_capacity = AAZIntType( + serialized_name="estimatedMaxCapacity", + flags={"required": True}, + ) + health.iops_usage = AAZObjectType( + serialized_name="iopsUsage", + flags={"required": True}, + ) + health.space = AAZObjectType( + flags={"required": True}, + ) + health.used_capacity_percentage = AAZFloatType( + serialized_name="usedCapacityPercentage", + flags={"required": True}, + ) + + bandwidth_usage = cls._schema_on_200.health.bandwidth_usage + bandwidth_usage.current = AAZIntType( + flags={"required": True}, + ) + bandwidth_usage.max = AAZIntType( + flags={"required": True}, + ) + bandwidth_usage.provisioned = AAZIntType( + flags={"required": True}, + ) + + iops_usage = cls._schema_on_200.health.iops_usage + iops_usage.current = AAZIntType( + flags={"required": True}, + ) + iops_usage.max = AAZIntType( + flags={"required": True}, + ) + iops_usage.provisioned = AAZIntType( + flags={"required": True}, + ) + + space = cls._schema_on_200.health.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + return cls._schema_on_200 + + +class _GetHealthStatusHelper: + """Helper class for GetHealthStatus""" + + +__all__ = ["GetHealthStatus"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_list.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_list.py new file mode 100644 index 00000000000..56c355d7e11 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_list.py @@ -0,0 +1,521 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool list", + is_preview=True, +) +class List(AAZCommand): + """List storage pools by Azure subscription ID + + :example: StoragePools_ListBySubscription + az purestorageblock storage-pool list + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/providers/purestorage.block/storagepools", "2024-11-01-preview"], + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools", "2024-11-01-preview"], + ] + } + + 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.StoragePoolsListBySubscription(ctx=self.ctx)() + if condition_1: + self.StoragePoolsListByResourceGroup(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 StoragePoolsListBySubscription(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/PureStorage.Block/storagePools", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @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", "2024-11-01-preview", + 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.identity = AAZIdentityObjectType() + _element.location = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.tags = AAZDictType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200.value.Element.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.value.Element.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = cls._schema_on_200.value.Element.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.availability_zone = AAZStrType( + serialized_name="availabilityZone", + flags={"required": True}, + ) + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.data_retention_period = AAZIntType( + serialized_name="dataRetentionPeriod", + flags={"read_only": True}, + ) + properties.provisioned_bandwidth_mb_per_sec = AAZIntType( + serialized_name="provisionedBandwidthMbPerSec", + flags={"required": True}, + ) + properties.provisioned_iops = AAZIntType( + serialized_name="provisionedIops", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_resource_id = AAZStrType( + serialized_name="reservationResourceId", + flags={"required": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.vnet_injection = AAZObjectType( + serialized_name="vnetInjection", + flags={"required": True}, + ) + + avs = cls._schema_on_200.value.Element.properties.avs + avs.avs_enabled = AAZBoolType( + serialized_name="avsEnabled", + flags={"required": True}, + ) + avs.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + + vnet_injection = cls._schema_on_200.value.Element.properties.vnet_injection + vnet_injection.subnet_id = AAZStrType( + serialized_name="subnetId", + flags={"required": True}, + ) + vnet_injection.vnet_id = AAZStrType( + serialized_name="vnetId", + flags={"required": True}, + ) + + 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() + + return cls._schema_on_200 + + class StoragePoolsListByResourceGroup(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/PureStorage.Block/storagePools", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @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", "2024-11-01-preview", + 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.identity = AAZIdentityObjectType() + _element.location = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.tags = AAZDictType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200.value.Element.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.value.Element.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = cls._schema_on_200.value.Element.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.availability_zone = AAZStrType( + serialized_name="availabilityZone", + flags={"required": True}, + ) + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.data_retention_period = AAZIntType( + serialized_name="dataRetentionPeriod", + flags={"read_only": True}, + ) + properties.provisioned_bandwidth_mb_per_sec = AAZIntType( + serialized_name="provisionedBandwidthMbPerSec", + flags={"required": True}, + ) + properties.provisioned_iops = AAZIntType( + serialized_name="provisionedIops", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_resource_id = AAZStrType( + serialized_name="reservationResourceId", + flags={"required": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.vnet_injection = AAZObjectType( + serialized_name="vnetInjection", + flags={"required": True}, + ) + + avs = cls._schema_on_200.value.Element.properties.avs + avs.avs_enabled = AAZBoolType( + serialized_name="avsEnabled", + flags={"required": True}, + ) + avs.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + + vnet_injection = cls._schema_on_200.value.Element.properties.vnet_injection + vnet_injection.subnet_id = AAZStrType( + serialized_name="subnetId", + flags={"required": True}, + ) + vnet_injection.vnet_id = AAZStrType( + serialized_name="vnetId", + flags={"required": True}, + ) + + 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() + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_repair_avs_connection.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_repair_avs_connection.py new file mode 100644 index 00000000000..4e8843879b7 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_repair_avs_connection.py @@ -0,0 +1,144 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool repair-avs-connection", + is_preview=True, +) +class RepairAvsConnection(AAZCommand): + """Test and repair, if needed, all configuration elements of the storage pool connection to the AVS instance + + :example: StoragePools_RepairAvsConnection + az purestorageblock storage-pool repair-avs-connection --resource-group rgpurestorage --storage-pool-name storagePoolname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/repairavsconnection", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.StoragePoolsRepairAvsConnection(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class StoragePoolsRepairAvsConnection(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, + None, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + 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/PureStorage.Block/storagePools/{storagePoolName}/repairAvsConnection", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + required=True, + ), + } + return parameters + + +class _RepairAvsConnectionHelper: + """Helper class for RepairAvsConnection""" + + +__all__ = ["RepairAvsConnection"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_show.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_show.py new file mode 100644 index 00000000000..d17c2bea74b --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_show.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( + "purestorageblock storage-pool show", + is_preview=True, +) +class Show(AAZCommand): + """Get a storage pool + + :example: StoragePools_Get + az purestorageblock storage-pool show --resource-group rgpurestorage --storage-pool-name storagePoolname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["-n", "--name", "--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.StoragePoolsGet(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 StoragePoolsGet(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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.identity = AAZIdentityObjectType() + _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}, + ) + + identity = cls._schema_on_200.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = cls._schema_on_200.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.availability_zone = AAZStrType( + serialized_name="availabilityZone", + flags={"required": True}, + ) + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.data_retention_period = AAZIntType( + serialized_name="dataRetentionPeriod", + flags={"read_only": True}, + ) + properties.provisioned_bandwidth_mb_per_sec = AAZIntType( + serialized_name="provisionedBandwidthMbPerSec", + flags={"required": True}, + ) + properties.provisioned_iops = AAZIntType( + serialized_name="provisionedIops", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_resource_id = AAZStrType( + serialized_name="reservationResourceId", + flags={"required": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.vnet_injection = AAZObjectType( + serialized_name="vnetInjection", + flags={"required": True}, + ) + + avs = cls._schema_on_200.properties.avs + avs.avs_enabled = AAZBoolType( + serialized_name="avsEnabled", + flags={"required": True}, + ) + avs.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + + vnet_injection = cls._schema_on_200.properties.vnet_injection + vnet_injection.subnet_id = AAZStrType( + serialized_name="subnetId", + flags={"required": True}, + ) + vnet_injection.vnet_id = AAZStrType( + serialized_name="vnetId", + flags={"required": True}, + ) + + 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() + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_update.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_update.py new file mode 100644 index 00000000000..7a29dfbe45a --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_update.py @@ -0,0 +1,511 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool update", + is_preview=True, +) +class Update(AAZCommand): + """Update a storage pool + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["-n", "--name", "--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + + # define Arg Group "Identity" + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.provisioned_bandwidth = AAZIntArg( + options=["--provisioned-bandwidth"], + arg_group="Properties", + help="Total bandwidth provisioned for the pool, in MB/s", + ) + + # define Arg Group "Resource" + + _args_schema = cls._args_schema + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="Resource", + help="Resource tags.", + nullable=True, + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg( + nullable=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.StoragePoolsGet(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.StoragePoolsCreate(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 StoragePoolsGet(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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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_storage_pool_read(cls._schema_on_200) + + return cls._schema_on_200 + + class StoragePoolsCreate(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": "azure-async-operation"}, + 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": "azure-async-operation"}, + 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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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_storage_pool_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("identity", AAZIdentityObjectType) + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + _builder.set_prop("tags", AAZDictType, ".tags") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("provisionedBandwidthMbPerSec", AAZIntType, ".provisioned_bandwidth", typ_kwargs={"flags": {"required": True}}) + + tags = _builder.get(".tags") + if tags is not None: + tags.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_storage_pool_read = None + + @classmethod + def _build_schema_storage_pool_read(cls, _schema): + if cls._schema_storage_pool_read is not None: + _schema.id = cls._schema_storage_pool_read.id + _schema.identity = cls._schema_storage_pool_read.identity + _schema.location = cls._schema_storage_pool_read.location + _schema.name = cls._schema_storage_pool_read.name + _schema.properties = cls._schema_storage_pool_read.properties + _schema.system_data = cls._schema_storage_pool_read.system_data + _schema.tags = cls._schema_storage_pool_read.tags + _schema.type = cls._schema_storage_pool_read.type + return + + cls._schema_storage_pool_read = _schema_storage_pool_read = AAZObjectType() + + storage_pool_read = _schema_storage_pool_read + storage_pool_read.id = AAZStrType( + flags={"read_only": True}, + ) + storage_pool_read.identity = AAZIdentityObjectType() + storage_pool_read.location = AAZStrType( + flags={"required": True}, + ) + storage_pool_read.name = AAZStrType( + flags={"read_only": True}, + ) + storage_pool_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + storage_pool_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + storage_pool_read.tags = AAZDictType() + storage_pool_read.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = _schema_storage_pool_read.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = _schema_storage_pool_read.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = _schema_storage_pool_read.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = _schema_storage_pool_read.properties + properties.availability_zone = AAZStrType( + serialized_name="availabilityZone", + flags={"required": True}, + ) + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.data_retention_period = AAZIntType( + serialized_name="dataRetentionPeriod", + flags={"read_only": True}, + ) + properties.provisioned_bandwidth_mb_per_sec = AAZIntType( + serialized_name="provisionedBandwidthMbPerSec", + flags={"required": True}, + ) + properties.provisioned_iops = AAZIntType( + serialized_name="provisionedIops", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_resource_id = AAZStrType( + serialized_name="reservationResourceId", + flags={"required": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.vnet_injection = AAZObjectType( + serialized_name="vnetInjection", + flags={"required": True}, + ) + + avs = _schema_storage_pool_read.properties.avs + avs.avs_enabled = AAZBoolType( + serialized_name="avsEnabled", + flags={"required": True}, + ) + avs.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + + vnet_injection = _schema_storage_pool_read.properties.vnet_injection + vnet_injection.subnet_id = AAZStrType( + serialized_name="subnetId", + flags={"required": True}, + ) + vnet_injection.vnet_id = AAZStrType( + serialized_name="vnetId", + flags={"required": True}, + ) + + system_data = _schema_storage_pool_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_storage_pool_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_storage_pool_read.id + _schema.identity = cls._schema_storage_pool_read.identity + _schema.location = cls._schema_storage_pool_read.location + _schema.name = cls._schema_storage_pool_read.name + _schema.properties = cls._schema_storage_pool_read.properties + _schema.system_data = cls._schema_storage_pool_read.system_data + _schema.tags = cls._schema_storage_pool_read.tags + _schema.type = cls._schema_storage_pool_read.type + + +__all__ = ["Update"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_wait.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_wait.py new file mode 100644 index 00000000000..4f228aa3abc --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/_wait.py @@ -0,0 +1,296 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool wait", +) +class Wait(AAZWaitCommand): + """Place the CLI in a waiting state until a condition is met. + """ + + _aaz_info = { + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["-n", "--name", "--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.StoragePoolsGet(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 StoragePoolsGet(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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.identity = AAZIdentityObjectType() + _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}, + ) + + identity = cls._schema_on_200.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = cls._schema_on_200.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.availability_zone = AAZStrType( + serialized_name="availabilityZone", + flags={"required": True}, + ) + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.data_retention_period = AAZIntType( + serialized_name="dataRetentionPeriod", + flags={"read_only": True}, + ) + properties.provisioned_bandwidth_mb_per_sec = AAZIntType( + serialized_name="provisionedBandwidthMbPerSec", + flags={"required": True}, + ) + properties.provisioned_iops = AAZIntType( + serialized_name="provisionedIops", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_resource_id = AAZStrType( + serialized_name="reservationResourceId", + flags={"required": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.vnet_injection = AAZObjectType( + serialized_name="vnetInjection", + flags={"required": True}, + ) + + avs = cls._schema_on_200.properties.avs + avs.avs_enabled = AAZBoolType( + serialized_name="avsEnabled", + flags={"required": True}, + ) + avs.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + + vnet_injection = cls._schema_on_200.properties.vnet_injection + vnet_injection.subnet_id = AAZStrType( + serialized_name="subnetId", + flags={"required": True}, + ) + vnet_injection.vnet_id = AAZStrType( + serialized_name="vnetId", + flags={"required": True}, + ) + + 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() + + return cls._schema_on_200 + + +class _WaitHelper: + """Helper class for Wait""" + + +__all__ = ["Wait"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/__cmd_group.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/__cmd_group.py new file mode 100644 index 00000000000..42742f0ac72 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/__cmd_group.py @@ -0,0 +1,24 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-storage-container", + is_preview=True, +) +class __CMDGroup(AAZCommandGroup): + """Manage Avs Storage Container + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/__init__.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/__init__.py new file mode 100644 index 00000000000..054d52707ea --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/__init__.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: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._delete import * +from ._list import * +from ._show import * diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/_delete.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/_delete.py new file mode 100644 index 00000000000..9aded4f749f --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/_delete.py @@ -0,0 +1,182 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-storage-container delete", + is_preview=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete an AVS storage container + + :example: AvsStorageContainers_Delete + az purestorageblock storage-pool avs-storage-container delete --resource-group rgpurestorage --storage-pool-name storagePoolName --storage-container-name storageContainerName + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsstoragecontainers/{}", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_container_name = AAZStrArg( + options=["-n", "--name", "--storage-container-name"], + help="Name of the storage container", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z][a-zA-Z0-9\\-]{0,62}[a-zA-Z0-9]$", + ), + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.AvsStorageContainersDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class AvsStorageContainersDelete(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 [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, + ) + 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/PureStorage.Block/storagePools/{storagePoolName}/avsStorageContainers/{storageContainerName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storageContainerName", self.ctx.args.storage_container_name, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + required=True, + ), + } + return parameters + + def on_204(self, session): + pass + + def on_200_201(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/_list.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/_list.py new file mode 100644 index 00000000000..438a951b631 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/_list.py @@ -0,0 +1,251 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-storage-container list", + is_preview=True, +) +class List(AAZCommand): + """List AVS storage containers by storage pool + + :example: AvsStorageContainers_ListByStoragePool + az purestorageblock storage-pool avs-storage-container list --resource-group rgpurestorage --storage-pool-name spName + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsstoragecontainers", "2024-11-01-preview"], + ] + } + + 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( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.AvsStorageContainersListByStoragePool(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 AvsStorageContainersListByStoragePool(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/PureStorage.Block/storagePools/{storagePoolName}/avsStorageContainers", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.datastore = AAZStrType( + flags={"read_only": True}, + ) + properties.mounted = AAZBoolType( + flags={"read_only": True}, + ) + properties.provisioned_limit = AAZIntType( + serialized_name="provisionedLimit", + ) + properties.resource_name = AAZStrType( + serialized_name="resourceName", + flags={"read_only": True}, + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + + space = cls._schema_on_200.value.Element.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/_show.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/_show.py new file mode 100644 index 00000000000..47ec250bf98 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/_show.py @@ -0,0 +1,252 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-storage-container show", + is_preview=True, +) +class Show(AAZCommand): + """Get an AVS storage container + + :example: AvsStorageContainers_Get + az purestorageblock storage-pool avs-storage-container show --resource-group rgpurestorage --storage-pool-name storagePoolName --storage-container-name storageContainerName + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsstoragecontainers/{}", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_container_name = AAZStrArg( + options=["-n", "--name", "--storage-container-name"], + help="Name of the storage container", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z][a-zA-Z0-9\\-]{0,62}[a-zA-Z0-9]$", + ), + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.AvsStorageContainersGet(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 AvsStorageContainersGet(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/PureStorage.Block/storagePools/{storagePoolName}/avsStorageContainers/{storageContainerName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storageContainerName", self.ctx.args.storage_container_name, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.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.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.datastore = AAZStrType( + flags={"read_only": True}, + ) + properties.mounted = AAZBoolType( + flags={"read_only": True}, + ) + properties.provisioned_limit = AAZIntType( + serialized_name="provisionedLimit", + ) + properties.resource_name = AAZStrType( + serialized_name="resourceName", + flags={"read_only": True}, + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + + space = cls._schema_on_200.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/__cmd_group.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/__cmd_group.py new file mode 100644 index 00000000000..0c18127feed --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/__cmd_group.py @@ -0,0 +1,24 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-storage-container volume", + is_preview=True, +) +class __CMDGroup(AAZCommandGroup): + """Manage Volume + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/__init__.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/__init__.py new file mode 100644 index 00000000000..f32b66e3eeb --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# 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 ._delete import * +from ._list import * +from ._show import * +from ._update import * +from ._wait import * diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_delete.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_delete.py new file mode 100644 index 00000000000..bae557873c7 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_delete.py @@ -0,0 +1,192 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-storage-container volume delete", + is_preview=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a volume in an AVS storage container + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsstoragecontainers/{}/volumes/{}", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_container_name = AAZStrArg( + options=["--storage-container-name"], + help="Name of the storage container", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z][a-zA-Z0-9\\-]{0,62}[a-zA-Z0-9]$", + ), + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.volume_id = AAZStrArg( + options=["-n", "--name", "--volume-id"], + help="ID of the volume in the storage container", + required=True, + id_part="child_name_2", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.AvsStorageContainerVolumesDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class AvsStorageContainerVolumesDelete(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 [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, + ) + 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/PureStorage.Block/storagePools/{storagePoolName}/avsStorageContainers/{storageContainerName}/volumes/{volumeId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storageContainerName", self.ctx.args.storage_container_name, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "volumeId", self.ctx.args.volume_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2024-11-01-preview", + required=True, + ), + } + return parameters + + def on_204(self, session): + pass + + def on_200_201(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_list.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_list.py new file mode 100644 index 00000000000..82d9fde80b2 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_list.py @@ -0,0 +1,330 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-storage-container volume list", + is_preview=True, +) +class List(AAZCommand): + """List volumes in an AVS storage container + + :example: AvsStorageContainerVolumes_ListByAvsStorageContainer + az purestorageblock storage-pool avs-storage-container volume list --resource-group rgpurestorage --storage-pool-name storagePoolname --storage-container-name name + + :example: AvsStorageContainerVolumes_ListByAvsStorageContainer + az purestorageblock storage-pool avs-storage-container volume list --resource-group rgpurestorage --storage-pool-name storagePoolname --storage-container-name name + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsstoragecontainers/{}/volumes", "2024-11-01-preview"], + ] + } + + 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( + required=True, + ) + _args_schema.storage_container_name = AAZStrArg( + options=["--storage-container-name"], + help="Name of the storage container", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z][a-zA-Z0-9\\-]{0,62}[a-zA-Z0-9]$", + ), + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.AvsStorageContainerVolumesListByAvsStorageContainer(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 AvsStorageContainerVolumesListByAvsStorageContainer(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/PureStorage.Block/storagePools/{storagePoolName}/avsStorageContainers/{storageContainerName}/volumes", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storageContainerName", self.ctx.args.storage_container_name, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioned_size = AAZIntType( + serialized_name="provisionedSize", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + flags={"required": True}, + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_internal_id = AAZStrType( + serialized_name="volumeInternalId", + flags={"read_only": True}, + ) + properties.volume_type = AAZStrType( + serialized_name="volumeType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.value.Element.properties.avs + avs.avs_storage_container_resource_id = AAZStrType( + serialized_name="avsStorageContainerResourceId", + flags={"required": True}, + ) + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.avs_vm_name = AAZStrType( + serialized_name="avsVmName", + flags={"required": True}, + ) + avs.avs_vm_resource_id = AAZStrType( + serialized_name="avsVmResourceId", + flags={"required": True}, + ) + avs.disk_id = AAZStrType( + serialized_name="diskId", + flags={"required": True}, + ) + avs.disk_name = AAZStrType( + serialized_name="diskName", + flags={"required": True}, + ) + avs.folder = AAZStrType( + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.value.Element.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.value.Element.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_show.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_show.py new file mode 100644 index 00000000000..47d64f9f58f --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_show.py @@ -0,0 +1,326 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-storage-container volume show", + is_preview=True, +) +class Show(AAZCommand): + """Get a volume in an AVS storage container + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsstoragecontainers/{}/volumes/{}", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_container_name = AAZStrArg( + options=["--storage-container-name"], + help="Name of the storage container", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z][a-zA-Z0-9\\-]{0,62}[a-zA-Z0-9]$", + ), + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.volume_id = AAZStrArg( + options=["-n", "--name", "--volume-id"], + help="ID of the volume in the storage container", + required=True, + id_part="child_name_2", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.AvsStorageContainerVolumesGet(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 AvsStorageContainerVolumesGet(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/PureStorage.Block/storagePools/{storagePoolName}/avsStorageContainers/{storageContainerName}/volumes/{volumeId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storageContainerName", self.ctx.args.storage_container_name, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "volumeId", self.ctx.args.volume_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2024-11-01-preview", + 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.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.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioned_size = AAZIntType( + serialized_name="provisionedSize", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + flags={"required": True}, + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_internal_id = AAZStrType( + serialized_name="volumeInternalId", + flags={"read_only": True}, + ) + properties.volume_type = AAZStrType( + serialized_name="volumeType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.properties.avs + avs.avs_storage_container_resource_id = AAZStrType( + serialized_name="avsStorageContainerResourceId", + flags={"required": True}, + ) + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.avs_vm_name = AAZStrType( + serialized_name="avsVmName", + flags={"required": True}, + ) + avs.avs_vm_resource_id = AAZStrType( + serialized_name="avsVmResourceId", + flags={"required": True}, + ) + avs.disk_id = AAZStrType( + serialized_name="diskId", + flags={"required": True}, + ) + avs.disk_name = AAZStrType( + serialized_name="diskName", + flags={"required": True}, + ) + avs.folder = AAZStrType( + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_update.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_update.py new file mode 100644 index 00000000000..9c690a15d80 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_update.py @@ -0,0 +1,380 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-storage-container volume update", + is_preview=True, +) +class Update(AAZCommand): + """Update a volume in an AVS storage container + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsstoragecontainers/{}/volumes/{}", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_container_name = AAZStrArg( + options=["--storage-container-name"], + help="Name of the storage container", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z][a-zA-Z0-9\\-]{0,62}[a-zA-Z0-9]$", + ), + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.volume_id = AAZStrArg( + options=["-n", "--name", "--volume-id"], + help="ID of the volume in the storage container", + required=True, + id_part="child_name_2", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.soft_deletion = AAZObjectArg( + options=["--soft-deletion"], + arg_group="Properties", + help="Volume's soft-deletion state", + ) + + soft_deletion = cls._args_schema.soft_deletion + soft_deletion.destroyed = AAZBoolArg( + options=["destroyed"], + help="If false, the resource is active; if true, the resource has been destroyed; resources can be soft-deleted by setting destroyed to true, and recovered by setting it to false", + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.AvsStorageContainerVolumesUpdate(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 AvsStorageContainerVolumesUpdate(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, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/PureStorage.Block/storagePools/{storagePoolName}/avsStorageContainers/{storageContainerName}/volumes/{volumeId}", + **self.url_parameters + ) + + @property + def method(self): + return "PATCH" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storageContainerName", self.ctx.args.storage_container_name, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "volumeId", self.ctx.args.volume_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2024-11-01-preview", + 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("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("softDeletion", AAZObjectType, ".soft_deletion") + + soft_deletion = _builder.get(".properties.softDeletion") + if soft_deletion is not None: + soft_deletion.set_prop("destroyed", AAZBoolType, ".destroyed") + + return self.serialize_content(_content_value) + + 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.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.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioned_size = AAZIntType( + serialized_name="provisionedSize", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + flags={"required": True}, + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_internal_id = AAZStrType( + serialized_name="volumeInternalId", + flags={"read_only": True}, + ) + properties.volume_type = AAZStrType( + serialized_name="volumeType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.properties.avs + avs.avs_storage_container_resource_id = AAZStrType( + serialized_name="avsStorageContainerResourceId", + flags={"required": True}, + ) + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.avs_vm_name = AAZStrType( + serialized_name="avsVmName", + flags={"required": True}, + ) + avs.avs_vm_resource_id = AAZStrType( + serialized_name="avsVmResourceId", + flags={"required": True}, + ) + avs.disk_id = AAZStrType( + serialized_name="diskId", + flags={"required": True}, + ) + avs.disk_name = AAZStrType( + serialized_name="diskName", + flags={"required": True}, + ) + avs.folder = AAZStrType( + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _UpdateHelper: + """Helper class for Update""" + + +__all__ = ["Update"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_wait.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_wait.py new file mode 100644 index 00000000000..cd0a5cd33ef --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_storage_container/volume/_wait.py @@ -0,0 +1,324 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-storage-container volume wait", +) +class Wait(AAZWaitCommand): + """Place the CLI in a waiting state until a condition is met. + """ + + _aaz_info = { + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsstoragecontainers/{}/volumes/{}", "2024-11-01-preview"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_container_name = AAZStrArg( + options=["--storage-container-name"], + help="Name of the storage container", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z][a-zA-Z0-9\\-]{0,62}[a-zA-Z0-9]$", + ), + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.volume_id = AAZStrArg( + options=["-n", "--name", "--volume-id"], + help="ID of the volume in the storage container", + required=True, + id_part="child_name_2", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.AvsStorageContainerVolumesGet(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 AvsStorageContainerVolumesGet(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/PureStorage.Block/storagePools/{storagePoolName}/avsStorageContainers/{storageContainerName}/volumes/{volumeId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storageContainerName", self.ctx.args.storage_container_name, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "volumeId", self.ctx.args.volume_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2024-11-01-preview", + 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.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.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioned_size = AAZIntType( + serialized_name="provisionedSize", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + flags={"required": True}, + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_internal_id = AAZStrType( + serialized_name="volumeInternalId", + flags={"read_only": True}, + ) + properties.volume_type = AAZStrType( + serialized_name="volumeType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.properties.avs + avs.avs_storage_container_resource_id = AAZStrType( + serialized_name="avsStorageContainerResourceId", + flags={"required": True}, + ) + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.avs_vm_name = AAZStrType( + serialized_name="avsVmName", + flags={"required": True}, + ) + avs.avs_vm_resource_id = AAZStrType( + serialized_name="avsVmResourceId", + flags={"required": True}, + ) + avs.disk_id = AAZStrType( + serialized_name="diskId", + flags={"required": True}, + ) + avs.disk_name = AAZStrType( + serialized_name="diskName", + flags={"required": True}, + ) + avs.folder = AAZStrType( + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _WaitHelper: + """Helper class for Wait""" + + +__all__ = ["Wait"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/__cmd_group.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/__cmd_group.py new file mode 100644 index 00000000000..93fe32a3766 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/__cmd_group.py @@ -0,0 +1,24 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm", + is_preview=True, +) +class __CMDGroup(AAZCommandGroup): + """Manage Avs Vm + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/__init__.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/__init__.py new file mode 100644 index 00000000000..f32b66e3eeb --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# 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 ._delete import * +from ._list import * +from ._show import * +from ._update import * +from ._wait import * diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_delete.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_delete.py new file mode 100644 index 00000000000..70ec8e1af68 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_delete.py @@ -0,0 +1,179 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm delete", + is_preview=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete an AVS VM + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsvms/{}", "2024-11-01-preview"], + ] + } + + 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.avs_vm_id = AAZStrArg( + options=["-n", "--name", "--avs-vm-id"], + help="ID of the AVS VM", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.AvsVmsDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class AvsVmsDelete(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 [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, + ) + 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/PureStorage.Block/storagePools/{storagePoolName}/avsVms/{avsVmId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "avsVmId", self.ctx.args.avs_vm_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + required=True, + ), + } + return parameters + + def on_204(self, session): + pass + + def on_200_201(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_list.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_list.py new file mode 100644 index 00000000000..d17153c4573 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_list.py @@ -0,0 +1,295 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm list", + is_preview=True, +) +class List(AAZCommand): + """List AVS VMs by storage pool + + :example: AvsVms_ListByStoragePool + az purestorageblock storage-pool avs-vm list --resource-group rgpurestorage --storage-pool-name storagePoolname + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsvms", "2024-11-01-preview"], + ] + } + + 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( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.AvsVmsListByStoragePool(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 AvsVmsListByStoragePool(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/PureStorage.Block/storagePools/{storagePoolName}/avsVms", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_container_type = AAZStrType( + serialized_name="volumeContainerType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.value.Element.properties.avs + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.vm_id = AAZStrType( + serialized_name="vmId", + flags={"required": True}, + ) + avs.vm_name = AAZStrType( + serialized_name="vmName", + flags={"required": True}, + ) + avs.vm_type = AAZStrType( + serialized_name="vmType", + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.value.Element.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.value.Element.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_show.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_show.py new file mode 100644 index 00000000000..e34246dbecb --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_show.py @@ -0,0 +1,293 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm show", + is_preview=True, +) +class Show(AAZCommand): + """Get an AVS VM + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsvms/{}", "2024-11-01-preview"], + ] + } + + 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.avs_vm_id = AAZStrArg( + options=["-n", "--name", "--avs-vm-id"], + help="ID of the AVS VM", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.AvsVmsGet(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 AvsVmsGet(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/PureStorage.Block/storagePools/{storagePoolName}/avsVms/{avsVmId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "avsVmId", self.ctx.args.avs_vm_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.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.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_container_type = AAZStrType( + serialized_name="volumeContainerType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.properties.avs + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.vm_id = AAZStrType( + serialized_name="vmId", + flags={"required": True}, + ) + avs.vm_name = AAZStrType( + serialized_name="vmName", + flags={"required": True}, + ) + avs.vm_type = AAZStrType( + serialized_name="vmType", + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_update.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_update.py new file mode 100644 index 00000000000..542fe4e49ab --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_update.py @@ -0,0 +1,347 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm update", + is_preview=True, +) +class Update(AAZCommand): + """Update an AVS VM + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsvms/{}", "2024-11-01-preview"], + ] + } + + 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.avs_vm_id = AAZStrArg( + options=["-n", "--name", "--avs-vm-id"], + help="ID of the AVS VM", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.soft_deletion = AAZObjectArg( + options=["--soft-deletion"], + arg_group="Properties", + help="AVS VM's soft-deletion state", + ) + + soft_deletion = cls._args_schema.soft_deletion + soft_deletion.destroyed = AAZBoolArg( + options=["destroyed"], + help="If false, the resource is active; if true, the resource has been destroyed; resources can be soft-deleted by setting destroyed to true, and recovered by setting it to false", + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.AvsVmsUpdate(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 AvsVmsUpdate(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, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/PureStorage.Block/storagePools/{storagePoolName}/avsVms/{avsVmId}", + **self.url_parameters + ) + + @property + def method(self): + return "PATCH" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "avsVmId", self.ctx.args.avs_vm_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("softDeletion", AAZObjectType, ".soft_deletion") + + soft_deletion = _builder.get(".properties.softDeletion") + if soft_deletion is not None: + soft_deletion.set_prop("destroyed", AAZBoolType, ".destroyed") + + return self.serialize_content(_content_value) + + 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.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.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_container_type = AAZStrType( + serialized_name="volumeContainerType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.properties.avs + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.vm_id = AAZStrType( + serialized_name="vmId", + flags={"required": True}, + ) + avs.vm_name = AAZStrType( + serialized_name="vmName", + flags={"required": True}, + ) + avs.vm_type = AAZStrType( + serialized_name="vmType", + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _UpdateHelper: + """Helper class for Update""" + + +__all__ = ["Update"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_wait.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_wait.py new file mode 100644 index 00000000000..085afcfc68e --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/_wait.py @@ -0,0 +1,291 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm wait", +) +class Wait(AAZWaitCommand): + """Place the CLI in a waiting state until a condition is met. + """ + + _aaz_info = { + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsvms/{}", "2024-11-01-preview"], + ] + } + + 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.avs_vm_id = AAZStrArg( + options=["-n", "--name", "--avs-vm-id"], + help="ID of the AVS VM", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.AvsVmsGet(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 AvsVmsGet(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/PureStorage.Block/storagePools/{storagePoolName}/avsVms/{avsVmId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "avsVmId", self.ctx.args.avs_vm_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.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.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_container_type = AAZStrType( + serialized_name="volumeContainerType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.properties.avs + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.vm_id = AAZStrType( + serialized_name="vmId", + flags={"required": True}, + ) + avs.vm_name = AAZStrType( + serialized_name="vmName", + flags={"required": True}, + ) + avs.vm_type = AAZStrType( + serialized_name="vmType", + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _WaitHelper: + """Helper class for Wait""" + + +__all__ = ["Wait"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/__cmd_group.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/__cmd_group.py new file mode 100644 index 00000000000..5c0f54c5025 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/__cmd_group.py @@ -0,0 +1,24 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm avs-vm-volume", + is_preview=True, +) +class __CMDGroup(AAZCommandGroup): + """Manage Avs Vm Volume + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/__init__.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/__init__.py new file mode 100644 index 00000000000..f32b66e3eeb --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# 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 ._delete import * +from ._list import * +from ._show import * +from ._update import * +from ._wait import * diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_delete.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_delete.py new file mode 100644 index 00000000000..80d2981ddf3 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_delete.py @@ -0,0 +1,192 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm avs-vm-volume delete", + is_preview=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a volume in an AVS VM + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsvms/{}/avsvmvolumes/{}", "2024-11-01-preview"], + ] + } + + 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.avs_vm_id = AAZStrArg( + options=["--avs-vm-id"], + help="ID of the AVS VM", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.volume_id = AAZStrArg( + options=["-n", "--name", "--volume-id"], + help="ID of the volume in the AVS VM", + required=True, + id_part="child_name_2", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.AvsVmVolumesDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class AvsVmVolumesDelete(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 [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, + ) + 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/PureStorage.Block/storagePools/{storagePoolName}/avsVms/{avsVmId}/avsVmVolumes/{volumeId}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "avsVmId", self.ctx.args.avs_vm_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "volumeId", self.ctx.args.volume_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2024-11-01-preview", + required=True, + ), + } + return parameters + + def on_204(self, session): + pass + + def on_200_201(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_list.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_list.py new file mode 100644 index 00000000000..1ae682defa9 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_list.py @@ -0,0 +1,327 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm avs-vm-volume list", + is_preview=True, +) +class List(AAZCommand): + """List volumes in an AVS VM + + :example: AvsVmVolumes_ListByAvsVm + az purestorageblock storage-pool avs-vm avs-vm-volume list --resource-group rgpurestorage --storage-pool-name storagePoolname --avs-vm-id cbdec-ddbb + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsvms/{}/avsvmvolumes", "2024-11-01-preview"], + ] + } + + 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.avs_vm_id = AAZStrArg( + options=["--avs-vm-id"], + help="ID of the AVS VM", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.AvsVmVolumesListByAvsVm(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 AvsVmVolumesListByAvsVm(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/PureStorage.Block/storagePools/{storagePoolName}/avsVms/{avsVmId}/avsVmVolumes", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "avsVmId", self.ctx.args.avs_vm_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioned_size = AAZIntType( + serialized_name="provisionedSize", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + flags={"required": True}, + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_internal_id = AAZStrType( + serialized_name="volumeInternalId", + flags={"read_only": True}, + ) + properties.volume_type = AAZStrType( + serialized_name="volumeType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.value.Element.properties.avs + avs.avs_storage_container_resource_id = AAZStrType( + serialized_name="avsStorageContainerResourceId", + flags={"required": True}, + ) + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.avs_vm_name = AAZStrType( + serialized_name="avsVmName", + flags={"required": True}, + ) + avs.avs_vm_resource_id = AAZStrType( + serialized_name="avsVmResourceId", + flags={"required": True}, + ) + avs.disk_id = AAZStrType( + serialized_name="diskId", + flags={"required": True}, + ) + avs.disk_name = AAZStrType( + serialized_name="diskName", + flags={"required": True}, + ) + avs.folder = AAZStrType( + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.value.Element.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.value.Element.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_show.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_show.py new file mode 100644 index 00000000000..80342242efc --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_show.py @@ -0,0 +1,326 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm avs-vm-volume show", + is_preview=True, +) +class Show(AAZCommand): + """Get a volume in an AVS VM + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsvms/{}/avsvmvolumes/{}", "2024-11-01-preview"], + ] + } + + 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.avs_vm_id = AAZStrArg( + options=["--avs-vm-id"], + help="ID of the AVS VM", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.volume_id = AAZStrArg( + options=["-n", "--name", "--volume-id"], + help="ID of the volume in the AVS VM", + required=True, + id_part="child_name_2", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.AvsVmVolumesGet(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 AvsVmVolumesGet(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/PureStorage.Block/storagePools/{storagePoolName}/avsVms/{avsVmId}/avsVmVolumes/{volumeId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "avsVmId", self.ctx.args.avs_vm_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "volumeId", self.ctx.args.volume_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2024-11-01-preview", + 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.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.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioned_size = AAZIntType( + serialized_name="provisionedSize", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + flags={"required": True}, + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_internal_id = AAZStrType( + serialized_name="volumeInternalId", + flags={"read_only": True}, + ) + properties.volume_type = AAZStrType( + serialized_name="volumeType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.properties.avs + avs.avs_storage_container_resource_id = AAZStrType( + serialized_name="avsStorageContainerResourceId", + flags={"required": True}, + ) + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.avs_vm_name = AAZStrType( + serialized_name="avsVmName", + flags={"required": True}, + ) + avs.avs_vm_resource_id = AAZStrType( + serialized_name="avsVmResourceId", + flags={"required": True}, + ) + avs.disk_id = AAZStrType( + serialized_name="diskId", + flags={"required": True}, + ) + avs.disk_name = AAZStrType( + serialized_name="diskName", + flags={"required": True}, + ) + avs.folder = AAZStrType( + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_update.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_update.py new file mode 100644 index 00000000000..b5ed4bb2410 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_update.py @@ -0,0 +1,380 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm avs-vm-volume update", + is_preview=True, +) +class Update(AAZCommand): + """Update a volume in an AVS VM + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsvms/{}/avsvmvolumes/{}", "2024-11-01-preview"], + ] + } + + 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.avs_vm_id = AAZStrArg( + options=["--avs-vm-id"], + help="ID of the AVS VM", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.volume_id = AAZStrArg( + options=["-n", "--name", "--volume-id"], + help="ID of the volume in the AVS VM", + required=True, + id_part="child_name_2", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.soft_deletion = AAZObjectArg( + options=["--soft-deletion"], + arg_group="Properties", + help="Volume's soft-deletion state", + ) + + soft_deletion = cls._args_schema.soft_deletion + soft_deletion.destroyed = AAZBoolArg( + options=["destroyed"], + help="If false, the resource is active; if true, the resource has been destroyed; resources can be soft-deleted by setting destroyed to true, and recovered by setting it to false", + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.AvsVmVolumesUpdate(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 AvsVmVolumesUpdate(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, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/PureStorage.Block/storagePools/{storagePoolName}/avsVms/{avsVmId}/avsVmVolumes/{volumeId}", + **self.url_parameters + ) + + @property + def method(self): + return "PATCH" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "avsVmId", self.ctx.args.avs_vm_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "volumeId", self.ctx.args.volume_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2024-11-01-preview", + 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("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("softDeletion", AAZObjectType, ".soft_deletion") + + soft_deletion = _builder.get(".properties.softDeletion") + if soft_deletion is not None: + soft_deletion.set_prop("destroyed", AAZBoolType, ".destroyed") + + return self.serialize_content(_content_value) + + 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.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.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioned_size = AAZIntType( + serialized_name="provisionedSize", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + flags={"required": True}, + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_internal_id = AAZStrType( + serialized_name="volumeInternalId", + flags={"read_only": True}, + ) + properties.volume_type = AAZStrType( + serialized_name="volumeType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.properties.avs + avs.avs_storage_container_resource_id = AAZStrType( + serialized_name="avsStorageContainerResourceId", + flags={"required": True}, + ) + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.avs_vm_name = AAZStrType( + serialized_name="avsVmName", + flags={"required": True}, + ) + avs.avs_vm_resource_id = AAZStrType( + serialized_name="avsVmResourceId", + flags={"required": True}, + ) + avs.disk_id = AAZStrType( + serialized_name="diskId", + flags={"required": True}, + ) + avs.disk_name = AAZStrType( + serialized_name="diskName", + flags={"required": True}, + ) + avs.folder = AAZStrType( + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _UpdateHelper: + """Helper class for Update""" + + +__all__ = ["Update"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_wait.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_wait.py new file mode 100644 index 00000000000..6b508dc3ce4 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/avs_vm/avs_vm_volume/_wait.py @@ -0,0 +1,324 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool avs-vm avs-vm-volume wait", +) +class Wait(AAZWaitCommand): + """Place the CLI in a waiting state until a condition is met. + """ + + _aaz_info = { + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}/avsvms/{}/avsvmvolumes/{}", "2024-11-01-preview"], + ] + } + + 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.avs_vm_id = AAZStrArg( + options=["--avs-vm-id"], + help="ID of the AVS VM", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + _args_schema.volume_id = AAZStrArg( + options=["-n", "--name", "--volume-id"], + help="ID of the volume in the AVS VM", + required=True, + id_part="child_name_2", + fmt=AAZStrArgFormat( + pattern="^[a-fA-F0-9\\-]{1,64}$", + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.AvsVmVolumesGet(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 AvsVmVolumesGet(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/PureStorage.Block/storagePools/{storagePoolName}/avsVms/{avsVmId}/avsVmVolumes/{volumeId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "avsVmId", self.ctx.args.avs_vm_id, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "volumeId", self.ctx.args.volume_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2024-11-01-preview", + 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.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.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.created_timestamp = AAZStrType( + serialized_name="createdTimestamp", + flags={"read_only": True}, + ) + properties.display_name = AAZStrType( + serialized_name="displayName", + flags={"read_only": True}, + ) + properties.provisioned_size = AAZIntType( + serialized_name="provisionedSize", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.soft_deletion = AAZObjectType( + serialized_name="softDeletion", + flags={"required": True}, + ) + properties.space = AAZObjectType( + flags={"read_only": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.storage_pool_resource_id = AAZStrType( + serialized_name="storagePoolResourceId", + flags={"read_only": True}, + ) + properties.volume_internal_id = AAZStrType( + serialized_name="volumeInternalId", + flags={"read_only": True}, + ) + properties.volume_type = AAZStrType( + serialized_name="volumeType", + flags={"read_only": True}, + ) + + avs = cls._schema_on_200.properties.avs + avs.avs_storage_container_resource_id = AAZStrType( + serialized_name="avsStorageContainerResourceId", + flags={"required": True}, + ) + avs.avs_vm_internal_id = AAZStrType( + serialized_name="avsVmInternalId", + flags={"required": True}, + ) + avs.avs_vm_name = AAZStrType( + serialized_name="avsVmName", + flags={"required": True}, + ) + avs.avs_vm_resource_id = AAZStrType( + serialized_name="avsVmResourceId", + flags={"required": True}, + ) + avs.disk_id = AAZStrType( + serialized_name="diskId", + flags={"required": True}, + ) + avs.disk_name = AAZStrType( + serialized_name="diskName", + flags={"required": True}, + ) + avs.folder = AAZStrType( + flags={"required": True}, + ) + + soft_deletion = cls._schema_on_200.properties.soft_deletion + soft_deletion.destroyed = AAZBoolType( + flags={"required": True}, + ) + soft_deletion.eradication_timestamp = AAZStrType( + serialized_name="eradicationTimestamp", + flags={"read_only": True}, + ) + + space = cls._schema_on_200.properties.space + space.shared = AAZIntType( + flags={"required": True}, + ) + space.snapshots = AAZIntType( + flags={"required": True}, + ) + space.total_used = AAZIntType( + serialized_name="totalUsed", + flags={"required": True}, + ) + space.unique = AAZIntType( + flags={"required": True}, + ) + + 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", + ) + + return cls._schema_on_200 + + +class _WaitHelper: + """Helper class for Wait""" + + +__all__ = ["Wait"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/__cmd_group.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/__cmd_group.py new file mode 100644 index 00000000000..2802426d30b --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/__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( + "purestorageblock storage-pool identity", +) +class __CMDGroup(AAZCommandGroup): + """Manage Identity + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/__init__.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/__init__.py new file mode 100644 index 00000000000..3a074471e35 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/__init__.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: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._assign import * +from ._remove import * +from ._show import * +from ._wait import * diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_assign.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_assign.py new file mode 100644 index 00000000000..d62ecb172b9 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_assign.py @@ -0,0 +1,498 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool identity assign", +) +class Assign(AAZCommand): + """Assign the user or system managed identities. + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}", "2024-11-01-preview", "identity"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + self.SubresourceSelector(ctx=self.ctx, name="subresource") + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["-n", "--name", "--storage-pool-name"], + help="Name of the storage pool", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + + # define Arg Group "Resource.identity" + + _args_schema = cls._args_schema + _args_schema.mi_system_assigned = AAZStrArg( + options=["--system-assigned", "--mi-system-assigned"], + arg_group="Resource.identity", + help="Set the system managed identity.", + blank="True", + ) + _args_schema.mi_user_assigned = AAZListArg( + options=["--user-assigned", "--mi-user-assigned"], + arg_group="Resource.identity", + help="Set the user managed identities.", + blank=[], + ) + + mi_user_assigned = cls._args_schema.mi_user_assigned + mi_user_assigned.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.StoragePoolsGet(ctx=self.ctx)() + self.pre_instance_update(self.ctx.selectors.subresource.required()) + self.InstanceUpdateByJson(ctx=self.ctx)() + self.post_instance_update(self.ctx.selectors.subresource.required()) + yield self.StoragePoolsCreate(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.selectors.subresource.required(), client_flatten=True) + return result + + class SubresourceSelector(AAZJsonSelector): + + def _get(self): + result = self.ctx.vars.instance + return result.identity + + def _set(self, value): + result = self.ctx.vars.instance + result.identity = value + return + + class StoragePoolsGet(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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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() + _AssignHelper._build_schema_storage_pool_read(cls._schema_on_200) + + return cls._schema_on_200 + + class StoragePoolsCreate(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": "azure-async-operation"}, + 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": "azure-async-operation"}, + 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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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() + _AssignHelper._build_schema_storage_pool_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.selectors.subresource.required()) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZIdentityObjectType + ) + _builder.set_prop("userAssigned", AAZListType, ".mi_user_assigned", typ_kwargs={"flags": {"action": "assign"}}) + _builder.set_prop("systemAssigned", AAZStrType, ".mi_system_assigned", typ_kwargs={"flags": {"action": "assign"}}) + + user_assigned = _builder.get(".userAssigned") + if user_assigned is not None: + user_assigned.set_elements(AAZStrType, ".") + + return _instance_value + + +class _AssignHelper: + """Helper class for Assign""" + + _schema_storage_pool_read = None + + @classmethod + def _build_schema_storage_pool_read(cls, _schema): + if cls._schema_storage_pool_read is not None: + _schema.id = cls._schema_storage_pool_read.id + _schema.identity = cls._schema_storage_pool_read.identity + _schema.location = cls._schema_storage_pool_read.location + _schema.name = cls._schema_storage_pool_read.name + _schema.properties = cls._schema_storage_pool_read.properties + _schema.system_data = cls._schema_storage_pool_read.system_data + _schema.tags = cls._schema_storage_pool_read.tags + _schema.type = cls._schema_storage_pool_read.type + return + + cls._schema_storage_pool_read = _schema_storage_pool_read = AAZObjectType() + + storage_pool_read = _schema_storage_pool_read + storage_pool_read.id = AAZStrType( + flags={"read_only": True}, + ) + storage_pool_read.identity = AAZIdentityObjectType() + storage_pool_read.location = AAZStrType( + flags={"required": True}, + ) + storage_pool_read.name = AAZStrType( + flags={"read_only": True}, + ) + storage_pool_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + storage_pool_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + storage_pool_read.tags = AAZDictType() + storage_pool_read.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = _schema_storage_pool_read.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = _schema_storage_pool_read.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = _schema_storage_pool_read.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = _schema_storage_pool_read.properties + properties.availability_zone = AAZStrType( + serialized_name="availabilityZone", + flags={"required": True}, + ) + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.data_retention_period = AAZIntType( + serialized_name="dataRetentionPeriod", + flags={"read_only": True}, + ) + properties.provisioned_bandwidth_mb_per_sec = AAZIntType( + serialized_name="provisionedBandwidthMbPerSec", + flags={"required": True}, + ) + properties.provisioned_iops = AAZIntType( + serialized_name="provisionedIops", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_resource_id = AAZStrType( + serialized_name="reservationResourceId", + flags={"required": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.vnet_injection = AAZObjectType( + serialized_name="vnetInjection", + flags={"required": True}, + ) + + avs = _schema_storage_pool_read.properties.avs + avs.avs_enabled = AAZBoolType( + serialized_name="avsEnabled", + flags={"required": True}, + ) + avs.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + + vnet_injection = _schema_storage_pool_read.properties.vnet_injection + vnet_injection.subnet_id = AAZStrType( + serialized_name="subnetId", + flags={"required": True}, + ) + vnet_injection.vnet_id = AAZStrType( + serialized_name="vnetId", + flags={"required": True}, + ) + + system_data = _schema_storage_pool_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_storage_pool_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_storage_pool_read.id + _schema.identity = cls._schema_storage_pool_read.identity + _schema.location = cls._schema_storage_pool_read.location + _schema.name = cls._schema_storage_pool_read.name + _schema.properties = cls._schema_storage_pool_read.properties + _schema.system_data = cls._schema_storage_pool_read.system_data + _schema.tags = cls._schema_storage_pool_read.tags + _schema.type = cls._schema_storage_pool_read.type + + +__all__ = ["Assign"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_remove.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_remove.py new file mode 100644 index 00000000000..cc2891a26b2 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_remove.py @@ -0,0 +1,498 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool identity remove", +) +class Remove(AAZCommand): + """Remove the user or system managed identities. + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}", "2024-11-01-preview", "identity"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + self.SubresourceSelector(ctx=self.ctx, name="subresource") + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["-n", "--name", "--storage-pool-name"], + help="Name of the storage pool", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + + # define Arg Group "Resource.identity" + + _args_schema = cls._args_schema + _args_schema.mi_system_assigned = AAZStrArg( + options=["--system-assigned", "--mi-system-assigned"], + arg_group="Resource.identity", + help="Set the system managed identity.", + blank="True", + ) + _args_schema.mi_user_assigned = AAZListArg( + options=["--user-assigned", "--mi-user-assigned"], + arg_group="Resource.identity", + help="Set the user managed identities.", + blank=[], + ) + + mi_user_assigned = cls._args_schema.mi_user_assigned + mi_user_assigned.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.StoragePoolsGet(ctx=self.ctx)() + self.pre_instance_update(self.ctx.selectors.subresource.required()) + self.InstanceUpdateByJson(ctx=self.ctx)() + self.post_instance_update(self.ctx.selectors.subresource.required()) + yield self.StoragePoolsCreate(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.selectors.subresource.required(), client_flatten=True) + return result + + class SubresourceSelector(AAZJsonSelector): + + def _get(self): + result = self.ctx.vars.instance + return result.identity + + def _set(self, value): + result = self.ctx.vars.instance + result.identity = value + return + + class StoragePoolsGet(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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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() + _RemoveHelper._build_schema_storage_pool_read(cls._schema_on_200) + + return cls._schema_on_200 + + class StoragePoolsCreate(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": "azure-async-operation"}, + 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": "azure-async-operation"}, + 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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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() + _RemoveHelper._build_schema_storage_pool_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.selectors.subresource.required()) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZIdentityObjectType + ) + _builder.set_prop("userAssigned", AAZListType, ".mi_user_assigned", typ_kwargs={"flags": {"action": "remove"}}) + _builder.set_prop("systemAssigned", AAZStrType, ".mi_system_assigned", typ_kwargs={"flags": {"action": "remove"}}) + + user_assigned = _builder.get(".userAssigned") + if user_assigned is not None: + user_assigned.set_elements(AAZStrType, ".") + + return _instance_value + + +class _RemoveHelper: + """Helper class for Remove""" + + _schema_storage_pool_read = None + + @classmethod + def _build_schema_storage_pool_read(cls, _schema): + if cls._schema_storage_pool_read is not None: + _schema.id = cls._schema_storage_pool_read.id + _schema.identity = cls._schema_storage_pool_read.identity + _schema.location = cls._schema_storage_pool_read.location + _schema.name = cls._schema_storage_pool_read.name + _schema.properties = cls._schema_storage_pool_read.properties + _schema.system_data = cls._schema_storage_pool_read.system_data + _schema.tags = cls._schema_storage_pool_read.tags + _schema.type = cls._schema_storage_pool_read.type + return + + cls._schema_storage_pool_read = _schema_storage_pool_read = AAZObjectType() + + storage_pool_read = _schema_storage_pool_read + storage_pool_read.id = AAZStrType( + flags={"read_only": True}, + ) + storage_pool_read.identity = AAZIdentityObjectType() + storage_pool_read.location = AAZStrType( + flags={"required": True}, + ) + storage_pool_read.name = AAZStrType( + flags={"read_only": True}, + ) + storage_pool_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + storage_pool_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + storage_pool_read.tags = AAZDictType() + storage_pool_read.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = _schema_storage_pool_read.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = _schema_storage_pool_read.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = _schema_storage_pool_read.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = _schema_storage_pool_read.properties + properties.availability_zone = AAZStrType( + serialized_name="availabilityZone", + flags={"required": True}, + ) + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.data_retention_period = AAZIntType( + serialized_name="dataRetentionPeriod", + flags={"read_only": True}, + ) + properties.provisioned_bandwidth_mb_per_sec = AAZIntType( + serialized_name="provisionedBandwidthMbPerSec", + flags={"required": True}, + ) + properties.provisioned_iops = AAZIntType( + serialized_name="provisionedIops", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_resource_id = AAZStrType( + serialized_name="reservationResourceId", + flags={"required": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.vnet_injection = AAZObjectType( + serialized_name="vnetInjection", + flags={"required": True}, + ) + + avs = _schema_storage_pool_read.properties.avs + avs.avs_enabled = AAZBoolType( + serialized_name="avsEnabled", + flags={"required": True}, + ) + avs.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + + vnet_injection = _schema_storage_pool_read.properties.vnet_injection + vnet_injection.subnet_id = AAZStrType( + serialized_name="subnetId", + flags={"required": True}, + ) + vnet_injection.vnet_id = AAZStrType( + serialized_name="vnetId", + flags={"required": True}, + ) + + system_data = _schema_storage_pool_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_storage_pool_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_storage_pool_read.id + _schema.identity = cls._schema_storage_pool_read.identity + _schema.location = cls._schema_storage_pool_read.location + _schema.name = cls._schema_storage_pool_read.name + _schema.properties = cls._schema_storage_pool_read.properties + _schema.system_data = cls._schema_storage_pool_read.system_data + _schema.tags = cls._schema_storage_pool_read.tags + _schema.type = cls._schema_storage_pool_read.type + + +__all__ = ["Remove"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_show.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_show.py new file mode 100644 index 00000000000..2ca50660bf9 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_show.py @@ -0,0 +1,335 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool identity show", +) +class Show(AAZCommand): + """Show the details of managed identities. + """ + + _aaz_info = { + "version": "2024-11-01-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}", "2024-11-01-preview", "identity"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self.SubresourceSelector(ctx=self.ctx, name="subresource") + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["-n", "--name", "--storage-pool-name"], + help="Name of the storage pool", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.StoragePoolsGet(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.selectors.subresource.required(), client_flatten=True) + return result + + class SubresourceSelector(AAZJsonSelector): + + def _get(self): + result = self.ctx.vars.instance + return result.identity + + def _set(self, value): + result = self.ctx.vars.instance + result.identity = value + return + + class StoragePoolsGet(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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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() + _ShowHelper._build_schema_storage_pool_read(cls._schema_on_200) + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + _schema_storage_pool_read = None + + @classmethod + def _build_schema_storage_pool_read(cls, _schema): + if cls._schema_storage_pool_read is not None: + _schema.id = cls._schema_storage_pool_read.id + _schema.identity = cls._schema_storage_pool_read.identity + _schema.location = cls._schema_storage_pool_read.location + _schema.name = cls._schema_storage_pool_read.name + _schema.properties = cls._schema_storage_pool_read.properties + _schema.system_data = cls._schema_storage_pool_read.system_data + _schema.tags = cls._schema_storage_pool_read.tags + _schema.type = cls._schema_storage_pool_read.type + return + + cls._schema_storage_pool_read = _schema_storage_pool_read = AAZObjectType() + + storage_pool_read = _schema_storage_pool_read + storage_pool_read.id = AAZStrType( + flags={"read_only": True}, + ) + storage_pool_read.identity = AAZIdentityObjectType() + storage_pool_read.location = AAZStrType( + flags={"required": True}, + ) + storage_pool_read.name = AAZStrType( + flags={"read_only": True}, + ) + storage_pool_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + storage_pool_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + storage_pool_read.tags = AAZDictType() + storage_pool_read.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = _schema_storage_pool_read.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = _schema_storage_pool_read.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = _schema_storage_pool_read.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = _schema_storage_pool_read.properties + properties.availability_zone = AAZStrType( + serialized_name="availabilityZone", + flags={"required": True}, + ) + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.data_retention_period = AAZIntType( + serialized_name="dataRetentionPeriod", + flags={"read_only": True}, + ) + properties.provisioned_bandwidth_mb_per_sec = AAZIntType( + serialized_name="provisionedBandwidthMbPerSec", + flags={"required": True}, + ) + properties.provisioned_iops = AAZIntType( + serialized_name="provisionedIops", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_resource_id = AAZStrType( + serialized_name="reservationResourceId", + flags={"required": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.vnet_injection = AAZObjectType( + serialized_name="vnetInjection", + flags={"required": True}, + ) + + avs = _schema_storage_pool_read.properties.avs + avs.avs_enabled = AAZBoolType( + serialized_name="avsEnabled", + flags={"required": True}, + ) + avs.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + + vnet_injection = _schema_storage_pool_read.properties.vnet_injection + vnet_injection.subnet_id = AAZStrType( + serialized_name="subnetId", + flags={"required": True}, + ) + vnet_injection.vnet_id = AAZStrType( + serialized_name="vnetId", + flags={"required": True}, + ) + + system_data = _schema_storage_pool_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_storage_pool_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_storage_pool_read.id + _schema.identity = cls._schema_storage_pool_read.identity + _schema.location = cls._schema_storage_pool_read.location + _schema.name = cls._schema_storage_pool_read.name + _schema.properties = cls._schema_storage_pool_read.properties + _schema.system_data = cls._schema_storage_pool_read.system_data + _schema.tags = cls._schema_storage_pool_read.tags + _schema.type = cls._schema_storage_pool_read.type + + +__all__ = ["Show"] diff --git a/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_wait.py b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_wait.py new file mode 100644 index 00000000000..33c794525a0 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/aaz/latest/purestorageblock/storage_pool/identity/_wait.py @@ -0,0 +1,323 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "purestorageblock storage-pool identity wait", +) +class Wait(AAZWaitCommand): + """Place the CLI in a waiting state until a condition is met. + """ + + _aaz_info = { + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/purestorage.block/storagepools/{}", "2024-11-01-preview", "identity"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.storage_pool_name = AAZStrArg( + options=["-n", "--name", "--storage-pool-name"], + help="Name of the storage pool", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-_]{1,127}$", + max_length=127, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.StoragePoolsGet(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 StoragePoolsGet(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/PureStorage.Block/storagePools/{storagePoolName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "storagePoolName", self.ctx.args.storage_pool_name, + 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-preview", + 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() + _WaitHelper._build_schema_storage_pool_read(cls._schema_on_200) + + return cls._schema_on_200 + + +class _WaitHelper: + """Helper class for Wait""" + + _schema_storage_pool_read = None + + @classmethod + def _build_schema_storage_pool_read(cls, _schema): + if cls._schema_storage_pool_read is not None: + _schema.id = cls._schema_storage_pool_read.id + _schema.identity = cls._schema_storage_pool_read.identity + _schema.location = cls._schema_storage_pool_read.location + _schema.name = cls._schema_storage_pool_read.name + _schema.properties = cls._schema_storage_pool_read.properties + _schema.system_data = cls._schema_storage_pool_read.system_data + _schema.tags = cls._schema_storage_pool_read.tags + _schema.type = cls._schema_storage_pool_read.type + return + + cls._schema_storage_pool_read = _schema_storage_pool_read = AAZObjectType() + + storage_pool_read = _schema_storage_pool_read + storage_pool_read.id = AAZStrType( + flags={"read_only": True}, + ) + storage_pool_read.identity = AAZIdentityObjectType() + storage_pool_read.location = AAZStrType( + flags={"required": True}, + ) + storage_pool_read.name = AAZStrType( + flags={"read_only": True}, + ) + storage_pool_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + storage_pool_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + storage_pool_read.tags = AAZDictType() + storage_pool_read.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = _schema_storage_pool_read.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = _schema_storage_pool_read.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = _schema_storage_pool_read.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = _schema_storage_pool_read.properties + properties.availability_zone = AAZStrType( + serialized_name="availabilityZone", + flags={"required": True}, + ) + properties.avs = AAZObjectType( + flags={"read_only": True}, + ) + properties.data_retention_period = AAZIntType( + serialized_name="dataRetentionPeriod", + flags={"read_only": True}, + ) + properties.provisioned_bandwidth_mb_per_sec = AAZIntType( + serialized_name="provisionedBandwidthMbPerSec", + flags={"required": True}, + ) + properties.provisioned_iops = AAZIntType( + serialized_name="provisionedIops", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.reservation_resource_id = AAZStrType( + serialized_name="reservationResourceId", + flags={"required": True}, + ) + properties.storage_pool_internal_id = AAZStrType( + serialized_name="storagePoolInternalId", + flags={"read_only": True}, + ) + properties.vnet_injection = AAZObjectType( + serialized_name="vnetInjection", + flags={"required": True}, + ) + + avs = _schema_storage_pool_read.properties.avs + avs.avs_enabled = AAZBoolType( + serialized_name="avsEnabled", + flags={"required": True}, + ) + avs.sddc_resource_id = AAZStrType( + serialized_name="sddcResourceId", + ) + + vnet_injection = _schema_storage_pool_read.properties.vnet_injection + vnet_injection.subnet_id = AAZStrType( + serialized_name="subnetId", + flags={"required": True}, + ) + vnet_injection.vnet_id = AAZStrType( + serialized_name="vnetId", + flags={"required": True}, + ) + + system_data = _schema_storage_pool_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_storage_pool_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_storage_pool_read.id + _schema.identity = cls._schema_storage_pool_read.identity + _schema.location = cls._schema_storage_pool_read.location + _schema.name = cls._schema_storage_pool_read.name + _schema.properties = cls._schema_storage_pool_read.properties + _schema.system_data = cls._schema_storage_pool_read.system_data + _schema.tags = cls._schema_storage_pool_read.tags + _schema.type = cls._schema_storage_pool_read.type + + +__all__ = ["Wait"] diff --git a/src/purestorageblock/azext_purestorageblock/azext_metadata.json b/src/purestorageblock/azext_purestorageblock/azext_metadata.json new file mode 100644 index 00000000000..e506328978c --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/azext_metadata.json @@ -0,0 +1,4 @@ +{ + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.70.0" +} \ No newline at end of file diff --git a/src/purestorageblock/azext_purestorageblock/commands.py b/src/purestorageblock/azext_purestorageblock/commands.py new file mode 100644 index 00000000000..b0d842e4993 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/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/purestorageblock/azext_purestorageblock/custom.py b/src/purestorageblock/azext_purestorageblock/custom.py new file mode 100644 index 00000000000..86df1e48ef5 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/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/purestorageblock/azext_purestorageblock/tests/__init__.py b/src/purestorageblock/azext_purestorageblock/tests/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/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/purestorageblock/azext_purestorageblock/tests/latest/__init__.py b/src/purestorageblock/azext_purestorageblock/tests/latest/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/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 +# -------------------------------------------------------------------------------------------- diff --git a/src/purestorageblock/azext_purestorageblock/tests/latest/test_purestorageblock.py b/src/purestorageblock/azext_purestorageblock/tests/latest/test_purestorageblock.py new file mode 100644 index 00000000000..9217adadc80 --- /dev/null +++ b/src/purestorageblock/azext_purestorageblock/tests/latest/test_purestorageblock.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 +# -------------------------------------------------------------------------------------------- + +from azure.cli.testsdk import * + + +class PurestorageblockScenario(ScenarioTest): + # TODO: add tests here + pass diff --git a/src/purestorageblock/setup.cfg b/src/purestorageblock/setup.cfg new file mode 100644 index 00000000000..2fdd96e5d39 --- /dev/null +++ b/src/purestorageblock/setup.cfg @@ -0,0 +1 @@ +#setup.cfg \ No newline at end of file diff --git a/src/purestorageblock/setup.py b/src/purestorageblock/setup.py new file mode 100644 index 00000000000..9a63ac5c981 --- /dev/null +++ b/src/purestorageblock/setup.py @@ -0,0 +1,49 @@ +# -------------------------------------------------------------------------------------------- +# 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.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + '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='purestorageblock', + version=VERSION, + description='Microsoft Azure Command-Line Tools Purestorageblock 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/purestorageblock', + classifiers=CLASSIFIERS, + packages=find_packages(exclude=["tests"]), + package_data={'azext_purestorageblock': ['azext_metadata.json']}, + install_requires=DEPENDENCIES +)