diff --git a/src/alertsmanagement/HISTORY.rst b/src/alertsmanagement/HISTORY.rst index 031cf21e6f7..7c4929fad6f 100644 --- a/src/alertsmanagement/HISTORY.rst +++ b/src/alertsmanagement/HISTORY.rst @@ -3,6 +3,10 @@ Release History =============== +0.2.3 +++++++ +* az alerts-management prometheus-rule-group: support prometheus rule group + 0.2.2 ++++++ Added support for contains and doesNotContain operators for filter-resource-type in create method diff --git a/src/alertsmanagement/azext_alertsmanagement/__init__.py b/src/alertsmanagement/azext_alertsmanagement/__init__.py index 2cc9f6757f7..594c1dc1f5c 100644 --- a/src/alertsmanagement/azext_alertsmanagement/__init__.py +++ b/src/alertsmanagement/azext_alertsmanagement/__init__.py @@ -25,6 +25,17 @@ def __init__(self, cli_ctx=None): def load_command_table(self, args): from azext_alertsmanagement.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 diff --git a/src/alertsmanagement/azext_alertsmanagement/aaz/__init__.py b/src/alertsmanagement/azext_alertsmanagement/aaz/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/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/alertsmanagement/azext_alertsmanagement/aaz/latest/__init__.py b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/aaz/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/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/__cmd_group.py b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/__cmd_group.py new file mode 100644 index 00000000000..f6a69f21c92 --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/__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( + "alerts-management", +) +class __CMDGroup(AAZCommandGroup): + """Manage Azure Alerts Management Service Resource. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/__init__.py b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/__init__.py new file mode 100644 index 00000000000..5a9d61963d6 --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/__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/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/__cmd_group.py b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/__cmd_group.py new file mode 100644 index 00000000000..7c8528ff0ed --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_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( + "alerts-management prometheus-rule-group", +) +class __CMDGroup(AAZCommandGroup): + """Manage Prometheus Rule Group. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/__init__.py b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/__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 ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_create.py b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_create.py new file mode 100644 index 00000000000..f6e397451d5 --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_create.py @@ -0,0 +1,486 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "alerts-management prometheus-rule-group create", +) +class Create(AAZCommand): + """Create a Prometheus rule group definition. + + :example: Create a Prometheus rule group definition. + az alerts-management prometheus-rule-group create -n TestPrometheusRuleGroup -g TestResourceGroup -l westus --enabled --description "test" --interval PT10M --scopes "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/testrg/providers/microsoft.monitor/accounts/testaccount" --rules [{"record":"test","expression":"test","labels":{"team":"prod"}},{"alert":"Billing_Processing_Very_Slow","expression":"test","enabled":"true","severity":2,"for":"PT5M","labels":{"team":"prod"},"annotations":{"annotationName1":"annotationValue1"},"resolveConfiguration":{"autoResolved":"true","timeToResolve":"PT10M"},"actions":[{"actionGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.insights/actionGroups/test-action-group-name1","actionProperties":{"key11":"value11","key12":"value12"}},{"actionGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.insights/actionGroups/test-action-group-name2","actionProperties":{"key21":"value21","key22":"value22"}}]}] + """ + + _aaz_info = { + "version": "2023-03-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.alertsmanagement/prometheusrulegroups/{}", "2023-03-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="The name of the rule group.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[^:@/#{}%&+*<>?]+$", + ), + ) + + # define Arg Group "Parameters" + + _args_schema = cls._args_schema + _args_schema.location = AAZResourceLocationArg( + arg_group="Parameters", + 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="Parameters", + help="Resource tags.", + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg() + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + arg_group="Properties", + help="Apply rule to data from a specific cluster.", + ) + _args_schema.description = AAZStrArg( + options=["--description"], + arg_group="Properties", + help="Rule group description.", + ) + _args_schema.enabled = AAZBoolArg( + options=["--enabled"], + arg_group="Properties", + help="Enable/disable rule group.", + ) + _args_schema.interval = AAZDurationArg( + options=["--interval"], + arg_group="Properties", + help="The interval in which to run the Prometheus rule group represented in ISO 8601 duration format. Should be between 1 and 15 minutes", + ) + _args_schema.rules = AAZListArg( + options=["--rules"], + arg_group="Properties", + help="Defines the rules in the Prometheus rule group.", + required=True, + ) + _args_schema.scopes = AAZListArg( + options=["--scopes"], + arg_group="Properties", + help="Target Azure Monitor workspaces resource ids. This api-version is currently limited to creating with one scope. This may change in future.", + required=True, + ) + + rules = cls._args_schema.rules + rules.Element = AAZObjectArg() + + _element = cls._args_schema.rules.Element + _element.actions = AAZListArg( + options=["actions"], + help="Actions that are performed when the alert rule becomes active, and when an alert condition is resolved.", + ) + _element.alert = AAZStrArg( + options=["alert"], + help="Alert rule name.", + ) + _element.annotations = AAZDictArg( + options=["annotations"], + help="The annotations clause specifies a set of informational labels that can be used to store longer additional information such as alert descriptions or runbook links. The annotation values can be templated.", + ) + _element.enabled = AAZBoolArg( + options=["enabled"], + help="Enable/disable rule.", + ) + _element.expression = AAZStrArg( + options=["expression"], + help="The PromQL expression to evaluate. https://prometheus.io/docs/prometheus/latest/querying/basics/. Evaluated periodically as given by 'interval', and the result recorded as a new set of time series with the metric name as given by 'record'.", + required=True, + ) + _element['for'] = AAZDurationArg( + options=["for"], + help="The amount of time alert must be active before firing.", + ) + _element.labels = AAZDictArg( + options=["labels"], + help="Labels to add or overwrite before storing the result.", + ) + _element.record = AAZStrArg( + options=["record"], + help="Recorded metrics name.", + ) + _element.resolve_configuration = AAZObjectArg( + options=["resolve-configuration"], + help="Defines the configuration for resolving fired alerts. Only relevant for alerts.", + ) + _element.severity = AAZIntArg( + options=["severity"], + help="The severity of the alerts fired by the rule. Must be between 0 and 4.", + ) + + actions = cls._args_schema.rules.Element.actions + actions.Element = AAZObjectArg() + + _element = cls._args_schema.rules.Element.actions.Element + _element.action_group_id = AAZStrArg( + options=["action-group-id"], + help="The resource id of the action group to use.", + ) + _element.action_properties = AAZDictArg( + options=["action-properties"], + help="The properties of an action group object.", + ) + + action_properties = cls._args_schema.rules.Element.actions.Element.action_properties + action_properties.Element = AAZStrArg() + + annotations = cls._args_schema.rules.Element.annotations + annotations.Element = AAZStrArg() + + labels = cls._args_schema.rules.Element.labels + labels.Element = AAZStrArg() + + resolve_configuration = cls._args_schema.rules.Element.resolve_configuration + resolve_configuration.auto_resolved = AAZBoolArg( + options=["auto-resolved"], + help="Enable alert auto-resolution.", + ) + resolve_configuration.time_to_resolve = AAZDurationArg( + options=["time-to-resolve"], + help="Alert auto-resolution timeout.", + ) + + scopes = cls._args_schema.scopes + scopes.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.PrometheusRuleGroupsCreateOrUpdate(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 PrometheusRuleGroupsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{ruleGroupName}", + **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( + "ruleGroupName", self.ctx.args.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", "2023-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("location", AAZStrType, ".location", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("properties", AAZObjectType, ".", typ_kwargs={"flags": {"required": True, "client_flatten": True}}) + _builder.set_prop("tags", AAZDictType, ".tags") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("clusterName", AAZStrType, ".cluster_name") + properties.set_prop("description", AAZStrType, ".description") + properties.set_prop("enabled", AAZBoolType, ".enabled") + properties.set_prop("interval", AAZStrType, ".interval") + properties.set_prop("rules", AAZListType, ".rules", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("scopes", AAZListType, ".scopes", typ_kwargs={"flags": {"required": True}}) + + rules = _builder.get(".properties.rules") + if rules is not None: + rules.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.rules[]") + if _elements is not None: + _elements.set_prop("actions", AAZListType, ".actions") + _elements.set_prop("alert", AAZStrType, ".alert") + _elements.set_prop("annotations", AAZDictType, ".annotations") + _elements.set_prop("enabled", AAZBoolType, ".enabled") + _elements.set_prop("expression", AAZStrType, ".expression", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("for", AAZStrType, ".for") + _elements.set_prop("labels", AAZDictType, ".labels") + _elements.set_prop("record", AAZStrType, ".record") + _elements.set_prop("resolveConfiguration", AAZObjectType, ".resolve_configuration") + _elements.set_prop("severity", AAZIntType, ".severity") + + actions = _builder.get(".properties.rules[].actions") + if actions is not None: + actions.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.rules[].actions[]") + if _elements is not None: + _elements.set_prop("actionGroupId", AAZStrType, ".action_group_id") + _elements.set_prop("actionProperties", AAZDictType, ".action_properties") + + action_properties = _builder.get(".properties.rules[].actions[].actionProperties") + if action_properties is not None: + action_properties.set_elements(AAZStrType, ".") + + annotations = _builder.get(".properties.rules[].annotations") + if annotations is not None: + annotations.set_elements(AAZStrType, ".") + + labels = _builder.get(".properties.rules[].labels") + if labels is not None: + labels.set_elements(AAZStrType, ".") + + resolve_configuration = _builder.get(".properties.rules[].resolveConfiguration") + if resolve_configuration is not None: + resolve_configuration.set_prop("autoResolved", AAZBoolType, ".auto_resolved") + resolve_configuration.set_prop("timeToResolve", AAZStrType, ".time_to_resolve") + + scopes = _builder.get(".properties.scopes") + if scopes is not None: + scopes.set_elements(AAZStrType, ".") + + 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={"required": True, "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.cluster_name = AAZStrType( + serialized_name="clusterName", + ) + properties.description = AAZStrType() + properties.enabled = AAZBoolType() + properties.interval = AAZStrType() + properties.rules = AAZListType( + flags={"required": True}, + ) + properties.scopes = AAZListType( + flags={"required": True}, + ) + + rules = cls._schema_on_200_201.properties.rules + rules.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.rules.Element + _element.actions = AAZListType() + _element.alert = AAZStrType() + _element.annotations = AAZDictType() + _element.enabled = AAZBoolType() + _element.expression = AAZStrType( + flags={"required": True}, + ) + _element["for"] = AAZStrType() + _element.labels = AAZDictType() + _element.record = AAZStrType() + _element.resolve_configuration = AAZObjectType( + serialized_name="resolveConfiguration", + ) + _element.severity = AAZIntType() + + actions = cls._schema_on_200_201.properties.rules.Element.actions + actions.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.rules.Element.actions.Element + _element.action_group_id = AAZStrType( + serialized_name="actionGroupId", + ) + _element.action_properties = AAZDictType( + serialized_name="actionProperties", + ) + + action_properties = cls._schema_on_200_201.properties.rules.Element.actions.Element.action_properties + action_properties.Element = AAZStrType() + + annotations = cls._schema_on_200_201.properties.rules.Element.annotations + annotations.Element = AAZStrType() + + labels = cls._schema_on_200_201.properties.rules.Element.labels + labels.Element = AAZStrType() + + resolve_configuration = cls._schema_on_200_201.properties.rules.Element.resolve_configuration + resolve_configuration.auto_resolved = AAZBoolType( + serialized_name="autoResolved", + ) + resolve_configuration.time_to_resolve = AAZStrType( + serialized_name="timeToResolve", + ) + + scopes = cls._schema_on_200_201.properties.scopes + scopes.Element = AAZStrType() + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + tags = cls._schema_on_200_201.tags + tags.Element = AAZStrType() + + return cls._schema_on_200_201 + + +class _CreateHelper: + """Helper class for Create""" + + +__all__ = ["Create"] diff --git a/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_delete.py b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_delete.py new file mode 100644 index 00000000000..ba7996574e4 --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_delete.py @@ -0,0 +1,141 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "alerts-management prometheus-rule-group delete", +) +class Delete(AAZCommand): + """Delete a Prometheus rule group definition. + + :example: Delete a Prometheus rule group definition. + az alerts-management prometheus-rule-group delete -n TestPrometheusRuleGroup -g MyResourceGroup + """ + + _aaz_info = { + "version": "2023-03-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.alertsmanagement/prometheusrulegroups/{}", "2023-03-01"], + ] + } + + 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.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="The name of the rule group.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[^:@/#{}%&+*<>?]+$", + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.PrometheusRuleGroupsDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class PrometheusRuleGroupsDelete(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( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{ruleGroupName}", + **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( + "ruleGroupName", self.ctx.args.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", "2023-03-01", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_list.py b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_list.py new file mode 100644 index 00000000000..78e9c80cdd2 --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_list.py @@ -0,0 +1,460 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "alerts-management prometheus-rule-group list", +) +class List(AAZCommand): + """List Prometheus all rule group definitions in a subscription. + + :example: List a Prometheus rule group definition. + az alerts-management prometheus-rule-group list -g MyResourceGroup + """ + + _aaz_info = { + "version": "2023-03-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/providers/microsoft.alertsmanagement/prometheusrulegroups", "2023-03-01"], + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.alertsmanagement/prometheusrulegroups", "2023-03-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg() + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + condition_0 = has_value(self.ctx.args.resource_group) and has_value(self.ctx.subscription_id) + condition_1 = has_value(self.ctx.subscription_id) and has_value(self.ctx.args.resource_group) is not True + if condition_0: + self.PrometheusRuleGroupsListByResourceGroup(ctx=self.ctx)() + if condition_1: + self.PrometheusRuleGroupsListBySubscription(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 PrometheusRuleGroupsListByResourceGroup(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AlertsManagement/prometheusRuleGroups", + **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", "2023-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.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={"required": True, "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.cluster_name = AAZStrType( + serialized_name="clusterName", + ) + properties.description = AAZStrType() + properties.enabled = AAZBoolType() + properties.interval = AAZStrType() + properties.rules = AAZListType( + flags={"required": True}, + ) + properties.scopes = AAZListType( + flags={"required": True}, + ) + + rules = cls._schema_on_200.value.Element.properties.rules + rules.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.rules.Element + _element.actions = AAZListType() + _element.alert = AAZStrType() + _element.annotations = AAZDictType() + _element.enabled = AAZBoolType() + _element.expression = AAZStrType( + flags={"required": True}, + ) + _element["for"] = AAZStrType() + _element.labels = AAZDictType() + _element.record = AAZStrType() + _element.resolve_configuration = AAZObjectType( + serialized_name="resolveConfiguration", + ) + _element.severity = AAZIntType() + + actions = cls._schema_on_200.value.Element.properties.rules.Element.actions + actions.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.rules.Element.actions.Element + _element.action_group_id = AAZStrType( + serialized_name="actionGroupId", + ) + _element.action_properties = AAZDictType( + serialized_name="actionProperties", + ) + + action_properties = cls._schema_on_200.value.Element.properties.rules.Element.actions.Element.action_properties + action_properties.Element = AAZStrType() + + annotations = cls._schema_on_200.value.Element.properties.rules.Element.annotations + annotations.Element = AAZStrType() + + labels = cls._schema_on_200.value.Element.properties.rules.Element.labels + labels.Element = AAZStrType() + + resolve_configuration = cls._schema_on_200.value.Element.properties.rules.Element.resolve_configuration + resolve_configuration.auto_resolved = AAZBoolType( + serialized_name="autoResolved", + ) + resolve_configuration.time_to_resolve = AAZStrType( + serialized_name="timeToResolve", + ) + + scopes = cls._schema_on_200.value.Element.properties.scopes + scopes.Element = AAZStrType() + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + tags = cls._schema_on_200.value.Element.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + class PrometheusRuleGroupsListBySubscription(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/providers/Microsoft.AlertsManagement/prometheusRuleGroups", + **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", "2023-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.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={"required": True, "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.cluster_name = AAZStrType( + serialized_name="clusterName", + ) + properties.description = AAZStrType() + properties.enabled = AAZBoolType() + properties.interval = AAZStrType() + properties.rules = AAZListType( + flags={"required": True}, + ) + properties.scopes = AAZListType( + flags={"required": True}, + ) + + rules = cls._schema_on_200.value.Element.properties.rules + rules.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.rules.Element + _element.actions = AAZListType() + _element.alert = AAZStrType() + _element.annotations = AAZDictType() + _element.enabled = AAZBoolType() + _element.expression = AAZStrType( + flags={"required": True}, + ) + _element["for"] = AAZStrType() + _element.labels = AAZDictType() + _element.record = AAZStrType() + _element.resolve_configuration = AAZObjectType( + serialized_name="resolveConfiguration", + ) + _element.severity = AAZIntType() + + actions = cls._schema_on_200.value.Element.properties.rules.Element.actions + actions.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.rules.Element.actions.Element + _element.action_group_id = AAZStrType( + serialized_name="actionGroupId", + ) + _element.action_properties = AAZDictType( + serialized_name="actionProperties", + ) + + action_properties = cls._schema_on_200.value.Element.properties.rules.Element.actions.Element.action_properties + action_properties.Element = AAZStrType() + + annotations = cls._schema_on_200.value.Element.properties.rules.Element.annotations + annotations.Element = AAZStrType() + + labels = cls._schema_on_200.value.Element.properties.rules.Element.labels + labels.Element = AAZStrType() + + resolve_configuration = cls._schema_on_200.value.Element.properties.rules.Element.resolve_configuration + resolve_configuration.auto_resolved = AAZBoolType( + serialized_name="autoResolved", + ) + resolve_configuration.time_to_resolve = AAZStrType( + serialized_name="timeToResolve", + ) + + scopes = cls._schema_on_200.value.Element.properties.scopes + scopes.Element = AAZStrType() + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + tags = cls._schema_on_200.value.Element.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_show.py b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_show.py new file mode 100644 index 00000000000..64fa7b79f5c --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_show.py @@ -0,0 +1,274 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "alerts-management prometheus-rule-group show", +) +class Show(AAZCommand): + """Get a Prometheus rule group definition. + + :example: Show a Prometheus rule group definition. + az alerts-management prometheus-rule-group show -n TestPrometheusRuleGroup -g MyResourceGroup + """ + + _aaz_info = { + "version": "2023-03-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.alertsmanagement/prometheusrulegroups/{}", "2023-03-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="The name of the rule group.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[^:@/#{}%&+*<>?]+$", + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.PrometheusRuleGroupsGet(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 PrometheusRuleGroupsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{ruleGroupName}", + **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( + "ruleGroupName", self.ctx.args.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", "2023-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.location = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"required": True, "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.cluster_name = AAZStrType( + serialized_name="clusterName", + ) + properties.description = AAZStrType() + properties.enabled = AAZBoolType() + properties.interval = AAZStrType() + properties.rules = AAZListType( + flags={"required": True}, + ) + properties.scopes = AAZListType( + flags={"required": True}, + ) + + rules = cls._schema_on_200.properties.rules + rules.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.rules.Element + _element.actions = AAZListType() + _element.alert = AAZStrType() + _element.annotations = AAZDictType() + _element.enabled = AAZBoolType() + _element.expression = AAZStrType( + flags={"required": True}, + ) + _element["for"] = AAZStrType() + _element.labels = AAZDictType() + _element.record = AAZStrType() + _element.resolve_configuration = AAZObjectType( + serialized_name="resolveConfiguration", + ) + _element.severity = AAZIntType() + + actions = cls._schema_on_200.properties.rules.Element.actions + actions.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.rules.Element.actions.Element + _element.action_group_id = AAZStrType( + serialized_name="actionGroupId", + ) + _element.action_properties = AAZDictType( + serialized_name="actionProperties", + ) + + action_properties = cls._schema_on_200.properties.rules.Element.actions.Element.action_properties + action_properties.Element = AAZStrType() + + annotations = cls._schema_on_200.properties.rules.Element.annotations + annotations.Element = AAZStrType() + + labels = cls._schema_on_200.properties.rules.Element.labels + labels.Element = AAZStrType() + + resolve_configuration = cls._schema_on_200.properties.rules.Element.resolve_configuration + resolve_configuration.auto_resolved = AAZBoolType( + serialized_name="autoResolved", + ) + resolve_configuration.time_to_resolve = AAZStrType( + serialized_name="timeToResolve", + ) + + scopes = cls._schema_on_200.properties.scopes + scopes.Element = AAZStrType() + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + tags = cls._schema_on_200.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_update.py b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_update.py new file mode 100644 index 00000000000..42dd7285249 --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/aaz/latest/alerts_management/prometheus_rule_group/_update.py @@ -0,0 +1,651 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "alerts-management prometheus-rule-group update", +) +class Update(AAZCommand): + """Update a Prometheus rule group definition. + + :example: Update a Prometheus rule group definition. + az alerts-management prometheus-rule-group update -n TestPrometheusRuleGroup -g MyResourceGroup --tags key=value + """ + + _aaz_info = { + "version": "2023-03-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.alertsmanagement/prometheusrulegroups/{}", "2023-03-01"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="The name of the rule group.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[^:@/#{}%&+*<>?]+$", + ), + ) + + # define Arg Group "Parameters" + + _args_schema = cls._args_schema + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="Parameters", + 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.cluster_name = AAZStrArg( + options=["--cluster-name"], + arg_group="Properties", + help="Apply rule to data from a specific cluster.", + nullable=True, + ) + _args_schema.description = AAZStrArg( + options=["--description"], + arg_group="Properties", + help="Rule group description.", + nullable=True, + ) + _args_schema.enabled = AAZBoolArg( + options=["--enabled"], + arg_group="Properties", + help="Enable/disable rule group.", + nullable=True, + ) + _args_schema.interval = AAZDurationArg( + options=["--interval"], + arg_group="Properties", + help="The interval in which to run the Prometheus rule group represented in ISO 8601 duration format. Should be between 1 and 15 minutes", + nullable=True, + ) + _args_schema.rules = AAZListArg( + options=["--rules"], + arg_group="Properties", + help="Defines the rules in the Prometheus rule group.", + ) + _args_schema.scopes = AAZListArg( + options=["--scopes"], + arg_group="Properties", + help="Target Azure Monitor workspaces resource ids. This api-version is currently limited to creating with one scope. This may change in future.", + ) + + rules = cls._args_schema.rules + rules.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.rules.Element + _element.actions = AAZListArg( + options=["actions"], + help="Actions that are performed when the alert rule becomes active, and when an alert condition is resolved.", + nullable=True, + ) + _element.alert = AAZStrArg( + options=["alert"], + help="Alert rule name.", + nullable=True, + ) + _element.annotations = AAZDictArg( + options=["annotations"], + help="The annotations clause specifies a set of informational labels that can be used to store longer additional information such as alert descriptions or runbook links. The annotation values can be templated.", + nullable=True, + ) + _element.enabled = AAZBoolArg( + options=["enabled"], + help="Enable/disable rule.", + nullable=True, + ) + _element.expression = AAZStrArg( + options=["expression"], + help="The PromQL expression to evaluate. https://prometheus.io/docs/prometheus/latest/querying/basics/. Evaluated periodically as given by 'interval', and the result recorded as a new set of time series with the metric name as given by 'record'.", + ) + _element['for'] = AAZDurationArg( + options=["for"], + help="The amount of time alert must be active before firing.", + nullable=True, + ) + _element.labels = AAZDictArg( + options=["labels"], + help="Labels to add or overwrite before storing the result.", + nullable=True, + ) + _element.record = AAZStrArg( + options=["record"], + help="Recorded metrics name.", + nullable=True, + ) + _element.resolve_configuration = AAZObjectArg( + options=["resolve-configuration"], + help="Defines the configuration for resolving fired alerts. Only relevant for alerts.", + nullable=True, + ) + _element.severity = AAZIntArg( + options=["severity"], + help="The severity of the alerts fired by the rule. Must be between 0 and 4.", + nullable=True, + ) + + actions = cls._args_schema.rules.Element.actions + actions.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.rules.Element.actions.Element + _element.action_group_id = AAZStrArg( + options=["action-group-id"], + help="The resource id of the action group to use.", + nullable=True, + ) + _element.action_properties = AAZDictArg( + options=["action-properties"], + help="The properties of an action group object.", + nullable=True, + ) + + action_properties = cls._args_schema.rules.Element.actions.Element.action_properties + action_properties.Element = AAZStrArg( + nullable=True, + ) + + annotations = cls._args_schema.rules.Element.annotations + annotations.Element = AAZStrArg( + nullable=True, + ) + + labels = cls._args_schema.rules.Element.labels + labels.Element = AAZStrArg( + nullable=True, + ) + + resolve_configuration = cls._args_schema.rules.Element.resolve_configuration + resolve_configuration.auto_resolved = AAZBoolArg( + options=["auto-resolved"], + help="Enable alert auto-resolution.", + nullable=True, + ) + resolve_configuration.time_to_resolve = AAZDurationArg( + options=["time-to-resolve"], + help="Alert auto-resolution timeout.", + nullable=True, + ) + + scopes = cls._args_schema.scopes + scopes.Element = AAZStrArg( + nullable=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.PrometheusRuleGroupsGet(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.PrometheusRuleGroupsCreateOrUpdate(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 PrometheusRuleGroupsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{ruleGroupName}", + **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( + "ruleGroupName", self.ctx.args.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", "2023-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _UpdateHelper._build_schema_prometheus_rule_group_resource_read(cls._schema_on_200) + + return cls._schema_on_200 + + class PrometheusRuleGroupsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{ruleGroupName}", + **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( + "ruleGroupName", self.ctx.args.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", "2023-03-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _UpdateHelper._build_schema_prometheus_rule_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": {"required": True, "client_flatten": True}}) + _builder.set_prop("tags", AAZDictType, ".tags") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("clusterName", AAZStrType, ".cluster_name") + properties.set_prop("description", AAZStrType, ".description") + properties.set_prop("enabled", AAZBoolType, ".enabled") + properties.set_prop("interval", AAZStrType, ".interval") + properties.set_prop("rules", AAZListType, ".rules", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("scopes", AAZListType, ".scopes", typ_kwargs={"flags": {"required": True}}) + + rules = _builder.get(".properties.rules") + if rules is not None: + rules.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.rules[]") + if _elements is not None: + _elements.set_prop("actions", AAZListType, ".actions") + _elements.set_prop("alert", AAZStrType, ".alert") + _elements.set_prop("annotations", AAZDictType, ".annotations") + _elements.set_prop("enabled", AAZBoolType, ".enabled") + _elements.set_prop("expression", AAZStrType, ".expression", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("for", AAZStrType, ".for") + _elements.set_prop("labels", AAZDictType, ".labels") + _elements.set_prop("record", AAZStrType, ".record") + _elements.set_prop("resolveConfiguration", AAZObjectType, ".resolve_configuration") + _elements.set_prop("severity", AAZIntType, ".severity") + + actions = _builder.get(".properties.rules[].actions") + if actions is not None: + actions.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.rules[].actions[]") + if _elements is not None: + _elements.set_prop("actionGroupId", AAZStrType, ".action_group_id") + _elements.set_prop("actionProperties", AAZDictType, ".action_properties") + + action_properties = _builder.get(".properties.rules[].actions[].actionProperties") + if action_properties is not None: + action_properties.set_elements(AAZStrType, ".") + + annotations = _builder.get(".properties.rules[].annotations") + if annotations is not None: + annotations.set_elements(AAZStrType, ".") + + labels = _builder.get(".properties.rules[].labels") + if labels is not None: + labels.set_elements(AAZStrType, ".") + + resolve_configuration = _builder.get(".properties.rules[].resolveConfiguration") + if resolve_configuration is not None: + resolve_configuration.set_prop("autoResolved", AAZBoolType, ".auto_resolved") + resolve_configuration.set_prop("timeToResolve", AAZStrType, ".time_to_resolve") + + scopes = _builder.get(".properties.scopes") + if scopes is not None: + scopes.set_elements(AAZStrType, ".") + + 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_prometheus_rule_group_resource_read = None + + @classmethod + def _build_schema_prometheus_rule_group_resource_read(cls, _schema): + if cls._schema_prometheus_rule_group_resource_read is not None: + _schema.id = cls._schema_prometheus_rule_group_resource_read.id + _schema.location = cls._schema_prometheus_rule_group_resource_read.location + _schema.name = cls._schema_prometheus_rule_group_resource_read.name + _schema.properties = cls._schema_prometheus_rule_group_resource_read.properties + _schema.system_data = cls._schema_prometheus_rule_group_resource_read.system_data + _schema.tags = cls._schema_prometheus_rule_group_resource_read.tags + _schema.type = cls._schema_prometheus_rule_group_resource_read.type + return + + cls._schema_prometheus_rule_group_resource_read = _schema_prometheus_rule_group_resource_read = AAZObjectType() + + prometheus_rule_group_resource_read = _schema_prometheus_rule_group_resource_read + prometheus_rule_group_resource_read.id = AAZStrType( + flags={"read_only": True}, + ) + prometheus_rule_group_resource_read.location = AAZStrType( + flags={"required": True}, + ) + prometheus_rule_group_resource_read.name = AAZStrType( + flags={"read_only": True}, + ) + prometheus_rule_group_resource_read.properties = AAZObjectType( + flags={"required": True, "client_flatten": True}, + ) + prometheus_rule_group_resource_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + prometheus_rule_group_resource_read.tags = AAZDictType() + prometheus_rule_group_resource_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_prometheus_rule_group_resource_read.properties + properties.cluster_name = AAZStrType( + serialized_name="clusterName", + ) + properties.description = AAZStrType() + properties.enabled = AAZBoolType() + properties.interval = AAZStrType() + properties.rules = AAZListType( + flags={"required": True}, + ) + properties.scopes = AAZListType( + flags={"required": True}, + ) + + rules = _schema_prometheus_rule_group_resource_read.properties.rules + rules.Element = AAZObjectType() + + _element = _schema_prometheus_rule_group_resource_read.properties.rules.Element + _element.actions = AAZListType() + _element.alert = AAZStrType() + _element.annotations = AAZDictType() + _element.enabled = AAZBoolType() + _element.expression = AAZStrType( + flags={"required": True}, + ) + _element["for"] = AAZStrType() + _element.labels = AAZDictType() + _element.record = AAZStrType() + _element.resolve_configuration = AAZObjectType( + serialized_name="resolveConfiguration", + ) + _element.severity = AAZIntType() + + actions = _schema_prometheus_rule_group_resource_read.properties.rules.Element.actions + actions.Element = AAZObjectType() + + _element = _schema_prometheus_rule_group_resource_read.properties.rules.Element.actions.Element + _element.action_group_id = AAZStrType( + serialized_name="actionGroupId", + ) + _element.action_properties = AAZDictType( + serialized_name="actionProperties", + ) + + action_properties = _schema_prometheus_rule_group_resource_read.properties.rules.Element.actions.Element.action_properties + action_properties.Element = AAZStrType() + + annotations = _schema_prometheus_rule_group_resource_read.properties.rules.Element.annotations + annotations.Element = AAZStrType() + + labels = _schema_prometheus_rule_group_resource_read.properties.rules.Element.labels + labels.Element = AAZStrType() + + resolve_configuration = _schema_prometheus_rule_group_resource_read.properties.rules.Element.resolve_configuration + resolve_configuration.auto_resolved = AAZBoolType( + serialized_name="autoResolved", + ) + resolve_configuration.time_to_resolve = AAZStrType( + serialized_name="timeToResolve", + ) + + scopes = _schema_prometheus_rule_group_resource_read.properties.scopes + scopes.Element = AAZStrType() + + system_data = _schema_prometheus_rule_group_resource_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_prometheus_rule_group_resource_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_prometheus_rule_group_resource_read.id + _schema.location = cls._schema_prometheus_rule_group_resource_read.location + _schema.name = cls._schema_prometheus_rule_group_resource_read.name + _schema.properties = cls._schema_prometheus_rule_group_resource_read.properties + _schema.system_data = cls._schema_prometheus_rule_group_resource_read.system_data + _schema.tags = cls._schema_prometheus_rule_group_resource_read.tags + _schema.type = cls._schema_prometheus_rule_group_resource_read.type + + +__all__ = ["Update"] diff --git a/src/alertsmanagement/azext_alertsmanagement/azext_metadata.json b/src/alertsmanagement/azext_alertsmanagement/azext_metadata.json index cf7b8927a07..be5de02d927 100644 --- a/src/alertsmanagement/azext_alertsmanagement/azext_metadata.json +++ b/src/alertsmanagement/azext_alertsmanagement/azext_metadata.json @@ -1,4 +1,4 @@ { "azext.isPreview": true, - "azext.minCliCoreVersion": "2.15.0" -} + "azext.minCliCoreVersion": "2.45.0" +} \ No newline at end of file diff --git a/src/alertsmanagement/azext_alertsmanagement/tests/latest/recordings/test_alertsmanagement_prometheus_rule_group.yaml b/src/alertsmanagement/azext_alertsmanagement/tests/latest/recordings/test_alertsmanagement_prometheus_rule_group.yaml new file mode 100644 index 00000000000..17c1897925a --- /dev/null +++ b/src/alertsmanagement/azext_alertsmanagement/tests/latest/recordings/test_alertsmanagement_prometheus_rule_group.yaml @@ -0,0 +1,631 @@ +interactions: +- request: + body: '{"location": "Global", "properties": {"groupShortName": "action-group", + "enabled": true, "emailReceivers": [], "smsReceivers": [], "webhookReceivers": + [], "itsmReceivers": [], "azureAppPushReceivers": [], "automationRunbookReceivers": + [], "voiceReceivers": [], "logicAppReceivers": [], "azureFunctionReceivers": + [], "armRoleReceivers": [], "eventHubReceivers": []}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor action-group create + Connection: + - keep-alive + Content-Length: + - '365' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.47.0 azsdk-python-azure-mgmt-monitor/5.0.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.Insights/actionGroups/action-group-name000003?api-version=2022-06-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000003","type":"Microsoft.Insights/ActionGroups","name":"action-group-name000003","location":"Global","tags":null,"properties":{"groupShortName":"action-group","enabled":true,"emailReceivers":[],"smsReceivers":[],"webhookReceivers":[],"eventHubReceivers":[],"itsmReceivers":[],"azureAppPushReceivers":[],"automationRunbookReceivers":[],"voiceReceivers":[],"logicAppReceivers":[],"azureFunctionReceivers":[],"armRoleReceivers":[]}}' + headers: + access-control-expose-headers: + - x-activityid + api-supported-versions: + - 2016-09-01-preview, 2017-03-01-preview, 2017-04-01, 2018-03-01, 2018-09-01, + 2019-03-01, 2019-06-01, 2021-09-01, 2022-04-01, 2022-06-01, 2023-01-01, 2023-03-01-preview + cache-control: + - no-cache + content-length: + - '618' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 21 Apr 2023 02:38:36 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-activityid: + - 9a9506f2-dfed-11ed-ae09-a8b13b7de2fa + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '24' + x-servedby: + - EUS2ONEIM000002 + status: + code: 201 + message: Created +- request: + body: '{"location": "Global", "properties": {"groupShortName": "action-group", + "enabled": true, "emailReceivers": [], "smsReceivers": [], "webhookReceivers": + [], "itsmReceivers": [], "azureAppPushReceivers": [], "automationRunbookReceivers": + [], "voiceReceivers": [], "logicAppReceivers": [], "azureFunctionReceivers": + [], "armRoleReceivers": [], "eventHubReceivers": []}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - monitor action-group create + Connection: + - keep-alive + Content-Length: + - '365' + Content-Type: + - application/json + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.47.0 azsdk-python-azure-mgmt-monitor/5.0.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.Insights/actionGroups/action-group-name000004?api-version=2022-06-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000004","type":"Microsoft.Insights/ActionGroups","name":"action-group-name000004","location":"Global","tags":null,"properties":{"groupShortName":"action-group","enabled":true,"emailReceivers":[],"smsReceivers":[],"webhookReceivers":[],"eventHubReceivers":[],"itsmReceivers":[],"azureAppPushReceivers":[],"automationRunbookReceivers":[],"voiceReceivers":[],"logicAppReceivers":[],"azureFunctionReceivers":[],"armRoleReceivers":[]}}' + headers: + access-control-expose-headers: + - x-activityid + api-supported-versions: + - 2016-09-01-preview, 2017-03-01-preview, 2017-04-01, 2018-03-01, 2018-09-01, + 2019-03-01, 2019-06-01, 2021-09-01, 2022-04-01, 2022-06-01, 2023-01-01, 2023-03-01-preview + cache-control: + - no-cache + content-length: + - '618' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 21 Apr 2023 02:38:39 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-activityid: + - 9e1c5463-dfed-11ed-a8c2-a8b13b7de2fa + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '22' + x-servedby: + - wus2oneim000000 + status: + code: 201 + message: Created +- request: + body: '{"location": "eastus2euap"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - rest + Connection: + - keep-alive + Content-Length: + - '27' + Content-Type: + - application/json + ParameterSetName: + - --method --url --body + User-Agent: + - python/3.9.5 (Windows-10-10.0.22621-SP0) AZURECLI/2.47.0 + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.Monitor/accounts/account-name000005?api-version=2021-06-03-preview + response: + body: + string: '{"properties":{"accountId":"778a23d5-9100-4759-ac16-4f11596298fd","metrics":{"prometheusQueryEndpoint":"https://account-name000005-2p1o.eastus2euap.prometheus.monitor.azure.com","internalId":"mac_778a23d5-9100-4759-ac16-4f11596298fd"},"provisioningState":"Succeeded","defaultIngestionSettings":{"dataCollectionRuleResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MA_account-name000005_eastus2euap_managed/providers/Microsoft.Insights/dataCollectionRules/account-name000005","dataCollectionEndpointResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MA_account-name000005_eastus2euap_managed/providers/Microsoft.Insights/dataCollectionEndpoints/account-name000005"},"publicNetworkAccess":"Enabled"},"location":"eastus2euap","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.monitor/accounts/account-name000005","name":"account-name000005","type":"Microsoft.Monitor/accounts","etag":"\"0000590d-0000-3300-0000-6441f7400000\"","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2023-04-21T02:38:43.2510414Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2023-04-21T02:38:43.2510414Z"}}' + headers: + api-supported-versions: + - 2021-06-01-preview, 2021-06-03-preview, 2023-04-01, 2023-04-03 + cache-control: + - no-cache + content-length: + - '1323' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 21 Apr 2023 02:38:56 GMT + expires: + - '-1' + pragma: + - no-cache + request-context: + - appId=cid-v1:74683e7d-3ee8-4856-bfe7-e63c83b6737e + server: + - Microsoft-HTTPAPI/2.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2euap", "properties": {"description": "test", "enabled": + true, "interval": "PT10M", "rules": [{"expression": "test", "labels": {"team": + "prod"}, "record": "test"}, {"actions": [{"actionGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000003", + "actionProperties": {"key11": "value11", "key12": "value12"}}, {"actionGroupId": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000004", + "actionProperties": {"key21": "value21", "key22": "value22"}}], "alert": "Billing_Processing_Very_Slow", + "annotations": {"annotationName1": "annotationValue1"}, "enabled": true, "expression": + "test", "for": "PT5M", "labels": {"team": "prod"}, "resolveConfiguration": {"autoResolved": + true, "timeToResolve": "PT10M"}, "severity": 2}], "scopes": ["/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.monitor/accounts/account-name000005"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - alerts-management prometheus-rule-group create + Connection: + - keep-alive + Content-Length: + - '1205' + Content-Type: + - application/json + ParameterSetName: + - -n -g -l --enabled --description --interval --scopes --rules + User-Agent: + - AZURECLI/2.47.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.AlertsManagement/prometheusRuleGroups/prometheus-rule-group000002?api-version=2023-03-01 + response: + body: + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.AlertsManagement/prometheusRuleGroups/prometheus-rule-group000002\",\r\n + \ \"name\": \"prometheus-rule-group000002\",\r\n \"type\": \"Microsoft.AlertsManagement/prometheusRuleGroups\",\r\n + \ \"location\": \"eastus2euap\",\r\n \"properties\": {\r\n \"enabled\": + true,\r\n \"description\": \"test\",\r\n \"scopes\": [\r\n \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.monitor/accounts/account-name000005\"\r\n + \ ],\r\n \"rules\": [\r\n {\r\n \"record\": \"test\",\r\n + \ \"expression\": \"test\",\r\n \"labels\": {\r\n \"team\": + \"prod\"\r\n }\r\n },\r\n {\r\n \"alert\": \"Billing_Processing_Very_Slow\",\r\n + \ \"enabled\": true,\r\n \"expression\": \"test\",\r\n \"severity\": + 2,\r\n \"for\": \"PT5M\",\r\n \"labels\": {\r\n \"team\": + \"prod\"\r\n },\r\n \"annotations\": {\r\n \"annotationName1\": + \"annotationValue1\"\r\n },\r\n \"actions\": [\r\n {\r\n + \ \"actionGroupId\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000003\",\r\n + \ \"actionProperties\": {\r\n \"key11\": \"value11\",\r\n + \ \"key12\": \"value12\"\r\n }\r\n },\r\n + \ {\r\n \"actionGroupId\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000004\",\r\n + \ \"actionProperties\": {\r\n \"key21\": \"value21\",\r\n + \ \"key22\": \"value22\"\r\n }\r\n }\r\n ],\r\n + \ \"resolveConfiguration\": {\r\n \"autoResolved\": true,\r\n + \ \"timeToResolve\": \"PT10M\"\r\n }\r\n }\r\n ],\r\n + \ \"interval\": \"PT10M\"\r\n }\r\n}" + headers: + api-supported-versions: + - 2021-07-22-preview, 2023-03-01 + arr-disable-session-affinity: + - 'true' + cache-control: + - no-cache + content-length: + - '2029' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 21 Apr 2023 02:39:03 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-aspnet-version: + - 4.0.30319 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '299' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - alerts-management prometheus-rule-group update + Connection: + - keep-alive + ParameterSetName: + - -n -g --tags + User-Agent: + - AZURECLI/2.47.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.AlertsManagement/prometheusRuleGroups/prometheus-rule-group000002?api-version=2023-03-01 + response: + body: + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.AlertsManagement/prometheusRuleGroups/prometheus-rule-group000002\",\r\n + \ \"name\": \"prometheus-rule-group000002\",\r\n \"type\": \"Microsoft.AlertsManagement/prometheusRuleGroups\",\r\n + \ \"location\": \"eastus2euap\",\r\n \"properties\": {\r\n \"enabled\": + true,\r\n \"description\": \"test\",\r\n \"scopes\": [\r\n \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.monitor/accounts/account-name000005\"\r\n + \ ],\r\n \"rules\": [\r\n {\r\n \"record\": \"test\",\r\n + \ \"expression\": \"test\",\r\n \"labels\": {\r\n \"team\": + \"prod\"\r\n }\r\n },\r\n {\r\n \"alert\": \"Billing_Processing_Very_Slow\",\r\n + \ \"enabled\": true,\r\n \"expression\": \"test\",\r\n \"severity\": + 2,\r\n \"for\": \"PT5M\",\r\n \"labels\": {\r\n \"team\": + \"prod\"\r\n },\r\n \"annotations\": {\r\n \"annotationName1\": + \"annotationValue1\"\r\n },\r\n \"actions\": [\r\n {\r\n + \ \"actionGroupId\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000003\",\r\n + \ \"actionProperties\": {\r\n \"key11\": \"value11\",\r\n + \ \"key12\": \"value12\"\r\n }\r\n },\r\n + \ {\r\n \"actionGroupId\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000004\",\r\n + \ \"actionProperties\": {\r\n \"key21\": \"value21\",\r\n + \ \"key22\": \"value22\"\r\n }\r\n }\r\n ],\r\n + \ \"resolveConfiguration\": {\r\n \"autoResolved\": true,\r\n + \ \"timeToResolve\": \"PT10M\"\r\n }\r\n }\r\n ],\r\n + \ \"interval\": \"PT10M\"\r\n }\r\n}" + headers: + api-supported-versions: + - 2021-07-22-preview, 2023-03-01 + arr-disable-session-affinity: + - 'true' + cache-control: + - no-cache + content-length: + - '2029' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 21 Apr 2023 02:39:06 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-aspnet-version: + - 4.0.30319 + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2euap", "properties": {"description": "test", "enabled": + true, "interval": "PT10M", "rules": [{"expression": "test", "labels": {"team": + "prod"}, "record": "test"}, {"actions": [{"actionGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000003", + "actionProperties": {"key11": "value11", "key12": "value12"}}, {"actionGroupId": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000004", + "actionProperties": {"key21": "value21", "key22": "value22"}}], "alert": "Billing_Processing_Very_Slow", + "annotations": {"annotationName1": "annotationValue1"}, "enabled": true, "expression": + "test", "for": "PT5M", "labels": {"team": "prod"}, "resolveConfiguration": {"autoResolved": + true, "timeToResolve": "PT10M"}, "severity": 2}], "scopes": ["/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.monitor/accounts/account-name000005"]}, + "tags": {"key": "value"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - alerts-management prometheus-rule-group update + Connection: + - keep-alive + Content-Length: + - '1231' + Content-Type: + - application/json + ParameterSetName: + - -n -g --tags + User-Agent: + - AZURECLI/2.47.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.AlertsManagement/prometheusRuleGroups/prometheus-rule-group000002?api-version=2023-03-01 + response: + body: + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.AlertsManagement/prometheusRuleGroups/prometheus-rule-group000002\",\r\n + \ \"name\": \"prometheus-rule-group000002\",\r\n \"type\": \"Microsoft.AlertsManagement/prometheusRuleGroups\",\r\n + \ \"location\": \"eastus2euap\",\r\n \"tags\": {\r\n \"key\": \"value\"\r\n + \ },\r\n \"properties\": {\r\n \"enabled\": true,\r\n \"description\": + \"test\",\r\n \"scopes\": [\r\n \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.monitor/accounts/account-name000005\"\r\n + \ ],\r\n \"rules\": [\r\n {\r\n \"record\": \"test\",\r\n + \ \"expression\": \"test\",\r\n \"labels\": {\r\n \"team\": + \"prod\"\r\n }\r\n },\r\n {\r\n \"alert\": \"Billing_Processing_Very_Slow\",\r\n + \ \"enabled\": true,\r\n \"expression\": \"test\",\r\n \"severity\": + 2,\r\n \"for\": \"PT5M\",\r\n \"labels\": {\r\n \"team\": + \"prod\"\r\n },\r\n \"annotations\": {\r\n \"annotationName1\": + \"annotationValue1\"\r\n },\r\n \"actions\": [\r\n {\r\n + \ \"actionGroupId\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000003\",\r\n + \ \"actionProperties\": {\r\n \"key11\": \"value11\",\r\n + \ \"key12\": \"value12\"\r\n }\r\n },\r\n + \ {\r\n \"actionGroupId\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000004\",\r\n + \ \"actionProperties\": {\r\n \"key21\": \"value21\",\r\n + \ \"key22\": \"value22\"\r\n }\r\n }\r\n ],\r\n + \ \"resolveConfiguration\": {\r\n \"autoResolved\": true,\r\n + \ \"timeToResolve\": \"PT10M\"\r\n }\r\n }\r\n ],\r\n + \ \"interval\": \"PT10M\"\r\n }\r\n}" + headers: + api-supported-versions: + - 2021-07-22-preview, 2023-03-01 + arr-disable-session-affinity: + - 'true' + cache-control: + - no-cache + content-length: + - '2068' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 21 Apr 2023 02:39:13 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-aspnet-version: + - 4.0.30319 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '299' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - alerts-management prometheus-rule-group list + Connection: + - keep-alive + ParameterSetName: + - -g + User-Agent: + - AZURECLI/2.47.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.AlertsManagement/prometheusRuleGroups?api-version=2023-03-01 + response: + body: + string: "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.AlertsManagement/prometheusRuleGroups/prometheus-rule-group000002\",\r\n + \ \"name\": \"prometheus-rule-group000002\",\r\n \"type\": \"Microsoft.AlertsManagement/prometheusRuleGroups\",\r\n + \ \"location\": \"eastus2euap\",\r\n \"tags\": {\r\n \"key\": + \"value\"\r\n },\r\n \"properties\": {\r\n \"enabled\": true,\r\n + \ \"description\": \"test\",\r\n \"scopes\": [\r\n \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.monitor/accounts/account-name000005\"\r\n + \ ],\r\n \"rules\": [\r\n {\r\n \"record\": + \"test\",\r\n \"expression\": \"test\",\r\n \"labels\": + {\r\n \"team\": \"prod\"\r\n }\r\n },\r\n + \ {\r\n \"alert\": \"Billing_Processing_Very_Slow\",\r\n + \ \"enabled\": true,\r\n \"expression\": \"test\",\r\n + \ \"severity\": 2,\r\n \"for\": \"PT5M\",\r\n \"labels\": + {\r\n \"team\": \"prod\"\r\n },\r\n \"annotations\": + {\r\n \"annotationName1\": \"annotationValue1\"\r\n },\r\n + \ \"actions\": [\r\n {\r\n \"actionGroupId\": + \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000003\",\r\n + \ \"actionProperties\": {\r\n \"key11\": \"value11\",\r\n + \ \"key12\": \"value12\"\r\n }\r\n },\r\n + \ {\r\n \"actionGroupId\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000004\",\r\n + \ \"actionProperties\": {\r\n \"key21\": \"value21\",\r\n + \ \"key22\": \"value22\"\r\n }\r\n }\r\n + \ ],\r\n \"resolveConfiguration\": {\r\n \"autoResolved\": + true,\r\n \"timeToResolve\": \"PT10M\"\r\n }\r\n }\r\n + \ ],\r\n \"interval\": \"PT10M\"\r\n }\r\n }\r\n ]\r\n}" + headers: + api-supported-versions: + - 2021-07-22-preview, 2023-03-01 + arr-disable-session-affinity: + - 'true' + cache-control: + - no-cache + content-length: + - '2329' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 21 Apr 2023 02:39:16 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-aspnet-version: + - 4.0.30319 + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - alerts-management prometheus-rule-group show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.47.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.AlertsManagement/prometheusRuleGroups/prometheus-rule-group000002?api-version=2023-03-01 + response: + body: + string: "{\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.AlertsManagement/prometheusRuleGroups/prometheus-rule-group000002\",\r\n + \ \"name\": \"prometheus-rule-group000002\",\r\n \"type\": \"Microsoft.AlertsManagement/prometheusRuleGroups\",\r\n + \ \"location\": \"eastus2euap\",\r\n \"tags\": {\r\n \"key\": \"value\"\r\n + \ },\r\n \"properties\": {\r\n \"enabled\": true,\r\n \"description\": + \"test\",\r\n \"scopes\": [\r\n \"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.monitor/accounts/account-name000005\"\r\n + \ ],\r\n \"rules\": [\r\n {\r\n \"record\": \"test\",\r\n + \ \"expression\": \"test\",\r\n \"labels\": {\r\n \"team\": + \"prod\"\r\n }\r\n },\r\n {\r\n \"alert\": \"Billing_Processing_Very_Slow\",\r\n + \ \"enabled\": true,\r\n \"expression\": \"test\",\r\n \"severity\": + 2,\r\n \"for\": \"PT5M\",\r\n \"labels\": {\r\n \"team\": + \"prod\"\r\n },\r\n \"annotations\": {\r\n \"annotationName1\": + \"annotationValue1\"\r\n },\r\n \"actions\": [\r\n {\r\n + \ \"actionGroupId\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000003\",\r\n + \ \"actionProperties\": {\r\n \"key11\": \"value11\",\r\n + \ \"key12\": \"value12\"\r\n }\r\n },\r\n + \ {\r\n \"actionGroupId\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/microsoft.insights/actionGroups/action-group-name000004\",\r\n + \ \"actionProperties\": {\r\n \"key21\": \"value21\",\r\n + \ \"key22\": \"value22\"\r\n }\r\n }\r\n ],\r\n + \ \"resolveConfiguration\": {\r\n \"autoResolved\": true,\r\n + \ \"timeToResolve\": \"PT10M\"\r\n }\r\n }\r\n ],\r\n + \ \"interval\": \"PT10M\"\r\n }\r\n}" + headers: + api-supported-versions: + - 2021-07-22-preview, 2023-03-01 + arr-disable-session-affinity: + - 'true' + cache-control: + - no-cache + content-length: + - '2068' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 21 Apr 2023 02:39:17 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-aspnet-version: + - 4.0.30319 + x-content-type-options: + - nosniff + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - alerts-management prometheus-rule-group delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.47.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.22621-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_alertsmanagement_prometheus_rule_group_000001/providers/Microsoft.AlertsManagement/prometheusRuleGroups/prometheus-rule-group000002?api-version=2023-03-01 + response: + body: + string: '' + headers: + api-supported-versions: + - 2021-07-22-preview, 2023-03-01 + arr-disable-session-affinity: + - 'true' + cache-control: + - no-cache + content-length: + - '0' + date: + - Fri, 21 Apr 2023 02:39:24 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Microsoft-IIS/10.0 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-aspnet-version: + - 4.0.30319 + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14998' + x-powered-by: + - ASP.NET + status: + code: 200 + message: OK +version: 1 diff --git a/src/alertsmanagement/azext_alertsmanagement/tests/latest/test_alertsmanagement_scenario.py b/src/alertsmanagement/azext_alertsmanagement/tests/latest/test_alertsmanagement_scenario.py index 57b237cb59e..2b60e4294ff 100644 --- a/src/alertsmanagement/azext_alertsmanagement/tests/latest/test_alertsmanagement_scenario.py +++ b/src/alertsmanagement/azext_alertsmanagement/tests/latest/test_alertsmanagement_scenario.py @@ -94,3 +94,56 @@ def test_alertsmanagement_processing_rule(self, resource_group): self.cmd('az monitor alert-processing-rule delete -g {rg} -n test1 --yes') self.cmd('az monitor alert-processing-rule delete -g {rg} -n test2 --yes') + + +class PrometheusRuleGroup(ScenarioTest): + @ResourceGroupPreparer(name_prefix='cli_test_alertsmanagement_prometheus_rule_group_', location='eastus') + def test_alertsmanagement_prometheus_rule_group(self, resource_group): + subs_id = self.get_subscription_id() + rg_id = '/subscriptions/{}/resourceGroups/{}'.format(subs_id, resource_group) + self.kwargs.update({ + 'rg_id': rg_id, + 'subs_id': subs_id, + 'loc': 'eastus2euap', + 'name': self.create_random_name('prometheus-rule-group', 28), + 'action_group_name1': self.create_random_name('action-group-name', 24), + 'action_group_name2': self.create_random_name('action-group-name', 24), + 'account_name': self.create_random_name('account-name', 24), + 'description': 'This is the description of the following rule group', + 'interval': 'PT10M', + 'expression': "histogram_quantile(0.99, sum(rate(jobs_duration_seconds_bucket{service=\"billing-processing\"}[5m])) by (job_type))", + 'body': '{\\"location\\":\\"eastus2euap\\"}', + }) + actionGroup1 = self.cmd('az monitor action-group create -n {action_group_name1} -g {rg}').get_output_in_json() + actionGroup2 = self.cmd('az monitor action-group create -n {action_group_name2} -g {rg}').get_output_in_json() + macAccount = self.cmd('az rest --method "PUT" \ + --url "https://management.azure.com/subscriptions/{subs_id}/resourcegroups/{rg}/providers/Microsoft.Monitor/accounts/{account_name}?api-version=2021-06-03-preview" \ + --body "{body}"').get_output_in_json() + self.kwargs['account_id'] = macAccount['id'] + self.kwargs['action_group_id01'] = actionGroup1['id'] + self.kwargs['action_group_id02'] = actionGroup2['id'] + self.cmd('az alerts-management prometheus-rule-group create -n {name} -g {rg} -l {loc} --enabled ' + '--description test ' + '--interval {interval} ' + '--scopes {account_id} ' + '--rules [{{"record":"test","expression":"test","labels":{{"team":"prod"}}}},' + '{{"alert":"Billing_Processing_Very_Slow","expression":"test","enabled":"true","severity":2,' + '"for":"PT5M","labels":{{"team":"prod"}},"annotations":{{"annotationName1":"annotationValue1"}},' + '"resolveConfiguration":{{"autoResolved":"true","timeToResolve":"PT10M"}},' + '"actions":[{{"actionGroupId":{action_group_id01},"actionProperties":{{"key11":"value11","key12":"value12"}}}},' + '{{"actionGroupId":{action_group_id02},"actionProperties":{{"key21":"value21","key22":"value22"}}}}]}}]', + checks=self.check('name', '{name}')) + + self.cmd('az alerts-management prometheus-rule-group update -n {name} -g {rg} --tags key=value', + checks=[ + self.check('name', '{name}'), + self.check('tags.key', 'value') + ]) + + self.cmd('az alerts-management prometheus-rule-group list -g {rg}', + checks=self.check('length(@)', 1)) + + self.cmd('az alerts-management prometheus-rule-group show -n {name} -g {rg}', + checks=self.check('name', '{name}')) + + self.cmd('az alerts-management prometheus-rule-group delete -n {name} -g {rg}') diff --git a/src/alertsmanagement/setup.py b/src/alertsmanagement/setup.py index ad145c615b9..35298975aaf 100644 --- a/src/alertsmanagement/setup.py +++ b/src/alertsmanagement/setup.py @@ -15,7 +15,7 @@ logger.warn("Wheel is not available, disabling bdist_wheel hook") # HISTORY.rst entry. -VERSION = '0.2.2' +VERSION = '0.2.3' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers diff --git a/src/service_name.json b/src/service_name.json index 6539dfc2213..5dc271ae204 100644 --- a/src/service_name.json +++ b/src/service_name.json @@ -24,6 +24,11 @@ "AzureServiceName": "Azure Kubernetes Service (AKS)", "URL": "https://docs.microsoft.com/azure/aks/" }, + { + "Command": "az alerts-management", + "AzureServiceName": "Azure Alerts Management", + "URL": "https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-overview" + }, { "Command": "az alias", "AzureServiceName": "Azure CLI",