diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/_meta.json b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/_meta.json index 4acb590471e5..7e43fa59c829 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/_meta.json +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/_meta.json @@ -1,11 +1,11 @@ { - "commit": "e37a57df67daaa82f9c3758fc450bc8655812a08", + "commit": "6c4ba08e260ac4dc6bc2f512ef7c7cd75cca464f", "repository_url": "https://github.com/Azure/azure-rest-api-specs", "autorest": "3.9.2", "use": [ - "@autorest/python@6.2.7", + "@autorest/python@6.2.16", "@autorest/modelerfour@4.24.3" ], - "autorest_command": "autorest specification/alertsmanagement/resource-manager/readme.md --generate-sample=True --include-x-ms-examples-original-file=True --python --python-sdks-folder=/home/vsts/work/1/azure-sdk-for-python/sdk --use=@autorest/python@6.2.7 --use=@autorest/modelerfour@4.24.3 --version=3.9.2 --version-tolerant=False", + "autorest_command": "autorest specification/alertsmanagement/resource-manager/readme.md --generate-sample=True --include-x-ms-examples-original-file=True --python --python-sdks-folder=/mnt/vss/_work/1/s/azure-sdk-for-python/sdk --use=@autorest/python@6.2.16 --use=@autorest/modelerfour@4.24.3 --version=3.9.2 --version-tolerant=False", "readme": "specification/alertsmanagement/resource-manager/readme.md" } \ No newline at end of file diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_alerts_management_client.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_alerts_management_client.py index e896dc0a388c..05f5468b9592 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_alerts_management_client.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_alerts_management_client.py @@ -17,6 +17,7 @@ from ._serialization import Deserializer, Serializer from .operations import ( AlertProcessingRulesOperations, + AlertRuleRecommendationsOperations, AlertsOperations, Operations, PrometheusRuleGroupsOperations, @@ -43,10 +44,15 @@ class AlertsManagementClient: # pylint: disable=client-accepts-api-version-keyw :vartype alerts: azure.mgmt.alertsmanagement.operations.AlertsOperations :ivar smart_groups: SmartGroupsOperations operations :vartype smart_groups: azure.mgmt.alertsmanagement.operations.SmartGroupsOperations + :ivar alert_rule_recommendations: AlertRuleRecommendationsOperations operations + :vartype alert_rule_recommendations: + azure.mgmt.alertsmanagement.operations.AlertRuleRecommendationsOperations :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials.TokenCredential :param subscription_id: The ID of the target subscription. Required. :type subscription_id: str + :param target_type: The recommendations target type. Required. + :type target_type: str :param base_url: Service URL. Default value is "https://management.azure.com". :type base_url: str """ @@ -55,11 +61,12 @@ def __init__( self, credential: "TokenCredential", subscription_id: str, + target_type: str, base_url: str = "https://management.azure.com", **kwargs: Any ) -> None: self._config = AlertsManagementClientConfiguration( - credential=credential, subscription_id=subscription_id, **kwargs + credential=credential, subscription_id=subscription_id, target_type=target_type, **kwargs ) self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs) @@ -76,6 +83,9 @@ def __init__( self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) self.alerts = AlertsOperations(self._client, self._config, self._serialize, self._deserialize) self.smart_groups = SmartGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.alert_rule_recommendations = AlertRuleRecommendationsOperations( + self._client, self._config, self._serialize, self._deserialize + ) def _send_request(self, request: HttpRequest, **kwargs: Any) -> HttpResponse: """Runs the network request through the client's chained policies. diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_configuration.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_configuration.py index c5cebde237ea..7f89fa8a46be 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_configuration.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_configuration.py @@ -29,17 +29,22 @@ class AlertsManagementClientConfiguration(Configuration): # pylint: disable=too :type credential: ~azure.core.credentials.TokenCredential :param subscription_id: The ID of the target subscription. Required. :type subscription_id: str + :param target_type: The recommendations target type. Required. + :type target_type: str """ - def __init__(self, credential: "TokenCredential", subscription_id: str, **kwargs: Any) -> None: + def __init__(self, credential: "TokenCredential", subscription_id: str, target_type: str, **kwargs: Any) -> None: super(AlertsManagementClientConfiguration, self).__init__(**kwargs) if credential is None: raise ValueError("Parameter 'credential' must not be None.") if subscription_id is None: raise ValueError("Parameter 'subscription_id' must not be None.") + if target_type is None: + raise ValueError("Parameter 'target_type' must not be None.") self.credential = credential self.subscription_id = subscription_id + self.target_type = target_type self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) kwargs.setdefault("sdk_moniker", "mgmt-alertsmanagement/{}".format(VERSION)) self._configure(**kwargs) diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_serialization.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_serialization.py index 2c170e28dbca..f17c068e833e 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_serialization.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_serialization.py @@ -38,7 +38,22 @@ import re import sys import codecs -from typing import Optional, Union, AnyStr, IO, Mapping +from typing import ( + Dict, + Any, + cast, + Optional, + Union, + AnyStr, + IO, + Mapping, + Callable, + TypeVar, + MutableMapping, + Type, + List, + Mapping, +) try: from urllib import quote # type: ignore @@ -48,12 +63,14 @@ import isodate # type: ignore -from typing import Dict, Any, cast - from azure.core.exceptions import DeserializationError, SerializationError, raise_with_traceback +from azure.core.serialization import NULL as AzureCoreNull _BOM = codecs.BOM_UTF8.decode(encoding="utf-8") +ModelType = TypeVar("ModelType", bound="Model") +JSON = MutableMapping[str, Any] + class RawDeserializer: @@ -277,8 +294,8 @@ class Model(object): _attribute_map: Dict[str, Dict[str, Any]] = {} _validation: Dict[str, Dict[str, Any]] = {} - def __init__(self, **kwargs): - self.additional_properties = {} + def __init__(self, **kwargs: Any) -> None: + self.additional_properties: Dict[str, Any] = {} for k in kwargs: if k not in self._attribute_map: _LOGGER.warning("%s is not a known attribute of class %s and will be ignored", k, self.__class__) @@ -287,25 +304,25 @@ def __init__(self, **kwargs): else: setattr(self, k, kwargs[k]) - def __eq__(self, other): + def __eq__(self, other: Any) -> bool: """Compare objects by comparing all attributes.""" if isinstance(other, self.__class__): return self.__dict__ == other.__dict__ return False - def __ne__(self, other): + def __ne__(self, other: Any) -> bool: """Compare objects by comparing all attributes.""" return not self.__eq__(other) - def __str__(self): + def __str__(self) -> str: return str(self.__dict__) @classmethod - def enable_additional_properties_sending(cls): + def enable_additional_properties_sending(cls) -> None: cls._attribute_map["additional_properties"] = {"key": "", "type": "{object}"} @classmethod - def is_xml_model(cls): + def is_xml_model(cls) -> bool: try: cls._xml_map # type: ignore except AttributeError: @@ -322,7 +339,7 @@ def _create_xml_node(cls): return _create_xml_node(xml_map.get("name", cls.__name__), xml_map.get("prefix", None), xml_map.get("ns", None)) - def serialize(self, keep_readonly=False, **kwargs): + def serialize(self, keep_readonly: bool = False, **kwargs: Any) -> JSON: """Return the JSON that would be sent to azure from this model. This is an alias to `as_dict(full_restapi_key_transformer, keep_readonly=False)`. @@ -336,8 +353,13 @@ def serialize(self, keep_readonly=False, **kwargs): serializer = Serializer(self._infer_class_models()) return serializer._serialize(self, keep_readonly=keep_readonly, **kwargs) - def as_dict(self, keep_readonly=True, key_transformer=attribute_transformer, **kwargs): - """Return a dict that can be JSONify using json.dump. + def as_dict( + self, + keep_readonly: bool = True, + key_transformer: Callable[[str, Dict[str, Any], Any], Any] = attribute_transformer, + **kwargs: Any + ) -> JSON: + """Return a dict that can be serialized using json.dump. Advanced usage might optionally use a callback as parameter: @@ -384,7 +406,7 @@ def _infer_class_models(cls): return client_models @classmethod - def deserialize(cls, data, content_type=None): + def deserialize(cls: Type[ModelType], data: Any, content_type: Optional[str] = None) -> ModelType: """Parse a str using the RestAPI syntax and return a model. :param str data: A str using RestAPI structure. JSON by default. @@ -396,7 +418,12 @@ def deserialize(cls, data, content_type=None): return deserializer(cls.__name__, data, content_type=content_type) @classmethod - def from_dict(cls, data, key_extractors=None, content_type=None): + def from_dict( + cls: Type[ModelType], + data: Any, + key_extractors: Optional[Callable[[str, Dict[str, Any], Any], Any]] = None, + content_type: Optional[str] = None, + ) -> ModelType: """Parse a dict using given key extractor return a model. By default consider key @@ -409,8 +436,8 @@ def from_dict(cls, data, key_extractors=None, content_type=None): :raises: DeserializationError if something went wrong """ deserializer = Deserializer(cls._infer_class_models()) - deserializer.key_extractors = ( - [ + deserializer.key_extractors = ( # type: ignore + [ # type: ignore attribute_key_case_insensitive_extractor, rest_key_case_insensitive_extractor, last_rest_key_case_insensitive_extractor, @@ -518,7 +545,7 @@ class Serializer(object): "multiple": lambda x, y: x % y != 0, } - def __init__(self, classes=None): + def __init__(self, classes: Optional[Mapping[str, Type[ModelType]]] = None): self.serialize_type = { "iso-8601": Serializer.serialize_iso, "rfc-1123": Serializer.serialize_rfc, @@ -534,7 +561,7 @@ def __init__(self, classes=None): "[]": self.serialize_iter, "{}": self.serialize_dict, } - self.dependencies = dict(classes) if classes else {} + self.dependencies: Dict[str, Type[ModelType]] = dict(classes) if classes else {} self.key_transformer = full_restapi_key_transformer self.client_side_validation = True @@ -626,8 +653,7 @@ def _serialize(self, target_obj, data_type=None, **kwargs): serialized.append(local_node) # type: ignore else: # JSON for k in reversed(keys): # type: ignore - unflattened = {k: new_attr} - new_attr = unflattened + new_attr = {k: new_attr} _new_attr = new_attr _serialized = serialized @@ -656,8 +682,8 @@ def body(self, data, data_type, **kwargs): """ # Just in case this is a dict - internal_data_type = data_type.strip("[]{}") - internal_data_type = self.dependencies.get(internal_data_type, None) + internal_data_type_str = data_type.strip("[]{}") + internal_data_type = self.dependencies.get(internal_data_type_str, None) try: is_xml_model_serialization = kwargs["is_xml"] except KeyError: @@ -777,6 +803,8 @@ def serialize_data(self, data, data_type, **kwargs): raise ValueError("No value for given attribute") try: + if data is AzureCoreNull: + return None if data_type in self.basic_types.values(): return self.serialize_basic(data, data_type, **kwargs) @@ -1161,7 +1189,8 @@ def rest_key_extractor(attr, attr_desc, data): working_data = data while "." in key: - dict_keys = _FLATTEN.split(key) + # Need the cast, as for some reasons "split" is typed as list[str | Any] + dict_keys = cast(List[str], _FLATTEN.split(key)) if len(dict_keys) == 1: key = _decode_attribute_map_key(dict_keys[0]) break @@ -1332,7 +1361,7 @@ class Deserializer(object): valid_date = re.compile(r"\d{4}[-]\d{2}[-]\d{2}T\d{2}:\d{2}:\d{2}" r"\.?\d*Z?[-+]?[\d{2}]?:?[\d{2}]?") - def __init__(self, classes=None): + def __init__(self, classes: Optional[Mapping[str, Type[ModelType]]] = None): self.deserialize_type = { "iso-8601": Deserializer.deserialize_iso, "rfc-1123": Deserializer.deserialize_rfc, @@ -1352,7 +1381,7 @@ def __init__(self, classes=None): "duration": (isodate.Duration, datetime.timedelta), "iso-8601": (datetime.datetime), } - self.dependencies = dict(classes) if classes else {} + self.dependencies: Dict[str, Type[ModelType]] = dict(classes) if classes else {} self.key_extractors = [rest_key_extractor, xml_key_extractor] # Additional properties only works if the "rest_key_extractor" is used to # extract the keys. Making it to work whatever the key extractor is too much @@ -1471,7 +1500,7 @@ def _classify_target(self, target, data): Once classification has been determined, initialize object. :param str target: The target object type to deserialize to. - :param str/dict data: The response data to deseralize. + :param str/dict data: The response data to deserialize. """ if target is None: return None, None @@ -1486,7 +1515,7 @@ def _classify_target(self, target, data): target = target._classify(data, self.dependencies) except AttributeError: pass # Target is not a Model, no classify - return target, target.__class__.__name__ + return target, target.__class__.__name__ # type: ignore def failsafe_deserialize(self, target_obj, data, content_type=None): """Ignores any errors encountered in deserialization, @@ -1496,7 +1525,7 @@ def failsafe_deserialize(self, target_obj, data, content_type=None): a deserialization error. :param str target_obj: The target object type to deserialize to. - :param str/dict data: The response data to deseralize. + :param str/dict data: The response data to deserialize. :param str content_type: Swagger "produces" if available. """ try: diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_vendor.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_vendor.py index 9aad73fc743e..bd0df84f5319 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_vendor.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_vendor.py @@ -5,6 +5,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +from typing import List, cast + from azure.core.pipeline.transport import HttpRequest @@ -22,6 +24,7 @@ def _format_url_section(template, **kwargs): try: return template.format(**kwargs) except KeyError as key: - formatted_components = template.split("/") + # Need the cast, as for some reasons "split" is typed as list[str | Any] + formatted_components = cast(List[str], template.split("/")) components = [c for c in formatted_components if "{}".format(key.args[0]) not in c] template = "/".join(components) diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_version.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_version.py index 2eda20789583..e5754a47ce68 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_version.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/_version.py @@ -6,4 +6,4 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -VERSION = "2.0.0b2" +VERSION = "1.0.0b1" diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/_alerts_management_client.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/_alerts_management_client.py index 3848d1701f82..c838665b8d22 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/_alerts_management_client.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/_alerts_management_client.py @@ -17,6 +17,7 @@ from ._configuration import AlertsManagementClientConfiguration from .operations import ( AlertProcessingRulesOperations, + AlertRuleRecommendationsOperations, AlertsOperations, Operations, PrometheusRuleGroupsOperations, @@ -43,10 +44,15 @@ class AlertsManagementClient: # pylint: disable=client-accepts-api-version-keyw :vartype alerts: azure.mgmt.alertsmanagement.aio.operations.AlertsOperations :ivar smart_groups: SmartGroupsOperations operations :vartype smart_groups: azure.mgmt.alertsmanagement.aio.operations.SmartGroupsOperations + :ivar alert_rule_recommendations: AlertRuleRecommendationsOperations operations + :vartype alert_rule_recommendations: + azure.mgmt.alertsmanagement.aio.operations.AlertRuleRecommendationsOperations :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param subscription_id: The ID of the target subscription. Required. :type subscription_id: str + :param target_type: The recommendations target type. Required. + :type target_type: str :param base_url: Service URL. Default value is "https://management.azure.com". :type base_url: str """ @@ -55,11 +61,12 @@ def __init__( self, credential: "AsyncTokenCredential", subscription_id: str, + target_type: str, base_url: str = "https://management.azure.com", **kwargs: Any ) -> None: self._config = AlertsManagementClientConfiguration( - credential=credential, subscription_id=subscription_id, **kwargs + credential=credential, subscription_id=subscription_id, target_type=target_type, **kwargs ) self._client = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs) @@ -76,6 +83,9 @@ def __init__( self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) self.alerts = AlertsOperations(self._client, self._config, self._serialize, self._deserialize) self.smart_groups = SmartGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.alert_rule_recommendations = AlertRuleRecommendationsOperations( + self._client, self._config, self._serialize, self._deserialize + ) def _send_request(self, request: HttpRequest, **kwargs: Any) -> Awaitable[AsyncHttpResponse]: """Runs the network request through the client's chained policies. diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/_configuration.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/_configuration.py index 4295ad594068..342b557c3f17 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/_configuration.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/_configuration.py @@ -29,17 +29,24 @@ class AlertsManagementClientConfiguration(Configuration): # pylint: disable=too :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param subscription_id: The ID of the target subscription. Required. :type subscription_id: str + :param target_type: The recommendations target type. Required. + :type target_type: str """ - def __init__(self, credential: "AsyncTokenCredential", subscription_id: str, **kwargs: Any) -> None: + def __init__( + self, credential: "AsyncTokenCredential", subscription_id: str, target_type: str, **kwargs: Any + ) -> None: super(AlertsManagementClientConfiguration, self).__init__(**kwargs) if credential is None: raise ValueError("Parameter 'credential' must not be None.") if subscription_id is None: raise ValueError("Parameter 'subscription_id' must not be None.") + if target_type is None: + raise ValueError("Parameter 'target_type' must not be None.") self.credential = credential self.subscription_id = subscription_id + self.target_type = target_type self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) kwargs.setdefault("sdk_moniker", "mgmt-alertsmanagement/{}".format(VERSION)) self._configure(**kwargs) diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/operations/__init__.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/operations/__init__.py index c8dd1e48dcf0..6621d7aa286d 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/operations/__init__.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/operations/__init__.py @@ -11,6 +11,7 @@ from ._operations import Operations from ._alerts_operations import AlertsOperations from ._smart_groups_operations import SmartGroupsOperations +from ._alert_rule_recommendations_operations import AlertRuleRecommendationsOperations from ._patch import __all__ as _patch_all from ._patch import * # pylint: disable=unused-wildcard-import @@ -22,6 +23,7 @@ "Operations", "AlertsOperations", "SmartGroupsOperations", + "AlertRuleRecommendationsOperations", ] __all__.extend([p for p in _patch_all if p not in __all__]) _patch_sdk() diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/operations/_alert_rule_recommendations_operations.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/operations/_alert_rule_recommendations_operations.py new file mode 100644 index 000000000000..9f56e5b41b7b --- /dev/null +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/aio/operations/_alert_rule_recommendations_operations.py @@ -0,0 +1,213 @@ +# pylint: disable=too-many-lines +# coding=utf-8 +# -------------------------------------------------------------------------- +# 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 Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import sys +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from ... import models as _models +from ..._vendor import _convert_request +from ...operations._alert_rule_recommendations_operations import ( + build_list_by_resource_request, + build_list_by_target_type_request, +) + +if sys.version_info >= (3, 8): + from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports +else: + from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class AlertRuleRecommendationsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.alertsmanagement.aio.AlertsManagementClient`'s + :attr:`alert_rule_recommendations` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list_by_resource( + self, resource_uri: str, **kwargs: Any + ) -> AsyncIterable["_models.AlertRuleRecommendationResource"]: + """Retrieve alert rule recommendations for a resource. + + :param resource_uri: The identifier of the resource. Required. + :type resource_uri: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AlertRuleRecommendationResource or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.alertsmanagement.models.AlertRuleRecommendationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: Literal["2023-01-01-preview"] = kwargs.pop( + "api_version", _params.pop("api-version", "2023-01-01-preview") + ) + cls: ClsType[_models.AlertRuleRecommendationsListResponse] = kwargs.pop("cls", None) + + error_map = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + request = build_list_by_resource_request( + resource_uri=resource_uri, + api_version=api_version, + template_url=self.list_by_resource.metadata["url"], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + request = HttpRequest("GET", next_link) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AlertRuleRecommendationsListResponse", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + request, stream=False, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_by_resource.metadata = {"url": "/{resourceUri}/providers/Microsoft.AlertsManagement/alertRuleRecommendations"} + + @distributed_trace + def list_by_target_type(self, **kwargs: Any) -> AsyncIterable["_models.AlertRuleRecommendationResource"]: + """Retrieve alert rule recommendations for a target type. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AlertRuleRecommendationResource or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.alertsmanagement.models.AlertRuleRecommendationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: Literal["2023-01-01-preview"] = kwargs.pop( + "api_version", _params.pop("api-version", "2023-01-01-preview") + ) + cls: ClsType[_models.AlertRuleRecommendationsListResponse] = kwargs.pop("cls", None) + + error_map = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + request = build_list_by_target_type_request( + subscription_id=self._config.subscription_id, + target_type=self._config.target_type, + api_version=api_version, + template_url=self.list_by_target_type.metadata["url"], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + request = HttpRequest("GET", next_link) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("AlertRuleRecommendationsListResponse", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + request, stream=False, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_by_target_type.metadata = { + "url": "/subscriptions/{subscriptionId}/providers/Microsoft.AlertsManagement/alertRuleRecommendations" + } diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/__init__.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/__init__.py index 1bea22079797..41e76dc298c8 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/__init__.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/__init__.py @@ -17,6 +17,8 @@ from ._models_py3 import AlertProcessingRuleProperties from ._models_py3 import AlertProcessingRulesList from ._models_py3 import AlertProperties +from ._models_py3 import AlertRuleRecommendationResource +from ._models_py3 import AlertRuleRecommendationsListResponse from ._models_py3 import AlertsList from ._models_py3 import AlertsMetaData from ._models_py3 import AlertsMetaDataProperties @@ -26,6 +28,7 @@ from ._models_py3 import Comments from ._models_py3 import Condition from ._models_py3 import DailyRecurrence +from ._models_py3 import DisplayInformationItem from ._models_py3 import ErrorAdditionalInfo from ._models_py3 import ErrorDetail from ._models_py3 import ErrorResponse @@ -37,6 +40,7 @@ from ._models_py3 import ErrorResponseBodyAutoGenerated2 from ._models_py3 import Essentials from ._models_py3 import ManagedResource +from ._models_py3 import MetricAlertsDisplayInformation from ._models_py3 import MonitorServiceDetails from ._models_py3 import MonitorServiceList from ._models_py3 import MonthlyRecurrence @@ -51,10 +55,12 @@ from ._models_py3 import PrometheusRuleGroupResourcePatch from ._models_py3 import PrometheusRuleGroupResourcePatchProperties from ._models_py3 import PrometheusRuleResolveConfiguration +from ._models_py3 import ProxyResource from ._models_py3 import Recurrence from ._models_py3 import RemoveAllActionGroups from ._models_py3 import Resource from ._models_py3 import ResourceAutoGenerated +from ._models_py3 import RuleArmTemplate from ._models_py3 import Schedule from ._models_py3 import SmartGroup from ._models_py3 import SmartGroupAggregatedProperty @@ -76,6 +82,7 @@ from ._alerts_management_client_enums import Field from ._alerts_management_client_enums import Identifier from ._alerts_management_client_enums import MetadataIdentifier +from ._alerts_management_client_enums import MetricAlertsDisplayUnit from ._alerts_management_client_enums import MonitorCondition from ._alerts_management_client_enums import MonitorService from ._alerts_management_client_enums import Operator @@ -103,6 +110,8 @@ "AlertProcessingRuleProperties", "AlertProcessingRulesList", "AlertProperties", + "AlertRuleRecommendationResource", + "AlertRuleRecommendationsListResponse", "AlertsList", "AlertsMetaData", "AlertsMetaDataProperties", @@ -112,6 +121,7 @@ "Comments", "Condition", "DailyRecurrence", + "DisplayInformationItem", "ErrorAdditionalInfo", "ErrorDetail", "ErrorResponse", @@ -123,6 +133,7 @@ "ErrorResponseBodyAutoGenerated2", "Essentials", "ManagedResource", + "MetricAlertsDisplayInformation", "MonitorServiceDetails", "MonitorServiceList", "MonthlyRecurrence", @@ -137,10 +148,12 @@ "PrometheusRuleGroupResourcePatch", "PrometheusRuleGroupResourcePatchProperties", "PrometheusRuleResolveConfiguration", + "ProxyResource", "Recurrence", "RemoveAllActionGroups", "Resource", "ResourceAutoGenerated", + "RuleArmTemplate", "Schedule", "SmartGroup", "SmartGroupAggregatedProperty", @@ -161,6 +174,7 @@ "Field", "Identifier", "MetadataIdentifier", + "MetricAlertsDisplayUnit", "MonitorCondition", "MonitorService", "Operator", diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/_alerts_management_client_enums.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/_alerts_management_client_enums.py index 845acc76887f..1c4ae714af67 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/_alerts_management_client_enums.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/_alerts_management_client_enums.py @@ -114,6 +114,47 @@ class MetadataIdentifier(str, Enum, metaclass=CaseInsensitiveEnumMeta): MONITOR_SERVICE_LIST = "MonitorServiceList" +class MetricAlertsDisplayUnit(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The unit to display for a metric alert rule.""" + + NONE = "None" + PERCENTAGE = "Percentage" + BYTES = "Bytes" + KILOBYTES = "Kilobytes" + MEGABYTES = "Megabytes" + GIGABYTES = "Gigabytes" + TERABYTES = "Terabytes" + PETABYTES = "Petabytes" + BYTES_PER_DAY = "BytesPerDay" + BYTES_PER_HOUR = "BytesPerHour" + BYTES_PER_MINUTE = "BytesPerMinute" + BYTES_PER_SECOND = "BytesPerSecond" + KILOBYTES_PER_SECOND = "KilobytesPerSecond" + MEGABYTES_PER_SECOND = "MegabytesPerSecond" + GIGABYTES_PER_SECOND = "GigabytesPerSecond" + TERABYTES_PER_SECOND = "TerabytesPerSecond" + PETABYTES_PER_SECOND = "PetabytesPerSecond" + COUNT = "Count" + THOUSAND = "Thousand" + MILLION = "Million" + BILLION = "Billion" + TRILLION = "Trillion" + MICRO_SECONDS = "MicroSeconds" + MILLI_SECONDS = "MilliSeconds" + SECONDS = "Seconds" + MINUTES = "Minutes" + HOURS = "Hours" + DAYS = "Days" + COUNT_PER_DAY = "CountPerDay" + COUNT_PER_HOUR = "CountPerHour" + COUNT_PER_MINUTE = "CountPerMinute" + COUNT_PER_SECOND = "CountPerSecond" + THOUSAND_PER_SECOND = "ThousandPerSecond" + MILLION_PER_SECOND = "MillionPerSecond" + BILLION_PER_SECOND = "BillionPerSecond" + TRILLION_PER_SECOND = "TrillionPerSecond" + + class MonitorCondition(str, Enum, metaclass=CaseInsensitiveEnumMeta): """MonitorCondition.""" diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/_models_py3.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/_models_py3.py index de87aaa590fe..ea235de71c1f 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/_models_py3.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/models/_models_py3.py @@ -8,13 +8,20 @@ # -------------------------------------------------------------------------- import datetime -from typing import Dict, List, Optional, TYPE_CHECKING, Union +import sys +from typing import Any, Dict, List, Optional, TYPE_CHECKING, Union from .. import _serialization +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports + if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports from .. import models as _models +JSON = MutableMapping[str, Any] # pylint: disable=unsubscriptable-object class Action(_serialization.Model): @@ -42,7 +49,7 @@ class Action(_serialization.Model): "action_type": {"AddActionGroups": "AddActionGroups", "RemoveAllActionGroups": "RemoveAllActionGroups"} } - def __init__(self, **kwargs): + def __init__(self, **kwargs: Any) -> None: """ """ super().__init__(**kwargs) self.action_type: Optional[str] = None @@ -59,7 +66,7 @@ class ActionStatus(_serialization.Model): "is_suppressed": {"key": "isSuppressed", "type": "bool"}, } - def __init__(self, *, is_suppressed: Optional[bool] = None, **kwargs): + def __init__(self, *, is_suppressed: Optional[bool] = None, **kwargs: Any) -> None: """ :keyword is_suppressed: Value indicating whether alert is suppressed. :paramtype is_suppressed: bool @@ -90,7 +97,7 @@ class AddActionGroups(Action): "action_group_ids": {"key": "actionGroupIds", "type": "[str]"}, } - def __init__(self, *, action_group_ids: List[str], **kwargs): + def __init__(self, *, action_group_ids: List[str], **kwargs: Any) -> None: """ :keyword action_group_ids: List of action group Ids to add to alert processing rule. Required. :paramtype action_group_ids: list[str] @@ -125,7 +132,7 @@ class Resource(_serialization.Model): "name": {"key": "name", "type": "str"}, } - def __init__(self, **kwargs): + def __init__(self, **kwargs: Any) -> None: """ """ super().__init__(**kwargs) self.id = None @@ -161,7 +168,7 @@ class Alert(Resource): "properties": {"key": "properties", "type": "AlertProperties"}, } - def __init__(self, *, properties: Optional["_models.AlertProperties"] = None, **kwargs): + def __init__(self, *, properties: Optional["_models.AlertProperties"] = None, **kwargs: Any) -> None: """ :keyword properties: Alert property bag. :paramtype properties: ~azure.mgmt.alertsmanagement.models.AlertProperties @@ -198,7 +205,7 @@ class AlertModification(Resource): "properties": {"key": "properties", "type": "AlertModificationProperties"}, } - def __init__(self, *, properties: Optional["_models.AlertModificationProperties"] = None, **kwargs): + def __init__(self, *, properties: Optional["_models.AlertModificationProperties"] = None, **kwargs: Any) -> None: """ :keyword properties: Properties of the alert modification item. :paramtype properties: ~azure.mgmt.alertsmanagement.models.AlertModificationProperties @@ -248,8 +255,8 @@ def __init__( modified_by: Optional[str] = None, comments: Optional[str] = None, description: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword modification_event: Reason for the modification. Known values are: "AlertCreated", "StateChange", "MonitorConditionChange", "SeverityChange", "ActionRuleTriggered", @@ -299,7 +306,7 @@ class AlertModificationProperties(_serialization.Model): "modifications": {"key": "modifications", "type": "[AlertModificationItem]"}, } - def __init__(self, *, modifications: Optional[List["_models.AlertModificationItem"]] = None, **kwargs): + def __init__(self, *, modifications: Optional[List["_models.AlertModificationItem"]] = None, **kwargs: Any) -> None: """ :keyword modifications: Modification details. :paramtype modifications: list[~azure.mgmt.alertsmanagement.models.AlertModificationItem] @@ -343,7 +350,7 @@ class ManagedResource(Resource): "tags": {"key": "tags", "type": "{str}"}, } - def __init__(self, *, location: str, tags: Optional[Dict[str, str]] = None, **kwargs): + def __init__(self, *, location: str, tags: Optional[Dict[str, str]] = None, **kwargs: Any) -> None: """ :keyword location: Resource location. Required. :paramtype location: str @@ -402,8 +409,8 @@ def __init__( location: str, tags: Optional[Dict[str, str]] = None, properties: Optional["_models.AlertProcessingRuleProperties"] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword location: Resource location. Required. :paramtype location: str @@ -418,7 +425,8 @@ def __init__( class AlertProcessingRuleProperties(_serialization.Model): - """Alert processing rule properties defining scopes, conditions and scheduling logic for alert processing rule. + """Alert processing rule properties defining scopes, conditions and scheduling logic for alert + processing rule. All required parameters must be populated in order to send to Azure. @@ -459,8 +467,8 @@ def __init__( schedule: Optional["_models.Schedule"] = None, description: Optional[str] = None, enabled: bool = True, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword scopes: Scopes on which alert processing rule will apply. Required. :paramtype scopes: list[str] @@ -499,8 +507,12 @@ class AlertProcessingRulesList(_serialization.Model): } def __init__( - self, *, next_link: Optional[str] = None, value: Optional[List["_models.AlertProcessingRule"]] = None, **kwargs - ): + self, + *, + next_link: Optional[str] = None, + value: Optional[List["_models.AlertProcessingRule"]] = None, + **kwargs: Any + ) -> None: """ :keyword next_link: URL to fetch the next set of alert processing rules. :paramtype next_link: str @@ -537,7 +549,7 @@ class AlertProperties(_serialization.Model): "egress_config": {"key": "egressConfig", "type": "object"}, } - def __init__(self, *, essentials: Optional["_models.Essentials"] = None, **kwargs): + def __init__(self, *, essentials: Optional["_models.Essentials"] = None, **kwargs: Any) -> None: """ :keyword essentials: This object contains consistent fields across different monitor services. :paramtype essentials: ~azure.mgmt.alertsmanagement.models.Essentials @@ -548,6 +560,189 @@ def __init__(self, *, essentials: Optional["_models.Essentials"] = None, **kwarg self.egress_config = None +class ResourceAutoGenerated(_serialization.Model): + """Common fields that are returned in the response for all Azure Resource Manager resources. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.alertsmanagement.models.SystemData + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.system_data = None + + +class ProxyResource(ResourceAutoGenerated): + """The resource model definition for a Azure Resource Manager proxy resource. It will not have + tags and a location. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.alertsmanagement.models.SystemData + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + + +class AlertRuleRecommendationResource(ProxyResource): + """A single alert rule recommendation resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.alertsmanagement.models.SystemData + :ivar alert_rule_type: The recommendation alert rule type. Required. + :vartype alert_rule_type: str + :ivar display_information: Provides the display information for an alert rule recommendation + recommendations. Required. + :vartype display_information: ~azure.mgmt.alertsmanagement.models.DisplayInformationItem + :ivar rule_arm_template: A complete ARM template to deploy the alert rules. Required. + :vartype rule_arm_template: ~azure.mgmt.alertsmanagement.models.RuleArmTemplate + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + "alert_rule_type": {"required": True}, + "display_information": {"required": True}, + "rule_arm_template": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "alert_rule_type": {"key": "properties.alertRuleType", "type": "str"}, + "display_information": {"key": "properties.displayInformation", "type": "DisplayInformationItem"}, + "rule_arm_template": {"key": "properties.ruleArmTemplate", "type": "RuleArmTemplate"}, + } + + def __init__( + self, + *, + alert_rule_type: str, + display_information: "_models.DisplayInformationItem", + rule_arm_template: "_models.RuleArmTemplate", + **kwargs: Any + ) -> None: + """ + :keyword alert_rule_type: The recommendation alert rule type. Required. + :paramtype alert_rule_type: str + :keyword display_information: Provides the display information for an alert rule recommendation + recommendations. Required. + :paramtype display_information: ~azure.mgmt.alertsmanagement.models.DisplayInformationItem + :keyword rule_arm_template: A complete ARM template to deploy the alert rules. Required. + :paramtype rule_arm_template: ~azure.mgmt.alertsmanagement.models.RuleArmTemplate + """ + super().__init__(**kwargs) + self.alert_rule_type = alert_rule_type + self.display_information = display_information + self.rule_arm_template = rule_arm_template + + +class AlertRuleRecommendationsListResponse(_serialization.Model): + """List of alert rule recommendations. + + All required parameters must be populated in order to send to Azure. + + :ivar value: the values for the alert rule recommendations. Required. + :vartype value: list[~azure.mgmt.alertsmanagement.models.AlertRuleRecommendationResource] + :ivar next_link: URL to fetch the next set of recommendations. + :vartype next_link: str + """ + + _validation = { + "value": {"required": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[AlertRuleRecommendationResource]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__( + self, *, value: List["_models.AlertRuleRecommendationResource"], next_link: Optional[str] = None, **kwargs: Any + ) -> None: + """ + :keyword value: the values for the alert rule recommendations. Required. + :paramtype value: list[~azure.mgmt.alertsmanagement.models.AlertRuleRecommendationResource] + :keyword next_link: URL to fetch the next set of recommendations. + :paramtype next_link: str + """ + super().__init__(**kwargs) + self.value = value + self.next_link = next_link + + class AlertsList(_serialization.Model): """List the alerts. @@ -562,7 +757,9 @@ class AlertsList(_serialization.Model): "value": {"key": "value", "type": "[Alert]"}, } - def __init__(self, *, next_link: Optional[str] = None, value: Optional[List["_models.Alert"]] = None, **kwargs): + def __init__( + self, *, next_link: Optional[str] = None, value: Optional[List["_models.Alert"]] = None, **kwargs: Any + ) -> None: """ :keyword next_link: URL to fetch the next set of alerts. :paramtype next_link: str @@ -585,7 +782,7 @@ class AlertsMetaData(_serialization.Model): "properties": {"key": "properties", "type": "AlertsMetaDataProperties"}, } - def __init__(self, *, properties: Optional["_models.AlertsMetaDataProperties"] = None, **kwargs): + def __init__(self, *, properties: Optional["_models.AlertsMetaDataProperties"] = None, **kwargs: Any) -> None: """ :keyword properties: alert meta data property bag. :paramtype properties: ~azure.mgmt.alertsmanagement.models.AlertsMetaDataProperties @@ -617,7 +814,7 @@ class AlertsMetaDataProperties(_serialization.Model): _subtype_map = {"metadata_identifier": {"MonitorServiceList": "MonitorServiceList"}} - def __init__(self, **kwargs): + def __init__(self, **kwargs: Any) -> None: """ """ super().__init__(**kwargs) self.metadata_identifier: Optional[str] = None @@ -651,7 +848,7 @@ class AlertsSummary(Resource): "properties": {"key": "properties", "type": "AlertsSummaryGroup"}, } - def __init__(self, *, properties: Optional["_models.AlertsSummaryGroup"] = None, **kwargs): + def __init__(self, *, properties: Optional["_models.AlertsSummaryGroup"] = None, **kwargs: Any) -> None: """ :keyword properties: Group the result set. :paramtype properties: ~azure.mgmt.alertsmanagement.models.AlertsSummaryGroup @@ -687,8 +884,8 @@ def __init__( smart_groups_count: Optional[int] = None, groupedby: Optional[str] = None, values: Optional[List["_models.AlertsSummaryGroupItem"]] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword total: Total count of the result set. :paramtype total: int @@ -733,8 +930,8 @@ def __init__( count: Optional[int] = None, groupedby: Optional[str] = None, values: Optional[List["_models.AlertsSummaryGroupItem"]] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword name: Value of the aggregated field. :paramtype name: str @@ -763,7 +960,7 @@ class Comments(_serialization.Model): "comments": {"key": "comments", "type": "str"}, } - def __init__(self, *, comments: Optional[str] = None, **kwargs): + def __init__(self, *, comments: Optional[str] = None, **kwargs: Any) -> None: """ :keyword comments: :paramtype comments: str @@ -798,8 +995,8 @@ def __init__( field: Optional[Union[str, "_models.Field"]] = None, operator: Optional[Union[str, "_models.Operator"]] = None, values: Optional[List[str]] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword field: Field for a given condition. Known values are: "Severity", "MonitorService", "MonitorCondition", "SignalType", "TargetResourceType", "TargetResource", @@ -848,7 +1045,7 @@ class Recurrence(_serialization.Model): "recurrence_type": {"Daily": "DailyRecurrence", "Monthly": "MonthlyRecurrence", "Weekly": "WeeklyRecurrence"} } - def __init__(self, *, start_time: Optional[str] = None, end_time: Optional[str] = None, **kwargs): + def __init__(self, *, start_time: Optional[str] = None, end_time: Optional[str] = None, **kwargs: Any) -> None: """ :keyword start_time: Start time for recurrence. :paramtype start_time: str @@ -885,7 +1082,7 @@ class DailyRecurrence(Recurrence): "end_time": {"key": "endTime", "type": "str"}, } - def __init__(self, *, start_time: Optional[str] = None, end_time: Optional[str] = None, **kwargs): + def __init__(self, *, start_time: Optional[str] = None, end_time: Optional[str] = None, **kwargs: Any) -> None: """ :keyword start_time: Start time for recurrence. :paramtype start_time: str @@ -896,6 +1093,59 @@ def __init__(self, *, start_time: Optional[str] = None, end_time: Optional[str] self.recurrence_type: str = "Daily" +class DisplayInformationItem(_serialization.Model): + """Provides the display information for an alert rule recommendation recommendations. + + :ivar rule_info: The alert rule information. + :vartype rule_info: str + :ivar info_ballon_message: The information to display inside an information balloon. + :vartype info_ballon_message: str + :ivar info_ballon_link: The documentation link to display inside an information balloon. + :vartype info_ballon_link: str + :ivar metric_alerts_display_information: Provides display information specific for Metric + Alerts rule. + :vartype metric_alerts_display_information: + ~azure.mgmt.alertsmanagement.models.MetricAlertsDisplayInformation + """ + + _attribute_map = { + "rule_info": {"key": "ruleInfo", "type": "str"}, + "info_ballon_message": {"key": "infoBallonMessage", "type": "str"}, + "info_ballon_link": {"key": "infoBallonLink", "type": "str"}, + "metric_alerts_display_information": { + "key": "metricAlertsDisplayInformation", + "type": "MetricAlertsDisplayInformation", + }, + } + + def __init__( + self, + *, + rule_info: Optional[str] = None, + info_ballon_message: Optional[str] = None, + info_ballon_link: Optional[str] = None, + metric_alerts_display_information: Optional["_models.MetricAlertsDisplayInformation"] = None, + **kwargs: Any + ) -> None: + """ + :keyword rule_info: The alert rule information. + :paramtype rule_info: str + :keyword info_ballon_message: The information to display inside an information balloon. + :paramtype info_ballon_message: str + :keyword info_ballon_link: The documentation link to display inside an information balloon. + :paramtype info_ballon_link: str + :keyword metric_alerts_display_information: Provides display information specific for Metric + Alerts rule. + :paramtype metric_alerts_display_information: + ~azure.mgmt.alertsmanagement.models.MetricAlertsDisplayInformation + """ + super().__init__(**kwargs) + self.rule_info = rule_info + self.info_ballon_message = info_ballon_message + self.info_ballon_link = info_ballon_link + self.metric_alerts_display_information = metric_alerts_display_information + + class ErrorAdditionalInfo(_serialization.Model): """The resource management error additional info. @@ -917,7 +1167,7 @@ class ErrorAdditionalInfo(_serialization.Model): "info": {"key": "info", "type": "object"}, } - def __init__(self, **kwargs): + def __init__(self, **kwargs: Any) -> None: """ """ super().__init__(**kwargs) self.type = None @@ -957,7 +1207,7 @@ class ErrorDetail(_serialization.Model): "additional_info": {"key": "additionalInfo", "type": "[ErrorAdditionalInfo]"}, } - def __init__(self, **kwargs): + def __init__(self, **kwargs: Any) -> None: """ """ super().__init__(**kwargs) self.code = None @@ -978,7 +1228,7 @@ class ErrorResponse(_serialization.Model): "error": {"key": "error", "type": "ErrorResponseBody"}, } - def __init__(self, *, error: Optional["_models.ErrorResponseBody"] = None, **kwargs): + def __init__(self, *, error: Optional["_models.ErrorResponseBody"] = None, **kwargs: Any) -> None: """ :keyword error: Details of error response. :paramtype error: ~azure.mgmt.alertsmanagement.models.ErrorResponseBody @@ -988,7 +1238,8 @@ def __init__(self, *, error: Optional["_models.ErrorResponseBody"] = None, **kwa class ErrorResponseAutoGenerated(_serialization.Model): - """Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.). + """Common error response for all Azure Resource Manager APIs to return error details for failed + operations. (This also follows the OData error response format.). :ivar error: The error object. :vartype error: ~azure.mgmt.alertsmanagement.models.ErrorDetail @@ -998,7 +1249,7 @@ class ErrorResponseAutoGenerated(_serialization.Model): "error": {"key": "error", "type": "ErrorDetail"}, } - def __init__(self, *, error: Optional["_models.ErrorDetail"] = None, **kwargs): + def __init__(self, *, error: Optional["_models.ErrorDetail"] = None, **kwargs: Any) -> None: """ :keyword error: The error object. :paramtype error: ~azure.mgmt.alertsmanagement.models.ErrorDetail @@ -1018,7 +1269,7 @@ class ErrorResponseAutoGenerated2(_serialization.Model): "error": {"key": "error", "type": "ErrorResponseBodyAutoGenerated"}, } - def __init__(self, *, error: Optional["_models.ErrorResponseBodyAutoGenerated"] = None, **kwargs): + def __init__(self, *, error: Optional["_models.ErrorResponseBodyAutoGenerated"] = None, **kwargs: Any) -> None: """ :keyword error: Details of error response. :paramtype error: ~azure.mgmt.alertsmanagement.models.ErrorResponseBodyAutoGenerated @@ -1038,7 +1289,7 @@ class ErrorResponseAutoGenerated3(_serialization.Model): "error": {"key": "error", "type": "ErrorResponseBodyAutoGenerated2"}, } - def __init__(self, *, error: Optional["_models.ErrorResponseBodyAutoGenerated2"] = None, **kwargs): + def __init__(self, *, error: Optional["_models.ErrorResponseBodyAutoGenerated2"] = None, **kwargs: Any) -> None: """ :keyword error: Details of error response. :paramtype error: ~azure.mgmt.alertsmanagement.models.ErrorResponseBodyAutoGenerated2 @@ -1074,8 +1325,8 @@ def __init__( message: Optional[str] = None, target: Optional[str] = None, details: Optional[List["_models.ErrorResponseBody"]] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword code: Error code, intended to be consumed programmatically. :paramtype code: str @@ -1120,8 +1371,8 @@ def __init__( message: Optional[str] = None, target: Optional[str] = None, details: Optional[List["_models.ErrorResponseBodyAutoGenerated"]] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword code: Error code, intended to be consumed programmatically. :paramtype code: str @@ -1166,8 +1417,8 @@ def __init__( message: Optional[str] = None, target: Optional[str] = None, details: Optional[List["_models.ErrorResponseBodyAutoGenerated2"]] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword code: Error code, intended to be consumed programmatically. :paramtype code: str @@ -1291,8 +1542,8 @@ def __init__( target_resource_type: Optional[str] = None, action_status: Optional["_models.ActionStatus"] = None, description: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword target_resource: Target ARM resource, on which alert got created. :paramtype target_resource: str @@ -1332,6 +1583,57 @@ def __init__( self.description = description +class MetricAlertsDisplayInformation(_serialization.Model): + """Provides display information specific for Metric Alerts rule. + + All required parameters must be populated in order to send to Azure. + + :ivar metric_display_name: The metric display name to use in the UI for the metric alert rule. + Required. + :vartype metric_display_name: str + :ivar display_units: The display units to use in the UI for the metric alert rule. Required. + Known values are: "None", "Percentage", "Bytes", "Kilobytes", "Megabytes", "Gigabytes", + "Terabytes", "Petabytes", "BytesPerDay", "BytesPerHour", "BytesPerMinute", "BytesPerSecond", + "KilobytesPerSecond", "MegabytesPerSecond", "GigabytesPerSecond", "TerabytesPerSecond", + "PetabytesPerSecond", "Count", "Thousand", "Million", "Billion", "Trillion", "MicroSeconds", + "MilliSeconds", "Seconds", "Minutes", "Hours", "Days", "CountPerDay", "CountPerHour", + "CountPerMinute", "CountPerSecond", "ThousandPerSecond", "MillionPerSecond", + "BillionPerSecond", and "TrillionPerSecond". + :vartype display_units: str or ~azure.mgmt.alertsmanagement.models.MetricAlertsDisplayUnit + """ + + _validation = { + "metric_display_name": {"required": True}, + "display_units": {"required": True}, + } + + _attribute_map = { + "metric_display_name": {"key": "metricDisplayName", "type": "str"}, + "display_units": {"key": "displayUnits", "type": "str"}, + } + + def __init__( + self, *, metric_display_name: str, display_units: Union[str, "_models.MetricAlertsDisplayUnit"], **kwargs: Any + ) -> None: + """ + :keyword metric_display_name: The metric display name to use in the UI for the metric alert + rule. Required. + :paramtype metric_display_name: str + :keyword display_units: The display units to use in the UI for the metric alert rule. Required. + Known values are: "None", "Percentage", "Bytes", "Kilobytes", "Megabytes", "Gigabytes", + "Terabytes", "Petabytes", "BytesPerDay", "BytesPerHour", "BytesPerMinute", "BytesPerSecond", + "KilobytesPerSecond", "MegabytesPerSecond", "GigabytesPerSecond", "TerabytesPerSecond", + "PetabytesPerSecond", "Count", "Thousand", "Million", "Billion", "Trillion", "MicroSeconds", + "MilliSeconds", "Seconds", "Minutes", "Hours", "Days", "CountPerDay", "CountPerHour", + "CountPerMinute", "CountPerSecond", "ThousandPerSecond", "MillionPerSecond", + "BillionPerSecond", and "TrillionPerSecond". + :paramtype display_units: str or ~azure.mgmt.alertsmanagement.models.MetricAlertsDisplayUnit + """ + super().__init__(**kwargs) + self.metric_display_name = metric_display_name + self.display_units = display_units + + class MonitorServiceDetails(_serialization.Model): """Details of a monitor service. @@ -1346,7 +1648,7 @@ class MonitorServiceDetails(_serialization.Model): "display_name": {"key": "displayName", "type": "str"}, } - def __init__(self, *, name: Optional[str] = None, display_name: Optional[str] = None, **kwargs): + def __init__(self, *, name: Optional[str] = None, display_name: Optional[str] = None, **kwargs: Any) -> None: """ :keyword name: Monitor service name. :paramtype name: str @@ -1380,7 +1682,7 @@ class MonitorServiceList(AlertsMetaDataProperties): "data": {"key": "data", "type": "[MonitorServiceDetails]"}, } - def __init__(self, *, data: List["_models.MonitorServiceDetails"], **kwargs): + def __init__(self, *, data: List["_models.MonitorServiceDetails"], **kwargs: Any) -> None: """ :keyword data: Array of operations. Required. :paramtype data: list[~azure.mgmt.alertsmanagement.models.MonitorServiceDetails] @@ -1419,8 +1721,13 @@ class MonthlyRecurrence(Recurrence): } def __init__( - self, *, days_of_month: List[int], start_time: Optional[str] = None, end_time: Optional[str] = None, **kwargs - ): + self, + *, + days_of_month: List[int], + start_time: Optional[str] = None, + end_time: Optional[str] = None, + **kwargs: Any + ) -> None: """ :keyword start_time: Start time for recurrence. :paramtype start_time: str @@ -1457,8 +1764,8 @@ def __init__( name: Optional[str] = None, display: Optional["_models.OperationDisplay"] = None, origin: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword name: Name of the operation. :paramtype name: str @@ -1500,8 +1807,8 @@ def __init__( resource: Optional[str] = None, operation: Optional[str] = None, description: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword provider: Provider name. :paramtype provider: str @@ -1539,7 +1846,7 @@ class OperationsList(_serialization.Model): "value": {"key": "value", "type": "[Operation]"}, } - def __init__(self, *, value: List["_models.Operation"], next_link: Optional[str] = None, **kwargs): + def __init__(self, *, value: List["_models.Operation"], next_link: Optional[str] = None, **kwargs: Any) -> None: """ :keyword next_link: URL to fetch the next set of alerts. :paramtype next_link: str @@ -1565,7 +1872,7 @@ class PatchObject(_serialization.Model): "enabled": {"key": "properties.enabled", "type": "bool"}, } - def __init__(self, *, tags: Optional[Dict[str, str]] = None, enabled: Optional[bool] = None, **kwargs): + def __init__(self, *, tags: Optional[Dict[str, str]] = None, enabled: Optional[bool] = None, **kwargs: Any) -> None: """ :keyword tags: Tags to be updated. :paramtype tags: dict[str, str] @@ -1638,8 +1945,8 @@ def __init__( annotations: Optional[Dict[str, str]] = None, actions: Optional[List["_models.PrometheusRuleGroupAction"]] = None, resolve_configuration: Optional["_models.PrometheusRuleResolveConfiguration"] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword record: the name of the recording rule. :paramtype record: str @@ -1694,8 +2001,12 @@ class PrometheusRuleGroupAction(_serialization.Model): } def __init__( - self, *, action_group_id: Optional[str] = None, action_properties: Optional[Dict[str, str]] = None, **kwargs - ): + self, + *, + action_group_id: Optional[str] = None, + action_properties: Optional[Dict[str, str]] = None, + **kwargs: Any + ) -> None: """ :keyword action_group_id: The resource id of the action group to use. :paramtype action_group_id: str @@ -1707,49 +2018,9 @@ def __init__( self.action_properties = action_properties -class ResourceAutoGenerated(_serialization.Model): - """Common fields that are returned in the response for all Azure Resource Manager resources. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. - :vartype id: str - :ivar name: The name of the resource. - :vartype name: str - :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or - "Microsoft.Storage/storageAccounts". - :vartype type: str - :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy - information. - :vartype system_data: ~azure.mgmt.alertsmanagement.models.SystemData - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - } - - def __init__(self, **kwargs): - """ """ - super().__init__(**kwargs) - self.id = None - self.name = None - self.type = None - self.system_data = None - - class TrackedResource(ResourceAutoGenerated): - """The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'. + """The resource model definition for an Azure Resource Manager tracked top level resource which + has 'tags' and a 'location'. Variables are only populated by the server, and will be ignored when sending a request. @@ -1789,7 +2060,7 @@ class TrackedResource(ResourceAutoGenerated): "location": {"key": "location", "type": "str"}, } - def __init__(self, *, location: str, tags: Optional[Dict[str, str]] = None, **kwargs): + def __init__(self, *, location: str, tags: Optional[Dict[str, str]] = None, **kwargs: Any) -> None: """ :keyword tags: Resource tags. :paramtype tags: dict[str, str] @@ -1875,8 +2146,8 @@ def __init__( enabled: Optional[bool] = None, cluster_name: Optional[str] = None, interval: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword tags: Resource tags. :paramtype tags: dict[str, str] @@ -1917,7 +2188,7 @@ class PrometheusRuleGroupResourceCollection(_serialization.Model): "value": {"key": "value", "type": "[PrometheusRuleGroupResource]"}, } - def __init__(self, *, value: Optional[List["_models.PrometheusRuleGroupResource"]] = None, **kwargs): + def __init__(self, *, value: Optional[List["_models.PrometheusRuleGroupResource"]] = None, **kwargs: Any) -> None: """ :keyword value: the values for the alert rule resources. :paramtype value: list[~azure.mgmt.alertsmanagement.models.PrometheusRuleGroupResource] @@ -1946,8 +2217,8 @@ def __init__( *, tags: Optional[Dict[str, str]] = None, properties: Optional["_models.PrometheusRuleGroupResourcePatchProperties"] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword tags: Resource tags. :paramtype tags: dict[str, str] @@ -1971,7 +2242,7 @@ class PrometheusRuleGroupResourcePatchProperties(_serialization.Model): "enabled": {"key": "enabled", "type": "bool"}, } - def __init__(self, *, enabled: Optional[bool] = None, **kwargs): + def __init__(self, *, enabled: Optional[bool] = None, **kwargs: Any) -> None: """ :keyword enabled: the flag that indicates whether the Prometheus rule group is enabled. :paramtype enabled: bool @@ -1996,7 +2267,9 @@ class PrometheusRuleResolveConfiguration(_serialization.Model): "time_to_resolve": {"key": "timeToResolve", "type": "str"}, } - def __init__(self, *, auto_resolved: Optional[bool] = None, time_to_resolve: Optional[str] = None, **kwargs): + def __init__( + self, *, auto_resolved: Optional[bool] = None, time_to_resolve: Optional[str] = None, **kwargs: Any + ) -> None: """ :keyword auto_resolved: the flag that indicates whether or not to auto resolve a fired alert. :paramtype auto_resolved: bool @@ -2028,12 +2301,77 @@ class RemoveAllActionGroups(Action): "action_type": {"key": "actionType", "type": "str"}, } - def __init__(self, **kwargs): + def __init__(self, **kwargs: Any) -> None: """ """ super().__init__(**kwargs) self.action_type: str = "RemoveAllActionGroups" +class RuleArmTemplate(_serialization.Model): + """A complete ARM template to deploy the alert rules. + + All required parameters must be populated in order to send to Azure. + + :ivar schema: JSON schema reference. Required. + :vartype schema: str + :ivar content_version: A 4 number format for the version number of this template file. For + example, 1.0.0.0. Required. + :vartype content_version: str + :ivar variables: Variable definitions. Required. + :vartype variables: JSON + :ivar parameters: Input parameter definitions. Required. + :vartype parameters: JSON + :ivar resources: Alert rule resource definitions. Required. + :vartype resources: list[JSON] + """ + + _validation = { + "schema": {"required": True}, + "content_version": {"required": True, "pattern": r"(^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$)"}, + "variables": {"required": True}, + "parameters": {"required": True}, + "resources": {"required": True}, + } + + _attribute_map = { + "schema": {"key": "$schema", "type": "str"}, + "content_version": {"key": "contentVersion", "type": "str"}, + "variables": {"key": "variables", "type": "object"}, + "parameters": {"key": "parameters", "type": "object"}, + "resources": {"key": "resources", "type": "[object]"}, + } + + def __init__( + self, + *, + schema: str, + content_version: str, + variables: JSON, + parameters: JSON, + resources: List[JSON], + **kwargs: Any + ) -> None: + """ + :keyword schema: JSON schema reference. Required. + :paramtype schema: str + :keyword content_version: A 4 number format for the version number of this template file. For + example, 1.0.0.0. Required. + :paramtype content_version: str + :keyword variables: Variable definitions. Required. + :paramtype variables: JSON + :keyword parameters: Input parameter definitions. Required. + :paramtype parameters: JSON + :keyword resources: Alert rule resource definitions. Required. + :paramtype resources: list[JSON] + """ + super().__init__(**kwargs) + self.schema = schema + self.content_version = content_version + self.variables = variables + self.parameters = parameters + self.resources = resources + + class Schedule(_serialization.Model): """Scheduling configuration for a given alert processing rule. @@ -2068,8 +2406,8 @@ def __init__( effective_until: Optional[str] = None, time_zone: Optional[str] = None, recurrences: Optional[List["_models.Recurrence"]] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword effective_from: Scheduling effective from time. Date-Time in ISO-8601 format without timezone suffix. @@ -2180,8 +2518,8 @@ def __init__( alert_states: Optional[List["_models.SmartGroupAggregatedProperty"]] = None, alert_severities: Optional[List["_models.SmartGroupAggregatedProperty"]] = None, next_link: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword alerts_count: Total number of alerts in smart group. :paramtype alerts_count: int @@ -2239,7 +2577,7 @@ class SmartGroupAggregatedProperty(_serialization.Model): "count": {"key": "count", "type": "int"}, } - def __init__(self, *, name: Optional[str] = None, count: Optional[int] = None, **kwargs): + def __init__(self, *, name: Optional[str] = None, count: Optional[int] = None, **kwargs: Any) -> None: """ :keyword name: Name of the type. :paramtype name: str @@ -2279,7 +2617,9 @@ class SmartGroupModification(Resource): "properties": {"key": "properties", "type": "SmartGroupModificationProperties"}, } - def __init__(self, *, properties: Optional["_models.SmartGroupModificationProperties"] = None, **kwargs): + def __init__( + self, *, properties: Optional["_models.SmartGroupModificationProperties"] = None, **kwargs: Any + ) -> None: """ :keyword properties: Properties of the smartGroup modification item. :paramtype properties: ~azure.mgmt.alertsmanagement.models.SmartGroupModificationProperties @@ -2329,8 +2669,8 @@ def __init__( modified_by: Optional[str] = None, comments: Optional[str] = None, description: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword modification_event: Reason for the modification. Known values are: "SmartGroupCreated", "StateChange", "AlertAdded", and "AlertRemoved". @@ -2387,8 +2727,8 @@ def __init__( *, modifications: Optional[List["_models.SmartGroupModificationItem"]] = None, next_link: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword modifications: Modification details. :paramtype modifications: list[~azure.mgmt.alertsmanagement.models.SmartGroupModificationItem] @@ -2416,8 +2756,8 @@ class SmartGroupsList(_serialization.Model): } def __init__( - self, *, next_link: Optional[str] = None, value: Optional[List["_models.SmartGroup"]] = None, **kwargs - ): + self, *, next_link: Optional[str] = None, value: Optional[List["_models.SmartGroup"]] = None, **kwargs: Any + ) -> None: """ :keyword next_link: URL to fetch the next set of alerts. :paramtype next_link: str @@ -2466,8 +2806,8 @@ def __init__( last_modified_by: Optional[str] = None, last_modified_by_type: Optional[Union[str, "_models.CreatedByType"]] = None, last_modified_at: Optional[datetime.datetime] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword created_by: The identity that created the resource. :paramtype created_by: str @@ -2527,8 +2867,8 @@ def __init__( days_of_week: List[Union[str, "_models.DaysOfWeek"]], start_time: Optional[str] = None, end_time: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword start_time: Start time for recurrence. :paramtype start_time: str diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/operations/__init__.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/operations/__init__.py index c8dd1e48dcf0..6621d7aa286d 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/operations/__init__.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/operations/__init__.py @@ -11,6 +11,7 @@ from ._operations import Operations from ._alerts_operations import AlertsOperations from ._smart_groups_operations import SmartGroupsOperations +from ._alert_rule_recommendations_operations import AlertRuleRecommendationsOperations from ._patch import __all__ as _patch_all from ._patch import * # pylint: disable=unused-wildcard-import @@ -22,6 +23,7 @@ "Operations", "AlertsOperations", "SmartGroupsOperations", + "AlertRuleRecommendationsOperations", ] __all__.extend([p for p in _patch_all if p not in __all__]) _patch_sdk() diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/operations/_alert_rule_recommendations_operations.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/operations/_alert_rule_recommendations_operations.py new file mode 100644 index 000000000000..d07f19dae4bf --- /dev/null +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/azure/mgmt/alertsmanagement/operations/_alert_rule_recommendations_operations.py @@ -0,0 +1,266 @@ +# pylint: disable=too-many-lines +# coding=utf-8 +# -------------------------------------------------------------------------- +# 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 Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import sys +from typing import Any, Callable, Dict, Iterable, Optional, TypeVar + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpResponse +from azure.core.rest import HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from .. import models as _models +from .._serialization import Serializer +from .._vendor import _convert_request, _format_url_section + +if sys.version_info >= (3, 8): + from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports +else: + from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False + + +def build_list_by_resource_request(resource_uri: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: Literal["2023-01-01-preview"] = kwargs.pop( + "api_version", _params.pop("api-version", "2023-01-01-preview") + ) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/{resourceUri}/providers/Microsoft.AlertsManagement/alertRuleRecommendations") + path_format_arguments = { + "resourceUri": _SERIALIZER.url("resource_uri", resource_uri, "str", skip_quote=True), + } + + _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_list_by_target_type_request(subscription_id: str, *, target_type: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: Literal["2023-01-01-preview"] = kwargs.pop( + "api_version", _params.pop("api-version", "2023-01-01-preview") + ) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.AlertsManagement/alertRuleRecommendations" + ) # pylint: disable=line-too-long + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), + } + + _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + _params["targetType"] = _SERIALIZER.query("target_type", target_type, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +class AlertRuleRecommendationsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.alertsmanagement.AlertsManagementClient`'s + :attr:`alert_rule_recommendations` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list_by_resource(self, resource_uri: str, **kwargs: Any) -> Iterable["_models.AlertRuleRecommendationResource"]: + """Retrieve alert rule recommendations for a resource. + + :param resource_uri: The identifier of the resource. Required. + :type resource_uri: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AlertRuleRecommendationResource or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.alertsmanagement.models.AlertRuleRecommendationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: Literal["2023-01-01-preview"] = kwargs.pop( + "api_version", _params.pop("api-version", "2023-01-01-preview") + ) + cls: ClsType[_models.AlertRuleRecommendationsListResponse] = kwargs.pop("cls", None) + + error_map = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + request = build_list_by_resource_request( + resource_uri=resource_uri, + api_version=api_version, + template_url=self.list_by_resource.metadata["url"], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + request = HttpRequest("GET", next_link) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AlertRuleRecommendationsListResponse", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + request, stream=False, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_by_resource.metadata = {"url": "/{resourceUri}/providers/Microsoft.AlertsManagement/alertRuleRecommendations"} + + @distributed_trace + def list_by_target_type(self, **kwargs: Any) -> Iterable["_models.AlertRuleRecommendationResource"]: + """Retrieve alert rule recommendations for a target type. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AlertRuleRecommendationResource or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.alertsmanagement.models.AlertRuleRecommendationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: Literal["2023-01-01-preview"] = kwargs.pop( + "api_version", _params.pop("api-version", "2023-01-01-preview") + ) + cls: ClsType[_models.AlertRuleRecommendationsListResponse] = kwargs.pop("cls", None) + + error_map = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + request = build_list_by_target_type_request( + subscription_id=self._config.subscription_id, + target_type=self._config.target_type, + api_version=api_version, + template_url=self.list_by_target_type.metadata["url"], + headers=_headers, + params=_params, + ) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + + else: + request = HttpRequest("GET", next_link) + request = _convert_request(request) + request.url = self._client.format_url(request.url) + request.method = "GET" + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("AlertRuleRecommendationsListResponse", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + request, stream=False, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_by_target_type.metadata = { + "url": "/subscriptions/{subscriptionId}/providers/Microsoft.AlertsManagement/alertRuleRecommendations" + } diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_add_action_group_all_alerts_in_subscription.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_add_action_group_all_alerts_in_subscription.py index 16c15fa80e42..165f828546b2 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_add_action_group_all_alerts_in_subscription.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_add_action_group_all_alerts_in_subscription.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="subId1", + target_type="TARGET_TYPE", ) response = client.alert_processing_rules.create_or_update( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_add_two_action_groups_all_sev0_sev1_two_resource_groups.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_add_two_action_groups_all_sev0_sev1_two_resource_groups.py index 301a8f60c27c..329e9a0fa137 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_add_two_action_groups_all_sev0_sev1_two_resource_groups.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_add_two_action_groups_all_sev0_sev1_two_resource_groups.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="subId1", + target_type="TARGET_TYPE", ) response = client.alert_processing_rules.create_or_update( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_from_specific_alert_rule.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_from_specific_alert_rule.py index 96a81089ab2d..08aa4543af57 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_from_specific_alert_rule.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_from_specific_alert_rule.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="subId1", + target_type="TARGET_TYPE", ) response = client.alert_processing_rules.create_or_update( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_outside_business_hours.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_outside_business_hours.py index 732b8a5157a9..8849385921e6 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_outside_business_hours.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_outside_business_hours.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="subId1", + target_type="TARGET_TYPE", ) response = client.alert_processing_rules.create_or_update( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_recurring_maintenance_window.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_recurring_maintenance_window.py index 2b2df653a6b8..05b1cdd1239f 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_recurring_maintenance_window.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_recurring_maintenance_window.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="subId1", + target_type="TARGET_TYPE", ) response = client.alert_processing_rules.create_or_update( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_specific_vm_oneoff_maintenance_window.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_specific_vm_oneoff_maintenance_window.py index 727053369ddf..e828cd4dc10e 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_specific_vm_oneoff_maintenance_window.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_create_or_update_remove_all_action_groups_specific_vm_oneoff_maintenance_window.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="subId1", + target_type="TARGET_TYPE", ) response = client.alert_processing_rules.create_or_update( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_delete.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_delete.py index da1035a3ed6b..eaa2f7536d0b 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_delete.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_delete.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="1e3ff1c0-771a-4119-a03b-be82a51e232d", + target_type="TARGET_TYPE", ) response = client.alert_processing_rules.delete( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_get_by_id.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_get_by_id.py index 6e58d707a946..155a6b6095c6 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_get_by_id.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_get_by_id.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="1e3ff1c0-771a-4119-a03b-be82a51e232d", + target_type="TARGET_TYPE", ) response = client.alert_processing_rules.get_by_name( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_list_resource_group.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_list_resource_group.py index df87df4c57e9..593e19aa0ed1 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_list_resource_group.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_list_resource_group.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="1e3ff1c0-771a-4119-a03b-be82a51e232d", + target_type="TARGET_TYPE", ) response = client.alert_processing_rules.list_by_resource_group( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_list_subscription.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_list_subscription.py index f60030923c9a..b682d87271b2 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_list_subscription.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_list_subscription.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="1e3ff1c0-771a-4119-a03b-be82a51e232d", + target_type="TARGET_TYPE", ) response = client.alert_processing_rules.list_by_subscription() diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_patch.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_patch.py index 8e49a347b9b0..0311a833823f 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_patch.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_processing_rules_patch.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="1e3ff1c0-771a-4119-a03b-be82a51e232d", + target_type="TARGET_TYPE", ) response = client.alert_processing_rules.update( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_resource_mac.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_resource_mac.py new file mode 100644 index 000000000000..f6ad052f36d5 --- /dev/null +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_resource_mac.py @@ -0,0 +1,42 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# 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 Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential +from azure.mgmt.alertsmanagement import AlertsManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-alertsmanagement +# USAGE + python alert_rule_recommendations_get_by_resource_mac.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AlertsManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + target_type="TARGET_TYPE", + ) + + response = client.alert_rule_recommendations.list_by_resource( + resource_uri="subscriptions/2f00cc51-6809-498f-9ffc-48c42aff570d/resourceGroups/GenevaAlertRP-RunnerResources-eastus/providers/microsoft.monitor/accounts/alertsrp-eastus-pgms", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/alertsmanagement/resource-manager/Microsoft.AlertsManagement/preview/2023-01-01-preview/examples/AlertRuleRecommendations_GetByResource_MAC.json +if __name__ == "__main__": + main() diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_resource_vm.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_resource_vm.py new file mode 100644 index 000000000000..4770fca0cda0 --- /dev/null +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_resource_vm.py @@ -0,0 +1,42 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# 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 Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential +from azure.mgmt.alertsmanagement import AlertsManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-alertsmanagement +# USAGE + python alert_rule_recommendations_get_by_resource_vm.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AlertsManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + target_type="TARGET_TYPE", + ) + + response = client.alert_rule_recommendations.list_by_resource( + resource_uri="subscriptions/2f00cc51-6809-498f-9ffc-48c42aff570d/resourcegroups/test/providers/Microsoft.Compute/virtualMachines/testMachineCanBeSafelyDeleted", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/alertsmanagement/resource-manager/Microsoft.AlertsManagement/preview/2023-01-01-preview/examples/AlertRuleRecommendations_GetByResource_VM.json +if __name__ == "__main__": + main() diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_subscription_mac.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_subscription_mac.py new file mode 100644 index 000000000000..02bba5c8d1ec --- /dev/null +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_subscription_mac.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# 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 Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential +from azure.mgmt.alertsmanagement import AlertsManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-alertsmanagement +# USAGE + python alert_rule_recommendations_get_by_subscription_mac.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AlertsManagementClient( + credential=DefaultAzureCredential(), + subscription_id="2f00cc51-6809-498f-9ffc-48c42aff570d", + target_type="microsoft.monitor/accounts", + ) + + response = client.alert_rule_recommendations.list_by_target_type() + for item in response: + print(item) + + +# x-ms-original-file: specification/alertsmanagement/resource-manager/Microsoft.AlertsManagement/preview/2023-01-01-preview/examples/AlertRuleRecommendations_GetBySubscription_MAC.json +if __name__ == "__main__": + main() diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_subscription_vm.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_subscription_vm.py new file mode 100644 index 000000000000..cb4b37b9e71c --- /dev/null +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alert_rule_recommendations_get_by_subscription_vm.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# 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 Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential +from azure.mgmt.alertsmanagement import AlertsManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-alertsmanagement +# USAGE + python alert_rule_recommendations_get_by_subscription_vm.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AlertsManagementClient( + credential=DefaultAzureCredential(), + subscription_id="2f00cc51-6809-498f-9ffc-48c42aff570d", + target_type="microsoft.compute/virtualmachines", + ) + + response = client.alert_rule_recommendations.list_by_target_type() + for item in response: + print(item) + + +# x-ms-original-file: specification/alertsmanagement/resource-manager/Microsoft.AlertsManagement/preview/2023-01-01-preview/examples/AlertRuleRecommendations_GetBySubscription_VM.json +if __name__ == "__main__": + main() diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_change_state.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_change_state.py index 97ce6575b964..7e07a1e6c9ee 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_change_state.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_change_state.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="9e261de7-c804-4b9d-9ebf-6f50fe350a9a", + target_type="TARGET_TYPE", ) response = client.alerts.change_state( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_get_by_id.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_get_by_id.py index e4be181c404e..032bd6985b65 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_get_by_id.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_get_by_id.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="9e261de7-c804-4b9d-9ebf-6f50fe350a9a", + target_type="TARGET_TYPE", ) response = client.alerts.get_by_id( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_history.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_history.py index 3d11c9aa1d13..b6ef0ffbba91 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_history.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_history.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="9e261de7-c804-4b9d-9ebf-6f50fe350a9a", + target_type="TARGET_TYPE", ) response = client.alerts.get_history( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_list.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_list.py index 1aad26234d85..f781ce91b316 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_list.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_list.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="1e3ff1c0-771a-4119-a03b-be82a51e232d", + target_type="TARGET_TYPE", ) response = client.alerts.get_all() diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_meta_data_monitor_service.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_meta_data_monitor_service.py index 035559a1bbc3..07cee7227098 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_meta_data_monitor_service.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_meta_data_monitor_service.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="SUBSCRIPTION_ID", + target_type="TARGET_TYPE", ) response = client.alerts.meta_data( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_summary.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_summary.py index 8794d5a0df8d..d6389ed920a5 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_summary.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/alerts_summary.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="1e3ff1c0-771a-4119-a03b-be82a51e232d", + target_type="TARGET_TYPE", ) response = client.alerts.get_summary( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/create_or_update_prometheus_rule_group.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/create_or_update_prometheus_rule_group.py index 98dab269a300..4097608eff63 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/create_or_update_prometheus_rule_group.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/create_or_update_prometheus_rule_group.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7", + target_type="TARGET_TYPE", ) response = client.prometheus_rule_groups.create_or_update( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/delete_prometheus_rule_group.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/delete_prometheus_rule_group.py index 0c233d48f753..1346439fe1b6 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/delete_prometheus_rule_group.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/delete_prometheus_rule_group.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7", + target_type="TARGET_TYPE", ) response = client.prometheus_rule_groups.delete( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/get_prometheus_rule_group.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/get_prometheus_rule_group.py index 41ae7fa00fe3..2aaac3759fec 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/get_prometheus_rule_group.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/get_prometheus_rule_group.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7", + target_type="TARGET_TYPE", ) response = client.prometheus_rule_groups.get( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/list_prometheus_rule_groups.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/list_prometheus_rule_groups.py index f300eb020d15..4477a453c5b4 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/list_prometheus_rule_groups.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/list_prometheus_rule_groups.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7", + target_type="TARGET_TYPE", ) response = client.prometheus_rule_groups.list_by_resource_group( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/list_subscription_prometheus_rule_groups.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/list_subscription_prometheus_rule_groups.py index e2ea7530deb2..75cf6e5bb88b 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/list_subscription_prometheus_rule_groups.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/list_subscription_prometheus_rule_groups.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7", + target_type="TARGET_TYPE", ) response = client.prometheus_rule_groups.list_by_subscription() diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/operations_list.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/operations_list.py index 69a32c6a6873..675513fb4764 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/operations_list.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/operations_list.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="SUBSCRIPTION_ID", + target_type="TARGET_TYPE", ) response = client.operations.list() diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/patch_prometheus_rule_group.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/patch_prometheus_rule_group.py index d5d921aa0d34..14f39ffc9cda 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/patch_prometheus_rule_group.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/patch_prometheus_rule_group.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7", + target_type="TARGET_TYPE", ) response = client.prometheus_rule_groups.update( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_change_state.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_change_state.py index 7bf44c2b6487..4f8974b09db1 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_change_state.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_change_state.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="dd91de05-d791-4ceb-b6dc-988682dc7d72", + target_type="TARGET_TYPE", ) response = client.smart_groups.change_state( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_get_by_id.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_get_by_id.py index 27fad7e322b3..e5c1b8396b17 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_get_by_id.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_get_by_id.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="9e261de7-c804-4b9d-9ebf-6f50fe350a9a", + target_type="TARGET_TYPE", ) response = client.smart_groups.get_by_id( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_history.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_history.py index 4fedb8a5d1e7..3e91f6394308 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_history.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_history.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="9e261de7-c804-4b9d-9ebf-6f50fe350a9a", + target_type="TARGET_TYPE", ) response = client.smart_groups.get_history( diff --git a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_list.py b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_list.py index 229f50a04cda..d49e2204bebb 100644 --- a/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_list.py +++ b/sdk/alertsmanagement/azure-mgmt-alertsmanagement/generated_samples/smart_groups_list.py @@ -27,6 +27,7 @@ def main(): client = AlertsManagementClient( credential=DefaultAzureCredential(), subscription_id="dd91de05-d791-4ceb-b6dc-988682dc7d72", + target_type="TARGET_TYPE", ) response = client.smart_groups.get_all()