diff --git a/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/__cmd_group.py b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/__cmd_group.py new file mode 100644 index 00000000000..97cad0d5700 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/__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( + "monitor tenant-action-group", +) +class __CMDGroup(AAZCommandGroup): + """monitor tenant-action-group + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/__init__.py b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/__init__.py new file mode 100644 index 00000000000..5df4edd53b0 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/__init__.py @@ -0,0 +1,17 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._create_notification import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_create.py b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_create.py new file mode 100644 index 00000000000..eade24d381c --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_create.py @@ -0,0 +1,558 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "monitor tenant-action-group create", +) +class Create(AAZCommand): + """Create a new tenant action group or update an existing one. + """ + + _aaz_info = { + "version": "2023-05-01-preview", + "resources": [ + ["mgmt-plane", "/providers/microsoft.management/managementgroups/{}/providers/microsoft.insights/tenantactiongroups/{}", "2023-05-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.x_ms_client_tenant_id = AAZStrArg( + options=["--x-ms-client-tenant-id"], + help="The tenant ID of the client making the request.", + required=True, + ) + _args_schema.management_group_id = AAZStrArg( + options=["--management-group-id"], + help="The management group id.", + required=True, + ) + _args_schema.tenant_action_group_name = AAZStrArg( + options=["--tenant-action-group-name"], + help="The name of the action group.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[A-Za-z][A-Za-z0-9]*$", + max_length=260, + min_length=1, + ), + ) + + # define Arg Group "ActionGroup" + + _args_schema = cls._args_schema + _args_schema.location = AAZResourceLocationArg( + arg_group="ActionGroup", + help="Resource location", + required=True, + ) + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="ActionGroup", + help="Resource tags", + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg() + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.azure_app_push_receivers = AAZListArg( + options=["--azure-app-push-receivers"], + arg_group="Properties", + help="The list of AzureAppPush receivers that are part of this tenant action group.", + ) + _args_schema.email_receivers = AAZListArg( + options=["--email-receivers"], + arg_group="Properties", + help="The list of email receivers that are part of this tenant action group.", + ) + _args_schema.enabled_tenant = AAZBoolArg( + options=["--enabled-tenant"], + arg_group="Properties", + help="Indicates whether this tenant action group is enabled. If a tenant action group is not enabled, then none of its receivers will receive communications.", + default=True, + ) + _args_schema.group_short_name = AAZStrArg( + options=["--group-short-name"], + arg_group="Properties", + help="The short name of the action group. This will be used in SMS messages.", + fmt=AAZStrArgFormat( + max_length=12, + ), + ) + _args_schema.sms_receivers = AAZListArg( + options=["--sms-receivers"], + arg_group="Properties", + help="The list of SMS receivers that are part of this tenant action group.", + ) + _args_schema.voice_receivers = AAZListArg( + options=["--voice-receivers"], + arg_group="Properties", + help="The list of voice receivers that are part of this tenant action group.", + ) + _args_schema.webhook_receivers = AAZListArg( + options=["--webhook-receivers"], + arg_group="Properties", + help="The list of webhook receivers that are part of this tenant action group.", + ) + + azure_app_push_receivers = cls._args_schema.azure_app_push_receivers + azure_app_push_receivers.Element = AAZObjectArg() + + _element = cls._args_schema.azure_app_push_receivers.Element + _element.email_address = AAZStrArg( + options=["email-address"], + help="The email address registered for the Azure mobile app.", + required=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the Azure mobile app push receiver. Names must be unique across all receivers within a tenant action group.", + required=True, + ) + + email_receivers = cls._args_schema.email_receivers + email_receivers.Element = AAZObjectArg() + + _element = cls._args_schema.email_receivers.Element + _element.email_address = AAZStrArg( + options=["email-address"], + help="The email address of this receiver.", + required=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the email receiver. Names must be unique across all receivers within a tenant action group.", + required=True, + ) + _element.use_common_alert_schema = AAZBoolArg( + options=["use-common-alert-schema"], + help="Indicates whether to use common alert schema.", + default=False, + ) + + sms_receivers = cls._args_schema.sms_receivers + sms_receivers.Element = AAZObjectArg() + + _element = cls._args_schema.sms_receivers.Element + _element.country_code = AAZStrArg( + options=["country-code"], + help="The country code of the SMS receiver.", + required=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the SMS receiver. Names must be unique across all receivers within a tenant action group.", + required=True, + ) + _element.phone_number = AAZStrArg( + options=["phone-number"], + help="The phone number of the SMS receiver.", + required=True, + ) + + voice_receivers = cls._args_schema.voice_receivers + voice_receivers.Element = AAZObjectArg() + + _element = cls._args_schema.voice_receivers.Element + _element.country_code = AAZStrArg( + options=["country-code"], + help="The country code of the voice receiver.", + required=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the voice receiver. Names must be unique across all receivers within a tenant action group.", + required=True, + ) + _element.phone_number = AAZStrArg( + options=["phone-number"], + help="The phone number of the voice receiver.", + required=True, + ) + + webhook_receivers = cls._args_schema.webhook_receivers + webhook_receivers.Element = AAZObjectArg() + + _element = cls._args_schema.webhook_receivers.Element + _element.identifier_uri = AAZStrArg( + options=["identifier-uri"], + help="Indicates the identifier uri for aad auth.", + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the webhook receiver. Names must be unique across all receivers within a tenant action group.", + required=True, + ) + _element.object_id = AAZStrArg( + options=["object-id"], + help="Indicates the webhook app object Id for aad auth.", + ) + _element.service_uri = AAZStrArg( + options=["service-uri"], + help="The URI where webhooks should be sent.", + required=True, + ) + _element.tenant_id = AAZStrArg( + options=["tenant-id"], + help="Indicates the tenant id for aad auth.", + ) + _element.use_aad_auth = AAZBoolArg( + options=["use-aad-auth"], + help="Indicates whether or not use AAD authentication.", + default=False, + ) + _element.use_common_alert_schema = AAZBoolArg( + options=["use-common-alert-schema"], + help="Indicates whether to use common alert schema.", + default=False, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.TenantActionGroupsCreateOrUpdate(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 TenantActionGroupsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Insights/tenantActionGroups/{tenantActionGroupName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "managementGroupId", self.ctx.args.management_group_id, + required=True, + ), + **self.serialize_url_param( + "tenantActionGroupName", self.ctx.args.tenant_action_group_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2023-05-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "x-ms-client-tenant-id", self.ctx.args.x_ms_client_tenant_id, + required=True, + ), + **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("azureAppPushReceivers", AAZListType, ".azure_app_push_receivers") + properties.set_prop("emailReceivers", AAZListType, ".email_receivers") + properties.set_prop("enabled", AAZBoolType, ".enabled_tenant", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("groupShortName", AAZStrType, ".group_short_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("smsReceivers", AAZListType, ".sms_receivers") + properties.set_prop("voiceReceivers", AAZListType, ".voice_receivers") + properties.set_prop("webhookReceivers", AAZListType, ".webhook_receivers") + + azure_app_push_receivers = _builder.get(".properties.azureAppPushReceivers") + if azure_app_push_receivers is not None: + azure_app_push_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.azureAppPushReceivers[]") + if _elements is not None: + _elements.set_prop("emailAddress", AAZStrType, ".email_address", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + + email_receivers = _builder.get(".properties.emailReceivers") + if email_receivers is not None: + email_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.emailReceivers[]") + if _elements is not None: + _elements.set_prop("emailAddress", AAZStrType, ".email_address", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("useCommonAlertSchema", AAZBoolType, ".use_common_alert_schema") + + sms_receivers = _builder.get(".properties.smsReceivers") + if sms_receivers is not None: + sms_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.smsReceivers[]") + if _elements is not None: + _elements.set_prop("countryCode", AAZStrType, ".country_code", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("phoneNumber", AAZStrType, ".phone_number", typ_kwargs={"flags": {"required": True}}) + + voice_receivers = _builder.get(".properties.voiceReceivers") + if voice_receivers is not None: + voice_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.voiceReceivers[]") + if _elements is not None: + _elements.set_prop("countryCode", AAZStrType, ".country_code", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("phoneNumber", AAZStrType, ".phone_number", typ_kwargs={"flags": {"required": True}}) + + webhook_receivers = _builder.get(".properties.webhookReceivers") + if webhook_receivers is not None: + webhook_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.webhookReceivers[]") + if _elements is not None: + _elements.set_prop("identifierUri", AAZStrType, ".identifier_uri") + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("objectId", AAZStrType, ".object_id") + _elements.set_prop("serviceUri", AAZStrType, ".service_uri", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("tenantId", AAZStrType, ".tenant_id") + _elements.set_prop("useAadAuth", AAZBoolType, ".use_aad_auth") + _elements.set_prop("useCommonAlertSchema", AAZBoolType, ".use_common_alert_schema") + + 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.tags = AAZDictType() + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.azure_app_push_receivers = AAZListType( + serialized_name="azureAppPushReceivers", + ) + properties.email_receivers = AAZListType( + serialized_name="emailReceivers", + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.group_short_name = AAZStrType( + serialized_name="groupShortName", + flags={"required": True}, + ) + properties.sms_receivers = AAZListType( + serialized_name="smsReceivers", + ) + properties.voice_receivers = AAZListType( + serialized_name="voiceReceivers", + ) + properties.webhook_receivers = AAZListType( + serialized_name="webhookReceivers", + ) + + azure_app_push_receivers = cls._schema_on_200_201.properties.azure_app_push_receivers + azure_app_push_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.azure_app_push_receivers.Element + _element.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + + email_receivers = cls._schema_on_200_201.properties.email_receivers + email_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.email_receivers.Element + _element.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.status = AAZStrType() + _element.use_common_alert_schema = AAZBoolType( + serialized_name="useCommonAlertSchema", + ) + + sms_receivers = cls._schema_on_200_201.properties.sms_receivers + sms_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.sms_receivers.Element + _element.country_code = AAZStrType( + serialized_name="countryCode", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.phone_number = AAZStrType( + serialized_name="phoneNumber", + flags={"required": True}, + ) + _element.status = AAZStrType() + + voice_receivers = cls._schema_on_200_201.properties.voice_receivers + voice_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.voice_receivers.Element + _element.country_code = AAZStrType( + serialized_name="countryCode", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.phone_number = AAZStrType( + serialized_name="phoneNumber", + flags={"required": True}, + ) + + webhook_receivers = cls._schema_on_200_201.properties.webhook_receivers + webhook_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.webhook_receivers.Element + _element.identifier_uri = AAZStrType( + serialized_name="identifierUri", + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.object_id = AAZStrType( + serialized_name="objectId", + ) + _element.service_uri = AAZStrType( + serialized_name="serviceUri", + flags={"required": True}, + ) + _element.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + _element.use_aad_auth = AAZBoolType( + serialized_name="useAadAuth", + ) + _element.use_common_alert_schema = AAZBoolType( + serialized_name="useCommonAlertSchema", + ) + + 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/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_create_notification.py b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_create_notification.py new file mode 100644 index 00000000000..52088fd5965 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_create_notification.py @@ -0,0 +1,449 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "monitor tenant-action-group create-notification", +) +class CreateNotification(AAZCommand): + """Send test notifications to a set of provided receivers + """ + + _aaz_info = { + "version": "2023-05-01-preview", + "resources": [ + ["mgmt-plane", "/providers/microsoft.management/managementgroups/{}/providers/microsoft.insights/tenantactiongroups/{}/createnotifications", "2023-05-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.x_ms_client_tenant_id = AAZStrArg( + options=["--x-ms-client-tenant-id"], + help="The tenant ID of the client making the request.", + required=True, + ) + _args_schema.management_group_id = AAZStrArg( + options=["--management-group-id"], + help="The management group id.", + required=True, + ) + _args_schema.tenant_action_group_name = AAZStrArg( + options=["--tenant-action-group-name"], + help="The name of the action group.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[A-Za-z][A-Za-z0-9]*$", + max_length=260, + min_length=1, + ), + ) + + # define Arg Group "NotificationRequest" + + _args_schema = cls._args_schema + _args_schema.alert_type = AAZStrArg( + options=["--alert-type"], + arg_group="NotificationRequest", + help="The value of the supported alert type. Supported alert type value is: servicehealth", + required=True, + fmt=AAZStrArgFormat( + max_length=30, + ), + ) + _args_schema.azure_app_push_receivers = AAZListArg( + options=["--azure-app-push-receivers"], + arg_group="NotificationRequest", + help="The list of AzureAppPush receivers that are part of this action group.", + ) + _args_schema.email_receivers = AAZListArg( + options=["--email-receivers"], + arg_group="NotificationRequest", + help="The list of email receivers that are part of this action group.", + ) + _args_schema.sms_receivers = AAZListArg( + options=["--sms-receivers"], + arg_group="NotificationRequest", + help="The list of SMS receivers that are part of this action group.", + ) + _args_schema.voice_receivers = AAZListArg( + options=["--voice-receivers"], + arg_group="NotificationRequest", + help="The list of voice receivers that are part of this action group.", + ) + _args_schema.webhook_receivers = AAZListArg( + options=["--webhook-receivers"], + arg_group="NotificationRequest", + help="The list of webhook receivers that are part of this action group.", + ) + + azure_app_push_receivers = cls._args_schema.azure_app_push_receivers + azure_app_push_receivers.Element = AAZObjectArg() + + _element = cls._args_schema.azure_app_push_receivers.Element + _element.email_address = AAZStrArg( + options=["email-address"], + help="The email address registered for the Azure mobile app.", + required=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the Azure mobile app push receiver. Names must be unique across all receivers within a tenant action group.", + required=True, + ) + + email_receivers = cls._args_schema.email_receivers + email_receivers.Element = AAZObjectArg() + + _element = cls._args_schema.email_receivers.Element + _element.email_address = AAZStrArg( + options=["email-address"], + help="The email address of this receiver.", + required=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the email receiver. Names must be unique across all receivers within a tenant action group.", + required=True, + ) + _element.use_common_alert_schema = AAZBoolArg( + options=["use-common-alert-schema"], + help="Indicates whether to use common alert schema.", + default=False, + ) + + sms_receivers = cls._args_schema.sms_receivers + sms_receivers.Element = AAZObjectArg() + + _element = cls._args_schema.sms_receivers.Element + _element.country_code = AAZStrArg( + options=["country-code"], + help="The country code of the SMS receiver.", + required=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the SMS receiver. Names must be unique across all receivers within a tenant action group.", + required=True, + ) + _element.phone_number = AAZStrArg( + options=["phone-number"], + help="The phone number of the SMS receiver.", + required=True, + ) + + voice_receivers = cls._args_schema.voice_receivers + voice_receivers.Element = AAZObjectArg() + + _element = cls._args_schema.voice_receivers.Element + _element.country_code = AAZStrArg( + options=["country-code"], + help="The country code of the voice receiver.", + required=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the voice receiver. Names must be unique across all receivers within a tenant action group.", + required=True, + ) + _element.phone_number = AAZStrArg( + options=["phone-number"], + help="The phone number of the voice receiver.", + required=True, + ) + + webhook_receivers = cls._args_schema.webhook_receivers + webhook_receivers.Element = AAZObjectArg() + + _element = cls._args_schema.webhook_receivers.Element + _element.identifier_uri = AAZStrArg( + options=["identifier-uri"], + help="Indicates the identifier uri for aad auth.", + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the webhook receiver. Names must be unique across all receivers within a tenant action group.", + required=True, + ) + _element.object_id = AAZStrArg( + options=["object-id"], + help="Indicates the webhook app object Id for aad auth.", + ) + _element.service_uri = AAZStrArg( + options=["service-uri"], + help="The URI where webhooks should be sent.", + required=True, + ) + _element.tenant_id = AAZStrArg( + options=["tenant-id"], + help="Indicates the tenant id for aad auth.", + ) + _element.use_aad_auth = AAZBoolArg( + options=["use-aad-auth"], + help="Indicates whether or not use AAD authentication.", + default=False, + ) + _element.use_common_alert_schema = AAZBoolArg( + options=["use-common-alert-schema"], + help="Indicates whether to use common alert schema.", + default=False, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.CreateNotificationsAtTenantActionGroupResourceLevel(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 CreateNotificationsAtTenantActionGroupResourceLevel(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( + "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Insights/tenantActionGroups/{tenantActionGroupName}/createNotifications", + **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( + "managementGroupId", self.ctx.args.management_group_id, + required=True, + ), + **self.serialize_url_param( + "tenantActionGroupName", self.ctx.args.tenant_action_group_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2023-05-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "x-ms-client-tenant-id", self.ctx.args.x_ms_client_tenant_id, + required=True, + ), + **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("alertType", AAZStrType, ".alert_type", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("azureAppPushReceivers", AAZListType, ".azure_app_push_receivers") + _builder.set_prop("emailReceivers", AAZListType, ".email_receivers") + _builder.set_prop("smsReceivers", AAZListType, ".sms_receivers") + _builder.set_prop("voiceReceivers", AAZListType, ".voice_receivers") + _builder.set_prop("webhookReceivers", AAZListType, ".webhook_receivers") + + azure_app_push_receivers = _builder.get(".azureAppPushReceivers") + if azure_app_push_receivers is not None: + azure_app_push_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".azureAppPushReceivers[]") + if _elements is not None: + _elements.set_prop("emailAddress", AAZStrType, ".email_address", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + + email_receivers = _builder.get(".emailReceivers") + if email_receivers is not None: + email_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".emailReceivers[]") + if _elements is not None: + _elements.set_prop("emailAddress", AAZStrType, ".email_address", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("useCommonAlertSchema", AAZBoolType, ".use_common_alert_schema") + + sms_receivers = _builder.get(".smsReceivers") + if sms_receivers is not None: + sms_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".smsReceivers[]") + if _elements is not None: + _elements.set_prop("countryCode", AAZStrType, ".country_code", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("phoneNumber", AAZStrType, ".phone_number", typ_kwargs={"flags": {"required": True}}) + + voice_receivers = _builder.get(".voiceReceivers") + if voice_receivers is not None: + voice_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".voiceReceivers[]") + if _elements is not None: + _elements.set_prop("countryCode", AAZStrType, ".country_code", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("phoneNumber", AAZStrType, ".phone_number", typ_kwargs={"flags": {"required": True}}) + + webhook_receivers = _builder.get(".webhookReceivers") + if webhook_receivers is not None: + webhook_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".webhookReceivers[]") + if _elements is not None: + _elements.set_prop("identifierUri", AAZStrType, ".identifier_uri") + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("objectId", AAZStrType, ".object_id") + _elements.set_prop("serviceUri", AAZStrType, ".service_uri", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("tenantId", AAZStrType, ".tenant_id") + _elements.set_prop("useAadAuth", AAZBoolType, ".use_aad_auth") + _elements.set_prop("useCommonAlertSchema", AAZBoolType, ".use_common_alert_schema") + + 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.action_details = AAZListType( + serialized_name="actionDetails", + ) + _schema_on_200.completed_time = AAZStrType( + serialized_name="completedTime", + ) + _schema_on_200.context = AAZObjectType() + _schema_on_200.created_time = AAZStrType( + serialized_name="createdTime", + ) + _schema_on_200.state = AAZStrType( + flags={"required": True}, + ) + + action_details = cls._schema_on_200.action_details + action_details.Element = AAZObjectType() + + _element = cls._schema_on_200.action_details.Element + _element.mechanism_type = AAZStrType( + serialized_name="mechanismType", + ) + _element.message = AAZStrType() + _element.name = AAZStrType() + _element.send_time = AAZStrType( + serialized_name="sendTime", + ) + _element.status = AAZStrType() + _element.sub_state = AAZStrType( + serialized_name="subState", + ) + + context = cls._schema_on_200.context + context.context_type = AAZStrType( + serialized_name="contextType", + ) + context.notification_source = AAZStrType( + serialized_name="notificationSource", + ) + + return cls._schema_on_200 + + +class _CreateNotificationHelper: + """Helper class for CreateNotification""" + + +__all__ = ["CreateNotification"] diff --git a/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_delete.py b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_delete.py new file mode 100644 index 00000000000..00093612d92 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_delete.py @@ -0,0 +1,153 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "monitor tenant-action-group delete", + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a tenant action group. + """ + + _aaz_info = { + "version": "2023-05-01-preview", + "resources": [ + ["mgmt-plane", "/providers/microsoft.management/managementgroups/{}/providers/microsoft.insights/tenantactiongroups/{}", "2023-05-01-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return 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.x_ms_client_tenant_id = AAZStrArg( + options=["--x-ms-client-tenant-id"], + help="The tenant ID of the client making the request.", + required=True, + ) + _args_schema.management_group_id = AAZStrArg( + options=["--management-group-id"], + help="The management group id.", + required=True, + ) + _args_schema.tenant_action_group_name = AAZStrArg( + options=["--tenant-action-group-name"], + help="The name of the action group.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[A-Za-z][A-Za-z0-9]*$", + max_length=260, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.TenantActionGroupsDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class TenantActionGroupsDelete(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) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Insights/tenantActionGroups/{tenantActionGroupName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "managementGroupId", self.ctx.args.management_group_id, + required=True, + ), + **self.serialize_url_param( + "tenantActionGroupName", self.ctx.args.tenant_action_group_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2023-05-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "x-ms-client-tenant-id", self.ctx.args.x_ms_client_tenant_id, + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_list.py b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_list.py new file mode 100644 index 00000000000..64f879e0b73 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_list.py @@ -0,0 +1,298 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "monitor tenant-action-group list", +) +class List(AAZCommand): + """List a list of all tenant action groups in a management group. + """ + + _aaz_info = { + "version": "2023-05-01-preview", + "resources": [ + ["mgmt-plane", "/providers/microsoft.management/managementgroups/{}/providers/microsoft.insights/tenantactiongroups", "2023-05-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.x_ms_client_tenant_id = AAZStrArg( + options=["--x-ms-client-tenant-id"], + help="The tenant ID of the client making the request.", + required=True, + ) + _args_schema.management_group_id = AAZStrArg( + options=["--management-group-id"], + help="The management group id.", + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.TenantActionGroupsListByManagementGroupId(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) + return result + + class TenantActionGroupsListByManagementGroupId(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( + "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Insights/tenantActionGroups", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "managementGroupId", self.ctx.args.management_group_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2023-05-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "x-ms-client-tenant-id", self.ctx.args.x_ms_client_tenant_id, + required=True, + ), + **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() + + 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.tags = AAZDictType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.azure_app_push_receivers = AAZListType( + serialized_name="azureAppPushReceivers", + ) + properties.email_receivers = AAZListType( + serialized_name="emailReceivers", + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.group_short_name = AAZStrType( + serialized_name="groupShortName", + flags={"required": True}, + ) + properties.sms_receivers = AAZListType( + serialized_name="smsReceivers", + ) + properties.voice_receivers = AAZListType( + serialized_name="voiceReceivers", + ) + properties.webhook_receivers = AAZListType( + serialized_name="webhookReceivers", + ) + + azure_app_push_receivers = cls._schema_on_200.value.Element.properties.azure_app_push_receivers + azure_app_push_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.azure_app_push_receivers.Element + _element.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + + email_receivers = cls._schema_on_200.value.Element.properties.email_receivers + email_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.email_receivers.Element + _element.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.status = AAZStrType() + _element.use_common_alert_schema = AAZBoolType( + serialized_name="useCommonAlertSchema", + ) + + sms_receivers = cls._schema_on_200.value.Element.properties.sms_receivers + sms_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.sms_receivers.Element + _element.country_code = AAZStrType( + serialized_name="countryCode", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.phone_number = AAZStrType( + serialized_name="phoneNumber", + flags={"required": True}, + ) + _element.status = AAZStrType() + + voice_receivers = cls._schema_on_200.value.Element.properties.voice_receivers + voice_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.voice_receivers.Element + _element.country_code = AAZStrType( + serialized_name="countryCode", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.phone_number = AAZStrType( + serialized_name="phoneNumber", + flags={"required": True}, + ) + + webhook_receivers = cls._schema_on_200.value.Element.properties.webhook_receivers + webhook_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.webhook_receivers.Element + _element.identifier_uri = AAZStrType( + serialized_name="identifierUri", + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.object_id = AAZStrType( + serialized_name="objectId", + ) + _element.service_uri = AAZStrType( + serialized_name="serviceUri", + flags={"required": True}, + ) + _element.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + _element.use_aad_auth = AAZBoolType( + serialized_name="useAadAuth", + ) + _element.use_common_alert_schema = AAZBoolType( + serialized_name="useCommonAlertSchema", + ) + + 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/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_show.py b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_show.py new file mode 100644 index 00000000000..c4616472b73 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_show.py @@ -0,0 +1,303 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "monitor tenant-action-group show", +) +class Show(AAZCommand): + """Get a tenant action group. + """ + + _aaz_info = { + "version": "2023-05-01-preview", + "resources": [ + ["mgmt-plane", "/providers/microsoft.management/managementgroups/{}/providers/microsoft.insights/tenantactiongroups/{}", "2023-05-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.x_ms_client_tenant_id = AAZStrArg( + options=["--x-ms-client-tenant-id"], + help="The tenant ID of the client making the request.", + required=True, + ) + _args_schema.management_group_id = AAZStrArg( + options=["--management-group-id"], + help="The management group id.", + required=True, + ) + _args_schema.tenant_action_group_name = AAZStrArg( + options=["--tenant-action-group-name"], + help="The name of the action group.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[A-Za-z][A-Za-z0-9]*$", + max_length=260, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.TenantActionGroupsGet(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 TenantActionGroupsGet(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( + "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Insights/tenantActionGroups/{tenantActionGroupName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "managementGroupId", self.ctx.args.management_group_id, + required=True, + ), + **self.serialize_url_param( + "tenantActionGroupName", self.ctx.args.tenant_action_group_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2023-05-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "x-ms-client-tenant-id", self.ctx.args.x_ms_client_tenant_id, + required=True, + ), + **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.tags = AAZDictType() + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.azure_app_push_receivers = AAZListType( + serialized_name="azureAppPushReceivers", + ) + properties.email_receivers = AAZListType( + serialized_name="emailReceivers", + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.group_short_name = AAZStrType( + serialized_name="groupShortName", + flags={"required": True}, + ) + properties.sms_receivers = AAZListType( + serialized_name="smsReceivers", + ) + properties.voice_receivers = AAZListType( + serialized_name="voiceReceivers", + ) + properties.webhook_receivers = AAZListType( + serialized_name="webhookReceivers", + ) + + azure_app_push_receivers = cls._schema_on_200.properties.azure_app_push_receivers + azure_app_push_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.azure_app_push_receivers.Element + _element.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + + email_receivers = cls._schema_on_200.properties.email_receivers + email_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.email_receivers.Element + _element.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.status = AAZStrType() + _element.use_common_alert_schema = AAZBoolType( + serialized_name="useCommonAlertSchema", + ) + + sms_receivers = cls._schema_on_200.properties.sms_receivers + sms_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.sms_receivers.Element + _element.country_code = AAZStrType( + serialized_name="countryCode", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.phone_number = AAZStrType( + serialized_name="phoneNumber", + flags={"required": True}, + ) + _element.status = AAZStrType() + + voice_receivers = cls._schema_on_200.properties.voice_receivers + voice_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.voice_receivers.Element + _element.country_code = AAZStrType( + serialized_name="countryCode", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.phone_number = AAZStrType( + serialized_name="phoneNumber", + flags={"required": True}, + ) + + webhook_receivers = cls._schema_on_200.properties.webhook_receivers + webhook_receivers.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.webhook_receivers.Element + _element.identifier_uri = AAZStrType( + serialized_name="identifierUri", + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.object_id = AAZStrType( + serialized_name="objectId", + ) + _element.service_uri = AAZStrType( + serialized_name="serviceUri", + flags={"required": True}, + ) + _element.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + _element.use_aad_auth = AAZBoolType( + serialized_name="useAadAuth", + ) + _element.use_common_alert_schema = AAZBoolType( + serialized_name="useCommonAlertSchema", + ) + + 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/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_update.py b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_update.py new file mode 100644 index 00000000000..8e158d3f5f7 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/_update.py @@ -0,0 +1,702 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "monitor tenant-action-group update", +) +class Update(AAZCommand): + """Update a new tenant action group or update an existing one. + """ + + _aaz_info = { + "version": "2023-05-01-preview", + "resources": [ + ["mgmt-plane", "/providers/microsoft.management/managementgroups/{}/providers/microsoft.insights/tenantactiongroups/{}", "2023-05-01-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.x_ms_client_tenant_id = AAZStrArg( + options=["--x-ms-client-tenant-id"], + help="The tenant ID of the client making the request.", + required=True, + ) + _args_schema.management_group_id = AAZStrArg( + options=["--management-group-id"], + help="The management group id.", + required=True, + ) + _args_schema.tenant_action_group_name = AAZStrArg( + options=["--tenant-action-group-name"], + help="The name of the action group.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[A-Za-z][A-Za-z0-9]*$", + max_length=260, + min_length=1, + ), + ) + + # define Arg Group "ActionGroup" + + _args_schema = cls._args_schema + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="ActionGroup", + help="Resource tags", + nullable=True, + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg( + nullable=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.azure_app_push_receivers = AAZListArg( + options=["--azure-app-push-receivers"], + arg_group="Properties", + help="The list of AzureAppPush receivers that are part of this tenant action group.", + nullable=True, + ) + _args_schema.email_receivers = AAZListArg( + options=["--email-receivers"], + arg_group="Properties", + help="The list of email receivers that are part of this tenant action group.", + nullable=True, + ) + _args_schema.enabled = AAZBoolArg( + options=["--enabled"], + arg_group="Properties", + help="Indicates whether this tenant action group is enabled. If a tenant action group is not enabled, then none of its receivers will receive communications.", + ) + _args_schema.group_short_name = AAZStrArg( + options=["--group-short-name"], + arg_group="Properties", + help="The short name of the action group. This will be used in SMS messages.", + fmt=AAZStrArgFormat( + max_length=12, + ), + ) + _args_schema.sms_receivers = AAZListArg( + options=["--sms-receivers"], + arg_group="Properties", + help="The list of SMS receivers that are part of this tenant action group.", + nullable=True, + ) + _args_schema.voice_receivers = AAZListArg( + options=["--voice-receivers"], + arg_group="Properties", + help="The list of voice receivers that are part of this tenant action group.", + nullable=True, + ) + _args_schema.webhook_receivers = AAZListArg( + options=["--webhook-receivers"], + arg_group="Properties", + help="The list of webhook receivers that are part of this tenant action group.", + nullable=True, + ) + + azure_app_push_receivers = cls._args_schema.azure_app_push_receivers + azure_app_push_receivers.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.azure_app_push_receivers.Element + _element.email_address = AAZStrArg( + options=["email-address"], + help="The email address registered for the Azure mobile app.", + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the Azure mobile app push receiver. Names must be unique across all receivers within a tenant action group.", + ) + + email_receivers = cls._args_schema.email_receivers + email_receivers.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.email_receivers.Element + _element.email_address = AAZStrArg( + options=["email-address"], + help="The email address of this receiver.", + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the email receiver. Names must be unique across all receivers within a tenant action group.", + ) + _element.use_common_alert_schema = AAZBoolArg( + options=["use-common-alert-schema"], + help="Indicates whether to use common alert schema.", + nullable=True, + ) + + sms_receivers = cls._args_schema.sms_receivers + sms_receivers.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.sms_receivers.Element + _element.country_code = AAZStrArg( + options=["country-code"], + help="The country code of the SMS receiver.", + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the SMS receiver. Names must be unique across all receivers within a tenant action group.", + ) + _element.phone_number = AAZStrArg( + options=["phone-number"], + help="The phone number of the SMS receiver.", + ) + + voice_receivers = cls._args_schema.voice_receivers + voice_receivers.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.voice_receivers.Element + _element.country_code = AAZStrArg( + options=["country-code"], + help="The country code of the voice receiver.", + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the voice receiver. Names must be unique across all receivers within a tenant action group.", + ) + _element.phone_number = AAZStrArg( + options=["phone-number"], + help="The phone number of the voice receiver.", + ) + + webhook_receivers = cls._args_schema.webhook_receivers + webhook_receivers.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.webhook_receivers.Element + _element.identifier_uri = AAZStrArg( + options=["identifier-uri"], + help="Indicates the identifier uri for aad auth.", + nullable=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="The name of the webhook receiver. Names must be unique across all receivers within a tenant action group.", + ) + _element.object_id = AAZStrArg( + options=["object-id"], + help="Indicates the webhook app object Id for aad auth.", + nullable=True, + ) + _element.service_uri = AAZStrArg( + options=["service-uri"], + help="The URI where webhooks should be sent.", + ) + _element.tenant_id = AAZStrArg( + options=["tenant-id"], + help="Indicates the tenant id for aad auth.", + nullable=True, + ) + _element.use_aad_auth = AAZBoolArg( + options=["use-aad-auth"], + help="Indicates whether or not use AAD authentication.", + nullable=True, + ) + _element.use_common_alert_schema = AAZBoolArg( + options=["use-common-alert-schema"], + help="Indicates whether to use common alert schema.", + nullable=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.TenantActionGroupsGet(ctx=self.ctx)() + self.pre_instance_update(self.ctx.vars.instance) + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.post_instance_update(self.ctx.vars.instance) + self.TenantActionGroupsCreateOrUpdate(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 TenantActionGroupsGet(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( + "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Insights/tenantActionGroups/{tenantActionGroupName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "managementGroupId", self.ctx.args.management_group_id, + required=True, + ), + **self.serialize_url_param( + "tenantActionGroupName", self.ctx.args.tenant_action_group_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2023-05-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "x-ms-client-tenant-id", self.ctx.args.x_ms_client_tenant_id, + required=True, + ), + **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_tenant_action_group_resource_read(cls._schema_on_200) + + return cls._schema_on_200 + + class TenantActionGroupsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Insights/tenantActionGroups/{tenantActionGroupName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "managementGroupId", self.ctx.args.management_group_id, + required=True, + ), + **self.serialize_url_param( + "tenantActionGroupName", self.ctx.args.tenant_action_group_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2023-05-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "x-ms-client-tenant-id", self.ctx.args.x_ms_client_tenant_id, + required=True, + ), + **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_tenant_action_group_resource_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("azureAppPushReceivers", AAZListType, ".azure_app_push_receivers") + properties.set_prop("emailReceivers", AAZListType, ".email_receivers") + properties.set_prop("enabled", AAZBoolType, ".enabled", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("groupShortName", AAZStrType, ".group_short_name", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("smsReceivers", AAZListType, ".sms_receivers") + properties.set_prop("voiceReceivers", AAZListType, ".voice_receivers") + properties.set_prop("webhookReceivers", AAZListType, ".webhook_receivers") + + azure_app_push_receivers = _builder.get(".properties.azureAppPushReceivers") + if azure_app_push_receivers is not None: + azure_app_push_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.azureAppPushReceivers[]") + if _elements is not None: + _elements.set_prop("emailAddress", AAZStrType, ".email_address", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + + email_receivers = _builder.get(".properties.emailReceivers") + if email_receivers is not None: + email_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.emailReceivers[]") + if _elements is not None: + _elements.set_prop("emailAddress", AAZStrType, ".email_address", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("useCommonAlertSchema", AAZBoolType, ".use_common_alert_schema") + + sms_receivers = _builder.get(".properties.smsReceivers") + if sms_receivers is not None: + sms_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.smsReceivers[]") + if _elements is not None: + _elements.set_prop("countryCode", AAZStrType, ".country_code", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("phoneNumber", AAZStrType, ".phone_number", typ_kwargs={"flags": {"required": True}}) + + voice_receivers = _builder.get(".properties.voiceReceivers") + if voice_receivers is not None: + voice_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.voiceReceivers[]") + if _elements is not None: + _elements.set_prop("countryCode", AAZStrType, ".country_code", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("phoneNumber", AAZStrType, ".phone_number", typ_kwargs={"flags": {"required": True}}) + + webhook_receivers = _builder.get(".properties.webhookReceivers") + if webhook_receivers is not None: + webhook_receivers.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.webhookReceivers[]") + if _elements is not None: + _elements.set_prop("identifierUri", AAZStrType, ".identifier_uri") + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("objectId", AAZStrType, ".object_id") + _elements.set_prop("serviceUri", AAZStrType, ".service_uri", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("tenantId", AAZStrType, ".tenant_id") + _elements.set_prop("useAadAuth", AAZBoolType, ".use_aad_auth") + _elements.set_prop("useCommonAlertSchema", AAZBoolType, ".use_common_alert_schema") + + 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_tenant_action_group_resource_read = None + + @classmethod + def _build_schema_tenant_action_group_resource_read(cls, _schema): + if cls._schema_tenant_action_group_resource_read is not None: + _schema.id = cls._schema_tenant_action_group_resource_read.id + _schema.location = cls._schema_tenant_action_group_resource_read.location + _schema.name = cls._schema_tenant_action_group_resource_read.name + _schema.properties = cls._schema_tenant_action_group_resource_read.properties + _schema.tags = cls._schema_tenant_action_group_resource_read.tags + _schema.type = cls._schema_tenant_action_group_resource_read.type + return + + cls._schema_tenant_action_group_resource_read = _schema_tenant_action_group_resource_read = AAZObjectType() + + tenant_action_group_resource_read = _schema_tenant_action_group_resource_read + tenant_action_group_resource_read.id = AAZStrType( + flags={"read_only": True}, + ) + tenant_action_group_resource_read.location = AAZStrType( + flags={"required": True}, + ) + tenant_action_group_resource_read.name = AAZStrType( + flags={"read_only": True}, + ) + tenant_action_group_resource_read.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + tenant_action_group_resource_read.tags = AAZDictType() + tenant_action_group_resource_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_tenant_action_group_resource_read.properties + properties.azure_app_push_receivers = AAZListType( + serialized_name="azureAppPushReceivers", + ) + properties.email_receivers = AAZListType( + serialized_name="emailReceivers", + ) + properties.enabled = AAZBoolType( + flags={"required": True}, + ) + properties.group_short_name = AAZStrType( + serialized_name="groupShortName", + flags={"required": True}, + ) + properties.sms_receivers = AAZListType( + serialized_name="smsReceivers", + ) + properties.voice_receivers = AAZListType( + serialized_name="voiceReceivers", + ) + properties.webhook_receivers = AAZListType( + serialized_name="webhookReceivers", + ) + + azure_app_push_receivers = _schema_tenant_action_group_resource_read.properties.azure_app_push_receivers + azure_app_push_receivers.Element = AAZObjectType() + + _element = _schema_tenant_action_group_resource_read.properties.azure_app_push_receivers.Element + _element.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + + email_receivers = _schema_tenant_action_group_resource_read.properties.email_receivers + email_receivers.Element = AAZObjectType() + + _element = _schema_tenant_action_group_resource_read.properties.email_receivers.Element + _element.email_address = AAZStrType( + serialized_name="emailAddress", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.status = AAZStrType() + _element.use_common_alert_schema = AAZBoolType( + serialized_name="useCommonAlertSchema", + ) + + sms_receivers = _schema_tenant_action_group_resource_read.properties.sms_receivers + sms_receivers.Element = AAZObjectType() + + _element = _schema_tenant_action_group_resource_read.properties.sms_receivers.Element + _element.country_code = AAZStrType( + serialized_name="countryCode", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.phone_number = AAZStrType( + serialized_name="phoneNumber", + flags={"required": True}, + ) + _element.status = AAZStrType() + + voice_receivers = _schema_tenant_action_group_resource_read.properties.voice_receivers + voice_receivers.Element = AAZObjectType() + + _element = _schema_tenant_action_group_resource_read.properties.voice_receivers.Element + _element.country_code = AAZStrType( + serialized_name="countryCode", + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.phone_number = AAZStrType( + serialized_name="phoneNumber", + flags={"required": True}, + ) + + webhook_receivers = _schema_tenant_action_group_resource_read.properties.webhook_receivers + webhook_receivers.Element = AAZObjectType() + + _element = _schema_tenant_action_group_resource_read.properties.webhook_receivers.Element + _element.identifier_uri = AAZStrType( + serialized_name="identifierUri", + ) + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.object_id = AAZStrType( + serialized_name="objectId", + ) + _element.service_uri = AAZStrType( + serialized_name="serviceUri", + flags={"required": True}, + ) + _element.tenant_id = AAZStrType( + serialized_name="tenantId", + ) + _element.use_aad_auth = AAZBoolType( + serialized_name="useAadAuth", + ) + _element.use_common_alert_schema = AAZBoolType( + serialized_name="useCommonAlertSchema", + ) + + tags = _schema_tenant_action_group_resource_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_tenant_action_group_resource_read.id + _schema.location = cls._schema_tenant_action_group_resource_read.location + _schema.name = cls._schema_tenant_action_group_resource_read.name + _schema.properties = cls._schema_tenant_action_group_resource_read.properties + _schema.tags = cls._schema_tenant_action_group_resource_read.tags + _schema.type = cls._schema_tenant_action_group_resource_read.type + + +__all__ = ["Update"] diff --git a/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/notification_statu/__cmd_group.py b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/notification_statu/__cmd_group.py new file mode 100644 index 00000000000..70a6db5f715 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/notification_statu/__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( + "monitor tenant-action-group notification-statu", +) +class __CMDGroup(AAZCommandGroup): + """monitor tenant-action-group notification-statu + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/notification_statu/__init__.py b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/notification_statu/__init__.py new file mode 100644 index 00000000000..28d5f355813 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/notification_statu/__init__.py @@ -0,0 +1,12 @@ +# -------------------------------------------------------------------------------------------- +# 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 ._show import * diff --git a/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/notification_statu/_show.py b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/notification_statu/_show.py new file mode 100644 index 00000000000..dba281d27e6 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/aaz/latest/monitor/tenant_action_group/notification_statu/_show.py @@ -0,0 +1,219 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "monitor tenant-action-group notification-statu show", +) +class Show(AAZCommand): + """Get the test notifications by the notification id + """ + + _aaz_info = { + "version": "2023-05-01-preview", + "resources": [ + ["mgmt-plane", "/providers/microsoft.management/managementgroups/{}/providers/microsoft.insights/tenantactiongroups/{}/notificationstatus/{}", "2023-05-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.x_ms_client_tenant_id = AAZStrArg( + options=["--x-ms-client-tenant-id"], + help="The tenant ID of the client making the request.", + required=True, + ) + _args_schema.management_group_id = AAZStrArg( + options=["--management-group-id"], + help="The management group id.", + required=True, + ) + _args_schema.notification_id = AAZStrArg( + options=["--notification-id"], + help="The notification id", + required=True, + ) + _args_schema.tenant_action_group_name = AAZStrArg( + options=["--tenant-action-group-name"], + help="The name of the action group.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[A-Za-z][A-Za-z0-9]*$", + max_length=260, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.GetTestNotificationsAtTenantActionGroupResourceLevel(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 GetTestNotificationsAtTenantActionGroupResourceLevel(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( + "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Insights/tenantActionGroups/{tenantActionGroupName}/notificationStatus/{notificationId}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "managementGroupId", self.ctx.args.management_group_id, + required=True, + ), + **self.serialize_url_param( + "notificationId", self.ctx.args.notification_id, + required=True, + ), + **self.serialize_url_param( + "tenantActionGroupName", self.ctx.args.tenant_action_group_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2023-05-01-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "x-ms-client-tenant-id", self.ctx.args.x_ms_client_tenant_id, + required=True, + ), + **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.action_details = AAZListType( + serialized_name="actionDetails", + ) + _schema_on_200.completed_time = AAZStrType( + serialized_name="completedTime", + ) + _schema_on_200.context = AAZObjectType() + _schema_on_200.created_time = AAZStrType( + serialized_name="createdTime", + ) + _schema_on_200.state = AAZStrType( + flags={"required": True}, + ) + + action_details = cls._schema_on_200.action_details + action_details.Element = AAZObjectType() + + _element = cls._schema_on_200.action_details.Element + _element.mechanism_type = AAZStrType( + serialized_name="mechanismType", + ) + _element.message = AAZStrType() + _element.name = AAZStrType() + _element.send_time = AAZStrType( + serialized_name="sendTime", + ) + _element.status = AAZStrType() + _element.sub_state = AAZStrType( + serialized_name="subState", + ) + + context = cls._schema_on_200.context + context.context_type = AAZStrType( + serialized_name="contextType", + ) + context.notification_source = AAZStrType( + serialized_name="notificationSource", + ) + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/azure-cli/azure/cli/command_modules/monitor/tests/latest/test_monitor_tenant_action_group.py b/src/azure-cli/azure/cli/command_modules/monitor/tests/latest/test_monitor_tenant_action_group.py new file mode 100644 index 00000000000..6f7007ced45 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/monitor/tests/latest/test_monitor_tenant_action_group.py @@ -0,0 +1,53 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from azure.cli.testsdk import ScenarioTest, JMESPathCheck + + +class TestActionGroupScenarios(ScenarioTest): + + def test_monitor_tenant_action_group_basic_scenario(self): + # the prefix is intentionally keep long so as to test the default short name conversion + action_group_name = self.create_random_name('cliactiongrouptest', 32) + + self.kwargs.update({ + 'mg': self.create_random_name('azure-cli-management', 30), + 'ag': action_group_name + }) + + self.cmd('account management-group create --name {mg}', checks=[]) + + self.cmd('monitor tenant-action-group create --tenant-action-group-name {ag} --management-group-id {mg} --x-ms-client-tenant-id {mg} --location Global -ojson', checks=[ + JMESPathCheck('length(emailReceivers)', 0), + JMESPathCheck('length(smsReceivers)', 0), + JMESPathCheck('length(webhookReceivers)', 0), + JMESPathCheck('length(eventHubReceivers)', 0), + JMESPathCheck('location', 'Global'), + JMESPathCheck('name', action_group_name), + JMESPathCheck('groupShortName', action_group_name[:12]), + JMESPathCheck('enabled', True), + JMESPathCheck('tags', None) + ]) + + self.cmd('monitor tenant-action-group list --management-group-id {mb} --x-ms-client-tenant-id {mg} -ojson', + checks=[JMESPathCheck('type(@)', 'array'), + JMESPathCheck('length(@)', 1), + JMESPathCheck('[0].name', action_group_name)]) + + # test monitor action-group show + self.cmd('monitor tenant-action-group show --tenant-action-group-name {ag} --management-group-id {mg} --x-ms-client-tenant-id {mg} -ojson', + checks=[JMESPathCheck('location', 'Global')]) + + self.cmd('monitor tenant-action-group update --tenant-action-group-name {ag} --management-group-id {mg} --x-ms-client-tenant-id {mg} -ojson --group-short-name new_name --tag owner=alice', + checks=[ + JMESPathCheck('tags.owner', 'alice'), + JMESPathCheck('groupShortName', 'new_name')]) + + + self.cmd('monitor tenant-action-group delete --tenant-action-group-name {ag} --management-group-id {mg} --x-ms-client-tenant-id {mg} -ojson') + + self.cmd('monitor tenant-action-group list --management-group-id {mb} --x-ms-client-tenant-id {mg} -ojson', + checks=[JMESPathCheck('type(@)', 'array'), + JMESPathCheck('length(@)', 0)])