diff --git a/sdk/advisor/azure-mgmt-advisor/README.md b/sdk/advisor/azure-mgmt-advisor/README.md
index 03ae641d69a6..ec46510dcf80 100644
--- a/sdk/advisor/azure-mgmt-advisor/README.md
+++ b/sdk/advisor/azure-mgmt-advisor/README.md
@@ -1,28 +1,61 @@
# Microsoft Azure SDK for Python
This is the Microsoft Azure Advisor Client Library.
-This package has been tested with Python 3.7+.
+This package has been tested with Python 3.8+.
For a more complete view of Azure libraries, see the [azure sdk python release](https://aka.ms/azsdk/python/all).
## _Disclaimer_
_Azure SDK Python packages support for Python 2.7 has ended 01 January 2022. For more information and questions, please refer to https://github.com/Azure/azure-sdk-for-python/issues/20691_
-# Usage
+## Getting started
+### Prerequisites
-To learn how to use this package, see the [quickstart guide](https://aka.ms/azsdk/python/mgmt)
-
-For docs and references, see [Python SDK References](https://docs.microsoft.com/python/api/overview/azure/advisor)
-Code samples for this package can be found at [Advisor](https://docs.microsoft.com/samples/browse/?languages=python&term=Getting%20started%20-%20Managing&terms=Getting%20started%20-%20Managing) on docs.microsoft.com.
-Additional code samples for different Azure services are available at [Samples Repo](https://github.com/Azure-Samples/azure-samples-python-management/tree/main/samples/advisor)
+- Python 3.8+ is required to use this package.
+- [Azure subscription](https://azure.microsoft.com/free/)
+### Install the package
-# Provide Feedback
+```bash
+pip install azure-mgmt-advisor
+pip install azure-identity
+```
+
+### Authentication
+
+By default, [Azure Active Directory](https://aka.ms/awps/aad) token authentication depends on correct configure of following environment variables.
+
+- `AZURE_CLIENT_ID` for Azure client ID.
+- `AZURE_TENANT_ID` for Azure tenant ID.
+- `AZURE_CLIENT_SECRET` for Azure client secret.
+
+In addition, Azure subscription ID can be configured via environment variable `AZURE_SUBSCRIPTION_ID`.
+
+With above configuration, client can be authenticated by following code:
+
+```python
+from azure.identity import DefaultAzureCredential
+from azure.mgmt.advisor import AdvisorManagementClient
+import os
+
+sub_id = os.getenv("AZURE_SUBSCRIPTION_ID")
+client = AdvisorManagementClient(credential=DefaultAzureCredential(), subscription_id=sub_id)
+```
+
+## Examples
+
+Code samples for this package can be found at:
+- [Search Advisor](https://docs.microsoft.com/samples/browse/?languages=python&term=Getting%20started%20-%20Managing&terms=Getting%20started%20-%20Managing) on docs.microsoft.com
+- [Azure Python Mgmt SDK Samples Repo](https://aka.ms/azsdk/python/mgmt/samples)
+
+
+## Troubleshooting
+
+## Next steps
+
+## Provide Feedback
If you encounter any bugs or have suggestions, please file an issue in the
[Issues](https://github.com/Azure/azure-sdk-for-python/issues)
section of the project.
-
-
-
diff --git a/sdk/advisor/azure-mgmt-advisor/_meta.json b/sdk/advisor/azure-mgmt-advisor/_meta.json
index 82f0df423b5e..5e1fde0c9485 100644
--- a/sdk/advisor/azure-mgmt-advisor/_meta.json
+++ b/sdk/advisor/azure-mgmt-advisor/_meta.json
@@ -1,11 +1,11 @@
{
- "commit": "e82a24def11ffc98cc263884f9f1742c99f2df5e",
+ "commit": "ffabf1ad2f9c3d409ac7af51d02a6f764f5a6ef7",
"repository_url": "https://github.com/Azure/azure-rest-api-specs",
- "autorest": "3.9.2",
+ "autorest": "3.10.2",
"use": [
- "@autorest/python@6.2.1",
- "@autorest/modelerfour@4.24.3"
+ "@autorest/python@6.19.0",
+ "@autorest/modelerfour@4.27.0"
],
- "autorest_command": "autorest specification/advisor/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 --tag=package-2020-01 --use=@autorest/python@6.2.1 --use=@autorest/modelerfour@4.24.3 --version=3.9.2 --version-tolerant=False",
+ "autorest_command": "autorest specification/advisor/resource-manager/readme.md --generate-sample=True --generate-test=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.19.0 --use=@autorest/modelerfour@4.27.0 --version=3.10.2 --version-tolerant=False",
"readme": "specification/advisor/resource-manager/readme.md"
}
\ No newline at end of file
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/__init__.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/__init__.py
index 805d1e4cecc0..34f0e016fe7d 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/__init__.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/__init__.py
@@ -13,7 +13,7 @@
try:
from ._patch import __all__ as _patch_all
- from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import
+ from ._patch import * # pylint: disable=unused-wildcard-import
except ImportError:
_patch_all = []
from ._patch import patch_sdk as _patch_sdk
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_advisor_management_client.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_advisor_management_client.py
index 1289e7e6bc0f..c66246ddfba0 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_advisor_management_client.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_advisor_management_client.py
@@ -8,14 +8,19 @@
from copy import deepcopy
from typing import Any, TYPE_CHECKING
+from typing_extensions import Self
+from azure.core.pipeline import policies
from azure.core.rest import HttpRequest, HttpResponse
from azure.mgmt.core import ARMPipelineClient
+from azure.mgmt.core.policies import ARMAutoResourceProviderRegistrationPolicy
-from . import models
+from . import models as _models
from ._configuration import AdvisorManagementClientConfiguration
from ._serialization import Deserializer, Serializer
from .operations import (
+ AdvisorManagementClientOperationsMixin,
+ AdvisorScoresOperations,
ConfigurationsOperations,
Operations,
RecommendationMetadataOperations,
@@ -28,7 +33,9 @@
from azure.core.credentials import TokenCredential
-class AdvisorManagementClient: # pylint: disable=client-accepts-api-version-keyword
+class AdvisorManagementClient(
+ AdvisorManagementClientOperationsMixin
+): # pylint: disable=client-accepts-api-version-keyword,too-many-instance-attributes
"""REST APIs for Azure Advisor.
:ivar recommendation_metadata: RecommendationMetadataOperations operations
@@ -42,13 +49,15 @@ class AdvisorManagementClient: # pylint: disable=client-accepts-api-version-key
:vartype operations: azure.mgmt.advisor.operations.Operations
:ivar suppressions: SuppressionsOperations operations
:vartype suppressions: azure.mgmt.advisor.operations.SuppressionsOperations
+ :ivar advisor_scores: AdvisorScoresOperations operations
+ :vartype advisor_scores: azure.mgmt.advisor.operations.AdvisorScoresOperations
:param credential: Credential needed for the client to connect to Azure. Required.
:type credential: ~azure.core.credentials.TokenCredential
:param subscription_id: The Azure subscription ID. Required.
:type subscription_id: str
:param base_url: Service URL. Default value is "https://management.azure.com".
:type base_url: str
- :keyword api_version: Api Version. Default value is "2020-01-01". Note that overriding this
+ :keyword api_version: Api Version. Default value is "2023-01-01". Note that overriding this
default value may result in unsupported behavior.
:paramtype api_version: str
"""
@@ -63,9 +72,27 @@ def __init__(
self._config = AdvisorManagementClientConfiguration(
credential=credential, subscription_id=subscription_id, **kwargs
)
- self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs)
-
- client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
+ _policies = kwargs.pop("policies", None)
+ if _policies is None:
+ _policies = [
+ policies.RequestIdPolicy(**kwargs),
+ self._config.headers_policy,
+ self._config.user_agent_policy,
+ self._config.proxy_policy,
+ policies.ContentDecodePolicy(**kwargs),
+ ARMAutoResourceProviderRegistrationPolicy(),
+ self._config.redirect_policy,
+ self._config.retry_policy,
+ self._config.authentication_policy,
+ self._config.custom_hook_policy,
+ self._config.logging_policy,
+ policies.DistributedTracingPolicy(**kwargs),
+ policies.SensitiveHeaderCleanupPolicy(**kwargs) if self._config.redirect_policy else None,
+ self._config.http_logging_policy,
+ ]
+ self._client: ARMPipelineClient = ARMPipelineClient(base_url=base_url, policies=_policies, **kwargs)
+
+ client_models = {k: v for k, v in _models.__dict__.items() if isinstance(v, type)}
self._serialize = Serializer(client_models)
self._deserialize = Deserializer(client_models)
self._serialize.client_side_validation = False
@@ -76,8 +103,9 @@ def __init__(
self.recommendations = RecommendationsOperations(self._client, self._config, self._serialize, self._deserialize)
self.operations = Operations(self._client, self._config, self._serialize, self._deserialize)
self.suppressions = SuppressionsOperations(self._client, self._config, self._serialize, self._deserialize)
+ self.advisor_scores = AdvisorScoresOperations(self._client, self._config, self._serialize, self._deserialize)
- def _send_request(self, request: HttpRequest, **kwargs: Any) -> HttpResponse:
+ def _send_request(self, request: HttpRequest, *, stream: bool = False, **kwargs: Any) -> HttpResponse:
"""Runs the network request through the client's chained policies.
>>> from azure.core.rest import HttpRequest
@@ -97,17 +125,14 @@ def _send_request(self, request: HttpRequest, **kwargs: Any) -> HttpResponse:
request_copy = deepcopy(request)
request_copy.url = self._client.format_url(request_copy.url)
- return self._client.send_request(request_copy, **kwargs)
+ return self._client.send_request(request_copy, stream=stream, **kwargs) # type: ignore
- def close(self):
- # type: () -> None
+ def close(self) -> None:
self._client.close()
- def __enter__(self):
- # type: () -> AdvisorManagementClient
+ def __enter__(self) -> Self:
self._client.__enter__()
return self
- def __exit__(self, *exc_details):
- # type: (Any) -> None
+ def __exit__(self, *exc_details: Any) -> None:
self._client.__exit__(*exc_details)
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_configuration.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_configuration.py
index 4de48238dff3..f7c2c503cc7f 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_configuration.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_configuration.py
@@ -6,26 +6,19 @@
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------
-import sys
from typing import Any, TYPE_CHECKING
-from azure.core.configuration import Configuration
from azure.core.pipeline import policies
from azure.mgmt.core.policies import ARMChallengeAuthenticationPolicy, ARMHttpLoggingPolicy
from ._version import VERSION
-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
-
if TYPE_CHECKING:
# pylint: disable=unused-import,ungrouped-imports
from azure.core.credentials import TokenCredential
-class AdvisorManagementClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes
+class AdvisorManagementClientConfiguration: # pylint: disable=too-many-instance-attributes,name-too-long
"""Configuration for AdvisorManagementClient.
Note that all parameters used to create this instance are saved as instance
@@ -35,14 +28,13 @@ class AdvisorManagementClientConfiguration(Configuration): # pylint: disable=to
:type credential: ~azure.core.credentials.TokenCredential
:param subscription_id: The Azure subscription ID. Required.
:type subscription_id: str
- :keyword api_version: Api Version. Default value is "2020-01-01". Note that overriding this
+ :keyword api_version: Api Version. Default value is "2023-01-01". Note that overriding this
default value may result in unsupported behavior.
:paramtype api_version: str
"""
def __init__(self, credential: "TokenCredential", subscription_id: str, **kwargs: Any) -> None:
- super(AdvisorManagementClientConfiguration, self).__init__(**kwargs)
- api_version = kwargs.pop("api_version", "2020-01-01") # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", "2023-01-01")
if credential is None:
raise ValueError("Parameter 'credential' must not be None.")
@@ -54,20 +46,18 @@ def __init__(self, credential: "TokenCredential", subscription_id: str, **kwargs
self.api_version = api_version
self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"])
kwargs.setdefault("sdk_moniker", "mgmt-advisor/{}".format(VERSION))
+ self.polling_interval = kwargs.get("polling_interval", 30)
self._configure(**kwargs)
- def _configure(
- self, **kwargs # type: Any
- ):
- # type: (...) -> None
+ def _configure(self, **kwargs: Any) -> None:
self.user_agent_policy = kwargs.get("user_agent_policy") or policies.UserAgentPolicy(**kwargs)
self.headers_policy = kwargs.get("headers_policy") or policies.HeadersPolicy(**kwargs)
self.proxy_policy = kwargs.get("proxy_policy") or policies.ProxyPolicy(**kwargs)
self.logging_policy = kwargs.get("logging_policy") or policies.NetworkTraceLoggingPolicy(**kwargs)
self.http_logging_policy = kwargs.get("http_logging_policy") or ARMHttpLoggingPolicy(**kwargs)
- self.retry_policy = kwargs.get("retry_policy") or policies.RetryPolicy(**kwargs)
self.custom_hook_policy = kwargs.get("custom_hook_policy") or policies.CustomHookPolicy(**kwargs)
self.redirect_policy = kwargs.get("redirect_policy") or policies.RedirectPolicy(**kwargs)
+ self.retry_policy = kwargs.get("retry_policy") or policies.RetryPolicy(**kwargs)
self.authentication_policy = kwargs.get("authentication_policy")
if self.credential and not self.authentication_policy:
self.authentication_policy = ARMChallengeAuthenticationPolicy(
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_serialization.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_serialization.py
index 7c1dedb5133d..8139854b97bb 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_serialization.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_serialization.py
@@ -25,6 +25,7 @@
# --------------------------------------------------------------------------
# pylint: skip-file
+# pyright: reportUnnecessaryTypeIgnoreComment=false
from base64 import b64decode, b64encode
import calendar
@@ -37,23 +38,38 @@
import re
import sys
import codecs
+from typing import (
+ Dict,
+ Any,
+ cast,
+ Optional,
+ Union,
+ AnyStr,
+ IO,
+ Mapping,
+ Callable,
+ TypeVar,
+ MutableMapping,
+ Type,
+ List,
+ Mapping,
+)
try:
from urllib import quote # type: ignore
except ImportError:
- from urllib.parse import quote # type: ignore
+ from urllib.parse import quote
import xml.etree.ElementTree as ET
-import isodate
+import isodate # type: ignore
-from typing import Dict, Any, cast, TYPE_CHECKING
-
-from azure.core.exceptions import DeserializationError, SerializationError, raise_with_traceback
+from azure.core.exceptions import DeserializationError, SerializationError
+from azure.core.serialization import NULL as CoreNull
_BOM = codecs.BOM_UTF8.decode(encoding="utf-8")
-if TYPE_CHECKING:
- from typing import Optional, Union, AnyStr, IO, Mapping
+ModelType = TypeVar("ModelType", bound="Model")
+JSON = MutableMapping[str, Any]
class RawDeserializer:
@@ -65,8 +81,7 @@ class RawDeserializer:
CONTEXT_NAME = "deserialized_data"
@classmethod
- def deserialize_from_text(cls, data, content_type=None):
- # type: (Optional[Union[AnyStr, IO]], Optional[str]) -> Any
+ def deserialize_from_text(cls, data: Optional[Union[AnyStr, IO]], content_type: Optional[str] = None) -> Any:
"""Decode data according to content-type.
Accept a stream of data as well, but will be load at once in memory for now.
@@ -109,7 +124,7 @@ def deserialize_from_text(cls, data, content_type=None):
pass
return ET.fromstring(data_as_str) # nosec
- except ET.ParseError:
+ except ET.ParseError as err:
# It might be because the server has an issue, and returned JSON with
# content-type XML....
# So let's try a JSON load, and if it's still broken
@@ -128,12 +143,13 @@ def _json_attemp(data):
# The function hack is because Py2.7 messes up with exception
# context otherwise.
_LOGGER.critical("Wasn't XML not JSON, failing")
- raise_with_traceback(DeserializationError, "XML is invalid")
+ raise DeserializationError("XML is invalid") from err
+ elif content_type.startswith("text/"):
+ return data_as_str
raise DeserializationError("Cannot deserialize content-type: {}".format(content_type))
@classmethod
- def deserialize_from_http_generics(cls, body_bytes, headers):
- # type: (Optional[Union[AnyStr, IO]], Mapping) -> Any
+ def deserialize_from_http_generics(cls, body_bytes: Optional[Union[AnyStr, IO]], headers: Mapping) -> Any:
"""Deserialize from HTTP response.
Use bytes and headers to NOT use any requests/aiohttp or whatever
@@ -156,13 +172,6 @@ def deserialize_from_http_generics(cls, body_bytes, headers):
return None
-try:
- basestring # type: ignore
- unicode_str = unicode # type: ignore
-except NameError:
- basestring = str # type: ignore
- unicode_str = str # type: ignore
-
_LOGGER = logging.getLogger(__name__)
try:
@@ -188,7 +197,7 @@ def dst(self, dt):
try:
- from datetime import timezone as _FixedOffset
+ from datetime import timezone as _FixedOffset # type: ignore
except ImportError: # Python 2.7
class _FixedOffset(datetime.tzinfo): # type: ignore
@@ -219,7 +228,7 @@ def __getinitargs__(self):
try:
from datetime import timezone
- TZ_UTC = timezone.utc # type: ignore
+ TZ_UTC = timezone.utc
except ImportError:
TZ_UTC = UTC() # type: ignore
@@ -276,12 +285,12 @@ class Model(object):
serialization and deserialization.
"""
- _subtype_map = {} # type: Dict[str, Dict[str, Any]]
- _attribute_map = {} # type: Dict[str, Dict[str, Any]]
- _validation = {} # type: Dict[str, Dict[str, Any]]
+ _subtype_map: Dict[str, Dict[str, Any]] = {}
+ _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: Optional[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__)
@@ -290,27 +299,27 @@ 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
+ cls._xml_map # type: ignore
except AttributeError:
return False
return True
@@ -319,14 +328,14 @@ def is_xml_model(cls):
def _create_xml_node(cls):
"""Create XML node."""
try:
- xml_map = cls._xml_map
+ xml_map = cls._xml_map # type: ignore
except AttributeError:
xml_map = {}
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):
- """Return the JSON that would be sent to azure from this model.
+ def serialize(self, keep_readonly: bool = False, **kwargs: Any) -> JSON:
+ """Return the JSON that would be sent to server from this model.
This is an alias to `as_dict(full_restapi_key_transformer, keep_readonly=False)`.
@@ -337,10 +346,15 @@ def serialize(self, keep_readonly=False, **kwargs):
:rtype: dict
"""
serializer = Serializer(self._infer_class_models())
- return serializer._serialize(self, keep_readonly=keep_readonly, **kwargs)
+ return serializer._serialize(self, keep_readonly=keep_readonly, **kwargs) # type: ignore
- 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:
@@ -371,7 +385,7 @@ def my_key_transformer(key, attr_desc, value):
:rtype: dict
"""
serializer = Serializer(self._infer_class_models())
- return serializer._serialize(self, key_transformer=key_transformer, keep_readonly=keep_readonly, **kwargs)
+ return serializer._serialize(self, key_transformer=key_transformer, keep_readonly=keep_readonly, **kwargs) # type: ignore
@classmethod
def _infer_class_models(cls):
@@ -387,7 +401,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,10 +410,15 @@ def deserialize(cls, data, content_type=None):
:raises: DeserializationError if something went wrong
"""
deserializer = Deserializer(cls._infer_class_models())
- return deserializer(cls.__name__, data, content_type=content_type)
+ return deserializer(cls.__name__, data, content_type=content_type) # type: ignore
@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
@@ -412,8 +431,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,
@@ -421,7 +440,7 @@ def from_dict(cls, data, key_extractors=None, content_type=None):
if key_extractors is None
else key_extractors
)
- return deserializer(cls.__name__, data, content_type=content_type)
+ return deserializer(cls.__name__, data, content_type=content_type) # type: ignore
@classmethod
def _flatten_subtype(cls, key, objects):
@@ -453,7 +472,7 @@ def _classify(cls, response, objects):
return cls
flatten_mapping_type = cls._flatten_subtype(subtype_key, objects)
try:
- return objects[flatten_mapping_type[subtype_value]]
+ return objects[flatten_mapping_type[subtype_value]] # type: ignore
except KeyError:
_LOGGER.warning(
"Subtype value %s has no mapping, use base class %s.",
@@ -521,7 +540,7 @@ class Serializer(object):
"multiple": lambda x, y: x % y != 0,
}
- def __init__(self, classes=None):
+ def __init__(self, classes: Optional[Mapping[str, type]] = None):
self.serialize_type = {
"iso-8601": Serializer.serialize_iso,
"rfc-1123": Serializer.serialize_rfc,
@@ -537,7 +556,7 @@ def __init__(self, classes=None):
"[]": self.serialize_iter,
"{}": self.serialize_dict,
}
- self.dependencies = dict(classes) if classes else {}
+ self.dependencies: Dict[str, type] = dict(classes) if classes else {}
self.key_transformer = full_restapi_key_transformer
self.client_side_validation = True
@@ -605,14 +624,14 @@ def _serialize(self, target_obj, data_type=None, **kwargs):
if xml_desc.get("attr", False):
if xml_ns:
ET.register_namespace(xml_prefix, xml_ns)
- xml_name = "{}{}".format(xml_ns, xml_name)
- serialized.set(xml_name, new_attr)
+ xml_name = "{{{}}}{}".format(xml_ns, xml_name)
+ serialized.set(xml_name, new_attr) # type: ignore
continue
if xml_desc.get("text", False):
- serialized.text = new_attr
+ serialized.text = new_attr # type: ignore
continue
if isinstance(new_attr, list):
- serialized.extend(new_attr)
+ serialized.extend(new_attr) # type: ignore
elif isinstance(new_attr, ET.Element):
# If the down XML has no XML/Name, we MUST replace the tag with the local tag. But keeping the namespaces.
if "name" not in getattr(orig_attr, "_xml_map", {}):
@@ -621,30 +640,30 @@ def _serialize(self, target_obj, data_type=None, **kwargs):
new_attr.tag = "}".join([splitted_tag[0], xml_name])
else:
new_attr.tag = xml_name
- serialized.append(new_attr)
+ serialized.append(new_attr) # type: ignore
else: # That's a basic type
# Integrate namespace if necessary
local_node = _create_xml_node(xml_name, xml_prefix, xml_ns)
- local_node.text = unicode_str(new_attr)
- serialized.append(local_node)
+ local_node.text = str(new_attr)
+ serialized.append(local_node) # type: ignore
else: # JSON
- for k in reversed(keys):
- unflattened = {k: new_attr}
- new_attr = unflattened
+ for k in reversed(keys): # type: ignore
+ new_attr = {k: new_attr}
_new_attr = new_attr
_serialized = serialized
- for k in keys:
+ for k in keys: # type: ignore
if k not in _serialized:
- _serialized.update(_new_attr)
- _new_attr = _new_attr[k]
+ _serialized.update(_new_attr) # type: ignore
+ _new_attr = _new_attr[k] # type: ignore
_serialized = _serialized[k]
- except ValueError:
- continue
+ except ValueError as err:
+ if isinstance(err, SerializationError):
+ raise
except (AttributeError, KeyError, TypeError) as err:
msg = "Attribute {} in object {} cannot be serialized.\n{}".format(attr_name, class_name, str(target_obj))
- raise_with_traceback(SerializationError, msg, err)
+ raise SerializationError(msg) from err
else:
return serialized
@@ -659,8 +678,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:
@@ -675,7 +694,7 @@ def body(self, data, data_type, **kwargs):
# We're not able to deal with additional properties for now.
deserializer.additional_properties_detection = False
if is_xml_model_serialization:
- deserializer.key_extractors = [
+ deserializer.key_extractors = [ # type: ignore
attribute_key_case_insensitive_extractor,
]
else:
@@ -686,7 +705,7 @@ def body(self, data, data_type, **kwargs):
]
data = deserializer._deserialize(data_type, data)
except DeserializationError as err:
- raise_with_traceback(SerializationError, "Unable to build a model: " + str(err), err)
+ raise SerializationError("Unable to build a model: " + str(err)) from err
return self._serialize(data, data_type, **kwargs)
@@ -706,6 +725,7 @@ def url(self, name, data, data_type, **kwargs):
if kwargs.get("skip_quote") is True:
output = str(output)
+ output = output.replace("{", quote("{")).replace("}", quote("}"))
else:
output = quote(str(output), safe="")
except SerializationError:
@@ -718,7 +738,9 @@ def query(self, name, data, data_type, **kwargs):
:param data: The data to be serialized.
:param str data_type: The type to be serialized from.
- :rtype: str
+ :keyword bool skip_quote: Whether to skip quote the serialized result.
+ Defaults to False.
+ :rtype: str, list
:raises: TypeError if serialization fails.
:raises: ValueError if data is None
"""
@@ -726,10 +748,8 @@ def query(self, name, data, data_type, **kwargs):
# Treat the list aside, since we don't want to encode the div separator
if data_type.startswith("["):
internal_data_type = data_type[1:-1]
- data = [self.serialize_data(d, internal_data_type, **kwargs) if d is not None else "" for d in data]
- if not kwargs.get("skip_quote", False):
- data = [quote(str(d), safe="") for d in data]
- return str(self.serialize_iter(data, internal_data_type, **kwargs))
+ do_quote = not kwargs.get("skip_quote", False)
+ return self.serialize_iter(data, internal_data_type, do_quote=do_quote, **kwargs)
# Not a list, regular serialization
output = self.serialize_data(data, data_type, **kwargs)
@@ -780,6 +800,8 @@ def serialize_data(self, data, data_type, **kwargs):
raise ValueError("No value for given attribute")
try:
+ if data is CoreNull:
+ return None
if data_type in self.basic_types.values():
return self.serialize_basic(data, data_type, **kwargs)
@@ -798,7 +820,7 @@ def serialize_data(self, data, data_type, **kwargs):
except (ValueError, TypeError) as err:
msg = "Unable to serialize value: {!r} as type: {!r}."
- raise_with_traceback(SerializationError, msg.format(data, data_type), err)
+ raise SerializationError(msg.format(data, data_type)) from err
else:
return self._serialize(data, **kwargs)
@@ -843,7 +865,7 @@ def serialize_unicode(cls, data):
pass
try:
- if isinstance(data, unicode):
+ if isinstance(data, unicode): # type: ignore
# Don't change it, JSON and XML ElementTree are totally able
# to serialize correctly u'' strings
return data
@@ -866,6 +888,8 @@ def serialize_iter(self, data, iter_type, div=None, **kwargs):
not be None or empty.
:param str div: If set, this str will be used to combine the elements
in the iterable into a combined string. Default is 'None'.
+ :keyword bool do_quote: Whether to quote the serialized result of each iterable element.
+ Defaults to False.
:rtype: list, str
"""
if isinstance(data, str):
@@ -878,9 +902,14 @@ def serialize_iter(self, data, iter_type, div=None, **kwargs):
for d in data:
try:
serialized.append(self.serialize_data(d, iter_type, **kwargs))
- except ValueError:
+ except ValueError as err:
+ if isinstance(err, SerializationError):
+ raise
serialized.append(None)
+ if kwargs.get("do_quote", False):
+ serialized = ["" if s is None else quote(str(s), safe="") for s in serialized]
+
if div:
serialized = ["" if s is None else str(s) for s in serialized]
serialized = div.join(serialized)
@@ -925,7 +954,9 @@ def serialize_dict(self, attr, dict_type, **kwargs):
for key, value in attr.items():
try:
serialized[self.serialize_unicode(key)] = self.serialize_data(value, dict_type, **kwargs)
- except ValueError:
+ except ValueError as err:
+ if isinstance(err, SerializationError):
+ raise
serialized[self.serialize_unicode(key)] = None
if "xml" in serialization_ctxt:
@@ -958,7 +989,7 @@ def serialize_object(self, attr, **kwargs):
return self.serialize_basic(attr, self.basic_types[obj_type], **kwargs)
if obj_type is _long_type:
return self.serialize_long(attr)
- if obj_type is unicode_str:
+ if obj_type is str:
return self.serialize_unicode(attr)
if obj_type is datetime.datetime:
return self.serialize_iso(attr)
@@ -1001,10 +1032,10 @@ def serialize_enum(attr, enum_obj=None):
except AttributeError:
result = attr
try:
- enum_obj(result)
+ enum_obj(result) # type: ignore
return result
except ValueError:
- for enum_value in enum_obj:
+ for enum_value in enum_obj: # type: ignore
if enum_value.value.lower() == str(attr).lower():
return enum_value.value
error = "{!r} is not valid value for enum {!r}"
@@ -1135,10 +1166,10 @@ def serialize_iso(attr, **kwargs):
return date + microseconds + "Z"
except (ValueError, OverflowError) as err:
msg = "Unable to serialize datetime object."
- raise_with_traceback(SerializationError, msg, err)
+ raise SerializationError(msg) from err
except AttributeError as err:
msg = "ISO-8601 object must be valid Datetime object."
- raise_with_traceback(TypeError, msg, err)
+ raise TypeError(msg) from err
@staticmethod
def serialize_unix(attr, **kwargs):
@@ -1164,7 +1195,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
@@ -1173,7 +1205,6 @@ def rest_key_extractor(attr, attr_desc, data):
if working_data is None:
# If at any point while following flatten JSON path see None, it means
# that all properties under are None as well
- # https://github.com/Azure/msrest-for-python/issues/197
return None
key = ".".join(dict_keys[1:])
@@ -1194,7 +1225,6 @@ def rest_key_case_insensitive_extractor(attr, attr_desc, data):
if working_data is None:
# If at any point while following flatten JSON path see None, it means
# that all properties under are None as well
- # https://github.com/Azure/msrest-for-python/issues/197
return None
key = ".".join(dict_keys[1:])
@@ -1245,7 +1275,7 @@ def _extract_name_from_internal_type(internal_type):
xml_name = internal_type_xml_map.get("name", internal_type.__name__)
xml_ns = internal_type_xml_map.get("ns", None)
if xml_ns:
- xml_name = "{}{}".format(xml_ns, xml_name)
+ xml_name = "{{{}}}{}".format(xml_ns, xml_name)
return xml_name
@@ -1269,7 +1299,7 @@ def xml_key_extractor(attr, attr_desc, data):
# Integrate namespace if necessary
xml_ns = xml_desc.get("ns", internal_type_xml_map.get("ns", None))
if xml_ns:
- xml_name = "{}{}".format(xml_ns, xml_name)
+ xml_name = "{{{}}}{}".format(xml_ns, xml_name)
# If it's an attribute, that's simple
if xml_desc.get("attr", False):
@@ -1335,7 +1365,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]] = None):
self.deserialize_type = {
"iso-8601": Deserializer.deserialize_iso,
"rfc-1123": Deserializer.deserialize_rfc,
@@ -1355,7 +1385,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] = 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
@@ -1408,15 +1438,15 @@ def _deserialize(self, target_obj, data):
response, class_name = self._classify_target(target_obj, data)
- if isinstance(response, basestring):
+ if isinstance(response, str):
return self.deserialize_data(data, response)
elif isinstance(response, type) and issubclass(response, Enum):
return self.deserialize_enum(data, response)
- if data is None:
+ if data is None or data is CoreNull:
return data
try:
- attributes = response._attribute_map
+ attributes = response._attribute_map # type: ignore
d_attrs = {}
for attr, attr_desc in attributes.items():
# Check empty string. If it's not empty, someone has a real "additionalProperties"...
@@ -1444,8 +1474,8 @@ def _deserialize(self, target_obj, data):
value = self.deserialize_data(raw_value, attr_desc["type"])
d_attrs[attr] = value
except (AttributeError, TypeError, KeyError) as err:
- msg = "Unable to deserialize to object: " + class_name
- raise_with_traceback(DeserializationError, msg, err)
+ msg = "Unable to deserialize to object: " + class_name # type: ignore
+ raise DeserializationError(msg) from err
else:
additional_properties = self._build_additional_properties(attributes, data)
return self._instantiate_model(response, d_attrs, additional_properties)
@@ -1474,22 +1504,22 @@ 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
- if isinstance(target, basestring):
+ if isinstance(target, str):
try:
target = self.dependencies[target]
except KeyError:
return target, target
try:
- target = target._classify(data, self.dependencies)
+ target = target._classify(data, self.dependencies) # type: ignore
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,
@@ -1499,7 +1529,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:
@@ -1542,8 +1572,8 @@ def _unpack_content(raw_data, content_type=None):
if hasattr(raw_data, "_content_consumed"):
return RawDeserializer.deserialize_from_http_generics(raw_data.text, raw_data.headers)
- if isinstance(raw_data, (basestring, bytes)) or hasattr(raw_data, "read"):
- return RawDeserializer.deserialize_from_text(raw_data, content_type)
+ if isinstance(raw_data, (str, bytes)) or hasattr(raw_data, "read"):
+ return RawDeserializer.deserialize_from_text(raw_data, content_type) # type: ignore
return raw_data
def _instantiate_model(self, response, attrs, additional_properties=None):
@@ -1565,7 +1595,7 @@ def _instantiate_model(self, response, attrs, additional_properties=None):
response_obj.additional_properties = additional_properties
return response_obj
except TypeError as err:
- msg = "Unable to deserialize {} into model {}. ".format(kwargs, response)
+ msg = "Unable to deserialize {} into model {}. ".format(kwargs, response) # type: ignore
raise DeserializationError(msg + str(err))
else:
try:
@@ -1616,7 +1646,7 @@ def deserialize_data(self, data, data_type):
except (ValueError, TypeError, AttributeError) as err:
msg = "Unable to deserialize response data."
msg += " Data: {}, {}".format(data, data_type)
- raise_with_traceback(DeserializationError, msg, err)
+ raise DeserializationError(msg) from err
else:
return self._deserialize(obj_type, data)
@@ -1664,7 +1694,7 @@ def deserialize_object(self, attr, **kwargs):
if isinstance(attr, ET.Element):
# Do no recurse on XML, just return the tree as-is
return attr
- if isinstance(attr, basestring):
+ if isinstance(attr, str):
return self.deserialize_basic(attr, "str")
obj_type = type(attr)
if obj_type in self.basic_types:
@@ -1721,7 +1751,7 @@ def deserialize_basic(self, attr, data_type):
if data_type == "bool":
if attr in [True, False, 1, 0]:
return bool(attr)
- elif isinstance(attr, basestring):
+ elif isinstance(attr, str):
if attr.lower() in ["true", "1"]:
return True
elif attr.lower() in ["false", "0"]:
@@ -1747,7 +1777,7 @@ def deserialize_unicode(data):
# Consider this is real string
try:
- if isinstance(data, unicode):
+ if isinstance(data, unicode): # type: ignore
return data
except NameError:
return str(data)
@@ -1772,7 +1802,6 @@ def deserialize_enum(data, enum_obj):
data = data.value
if isinstance(data, int):
# Workaround. We might consider remove it in the future.
- # https://github.com/Azure/azure-rest-api-specs/issues/141
try:
return list(enum_obj.__members__.values())[data]
except IndexError:
@@ -1798,7 +1827,7 @@ def deserialize_bytearray(attr):
"""
if isinstance(attr, ET.Element):
attr = attr.text
- return bytearray(b64decode(attr))
+ return bytearray(b64decode(attr)) # type: ignore
@staticmethod
def deserialize_base64(attr):
@@ -1810,8 +1839,8 @@ def deserialize_base64(attr):
"""
if isinstance(attr, ET.Element):
attr = attr.text
- padding = "=" * (3 - (len(attr) + 3) % 4)
- attr = attr + padding
+ padding = "=" * (3 - (len(attr) + 3) % 4) # type: ignore
+ attr = attr + padding # type: ignore
encoded = attr.replace("-", "+").replace("_", "/")
return b64decode(encoded)
@@ -1826,10 +1855,10 @@ def deserialize_decimal(attr):
if isinstance(attr, ET.Element):
attr = attr.text
try:
- return decimal.Decimal(attr)
+ return decimal.Decimal(str(attr)) # type: ignore
except decimal.DecimalException as err:
msg = "Invalid decimal {}".format(attr)
- raise_with_traceback(DeserializationError, msg, err)
+ raise DeserializationError(msg) from err
@staticmethod
def deserialize_long(attr):
@@ -1841,7 +1870,7 @@ def deserialize_long(attr):
"""
if isinstance(attr, ET.Element):
attr = attr.text
- return _long_type(attr)
+ return _long_type(attr) # type: ignore
@staticmethod
def deserialize_duration(attr):
@@ -1857,7 +1886,7 @@ def deserialize_duration(attr):
duration = isodate.parse_duration(attr)
except (ValueError, OverflowError, AttributeError) as err:
msg = "Cannot deserialize duration object."
- raise_with_traceback(DeserializationError, msg, err)
+ raise DeserializationError(msg) from err
else:
return duration
@@ -1871,10 +1900,10 @@ def deserialize_date(attr):
"""
if isinstance(attr, ET.Element):
attr = attr.text
- if re.search(r"[^\W\d_]", attr, re.I + re.U):
+ if re.search(r"[^\W\d_]", attr, re.I + re.U): # type: ignore
raise DeserializationError("Date must have only digits and -. Received: %s" % attr)
# This must NOT use defaultmonth/defaultday. Using None ensure this raises an exception.
- return isodate.parse_date(attr, defaultmonth=None, defaultday=None)
+ return isodate.parse_date(attr, defaultmonth=0, defaultday=0)
@staticmethod
def deserialize_time(attr):
@@ -1886,7 +1915,7 @@ def deserialize_time(attr):
"""
if isinstance(attr, ET.Element):
attr = attr.text
- if re.search(r"[^\W\d_]", attr, re.I + re.U):
+ if re.search(r"[^\W\d_]", attr, re.I + re.U): # type: ignore
raise DeserializationError("Date must have only digits and -. Received: %s" % attr)
return isodate.parse_time(attr)
@@ -1901,7 +1930,7 @@ def deserialize_rfc(attr):
if isinstance(attr, ET.Element):
attr = attr.text
try:
- parsed_date = email.utils.parsedate_tz(attr)
+ parsed_date = email.utils.parsedate_tz(attr) # type: ignore
date_obj = datetime.datetime(
*parsed_date[:6], tzinfo=_FixedOffset(datetime.timedelta(minutes=(parsed_date[9] or 0) / 60))
)
@@ -1909,7 +1938,7 @@ def deserialize_rfc(attr):
date_obj = date_obj.astimezone(tz=TZ_UTC)
except ValueError as err:
msg = "Cannot deserialize to rfc datetime object."
- raise_with_traceback(DeserializationError, msg, err)
+ raise DeserializationError(msg) from err
else:
return date_obj
@@ -1924,7 +1953,7 @@ def deserialize_iso(attr):
if isinstance(attr, ET.Element):
attr = attr.text
try:
- attr = attr.upper()
+ attr = attr.upper() # type: ignore
match = Deserializer.valid_date.match(attr)
if not match:
raise ValueError("Invalid datetime string: " + attr)
@@ -1946,7 +1975,7 @@ def deserialize_iso(attr):
raise OverflowError("Hit max or min date")
except (ValueError, OverflowError, AttributeError) as err:
msg = "Cannot deserialize datetime object."
- raise_with_traceback(DeserializationError, msg, err)
+ raise DeserializationError(msg) from err
else:
return date_obj
@@ -1960,11 +1989,12 @@ def deserialize_unix(attr):
:raises: DeserializationError if format invalid
"""
if isinstance(attr, ET.Element):
- attr = int(attr.text)
+ attr = int(attr.text) # type: ignore
try:
+ attr = int(attr)
date_obj = datetime.datetime.fromtimestamp(attr, TZ_UTC)
except ValueError as err:
msg = "Cannot deserialize to unix datetime object."
- raise_with_traceback(DeserializationError, msg, err)
+ raise DeserializationError(msg) from err
else:
return date_obj
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_vendor.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_vendor.py
index 9aad73fc743e..b6125ade20c1 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_vendor.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_vendor.py
@@ -5,23 +5,22 @@
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------
-from azure.core.pipeline.transport import HttpRequest
+from abc import ABC
+from typing import TYPE_CHECKING
+from ._configuration import AdvisorManagementClientConfiguration
-def _convert_request(request, files=None):
- data = request.content if not files else None
- request = HttpRequest(method=request.method, url=request.url, headers=request.headers, data=data)
- if files:
- request.set_formdata_body(files)
- return request
+if TYPE_CHECKING:
+ # pylint: disable=unused-import,ungrouped-imports
+ from azure.core import PipelineClient
+ from ._serialization import Deserializer, Serializer
-def _format_url_section(template, **kwargs):
- components = template.split("/")
- while components:
- try:
- return template.format(**kwargs)
- except KeyError as key:
- formatted_components = template.split("/")
- components = [c for c in formatted_components if "{}".format(key.args[0]) not in c]
- template = "/".join(components)
+
+class AdvisorManagementClientMixinABC(ABC):
+ """DO NOT use this class. It is for internal typing use only."""
+
+ _client: "PipelineClient"
+ _config: AdvisorManagementClientConfiguration
+ _serialize: "Serializer"
+ _deserialize: "Deserializer"
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_version.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_version.py
index 79aaa33e5e04..6dddc002d43d 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_version.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/_version.py
@@ -6,4 +6,4 @@
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------
-VERSION = "10.0.0b1"
+VERSION = "9.0.0b1"
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/__init__.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/__init__.py
index 852c7d03af10..3b1040cbf0e9 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/__init__.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/__init__.py
@@ -10,7 +10,7 @@
try:
from ._patch import __all__ as _patch_all
- from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import
+ from ._patch import * # pylint: disable=unused-wildcard-import
except ImportError:
_patch_all = []
from ._patch import patch_sdk as _patch_sdk
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/_advisor_management_client.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/_advisor_management_client.py
index b77510adcd45..a417cd8de746 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/_advisor_management_client.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/_advisor_management_client.py
@@ -8,14 +8,19 @@
from copy import deepcopy
from typing import Any, Awaitable, TYPE_CHECKING
+from typing_extensions import Self
+from azure.core.pipeline import policies
from azure.core.rest import AsyncHttpResponse, HttpRequest
from azure.mgmt.core import AsyncARMPipelineClient
+from azure.mgmt.core.policies import AsyncARMAutoResourceProviderRegistrationPolicy
-from .. import models
+from .. import models as _models
from .._serialization import Deserializer, Serializer
from ._configuration import AdvisorManagementClientConfiguration
from .operations import (
+ AdvisorManagementClientOperationsMixin,
+ AdvisorScoresOperations,
ConfigurationsOperations,
Operations,
RecommendationMetadataOperations,
@@ -28,7 +33,9 @@
from azure.core.credentials_async import AsyncTokenCredential
-class AdvisorManagementClient: # pylint: disable=client-accepts-api-version-keyword
+class AdvisorManagementClient(
+ AdvisorManagementClientOperationsMixin
+): # pylint: disable=client-accepts-api-version-keyword,too-many-instance-attributes
"""REST APIs for Azure Advisor.
:ivar recommendation_metadata: RecommendationMetadataOperations operations
@@ -42,13 +49,15 @@ class AdvisorManagementClient: # pylint: disable=client-accepts-api-version-key
:vartype operations: azure.mgmt.advisor.aio.operations.Operations
:ivar suppressions: SuppressionsOperations operations
:vartype suppressions: azure.mgmt.advisor.aio.operations.SuppressionsOperations
+ :ivar advisor_scores: AdvisorScoresOperations operations
+ :vartype advisor_scores: azure.mgmt.advisor.aio.operations.AdvisorScoresOperations
:param credential: Credential needed for the client to connect to Azure. Required.
:type credential: ~azure.core.credentials_async.AsyncTokenCredential
:param subscription_id: The Azure subscription ID. Required.
:type subscription_id: str
:param base_url: Service URL. Default value is "https://management.azure.com".
:type base_url: str
- :keyword api_version: Api Version. Default value is "2020-01-01". Note that overriding this
+ :keyword api_version: Api Version. Default value is "2023-01-01". Note that overriding this
default value may result in unsupported behavior.
:paramtype api_version: str
"""
@@ -63,9 +72,27 @@ def __init__(
self._config = AdvisorManagementClientConfiguration(
credential=credential, subscription_id=subscription_id, **kwargs
)
- self._client = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs)
-
- client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
+ _policies = kwargs.pop("policies", None)
+ if _policies is None:
+ _policies = [
+ policies.RequestIdPolicy(**kwargs),
+ self._config.headers_policy,
+ self._config.user_agent_policy,
+ self._config.proxy_policy,
+ policies.ContentDecodePolicy(**kwargs),
+ AsyncARMAutoResourceProviderRegistrationPolicy(),
+ self._config.redirect_policy,
+ self._config.retry_policy,
+ self._config.authentication_policy,
+ self._config.custom_hook_policy,
+ self._config.logging_policy,
+ policies.DistributedTracingPolicy(**kwargs),
+ policies.SensitiveHeaderCleanupPolicy(**kwargs) if self._config.redirect_policy else None,
+ self._config.http_logging_policy,
+ ]
+ self._client: AsyncARMPipelineClient = AsyncARMPipelineClient(base_url=base_url, policies=_policies, **kwargs)
+
+ client_models = {k: v for k, v in _models.__dict__.items() if isinstance(v, type)}
self._serialize = Serializer(client_models)
self._deserialize = Deserializer(client_models)
self._serialize.client_side_validation = False
@@ -76,8 +103,11 @@ def __init__(
self.recommendations = RecommendationsOperations(self._client, self._config, self._serialize, self._deserialize)
self.operations = Operations(self._client, self._config, self._serialize, self._deserialize)
self.suppressions = SuppressionsOperations(self._client, self._config, self._serialize, self._deserialize)
+ self.advisor_scores = AdvisorScoresOperations(self._client, self._config, self._serialize, self._deserialize)
- def _send_request(self, request: HttpRequest, **kwargs: Any) -> Awaitable[AsyncHttpResponse]:
+ def _send_request(
+ self, request: HttpRequest, *, stream: bool = False, **kwargs: Any
+ ) -> Awaitable[AsyncHttpResponse]:
"""Runs the network request through the client's chained policies.
>>> from azure.core.rest import HttpRequest
@@ -97,14 +127,14 @@ def _send_request(self, request: HttpRequest, **kwargs: Any) -> Awaitable[AsyncH
request_copy = deepcopy(request)
request_copy.url = self._client.format_url(request_copy.url)
- return self._client.send_request(request_copy, **kwargs)
+ return self._client.send_request(request_copy, stream=stream, **kwargs) # type: ignore
async def close(self) -> None:
await self._client.close()
- async def __aenter__(self) -> "AdvisorManagementClient":
+ async def __aenter__(self) -> Self:
await self._client.__aenter__()
return self
- async def __aexit__(self, *exc_details) -> None:
+ async def __aexit__(self, *exc_details: Any) -> None:
await self._client.__aexit__(*exc_details)
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/_configuration.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/_configuration.py
index cdd2501f72d3..7042708d9c8f 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/_configuration.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/_configuration.py
@@ -6,26 +6,19 @@
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------
-import sys
from typing import Any, TYPE_CHECKING
-from azure.core.configuration import Configuration
from azure.core.pipeline import policies
from azure.mgmt.core.policies import ARMHttpLoggingPolicy, AsyncARMChallengeAuthenticationPolicy
from .._version import VERSION
-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
-
if TYPE_CHECKING:
# pylint: disable=unused-import,ungrouped-imports
from azure.core.credentials_async import AsyncTokenCredential
-class AdvisorManagementClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes
+class AdvisorManagementClientConfiguration: # pylint: disable=too-many-instance-attributes,name-too-long
"""Configuration for AdvisorManagementClient.
Note that all parameters used to create this instance are saved as instance
@@ -35,14 +28,13 @@ class AdvisorManagementClientConfiguration(Configuration): # pylint: disable=to
:type credential: ~azure.core.credentials_async.AsyncTokenCredential
:param subscription_id: The Azure subscription ID. Required.
:type subscription_id: str
- :keyword api_version: Api Version. Default value is "2020-01-01". Note that overriding this
+ :keyword api_version: Api Version. Default value is "2023-01-01". Note that overriding this
default value may result in unsupported behavior.
:paramtype api_version: str
"""
def __init__(self, credential: "AsyncTokenCredential", subscription_id: str, **kwargs: Any) -> None:
- super(AdvisorManagementClientConfiguration, self).__init__(**kwargs)
- api_version = kwargs.pop("api_version", "2020-01-01") # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", "2023-01-01")
if credential is None:
raise ValueError("Parameter 'credential' must not be None.")
@@ -54,6 +46,7 @@ def __init__(self, credential: "AsyncTokenCredential", subscription_id: str, **k
self.api_version = api_version
self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"])
kwargs.setdefault("sdk_moniker", "mgmt-advisor/{}".format(VERSION))
+ self.polling_interval = kwargs.get("polling_interval", 30)
self._configure(**kwargs)
def _configure(self, **kwargs: Any) -> None:
@@ -62,9 +55,9 @@ def _configure(self, **kwargs: Any) -> None:
self.proxy_policy = kwargs.get("proxy_policy") or policies.ProxyPolicy(**kwargs)
self.logging_policy = kwargs.get("logging_policy") or policies.NetworkTraceLoggingPolicy(**kwargs)
self.http_logging_policy = kwargs.get("http_logging_policy") or ARMHttpLoggingPolicy(**kwargs)
- self.retry_policy = kwargs.get("retry_policy") or policies.AsyncRetryPolicy(**kwargs)
self.custom_hook_policy = kwargs.get("custom_hook_policy") or policies.CustomHookPolicy(**kwargs)
self.redirect_policy = kwargs.get("redirect_policy") or policies.AsyncRedirectPolicy(**kwargs)
+ self.retry_policy = kwargs.get("retry_policy") or policies.AsyncRetryPolicy(**kwargs)
self.authentication_policy = kwargs.get("authentication_policy")
if self.credential and not self.authentication_policy:
self.authentication_policy = AsyncARMChallengeAuthenticationPolicy(
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/_vendor.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/_vendor.py
new file mode 100644
index 000000000000..aa844398da49
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/_vendor.py
@@ -0,0 +1,26 @@
+# --------------------------------------------------------------------------
+# 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 abc import ABC
+from typing import TYPE_CHECKING
+
+from ._configuration import AdvisorManagementClientConfiguration
+
+if TYPE_CHECKING:
+ # pylint: disable=unused-import,ungrouped-imports
+ from azure.core import AsyncPipelineClient
+
+ from .._serialization import Deserializer, Serializer
+
+
+class AdvisorManagementClientMixinABC(ABC):
+ """DO NOT use this class. It is for internal typing use only."""
+
+ _client: "AsyncPipelineClient"
+ _config: AdvisorManagementClientConfiguration
+ _serialize: "Serializer"
+ _deserialize: "Deserializer"
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/__init__.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/__init__.py
index f1f93e70a274..fce734b9e911 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/__init__.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/__init__.py
@@ -11,9 +11,11 @@
from ._recommendations_operations import RecommendationsOperations
from ._operations import Operations
from ._suppressions_operations import SuppressionsOperations
+from ._advisor_management_client_operations import AdvisorManagementClientOperationsMixin
+from ._advisor_scores_operations import AdvisorScoresOperations
from ._patch import __all__ as _patch_all
-from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import
+from ._patch import * # pylint: disable=unused-wildcard-import
from ._patch import patch_sdk as _patch_sdk
__all__ = [
@@ -22,6 +24,8 @@
"RecommendationsOperations",
"Operations",
"SuppressionsOperations",
+ "AdvisorManagementClientOperationsMixin",
+ "AdvisorScoresOperations",
]
__all__.extend([p for p in _patch_all if p not in __all__])
_patch_sdk()
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_advisor_management_client_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_advisor_management_client_operations.py
new file mode 100644
index 000000000000..d918374ed085
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_advisor_management_client_operations.py
@@ -0,0 +1,143 @@
+# pylint: disable=too-many-lines,too-many-statements
+# 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 io import IOBase
+import sys
+from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload
+
+from azure.core.exceptions import (
+ ClientAuthenticationError,
+ HttpResponseError,
+ ResourceExistsError,
+ ResourceNotFoundError,
+ ResourceNotModifiedError,
+ map_error,
+)
+from azure.core.pipeline import PipelineResponse
+from azure.core.rest import AsyncHttpResponse, HttpRequest
+from azure.core.tracing.decorator_async import distributed_trace_async
+from azure.core.utils import case_insensitive_dict
+from azure.mgmt.core.exceptions import ARMErrorFormat
+
+from ... import models as _models
+from ...operations._advisor_management_client_operations import build_predict_request
+from .._vendor import AdvisorManagementClientMixinABC
+
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
+else:
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
+T = TypeVar("T")
+ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]]
+
+
+class AdvisorManagementClientOperationsMixin(AdvisorManagementClientMixinABC):
+
+ @overload
+ async def predict(
+ self, prediction_request: _models.PredictionRequest, *, content_type: str = "application/json", **kwargs: Any
+ ) -> _models.PredictionResponse:
+ """Predicts a recommendation.
+
+ Predicts a recommendation.
+
+ :param prediction_request: Parameters for predict recommendation. Required.
+ :type prediction_request: ~azure.mgmt.advisor.models.PredictionRequest
+ :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
+ Default value is "application/json".
+ :paramtype content_type: str
+ :return: PredictionResponse or the result of cls(response)
+ :rtype: ~azure.mgmt.advisor.models.PredictionResponse
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+
+ @overload
+ async def predict(
+ self, prediction_request: IO[bytes], *, content_type: str = "application/json", **kwargs: Any
+ ) -> _models.PredictionResponse:
+ """Predicts a recommendation.
+
+ Predicts a recommendation.
+
+ :param prediction_request: Parameters for predict recommendation. Required.
+ :type prediction_request: IO[bytes]
+ :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
+ Default value is "application/json".
+ :paramtype content_type: str
+ :return: PredictionResponse or the result of cls(response)
+ :rtype: ~azure.mgmt.advisor.models.PredictionResponse
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+
+ @distributed_trace_async
+ async def predict(
+ self, prediction_request: Union[_models.PredictionRequest, IO[bytes]], **kwargs: Any
+ ) -> _models.PredictionResponse:
+ """Predicts a recommendation.
+
+ Predicts a recommendation.
+
+ :param prediction_request: Parameters for predict recommendation. Is either a PredictionRequest
+ type or a IO[bytes] type. Required.
+ :type prediction_request: ~azure.mgmt.advisor.models.PredictionRequest or IO[bytes]
+ :return: PredictionResponse or the result of cls(response)
+ :rtype: ~azure.mgmt.advisor.models.PredictionResponse
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
+ 401: ClientAuthenticationError,
+ 404: ResourceNotFoundError,
+ 409: ResourceExistsError,
+ 304: ResourceNotModifiedError,
+ }
+ error_map.update(kwargs.pop("error_map", {}) or {})
+
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
+
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
+ cls: ClsType[_models.PredictionResponse] = kwargs.pop("cls", None)
+
+ content_type = content_type or "application/json"
+ _json = None
+ _content = None
+ if isinstance(prediction_request, (IOBase, bytes)):
+ _content = prediction_request
+ else:
+ _json = self._serialize.body(prediction_request, "PredictionRequest")
+
+ _request = build_predict_request(
+ subscription_id=self._config.subscription_id,
+ api_version=api_version,
+ content_type=content_type,
+ json=_json,
+ content=_content,
+ headers=_headers,
+ params=_params,
+ )
+ _request.url = self._client.format_url(_request.url)
+
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
+ _request, stream=_stream, **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.ArmErrorResponse, pipeline_response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = self._deserialize("PredictionResponse", pipeline_response.http_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {}) # type: ignore
+
+ return deserialized # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_advisor_scores_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_advisor_scores_operations.py
new file mode 100644
index 000000000000..cc8ecd6bf872
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_advisor_scores_operations.py
@@ -0,0 +1,155 @@
+# pylint: disable=too-many-lines,too-many-statements
+# 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, Optional, Type, TypeVar
+
+from azure.core.exceptions import (
+ ClientAuthenticationError,
+ HttpResponseError,
+ ResourceExistsError,
+ ResourceNotFoundError,
+ ResourceNotModifiedError,
+ map_error,
+)
+from azure.core.pipeline import PipelineResponse
+from azure.core.rest import AsyncHttpResponse, HttpRequest
+from azure.core.tracing.decorator_async import distributed_trace_async
+from azure.core.utils import case_insensitive_dict
+from azure.mgmt.core.exceptions import ARMErrorFormat
+
+from ... import models as _models
+from ...operations._advisor_scores_operations import build_get_request, build_list_request
+
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
+else:
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
+T = TypeVar("T")
+ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]]
+
+
+class AdvisorScoresOperations:
+ """
+ .. warning::
+ **DO NOT** instantiate this class directly.
+
+ Instead, you should access the following operations through
+ :class:`~azure.mgmt.advisor.aio.AdvisorManagementClient`'s
+ :attr:`advisor_scores` 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_async
+ async def list(self, **kwargs: Any) -> _models.AdvisorScoreResponse:
+ """Gets the list of advisor scores.
+
+ :return: AdvisorScoreResponse or the result of cls(response)
+ :rtype: ~azure.mgmt.advisor.models.AdvisorScoreResponse
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
+ 401: ClientAuthenticationError,
+ 404: ResourceNotFoundError,
+ 409: ResourceExistsError,
+ 304: ResourceNotModifiedError,
+ }
+ error_map.update(kwargs.pop("error_map", {}) or {})
+
+ _headers = kwargs.pop("headers", {}) or {}
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
+
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.AdvisorScoreResponse] = kwargs.pop("cls", None)
+
+ _request = build_list_request(
+ subscription_id=self._config.subscription_id,
+ api_version=api_version,
+ headers=_headers,
+ params=_params,
+ )
+ _request.url = self._client.format_url(_request.url)
+
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **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.ArmErrorResponse, pipeline_response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = self._deserialize("AdvisorScoreResponse", pipeline_response.http_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {}) # type: ignore
+
+ return deserialized # type: ignore
+
+ @distributed_trace_async
+ async def get(self, name: str, **kwargs: Any) -> _models.AdvisorScoreEntity:
+ """Gets the advisor score.
+
+ :param name: The scope of Advisor score entity. Required.
+ :type name: str
+ :return: AdvisorScoreEntity or the result of cls(response)
+ :rtype: ~azure.mgmt.advisor.models.AdvisorScoreEntity
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
+ 401: ClientAuthenticationError,
+ 404: ResourceNotFoundError,
+ 409: ResourceExistsError,
+ 304: ResourceNotModifiedError,
+ }
+ error_map.update(kwargs.pop("error_map", {}) or {})
+
+ _headers = kwargs.pop("headers", {}) or {}
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
+
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.AdvisorScoreEntity] = kwargs.pop("cls", None)
+
+ _request = build_get_request(
+ name=name,
+ subscription_id=self._config.subscription_id,
+ api_version=api_version,
+ headers=_headers,
+ params=_params,
+ )
+ _request.url = self._client.format_url(_request.url)
+
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **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.ArmErrorResponse, pipeline_response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = self._deserialize("AdvisorScoreEntity", pipeline_response.http_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {}) # type: ignore
+
+ return deserialized # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_configurations_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_configurations_operations.py
index 6e68b06fa2df..3cafbbd7d29e 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_configurations_operations.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_configurations_operations.py
@@ -1,4 +1,4 @@
-# pylint: disable=too-many-lines
+# pylint: disable=too-many-lines,too-many-statements
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
@@ -6,8 +6,9 @@
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------
+from io import IOBase
import sys
-from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, overload
+from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload
import urllib.parse
from azure.core.async_paging import AsyncItemPaged, AsyncList
@@ -20,15 +21,13 @@
map_error,
)
from azure.core.pipeline import PipelineResponse
-from azure.core.pipeline.transport import AsyncHttpResponse
-from azure.core.rest import HttpRequest
+from azure.core.rest import AsyncHttpResponse, HttpRequest
from azure.core.tracing.decorator import distributed_trace
from azure.core.tracing.decorator_async import distributed_trace_async
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._configurations_operations import (
build_create_in_resource_group_request,
build_create_in_subscription_request,
@@ -36,10 +35,10 @@
build_list_by_subscription_request,
)
-if sys.version_info >= (3, 8):
- from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
else:
- from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
T = TypeVar("T")
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]]
@@ -70,7 +69,6 @@ def list_by_subscription(self, **kwargs: Any) -> AsyncIterable["_models.ConfigDa
Retrieve Azure Advisor configurations and also retrieve configurations of contained resource
groups.
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either ConfigData or the result of cls(response)
:rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.advisor.models.ConfigData]
:raises ~azure.core.exceptions.HttpResponseError:
@@ -78,12 +76,10 @@ def list_by_subscription(self, **kwargs: Any) -> AsyncIterable["_models.ConfigDa
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ConfigurationListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.ConfigurationListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -94,15 +90,13 @@ def list_by_subscription(self, **kwargs: Any) -> AsyncIterable["_models.ConfigDa
def prepare_request(next_link=None):
if not next_link:
- request = build_list_by_subscription_request(
+ _request = build_list_by_subscription_request(
subscription_id=self._config.subscription_id,
api_version=api_version,
- template_url=self.list_by_subscription.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -114,26 +108,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
async def extract_data(pipeline_response):
deserialized = self._deserialize("ConfigurationListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ 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)
+ _request = prepare_request(next_link)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -146,8 +140,6 @@ async def get_next(next_link=None):
return AsyncItemPaged(get_next, extract_data)
- list_by_subscription.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/configurations"} # type: ignore
-
@overload
async def create_in_subscription(
self,
@@ -170,7 +162,6 @@ async def create_in_subscription(
:keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
@@ -180,7 +171,7 @@ async def create_in_subscription(
async def create_in_subscription(
self,
configuration_name: Union[str, _models.ConfigurationName],
- config_contract: IO,
+ config_contract: IO[bytes],
*,
content_type: str = "application/json",
**kwargs: Any
@@ -194,11 +185,10 @@ async def create_in_subscription(
Required.
:type configuration_name: str or ~azure.mgmt.advisor.models.ConfigurationName
:param config_contract: The Azure Advisor configuration data structure. Required.
- :type config_contract: IO
+ :type config_contract: IO[bytes]
:keyword content_type: Body Parameter content-type. Content type parameter for binary body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
@@ -208,7 +198,7 @@ async def create_in_subscription(
async def create_in_subscription(
self,
configuration_name: Union[str, _models.ConfigurationName],
- config_contract: Union[_models.ConfigData, IO],
+ config_contract: Union[_models.ConfigData, IO[bytes]],
**kwargs: Any
) -> _models.ConfigData:
"""Create/Overwrite Azure Advisor configuration.
@@ -219,18 +209,14 @@ async def create_in_subscription(
:param configuration_name: Advisor configuration name. Value must be 'default'. "default"
Required.
:type configuration_name: str or ~azure.mgmt.advisor.models.ConfigurationName
- :param config_contract: The Azure Advisor configuration data structure. Is either a model type
- or a IO type. Required.
- :type config_contract: ~azure.mgmt.advisor.models.ConfigData or IO
- :keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
- Default value is None.
- :paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
+ :param config_contract: The Azure Advisor configuration data structure. Is either a ConfigData
+ type or a IO[bytes] type. Required.
+ :type config_contract: ~azure.mgmt.advisor.models.ConfigData or IO[bytes]
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -241,36 +227,33 @@ async def create_in_subscription(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ConfigData]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
+ cls: ClsType[_models.ConfigData] = kwargs.pop("cls", None)
content_type = content_type or "application/json"
_json = None
_content = None
- if isinstance(config_contract, (IO, bytes)):
+ if isinstance(config_contract, (IOBase, bytes)):
_content = config_contract
else:
_json = self._serialize.body(config_contract, "ConfigData")
- request = build_create_in_subscription_request(
+ _request = build_create_in_subscription_request(
configuration_name=configuration_name,
subscription_id=self._config.subscription_id,
api_version=api_version,
content_type=content_type,
json=_json,
content=_content,
- template_url=self.create_in_subscription.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -280,14 +263,12 @@ async def create_in_subscription(
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("ConfigData", pipeline_response)
+ deserialized = self._deserialize("ConfigData", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
-
- return deserialized
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- create_in_subscription.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/configurations/{configurationName}"} # type: ignore
+ return deserialized # type: ignore
@distributed_trace
def list_by_resource_group(self, resource_group: str, **kwargs: Any) -> AsyncIterable["_models.ConfigData"]:
@@ -297,7 +278,6 @@ def list_by_resource_group(self, resource_group: str, **kwargs: Any) -> AsyncIte
:param resource_group: The name of the Azure resource group. Required.
:type resource_group: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either ConfigData or the result of cls(response)
:rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.advisor.models.ConfigData]
:raises ~azure.core.exceptions.HttpResponseError:
@@ -305,12 +285,10 @@ def list_by_resource_group(self, resource_group: str, **kwargs: Any) -> AsyncIte
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ConfigurationListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.ConfigurationListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -321,16 +299,14 @@ def list_by_resource_group(self, resource_group: str, **kwargs: Any) -> AsyncIte
def prepare_request(next_link=None):
if not next_link:
- request = build_list_by_resource_group_request(
+ _request = build_list_by_resource_group_request(
resource_group=resource_group,
subscription_id=self._config.subscription_id,
api_version=api_version,
- template_url=self.list_by_resource_group.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -342,26 +318,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
async def extract_data(pipeline_response):
deserialized = self._deserialize("ConfigurationListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ list_of_elem = cls(list_of_elem) # type: ignore
return None, AsyncList(list_of_elem)
async def get_next(next_link=None):
- request = prepare_request(next_link)
+ _request = prepare_request(next_link)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -374,8 +350,6 @@ async def get_next(next_link=None):
return AsyncItemPaged(get_next, extract_data)
- list_by_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Advisor/configurations"} # type: ignore
-
@overload
async def create_in_resource_group(
self,
@@ -400,7 +374,6 @@ async def create_in_resource_group(
:keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
@@ -411,7 +384,7 @@ async def create_in_resource_group(
self,
configuration_name: Union[str, _models.ConfigurationName],
resource_group: str,
- config_contract: IO,
+ config_contract: IO[bytes],
*,
content_type: str = "application/json",
**kwargs: Any
@@ -426,11 +399,10 @@ async def create_in_resource_group(
:param resource_group: The name of the Azure resource group. Required.
:type resource_group: str
:param config_contract: The Azure Advisor configuration data structure. Required.
- :type config_contract: IO
+ :type config_contract: IO[bytes]
:keyword content_type: Body Parameter content-type. Content type parameter for binary body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
@@ -441,7 +413,7 @@ async def create_in_resource_group(
self,
configuration_name: Union[str, _models.ConfigurationName],
resource_group: str,
- config_contract: Union[_models.ConfigData, IO],
+ config_contract: Union[_models.ConfigData, IO[bytes]],
**kwargs: Any
) -> _models.ConfigData:
"""Create/Overwrite Azure Advisor configuration.
@@ -453,18 +425,14 @@ async def create_in_resource_group(
:type configuration_name: str or ~azure.mgmt.advisor.models.ConfigurationName
:param resource_group: The name of the Azure resource group. Required.
:type resource_group: str
- :param config_contract: The Azure Advisor configuration data structure. Is either a model type
- or a IO type. Required.
- :type config_contract: ~azure.mgmt.advisor.models.ConfigData or IO
- :keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
- Default value is None.
- :paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
+ :param config_contract: The Azure Advisor configuration data structure. Is either a ConfigData
+ type or a IO[bytes] type. Required.
+ :type config_contract: ~azure.mgmt.advisor.models.ConfigData or IO[bytes]
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -475,21 +443,19 @@ async def create_in_resource_group(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ConfigData]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
+ cls: ClsType[_models.ConfigData] = kwargs.pop("cls", None)
content_type = content_type or "application/json"
_json = None
_content = None
- if isinstance(config_contract, (IO, bytes)):
+ if isinstance(config_contract, (IOBase, bytes)):
_content = config_contract
else:
_json = self._serialize.body(config_contract, "ConfigData")
- request = build_create_in_resource_group_request(
+ _request = build_create_in_resource_group_request(
configuration_name=configuration_name,
resource_group=resource_group,
subscription_id=self._config.subscription_id,
@@ -497,15 +463,14 @@ async def create_in_resource_group(
content_type=content_type,
json=_json,
content=_content,
- template_url=self.create_in_resource_group.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -515,11 +480,9 @@ async def create_in_resource_group(
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("ConfigData", pipeline_response)
+ deserialized = self._deserialize("ConfigData", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
-
- return deserialized
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- create_in_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Advisor/configurations/{configurationName}"} # type: ignore
+ return deserialized # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_operations.py
index e32cf618baa2..3432c563deaa 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_operations.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_operations.py
@@ -1,4 +1,4 @@
-# pylint: disable=too-many-lines
+# pylint: disable=too-many-lines,too-many-statements
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
@@ -7,7 +7,7 @@
# 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 typing import Any, AsyncIterable, Callable, Dict, Optional, Type, TypeVar
import urllib.parse
from azure.core.async_paging import AsyncItemPaged, AsyncList
@@ -20,20 +20,18 @@
map_error,
)
from azure.core.pipeline import PipelineResponse
-from azure.core.pipeline.transport import AsyncHttpResponse
-from azure.core.rest import HttpRequest
+from azure.core.rest import AsyncHttpResponse, 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._operations import build_list_request
-if sys.version_info >= (3, 8):
- from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
else:
- from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
T = TypeVar("T")
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]]
@@ -61,7 +59,6 @@ def __init__(self, *args, **kwargs) -> None:
def list(self, **kwargs: Any) -> AsyncIterable["_models.OperationEntity"]:
"""Lists all the available Advisor REST API operations.
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either OperationEntity or the result of cls(response)
:rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.advisor.models.OperationEntity]
:raises ~azure.core.exceptions.HttpResponseError:
@@ -69,12 +66,10 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.OperationEntity"]:
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.OperationEntityListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.OperationEntityListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -85,14 +80,12 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.OperationEntity"]:
def prepare_request(next_link=None):
if not next_link:
- request = build_list_request(
+ _request = build_list_request(
api_version=api_version,
- template_url=self.list.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -104,26 +97,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
async def extract_data(pipeline_response):
deserialized = self._deserialize("OperationEntityListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ 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)
+ _request = prepare_request(next_link)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -135,5 +128,3 @@ async def get_next(next_link=None):
return pipeline_response
return AsyncItemPaged(get_next, extract_data)
-
- list.metadata = {"url": "/providers/Microsoft.Advisor/operations"} # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_recommendation_metadata_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_recommendation_metadata_operations.py
index 3f2e1582de2e..bab5675b0f58 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_recommendation_metadata_operations.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_recommendation_metadata_operations.py
@@ -1,4 +1,4 @@
-# pylint: disable=too-many-lines
+# pylint: disable=too-many-lines,too-many-statements
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
@@ -7,7 +7,7 @@
# 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 typing import Any, AsyncIterable, Callable, Dict, Optional, Type, TypeVar, cast
import urllib.parse
from azure.core.async_paging import AsyncItemPaged, AsyncList
@@ -20,21 +20,19 @@
map_error,
)
from azure.core.pipeline import PipelineResponse
-from azure.core.pipeline.transport import AsyncHttpResponse
-from azure.core.rest import HttpRequest
+from azure.core.rest import AsyncHttpResponse, HttpRequest
from azure.core.tracing.decorator import distributed_trace
from azure.core.tracing.decorator_async import distributed_trace_async
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._recommendation_metadata_operations import build_get_request, build_list_request
-if sys.version_info >= (3, 8):
- from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
else:
- from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
T = TypeVar("T")
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]]
@@ -66,19 +64,21 @@ async def get(self, name: str, **kwargs: Any) -> _models.MetadataEntity:
:param name: Name of metadata entity. Required.
:type name: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: MetadataEntity or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.MetadataEntity
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
409: ResourceExistsError,
304: ResourceNotModifiedError,
- 404: lambda response: ResourceNotFoundError(
- response=response,
- model=self._deserialize(_models.ARMErrorResponseBody, response),
- error_format=ARMErrorFormat,
+ 404: cast(
+ Type[HttpResponseError],
+ lambda response: ResourceNotFoundError(
+ response=response,
+ model=self._deserialize(_models.ARMErrorResponseBody, response),
+ error_format=ARMErrorFormat,
+ ),
),
}
error_map.update(kwargs.pop("error_map", {}) or {})
@@ -86,40 +86,35 @@ async def get(self, name: str, **kwargs: Any) -> _models.MetadataEntity:
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.MetadataEntity]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.MetadataEntity] = kwargs.pop("cls", None)
- request = build_get_request(
+ _request = build_get_request(
name=name,
api_version=api_version,
- template_url=self.get.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **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)
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("MetadataEntity", pipeline_response)
+ deserialized = self._deserialize("MetadataEntity", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- return deserialized
-
- get.metadata = {"url": "/providers/Microsoft.Advisor/metadata/{name}"} # type: ignore
+ return deserialized # type: ignore
@distributed_trace
def list(self, **kwargs: Any) -> AsyncIterable["_models.MetadataEntity"]:
@@ -127,7 +122,6 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.MetadataEntity"]:
Gets the list of metadata entities.
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either MetadataEntity or the result of cls(response)
:rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.advisor.models.MetadataEntity]
:raises ~azure.core.exceptions.HttpResponseError:
@@ -135,12 +129,10 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.MetadataEntity"]:
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.MetadataEntityListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.MetadataEntityListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -151,14 +143,12 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.MetadataEntity"]:
def prepare_request(next_link=None):
if not next_link:
- request = build_list_request(
+ _request = build_list_request(
api_version=api_version,
- template_url=self.list.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -170,26 +160,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
async def extract_data(pipeline_response):
deserialized = self._deserialize("MetadataEntityListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ 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)
+ _request = prepare_request(next_link)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -201,5 +191,3 @@ async def get_next(next_link=None):
return pipeline_response
return AsyncItemPaged(get_next, extract_data)
-
- list.metadata = {"url": "/providers/Microsoft.Advisor/metadata"} # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_recommendations_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_recommendations_operations.py
index d690ff703a39..241e8b410e2b 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_recommendations_operations.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_recommendations_operations.py
@@ -1,4 +1,4 @@
-# pylint: disable=too-many-lines
+# pylint: disable=too-many-lines,too-many-statements
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
@@ -7,7 +7,7 @@
# 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 typing import Any, AsyncIterable, Callable, Dict, Optional, Type, TypeVar
import urllib.parse
from azure.core.async_paging import AsyncItemPaged, AsyncList
@@ -20,15 +20,13 @@
map_error,
)
from azure.core.pipeline import PipelineResponse
-from azure.core.pipeline.transport import AsyncHttpResponse
-from azure.core.rest import HttpRequest
+from azure.core.rest import AsyncHttpResponse, HttpRequest
from azure.core.tracing.decorator import distributed_trace
from azure.core.tracing.decorator_async import distributed_trace_async
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._recommendations_operations import (
build_generate_request,
build_get_generate_status_request,
@@ -36,10 +34,10 @@
build_list_request,
)
-if sys.version_info >= (3, 8):
- from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
else:
- from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
T = TypeVar("T")
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]]
@@ -69,12 +67,11 @@ async def generate(self, **kwargs: Any) -> None: # pylint: disable=inconsistent
operation is asynchronous. The generated recommendations are stored in a cache in the Advisor
service.
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: None or the result of cls(response)
:rtype: None
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -85,23 +82,20 @@ async def generate(self, **kwargs: Any) -> None: # pylint: disable=inconsistent
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[None]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[None] = kwargs.pop("cls", None)
- request = build_generate_request(
+ _request = build_generate_request(
subscription_id=self._config.subscription_id,
api_version=api_version,
- template_url=self.generate.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -116,9 +110,7 @@ async def generate(self, **kwargs: Any) -> None: # pylint: disable=inconsistent
response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After"))
if cls:
- return cls(pipeline_response, None, response_headers)
-
- generate.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/generateRecommendations"} # type: ignore
+ return cls(pipeline_response, None, response_headers) # type: ignore
@distributed_trace_async
async def get_generate_status( # pylint: disable=inconsistent-return-statements
@@ -131,12 +123,11 @@ async def get_generate_status( # pylint: disable=inconsistent-return-statements
:param operation_id: The operation ID, which can be found from the Location field in the
generate recommendation response header. Required.
:type operation_id: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: None or the result of cls(response)
:rtype: None
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -147,24 +138,21 @@ async def get_generate_status( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[None]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[None] = kwargs.pop("cls", None)
- request = build_get_generate_status_request(
+ _request = build_get_generate_status_request(
operation_id=operation_id,
subscription_id=self._config.subscription_id,
api_version=api_version,
- template_url=self.get_generate_status.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -175,9 +163,7 @@ async def get_generate_status( # pylint: disable=inconsistent-return-statements
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
if cls:
- return cls(pipeline_response, None, {})
-
- get_generate_status.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/generateRecommendations/{operationId}"} # type: ignore
+ return cls(pipeline_response, None, {}) # type: ignore
@distributed_trace
def list(
@@ -187,8 +173,8 @@ def list(
computed by invoking generateRecommendations.
:param filter: The filter to apply to the recommendations.:code:`
`Filter can be applied to
- properties ['ResourceId', 'ResourceGroup', 'RecommendationTypeGuid', '\ `Category
- <#category>`_\ '] with operators ['eq', 'and', 'or'].:code:`
`Example::code:`
`-
+ properties ['ResourceId', 'ResourceGroup', 'RecommendationTypeGuid', '\\ `Category
+ <#category>`_\\ '] with operators ['eq', 'and', 'or'].:code:`
`Example::code:`
`-
$filter=Category eq 'Cost' and ResourceGroup eq 'MyResourceGroup'. Default value is None.
:type filter: str
:param top: The number of recommendations per page if a paged version of this API is being
@@ -197,7 +183,6 @@ def list(
:param skip_token: The page-continuation token to use with a paged version of this API. Default
value is None.
:type skip_token: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either ResourceRecommendationBase or the result of
cls(response)
:rtype:
@@ -207,12 +192,10 @@ def list(
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ResourceRecommendationBaseListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.ResourceRecommendationBaseListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -223,18 +206,16 @@ def list(
def prepare_request(next_link=None):
if not next_link:
- request = build_list_request(
+ _request = build_list_request(
subscription_id=self._config.subscription_id,
filter=filter,
top=top,
skip_token=skip_token,
api_version=api_version,
- template_url=self.list.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -246,26 +227,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
async def extract_data(pipeline_response):
deserialized = self._deserialize("ResourceRecommendationBaseListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ 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)
+ _request = prepare_request(next_link)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -278,8 +259,6 @@ async def get_next(next_link=None):
return AsyncItemPaged(get_next, extract_data)
- list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/recommendations"} # type: ignore
-
@distributed_trace_async
async def get(self, resource_uri: str, recommendation_id: str, **kwargs: Any) -> _models.ResourceRecommendationBase:
"""Obtains details of a cached recommendation.
@@ -289,12 +268,11 @@ async def get(self, resource_uri: str, recommendation_id: str, **kwargs: Any) ->
:type resource_uri: str
:param recommendation_id: The recommendation ID. Required.
:type recommendation_id: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: ResourceRecommendationBase or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ResourceRecommendationBase
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -305,24 +283,21 @@ async def get(self, resource_uri: str, recommendation_id: str, **kwargs: Any) ->
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ResourceRecommendationBase]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.ResourceRecommendationBase] = kwargs.pop("cls", None)
- request = build_get_request(
+ _request = build_get_request(
resource_uri=resource_uri,
recommendation_id=recommendation_id,
api_version=api_version,
- template_url=self.get.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -332,11 +307,9 @@ async def get(self, resource_uri: str, recommendation_id: str, **kwargs: Any) ->
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("ResourceRecommendationBase", pipeline_response)
+ deserialized = self._deserialize("ResourceRecommendationBase", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
-
- return deserialized
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- get.metadata = {"url": "/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}"} # type: ignore
+ return deserialized # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_suppressions_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_suppressions_operations.py
index eed345f44295..d029c492aab4 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_suppressions_operations.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/aio/operations/_suppressions_operations.py
@@ -1,4 +1,4 @@
-# pylint: disable=too-many-lines
+# pylint: disable=too-many-lines,too-many-statements
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
@@ -6,8 +6,9 @@
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------
+from io import IOBase
import sys
-from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, overload
+from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, Type, TypeVar, Union, cast, overload
import urllib.parse
from azure.core.async_paging import AsyncItemPaged, AsyncList
@@ -20,15 +21,13 @@
map_error,
)
from azure.core.pipeline import PipelineResponse
-from azure.core.pipeline.transport import AsyncHttpResponse
-from azure.core.rest import HttpRequest
+from azure.core.rest import AsyncHttpResponse, HttpRequest
from azure.core.tracing.decorator import distributed_trace
from azure.core.tracing.decorator_async import distributed_trace_async
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._suppressions_operations import (
build_create_request,
build_delete_request,
@@ -36,10 +35,10 @@
build_list_request,
)
-if sys.version_info >= (3, 8):
- from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
else:
- from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
T = TypeVar("T")
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]]
@@ -76,19 +75,21 @@ async def get(
:type recommendation_id: str
:param name: The name of the suppression. Required.
:type name: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: SuppressionContract or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.SuppressionContract
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
409: ResourceExistsError,
304: ResourceNotModifiedError,
- 404: lambda response: ResourceNotFoundError(
- response=response,
- model=self._deserialize(_models.ArmErrorResponse, response),
- error_format=ARMErrorFormat,
+ 404: cast(
+ Type[HttpResponseError],
+ lambda response: ResourceNotFoundError(
+ response=response,
+ model=self._deserialize(_models.ArmErrorResponse, response),
+ error_format=ARMErrorFormat,
+ ),
),
}
error_map.update(kwargs.pop("error_map", {}) or {})
@@ -96,42 +97,37 @@ async def get(
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.SuppressionContract]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.SuppressionContract] = kwargs.pop("cls", None)
- request = build_get_request(
+ _request = build_get_request(
resource_uri=resource_uri,
recommendation_id=recommendation_id,
name=name,
api_version=api_version,
- template_url=self.get.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **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)
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("SuppressionContract", pipeline_response)
+ deserialized = self._deserialize("SuppressionContract", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
-
- return deserialized
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- get.metadata = {"url": "/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}/suppressions/{name}"} # type: ignore
+ return deserialized # type: ignore
@overload
async def create(
@@ -161,7 +157,6 @@ async def create(
:keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: SuppressionContract or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.SuppressionContract
:raises ~azure.core.exceptions.HttpResponseError:
@@ -173,7 +168,7 @@ async def create(
resource_uri: str,
recommendation_id: str,
name: str,
- suppression_contract: IO,
+ suppression_contract: IO[bytes],
*,
content_type: str = "application/json",
**kwargs: Any
@@ -191,11 +186,10 @@ async def create(
:type name: str
:param suppression_contract: The snoozed or dismissed attribute; for example, the snooze
duration. Required.
- :type suppression_contract: IO
+ :type suppression_contract: IO[bytes]
:keyword content_type: Body Parameter content-type. Content type parameter for binary body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: SuppressionContract or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.SuppressionContract
:raises ~azure.core.exceptions.HttpResponseError:
@@ -207,7 +201,7 @@ async def create(
resource_uri: str,
recommendation_id: str,
name: str,
- suppression_contract: Union[_models.SuppressionContract, IO],
+ suppression_contract: Union[_models.SuppressionContract, IO[bytes]],
**kwargs: Any
) -> _models.SuppressionContract:
"""Enables the snoozed or dismissed attribute of a recommendation. The snoozed or dismissed
@@ -222,24 +216,23 @@ async def create(
:param name: The name of the suppression. Required.
:type name: str
:param suppression_contract: The snoozed or dismissed attribute; for example, the snooze
- duration. Is either a model type or a IO type. Required.
- :type suppression_contract: ~azure.mgmt.advisor.models.SuppressionContract or IO
- :keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
- Default value is None.
- :paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
+ duration. Is either a SuppressionContract type or a IO[bytes] type. Required.
+ :type suppression_contract: ~azure.mgmt.advisor.models.SuppressionContract or IO[bytes]
:return: SuppressionContract or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.SuppressionContract
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
409: ResourceExistsError,
304: ResourceNotModifiedError,
- 404: lambda response: ResourceNotFoundError(
- response=response,
- model=self._deserialize(_models.ArmErrorResponse, response),
- error_format=ARMErrorFormat,
+ 404: cast(
+ Type[HttpResponseError],
+ lambda response: ResourceNotFoundError(
+ response=response,
+ model=self._deserialize(_models.ArmErrorResponse, response),
+ error_format=ARMErrorFormat,
+ ),
),
}
error_map.update(kwargs.pop("error_map", {}) or {})
@@ -247,21 +240,19 @@ async def create(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.SuppressionContract]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
+ cls: ClsType[_models.SuppressionContract] = kwargs.pop("cls", None)
content_type = content_type or "application/json"
_json = None
_content = None
- if isinstance(suppression_contract, (IO, bytes)):
+ if isinstance(suppression_contract, (IOBase, bytes)):
_content = suppression_contract
else:
_json = self._serialize.body(suppression_contract, "SuppressionContract")
- request = build_create_request(
+ _request = build_create_request(
resource_uri=resource_uri,
recommendation_id=recommendation_id,
name=name,
@@ -269,32 +260,29 @@ async def create(
content_type=content_type,
json=_json,
content=_content,
- template_url=self.create.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **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)
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("SuppressionContract", pipeline_response)
+ deserialized = self._deserialize("SuppressionContract", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
-
- return deserialized
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- create.metadata = {"url": "/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}/suppressions/{name}"} # type: ignore
+ return deserialized # type: ignore
@distributed_trace_async
async def delete( # pylint: disable=inconsistent-return-statements
@@ -310,12 +298,11 @@ async def delete( # pylint: disable=inconsistent-return-statements
:type recommendation_id: str
:param name: The name of the suppression. Required.
:type name: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: None or the result of cls(response)
:rtype: None
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -326,25 +313,22 @@ async def delete( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[None]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[None] = kwargs.pop("cls", None)
- request = build_delete_request(
+ _request = build_delete_request(
resource_uri=resource_uri,
recommendation_id=recommendation_id,
name=name,
api_version=api_version,
- template_url=self.delete.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -355,9 +339,7 @@ async def delete( # pylint: disable=inconsistent-return-statements
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
if cls:
- return cls(pipeline_response, None, {})
-
- delete.metadata = {"url": "/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}/suppressions/{name}"} # type: ignore
+ return cls(pipeline_response, None, {}) # type: ignore
@distributed_trace
def list(
@@ -372,7 +354,6 @@ def list(
:param skip_token: The page-continuation token to use with a paged version of this API. Default
value is None.
:type skip_token: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either SuppressionContract or the result of cls(response)
:rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.advisor.models.SuppressionContract]
:raises ~azure.core.exceptions.HttpResponseError:
@@ -380,12 +361,10 @@ def list(
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.SuppressionContractListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.SuppressionContractListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -396,17 +375,15 @@ def list(
def prepare_request(next_link=None):
if not next_link:
- request = build_list_request(
+ _request = build_list_request(
subscription_id=self._config.subscription_id,
top=top,
skip_token=skip_token,
api_version=api_version,
- template_url=self.list.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -418,26 +395,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
async def extract_data(pipeline_response):
deserialized = self._deserialize("SuppressionContractListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ 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)
+ _request = prepare_request(next_link)
- pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -449,5 +426,3 @@ async def get_next(next_link=None):
return pipeline_response
return AsyncItemPaged(get_next, extract_data)
-
- list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/suppressions"} # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/__init__.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/__init__.py
index 5bb85a253ce5..c636f3986b8d 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/__init__.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/__init__.py
@@ -7,6 +7,9 @@
# --------------------------------------------------------------------------
from ._models_py3 import ARMErrorResponseBody
+from ._models_py3 import AdvisorScoreEntity
+from ._models_py3 import AdvisorScoreEntityProperties
+from ._models_py3 import AdvisorScoreResponse
from ._models_py3 import ArmErrorResponse
from ._models_py3 import ConfigData
from ._models_py3 import ConfigurationListResult
@@ -17,26 +20,40 @@
from ._models_py3 import OperationDisplayInfo
from ._models_py3 import OperationEntity
from ._models_py3 import OperationEntityListResult
+from ._models_py3 import PredictionRequest
+from ._models_py3 import PredictionResponse
+from ._models_py3 import ProxyResource
from ._models_py3 import Resource
from ._models_py3 import ResourceMetadata
from ._models_py3 import ResourceRecommendationBase
from ._models_py3 import ResourceRecommendationBaseListResult
+from ._models_py3 import ScoreEntity
from ._models_py3 import ShortDescription
from ._models_py3 import SuppressionContract
from ._models_py3 import SuppressionContractListResult
+from ._models_py3 import SystemData
+from ._models_py3 import TimeSeriesEntityItem
+from ._advisor_management_client_enums import Aggregated
from ._advisor_management_client_enums import Category
from ._advisor_management_client_enums import ConfigurationName
from ._advisor_management_client_enums import CpuThreshold
+from ._advisor_management_client_enums import CreatedByType
from ._advisor_management_client_enums import DigestConfigState
+from ._advisor_management_client_enums import Duration
from ._advisor_management_client_enums import Impact
+from ._advisor_management_client_enums import PredictionType
+from ._advisor_management_client_enums import Risk
from ._advisor_management_client_enums import Scenario
from ._patch import __all__ as _patch_all
-from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import
+from ._patch import * # pylint: disable=unused-wildcard-import
from ._patch import patch_sdk as _patch_sdk
__all__ = [
"ARMErrorResponseBody",
+ "AdvisorScoreEntity",
+ "AdvisorScoreEntityProperties",
+ "AdvisorScoreResponse",
"ArmErrorResponse",
"ConfigData",
"ConfigurationListResult",
@@ -47,18 +64,29 @@
"OperationDisplayInfo",
"OperationEntity",
"OperationEntityListResult",
+ "PredictionRequest",
+ "PredictionResponse",
+ "ProxyResource",
"Resource",
"ResourceMetadata",
"ResourceRecommendationBase",
"ResourceRecommendationBaseListResult",
+ "ScoreEntity",
"ShortDescription",
"SuppressionContract",
"SuppressionContractListResult",
+ "SystemData",
+ "TimeSeriesEntityItem",
+ "Aggregated",
"Category",
"ConfigurationName",
"CpuThreshold",
+ "CreatedByType",
"DigestConfigState",
+ "Duration",
"Impact",
+ "PredictionType",
+ "Risk",
"Scenario",
]
__all__.extend([p for p in _patch_all if p not in __all__])
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/_advisor_management_client_enums.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/_advisor_management_client_enums.py
index e829a70bf186..3207462b06b2 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/_advisor_management_client_enums.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/_advisor_management_client_enums.py
@@ -10,6 +10,14 @@
from azure.core import CaseInsensitiveEnumMeta
+class Aggregated(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """The aggregation level of the score."""
+
+ WEEK = "week"
+ DAY = "day"
+ MONTH = "month"
+
+
class Category(str, Enum, metaclass=CaseInsensitiveEnumMeta):
"""Category."""
@@ -37,6 +45,15 @@ class CpuThreshold(str, Enum, metaclass=CaseInsensitiveEnumMeta):
TWENTY = "20"
+class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """The type of identity that created the resource."""
+
+ USER = "User"
+ APPLICATION = "Application"
+ MANAGED_IDENTITY = "ManagedIdentity"
+ KEY = "Key"
+
+
class DigestConfigState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
"""State of digest configuration."""
@@ -44,6 +61,19 @@ class DigestConfigState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
DISABLED = "Disabled"
+class Duration(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """Minimum duration for Advisor low CPU utilization evaluation. Valid only for subscriptions.
+ Valid values: 7 (default), 14, 21, 30, 60 or 90.
+ """
+
+ SEVEN = "7"
+ FOURTEEN = "14"
+ TWENTY_ONE = "21"
+ THIRTY = "30"
+ SIXTY = "60"
+ NINETY = "90"
+
+
class Impact(str, Enum, metaclass=CaseInsensitiveEnumMeta):
"""The business impact of the recommendation."""
@@ -52,6 +82,20 @@ class Impact(str, Enum, metaclass=CaseInsensitiveEnumMeta):
LOW = "Low"
+class PredictionType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """Type of the prediction."""
+
+ PREDICTIVE_RIGHTSIZING = "PredictiveRightsizing"
+
+
+class Risk(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """The potential risk of not implementing the recommendation."""
+
+ ERROR = "Error"
+ WARNING = "Warning"
+ NONE = "None"
+
+
class Scenario(str, Enum, metaclass=CaseInsensitiveEnumMeta):
"""Scenario."""
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/_models_py3.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/_models_py3.py
index a97c0a50fa37..d8d274b69810 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/_models_py3.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/models/_models_py3.py
@@ -24,6 +24,163 @@
JSON = MutableMapping[str, Any] # pylint: disable=unsubscriptable-object
+class Resource(_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. E.g.
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long
+ :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.advisor.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(Resource):
+ """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. E.g.
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long
+ :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.advisor.models.SystemData
+ """
+
+
+class AdvisorScoreEntity(ProxyResource):
+ """The details of Advisor score for a single category.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar id: Fully qualified resource ID for the resource. E.g.
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long
+ :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.advisor.models.SystemData
+ :ivar properties: The Advisor score data.
+ :vartype properties: ~azure.mgmt.advisor.models.AdvisorScoreEntityProperties
+ """
+
+ _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"},
+ "properties": {"key": "properties", "type": "AdvisorScoreEntityProperties"},
+ }
+
+ def __init__(self, *, properties: Optional["_models.AdvisorScoreEntityProperties"] = None, **kwargs: Any) -> None:
+ """
+ :keyword properties: The Advisor score data.
+ :paramtype properties: ~azure.mgmt.advisor.models.AdvisorScoreEntityProperties
+ """
+ super().__init__(**kwargs)
+ self.properties = properties
+
+
+class AdvisorScoreEntityProperties(_serialization.Model):
+ """The Advisor score data.
+
+ :ivar last_refreshed_score: The details of latest available score.
+ :vartype last_refreshed_score: ~azure.mgmt.advisor.models.ScoreEntity
+ :ivar time_series: The historic Advisor score data.
+ :vartype time_series: list[~azure.mgmt.advisor.models.TimeSeriesEntityItem]
+ """
+
+ _attribute_map = {
+ "last_refreshed_score": {"key": "lastRefreshedScore", "type": "ScoreEntity"},
+ "time_series": {"key": "timeSeries", "type": "[TimeSeriesEntityItem]"},
+ }
+
+ def __init__(
+ self,
+ *,
+ last_refreshed_score: Optional["_models.ScoreEntity"] = None,
+ time_series: Optional[List["_models.TimeSeriesEntityItem"]] = None,
+ **kwargs: Any
+ ) -> None:
+ """
+ :keyword last_refreshed_score: The details of latest available score.
+ :paramtype last_refreshed_score: ~azure.mgmt.advisor.models.ScoreEntity
+ :keyword time_series: The historic Advisor score data.
+ :paramtype time_series: list[~azure.mgmt.advisor.models.TimeSeriesEntityItem]
+ """
+ super().__init__(**kwargs)
+ self.last_refreshed_score = last_refreshed_score
+ self.time_series = time_series
+
+
+class AdvisorScoreResponse(_serialization.Model):
+ """AdvisorScoreResponse.
+
+ :ivar value: The list of operations.
+ :vartype value: list[~azure.mgmt.advisor.models.AdvisorScoreEntity]
+ """
+
+ _attribute_map = {
+ "value": {"key": "value", "type": "[AdvisorScoreEntity]"},
+ }
+
+ def __init__(self, *, value: Optional[List["_models.AdvisorScoreEntity"]] = None, **kwargs: Any) -> None:
+ """
+ :keyword value: The list of operations.
+ :paramtype value: list[~azure.mgmt.advisor.models.AdvisorScoreEntity]
+ """
+ super().__init__(**kwargs)
+ self.value = value
+
+
class ArmErrorResponse(_serialization.Model):
"""ArmErrorResponse.
@@ -35,7 +192,7 @@ class ArmErrorResponse(_serialization.Model):
"error": {"key": "error", "type": "ARMErrorResponseBody"},
}
- def __init__(self, *, error: Optional["_models.ARMErrorResponseBody"] = None, **kwargs):
+ def __init__(self, *, error: Optional["_models.ARMErrorResponseBody"] = None, **kwargs: Any) -> None:
"""
:keyword error: ARM error response body.
:paramtype error: ~azure.mgmt.advisor.models.ARMErrorResponseBody
@@ -59,7 +216,7 @@ class ARMErrorResponseBody(_serialization.Model):
"code": {"key": "code", "type": "str"},
}
- def __init__(self, *, message: Optional[str] = None, code: Optional[str] = None, **kwargs):
+ def __init__(self, *, message: Optional[str] = None, code: Optional[str] = None, **kwargs: Any) -> None:
"""
:keyword message: Gets or sets the string that describes the error in detail and provides
debugging information.
@@ -72,50 +229,22 @@ def __init__(self, *, message: Optional[str] = None, code: Optional[str] = None,
self.code = code
-class Resource(_serialization.Model):
- """An Azure resource.
-
- Variables are only populated by the server, and will be ignored when sending a request.
-
- :ivar id: The resource ID.
- :vartype id: str
- :ivar name: The name of the resource.
- :vartype name: str
- :ivar type: The type of the resource.
- :vartype type: str
- """
-
- _validation = {
- "id": {"readonly": True},
- "name": {"readonly": True},
- "type": {"readonly": True},
- }
-
- _attribute_map = {
- "id": {"key": "id", "type": "str"},
- "name": {"key": "name", "type": "str"},
- "type": {"key": "type", "type": "str"},
- }
-
- def __init__(self, **kwargs):
- """ """
- super().__init__(**kwargs)
- self.id = None
- self.name = None
- self.type = None
-
-
class ConfigData(Resource):
"""The Advisor configuration data structure.
Variables are only populated by the server, and will be ignored when sending a request.
- :ivar id: The resource ID.
+ :ivar id: Fully qualified resource ID for the resource. E.g.
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long
:vartype id: str
:ivar name: The name of the resource.
:vartype name: str
- :ivar type: The type of the resource.
+ :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.advisor.models.SystemData
:ivar exclude: Exclude the resource from Advisor evaluations. Valid values: False (default) or
True.
:vartype exclude: bool
@@ -123,6 +252,10 @@ class ConfigData(Resource):
evaluation. Valid only for subscriptions. Valid values: 5 (default), 10, 15 or 20. Known values
are: "5", "10", "15", and "20".
:vartype low_cpu_threshold: str or ~azure.mgmt.advisor.models.CpuThreshold
+ :ivar duration: Minimum duration for Advisor low CPU utilization evaluation. Valid only for
+ subscriptions. Valid values: 7 (default), 14, 21, 30, 60 or 90. Known values are: "7", "14",
+ "21", "30", "60", and "90".
+ :vartype duration: str or ~azure.mgmt.advisor.models.Duration
:ivar digests: Advisor digest configuration. Valid only for subscriptions.
:vartype digests: list[~azure.mgmt.advisor.models.DigestConfig]
"""
@@ -131,14 +264,17 @@ class ConfigData(Resource):
"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"},
"exclude": {"key": "properties.exclude", "type": "bool"},
"low_cpu_threshold": {"key": "properties.lowCpuThreshold", "type": "str"},
+ "duration": {"key": "properties.duration", "type": "str"},
"digests": {"key": "properties.digests", "type": "[DigestConfig]"},
}
@@ -147,9 +283,10 @@ def __init__(
*,
exclude: Optional[bool] = None,
low_cpu_threshold: Optional[Union[str, "_models.CpuThreshold"]] = None,
+ duration: Optional[Union[str, "_models.Duration"]] = None,
digests: Optional[List["_models.DigestConfig"]] = None,
- **kwargs
- ):
+ **kwargs: Any
+ ) -> None:
"""
:keyword exclude: Exclude the resource from Advisor evaluations. Valid values: False (default)
or True.
@@ -158,12 +295,17 @@ def __init__(
evaluation. Valid only for subscriptions. Valid values: 5 (default), 10, 15 or 20. Known values
are: "5", "10", "15", and "20".
:paramtype low_cpu_threshold: str or ~azure.mgmt.advisor.models.CpuThreshold
+ :keyword duration: Minimum duration for Advisor low CPU utilization evaluation. Valid only for
+ subscriptions. Valid values: 7 (default), 14, 21, 30, 60 or 90. Known values are: "7", "14",
+ "21", "30", "60", and "90".
+ :paramtype duration: str or ~azure.mgmt.advisor.models.Duration
:keyword digests: Advisor digest configuration. Valid only for subscriptions.
:paramtype digests: list[~azure.mgmt.advisor.models.DigestConfig]
"""
super().__init__(**kwargs)
self.exclude = exclude
self.low_cpu_threshold = low_cpu_threshold
+ self.duration = duration
self.digests = digests
@@ -182,8 +324,8 @@ class ConfigurationListResult(_serialization.Model):
}
def __init__(
- self, *, value: Optional[List["_models.ConfigData"]] = None, next_link: Optional[str] = None, **kwargs
- ):
+ self, *, value: Optional[List["_models.ConfigData"]] = None, next_link: Optional[str] = None, **kwargs: Any
+ ) -> None:
"""
:keyword value: The list of configurations.
:paramtype value: list[~azure.mgmt.advisor.models.ConfigData]
@@ -235,8 +377,8 @@ def __init__(
categories: Optional[List[Union[str, "_models.Category"]]] = None,
language: Optional[str] = None,
state: Optional[Union[str, "_models.DigestConfigState"]] = None,
- **kwargs
- ):
+ **kwargs: Any
+ ) -> None:
"""
:keyword name: Name of digest configuration. Value is case-insensitive and must be unique
within a subscription.
@@ -304,8 +446,8 @@ def __init__(
depends_on: Optional[List[str]] = None,
applicable_scenarios: Optional[List[Union[str, "_models.Scenario"]]] = None,
supported_values: Optional[List["_models.MetadataSupportedValueDetail"]] = None,
- **kwargs
- ):
+ **kwargs: Any
+ ) -> None:
"""
:keyword id: The resource Id of the metadata entity.
:paramtype id: str
@@ -347,8 +489,8 @@ class MetadataEntityListResult(_serialization.Model):
}
def __init__(
- self, *, value: Optional[List["_models.MetadataEntity"]] = None, next_link: Optional[str] = None, **kwargs
- ):
+ self, *, value: Optional[List["_models.MetadataEntity"]] = None, next_link: Optional[str] = None, **kwargs: Any
+ ) -> None:
"""
:keyword value: The list of metadata entities.
:paramtype value: list[~azure.mgmt.advisor.models.MetadataEntity]
@@ -379,8 +521,8 @@ def __init__(
*,
id: Optional[str] = None, # pylint: disable=redefined-builtin
display_name: Optional[str] = None,
- **kwargs
- ):
+ **kwargs: Any
+ ) -> None:
"""
:keyword id: The id.
:paramtype id: str
@@ -419,8 +561,8 @@ def __init__(
operation: Optional[str] = None,
provider: Optional[str] = None,
resource: Optional[str] = None,
- **kwargs
- ):
+ **kwargs: Any
+ ) -> None:
"""
:keyword description: The description of the operation.
:paramtype description: str
@@ -453,8 +595,8 @@ class OperationEntity(_serialization.Model):
}
def __init__(
- self, *, name: Optional[str] = None, display: Optional["_models.OperationDisplayInfo"] = None, **kwargs
- ):
+ self, *, name: Optional[str] = None, display: Optional["_models.OperationDisplayInfo"] = None, **kwargs: Any
+ ) -> None:
"""
:keyword name: Operation name: {provider}/{resource}/{operation}.
:paramtype name: str
@@ -481,8 +623,8 @@ class OperationEntityListResult(_serialization.Model):
}
def __init__(
- self, *, next_link: Optional[str] = None, value: Optional[List["_models.OperationEntity"]] = None, **kwargs
- ):
+ self, *, next_link: Optional[str] = None, value: Optional[List["_models.OperationEntity"]] = None, **kwargs: Any
+ ) -> None:
"""
:keyword next_link: The link used to get the next page of operations.
:paramtype next_link: str
@@ -494,6 +636,112 @@ def __init__(
self.value = value
+class PredictionRequest(_serialization.Model):
+ """Parameters for predict recommendation.
+
+ :ivar prediction_type: Type of the prediction. "PredictiveRightsizing"
+ :vartype prediction_type: str or ~azure.mgmt.advisor.models.PredictionType
+ :ivar extended_properties: Extended properties are arguments specific for each prediction type.
+ :vartype extended_properties: JSON
+ """
+
+ _attribute_map = {
+ "prediction_type": {"key": "properties.predictionType", "type": "str"},
+ "extended_properties": {"key": "properties.extendedProperties", "type": "object"},
+ }
+
+ def __init__(
+ self,
+ *,
+ prediction_type: Optional[Union[str, "_models.PredictionType"]] = None,
+ extended_properties: Optional[JSON] = None,
+ **kwargs: Any
+ ) -> None:
+ """
+ :keyword prediction_type: Type of the prediction. "PredictiveRightsizing"
+ :paramtype prediction_type: str or ~azure.mgmt.advisor.models.PredictionType
+ :keyword extended_properties: Extended properties are arguments specific for each prediction
+ type.
+ :paramtype extended_properties: JSON
+ """
+ super().__init__(**kwargs)
+ self.prediction_type = prediction_type
+ self.extended_properties = extended_properties
+
+
+class PredictionResponse(_serialization.Model):
+ """Response used by predictions.
+
+ :ivar extended_properties: Extended properties.
+ :vartype extended_properties: JSON
+ :ivar prediction_type: Type of the prediction. "PredictiveRightsizing"
+ :vartype prediction_type: str or ~azure.mgmt.advisor.models.PredictionType
+ :ivar category: The category of the recommendation. Known values are: "HighAvailability",
+ "Security", "Performance", "Cost", and "OperationalExcellence".
+ :vartype category: str or ~azure.mgmt.advisor.models.Category
+ :ivar impact: The business impact of the recommendation. Known values are: "High", "Medium",
+ and "Low".
+ :vartype impact: str or ~azure.mgmt.advisor.models.Impact
+ :ivar impacted_field: The resource type identified by Advisor.
+ :vartype impacted_field: str
+ :ivar last_updated: The most recent time that Advisor checked the validity of the
+ recommendation.
+ :vartype last_updated: ~datetime.datetime
+ :ivar short_description: A summary of the recommendation.
+ :vartype short_description: ~azure.mgmt.advisor.models.ShortDescription
+ """
+
+ _attribute_map = {
+ "extended_properties": {"key": "properties.extendedProperties", "type": "object"},
+ "prediction_type": {"key": "properties.predictionType", "type": "str"},
+ "category": {"key": "properties.category", "type": "str"},
+ "impact": {"key": "properties.impact", "type": "str"},
+ "impacted_field": {"key": "properties.impactedField", "type": "str"},
+ "last_updated": {"key": "properties.lastUpdated", "type": "iso-8601"},
+ "short_description": {"key": "properties.shortDescription", "type": "ShortDescription"},
+ }
+
+ def __init__(
+ self,
+ *,
+ extended_properties: Optional[JSON] = None,
+ prediction_type: Optional[Union[str, "_models.PredictionType"]] = None,
+ category: Optional[Union[str, "_models.Category"]] = None,
+ impact: Optional[Union[str, "_models.Impact"]] = None,
+ impacted_field: Optional[str] = None,
+ last_updated: Optional[datetime.datetime] = None,
+ short_description: Optional["_models.ShortDescription"] = None,
+ **kwargs: Any
+ ) -> None:
+ """
+ :keyword extended_properties: Extended properties.
+ :paramtype extended_properties: JSON
+ :keyword prediction_type: Type of the prediction. "PredictiveRightsizing"
+ :paramtype prediction_type: str or ~azure.mgmt.advisor.models.PredictionType
+ :keyword category: The category of the recommendation. Known values are: "HighAvailability",
+ "Security", "Performance", "Cost", and "OperationalExcellence".
+ :paramtype category: str or ~azure.mgmt.advisor.models.Category
+ :keyword impact: The business impact of the recommendation. Known values are: "High", "Medium",
+ and "Low".
+ :paramtype impact: str or ~azure.mgmt.advisor.models.Impact
+ :keyword impacted_field: The resource type identified by Advisor.
+ :paramtype impacted_field: str
+ :keyword last_updated: The most recent time that Advisor checked the validity of the
+ recommendation.
+ :paramtype last_updated: ~datetime.datetime
+ :keyword short_description: A summary of the recommendation.
+ :paramtype short_description: ~azure.mgmt.advisor.models.ShortDescription
+ """
+ super().__init__(**kwargs)
+ self.extended_properties = extended_properties
+ self.prediction_type = prediction_type
+ self.category = category
+ self.impact = impact
+ self.impacted_field = impacted_field
+ self.last_updated = last_updated
+ self.short_description = short_description
+
+
class ResourceMetadata(_serialization.Model):
"""Recommendation resource metadata.
@@ -525,8 +773,8 @@ def __init__(
action: Optional[Dict[str, JSON]] = None,
singular: Optional[str] = None,
plural: Optional[str] = None,
- **kwargs
- ):
+ **kwargs: Any
+ ) -> None:
"""
:keyword resource_id: Azure resource Id of the assessed resource.
:paramtype resource_id: str
@@ -552,12 +800,17 @@ class ResourceRecommendationBase(Resource): # pylint: disable=too-many-instance
Variables are only populated by the server, and will be ignored when sending a request.
- :ivar id: The resource ID.
+ :ivar id: Fully qualified resource ID for the resource. E.g.
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long
:vartype id: str
:ivar name: The name of the resource.
:vartype name: str
- :ivar type: The type of the resource.
+ :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.advisor.models.SystemData
:ivar category: The category of the recommendation. Known values are: "HighAvailability",
"Security", "Performance", "Cost", and "OperationalExcellence".
:vartype category: str or ~azure.mgmt.advisor.models.Category
@@ -575,6 +828,9 @@ class ResourceRecommendationBase(Resource): # pylint: disable=too-many-instance
:vartype metadata: dict[str, JSON]
:ivar recommendation_type_id: The recommendation-type GUID.
:vartype recommendation_type_id: str
+ :ivar risk: The potential risk of not implementing the recommendation. Known values are:
+ "Error", "Warning", and "None".
+ :vartype risk: str or ~azure.mgmt.advisor.models.Risk
:ivar short_description: A summary of the recommendation.
:vartype short_description: ~azure.mgmt.advisor.models.ShortDescription
:ivar suppression_ids: The list of snoozed and dismissed rules for the recommendation.
@@ -604,12 +860,14 @@ class ResourceRecommendationBase(Resource): # pylint: disable=too-many-instance
"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"},
"category": {"key": "properties.category", "type": "str"},
"impact": {"key": "properties.impact", "type": "str"},
"impacted_field": {"key": "properties.impactedField", "type": "str"},
@@ -617,6 +875,7 @@ class ResourceRecommendationBase(Resource): # pylint: disable=too-many-instance
"last_updated": {"key": "properties.lastUpdated", "type": "iso-8601"},
"metadata": {"key": "properties.metadata", "type": "{object}"},
"recommendation_type_id": {"key": "properties.recommendationTypeId", "type": "str"},
+ "risk": {"key": "properties.risk", "type": "str"},
"short_description": {"key": "properties.shortDescription", "type": "ShortDescription"},
"suppression_ids": {"key": "properties.suppressionIds", "type": "[str]"},
"extended_properties": {"key": "properties.extendedProperties", "type": "{str}"},
@@ -640,6 +899,7 @@ def __init__(
last_updated: Optional[datetime.datetime] = None,
metadata: Optional[Dict[str, JSON]] = None,
recommendation_type_id: Optional[str] = None,
+ risk: Optional[Union[str, "_models.Risk"]] = None,
short_description: Optional["_models.ShortDescription"] = None,
suppression_ids: Optional[List[str]] = None,
extended_properties: Optional[Dict[str, str]] = None,
@@ -651,8 +911,8 @@ def __init__(
actions: Optional[List[Dict[str, JSON]]] = None,
remediation: Optional[Dict[str, JSON]] = None,
exposed_metadata_properties: Optional[Dict[str, JSON]] = None,
- **kwargs
- ):
+ **kwargs: Any
+ ) -> None:
"""
:keyword category: The category of the recommendation. Known values are: "HighAvailability",
"Security", "Performance", "Cost", and "OperationalExcellence".
@@ -671,6 +931,9 @@ def __init__(
:paramtype metadata: dict[str, JSON]
:keyword recommendation_type_id: The recommendation-type GUID.
:paramtype recommendation_type_id: str
+ :keyword risk: The potential risk of not implementing the recommendation. Known values are:
+ "Error", "Warning", and "None".
+ :paramtype risk: str or ~azure.mgmt.advisor.models.Risk
:keyword short_description: A summary of the recommendation.
:paramtype short_description: ~azure.mgmt.advisor.models.ShortDescription
:keyword suppression_ids: The list of snoozed and dismissed rules for the recommendation.
@@ -703,6 +966,7 @@ def __init__(
self.last_updated = last_updated
self.metadata = metadata
self.recommendation_type_id = recommendation_type_id
+ self.risk = risk
self.short_description = short_description
self.suppression_ids = suppression_ids
self.extended_properties = extended_properties
@@ -735,8 +999,8 @@ def __init__(
*,
next_link: Optional[str] = None,
value: Optional[List["_models.ResourceRecommendationBase"]] = None,
- **kwargs
- ):
+ **kwargs: Any
+ ) -> None:
"""
:keyword next_link: The link used to get the next page of recommendations.
:paramtype next_link: str
@@ -748,6 +1012,71 @@ def __init__(
self.value = value
+class ScoreEntity(_serialization.Model):
+ """The details of Advisor Score.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar date: The date score was calculated.
+ :vartype date: str
+ :ivar score: The percentage score.
+ :vartype score: float
+ :ivar consumption_units: The consumption units for the score.
+ :vartype consumption_units: float
+ :ivar impacted_resource_count: The number of impacted resources.
+ :vartype impacted_resource_count: float
+ :ivar potential_score_increase: The potential percentage increase in overall score at
+ subscription level once all recommendations in this scope are implemented.
+ :vartype potential_score_increase: float
+ :ivar category_count: The count of impacted categories.
+ :vartype category_count: float
+ """
+
+ _validation = {
+ "category_count": {"readonly": True},
+ }
+
+ _attribute_map = {
+ "date": {"key": "date", "type": "str"},
+ "score": {"key": "score", "type": "float"},
+ "consumption_units": {"key": "consumptionUnits", "type": "float"},
+ "impacted_resource_count": {"key": "impactedResourceCount", "type": "float"},
+ "potential_score_increase": {"key": "potentialScoreIncrease", "type": "float"},
+ "category_count": {"key": "categoryCount", "type": "float"},
+ }
+
+ def __init__(
+ self,
+ *,
+ date: Optional[str] = None,
+ score: Optional[float] = None,
+ consumption_units: Optional[float] = None,
+ impacted_resource_count: Optional[float] = None,
+ potential_score_increase: Optional[float] = None,
+ **kwargs: Any
+ ) -> None:
+ """
+ :keyword date: The date score was calculated.
+ :paramtype date: str
+ :keyword score: The percentage score.
+ :paramtype score: float
+ :keyword consumption_units: The consumption units for the score.
+ :paramtype consumption_units: float
+ :keyword impacted_resource_count: The number of impacted resources.
+ :paramtype impacted_resource_count: float
+ :keyword potential_score_increase: The potential percentage increase in overall score at
+ subscription level once all recommendations in this scope are implemented.
+ :paramtype potential_score_increase: float
+ """
+ super().__init__(**kwargs)
+ self.date = date
+ self.score = score
+ self.consumption_units = consumption_units
+ self.impacted_resource_count = impacted_resource_count
+ self.potential_score_increase = potential_score_increase
+ self.category_count = None
+
+
class ShortDescription(_serialization.Model):
"""A summary of the recommendation.
@@ -763,7 +1092,7 @@ class ShortDescription(_serialization.Model):
"solution": {"key": "solution", "type": "str"},
}
- def __init__(self, *, problem: Optional[str] = None, solution: Optional[str] = None, **kwargs):
+ def __init__(self, *, problem: Optional[str] = None, solution: Optional[str] = None, **kwargs: Any) -> None:
"""
:keyword problem: The issue or opportunity identified by the recommendation and proposed
solution.
@@ -778,16 +1107,22 @@ def __init__(self, *, problem: Optional[str] = None, solution: Optional[str] = N
class SuppressionContract(Resource):
- """The details of the snoozed or dismissed rule; for example, the duration, name, and GUID associated with the rule.
+ """The details of the snoozed or dismissed rule; for example, the duration, name, and GUID
+ associated with the rule.
Variables are only populated by the server, and will be ignored when sending a request.
- :ivar id: The resource ID.
+ :ivar id: Fully qualified resource ID for the resource. E.g.
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long
:vartype id: str
:ivar name: The name of the resource.
:vartype name: str
- :ivar type: The type of the resource.
+ :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.advisor.models.SystemData
:ivar suppression_id: The GUID of the suppression.
:vartype suppression_id: str
:ivar ttl: The duration for which the suppression is valid.
@@ -800,6 +1135,7 @@ class SuppressionContract(Resource):
"id": {"readonly": True},
"name": {"readonly": True},
"type": {"readonly": True},
+ "system_data": {"readonly": True},
"expiration_time_stamp": {"readonly": True},
}
@@ -807,12 +1143,13 @@ class SuppressionContract(Resource):
"id": {"key": "id", "type": "str"},
"name": {"key": "name", "type": "str"},
"type": {"key": "type", "type": "str"},
+ "system_data": {"key": "systemData", "type": "SystemData"},
"suppression_id": {"key": "properties.suppressionId", "type": "str"},
"ttl": {"key": "properties.ttl", "type": "str"},
"expiration_time_stamp": {"key": "properties.expirationTimeStamp", "type": "iso-8601"},
}
- def __init__(self, *, suppression_id: Optional[str] = None, ttl: Optional[str] = None, **kwargs):
+ def __init__(self, *, suppression_id: Optional[str] = None, ttl: Optional[str] = None, **kwargs: Any) -> None:
"""
:keyword suppression_id: The GUID of the suppression.
:paramtype suppression_id: str
@@ -840,8 +1177,12 @@ class SuppressionContractListResult(_serialization.Model):
}
def __init__(
- self, *, next_link: Optional[str] = None, value: Optional[List["_models.SuppressionContract"]] = None, **kwargs
- ):
+ self,
+ *,
+ next_link: Optional[str] = None,
+ value: Optional[List["_models.SuppressionContract"]] = None,
+ **kwargs: Any
+ ) -> None:
"""
:keyword next_link: The link used to get the next page of suppressions.
:paramtype next_link: str
@@ -851,3 +1192,101 @@ def __init__(
super().__init__(**kwargs)
self.next_link = next_link
self.value = value
+
+
+class SystemData(_serialization.Model):
+ """Metadata pertaining to creation and last modification of the resource.
+
+ :ivar created_by: The identity that created the resource.
+ :vartype created_by: str
+ :ivar created_by_type: The type of identity that created the resource. Known values are:
+ "User", "Application", "ManagedIdentity", and "Key".
+ :vartype created_by_type: str or ~azure.mgmt.advisor.models.CreatedByType
+ :ivar created_at: The timestamp of resource creation (UTC).
+ :vartype created_at: ~datetime.datetime
+ :ivar last_modified_by: The identity that last modified the resource.
+ :vartype last_modified_by: str
+ :ivar last_modified_by_type: The type of identity that last modified the resource. Known values
+ are: "User", "Application", "ManagedIdentity", and "Key".
+ :vartype last_modified_by_type: str or ~azure.mgmt.advisor.models.CreatedByType
+ :ivar last_modified_at: The timestamp of resource last modification (UTC).
+ :vartype last_modified_at: ~datetime.datetime
+ """
+
+ _attribute_map = {
+ "created_by": {"key": "createdBy", "type": "str"},
+ "created_by_type": {"key": "createdByType", "type": "str"},
+ "created_at": {"key": "createdAt", "type": "iso-8601"},
+ "last_modified_by": {"key": "lastModifiedBy", "type": "str"},
+ "last_modified_by_type": {"key": "lastModifiedByType", "type": "str"},
+ "last_modified_at": {"key": "lastModifiedAt", "type": "iso-8601"},
+ }
+
+ def __init__(
+ self,
+ *,
+ created_by: Optional[str] = None,
+ created_by_type: Optional[Union[str, "_models.CreatedByType"]] = None,
+ created_at: Optional[datetime.datetime] = None,
+ last_modified_by: Optional[str] = None,
+ last_modified_by_type: Optional[Union[str, "_models.CreatedByType"]] = None,
+ last_modified_at: Optional[datetime.datetime] = None,
+ **kwargs: Any
+ ) -> None:
+ """
+ :keyword created_by: The identity that created the resource.
+ :paramtype created_by: str
+ :keyword created_by_type: The type of identity that created the resource. Known values are:
+ "User", "Application", "ManagedIdentity", and "Key".
+ :paramtype created_by_type: str or ~azure.mgmt.advisor.models.CreatedByType
+ :keyword created_at: The timestamp of resource creation (UTC).
+ :paramtype created_at: ~datetime.datetime
+ :keyword last_modified_by: The identity that last modified the resource.
+ :paramtype last_modified_by: str
+ :keyword last_modified_by_type: The type of identity that last modified the resource. Known
+ values are: "User", "Application", "ManagedIdentity", and "Key".
+ :paramtype last_modified_by_type: str or ~azure.mgmt.advisor.models.CreatedByType
+ :keyword last_modified_at: The timestamp of resource last modification (UTC).
+ :paramtype last_modified_at: ~datetime.datetime
+ """
+ super().__init__(**kwargs)
+ self.created_by = created_by
+ self.created_by_type = created_by_type
+ self.created_at = created_at
+ self.last_modified_by = last_modified_by
+ self.last_modified_by_type = last_modified_by_type
+ self.last_modified_at = last_modified_at
+
+
+class TimeSeriesEntityItem(_serialization.Model):
+ """The data from different aggregation levels.
+
+ :ivar aggregation_level: The aggregation level of the score. Known values are: "week", "day",
+ and "month".
+ :vartype aggregation_level: str or ~azure.mgmt.advisor.models.Aggregated
+ :ivar score_history: The past score data.
+ :vartype score_history: list[~azure.mgmt.advisor.models.ScoreEntity]
+ """
+
+ _attribute_map = {
+ "aggregation_level": {"key": "aggregationLevel", "type": "str"},
+ "score_history": {"key": "scoreHistory", "type": "[ScoreEntity]"},
+ }
+
+ def __init__(
+ self,
+ *,
+ aggregation_level: Optional[Union[str, "_models.Aggregated"]] = None,
+ score_history: Optional[List["_models.ScoreEntity"]] = None,
+ **kwargs: Any
+ ) -> None:
+ """
+ :keyword aggregation_level: The aggregation level of the score. Known values are: "week",
+ "day", and "month".
+ :paramtype aggregation_level: str or ~azure.mgmt.advisor.models.Aggregated
+ :keyword score_history: The past score data.
+ :paramtype score_history: list[~azure.mgmt.advisor.models.ScoreEntity]
+ """
+ super().__init__(**kwargs)
+ self.aggregation_level = aggregation_level
+ self.score_history = score_history
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/__init__.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/__init__.py
index f1f93e70a274..fce734b9e911 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/__init__.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/__init__.py
@@ -11,9 +11,11 @@
from ._recommendations_operations import RecommendationsOperations
from ._operations import Operations
from ._suppressions_operations import SuppressionsOperations
+from ._advisor_management_client_operations import AdvisorManagementClientOperationsMixin
+from ._advisor_scores_operations import AdvisorScoresOperations
from ._patch import __all__ as _patch_all
-from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import
+from ._patch import * # pylint: disable=unused-wildcard-import
from ._patch import patch_sdk as _patch_sdk
__all__ = [
@@ -22,6 +24,8 @@
"RecommendationsOperations",
"Operations",
"SuppressionsOperations",
+ "AdvisorManagementClientOperationsMixin",
+ "AdvisorScoresOperations",
]
__all__.extend([p for p in _patch_all if p not in __all__])
_patch_sdk()
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_advisor_management_client_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_advisor_management_client_operations.py
new file mode 100644
index 000000000000..261c4b8ee2eb
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_advisor_management_client_operations.py
@@ -0,0 +1,173 @@
+# pylint: disable=too-many-lines,too-many-statements
+# 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 io import IOBase
+import sys
+from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload
+
+from azure.core.exceptions import (
+ ClientAuthenticationError,
+ HttpResponseError,
+ ResourceExistsError,
+ ResourceNotFoundError,
+ ResourceNotModifiedError,
+ map_error,
+)
+from azure.core.pipeline import PipelineResponse
+from azure.core.rest import HttpRequest, HttpResponse
+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 AdvisorManagementClientMixinABC
+
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
+else:
+ from typing import MutableMapping # 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_predict_request(subscription_id: str, **kwargs: Any) -> HttpRequest:
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
+
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
+ accept = _headers.pop("Accept", "application/json")
+
+ # Construct URL
+ _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/predict")
+ path_format_arguments = {
+ "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
+ }
+
+ _url: str = _url.format(**path_format_arguments) # type: ignore
+
+ # Construct parameters
+ _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
+
+ # Construct headers
+ if content_type is not None:
+ _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
+
+ return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
+
+
+class AdvisorManagementClientOperationsMixin(AdvisorManagementClientMixinABC):
+
+ @overload
+ def predict(
+ self, prediction_request: _models.PredictionRequest, *, content_type: str = "application/json", **kwargs: Any
+ ) -> _models.PredictionResponse:
+ """Predicts a recommendation.
+
+ Predicts a recommendation.
+
+ :param prediction_request: Parameters for predict recommendation. Required.
+ :type prediction_request: ~azure.mgmt.advisor.models.PredictionRequest
+ :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
+ Default value is "application/json".
+ :paramtype content_type: str
+ :return: PredictionResponse or the result of cls(response)
+ :rtype: ~azure.mgmt.advisor.models.PredictionResponse
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+
+ @overload
+ def predict(
+ self, prediction_request: IO[bytes], *, content_type: str = "application/json", **kwargs: Any
+ ) -> _models.PredictionResponse:
+ """Predicts a recommendation.
+
+ Predicts a recommendation.
+
+ :param prediction_request: Parameters for predict recommendation. Required.
+ :type prediction_request: IO[bytes]
+ :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
+ Default value is "application/json".
+ :paramtype content_type: str
+ :return: PredictionResponse or the result of cls(response)
+ :rtype: ~azure.mgmt.advisor.models.PredictionResponse
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+
+ @distributed_trace
+ def predict(
+ self, prediction_request: Union[_models.PredictionRequest, IO[bytes]], **kwargs: Any
+ ) -> _models.PredictionResponse:
+ """Predicts a recommendation.
+
+ Predicts a recommendation.
+
+ :param prediction_request: Parameters for predict recommendation. Is either a PredictionRequest
+ type or a IO[bytes] type. Required.
+ :type prediction_request: ~azure.mgmt.advisor.models.PredictionRequest or IO[bytes]
+ :return: PredictionResponse or the result of cls(response)
+ :rtype: ~azure.mgmt.advisor.models.PredictionResponse
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
+ 401: ClientAuthenticationError,
+ 404: ResourceNotFoundError,
+ 409: ResourceExistsError,
+ 304: ResourceNotModifiedError,
+ }
+ error_map.update(kwargs.pop("error_map", {}) or {})
+
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
+
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
+ cls: ClsType[_models.PredictionResponse] = kwargs.pop("cls", None)
+
+ content_type = content_type or "application/json"
+ _json = None
+ _content = None
+ if isinstance(prediction_request, (IOBase, bytes)):
+ _content = prediction_request
+ else:
+ _json = self._serialize.body(prediction_request, "PredictionRequest")
+
+ _request = build_predict_request(
+ subscription_id=self._config.subscription_id,
+ api_version=api_version,
+ content_type=content_type,
+ json=_json,
+ content=_content,
+ headers=_headers,
+ params=_params,
+ )
+ _request.url = self._client.format_url(_request.url)
+
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **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.ArmErrorResponse, pipeline_response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = self._deserialize("PredictionResponse", pipeline_response.http_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {}) # type: ignore
+
+ return deserialized # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_advisor_scores_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_advisor_scores_operations.py
new file mode 100644
index 000000000000..0b222b39a89d
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_advisor_scores_operations.py
@@ -0,0 +1,207 @@
+# pylint: disable=too-many-lines,too-many-statements
+# 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, Optional, Type, TypeVar
+
+from azure.core.exceptions import (
+ ClientAuthenticationError,
+ HttpResponseError,
+ ResourceExistsError,
+ ResourceNotFoundError,
+ ResourceNotModifiedError,
+ map_error,
+)
+from azure.core.pipeline import PipelineResponse
+from azure.core.rest import HttpRequest, HttpResponse
+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
+
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
+else:
+ from typing import MutableMapping # 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_request(subscription_id: str, **kwargs: Any) -> HttpRequest:
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
+
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
+ accept = _headers.pop("Accept", "application/json")
+
+ # Construct URL
+ _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/advisorScore")
+ path_format_arguments = {
+ "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
+ }
+
+ _url: str = _url.format(**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_get_request(name: str, subscription_id: str, **kwargs: Any) -> HttpRequest:
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
+
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
+ accept = _headers.pop("Accept", "application/json")
+
+ # Construct URL
+ _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/advisorScore/{name}")
+ path_format_arguments = {
+ "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
+ "name": _SERIALIZER.url("name", name, "str"),
+ }
+
+ _url: str = _url.format(**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)
+
+
+class AdvisorScoresOperations:
+ """
+ .. warning::
+ **DO NOT** instantiate this class directly.
+
+ Instead, you should access the following operations through
+ :class:`~azure.mgmt.advisor.AdvisorManagementClient`'s
+ :attr:`advisor_scores` 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(self, **kwargs: Any) -> _models.AdvisorScoreResponse:
+ """Gets the list of advisor scores.
+
+ :return: AdvisorScoreResponse or the result of cls(response)
+ :rtype: ~azure.mgmt.advisor.models.AdvisorScoreResponse
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
+ 401: ClientAuthenticationError,
+ 404: ResourceNotFoundError,
+ 409: ResourceExistsError,
+ 304: ResourceNotModifiedError,
+ }
+ error_map.update(kwargs.pop("error_map", {}) or {})
+
+ _headers = kwargs.pop("headers", {}) or {}
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
+
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.AdvisorScoreResponse] = kwargs.pop("cls", None)
+
+ _request = build_list_request(
+ subscription_id=self._config.subscription_id,
+ api_version=api_version,
+ headers=_headers,
+ params=_params,
+ )
+ _request.url = self._client.format_url(_request.url)
+
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **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.ArmErrorResponse, pipeline_response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = self._deserialize("AdvisorScoreResponse", pipeline_response.http_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {}) # type: ignore
+
+ return deserialized # type: ignore
+
+ @distributed_trace
+ def get(self, name: str, **kwargs: Any) -> _models.AdvisorScoreEntity:
+ """Gets the advisor score.
+
+ :param name: The scope of Advisor score entity. Required.
+ :type name: str
+ :return: AdvisorScoreEntity or the result of cls(response)
+ :rtype: ~azure.mgmt.advisor.models.AdvisorScoreEntity
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
+ 401: ClientAuthenticationError,
+ 404: ResourceNotFoundError,
+ 409: ResourceExistsError,
+ 304: ResourceNotModifiedError,
+ }
+ error_map.update(kwargs.pop("error_map", {}) or {})
+
+ _headers = kwargs.pop("headers", {}) or {}
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
+
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.AdvisorScoreEntity] = kwargs.pop("cls", None)
+
+ _request = build_get_request(
+ name=name,
+ subscription_id=self._config.subscription_id,
+ api_version=api_version,
+ headers=_headers,
+ params=_params,
+ )
+ _request.url = self._client.format_url(_request.url)
+
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **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.ArmErrorResponse, pipeline_response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = self._deserialize("AdvisorScoreEntity", pipeline_response.http_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {}) # type: ignore
+
+ return deserialized # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_configurations_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_configurations_operations.py
index 6b071d45b54f..4a9b581e24f3 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_configurations_operations.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_configurations_operations.py
@@ -1,4 +1,4 @@
-# pylint: disable=too-many-lines
+# pylint: disable=too-many-lines,too-many-statements
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
@@ -6,8 +6,9 @@
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------
+from io import IOBase
import sys
-from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, overload
+from typing import Any, Callable, Dict, IO, Iterable, Optional, Type, TypeVar, Union, overload
import urllib.parse
from azure.core.exceptions import (
@@ -20,20 +21,18 @@
)
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.rest import HttpRequest, HttpResponse
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
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
else:
- from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
T = TypeVar("T")
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]]
@@ -45,7 +44,7 @@ def build_list_by_subscription_request(subscription_id: str, **kwargs: Any) -> H
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -54,7 +53,7 @@ def build_list_by_subscription_request(subscription_id: str, **kwargs: Any) -> H
"subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -71,8 +70,8 @@ def build_create_in_subscription_request(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
- content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -84,7 +83,7 @@ def build_create_in_subscription_request(
"configurationName": _SERIALIZER.url("configuration_name", configuration_name, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -101,7 +100,7 @@ def build_list_by_resource_group_request(resource_group: str, subscription_id: s
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -114,7 +113,7 @@ def build_list_by_resource_group_request(resource_group: str, subscription_id: s
"resourceGroup": _SERIALIZER.url("resource_group", resource_group, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -131,8 +130,8 @@ def build_create_in_resource_group_request(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
- content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -146,7 +145,7 @@ def build_create_in_resource_group_request(
"resourceGroup": _SERIALIZER.url("resource_group", resource_group, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -185,7 +184,6 @@ def list_by_subscription(self, **kwargs: Any) -> Iterable["_models.ConfigData"]:
Retrieve Azure Advisor configurations and also retrieve configurations of contained resource
groups.
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either ConfigData or the result of cls(response)
:rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.advisor.models.ConfigData]
:raises ~azure.core.exceptions.HttpResponseError:
@@ -193,12 +191,10 @@ def list_by_subscription(self, **kwargs: Any) -> Iterable["_models.ConfigData"]:
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ConfigurationListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.ConfigurationListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -209,15 +205,13 @@ def list_by_subscription(self, **kwargs: Any) -> Iterable["_models.ConfigData"]:
def prepare_request(next_link=None):
if not next_link:
- request = build_list_by_subscription_request(
+ _request = build_list_by_subscription_request(
subscription_id=self._config.subscription_id,
api_version=api_version,
- template_url=self.list_by_subscription.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -229,26 +223,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
def extract_data(pipeline_response):
deserialized = self._deserialize("ConfigurationListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ 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)
+ _request = prepare_request(next_link)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -261,8 +255,6 @@ def get_next(next_link=None):
return ItemPaged(get_next, extract_data)
- list_by_subscription.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/configurations"} # type: ignore
-
@overload
def create_in_subscription(
self,
@@ -285,7 +277,6 @@ def create_in_subscription(
:keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
@@ -295,7 +286,7 @@ def create_in_subscription(
def create_in_subscription(
self,
configuration_name: Union[str, _models.ConfigurationName],
- config_contract: IO,
+ config_contract: IO[bytes],
*,
content_type: str = "application/json",
**kwargs: Any
@@ -309,11 +300,10 @@ def create_in_subscription(
Required.
:type configuration_name: str or ~azure.mgmt.advisor.models.ConfigurationName
:param config_contract: The Azure Advisor configuration data structure. Required.
- :type config_contract: IO
+ :type config_contract: IO[bytes]
:keyword content_type: Body Parameter content-type. Content type parameter for binary body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
@@ -323,7 +313,7 @@ def create_in_subscription(
def create_in_subscription(
self,
configuration_name: Union[str, _models.ConfigurationName],
- config_contract: Union[_models.ConfigData, IO],
+ config_contract: Union[_models.ConfigData, IO[bytes]],
**kwargs: Any
) -> _models.ConfigData:
"""Create/Overwrite Azure Advisor configuration.
@@ -334,18 +324,14 @@ def create_in_subscription(
:param configuration_name: Advisor configuration name. Value must be 'default'. "default"
Required.
:type configuration_name: str or ~azure.mgmt.advisor.models.ConfigurationName
- :param config_contract: The Azure Advisor configuration data structure. Is either a model type
- or a IO type. Required.
- :type config_contract: ~azure.mgmt.advisor.models.ConfigData or IO
- :keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
- Default value is None.
- :paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
+ :param config_contract: The Azure Advisor configuration data structure. Is either a ConfigData
+ type or a IO[bytes] type. Required.
+ :type config_contract: ~azure.mgmt.advisor.models.ConfigData or IO[bytes]
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -356,36 +342,33 @@ def create_in_subscription(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ConfigData]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
+ cls: ClsType[_models.ConfigData] = kwargs.pop("cls", None)
content_type = content_type or "application/json"
_json = None
_content = None
- if isinstance(config_contract, (IO, bytes)):
+ if isinstance(config_contract, (IOBase, bytes)):
_content = config_contract
else:
_json = self._serialize.body(config_contract, "ConfigData")
- request = build_create_in_subscription_request(
+ _request = build_create_in_subscription_request(
configuration_name=configuration_name,
subscription_id=self._config.subscription_id,
api_version=api_version,
content_type=content_type,
json=_json,
content=_content,
- template_url=self.create_in_subscription.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -395,14 +378,12 @@ def create_in_subscription(
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("ConfigData", pipeline_response)
+ deserialized = self._deserialize("ConfigData", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
-
- return deserialized
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- create_in_subscription.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/configurations/{configurationName}"} # type: ignore
+ return deserialized # type: ignore
@distributed_trace
def list_by_resource_group(self, resource_group: str, **kwargs: Any) -> Iterable["_models.ConfigData"]:
@@ -412,7 +393,6 @@ def list_by_resource_group(self, resource_group: str, **kwargs: Any) -> Iterable
:param resource_group: The name of the Azure resource group. Required.
:type resource_group: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either ConfigData or the result of cls(response)
:rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.advisor.models.ConfigData]
:raises ~azure.core.exceptions.HttpResponseError:
@@ -420,12 +400,10 @@ def list_by_resource_group(self, resource_group: str, **kwargs: Any) -> Iterable
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ConfigurationListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.ConfigurationListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -436,16 +414,14 @@ def list_by_resource_group(self, resource_group: str, **kwargs: Any) -> Iterable
def prepare_request(next_link=None):
if not next_link:
- request = build_list_by_resource_group_request(
+ _request = build_list_by_resource_group_request(
resource_group=resource_group,
subscription_id=self._config.subscription_id,
api_version=api_version,
- template_url=self.list_by_resource_group.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -457,26 +433,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
def extract_data(pipeline_response):
deserialized = self._deserialize("ConfigurationListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ list_of_elem = cls(list_of_elem) # type: ignore
return None, iter(list_of_elem)
def get_next(next_link=None):
- request = prepare_request(next_link)
+ _request = prepare_request(next_link)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -489,8 +465,6 @@ def get_next(next_link=None):
return ItemPaged(get_next, extract_data)
- list_by_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Advisor/configurations"} # type: ignore
-
@overload
def create_in_resource_group(
self,
@@ -515,7 +489,6 @@ def create_in_resource_group(
:keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
@@ -526,7 +499,7 @@ def create_in_resource_group(
self,
configuration_name: Union[str, _models.ConfigurationName],
resource_group: str,
- config_contract: IO,
+ config_contract: IO[bytes],
*,
content_type: str = "application/json",
**kwargs: Any
@@ -541,11 +514,10 @@ def create_in_resource_group(
:param resource_group: The name of the Azure resource group. Required.
:type resource_group: str
:param config_contract: The Azure Advisor configuration data structure. Required.
- :type config_contract: IO
+ :type config_contract: IO[bytes]
:keyword content_type: Body Parameter content-type. Content type parameter for binary body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
@@ -556,7 +528,7 @@ def create_in_resource_group(
self,
configuration_name: Union[str, _models.ConfigurationName],
resource_group: str,
- config_contract: Union[_models.ConfigData, IO],
+ config_contract: Union[_models.ConfigData, IO[bytes]],
**kwargs: Any
) -> _models.ConfigData:
"""Create/Overwrite Azure Advisor configuration.
@@ -568,18 +540,14 @@ def create_in_resource_group(
:type configuration_name: str or ~azure.mgmt.advisor.models.ConfigurationName
:param resource_group: The name of the Azure resource group. Required.
:type resource_group: str
- :param config_contract: The Azure Advisor configuration data structure. Is either a model type
- or a IO type. Required.
- :type config_contract: ~azure.mgmt.advisor.models.ConfigData or IO
- :keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
- Default value is None.
- :paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
+ :param config_contract: The Azure Advisor configuration data structure. Is either a ConfigData
+ type or a IO[bytes] type. Required.
+ :type config_contract: ~azure.mgmt.advisor.models.ConfigData or IO[bytes]
:return: ConfigData or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ConfigData
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -590,21 +558,19 @@ def create_in_resource_group(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ConfigData]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
+ cls: ClsType[_models.ConfigData] = kwargs.pop("cls", None)
content_type = content_type or "application/json"
_json = None
_content = None
- if isinstance(config_contract, (IO, bytes)):
+ if isinstance(config_contract, (IOBase, bytes)):
_content = config_contract
else:
_json = self._serialize.body(config_contract, "ConfigData")
- request = build_create_in_resource_group_request(
+ _request = build_create_in_resource_group_request(
configuration_name=configuration_name,
resource_group=resource_group,
subscription_id=self._config.subscription_id,
@@ -612,15 +578,14 @@ def create_in_resource_group(
content_type=content_type,
json=_json,
content=_content,
- template_url=self.create_in_resource_group.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -630,11 +595,9 @@ def create_in_resource_group(
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("ConfigData", pipeline_response)
+ deserialized = self._deserialize("ConfigData", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
-
- return deserialized
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- create_in_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Advisor/configurations/{configurationName}"} # type: ignore
+ return deserialized # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_operations.py
index 2e92a7e08768..67ded7440b62 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_operations.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_operations.py
@@ -1,4 +1,4 @@
-# pylint: disable=too-many-lines
+# pylint: disable=too-many-lines,too-many-statements
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
@@ -7,7 +7,7 @@
# 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 typing import Any, Callable, Dict, Iterable, Optional, Type, TypeVar
import urllib.parse
from azure.core.exceptions import (
@@ -20,20 +20,18 @@
)
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.rest import HttpRequest, HttpResponse
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
-if sys.version_info >= (3, 8):
- from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
else:
- from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
T = TypeVar("T")
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]]
@@ -45,7 +43,7 @@ def build_list_request(**kwargs: Any) -> HttpRequest:
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -83,7 +81,6 @@ def __init__(self, *args, **kwargs):
def list(self, **kwargs: Any) -> Iterable["_models.OperationEntity"]:
"""Lists all the available Advisor REST API operations.
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either OperationEntity or the result of cls(response)
:rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.advisor.models.OperationEntity]
:raises ~azure.core.exceptions.HttpResponseError:
@@ -91,12 +88,10 @@ def list(self, **kwargs: Any) -> Iterable["_models.OperationEntity"]:
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.OperationEntityListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.OperationEntityListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -107,14 +102,12 @@ def list(self, **kwargs: Any) -> Iterable["_models.OperationEntity"]:
def prepare_request(next_link=None):
if not next_link:
- request = build_list_request(
+ _request = build_list_request(
api_version=api_version,
- template_url=self.list.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -126,26 +119,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
def extract_data(pipeline_response):
deserialized = self._deserialize("OperationEntityListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ 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)
+ _request = prepare_request(next_link)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -157,5 +150,3 @@ def get_next(next_link=None):
return pipeline_response
return ItemPaged(get_next, extract_data)
-
- list.metadata = {"url": "/providers/Microsoft.Advisor/operations"} # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_recommendation_metadata_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_recommendation_metadata_operations.py
index 99a3bddf4cd0..ca95497b2a17 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_recommendation_metadata_operations.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_recommendation_metadata_operations.py
@@ -1,4 +1,4 @@
-# pylint: disable=too-many-lines
+# pylint: disable=too-many-lines,too-many-statements
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
@@ -7,7 +7,7 @@
# 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 typing import Any, Callable, Dict, Iterable, Optional, Type, TypeVar, cast
import urllib.parse
from azure.core.exceptions import (
@@ -20,20 +20,18 @@
)
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.rest import HttpRequest, HttpResponse
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
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
else:
- from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
T = TypeVar("T")
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]]
@@ -45,7 +43,7 @@ def build_get_request(name: str, **kwargs: Any) -> HttpRequest:
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -54,7 +52,7 @@ def build_get_request(name: str, **kwargs: Any) -> HttpRequest:
"name": _SERIALIZER.url("name", name, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -69,7 +67,7 @@ def build_list_request(**kwargs: Any) -> HttpRequest:
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -111,19 +109,21 @@ def get(self, name: str, **kwargs: Any) -> _models.MetadataEntity:
:param name: Name of metadata entity. Required.
:type name: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: MetadataEntity or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.MetadataEntity
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
409: ResourceExistsError,
304: ResourceNotModifiedError,
- 404: lambda response: ResourceNotFoundError(
- response=response,
- model=self._deserialize(_models.ARMErrorResponseBody, response),
- error_format=ARMErrorFormat,
+ 404: cast(
+ Type[HttpResponseError],
+ lambda response: ResourceNotFoundError(
+ response=response,
+ model=self._deserialize(_models.ARMErrorResponseBody, response),
+ error_format=ARMErrorFormat,
+ ),
),
}
error_map.update(kwargs.pop("error_map", {}) or {})
@@ -131,40 +131,35 @@ def get(self, name: str, **kwargs: Any) -> _models.MetadataEntity:
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.MetadataEntity]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.MetadataEntity] = kwargs.pop("cls", None)
- request = build_get_request(
+ _request = build_get_request(
name=name,
api_version=api_version,
- template_url=self.get.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **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)
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("MetadataEntity", pipeline_response)
+ deserialized = self._deserialize("MetadataEntity", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- return deserialized
-
- get.metadata = {"url": "/providers/Microsoft.Advisor/metadata/{name}"} # type: ignore
+ return deserialized # type: ignore
@distributed_trace
def list(self, **kwargs: Any) -> Iterable["_models.MetadataEntity"]:
@@ -172,7 +167,6 @@ def list(self, **kwargs: Any) -> Iterable["_models.MetadataEntity"]:
Gets the list of metadata entities.
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either MetadataEntity or the result of cls(response)
:rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.advisor.models.MetadataEntity]
:raises ~azure.core.exceptions.HttpResponseError:
@@ -180,12 +174,10 @@ def list(self, **kwargs: Any) -> Iterable["_models.MetadataEntity"]:
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.MetadataEntityListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.MetadataEntityListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -196,14 +188,12 @@ def list(self, **kwargs: Any) -> Iterable["_models.MetadataEntity"]:
def prepare_request(next_link=None):
if not next_link:
- request = build_list_request(
+ _request = build_list_request(
api_version=api_version,
- template_url=self.list.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -215,26 +205,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
def extract_data(pipeline_response):
deserialized = self._deserialize("MetadataEntityListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ 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)
+ _request = prepare_request(next_link)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -246,5 +236,3 @@ def get_next(next_link=None):
return pipeline_response
return ItemPaged(get_next, extract_data)
-
- list.metadata = {"url": "/providers/Microsoft.Advisor/metadata"} # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_recommendations_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_recommendations_operations.py
index 5022ce6e84d2..8f4cfe3e6c3d 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_recommendations_operations.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_recommendations_operations.py
@@ -1,4 +1,4 @@
-# pylint: disable=too-many-lines
+# pylint: disable=too-many-lines,too-many-statements
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
@@ -7,7 +7,7 @@
# 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 typing import Any, Callable, Dict, Iterable, Optional, Type, TypeVar
import urllib.parse
from azure.core.exceptions import (
@@ -20,20 +20,18 @@
)
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.rest import HttpRequest, HttpResponse
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
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
else:
- from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
T = TypeVar("T")
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]]
@@ -45,7 +43,7 @@ def build_generate_request(subscription_id: str, **kwargs: Any) -> HttpRequest:
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -56,7 +54,7 @@ def build_generate_request(subscription_id: str, **kwargs: Any) -> HttpRequest:
"subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -71,7 +69,7 @@ def build_get_generate_status_request(operation_id: str, subscription_id: str, *
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -84,7 +82,7 @@ def build_get_generate_status_request(operation_id: str, subscription_id: str, *
"operationId": _SERIALIZER.url("operation_id", operation_id, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -106,7 +104,7 @@ def build_list_request(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -115,7 +113,7 @@ def build_list_request(
"subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -136,7 +134,7 @@ def build_get_request(resource_uri: str, recommendation_id: str, **kwargs: Any)
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -146,7 +144,7 @@ def build_get_request(resource_uri: str, recommendation_id: str, **kwargs: Any)
"recommendationId": _SERIALIZER.url("recommendation_id", recommendation_id, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -182,12 +180,11 @@ def generate(self, **kwargs: Any) -> None: # pylint: disable=inconsistent-retur
operation is asynchronous. The generated recommendations are stored in a cache in the Advisor
service.
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: None or the result of cls(response)
:rtype: None
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -198,23 +195,20 @@ def generate(self, **kwargs: Any) -> None: # pylint: disable=inconsistent-retur
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[None]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[None] = kwargs.pop("cls", None)
- request = build_generate_request(
+ _request = build_generate_request(
subscription_id=self._config.subscription_id,
api_version=api_version,
- template_url=self.generate.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -229,9 +223,7 @@ def generate(self, **kwargs: Any) -> None: # pylint: disable=inconsistent-retur
response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After"))
if cls:
- return cls(pipeline_response, None, response_headers)
-
- generate.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/generateRecommendations"} # type: ignore
+ return cls(pipeline_response, None, response_headers) # type: ignore
@distributed_trace
def get_generate_status( # pylint: disable=inconsistent-return-statements
@@ -244,12 +236,11 @@ def get_generate_status( # pylint: disable=inconsistent-return-statements
:param operation_id: The operation ID, which can be found from the Location field in the
generate recommendation response header. Required.
:type operation_id: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: None or the result of cls(response)
:rtype: None
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -260,24 +251,21 @@ def get_generate_status( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[None]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[None] = kwargs.pop("cls", None)
- request = build_get_generate_status_request(
+ _request = build_get_generate_status_request(
operation_id=operation_id,
subscription_id=self._config.subscription_id,
api_version=api_version,
- template_url=self.get_generate_status.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -288,9 +276,7 @@ def get_generate_status( # pylint: disable=inconsistent-return-statements
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
if cls:
- return cls(pipeline_response, None, {})
-
- get_generate_status.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/generateRecommendations/{operationId}"} # type: ignore
+ return cls(pipeline_response, None, {}) # type: ignore
@distributed_trace
def list(
@@ -300,8 +286,8 @@ def list(
computed by invoking generateRecommendations.
:param filter: The filter to apply to the recommendations.:code:`
`Filter can be applied to
- properties ['ResourceId', 'ResourceGroup', 'RecommendationTypeGuid', '\ `Category
- <#category>`_\ '] with operators ['eq', 'and', 'or'].:code:`
`Example::code:`
`-
+ properties ['ResourceId', 'ResourceGroup', 'RecommendationTypeGuid', '\\ `Category
+ <#category>`_\\ '] with operators ['eq', 'and', 'or'].:code:`
`Example::code:`
`-
$filter=Category eq 'Cost' and ResourceGroup eq 'MyResourceGroup'. Default value is None.
:type filter: str
:param top: The number of recommendations per page if a paged version of this API is being
@@ -310,7 +296,6 @@ def list(
:param skip_token: The page-continuation token to use with a paged version of this API. Default
value is None.
:type skip_token: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either ResourceRecommendationBase or the result of
cls(response)
:rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.advisor.models.ResourceRecommendationBase]
@@ -319,12 +304,10 @@ def list(
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ResourceRecommendationBaseListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.ResourceRecommendationBaseListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -335,18 +318,16 @@ def list(
def prepare_request(next_link=None):
if not next_link:
- request = build_list_request(
+ _request = build_list_request(
subscription_id=self._config.subscription_id,
filter=filter,
top=top,
skip_token=skip_token,
api_version=api_version,
- template_url=self.list.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -358,26 +339,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
def extract_data(pipeline_response):
deserialized = self._deserialize("ResourceRecommendationBaseListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ 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)
+ _request = prepare_request(next_link)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -390,8 +371,6 @@ def get_next(next_link=None):
return ItemPaged(get_next, extract_data)
- list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/recommendations"} # type: ignore
-
@distributed_trace
def get(self, resource_uri: str, recommendation_id: str, **kwargs: Any) -> _models.ResourceRecommendationBase:
"""Obtains details of a cached recommendation.
@@ -401,12 +380,11 @@ def get(self, resource_uri: str, recommendation_id: str, **kwargs: Any) -> _mode
:type resource_uri: str
:param recommendation_id: The recommendation ID. Required.
:type recommendation_id: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: ResourceRecommendationBase or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.ResourceRecommendationBase
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -417,24 +395,21 @@ def get(self, resource_uri: str, recommendation_id: str, **kwargs: Any) -> _mode
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.ResourceRecommendationBase]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.ResourceRecommendationBase] = kwargs.pop("cls", None)
- request = build_get_request(
+ _request = build_get_request(
resource_uri=resource_uri,
recommendation_id=recommendation_id,
api_version=api_version,
- template_url=self.get.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -444,11 +419,9 @@ def get(self, resource_uri: str, recommendation_id: str, **kwargs: Any) -> _mode
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("ResourceRecommendationBase", pipeline_response)
+ deserialized = self._deserialize("ResourceRecommendationBase", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
-
- return deserialized
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- get.metadata = {"url": "/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}"} # type: ignore
+ return deserialized # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_suppressions_operations.py b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_suppressions_operations.py
index 37475323daa5..8fefd6bcfd9d 100644
--- a/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_suppressions_operations.py
+++ b/sdk/advisor/azure-mgmt-advisor/azure/mgmt/advisor/operations/_suppressions_operations.py
@@ -1,4 +1,4 @@
-# pylint: disable=too-many-lines
+# pylint: disable=too-many-lines,too-many-statements
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
@@ -6,8 +6,9 @@
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------
+from io import IOBase
import sys
-from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, overload
+from typing import Any, Callable, Dict, IO, Iterable, Optional, Type, TypeVar, Union, cast, overload
import urllib.parse
from azure.core.exceptions import (
@@ -20,20 +21,18 @@
)
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.rest import HttpRequest, HttpResponse
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
+if sys.version_info >= (3, 9):
+ from collections.abc import MutableMapping
else:
- from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports
+ from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports
T = TypeVar("T")
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]]
@@ -45,7 +44,7 @@ def build_get_request(resource_uri: str, recommendation_id: str, name: str, **kw
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -59,7 +58,7 @@ def build_get_request(resource_uri: str, recommendation_id: str, name: str, **kw
"name": _SERIALIZER.url("name", name, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -74,8 +73,8 @@ def build_create_request(resource_uri: str, recommendation_id: str, name: str, *
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
- content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -89,7 +88,7 @@ def build_create_request(resource_uri: str, recommendation_id: str, name: str, *
"name": _SERIALIZER.url("name", name, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -106,7 +105,7 @@ def build_delete_request(resource_uri: str, recommendation_id: str, name: str, *
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -120,7 +119,7 @@ def build_delete_request(resource_uri: str, recommendation_id: str, name: str, *
"name": _SERIALIZER.url("name", name, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -137,7 +136,7 @@ def build_list_request(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop("api_version", _params.pop("api-version", "2020-01-01")) # type: Literal["2020-01-01"]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-01-01"))
accept = _headers.pop("Accept", "application/json")
# Construct URL
@@ -146,7 +145,7 @@ def build_list_request(
"subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
}
- _url = _format_url_section(_url, **path_format_arguments)
+ _url: str = _url.format(**path_format_arguments) # type: ignore
# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
@@ -191,19 +190,21 @@ def get(self, resource_uri: str, recommendation_id: str, name: str, **kwargs: An
:type recommendation_id: str
:param name: The name of the suppression. Required.
:type name: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: SuppressionContract or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.SuppressionContract
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
409: ResourceExistsError,
304: ResourceNotModifiedError,
- 404: lambda response: ResourceNotFoundError(
- response=response,
- model=self._deserialize(_models.ArmErrorResponse, response),
- error_format=ARMErrorFormat,
+ 404: cast(
+ Type[HttpResponseError],
+ lambda response: ResourceNotFoundError(
+ response=response,
+ model=self._deserialize(_models.ArmErrorResponse, response),
+ error_format=ARMErrorFormat,
+ ),
),
}
error_map.update(kwargs.pop("error_map", {}) or {})
@@ -211,42 +212,37 @@ def get(self, resource_uri: str, recommendation_id: str, name: str, **kwargs: An
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.SuppressionContract]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.SuppressionContract] = kwargs.pop("cls", None)
- request = build_get_request(
+ _request = build_get_request(
resource_uri=resource_uri,
recommendation_id=recommendation_id,
name=name,
api_version=api_version,
- template_url=self.get.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **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)
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("SuppressionContract", pipeline_response)
+ deserialized = self._deserialize("SuppressionContract", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
-
- return deserialized
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- get.metadata = {"url": "/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}/suppressions/{name}"} # type: ignore
+ return deserialized # type: ignore
@overload
def create(
@@ -276,7 +272,6 @@ def create(
:keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: SuppressionContract or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.SuppressionContract
:raises ~azure.core.exceptions.HttpResponseError:
@@ -288,7 +283,7 @@ def create(
resource_uri: str,
recommendation_id: str,
name: str,
- suppression_contract: IO,
+ suppression_contract: IO[bytes],
*,
content_type: str = "application/json",
**kwargs: Any
@@ -306,11 +301,10 @@ def create(
:type name: str
:param suppression_contract: The snoozed or dismissed attribute; for example, the snooze
duration. Required.
- :type suppression_contract: IO
+ :type suppression_contract: IO[bytes]
:keyword content_type: Body Parameter content-type. Content type parameter for binary body.
Default value is "application/json".
:paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: SuppressionContract or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.SuppressionContract
:raises ~azure.core.exceptions.HttpResponseError:
@@ -322,7 +316,7 @@ def create(
resource_uri: str,
recommendation_id: str,
name: str,
- suppression_contract: Union[_models.SuppressionContract, IO],
+ suppression_contract: Union[_models.SuppressionContract, IO[bytes]],
**kwargs: Any
) -> _models.SuppressionContract:
"""Enables the snoozed or dismissed attribute of a recommendation. The snoozed or dismissed
@@ -337,24 +331,23 @@ def create(
:param name: The name of the suppression. Required.
:type name: str
:param suppression_contract: The snoozed or dismissed attribute; for example, the snooze
- duration. Is either a model type or a IO type. Required.
- :type suppression_contract: ~azure.mgmt.advisor.models.SuppressionContract or IO
- :keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
- Default value is None.
- :paramtype content_type: str
- :keyword callable cls: A custom type or function that will be passed the direct response
+ duration. Is either a SuppressionContract type or a IO[bytes] type. Required.
+ :type suppression_contract: ~azure.mgmt.advisor.models.SuppressionContract or IO[bytes]
:return: SuppressionContract or the result of cls(response)
:rtype: ~azure.mgmt.advisor.models.SuppressionContract
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
409: ResourceExistsError,
304: ResourceNotModifiedError,
- 404: lambda response: ResourceNotFoundError(
- response=response,
- model=self._deserialize(_models.ArmErrorResponse, response),
- error_format=ARMErrorFormat,
+ 404: cast(
+ Type[HttpResponseError],
+ lambda response: ResourceNotFoundError(
+ response=response,
+ model=self._deserialize(_models.ArmErrorResponse, response),
+ error_format=ARMErrorFormat,
+ ),
),
}
error_map.update(kwargs.pop("error_map", {}) or {})
@@ -362,21 +355,19 @@ def create(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.SuppressionContract]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
+ cls: ClsType[_models.SuppressionContract] = kwargs.pop("cls", None)
content_type = content_type or "application/json"
_json = None
_content = None
- if isinstance(suppression_contract, (IO, bytes)):
+ if isinstance(suppression_contract, (IOBase, bytes)):
_content = suppression_contract
else:
_json = self._serialize.body(suppression_contract, "SuppressionContract")
- request = build_create_request(
+ _request = build_create_request(
resource_uri=resource_uri,
recommendation_id=recommendation_id,
name=name,
@@ -384,32 +375,29 @@ def create(
content_type=content_type,
json=_json,
content=_content,
- template_url=self.create.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **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)
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
error = self._deserialize.failsafe_deserialize(_models.ArmErrorResponse, pipeline_response)
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
- deserialized = self._deserialize("SuppressionContract", pipeline_response)
+ deserialized = self._deserialize("SuppressionContract", pipeline_response.http_response)
if cls:
- return cls(pipeline_response, deserialized, {})
-
- return deserialized
+ return cls(pipeline_response, deserialized, {}) # type: ignore
- create.metadata = {"url": "/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}/suppressions/{name}"} # type: ignore
+ return deserialized # type: ignore
@distributed_trace
def delete( # pylint: disable=inconsistent-return-statements
@@ -425,12 +413,11 @@ def delete( # pylint: disable=inconsistent-return-statements
:type recommendation_id: str
:param name: The name of the suppression. Required.
:type name: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: None or the result of cls(response)
:rtype: None
:raises ~azure.core.exceptions.HttpResponseError:
"""
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -441,25 +428,22 @@ def delete( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[None]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[None] = kwargs.pop("cls", None)
- request = build_delete_request(
+ _request = build_delete_request(
resource_uri=resource_uri,
recommendation_id=recommendation_id,
name=name,
api_version=api_version,
- template_url=self.delete.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -470,9 +454,7 @@ def delete( # pylint: disable=inconsistent-return-statements
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
if cls:
- return cls(pipeline_response, None, {})
-
- delete.metadata = {"url": "/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}/suppressions/{name}"} # type: ignore
+ return cls(pipeline_response, None, {}) # type: ignore
@distributed_trace
def list(
@@ -487,7 +469,6 @@ def list(
:param skip_token: The page-continuation token to use with a paged version of this API. Default
value is None.
:type skip_token: str
- :keyword callable cls: A custom type or function that will be passed the direct response
:return: An iterator like instance of either SuppressionContract or the result of cls(response)
:rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.advisor.models.SuppressionContract]
:raises ~azure.core.exceptions.HttpResponseError:
@@ -495,12 +476,10 @@ def list(
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
- api_version = kwargs.pop(
- "api_version", _params.pop("api-version", self._config.api_version)
- ) # type: Literal["2020-01-01"]
- cls = kwargs.pop("cls", None) # type: ClsType[_models.SuppressionContractListResult]
+ api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version))
+ cls: ClsType[_models.SuppressionContractListResult] = kwargs.pop("cls", None)
- error_map = {
+ error_map: MutableMapping[int, Type[HttpResponseError]] = {
401: ClientAuthenticationError,
404: ResourceNotFoundError,
409: ResourceExistsError,
@@ -511,17 +490,15 @@ def list(
def prepare_request(next_link=None):
if not next_link:
- request = build_list_request(
+ _request = build_list_request(
subscription_id=self._config.subscription_id,
top=top,
skip_token=skip_token,
api_version=api_version,
- template_url=self.list.metadata["url"],
headers=_headers,
params=_params,
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
+ _request.url = self._client.format_url(_request.url)
else:
# make call to next link with the client's api-version
@@ -533,26 +510,26 @@ def prepare_request(next_link=None):
}
)
_next_request_params["api-version"] = self._config.api_version
- request = HttpRequest(
+ _request = HttpRequest(
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params
)
- request = _convert_request(request)
- request.url = self._client.format_url(request.url) # type: ignore
- request.method = "GET"
- return request
+ _request.url = self._client.format_url(_request.url)
+ _request.method = "GET"
+ return _request
def extract_data(pipeline_response):
deserialized = self._deserialize("SuppressionContractListResult", pipeline_response)
list_of_elem = deserialized.value
if cls:
- list_of_elem = cls(list_of_elem)
+ 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)
+ _request = prepare_request(next_link)
- pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access
- request, stream=False, **kwargs
+ _stream = False
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
+ _request, stream=_stream, **kwargs
)
response = pipeline_response.http_response
@@ -564,5 +541,3 @@ def get_next(next_link=None):
return pipeline_response
return ItemPaged(get_next, extract_data)
-
- list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/suppressions"} # type: ignore
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/put_configurations.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/create_configuration.py
similarity index 89%
rename from sdk/advisor/azure-mgmt-advisor/generated_samples/put_configurations.py
rename to sdk/advisor/azure-mgmt-advisor/generated_samples/create_configuration.py
index 8e1bb6e674c1..bdcf53ca001c 100644
--- a/sdk/advisor/azure-mgmt-advisor/generated_samples/put_configurations.py
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/create_configuration.py
@@ -7,6 +7,7 @@
# --------------------------------------------------------------------------
from azure.identity import DefaultAzureCredential
+
from azure.mgmt.advisor import AdvisorManagementClient
"""
@@ -14,7 +15,7 @@
pip install azure-identity
pip install azure-mgmt-advisor
# USAGE
- python put_configurations.py
+ python create_configuration.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,
@@ -29,8 +30,9 @@ def main():
subscription_id="subscriptionId",
)
- response = client.configurations.create_in_subscription(
+ response = client.configurations.create_in_resource_group(
configuration_name="default",
+ resource_group="resourceGroup",
config_contract={
"properties": {
"digests": [
@@ -43,6 +45,7 @@ def main():
"state": "Active",
}
],
+ "duration": "7",
"exclude": True,
"lowCpuThreshold": "5",
}
@@ -51,6 +54,6 @@ def main():
print(response)
-# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2020-01-01/examples/CreateConfiguration.json
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/CreateConfiguration.json
if __name__ == "__main__":
main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/create_suppression.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/create_suppression.py
index 2ca0b00a092e..fdbc801459fb 100644
--- a/sdk/advisor/azure-mgmt-advisor/generated_samples/create_suppression.py
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/create_suppression.py
@@ -7,6 +7,7 @@
# --------------------------------------------------------------------------
from azure.identity import DefaultAzureCredential
+
from azure.mgmt.advisor import AdvisorManagementClient
"""
@@ -38,6 +39,6 @@ def main():
print(response)
-# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2020-01-01/examples/CreateSuppression.json
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/CreateSuppression.json
if __name__ == "__main__":
main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/delete_suppression.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/delete_suppression.py
index 0d878dcbee5b..c5ff4313edc8 100644
--- a/sdk/advisor/azure-mgmt-advisor/generated_samples/delete_suppression.py
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/delete_suppression.py
@@ -7,6 +7,7 @@
# --------------------------------------------------------------------------
from azure.identity import DefaultAzureCredential
+
from azure.mgmt.advisor import AdvisorManagementClient
"""
@@ -29,14 +30,13 @@ def main():
subscription_id="SUBSCRIPTION_ID",
)
- response = client.suppressions.delete(
+ client.suppressions.delete(
resource_uri="resourceUri",
recommendation_id="recommendationId",
name="suppressionName1",
)
- print(response)
-# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2020-01-01/examples/DeleteSuppression.json
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/DeleteSuppression.json
if __name__ == "__main__":
main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/empty_response.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/empty_response.py
new file mode 100644
index 000000000000..f224cfd033a3
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/empty_response.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.advisor import AdvisorManagementClient
+
+"""
+# PREREQUISITES
+ pip install azure-identity
+ pip install azure-mgmt-advisor
+# USAGE
+ python empty_response.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 = AdvisorManagementClient(
+ credential=DefaultAzureCredential(),
+ subscription_id="subscriptionId",
+ )
+
+ client.recommendations.get_generate_status(
+ operation_id="123e4567-e89b-12d3-a456-426614174000",
+ )
+
+
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/EmptyResponse.json
+if __name__ == "__main__":
+ main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/generate_recommendations.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/generate_recommendations.py
index adff66f2e80c..7b2aeca36251 100644
--- a/sdk/advisor/azure-mgmt-advisor/generated_samples/generate_recommendations.py
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/generate_recommendations.py
@@ -7,6 +7,7 @@
# --------------------------------------------------------------------------
from azure.identity import DefaultAzureCredential
+
from azure.mgmt.advisor import AdvisorManagementClient
"""
@@ -29,10 +30,9 @@ def main():
subscription_id="subscriptionId",
)
- response = client.recommendations.generate()
- print(response)
+ client.recommendations.generate()
-# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2020-01-01/examples/GenerateRecommendations.json
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/GenerateRecommendations.json
if __name__ == "__main__":
main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/get_generate_status.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/get_advisor_score_detail.py
similarity index 81%
rename from sdk/advisor/azure-mgmt-advisor/generated_samples/get_generate_status.py
rename to sdk/advisor/azure-mgmt-advisor/generated_samples/get_advisor_score_detail.py
index 37b8c96e0bf0..1a371e9d8762 100644
--- a/sdk/advisor/azure-mgmt-advisor/generated_samples/get_generate_status.py
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/get_advisor_score_detail.py
@@ -7,6 +7,7 @@
# --------------------------------------------------------------------------
from azure.identity import DefaultAzureCredential
+
from azure.mgmt.advisor import AdvisorManagementClient
"""
@@ -14,7 +15,7 @@
pip install azure-identity
pip install azure-mgmt-advisor
# USAGE
- python get_generate_status.py
+ python get_advisor_score_detail.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,
@@ -26,15 +27,15 @@
def main():
client = AdvisorManagementClient(
credential=DefaultAzureCredential(),
- subscription_id="00000000-0000-0000-0000-000000000000",
+ subscription_id="subscriptionId",
)
- response = client.recommendations.get_generate_status(
- operation_id="00000000-0000-0000-0000-000000000000",
+ response = client.advisor_scores.get(
+ name="Cost",
)
print(response)
-# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2020-01-01/examples/EmptyResponse.json
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/GetAdvisorScoreDetail.json
if __name__ == "__main__":
main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/get_recommendation_detail.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/get_recommendation_detail.py
index 59378ae36af4..88977ad060e5 100644
--- a/sdk/advisor/azure-mgmt-advisor/generated_samples/get_recommendation_detail.py
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/get_recommendation_detail.py
@@ -7,6 +7,7 @@
# --------------------------------------------------------------------------
from azure.identity import DefaultAzureCredential
+
from azure.mgmt.advisor import AdvisorManagementClient
"""
@@ -36,6 +37,6 @@ def main():
print(response)
-# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2020-01-01/examples/GetRecommendationDetail.json
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/GetRecommendationDetail.json
if __name__ == "__main__":
main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/get_metadata.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/get_recommendation_metadata_entity.py
similarity index 92%
rename from sdk/advisor/azure-mgmt-advisor/generated_samples/get_metadata.py
rename to sdk/advisor/azure-mgmt-advisor/generated_samples/get_recommendation_metadata_entity.py
index f7687a0fb0ff..86e2d64644ca 100644
--- a/sdk/advisor/azure-mgmt-advisor/generated_samples/get_metadata.py
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/get_recommendation_metadata_entity.py
@@ -7,6 +7,7 @@
# --------------------------------------------------------------------------
from azure.identity import DefaultAzureCredential
+
from azure.mgmt.advisor import AdvisorManagementClient
"""
@@ -14,7 +15,7 @@
pip install azure-identity
pip install azure-mgmt-advisor
# USAGE
- python get_metadata.py
+ python get_recommendation_metadata_entity.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,
@@ -35,6 +36,6 @@ def main():
print(response)
-# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2020-01-01/examples/GetRecommendationMetadataEntity.json
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/GetRecommendationMetadataEntity.json
if __name__ == "__main__":
main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/get_suppression_detail.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/get_suppression_detail.py
index 23327ee3db2d..88c2d4ba99d1 100644
--- a/sdk/advisor/azure-mgmt-advisor/generated_samples/get_suppression_detail.py
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/get_suppression_detail.py
@@ -7,6 +7,7 @@
# --------------------------------------------------------------------------
from azure.identity import DefaultAzureCredential
+
from azure.mgmt.advisor import AdvisorManagementClient
"""
@@ -37,6 +38,6 @@ def main():
print(response)
-# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2020-01-01/examples/GetSuppressionDetail.json
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/GetSuppressionDetail.json
if __name__ == "__main__":
main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/list_advisor_score.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/list_advisor_score.py
new file mode 100644
index 000000000000..9439422cb420
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/list_advisor_score.py
@@ -0,0 +1,39 @@
+# 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.advisor import AdvisorManagementClient
+
+"""
+# PREREQUISITES
+ pip install azure-identity
+ pip install azure-mgmt-advisor
+# USAGE
+ python list_advisor_score.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 = AdvisorManagementClient(
+ credential=DefaultAzureCredential(),
+ subscription_id="subscriptionId",
+ )
+
+ response = client.advisor_scores.list()
+ print(response)
+
+
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/ListAdvisorScore.json
+if __name__ == "__main__":
+ main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/get_configurations.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/list_configurations.py
similarity index 86%
rename from sdk/advisor/azure-mgmt-advisor/generated_samples/get_configurations.py
rename to sdk/advisor/azure-mgmt-advisor/generated_samples/list_configurations.py
index 775e2df8b694..458c229616b6 100644
--- a/sdk/advisor/azure-mgmt-advisor/generated_samples/get_configurations.py
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/list_configurations.py
@@ -7,6 +7,7 @@
# --------------------------------------------------------------------------
from azure.identity import DefaultAzureCredential
+
from azure.mgmt.advisor import AdvisorManagementClient
"""
@@ -14,7 +15,7 @@
pip install azure-identity
pip install azure-mgmt-advisor
# USAGE
- python get_configurations.py
+ python list_configurations.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,
@@ -29,11 +30,13 @@ def main():
subscription_id="subscriptionId",
)
- response = client.configurations.list_by_subscription()
+ response = client.configurations.list_by_resource_group(
+ resource_group="resourceGroup",
+ )
for item in response:
print(item)
-# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2020-01-01/examples/ListConfigurations.json
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/ListConfigurations.json
if __name__ == "__main__":
main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/list_recommendation_metadata.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/list_recommendation_metadata.py
new file mode 100644
index 000000000000..c789dcf25c55
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/list_recommendation_metadata.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.advisor import AdvisorManagementClient
+
+"""
+# PREREQUISITES
+ pip install azure-identity
+ pip install azure-mgmt-advisor
+# USAGE
+ python list_recommendation_metadata.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 = AdvisorManagementClient(
+ credential=DefaultAzureCredential(),
+ subscription_id="SUBSCRIPTION_ID",
+ )
+
+ response = client.recommendation_metadata.list()
+ for item in response:
+ print(item)
+
+
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/ListRecommendationMetadata.json
+if __name__ == "__main__":
+ main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/list_recommendations.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/list_recommendations.py
index d323d2a2f489..0e0a29ea4ce3 100644
--- a/sdk/advisor/azure-mgmt-advisor/generated_samples/list_recommendations.py
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/list_recommendations.py
@@ -7,6 +7,7 @@
# --------------------------------------------------------------------------
from azure.identity import DefaultAzureCredential
+
from azure.mgmt.advisor import AdvisorManagementClient
"""
@@ -34,6 +35,6 @@ def main():
print(item)
-# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2020-01-01/examples/ListRecommendations.json
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/ListRecommendations.json
if __name__ == "__main__":
main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/list_suppressions.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/list_suppressions.py
index e256f99d45c6..7498ed90ed0b 100644
--- a/sdk/advisor/azure-mgmt-advisor/generated_samples/list_suppressions.py
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/list_suppressions.py
@@ -7,6 +7,7 @@
# --------------------------------------------------------------------------
from azure.identity import DefaultAzureCredential
+
from azure.mgmt.advisor import AdvisorManagementClient
"""
@@ -34,6 +35,6 @@ def main():
print(item)
-# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2020-01-01/examples/ListSuppressions.json
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/ListSuppressions.json
if __name__ == "__main__":
main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/operations_list.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/operations_list.py
new file mode 100644
index 000000000000..b9b8a51b96a5
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/operations_list.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.advisor import AdvisorManagementClient
+
+"""
+# PREREQUISITES
+ pip install azure-identity
+ pip install azure-mgmt-advisor
+# USAGE
+ python operations_list.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 = AdvisorManagementClient(
+ credential=DefaultAzureCredential(),
+ subscription_id="SUBSCRIPTION_ID",
+ )
+
+ response = client.operations.list()
+ for item in response:
+ print(item)
+
+
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/OperationsList.json
+if __name__ == "__main__":
+ main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_samples/predict.py b/sdk/advisor/azure-mgmt-advisor/generated_samples/predict.py
new file mode 100644
index 000000000000..4c90e03cfe23
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_samples/predict.py
@@ -0,0 +1,52 @@
+# 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.advisor import AdvisorManagementClient
+
+"""
+# PREREQUISITES
+ pip install azure-identity
+ pip install azure-mgmt-advisor
+# USAGE
+ python predict.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 = AdvisorManagementClient(
+ credential=DefaultAzureCredential(),
+ subscription_id="subscriptionId",
+ )
+
+ response = client.predict(
+ prediction_request={
+ "properties": {
+ "extendedProperties": {
+ "deploymentType": "Linux_IaaS_Software_Store",
+ "numberOfInstances": 10,
+ "region": "CentralUS",
+ "sku": "Standard_Dv4",
+ "type": "iaas",
+ },
+ "predictionType": "PredictiveRightsizing",
+ }
+ },
+ )
+ print(response)
+
+
+# x-ms-original-file: specification/advisor/resource-manager/Microsoft.Advisor/stable/2023-01-01/examples/Predict.json
+if __name__ == "__main__":
+ main()
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/conftest.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/conftest.py
new file mode 100644
index 000000000000..86fe880ef58e
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/conftest.py
@@ -0,0 +1,35 @@
+# 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 os
+import pytest
+from dotenv import load_dotenv
+from devtools_testutils import (
+ test_proxy,
+ add_general_regex_sanitizer,
+ add_body_key_sanitizer,
+ add_header_regex_sanitizer,
+)
+
+load_dotenv()
+
+
+# aovid record sensitive identity information in recordings
+@pytest.fixture(scope="session", autouse=True)
+def add_sanitizers(test_proxy):
+ advisormanagement_subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000")
+ advisormanagement_tenant_id = os.environ.get("AZURE_TENANT_ID", "00000000-0000-0000-0000-000000000000")
+ advisormanagement_client_id = os.environ.get("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000")
+ advisormanagement_client_secret = os.environ.get("AZURE_CLIENT_SECRET", "00000000-0000-0000-0000-000000000000")
+ add_general_regex_sanitizer(regex=advisormanagement_subscription_id, value="00000000-0000-0000-0000-000000000000")
+ add_general_regex_sanitizer(regex=advisormanagement_tenant_id, value="00000000-0000-0000-0000-000000000000")
+ add_general_regex_sanitizer(regex=advisormanagement_client_id, value="00000000-0000-0000-0000-000000000000")
+ add_general_regex_sanitizer(regex=advisormanagement_client_secret, value="00000000-0000-0000-0000-000000000000")
+
+ add_header_regex_sanitizer(key="Set-Cookie", value="[set-cookie;]")
+ add_header_regex_sanitizer(key="Cookie", value="cookie;")
+ add_body_key_sanitizer(json_path="$..access_token", value="access_token")
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management.py
new file mode 100644
index 000000000000..aea28ecf14ad
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management.py
@@ -0,0 +1,30 @@
+# 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 pytest
+from azure.mgmt.advisor import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagement(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_predict(self, resource_group):
+ response = self.client.predict(
+ prediction_request={"extendedProperties": {}, "predictionType": "str"},
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_advisor_scores_operations.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_advisor_scores_operations.py
new file mode 100644
index 000000000000..263cb4dac262
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_advisor_scores_operations.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.
+# --------------------------------------------------------------------------
+import pytest
+from azure.mgmt.advisor import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementAdvisorScoresOperations(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_list(self, resource_group):
+ response = self.client.advisor_scores.list(
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_get(self, resource_group):
+ response = self.client.advisor_scores.get(
+ name="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_advisor_scores_operations_async.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_advisor_scores_operations_async.py
new file mode 100644
index 000000000000..d2c43366c6e6
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_advisor_scores_operations_async.py
@@ -0,0 +1,41 @@
+# 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 pytest
+from azure.mgmt.advisor.aio import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer
+from devtools_testutils.aio import recorded_by_proxy_async
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementAdvisorScoresOperationsAsync(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient, is_async=True)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_list(self, resource_group):
+ response = await self.client.advisor_scores.list(
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_get(self, resource_group):
+ response = await self.client.advisor_scores.get(
+ name="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_async.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_async.py
new file mode 100644
index 000000000000..d52263ccac78
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_async.py
@@ -0,0 +1,31 @@
+# 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 pytest
+from azure.mgmt.advisor.aio import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer
+from devtools_testutils.aio import recorded_by_proxy_async
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementAsync(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient, is_async=True)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_predict(self, resource_group):
+ response = await self.client.predict(
+ prediction_request={"extendedProperties": {}, "predictionType": "str"},
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_configurations_operations.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_configurations_operations.py
new file mode 100644
index 000000000000..082e89edae5d
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_configurations_operations.py
@@ -0,0 +1,115 @@
+# 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 pytest
+from azure.mgmt.advisor import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementConfigurationsOperations(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_list_by_subscription(self, resource_group):
+ response = self.client.configurations.list_by_subscription(
+ api_version="2023-01-01",
+ )
+ result = [r for r in response]
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_create_in_subscription(self, resource_group):
+ response = self.client.configurations.create_in_subscription(
+ configuration_name="str",
+ config_contract={
+ "digests": [
+ {
+ "actionGroupResourceId": "str",
+ "categories": ["str"],
+ "frequency": 0,
+ "language": "str",
+ "name": "str",
+ "state": "str",
+ }
+ ],
+ "duration": "str",
+ "exclude": bool,
+ "id": "str",
+ "lowCpuThreshold": "str",
+ "name": "str",
+ "systemData": {
+ "createdAt": "2020-02-20 00:00:00",
+ "createdBy": "str",
+ "createdByType": "str",
+ "lastModifiedAt": "2020-02-20 00:00:00",
+ "lastModifiedBy": "str",
+ "lastModifiedByType": "str",
+ },
+ "type": "str",
+ },
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_list_by_resource_group(self, resource_group):
+ response = self.client.configurations.list_by_resource_group(
+ resource_group="str",
+ api_version="2023-01-01",
+ )
+ result = [r for r in response]
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_create_in_resource_group(self, resource_group):
+ response = self.client.configurations.create_in_resource_group(
+ configuration_name="str",
+ resource_group="str",
+ config_contract={
+ "digests": [
+ {
+ "actionGroupResourceId": "str",
+ "categories": ["str"],
+ "frequency": 0,
+ "language": "str",
+ "name": "str",
+ "state": "str",
+ }
+ ],
+ "duration": "str",
+ "exclude": bool,
+ "id": "str",
+ "lowCpuThreshold": "str",
+ "name": "str",
+ "systemData": {
+ "createdAt": "2020-02-20 00:00:00",
+ "createdBy": "str",
+ "createdByType": "str",
+ "lastModifiedAt": "2020-02-20 00:00:00",
+ "lastModifiedBy": "str",
+ "lastModifiedByType": "str",
+ },
+ "type": "str",
+ },
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_configurations_operations_async.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_configurations_operations_async.py
new file mode 100644
index 000000000000..7d18321cf4ef
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_configurations_operations_async.py
@@ -0,0 +1,116 @@
+# 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 pytest
+from azure.mgmt.advisor.aio import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer
+from devtools_testutils.aio import recorded_by_proxy_async
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementConfigurationsOperationsAsync(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient, is_async=True)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_list_by_subscription(self, resource_group):
+ response = self.client.configurations.list_by_subscription(
+ api_version="2023-01-01",
+ )
+ result = [r async for r in response]
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_create_in_subscription(self, resource_group):
+ response = await self.client.configurations.create_in_subscription(
+ configuration_name="str",
+ config_contract={
+ "digests": [
+ {
+ "actionGroupResourceId": "str",
+ "categories": ["str"],
+ "frequency": 0,
+ "language": "str",
+ "name": "str",
+ "state": "str",
+ }
+ ],
+ "duration": "str",
+ "exclude": bool,
+ "id": "str",
+ "lowCpuThreshold": "str",
+ "name": "str",
+ "systemData": {
+ "createdAt": "2020-02-20 00:00:00",
+ "createdBy": "str",
+ "createdByType": "str",
+ "lastModifiedAt": "2020-02-20 00:00:00",
+ "lastModifiedBy": "str",
+ "lastModifiedByType": "str",
+ },
+ "type": "str",
+ },
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_list_by_resource_group(self, resource_group):
+ response = self.client.configurations.list_by_resource_group(
+ resource_group="str",
+ api_version="2023-01-01",
+ )
+ result = [r async for r in response]
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_create_in_resource_group(self, resource_group):
+ response = await self.client.configurations.create_in_resource_group(
+ configuration_name="str",
+ resource_group="str",
+ config_contract={
+ "digests": [
+ {
+ "actionGroupResourceId": "str",
+ "categories": ["str"],
+ "frequency": 0,
+ "language": "str",
+ "name": "str",
+ "state": "str",
+ }
+ ],
+ "duration": "str",
+ "exclude": bool,
+ "id": "str",
+ "lowCpuThreshold": "str",
+ "name": "str",
+ "systemData": {
+ "createdAt": "2020-02-20 00:00:00",
+ "createdBy": "str",
+ "createdByType": "str",
+ "lastModifiedAt": "2020-02-20 00:00:00",
+ "lastModifiedBy": "str",
+ "lastModifiedByType": "str",
+ },
+ "type": "str",
+ },
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_operations.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_operations.py
new file mode 100644
index 000000000000..ba55898bdcb6
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_operations.py
@@ -0,0 +1,29 @@
+# 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 pytest
+from azure.mgmt.advisor import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementOperations(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_list(self, resource_group):
+ response = self.client.operations.list(
+ api_version="2023-01-01",
+ )
+ result = [r for r in response]
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_operations_async.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_operations_async.py
new file mode 100644
index 000000000000..3336ba803d26
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_operations_async.py
@@ -0,0 +1,30 @@
+# 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 pytest
+from azure.mgmt.advisor.aio import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer
+from devtools_testutils.aio import recorded_by_proxy_async
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementOperationsAsync(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient, is_async=True)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_list(self, resource_group):
+ response = self.client.operations.list(
+ api_version="2023-01-01",
+ )
+ result = [r async for r in response]
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendation_metadata_operations.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendation_metadata_operations.py
new file mode 100644
index 000000000000..312bc7df50dc
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendation_metadata_operations.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.
+# --------------------------------------------------------------------------
+import pytest
+from azure.mgmt.advisor import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementRecommendationMetadataOperations(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_get(self, resource_group):
+ response = self.client.recommendation_metadata.get(
+ name="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_list(self, resource_group):
+ response = self.client.recommendation_metadata.list(
+ api_version="2023-01-01",
+ )
+ result = [r for r in response]
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendation_metadata_operations_async.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendation_metadata_operations_async.py
new file mode 100644
index 000000000000..2104f5207f32
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendation_metadata_operations_async.py
@@ -0,0 +1,41 @@
+# 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 pytest
+from azure.mgmt.advisor.aio import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer
+from devtools_testutils.aio import recorded_by_proxy_async
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementRecommendationMetadataOperationsAsync(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient, is_async=True)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_get(self, resource_group):
+ response = await self.client.recommendation_metadata.get(
+ name="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_list(self, resource_group):
+ response = self.client.recommendation_metadata.list(
+ api_version="2023-01-01",
+ )
+ result = [r async for r in response]
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendations_operations.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendations_operations.py
new file mode 100644
index 000000000000..ae4ac304b744
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendations_operations.py
@@ -0,0 +1,62 @@
+# 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 pytest
+from azure.mgmt.advisor import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementRecommendationsOperations(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_generate(self, resource_group):
+ response = self.client.recommendations.generate(
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_get_generate_status(self, resource_group):
+ response = self.client.recommendations.get_generate_status(
+ operation_id="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_list(self, resource_group):
+ response = self.client.recommendations.list(
+ api_version="2023-01-01",
+ )
+ result = [r for r in response]
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_get(self, resource_group):
+ response = self.client.recommendations.get(
+ resource_uri="str",
+ recommendation_id="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendations_operations_async.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendations_operations_async.py
new file mode 100644
index 000000000000..107a5d5cb6b6
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_recommendations_operations_async.py
@@ -0,0 +1,63 @@
+# 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 pytest
+from azure.mgmt.advisor.aio import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer
+from devtools_testutils.aio import recorded_by_proxy_async
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementRecommendationsOperationsAsync(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient, is_async=True)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_generate(self, resource_group):
+ response = await self.client.recommendations.generate(
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_get_generate_status(self, resource_group):
+ response = await self.client.recommendations.get_generate_status(
+ operation_id="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_list(self, resource_group):
+ response = self.client.recommendations.list(
+ api_version="2023-01-01",
+ )
+ result = [r async for r in response]
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_get(self, resource_group):
+ response = await self.client.recommendations.get(
+ resource_uri="str",
+ recommendation_id="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_suppressions_operations.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_suppressions_operations.py
new file mode 100644
index 000000000000..d0a29ee17ef8
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_suppressions_operations.py
@@ -0,0 +1,84 @@
+# 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 pytest
+from azure.mgmt.advisor import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementSuppressionsOperations(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_get(self, resource_group):
+ response = self.client.suppressions.get(
+ resource_uri="str",
+ recommendation_id="str",
+ name="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_create(self, resource_group):
+ response = self.client.suppressions.create(
+ resource_uri="str",
+ recommendation_id="str",
+ name="str",
+ suppression_contract={
+ "expirationTimeStamp": "2020-02-20 00:00:00",
+ "id": "str",
+ "name": "str",
+ "suppressionId": "str",
+ "systemData": {
+ "createdAt": "2020-02-20 00:00:00",
+ "createdBy": "str",
+ "createdByType": "str",
+ "lastModifiedAt": "2020-02-20 00:00:00",
+ "lastModifiedBy": "str",
+ "lastModifiedByType": "str",
+ },
+ "ttl": "str",
+ "type": "str",
+ },
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_delete(self, resource_group):
+ response = self.client.suppressions.delete(
+ resource_uri="str",
+ recommendation_id="str",
+ name="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy
+ def test_list(self, resource_group):
+ response = self.client.suppressions.list(
+ api_version="2023-01-01",
+ )
+ result = [r for r in response]
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_suppressions_operations_async.py b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_suppressions_operations_async.py
new file mode 100644
index 000000000000..1e28ac1af101
--- /dev/null
+++ b/sdk/advisor/azure-mgmt-advisor/generated_tests/test_advisor_management_suppressions_operations_async.py
@@ -0,0 +1,85 @@
+# 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 pytest
+from azure.mgmt.advisor.aio import AdvisorManagementClient
+
+from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer
+from devtools_testutils.aio import recorded_by_proxy_async
+
+AZURE_LOCATION = "eastus"
+
+
+@pytest.mark.skip("you may need to update the auto-generated test case before run it")
+class TestAdvisorManagementSuppressionsOperationsAsync(AzureMgmtRecordedTestCase):
+ def setup_method(self, method):
+ self.client = self.create_mgmt_client(AdvisorManagementClient, is_async=True)
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_get(self, resource_group):
+ response = await self.client.suppressions.get(
+ resource_uri="str",
+ recommendation_id="str",
+ name="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_create(self, resource_group):
+ response = await self.client.suppressions.create(
+ resource_uri="str",
+ recommendation_id="str",
+ name="str",
+ suppression_contract={
+ "expirationTimeStamp": "2020-02-20 00:00:00",
+ "id": "str",
+ "name": "str",
+ "suppressionId": "str",
+ "systemData": {
+ "createdAt": "2020-02-20 00:00:00",
+ "createdBy": "str",
+ "createdByType": "str",
+ "lastModifiedAt": "2020-02-20 00:00:00",
+ "lastModifiedBy": "str",
+ "lastModifiedByType": "str",
+ },
+ "ttl": "str",
+ "type": "str",
+ },
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_delete(self, resource_group):
+ response = await self.client.suppressions.delete(
+ resource_uri="str",
+ recommendation_id="str",
+ name="str",
+ api_version="2023-01-01",
+ )
+
+ # please add some check logic here by yourself
+ # ...
+
+ @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
+ @recorded_by_proxy_async
+ async def test_list(self, resource_group):
+ response = self.client.suppressions.list(
+ api_version="2023-01-01",
+ )
+ result = [r async for r in response]
+ # please add some check logic here by yourself
+ # ...
diff --git a/sdk/advisor/azure-mgmt-advisor/setup.py b/sdk/advisor/azure-mgmt-advisor/setup.py
index 0dcd483c20fc..a2aa6026ffb3 100644
--- a/sdk/advisor/azure-mgmt-advisor/setup.py
+++ b/sdk/advisor/azure-mgmt-advisor/setup.py
@@ -1,10 +1,10 @@
#!/usr/bin/env python
-#-------------------------------------------------------------------------
+# -------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
-#--------------------------------------------------------------------------
+# --------------------------------------------------------------------------
import re
import os.path
@@ -16,63 +16,68 @@
PACKAGE_PPRINT_NAME = "Advisor"
# a-b-c => a/b/c
-package_folder_path = PACKAGE_NAME.replace('-', '/')
+package_folder_path = PACKAGE_NAME.replace("-", "/")
# a-b-c => a.b.c
-namespace_name = PACKAGE_NAME.replace('-', '.')
+namespace_name = PACKAGE_NAME.replace("-", ".")
# Version extraction inspired from 'requests'
-with open(os.path.join(package_folder_path, 'version.py')
- if os.path.exists(os.path.join(package_folder_path, 'version.py'))
- else os.path.join(package_folder_path, '_version.py'), 'r') as fd:
- version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]',
- fd.read(), re.MULTILINE).group(1)
+with open(
+ os.path.join(package_folder_path, "version.py")
+ if os.path.exists(os.path.join(package_folder_path, "version.py"))
+ else os.path.join(package_folder_path, "_version.py"),
+ "r",
+) as fd:
+ version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]', fd.read(), re.MULTILINE).group(1)
if not version:
- raise RuntimeError('Cannot find version information')
+ raise RuntimeError("Cannot find version information")
-with open('README.md', encoding='utf-8') as f:
+with open("README.md", encoding="utf-8") as f:
readme = f.read()
-with open('CHANGELOG.md', encoding='utf-8') as f:
+with open("CHANGELOG.md", encoding="utf-8") as f:
changelog = f.read()
setup(
name=PACKAGE_NAME,
version=version,
- description='Microsoft Azure {} Client Library for Python'.format(PACKAGE_PPRINT_NAME),
- long_description=readme + '\n\n' + changelog,
- long_description_content_type='text/markdown',
- license='MIT License',
- author='Microsoft Corporation',
- author_email='azpysdkhelp@microsoft.com',
- url='https://github.com/Azure/azure-sdk-for-python',
+ description="Microsoft Azure {} Client Library for Python".format(PACKAGE_PPRINT_NAME),
+ long_description=readme + "\n\n" + changelog,
+ long_description_content_type="text/markdown",
+ license="MIT License",
+ author="Microsoft Corporation",
+ author_email="azpysdkhelp@microsoft.com",
+ url="https://github.com/Azure/azure-sdk-for-python",
keywords="azure, azure sdk", # update with search keywords relevant to the azure service / product
classifiers=[
- 'Development Status :: 5 - Production/Stable',
- 'Programming Language :: Python',
- 'Programming Language :: Python :: 3 :: Only',
- 'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.7',
- 'Programming Language :: Python :: 3.8',
- 'Programming Language :: Python :: 3.9',
- 'Programming Language :: Python :: 3.10',
- 'License :: OSI Approved :: MIT License',
+ "Development Status :: 5 - Production/Stable",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3 :: Only",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "License :: OSI Approved :: MIT License",
],
zip_safe=False,
- packages=find_packages(exclude=[
- 'tests',
- # Exclude packages that will be covered by PEP420 or nspkg
- 'azure',
- 'azure.mgmt',
- ]),
+ packages=find_packages(
+ exclude=[
+ "tests",
+ # Exclude packages that will be covered by PEP420 or nspkg
+ "azure",
+ "azure.mgmt",
+ ]
+ ),
include_package_data=True,
package_data={
- 'pytyped': ['py.typed'],
+ "pytyped": ["py.typed"],
},
install_requires=[
- "msrest>=0.7.1",
- "azure-common~=1.1",
- "azure-mgmt-core>=1.3.2,<2.0.0",
- "typing-extensions>=4.3.0; python_version<'3.8.0'",
+ "isodate>=0.6.1",
+ "typing-extensions>=4.6.0",
+ "azure-common>=1.1",
+ "azure-mgmt-core>=1.3.2",
],
- python_requires=">=3.7"
+ python_requires=">=3.8",
)