diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/_meta.json b/sdk/recoveryservices/azure-mgmt-recoveryservices/_meta.json index eee081eda7fe..96d36d75118a 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/_meta.json +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/_meta.json @@ -1,11 +1,11 @@ { - "autorest": "3.7.2", + "autorest": "3.9.2", "use": [ - "@autorest/python@5.16.0", - "@autorest/modelerfour@4.19.3" + "@autorest/python@6.1.6", + "@autorest/modelerfour@4.24.3" ], - "commit": "411d815960f636c9ce9421186723db6d397a32e0", + "commit": "0b5a985b1dbb4883d626b1fdd6fc8efb2874f4dc", "repository_url": "https://github.com/Azure/azure-rest-api-specs", - "autorest_command": "autorest specification/recoveryservices/resource-manager/readme.md --python --python-sdks-folder=/home/vsts/work/1/azure-sdk-for-python/sdk --python3-only --use=@autorest/python@5.16.0 --use=@autorest/modelerfour@4.19.3 --version=3.7.2", + "autorest_command": "autorest specification/recoveryservices/resource-manager/readme.md --python --python-sdks-folder=/mnt/vss/_work/1/s/azure-sdk-for-python/sdk --use=@autorest/python@6.1.6 --use=@autorest/modelerfour@4.24.3 --version=3.9.2 --version-tolerant=False", "readme": "specification/recoveryservices/resource-manager/readme.md" } \ No newline at end of file diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/__init__.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/__init__.py index f8dfafb4489a..16d3c1702761 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/__init__.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/__init__.py @@ -17,7 +17,8 @@ except ImportError: _patch_all = [] from ._patch import patch_sdk as _patch_sdk -__all__ = ['RecoveryServicesClient'] + +__all__ = ["RecoveryServicesClient"] __all__.extend([p for p in _patch_all if p not in __all__]) _patch_sdk() diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_configuration.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_configuration.py index c2fd4a157b01..3e58a87a76b6 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_configuration.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_configuration.py @@ -25,23 +25,18 @@ class RecoveryServicesClientConfiguration(Configuration): # pylint: disable=too Note that all parameters used to create this instance are saved as instance attributes. - :param credential: Credential needed for the client to connect to Azure. + :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials.TokenCredential - :param subscription_id: The subscription Id. + :param subscription_id: The subscription Id. Required. :type subscription_id: str - :keyword api_version: Api Version. Default value is "2022-04-01". Note that overriding this + :keyword api_version: Api Version. Default value is "2022-08-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: + def __init__(self, credential: "TokenCredential", subscription_id: str, **kwargs: Any) -> None: super(RecoveryServicesClientConfiguration, self).__init__(**kwargs) - api_version = kwargs.pop('api_version', "2022-04-01") # type: str + api_version = kwargs.pop("api_version", "2022-08-01") # type: str if credential is None: raise ValueError("Parameter 'credential' must not be None.") @@ -51,23 +46,24 @@ def __init__( self.credential = credential self.subscription_id = subscription_id self.api_version = api_version - self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) - kwargs.setdefault('sdk_moniker', 'mgmt-recoveryservices/{}'.format(VERSION)) + self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) + kwargs.setdefault("sdk_moniker", "mgmt-recoveryservices/{}".format(VERSION)) self._configure(**kwargs) def _configure( - self, - **kwargs # type: Any + self, **kwargs # type: Any ): # type: (...) -> 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.authentication_policy = kwargs.get('authentication_policy') + 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.authentication_policy = kwargs.get("authentication_policy") if self.credential and not self.authentication_policy: - self.authentication_policy = ARMChallengeAuthenticationPolicy(self.credential, *self.credential_scopes, **kwargs) + self.authentication_policy = ARMChallengeAuthenticationPolicy( + self.credential, *self.credential_scopes, **kwargs + ) diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_patch.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_patch.py index 0ad201a8c586..f7dd32510333 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_patch.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_patch.py @@ -10,6 +10,7 @@ __all__: List[str] = [] # Add all objects you want publicly available to users at this package level + def patch_sdk(): """Do not remove from this file. diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_recovery_services_client.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_recovery_services_client.py index 9db947b7ab29..56fb5fc5e95b 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_recovery_services_client.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_recovery_services_client.py @@ -9,20 +9,33 @@ from copy import deepcopy from typing import Any, TYPE_CHECKING -from msrest import Deserializer, Serializer - from azure.core.rest import HttpRequest, HttpResponse from azure.mgmt.core import ARMPipelineClient from . import models from ._configuration import RecoveryServicesClientConfiguration -from .operations import Operations, PrivateLinkResourcesOperations, RecoveryServicesClientOperationsMixin, RecoveryServicesOperations, RegisteredIdentitiesOperations, ReplicationUsagesOperations, UsagesOperations, VaultCertificatesOperations, VaultExtendedInfoOperations, VaultsOperations +from ._serialization import Deserializer, Serializer +from .operations import ( + Operations, + PrivateLinkResourcesOperations, + RecoveryServicesClientOperationsMixin, + RecoveryServicesOperations, + RegisteredIdentitiesOperations, + ReplicationUsagesOperations, + UsagesOperations, + VaultCertificatesOperations, + VaultExtendedInfoOperations, + VaultsOperations, +) if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports from azure.core.credentials import TokenCredential -class RecoveryServicesClient(RecoveryServicesClientOperationsMixin): # pylint: disable=too-many-instance-attributes + +class RecoveryServicesClient( + RecoveryServicesClientOperationsMixin +): # pylint: disable=client-accepts-api-version-keyword,too-many-instance-attributes """Recovery Services Client. :ivar vault_certificates: VaultCertificatesOperations operations @@ -46,13 +59,13 @@ class RecoveryServicesClient(RecoveryServicesClientOperationsMixin): # pylint azure.mgmt.recoveryservices.operations.VaultExtendedInfoOperations :ivar usages: UsagesOperations operations :vartype usages: azure.mgmt.recoveryservices.operations.UsagesOperations - :param credential: Credential needed for the client to connect to Azure. + :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials.TokenCredential - :param subscription_id: The subscription Id. + :param subscription_id: The 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 "2022-04-01". Note that overriding this + :keyword api_version: Api Version. Default value is "2022-08-01". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str :keyword int polling_interval: Default waiting time between two polls for LRO operations if no @@ -66,7 +79,9 @@ def __init__( base_url: str = "https://management.azure.com", **kwargs: Any ) -> None: - self._config = RecoveryServicesClientConfiguration(credential=credential, subscription_id=subscription_id, **kwargs) + self._config = RecoveryServicesClientConfiguration( + 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)} @@ -88,25 +103,14 @@ def __init__( self.recovery_services = RecoveryServicesOperations( self._client, self._config, self._serialize, self._deserialize ) - self.vaults = VaultsOperations( - self._client, self._config, self._serialize, self._deserialize - ) - self.operations = Operations( - self._client, self._config, self._serialize, self._deserialize - ) + self.vaults = VaultsOperations(self._client, self._config, self._serialize, self._deserialize) + self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) self.vault_extended_info = VaultExtendedInfoOperations( self._client, self._config, self._serialize, self._deserialize ) - self.usages = UsagesOperations( - self._client, self._config, self._serialize, self._deserialize - ) + self.usages = UsagesOperations(self._client, self._config, self._serialize, self._deserialize) - - def _send_request( - self, - request: HttpRequest, - **kwargs: Any - ) -> HttpResponse: + def _send_request(self, request: HttpRequest, **kwargs: Any) -> HttpResponse: """Runs the network request through the client's chained policies. >>> from azure.core.rest import HttpRequest @@ -115,7 +119,7 @@ def _send_request( >>> response = client._send_request(request) - For more information on this code flow, see https://aka.ms/azsdk/python/protocol/quickstart + For more information on this code flow, see https://aka.ms/azsdk/dpcodegen/python/send_request :param request: The network request you want to make. Required. :type request: ~azure.core.rest.HttpRequest diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_serialization.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_serialization.py new file mode 100644 index 000000000000..7c1dedb5133d --- /dev/null +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_serialization.py @@ -0,0 +1,1970 @@ +# -------------------------------------------------------------------------- +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# +# The MIT License (MIT) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the ""Software""), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. +# +# -------------------------------------------------------------------------- + +# pylint: skip-file + +from base64 import b64decode, b64encode +import calendar +import datetime +import decimal +import email +from enum import Enum +import json +import logging +import re +import sys +import codecs + +try: + from urllib import quote # type: ignore +except ImportError: + from urllib.parse import quote # type: ignore +import xml.etree.ElementTree as ET + +import isodate + +from typing import Dict, Any, cast, TYPE_CHECKING + +from azure.core.exceptions import DeserializationError, SerializationError, raise_with_traceback + +_BOM = codecs.BOM_UTF8.decode(encoding="utf-8") + +if TYPE_CHECKING: + from typing import Optional, Union, AnyStr, IO, Mapping + + +class RawDeserializer: + + # Accept "text" because we're open minded people... + JSON_REGEXP = re.compile(r"^(application|text)/([a-z+.]+\+)?json$") + + # Name used in context + CONTEXT_NAME = "deserialized_data" + + @classmethod + def deserialize_from_text(cls, data, content_type=None): + # type: (Optional[Union[AnyStr, IO]], Optional[str]) -> Any + """Decode data according to content-type. + + Accept a stream of data as well, but will be load at once in memory for now. + + If no content-type, will return the string version (not bytes, not stream) + + :param data: Input, could be bytes or stream (will be decoded with UTF8) or text + :type data: str or bytes or IO + :param str content_type: The content type. + """ + if hasattr(data, "read"): + # Assume a stream + data = cast(IO, data).read() + + if isinstance(data, bytes): + data_as_str = data.decode(encoding="utf-8-sig") + else: + # Explain to mypy the correct type. + data_as_str = cast(str, data) + + # Remove Byte Order Mark if present in string + data_as_str = data_as_str.lstrip(_BOM) + + if content_type is None: + return data + + if cls.JSON_REGEXP.match(content_type): + try: + return json.loads(data_as_str) + except ValueError as err: + raise DeserializationError("JSON is invalid: {}".format(err), err) + elif "xml" in (content_type or []): + try: + + try: + if isinstance(data, unicode): # type: ignore + # If I'm Python 2.7 and unicode XML will scream if I try a "fromstring" on unicode string + data_as_str = data_as_str.encode(encoding="utf-8") # type: ignore + except NameError: + pass + + return ET.fromstring(data_as_str) # nosec + except ET.ParseError: + # 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 + # let's flow the initial exception + def _json_attemp(data): + try: + return True, json.loads(data) + except ValueError: + return False, None # Don't care about this one + + success, json_result = _json_attemp(data) + if success: + return json_result + # If i'm here, it's not JSON, it's not XML, let's scream + # and raise the last context in this block (the XML exception) + # 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("Cannot deserialize content-type: {}".format(content_type)) + + @classmethod + def deserialize_from_http_generics(cls, body_bytes, headers): + # type: (Optional[Union[AnyStr, IO]], Mapping) -> Any + """Deserialize from HTTP response. + + Use bytes and headers to NOT use any requests/aiohttp or whatever + specific implementation. + Headers will tested for "content-type" + """ + # Try to use content-type from headers if available + content_type = None + if "content-type" in headers: + content_type = headers["content-type"].split(";")[0].strip().lower() + # Ouch, this server did not declare what it sent... + # Let's guess it's JSON... + # Also, since Autorest was considering that an empty body was a valid JSON, + # need that test as well.... + else: + content_type = "application/json" + + if body_bytes: + return cls.deserialize_from_text(body_bytes, content_type) + 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: + _long_type = long # type: ignore +except NameError: + _long_type = int + + +class UTC(datetime.tzinfo): + """Time Zone info for handling UTC""" + + def utcoffset(self, dt): + """UTF offset for UTC is 0.""" + return datetime.timedelta(0) + + def tzname(self, dt): + """Timestamp representation.""" + return "Z" + + def dst(self, dt): + """No daylight saving for UTC.""" + return datetime.timedelta(hours=1) + + +try: + from datetime import timezone as _FixedOffset +except ImportError: # Python 2.7 + + class _FixedOffset(datetime.tzinfo): # type: ignore + """Fixed offset in minutes east from UTC. + Copy/pasted from Python doc + :param datetime.timedelta offset: offset in timedelta format + """ + + def __init__(self, offset): + self.__offset = offset + + def utcoffset(self, dt): + return self.__offset + + def tzname(self, dt): + return str(self.__offset.total_seconds() / 3600) + + def __repr__(self): + return "".format(self.tzname(None)) + + def dst(self, dt): + return datetime.timedelta(0) + + def __getinitargs__(self): + return (self.__offset,) + + +try: + from datetime import timezone + + TZ_UTC = timezone.utc # type: ignore +except ImportError: + TZ_UTC = UTC() # type: ignore + +_FLATTEN = re.compile(r"(? y, + "minimum": lambda x, y: x < y, + "maximum": lambda x, y: x > y, + "minimum_ex": lambda x, y: x <= y, + "maximum_ex": lambda x, y: x >= y, + "min_items": lambda x, y: len(x) < y, + "max_items": lambda x, y: len(x) > y, + "pattern": lambda x, y: not re.match(y, x, re.UNICODE), + "unique": lambda x, y: len(x) != len(set(x)), + "multiple": lambda x, y: x % y != 0, + } + + def __init__(self, classes=None): + self.serialize_type = { + "iso-8601": Serializer.serialize_iso, + "rfc-1123": Serializer.serialize_rfc, + "unix-time": Serializer.serialize_unix, + "duration": Serializer.serialize_duration, + "date": Serializer.serialize_date, + "time": Serializer.serialize_time, + "decimal": Serializer.serialize_decimal, + "long": Serializer.serialize_long, + "bytearray": Serializer.serialize_bytearray, + "base64": Serializer.serialize_base64, + "object": self.serialize_object, + "[]": self.serialize_iter, + "{}": self.serialize_dict, + } + self.dependencies = dict(classes) if classes else {} + self.key_transformer = full_restapi_key_transformer + self.client_side_validation = True + + def _serialize(self, target_obj, data_type=None, **kwargs): + """Serialize data into a string according to type. + + :param target_obj: The data to be serialized. + :param str data_type: The type to be serialized from. + :rtype: str, dict + :raises: SerializationError if serialization fails. + """ + key_transformer = kwargs.get("key_transformer", self.key_transformer) + keep_readonly = kwargs.get("keep_readonly", False) + if target_obj is None: + return None + + attr_name = None + class_name = target_obj.__class__.__name__ + + if data_type: + return self.serialize_data(target_obj, data_type, **kwargs) + + if not hasattr(target_obj, "_attribute_map"): + data_type = type(target_obj).__name__ + if data_type in self.basic_types.values(): + return self.serialize_data(target_obj, data_type, **kwargs) + + # Force "is_xml" kwargs if we detect a XML model + try: + is_xml_model_serialization = kwargs["is_xml"] + except KeyError: + is_xml_model_serialization = kwargs.setdefault("is_xml", target_obj.is_xml_model()) + + serialized = {} + if is_xml_model_serialization: + serialized = target_obj._create_xml_node() + try: + attributes = target_obj._attribute_map + for attr, attr_desc in attributes.items(): + attr_name = attr + if not keep_readonly and target_obj._validation.get(attr_name, {}).get("readonly", False): + continue + + if attr_name == "additional_properties" and attr_desc["key"] == "": + if target_obj.additional_properties is not None: + serialized.update(target_obj.additional_properties) + continue + try: + + orig_attr = getattr(target_obj, attr) + if is_xml_model_serialization: + pass # Don't provide "transformer" for XML for now. Keep "orig_attr" + else: # JSON + keys, orig_attr = key_transformer(attr, attr_desc.copy(), orig_attr) + keys = keys if isinstance(keys, list) else [keys] + + kwargs["serialization_ctxt"] = attr_desc + new_attr = self.serialize_data(orig_attr, attr_desc["type"], **kwargs) + + if is_xml_model_serialization: + xml_desc = attr_desc.get("xml", {}) + xml_name = xml_desc.get("name", attr_desc["key"]) + xml_prefix = xml_desc.get("prefix", None) + xml_ns = xml_desc.get("ns", None) + 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) + continue + if xml_desc.get("text", False): + serialized.text = new_attr + continue + if isinstance(new_attr, list): + serialized.extend(new_attr) + 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", {}): + splitted_tag = new_attr.tag.split("}") + if len(splitted_tag) == 2: # Namespace + new_attr.tag = "}".join([splitted_tag[0], xml_name]) + else: + new_attr.tag = xml_name + serialized.append(new_attr) + 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) + else: # JSON + for k in reversed(keys): + unflattened = {k: new_attr} + new_attr = unflattened + + _new_attr = new_attr + _serialized = serialized + for k in keys: + if k not in _serialized: + _serialized.update(_new_attr) + _new_attr = _new_attr[k] + _serialized = _serialized[k] + except ValueError: + continue + + 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) + else: + return serialized + + def body(self, data, data_type, **kwargs): + """Serialize data intended for a request body. + + :param data: The data to be serialized. + :param str data_type: The type to be serialized from. + :rtype: dict + :raises: SerializationError if serialization fails. + :raises: ValueError if data is None + """ + + # Just in case this is a dict + internal_data_type = data_type.strip("[]{}") + internal_data_type = self.dependencies.get(internal_data_type, None) + try: + is_xml_model_serialization = kwargs["is_xml"] + except KeyError: + if internal_data_type and issubclass(internal_data_type, Model): + is_xml_model_serialization = kwargs.setdefault("is_xml", internal_data_type.is_xml_model()) + else: + is_xml_model_serialization = False + if internal_data_type and not isinstance(internal_data_type, Enum): + try: + deserializer = Deserializer(self.dependencies) + # Since it's on serialization, it's almost sure that format is not JSON REST + # We're not able to deal with additional properties for now. + deserializer.additional_properties_detection = False + if is_xml_model_serialization: + deserializer.key_extractors = [ + attribute_key_case_insensitive_extractor, + ] + else: + deserializer.key_extractors = [ + rest_key_case_insensitive_extractor, + attribute_key_case_insensitive_extractor, + last_rest_key_case_insensitive_extractor, + ] + data = deserializer._deserialize(data_type, data) + except DeserializationError as err: + raise_with_traceback(SerializationError, "Unable to build a model: " + str(err), err) + + return self._serialize(data, data_type, **kwargs) + + def url(self, name, data, data_type, **kwargs): + """Serialize data intended for a URL path. + + :param data: The data to be serialized. + :param str data_type: The type to be serialized from. + :rtype: str + :raises: TypeError if serialization fails. + :raises: ValueError if data is None + """ + try: + output = self.serialize_data(data, data_type, **kwargs) + if data_type == "bool": + output = json.dumps(output) + + if kwargs.get("skip_quote") is True: + output = str(output) + else: + output = quote(str(output), safe="") + except SerializationError: + raise TypeError("{} must be type {}.".format(name, data_type)) + else: + return output + + def query(self, name, data, data_type, **kwargs): + """Serialize data intended for a URL query. + + :param data: The data to be serialized. + :param str data_type: The type to be serialized from. + :rtype: str + :raises: TypeError if serialization fails. + :raises: ValueError if data is None + """ + try: + # 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)) + + # Not a list, regular serialization + output = self.serialize_data(data, data_type, **kwargs) + if data_type == "bool": + output = json.dumps(output) + if kwargs.get("skip_quote") is True: + output = str(output) + else: + output = quote(str(output), safe="") + except SerializationError: + raise TypeError("{} must be type {}.".format(name, data_type)) + else: + return str(output) + + def header(self, name, data, data_type, **kwargs): + """Serialize data intended for a request header. + + :param data: The data to be serialized. + :param str data_type: The type to be serialized from. + :rtype: str + :raises: TypeError if serialization fails. + :raises: ValueError if data is None + """ + try: + if data_type in ["[str]"]: + data = ["" if d is None else d for d in data] + + output = self.serialize_data(data, data_type, **kwargs) + if data_type == "bool": + output = json.dumps(output) + except SerializationError: + raise TypeError("{} must be type {}.".format(name, data_type)) + else: + return str(output) + + def serialize_data(self, data, data_type, **kwargs): + """Serialize generic data according to supplied data type. + + :param data: The data to be serialized. + :param str data_type: The type to be serialized from. + :param bool required: Whether it's essential that the data not be + empty or None + :raises: AttributeError if required data is None. + :raises: ValueError if data is None + :raises: SerializationError if serialization fails. + """ + if data is None: + raise ValueError("No value for given attribute") + + try: + if data_type in self.basic_types.values(): + return self.serialize_basic(data, data_type, **kwargs) + + elif data_type in self.serialize_type: + return self.serialize_type[data_type](data, **kwargs) + + # If dependencies is empty, try with current data class + # It has to be a subclass of Enum anyway + enum_type = self.dependencies.get(data_type, data.__class__) + if issubclass(enum_type, Enum): + return Serializer.serialize_enum(data, enum_obj=enum_type) + + iter_type = data_type[0] + data_type[-1] + if iter_type in self.serialize_type: + return self.serialize_type[iter_type](data, data_type[1:-1], **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) + else: + return self._serialize(data, **kwargs) + + @classmethod + def _get_custom_serializers(cls, data_type, **kwargs): + custom_serializer = kwargs.get("basic_types_serializers", {}).get(data_type) + if custom_serializer: + return custom_serializer + if kwargs.get("is_xml", False): + return cls._xml_basic_types_serializers.get(data_type) + + @classmethod + def serialize_basic(cls, data, data_type, **kwargs): + """Serialize basic builting data type. + Serializes objects to str, int, float or bool. + + Possible kwargs: + - basic_types_serializers dict[str, callable] : If set, use the callable as serializer + - is_xml bool : If set, use xml_basic_types_serializers + + :param data: Object to be serialized. + :param str data_type: Type of object in the iterable. + """ + custom_serializer = cls._get_custom_serializers(data_type, **kwargs) + if custom_serializer: + return custom_serializer(data) + if data_type == "str": + return cls.serialize_unicode(data) + return eval(data_type)(data) # nosec + + @classmethod + def serialize_unicode(cls, data): + """Special handling for serializing unicode strings in Py2. + Encode to UTF-8 if unicode, otherwise handle as a str. + + :param data: Object to be serialized. + :rtype: str + """ + try: # If I received an enum, return its value + return data.value + except AttributeError: + pass + + try: + if isinstance(data, unicode): + # Don't change it, JSON and XML ElementTree are totally able + # to serialize correctly u'' strings + return data + except NameError: + return str(data) + else: + return str(data) + + def serialize_iter(self, data, iter_type, div=None, **kwargs): + """Serialize iterable. + + Supported kwargs: + - serialization_ctxt dict : The current entry of _attribute_map, or same format. + serialization_ctxt['type'] should be same as data_type. + - is_xml bool : If set, serialize as XML + + :param list attr: Object to be serialized. + :param str iter_type: Type of object in the iterable. + :param bool required: Whether the objects in the iterable must + 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'. + :rtype: list, str + """ + if isinstance(data, str): + raise SerializationError("Refuse str type as a valid iter type.") + + serialization_ctxt = kwargs.get("serialization_ctxt", {}) + is_xml = kwargs.get("is_xml", False) + + serialized = [] + for d in data: + try: + serialized.append(self.serialize_data(d, iter_type, **kwargs)) + except ValueError: + serialized.append(None) + + if div: + serialized = ["" if s is None else str(s) for s in serialized] + serialized = div.join(serialized) + + if "xml" in serialization_ctxt or is_xml: + # XML serialization is more complicated + xml_desc = serialization_ctxt.get("xml", {}) + xml_name = xml_desc.get("name") + if not xml_name: + xml_name = serialization_ctxt["key"] + + # Create a wrap node if necessary (use the fact that Element and list have "append") + is_wrapped = xml_desc.get("wrapped", False) + node_name = xml_desc.get("itemsName", xml_name) + if is_wrapped: + final_result = _create_xml_node(xml_name, xml_desc.get("prefix", None), xml_desc.get("ns", None)) + else: + final_result = [] + # All list elements to "local_node" + for el in serialized: + if isinstance(el, ET.Element): + el_node = el + else: + el_node = _create_xml_node(node_name, xml_desc.get("prefix", None), xml_desc.get("ns", None)) + if el is not None: # Otherwise it writes "None" :-p + el_node.text = str(el) + final_result.append(el_node) + return final_result + return serialized + + def serialize_dict(self, attr, dict_type, **kwargs): + """Serialize a dictionary of objects. + + :param dict attr: Object to be serialized. + :param str dict_type: Type of object in the dictionary. + :param bool required: Whether the objects in the dictionary must + not be None or empty. + :rtype: dict + """ + serialization_ctxt = kwargs.get("serialization_ctxt", {}) + serialized = {} + for key, value in attr.items(): + try: + serialized[self.serialize_unicode(key)] = self.serialize_data(value, dict_type, **kwargs) + except ValueError: + serialized[self.serialize_unicode(key)] = None + + if "xml" in serialization_ctxt: + # XML serialization is more complicated + xml_desc = serialization_ctxt["xml"] + xml_name = xml_desc["name"] + + final_result = _create_xml_node(xml_name, xml_desc.get("prefix", None), xml_desc.get("ns", None)) + for key, value in serialized.items(): + ET.SubElement(final_result, key).text = value + return final_result + + return serialized + + def serialize_object(self, attr, **kwargs): + """Serialize a generic object. + This will be handled as a dictionary. If object passed in is not + a basic type (str, int, float, dict, list) it will simply be + cast to str. + + :param dict attr: Object to be serialized. + :rtype: dict or str + """ + if attr is None: + return None + if isinstance(attr, ET.Element): + return attr + obj_type = type(attr) + if obj_type in self.basic_types: + 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: + return self.serialize_unicode(attr) + if obj_type is datetime.datetime: + return self.serialize_iso(attr) + if obj_type is datetime.date: + return self.serialize_date(attr) + if obj_type is datetime.time: + return self.serialize_time(attr) + if obj_type is datetime.timedelta: + return self.serialize_duration(attr) + if obj_type is decimal.Decimal: + return self.serialize_decimal(attr) + + # If it's a model or I know this dependency, serialize as a Model + elif obj_type in self.dependencies.values() or isinstance(attr, Model): + return self._serialize(attr) + + if obj_type == dict: + serialized = {} + for key, value in attr.items(): + try: + serialized[self.serialize_unicode(key)] = self.serialize_object(value, **kwargs) + except ValueError: + serialized[self.serialize_unicode(key)] = None + return serialized + + if obj_type == list: + serialized = [] + for obj in attr: + try: + serialized.append(self.serialize_object(obj, **kwargs)) + except ValueError: + pass + return serialized + return str(attr) + + @staticmethod + def serialize_enum(attr, enum_obj=None): + try: + result = attr.value + except AttributeError: + result = attr + try: + enum_obj(result) + return result + except ValueError: + for enum_value in enum_obj: + if enum_value.value.lower() == str(attr).lower(): + return enum_value.value + error = "{!r} is not valid value for enum {!r}" + raise SerializationError(error.format(attr, enum_obj)) + + @staticmethod + def serialize_bytearray(attr, **kwargs): + """Serialize bytearray into base-64 string. + + :param attr: Object to be serialized. + :rtype: str + """ + return b64encode(attr).decode() + + @staticmethod + def serialize_base64(attr, **kwargs): + """Serialize str into base-64 string. + + :param attr: Object to be serialized. + :rtype: str + """ + encoded = b64encode(attr).decode("ascii") + return encoded.strip("=").replace("+", "-").replace("/", "_") + + @staticmethod + def serialize_decimal(attr, **kwargs): + """Serialize Decimal object to float. + + :param attr: Object to be serialized. + :rtype: float + """ + return float(attr) + + @staticmethod + def serialize_long(attr, **kwargs): + """Serialize long (Py2) or int (Py3). + + :param attr: Object to be serialized. + :rtype: int/long + """ + return _long_type(attr) + + @staticmethod + def serialize_date(attr, **kwargs): + """Serialize Date object into ISO-8601 formatted string. + + :param Date attr: Object to be serialized. + :rtype: str + """ + if isinstance(attr, str): + attr = isodate.parse_date(attr) + t = "{:04}-{:02}-{:02}".format(attr.year, attr.month, attr.day) + return t + + @staticmethod + def serialize_time(attr, **kwargs): + """Serialize Time object into ISO-8601 formatted string. + + :param datetime.time attr: Object to be serialized. + :rtype: str + """ + if isinstance(attr, str): + attr = isodate.parse_time(attr) + t = "{:02}:{:02}:{:02}".format(attr.hour, attr.minute, attr.second) + if attr.microsecond: + t += ".{:02}".format(attr.microsecond) + return t + + @staticmethod + def serialize_duration(attr, **kwargs): + """Serialize TimeDelta object into ISO-8601 formatted string. + + :param TimeDelta attr: Object to be serialized. + :rtype: str + """ + if isinstance(attr, str): + attr = isodate.parse_duration(attr) + return isodate.duration_isoformat(attr) + + @staticmethod + def serialize_rfc(attr, **kwargs): + """Serialize Datetime object into RFC-1123 formatted string. + + :param Datetime attr: Object to be serialized. + :rtype: str + :raises: TypeError if format invalid. + """ + try: + if not attr.tzinfo: + _LOGGER.warning("Datetime with no tzinfo will be considered UTC.") + utc = attr.utctimetuple() + except AttributeError: + raise TypeError("RFC1123 object must be valid Datetime object.") + + return "{}, {:02} {} {:04} {:02}:{:02}:{:02} GMT".format( + Serializer.days[utc.tm_wday], + utc.tm_mday, + Serializer.months[utc.tm_mon], + utc.tm_year, + utc.tm_hour, + utc.tm_min, + utc.tm_sec, + ) + + @staticmethod + def serialize_iso(attr, **kwargs): + """Serialize Datetime object into ISO-8601 formatted string. + + :param Datetime attr: Object to be serialized. + :rtype: str + :raises: SerializationError if format invalid. + """ + if isinstance(attr, str): + attr = isodate.parse_datetime(attr) + try: + if not attr.tzinfo: + _LOGGER.warning("Datetime with no tzinfo will be considered UTC.") + utc = attr.utctimetuple() + if utc.tm_year > 9999 or utc.tm_year < 1: + raise OverflowError("Hit max or min date") + + microseconds = str(attr.microsecond).rjust(6, "0").rstrip("0").ljust(3, "0") + if microseconds: + microseconds = "." + microseconds + date = "{:04}-{:02}-{:02}T{:02}:{:02}:{:02}".format( + utc.tm_year, utc.tm_mon, utc.tm_mday, utc.tm_hour, utc.tm_min, utc.tm_sec + ) + return date + microseconds + "Z" + except (ValueError, OverflowError) as err: + msg = "Unable to serialize datetime object." + raise_with_traceback(SerializationError, msg, err) + except AttributeError as err: + msg = "ISO-8601 object must be valid Datetime object." + raise_with_traceback(TypeError, msg, err) + + @staticmethod + def serialize_unix(attr, **kwargs): + """Serialize Datetime object into IntTime format. + This is represented as seconds. + + :param Datetime attr: Object to be serialized. + :rtype: int + :raises: SerializationError if format invalid + """ + if isinstance(attr, int): + return attr + try: + if not attr.tzinfo: + _LOGGER.warning("Datetime with no tzinfo will be considered UTC.") + return int(calendar.timegm(attr.utctimetuple())) + except AttributeError: + raise TypeError("Unix time object must be valid Datetime object.") + + +def rest_key_extractor(attr, attr_desc, data): + key = attr_desc["key"] + working_data = data + + while "." in key: + dict_keys = _FLATTEN.split(key) + if len(dict_keys) == 1: + key = _decode_attribute_map_key(dict_keys[0]) + break + working_key = _decode_attribute_map_key(dict_keys[0]) + working_data = working_data.get(working_key, 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:]) + + return working_data.get(key) + + +def rest_key_case_insensitive_extractor(attr, attr_desc, data): + key = attr_desc["key"] + working_data = data + + while "." in key: + dict_keys = _FLATTEN.split(key) + if len(dict_keys) == 1: + key = _decode_attribute_map_key(dict_keys[0]) + break + working_key = _decode_attribute_map_key(dict_keys[0]) + working_data = attribute_key_case_insensitive_extractor(working_key, None, working_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:]) + + if working_data: + return attribute_key_case_insensitive_extractor(key, None, working_data) + + +def last_rest_key_extractor(attr, attr_desc, data): + """Extract the attribute in "data" based on the last part of the JSON path key.""" + key = attr_desc["key"] + dict_keys = _FLATTEN.split(key) + return attribute_key_extractor(dict_keys[-1], None, data) + + +def last_rest_key_case_insensitive_extractor(attr, attr_desc, data): + """Extract the attribute in "data" based on the last part of the JSON path key. + + This is the case insensitive version of "last_rest_key_extractor" + """ + key = attr_desc["key"] + dict_keys = _FLATTEN.split(key) + return attribute_key_case_insensitive_extractor(dict_keys[-1], None, data) + + +def attribute_key_extractor(attr, _, data): + return data.get(attr) + + +def attribute_key_case_insensitive_extractor(attr, _, data): + found_key = None + lower_attr = attr.lower() + for key in data: + if lower_attr == key.lower(): + found_key = key + break + + return data.get(found_key) + + +def _extract_name_from_internal_type(internal_type): + """Given an internal type XML description, extract correct XML name with namespace. + + :param dict internal_type: An model type + :rtype: tuple + :returns: A tuple XML name + namespace dict + """ + internal_type_xml_map = getattr(internal_type, "_xml_map", {}) + 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) + return xml_name + + +def xml_key_extractor(attr, attr_desc, data): + if isinstance(data, dict): + return None + + # Test if this model is XML ready first + if not isinstance(data, ET.Element): + return None + + xml_desc = attr_desc.get("xml", {}) + xml_name = xml_desc.get("name", attr_desc["key"]) + + # Look for a children + is_iter_type = attr_desc["type"].startswith("[") + is_wrapped = xml_desc.get("wrapped", False) + internal_type = attr_desc.get("internalType", None) + internal_type_xml_map = getattr(internal_type, "_xml_map", {}) + + # 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) + + # If it's an attribute, that's simple + if xml_desc.get("attr", False): + return data.get(xml_name) + + # If it's x-ms-text, that's simple too + if xml_desc.get("text", False): + return data.text + + # Scenario where I take the local name: + # - Wrapped node + # - Internal type is an enum (considered basic types) + # - Internal type has no XML/Name node + if is_wrapped or (internal_type and (issubclass(internal_type, Enum) or "name" not in internal_type_xml_map)): + children = data.findall(xml_name) + # If internal type has a local name and it's not a list, I use that name + elif not is_iter_type and internal_type and "name" in internal_type_xml_map: + xml_name = _extract_name_from_internal_type(internal_type) + children = data.findall(xml_name) + # That's an array + else: + if internal_type: # Complex type, ignore itemsName and use the complex type name + items_name = _extract_name_from_internal_type(internal_type) + else: + items_name = xml_desc.get("itemsName", xml_name) + children = data.findall(items_name) + + if len(children) == 0: + if is_iter_type: + if is_wrapped: + return None # is_wrapped no node, we want None + else: + return [] # not wrapped, assume empty list + return None # Assume it's not there, maybe an optional node. + + # If is_iter_type and not wrapped, return all found children + if is_iter_type: + if not is_wrapped: + return children + else: # Iter and wrapped, should have found one node only (the wrap one) + if len(children) != 1: + raise DeserializationError( + "Tried to deserialize an array not wrapped, and found several nodes '{}'. Maybe you should declare this array as wrapped?".format( + xml_name + ) + ) + return list(children[0]) # Might be empty list and that's ok. + + # Here it's not a itertype, we should have found one element only or empty + if len(children) > 1: + raise DeserializationError("Find several XML '{}' where it was not expected".format(xml_name)) + return children[0] + + +class Deserializer(object): + """Response object model deserializer. + + :param dict classes: Class type dictionary for deserializing complex types. + :ivar list key_extractors: Ordered list of extractors to be used by this deserializer. + """ + + basic_types = {str: "str", int: "int", bool: "bool", float: "float"} + + 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): + self.deserialize_type = { + "iso-8601": Deserializer.deserialize_iso, + "rfc-1123": Deserializer.deserialize_rfc, + "unix-time": Deserializer.deserialize_unix, + "duration": Deserializer.deserialize_duration, + "date": Deserializer.deserialize_date, + "time": Deserializer.deserialize_time, + "decimal": Deserializer.deserialize_decimal, + "long": Deserializer.deserialize_long, + "bytearray": Deserializer.deserialize_bytearray, + "base64": Deserializer.deserialize_base64, + "object": self.deserialize_object, + "[]": self.deserialize_iter, + "{}": self.deserialize_dict, + } + self.deserialize_expected_types = { + "duration": (isodate.Duration, datetime.timedelta), + "iso-8601": (datetime.datetime), + } + self.dependencies = 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 + # complicated, with no real scenario for now. + # So adding a flag to disable additional properties detection. This flag should be + # used if your expect the deserialization to NOT come from a JSON REST syntax. + # Otherwise, result are unexpected + self.additional_properties_detection = True + + def __call__(self, target_obj, response_data, content_type=None): + """Call the deserializer to process a REST response. + + :param str target_obj: Target data type to deserialize to. + :param requests.Response response_data: REST response object. + :param str content_type: Swagger "produces" if available. + :raises: DeserializationError if deserialization fails. + :return: Deserialized object. + """ + data = self._unpack_content(response_data, content_type) + return self._deserialize(target_obj, data) + + def _deserialize(self, target_obj, data): + """Call the deserializer on a model. + + Data needs to be already deserialized as JSON or XML ElementTree + + :param str target_obj: Target data type to deserialize to. + :param object data: Object to deserialize. + :raises: DeserializationError if deserialization fails. + :return: Deserialized object. + """ + # This is already a model, go recursive just in case + if hasattr(data, "_attribute_map"): + constants = [name for name, config in getattr(data, "_validation", {}).items() if config.get("constant")] + try: + for attr, mapconfig in data._attribute_map.items(): + if attr in constants: + continue + value = getattr(data, attr) + if value is None: + continue + local_type = mapconfig["type"] + internal_data_type = local_type.strip("[]{}") + if internal_data_type not in self.dependencies or isinstance(internal_data_type, Enum): + continue + setattr(data, attr, self._deserialize(local_type, value)) + return data + except AttributeError: + return + + response, class_name = self._classify_target(target_obj, data) + + if isinstance(response, basestring): + return self.deserialize_data(data, response) + elif isinstance(response, type) and issubclass(response, Enum): + return self.deserialize_enum(data, response) + + if data is None: + return data + try: + attributes = response._attribute_map + d_attrs = {} + for attr, attr_desc in attributes.items(): + # Check empty string. If it's not empty, someone has a real "additionalProperties"... + if attr == "additional_properties" and attr_desc["key"] == "": + continue + raw_value = None + # Enhance attr_desc with some dynamic data + attr_desc = attr_desc.copy() # Do a copy, do not change the real one + internal_data_type = attr_desc["type"].strip("[]{}") + if internal_data_type in self.dependencies: + attr_desc["internalType"] = self.dependencies[internal_data_type] + + for key_extractor in self.key_extractors: + found_value = key_extractor(attr, attr_desc, data) + if found_value is not None: + if raw_value is not None and raw_value != found_value: + msg = ( + "Ignoring extracted value '%s' from %s for key '%s'" + " (duplicate extraction, follow extractors order)" + ) + _LOGGER.warning(msg, found_value, key_extractor, attr) + continue + raw_value = found_value + + 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) + else: + additional_properties = self._build_additional_properties(attributes, data) + return self._instantiate_model(response, d_attrs, additional_properties) + + def _build_additional_properties(self, attribute_map, data): + if not self.additional_properties_detection: + return None + if "additional_properties" in attribute_map and attribute_map.get("additional_properties", {}).get("key") != "": + # Check empty string. If it's not empty, someone has a real "additionalProperties" + return None + if isinstance(data, ET.Element): + data = {el.tag: el.text for el in data} + + known_keys = { + _decode_attribute_map_key(_FLATTEN.split(desc["key"])[0]) + for desc in attribute_map.values() + if desc["key"] != "" + } + present_keys = set(data.keys()) + missing_keys = present_keys - known_keys + return {key: data[key] for key in missing_keys} + + def _classify_target(self, target, data): + """Check to see whether the deserialization target object can + be classified into a subclass. + 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. + """ + if target is None: + return None, None + + if isinstance(target, basestring): + try: + target = self.dependencies[target] + except KeyError: + return target, target + + try: + target = target._classify(data, self.dependencies) + except AttributeError: + pass # Target is not a Model, no classify + return target, target.__class__.__name__ + + def failsafe_deserialize(self, target_obj, data, content_type=None): + """Ignores any errors encountered in deserialization, + and falls back to not deserializing the object. Recommended + for use in error deserialization, as we want to return the + HttpResponseError to users, and not have them deal with + 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 content_type: Swagger "produces" if available. + """ + try: + return self(target_obj, data, content_type=content_type) + except: + _LOGGER.debug( + "Ran into a deserialization error. Ignoring since this is failsafe deserialization", exc_info=True + ) + return None + + @staticmethod + def _unpack_content(raw_data, content_type=None): + """Extract the correct structure for deserialization. + + If raw_data is a PipelineResponse, try to extract the result of RawDeserializer. + if we can't, raise. Your Pipeline should have a RawDeserializer. + + If not a pipeline response and raw_data is bytes or string, use content-type + to decode it. If no content-type, try JSON. + + If raw_data is something else, bypass all logic and return it directly. + + :param raw_data: Data to be processed. + :param content_type: How to parse if raw_data is a string/bytes. + :raises JSONDecodeError: If JSON is requested and parsing is impossible. + :raises UnicodeDecodeError: If bytes is not UTF8 + """ + # Assume this is enough to detect a Pipeline Response without importing it + context = getattr(raw_data, "context", {}) + if context: + if RawDeserializer.CONTEXT_NAME in context: + return context[RawDeserializer.CONTEXT_NAME] + raise ValueError("This pipeline didn't have the RawDeserializer policy; can't deserialize") + + # Assume this is enough to recognize universal_http.ClientResponse without importing it + if hasattr(raw_data, "body"): + return RawDeserializer.deserialize_from_http_generics(raw_data.text(), raw_data.headers) + + # Assume this enough to recognize requests.Response without importing it. + 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) + return raw_data + + def _instantiate_model(self, response, attrs, additional_properties=None): + """Instantiate a response model passing in deserialized args. + + :param response: The response model class. + :param d_attrs: The deserialized response attributes. + """ + if callable(response): + subtype = getattr(response, "_subtype_map", {}) + try: + readonly = [k for k, v in response._validation.items() if v.get("readonly")] + const = [k for k, v in response._validation.items() if v.get("constant")] + kwargs = {k: v for k, v in attrs.items() if k not in subtype and k not in readonly + const} + response_obj = response(**kwargs) + for attr in readonly: + setattr(response_obj, attr, attrs.get(attr)) + if additional_properties: + response_obj.additional_properties = additional_properties + return response_obj + except TypeError as err: + msg = "Unable to deserialize {} into model {}. ".format(kwargs, response) + raise DeserializationError(msg + str(err)) + else: + try: + for attr, value in attrs.items(): + setattr(response, attr, value) + return response + except Exception as exp: + msg = "Unable to populate response model. " + msg += "Type: {}, Error: {}".format(type(response), exp) + raise DeserializationError(msg) + + def deserialize_data(self, data, data_type): + """Process data for deserialization according to data type. + + :param str data: The response string to be deserialized. + :param str data_type: The type to deserialize to. + :raises: DeserializationError if deserialization fails. + :return: Deserialized object. + """ + if data is None: + return data + + try: + if not data_type: + return data + if data_type in self.basic_types.values(): + return self.deserialize_basic(data, data_type) + if data_type in self.deserialize_type: + if isinstance(data, self.deserialize_expected_types.get(data_type, tuple())): + return data + + is_a_text_parsing_type = lambda x: x not in ["object", "[]", r"{}"] + if isinstance(data, ET.Element) and is_a_text_parsing_type(data_type) and not data.text: + return None + data_val = self.deserialize_type[data_type](data) + return data_val + + iter_type = data_type[0] + data_type[-1] + if iter_type in self.deserialize_type: + return self.deserialize_type[iter_type](data, data_type[1:-1]) + + obj_type = self.dependencies[data_type] + if issubclass(obj_type, Enum): + if isinstance(data, ET.Element): + data = data.text + return self.deserialize_enum(data, obj_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) + else: + return self._deserialize(obj_type, data) + + def deserialize_iter(self, attr, iter_type): + """Deserialize an iterable. + + :param list attr: Iterable to be deserialized. + :param str iter_type: The type of object in the iterable. + :rtype: list + """ + if attr is None: + return None + if isinstance(attr, ET.Element): # If I receive an element here, get the children + attr = list(attr) + if not isinstance(attr, (list, set)): + raise DeserializationError("Cannot deserialize as [{}] an object of type {}".format(iter_type, type(attr))) + return [self.deserialize_data(a, iter_type) for a in attr] + + def deserialize_dict(self, attr, dict_type): + """Deserialize a dictionary. + + :param dict/list attr: Dictionary to be deserialized. Also accepts + a list of key, value pairs. + :param str dict_type: The object type of the items in the dictionary. + :rtype: dict + """ + if isinstance(attr, list): + return {x["key"]: self.deserialize_data(x["value"], dict_type) for x in attr} + + if isinstance(attr, ET.Element): + # Transform value into {"Key": "value"} + attr = {el.tag: el.text for el in attr} + return {k: self.deserialize_data(v, dict_type) for k, v in attr.items()} + + def deserialize_object(self, attr, **kwargs): + """Deserialize a generic object. + This will be handled as a dictionary. + + :param dict attr: Dictionary to be deserialized. + :rtype: dict + :raises: TypeError if non-builtin datatype encountered. + """ + if attr is None: + return None + if isinstance(attr, ET.Element): + # Do no recurse on XML, just return the tree as-is + return attr + if isinstance(attr, basestring): + return self.deserialize_basic(attr, "str") + obj_type = type(attr) + if obj_type in self.basic_types: + return self.deserialize_basic(attr, self.basic_types[obj_type]) + if obj_type is _long_type: + return self.deserialize_long(attr) + + if obj_type == dict: + deserialized = {} + for key, value in attr.items(): + try: + deserialized[key] = self.deserialize_object(value, **kwargs) + except ValueError: + deserialized[key] = None + return deserialized + + if obj_type == list: + deserialized = [] + for obj in attr: + try: + deserialized.append(self.deserialize_object(obj, **kwargs)) + except ValueError: + pass + return deserialized + + else: + error = "Cannot deserialize generic object with type: " + raise TypeError(error + str(obj_type)) + + def deserialize_basic(self, attr, data_type): + """Deserialize basic builtin data type from string. + Will attempt to convert to str, int, float and bool. + This function will also accept '1', '0', 'true' and 'false' as + valid bool values. + + :param str attr: response string to be deserialized. + :param str data_type: deserialization data type. + :rtype: str, int, float or bool + :raises: TypeError if string format is not valid. + """ + # If we're here, data is supposed to be a basic type. + # If it's still an XML node, take the text + if isinstance(attr, ET.Element): + attr = attr.text + if not attr: + if data_type == "str": + # None or '', node is empty string. + return "" + else: + # None or '', node with a strong type is None. + # Don't try to model "empty bool" or "empty int" + return None + + if data_type == "bool": + if attr in [True, False, 1, 0]: + return bool(attr) + elif isinstance(attr, basestring): + if attr.lower() in ["true", "1"]: + return True + elif attr.lower() in ["false", "0"]: + return False + raise TypeError("Invalid boolean value: {}".format(attr)) + + if data_type == "str": + return self.deserialize_unicode(attr) + return eval(data_type)(attr) # nosec + + @staticmethod + def deserialize_unicode(data): + """Preserve unicode objects in Python 2, otherwise return data + as a string. + + :param str data: response string to be deserialized. + :rtype: str or unicode + """ + # We might be here because we have an enum modeled as string, + # and we try to deserialize a partial dict with enum inside + if isinstance(data, Enum): + return data + + # Consider this is real string + try: + if isinstance(data, unicode): + return data + except NameError: + return str(data) + else: + return str(data) + + @staticmethod + def deserialize_enum(data, enum_obj): + """Deserialize string into enum object. + + If the string is not a valid enum value it will be returned as-is + and a warning will be logged. + + :param str data: Response string to be deserialized. If this value is + None or invalid it will be returned as-is. + :param Enum enum_obj: Enum object to deserialize to. + :rtype: Enum + """ + if isinstance(data, enum_obj) or data is None: + return data + if isinstance(data, Enum): + 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: + error = "{!r} is not a valid index for enum {!r}" + raise DeserializationError(error.format(data, enum_obj)) + try: + return enum_obj(str(data)) + except ValueError: + for enum_value in enum_obj: + if enum_value.value.lower() == str(data).lower(): + return enum_value + # We don't fail anymore for unknown value, we deserialize as a string + _LOGGER.warning("Deserializer is not able to find %s as valid enum in %s", data, enum_obj) + return Deserializer.deserialize_unicode(data) + + @staticmethod + def deserialize_bytearray(attr): + """Deserialize string into bytearray. + + :param str attr: response string to be deserialized. + :rtype: bytearray + :raises: TypeError if string format invalid. + """ + if isinstance(attr, ET.Element): + attr = attr.text + return bytearray(b64decode(attr)) + + @staticmethod + def deserialize_base64(attr): + """Deserialize base64 encoded string into string. + + :param str attr: response string to be deserialized. + :rtype: bytearray + :raises: TypeError if string format invalid. + """ + if isinstance(attr, ET.Element): + attr = attr.text + padding = "=" * (3 - (len(attr) + 3) % 4) + attr = attr + padding + encoded = attr.replace("-", "+").replace("_", "/") + return b64decode(encoded) + + @staticmethod + def deserialize_decimal(attr): + """Deserialize string into Decimal object. + + :param str attr: response string to be deserialized. + :rtype: Decimal + :raises: DeserializationError if string format invalid. + """ + if isinstance(attr, ET.Element): + attr = attr.text + try: + return decimal.Decimal(attr) + except decimal.DecimalException as err: + msg = "Invalid decimal {}".format(attr) + raise_with_traceback(DeserializationError, msg, err) + + @staticmethod + def deserialize_long(attr): + """Deserialize string into long (Py2) or int (Py3). + + :param str attr: response string to be deserialized. + :rtype: long or int + :raises: ValueError if string format invalid. + """ + if isinstance(attr, ET.Element): + attr = attr.text + return _long_type(attr) + + @staticmethod + def deserialize_duration(attr): + """Deserialize ISO-8601 formatted string into TimeDelta object. + + :param str attr: response string to be deserialized. + :rtype: TimeDelta + :raises: DeserializationError if string format invalid. + """ + if isinstance(attr, ET.Element): + attr = attr.text + try: + duration = isodate.parse_duration(attr) + except (ValueError, OverflowError, AttributeError) as err: + msg = "Cannot deserialize duration object." + raise_with_traceback(DeserializationError, msg, err) + else: + return duration + + @staticmethod + def deserialize_date(attr): + """Deserialize ISO-8601 formatted string into Date object. + + :param str attr: response string to be deserialized. + :rtype: Date + :raises: DeserializationError if string format invalid. + """ + if isinstance(attr, ET.Element): + attr = attr.text + if re.search(r"[^\W\d_]", attr, re.I + re.U): + 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) + + @staticmethod + def deserialize_time(attr): + """Deserialize ISO-8601 formatted string into time object. + + :param str attr: response string to be deserialized. + :rtype: datetime.time + :raises: DeserializationError if string format invalid. + """ + if isinstance(attr, ET.Element): + attr = attr.text + if re.search(r"[^\W\d_]", attr, re.I + re.U): + raise DeserializationError("Date must have only digits and -. Received: %s" % attr) + return isodate.parse_time(attr) + + @staticmethod + def deserialize_rfc(attr): + """Deserialize RFC-1123 formatted string into Datetime object. + + :param str attr: response string to be deserialized. + :rtype: Datetime + :raises: DeserializationError if string format invalid. + """ + if isinstance(attr, ET.Element): + attr = attr.text + try: + parsed_date = email.utils.parsedate_tz(attr) + date_obj = datetime.datetime( + *parsed_date[:6], tzinfo=_FixedOffset(datetime.timedelta(minutes=(parsed_date[9] or 0) / 60)) + ) + if not date_obj.tzinfo: + 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) + else: + return date_obj + + @staticmethod + def deserialize_iso(attr): + """Deserialize ISO-8601 formatted string into Datetime object. + + :param str attr: response string to be deserialized. + :rtype: Datetime + :raises: DeserializationError if string format invalid. + """ + if isinstance(attr, ET.Element): + attr = attr.text + try: + attr = attr.upper() + match = Deserializer.valid_date.match(attr) + if not match: + raise ValueError("Invalid datetime string: " + attr) + + check_decimal = attr.split(".") + if len(check_decimal) > 1: + decimal_str = "" + for digit in check_decimal[1]: + if digit.isdigit(): + decimal_str += digit + else: + break + if len(decimal_str) > 6: + attr = attr.replace(decimal_str, decimal_str[0:6]) + + date_obj = isodate.parse_datetime(attr) + test_utc = date_obj.utctimetuple() + if test_utc.tm_year > 9999 or test_utc.tm_year < 1: + raise OverflowError("Hit max or min date") + except (ValueError, OverflowError, AttributeError) as err: + msg = "Cannot deserialize datetime object." + raise_with_traceback(DeserializationError, msg, err) + else: + return date_obj + + @staticmethod + def deserialize_unix(attr): + """Serialize Datetime object into IntTime format. + This is represented as seconds. + + :param int attr: Object to be serialized. + :rtype: Datetime + :raises: DeserializationError if format invalid + """ + if isinstance(attr, ET.Element): + attr = int(attr.text) + try: + 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) + else: + return date_obj diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_vendor.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_vendor.py index 582912792513..db872d204398 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_vendor.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_vendor.py @@ -14,10 +14,11 @@ if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from msrest import Deserializer, Serializer - from azure.core import PipelineClient + from ._serialization import Deserializer, Serializer + + 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) @@ -25,6 +26,7 @@ def _convert_request(request, files=None): request.set_formdata_body(files) return request + def _format_url_section(template, **kwargs): components = template.split("/") while components: @@ -32,13 +34,13 @@ def _format_url_section(template, **kwargs): 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 - ] + components = [c for c in formatted_components if "{}".format(key.args[0]) not in c] template = "/".join(components) + class MixinABC(ABC): """DO NOT use this class. It is for internal typing use only.""" + _client: "PipelineClient" _config: RecoveryServicesClientConfiguration _serialize: "Serializer" diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_version.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_version.py index 83f24ab50946..e5754a47ce68 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_version.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/_version.py @@ -6,4 +6,4 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -VERSION = "2.1.0" +VERSION = "1.0.0b1" diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/__init__.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/__init__.py index 9dec84062147..72d5911e0b67 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/__init__.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/__init__.py @@ -14,7 +14,8 @@ except ImportError: _patch_all = [] from ._patch import patch_sdk as _patch_sdk -__all__ = ['RecoveryServicesClient'] + +__all__ = ["RecoveryServicesClient"] __all__.extend([p for p in _patch_all if p not in __all__]) _patch_sdk() diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_configuration.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_configuration.py index abfcace99a14..d232eb7cb5d4 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_configuration.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_configuration.py @@ -25,23 +25,18 @@ class RecoveryServicesClientConfiguration(Configuration): # pylint: disable=too Note that all parameters used to create this instance are saved as instance attributes. - :param credential: Credential needed for the client to connect to Azure. + :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials_async.AsyncTokenCredential - :param subscription_id: The subscription Id. + :param subscription_id: The subscription Id. Required. :type subscription_id: str - :keyword api_version: Api Version. Default value is "2022-04-01". Note that overriding this + :keyword api_version: Api Version. Default value is "2022-08-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: + def __init__(self, credential: "AsyncTokenCredential", subscription_id: str, **kwargs: Any) -> None: super(RecoveryServicesClientConfiguration, self).__init__(**kwargs) - api_version = kwargs.pop('api_version', "2022-04-01") # type: str + api_version = kwargs.pop("api_version", "2022-08-01") # type: str if credential is None: raise ValueError("Parameter 'credential' must not be None.") @@ -51,22 +46,21 @@ def __init__( self.credential = credential self.subscription_id = subscription_id self.api_version = api_version - self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) - kwargs.setdefault('sdk_moniker', 'mgmt-recoveryservices/{}'.format(VERSION)) + self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) + kwargs.setdefault("sdk_moniker", "mgmt-recoveryservices/{}".format(VERSION)) self._configure(**kwargs) - 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.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.authentication_policy = kwargs.get('authentication_policy') + 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.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.authentication_policy = kwargs.get("authentication_policy") if self.credential and not self.authentication_policy: - self.authentication_policy = AsyncARMChallengeAuthenticationPolicy(self.credential, *self.credential_scopes, **kwargs) + self.authentication_policy = AsyncARMChallengeAuthenticationPolicy( + self.credential, *self.credential_scopes, **kwargs + ) diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_patch.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_patch.py index 0ad201a8c586..f7dd32510333 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_patch.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_patch.py @@ -10,6 +10,7 @@ __all__: List[str] = [] # Add all objects you want publicly available to users at this package level + def patch_sdk(): """Do not remove from this file. diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_recovery_services_client.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_recovery_services_client.py index 98dd64bc6477..39ab0104f4c3 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_recovery_services_client.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_recovery_services_client.py @@ -9,20 +9,33 @@ from copy import deepcopy from typing import Any, Awaitable, TYPE_CHECKING -from msrest import Deserializer, Serializer - from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.mgmt.core import AsyncARMPipelineClient from .. import models +from .._serialization import Deserializer, Serializer from ._configuration import RecoveryServicesClientConfiguration -from .operations import Operations, PrivateLinkResourcesOperations, RecoveryServicesClientOperationsMixin, RecoveryServicesOperations, RegisteredIdentitiesOperations, ReplicationUsagesOperations, UsagesOperations, VaultCertificatesOperations, VaultExtendedInfoOperations, VaultsOperations +from .operations import ( + Operations, + PrivateLinkResourcesOperations, + RecoveryServicesClientOperationsMixin, + RecoveryServicesOperations, + RegisteredIdentitiesOperations, + ReplicationUsagesOperations, + UsagesOperations, + VaultCertificatesOperations, + VaultExtendedInfoOperations, + VaultsOperations, +) if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports from azure.core.credentials_async import AsyncTokenCredential -class RecoveryServicesClient(RecoveryServicesClientOperationsMixin): # pylint: disable=too-many-instance-attributes + +class RecoveryServicesClient( + RecoveryServicesClientOperationsMixin +): # pylint: disable=client-accepts-api-version-keyword,too-many-instance-attributes """Recovery Services Client. :ivar vault_certificates: VaultCertificatesOperations operations @@ -49,13 +62,13 @@ class RecoveryServicesClient(RecoveryServicesClientOperationsMixin): # pylint azure.mgmt.recoveryservices.aio.operations.VaultExtendedInfoOperations :ivar usages: UsagesOperations operations :vartype usages: azure.mgmt.recoveryservices.aio.operations.UsagesOperations - :param credential: Credential needed for the client to connect to Azure. + :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials_async.AsyncTokenCredential - :param subscription_id: The subscription Id. + :param subscription_id: The 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 "2022-04-01". Note that overriding this + :keyword api_version: Api Version. Default value is "2022-08-01". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str :keyword int polling_interval: Default waiting time between two polls for LRO operations if no @@ -69,7 +82,9 @@ def __init__( base_url: str = "https://management.azure.com", **kwargs: Any ) -> None: - self._config = RecoveryServicesClientConfiguration(credential=credential, subscription_id=subscription_id, **kwargs) + self._config = RecoveryServicesClientConfiguration( + 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)} @@ -91,25 +106,14 @@ def __init__( self.recovery_services = RecoveryServicesOperations( self._client, self._config, self._serialize, self._deserialize ) - self.vaults = VaultsOperations( - self._client, self._config, self._serialize, self._deserialize - ) - self.operations = Operations( - self._client, self._config, self._serialize, self._deserialize - ) + self.vaults = VaultsOperations(self._client, self._config, self._serialize, self._deserialize) + self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) self.vault_extended_info = VaultExtendedInfoOperations( self._client, self._config, self._serialize, self._deserialize ) - self.usages = UsagesOperations( - self._client, self._config, self._serialize, self._deserialize - ) + self.usages = UsagesOperations(self._client, self._config, self._serialize, self._deserialize) - - def _send_request( - self, - request: HttpRequest, - **kwargs: Any - ) -> Awaitable[AsyncHttpResponse]: + def _send_request(self, request: HttpRequest, **kwargs: Any) -> Awaitable[AsyncHttpResponse]: """Runs the network request through the client's chained policies. >>> from azure.core.rest import HttpRequest @@ -118,7 +122,7 @@ def _send_request( >>> response = await client._send_request(request) - For more information on this code flow, see https://aka.ms/azsdk/python/protocol/quickstart + For more information on this code flow, see https://aka.ms/azsdk/dpcodegen/python/send_request :param request: The network request you want to make. Required. :type request: ~azure.core.rest.HttpRequest diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_vendor.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_vendor.py index 9a22954fffaa..00a9934562f2 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_vendor.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/_vendor.py @@ -14,13 +14,14 @@ if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - from msrest import Deserializer, Serializer - from azure.core import AsyncPipelineClient + from .._serialization import Deserializer, Serializer + class MixinABC(ABC): """DO NOT use this class. It is for internal typing use only.""" + _client: "AsyncPipelineClient" _config: RecoveryServicesClientConfiguration _serialize: "Serializer" diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/__init__.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/__init__.py index 7fc8b3c14b3c..fa4730b40abe 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/__init__.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/__init__.py @@ -20,17 +20,18 @@ from ._patch import __all__ as _patch_all from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import from ._patch import patch_sdk as _patch_sdk + __all__ = [ - 'VaultCertificatesOperations', - 'RegisteredIdentitiesOperations', - 'ReplicationUsagesOperations', - 'PrivateLinkResourcesOperations', - 'RecoveryServicesOperations', - 'VaultsOperations', - 'Operations', - 'VaultExtendedInfoOperations', - 'RecoveryServicesClientOperationsMixin', - 'UsagesOperations', + "VaultCertificatesOperations", + "RegisteredIdentitiesOperations", + "ReplicationUsagesOperations", + "PrivateLinkResourcesOperations", + "RecoveryServicesOperations", + "VaultsOperations", + "Operations", + "VaultExtendedInfoOperations", + "RecoveryServicesClientOperationsMixin", + "UsagesOperations", ] __all__.extend([p for p in _patch_all if p not in __all__]) -_patch_sdk() \ No newline at end of file +_patch_sdk() diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_operations.py index 879d1731624f..09dc98c7fb9c 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_operations.py @@ -7,9 +7,17 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar +from urllib.parse import parse_qs, urljoin, urlparse from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest @@ -21,9 +29,11 @@ from ..._vendor import _convert_request from ...operations._operations import build_list_request from .._vendor import MixinABC -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + class Operations: """ .. warning:: @@ -43,37 +53,37 @@ def __init__(self, *args, **kwargs) -> None: 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 - ) -> AsyncIterable[_models.ClientDiscoveryResponse]: + def list(self, **kwargs: Any) -> AsyncIterable["_models.ClientDiscoveryValueForSingleApi"]: """Returns the list of available operations. :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ClientDiscoveryResponse or the result of + :return: An iterator like instance of either ClientDiscoveryValueForSingleApi or the result of cls(response) :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.ClientDiscoveryResponse] - :raises: ~azure.core.exceptions.HttpResponseError + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.ClientDiscoveryValueForSingleApi] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.ClientDiscoveryResponse] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.ClientDiscoveryResponse] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_request( api_version=api_version, - template_url=self.list.metadata['url'], + template_url=self.list.metadata["url"], headers=_headers, params=_params, ) @@ -81,13 +91,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_request( - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -103,10 +111,8 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -116,8 +122,6 @@ async def get_next(next_link=None): return pipeline_response + return AsyncItemPaged(get_next, extract_data) - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/providers/Microsoft.RecoveryServices/operations"} # type: ignore + list.metadata = {"url": "/providers/Microsoft.RecoveryServices/operations"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_patch.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_patch.py index 0ad201a8c586..f7dd32510333 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_patch.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_patch.py @@ -10,6 +10,7 @@ __all__: List[str] = [] # Add all objects you want publicly available to users at this package level + def patch_sdk(): """Do not remove from this file. diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_private_link_resources_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_private_link_resources_operations.py index 05dd59b39baf..43bd2fb68fd9 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_private_link_resources_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_private_link_resources_operations.py @@ -7,9 +7,17 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar +from urllib.parse import parse_qs, urljoin, urlparse from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest @@ -22,9 +30,11 @@ from ..._vendor import _convert_request from ...operations._private_link_resources_operations import build_get_request, build_list_request from .._vendor import MixinABC -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + class PrivateLinkResourcesOperations: """ .. warning:: @@ -44,49 +54,48 @@ def __init__(self, *args, **kwargs) -> None: 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, - resource_group_name: str, - vault_name: str, - **kwargs: Any - ) -> AsyncIterable[_models.PrivateLinkResources]: + self, resource_group_name: str, vault_name: str, **kwargs: Any + ) -> AsyncIterable["_models.PrivateLinkResource"]: """Returns the list of private link resources that need to be created for Backup and SiteRecovery. Returns the list of private link resources that need to be created for Backup and SiteRecovery. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either PrivateLinkResources or the result of - cls(response) + :return: An iterator like instance of either PrivateLinkResource or the result of cls(response) :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.PrivateLinkResources] - :raises: ~azure.core.exceptions.HttpResponseError + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.PrivateLinkResource] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.PrivateLinkResources] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.PrivateLinkResources] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata['url'], + template_url=self.list.metadata["url"], headers=_headers, params=_params, ) @@ -94,16 +103,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - vault_name=vault_name, - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -119,10 +123,8 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -132,55 +134,51 @@ async def get_next(next_link=None): return pipeline_response + return AsyncItemPaged(get_next, extract_data) - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources"} # type: ignore + list.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources"} # type: ignore @distributed_trace_async async def get( - self, - resource_group_name: str, - vault_name: str, - private_link_resource_name: str, - **kwargs: Any + self, resource_group_name: str, vault_name: str, private_link_resource_name: str, **kwargs: Any ) -> _models.PrivateLinkResource: """Returns a specified private link resource that need to be created for Backup and SiteRecovery. Returns a specified private link resource that need to be created for Backup and SiteRecovery. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param private_link_resource_name: + :param private_link_resource_name: Required. :type private_link_resource_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: PrivateLinkResource, or the result of cls(response) + :return: PrivateLinkResource or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.PrivateLinkResource - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.PrivateLinkResource] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.PrivateLinkResource] - request = build_get_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, private_link_resource_name=private_link_resource_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata['url'], + template_url=self.get.metadata["url"], headers=_headers, params=_params, ) @@ -188,22 +186,20 @@ async def get( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('PrivateLinkResource', pipeline_response) + deserialized = self._deserialize("PrivateLinkResource", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources/{privateLinkResourceName}"} # type: ignore - + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources/{privateLinkResourceName}"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_recovery_services_client_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_recovery_services_client_operations.py index 6b0141d3332c..99d23be5db79 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_recovery_services_client_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_recovery_services_client_operations.py @@ -8,7 +8,14 @@ # -------------------------------------------------------------------------- from typing import Any, Callable, Dict, Optional, TypeVar -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest @@ -18,54 +25,56 @@ from ... import models as _models from ..._vendor import _convert_request -from ...operations._recovery_services_client_operations import build_get_operation_result_request, build_get_operation_status_request +from ...operations._recovery_services_client_operations import ( + build_get_operation_result_request, + build_get_operation_status_request, +) from .._vendor import MixinABC -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] -class RecoveryServicesClientOperationsMixin(MixinABC): +class RecoveryServicesClientOperationsMixin(MixinABC): @distributed_trace_async async def get_operation_status( - self, - resource_group_name: str, - vault_name: str, - operation_id: str, - **kwargs: Any + self, resource_group_name: str, vault_name: str, operation_id: str, **kwargs: Any ) -> _models.OperationResource: """Gets the operation status for a resource. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param operation_id: + :param operation_id: Required. :type operation_id: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: OperationResource, or the result of cls(response) + :return: OperationResource or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.OperationResource - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.OperationResource] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.OperationResource] - request = build_get_operation_status_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, operation_id=operation_id, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get_operation_status.metadata['url'], + template_url=self.get_operation_status.metadata["url"], headers=_headers, params=_params, ) @@ -73,67 +82,63 @@ async def get_operation_status( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('OperationResource', pipeline_response) + deserialized = self._deserialize("OperationResource", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get_operation_status.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationStatus/{operationId}"} # type: ignore - + get_operation_status.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationStatus/{operationId}"} # type: ignore @distributed_trace_async async def get_operation_result( - self, - resource_group_name: str, - vault_name: str, - operation_id: str, - **kwargs: Any + self, resource_group_name: str, vault_name: str, operation_id: str, **kwargs: Any ) -> Optional[_models.Vault]: """Gets the operation result for a resource. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param operation_id: + :param operation_id: Required. :type operation_id: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: Vault, or the result of cls(response) + :return: Vault or None or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.Vault or None - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[Optional[_models.Vault]] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[Optional[_models.Vault]] - request = build_get_operation_result_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, operation_id=operation_id, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get_operation_result.metadata['url'], + template_url=self.get_operation_result.metadata["url"], headers=_headers, params=_params, ) @@ -141,10 +146,9 @@ async def get_operation_result( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200, 202]: @@ -153,12 +157,11 @@ async def get_operation_result( deserialized = None if response.status_code == 200: - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get_operation_result.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationResults/{operationId}"} # type: ignore - + get_operation_result.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationResults/{operationId}"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_recovery_services_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_recovery_services_operations.py index d1f348e3bd92..98e6ac0b0af7 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_recovery_services_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_recovery_services_operations.py @@ -6,9 +6,16 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest @@ -20,9 +27,11 @@ from ..._vendor import _convert_request from ...operations._recovery_services_operations import build_check_name_availability_request from .._vendor import MixinABC -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + class RecoveryServicesOperations: """ .. warning:: @@ -42,13 +51,14 @@ def __init__(self, *args, **kwargs) -> None: 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 + @overload async def check_name_availability( self, resource_group_name: str, location: str, input: _models.CheckNameAvailabilityParameters, + *, + content_type: str = "application/json", **kwargs: Any ) -> _models.CheckNameAvailabilityResult: """API to check for resource name availability. @@ -64,39 +74,127 @@ async def check_name_availability( be more than 24 Hours Ago. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param location: Location of the resource. + :param location: Location of the resource. Required. :type location: str - :param input: Contains information about Resource type and Resource name. + :param input: Contains information about Resource type and Resource name. Required. :type input: ~azure.mgmt.recoveryservices.models.CheckNameAvailabilityParameters + :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: CheckNameAvailabilityResult or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.CheckNameAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def check_name_availability( + self, + resource_group_name: str, + location: str, + input: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CheckNameAvailabilityResult: + """API to check for resource name availability. + A name is available if no other resource exists that has the same SubscriptionId, Resource Name + and Type + or if one or more such resources exist, each of these must be GC'd and their time of deletion + be more than 24 Hours Ago. + + API to check for resource name availability. + A name is available if no other resource exists that has the same SubscriptionId, Resource Name + and Type + or if one or more such resources exist, each of these must be GC'd and their time of deletion + be more than 24 Hours Ago. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param location: Location of the resource. Required. + :type location: str + :param input: Contains information about Resource type and Resource name. Required. + :type input: IO + :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: CheckNameAvailabilityResult, or the result of cls(response) + :return: CheckNameAvailabilityResult or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.CheckNameAvailabilityResult - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def check_name_availability( + self, + resource_group_name: str, + location: str, + input: Union[_models.CheckNameAvailabilityParameters, IO], + **kwargs: Any + ) -> _models.CheckNameAvailabilityResult: + """API to check for resource name availability. + A name is available if no other resource exists that has the same SubscriptionId, Resource Name + and Type + or if one or more such resources exist, each of these must be GC'd and their time of deletion + be more than 24 Hours Ago. + + API to check for resource name availability. + A name is available if no other resource exists that has the same SubscriptionId, Resource Name + and Type + or if one or more such resources exist, each of these must be GC'd and their time of deletion + be more than 24 Hours Ago. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param location: Location of the resource. Required. + :type location: str + :param input: Contains information about Resource type and Resource name. Is either a model + type or a IO type. Required. + :type input: ~azure.mgmt.recoveryservices.models.CheckNameAvailabilityParameters 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 + :return: CheckNameAvailabilityResult or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.CheckNameAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.CheckNameAvailabilityResult] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.CheckNameAvailabilityResult] - _json = self._serialize.body(input, 'CheckNameAvailabilityParameters') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(input, (IO, bytes)): + _content = input + else: + _json = self._serialize.body(input, "CheckNameAvailabilityParameters") request = build_check_name_availability_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, location=location, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self.check_name_availability.metadata['url'], + content=_content, + template_url=self.check_name_availability.metadata["url"], headers=_headers, params=_params, ) @@ -104,22 +202,20 @@ async def check_name_availability( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('CheckNameAvailabilityResult', pipeline_response) + deserialized = self._deserialize("CheckNameAvailabilityResult", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - check_name_availability.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/locations/{location}/checkNameAvailability"} # type: ignore - + check_name_availability.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/locations/{location}/checkNameAvailability"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_registered_identities_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_registered_identities_operations.py index 2137d4907501..8a0ccc8dadd3 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_registered_identities_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_registered_identities_operations.py @@ -8,7 +8,14 @@ # -------------------------------------------------------------------------- from typing import Any, Callable, Dict, Optional, TypeVar -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest @@ -20,9 +27,11 @@ from ..._vendor import _convert_request from ...operations._registered_identities_operations import build_delete_request from .._vendor import MixinABC -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + class RegisteredIdentitiesOperations: """ .. warning:: @@ -42,48 +51,45 @@ def __init__(self, *args, **kwargs) -> None: 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 delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - vault_name: str, - identity_name: str, - **kwargs: Any + self, resource_group_name: str, vault_name: str, identity_name: str, **kwargs: Any ) -> None: """Unregisters the given container from your Recovery Services vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param identity_name: Name of the protection container to unregister. + :param identity_name: Name of the protection container to unregister. Required. :type identity_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) + :return: None or the result of cls(response) :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[None] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[None] - request = build_delete_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, identity_name=identity_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.delete.metadata['url'], + template_url=self.delete.metadata["url"], headers=_headers, params=_params, ) @@ -91,10 +97,9 @@ async def delete( # pylint: disable=inconsistent-return-statements request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [204]: @@ -104,5 +109,4 @@ async def delete( # pylint: disable=inconsistent-return-statements if cls: return cls(pipeline_response, None, {}) - delete.metadata = {'url': "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/registeredIdentities/{identityName}"} # type: ignore - + delete.metadata = {"url": "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/registeredIdentities/{identityName}"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_replication_usages_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_replication_usages_operations.py index f06da73c3257..90e8f9cbe43f 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_replication_usages_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_replication_usages_operations.py @@ -7,9 +7,17 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar +from urllib.parse import parse_qs, urljoin, urlparse from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest @@ -21,9 +29,11 @@ from ..._vendor import _convert_request from ...operations._replication_usages_operations import build_list_request from .._vendor import MixinABC -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + class ReplicationUsagesOperations: """ .. warning:: @@ -43,47 +53,46 @@ def __init__(self, *args, **kwargs) -> None: 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, - resource_group_name: str, - vault_name: str, - **kwargs: Any - ) -> AsyncIterable[_models.ReplicationUsageList]: + self, resource_group_name: str, vault_name: str, **kwargs: Any + ) -> AsyncIterable["_models.ReplicationUsage"]: """Fetches the replication usages of the vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ReplicationUsageList or the result of - cls(response) + :return: An iterator like instance of either ReplicationUsage or the result of cls(response) :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.ReplicationUsageList] - :raises: ~azure.core.exceptions.HttpResponseError + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.ReplicationUsage] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.ReplicationUsageList] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.ReplicationUsageList] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata['url'], + template_url=self.list.metadata["url"], headers=_headers, params=_params, ) @@ -91,16 +100,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - vault_name=vault_name, - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -116,10 +120,8 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -129,8 +131,6 @@ async def get_next(next_link=None): return pipeline_response + return AsyncItemPaged(get_next, extract_data) - return AsyncItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/replicationUsages"} # type: ignore + list.metadata = {"url": "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/replicationUsages"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_usages_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_usages_operations.py index 187ba52869b3..c1ebebbf661e 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_usages_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_usages_operations.py @@ -7,9 +7,17 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar +from urllib.parse import parse_qs, urljoin, urlparse from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest @@ -21,9 +29,11 @@ from ..._vendor import _convert_request from ...operations._usages_operations import build_list_by_vaults_request from .._vendor import MixinABC -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + class UsagesOperations: """ .. warning:: @@ -43,46 +53,45 @@ def __init__(self, *args, **kwargs) -> None: self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") - @distributed_trace def list_by_vaults( - self, - resource_group_name: str, - vault_name: str, - **kwargs: Any - ) -> AsyncIterable[_models.VaultUsageList]: + self, resource_group_name: str, vault_name: str, **kwargs: Any + ) -> AsyncIterable["_models.VaultUsage"]: """Fetches the usages of the vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VaultUsageList or the result of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.VaultUsageList] - :raises: ~azure.core.exceptions.HttpResponseError + :return: An iterator like instance of either VaultUsage or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.VaultUsage] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultUsageList] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultUsageList] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_by_vaults_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_vaults.metadata['url'], + template_url=self.list_by_vaults.metadata["url"], headers=_headers, params=_params, ) @@ -90,16 +99,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_by_vaults_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - vault_name=vault_name, - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -115,10 +119,8 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -128,8 +130,6 @@ async def get_next(next_link=None): return pipeline_response + return AsyncItemPaged(get_next, extract_data) - return AsyncItemPaged( - get_next, extract_data - ) - list_by_vaults.metadata = {'url': "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/usages"} # type: ignore + list_by_vaults.metadata = {"url": "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/usages"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vault_certificates_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vault_certificates_operations.py index 5460fa6f4e67..1a524e02e0ae 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vault_certificates_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vault_certificates_operations.py @@ -6,9 +6,16 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest @@ -20,9 +27,11 @@ from ..._vendor import _convert_request from ...operations._vault_certificates_operations import build_create_request from .._vendor import MixinABC -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + class VaultCertificatesOperations: """ .. warning:: @@ -42,55 +51,130 @@ def __init__(self, *args, **kwargs) -> None: 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 + @overload async def create( self, resource_group_name: str, vault_name: str, certificate_name: str, certificate_request: _models.CertificateRequest, + *, + content_type: str = "application/json", **kwargs: Any ) -> _models.VaultCertificateResponse: """Uploads a certificate for a resource. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param certificate_name: Certificate friendly name. + :param certificate_name: Certificate friendly name. Required. :type certificate_name: str - :param certificate_request: Input parameters for uploading the vault certificate. + :param certificate_request: Input parameters for uploading the vault certificate. Required. :type certificate_request: ~azure.mgmt.recoveryservices.models.CertificateRequest + :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: VaultCertificateResponse or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultCertificateResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create( + self, + resource_group_name: str, + vault_name: str, + certificate_name: str, + certificate_request: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.VaultCertificateResponse: + """Uploads a certificate for a resource. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param certificate_name: Certificate friendly name. Required. + :type certificate_name: str + :param certificate_request: Input parameters for uploading the vault certificate. Required. + :type certificate_request: IO + :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: VaultCertificateResponse, or the result of cls(response) + :return: VaultCertificateResponse or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.VaultCertificateResponse - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create( + self, + resource_group_name: str, + vault_name: str, + certificate_name: str, + certificate_request: Union[_models.CertificateRequest, IO], + **kwargs: Any + ) -> _models.VaultCertificateResponse: + """Uploads a certificate for a resource. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param certificate_name: Certificate friendly name. Required. + :type certificate_name: str + :param certificate_request: Input parameters for uploading the vault certificate. Is either a + model type or a IO type. Required. + :type certificate_request: ~azure.mgmt.recoveryservices.models.CertificateRequest 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 + :return: VaultCertificateResponse or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultCertificateResponse + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultCertificateResponse] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultCertificateResponse] - _json = self._serialize.body(certificate_request, 'CertificateRequest') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(certificate_request, (IO, bytes)): + _content = certificate_request + else: + _json = self._serialize.body(certificate_request, "CertificateRequest") request = build_create_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, certificate_name=certificate_name, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self.create.metadata['url'], + content=_content, + template_url=self.create.metadata["url"], headers=_headers, params=_params, ) @@ -98,22 +182,20 @@ async def create( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('VaultCertificateResponse', pipeline_response) + deserialized = self._deserialize("VaultCertificateResponse", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - create.metadata = {'url': "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/certificates/{certificateName}"} # type: ignore - + create.metadata = {"url": "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/certificates/{certificateName}"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vault_extended_info_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vault_extended_info_operations.py index 74d10dbde7ac..ee22312e51b6 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vault_extended_info_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vault_extended_info_operations.py @@ -6,9 +6,16 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.rest import HttpRequest @@ -18,11 +25,17 @@ from ... import models as _models from ..._vendor import _convert_request -from ...operations._vault_extended_info_operations import build_create_or_update_request, build_get_request, build_update_request +from ...operations._vault_extended_info_operations import ( + build_create_or_update_request, + build_get_request, + build_update_request, +) from .._vendor import MixinABC -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + class VaultExtendedInfoOperations: """ .. warning:: @@ -42,44 +55,40 @@ def __init__(self, *args, **kwargs) -> None: 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 get( - self, - resource_group_name: str, - vault_name: str, - **kwargs: Any - ) -> _models.VaultExtendedInfoResource: + async def get(self, resource_group_name: str, vault_name: str, **kwargs: Any) -> _models.VaultExtendedInfoResource: """Get the vault extended info. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: VaultExtendedInfoResource, or the result of cls(response) + :return: VaultExtendedInfoResource or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultExtendedInfoResource] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultExtendedInfoResource] - request = build_get_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata['url'], + template_url=self.get.metadata["url"], headers=_headers, params=_params, ) @@ -87,71 +96,140 @@ async def get( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('VaultExtendedInfoResource', pipeline_response) + deserialized = self._deserialize("VaultExtendedInfoResource", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore - + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore - @distributed_trace_async + @overload async def create_or_update( self, resource_group_name: str, vault_name: str, resource_extended_info_details: _models.VaultExtendedInfoResource, + *, + content_type: str = "application/json", **kwargs: Any ) -> _models.VaultExtendedInfoResource: """Create vault extended info. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param resource_extended_info_details: Details of ResourceExtendedInfo. + :param resource_extended_info_details: Details of ResourceExtendedInfo. Required. :type resource_extended_info_details: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :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: VaultExtendedInfoResource or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update( + self, + resource_group_name: str, + vault_name: str, + resource_extended_info_details: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.VaultExtendedInfoResource: + """Create vault extended info. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param resource_extended_info_details: Details of ResourceExtendedInfo. Required. + :type resource_extended_info_details: IO + :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: VaultExtendedInfoResource, or the result of cls(response) + :return: VaultExtendedInfoResource or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + vault_name: str, + resource_extended_info_details: Union[_models.VaultExtendedInfoResource, IO], + **kwargs: Any + ) -> _models.VaultExtendedInfoResource: + """Create vault extended info. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param resource_extended_info_details: Details of ResourceExtendedInfo. Is either a model type + or a IO type. Required. + :type resource_extended_info_details: + ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource 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 + :return: VaultExtendedInfoResource or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultExtendedInfoResource] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultExtendedInfoResource] - _json = self._serialize.body(resource_extended_info_details, 'VaultExtendedInfoResource') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(resource_extended_info_details, (IO, bytes)): + _content = resource_extended_info_details + else: + _json = self._serialize.body(resource_extended_info_details, "VaultExtendedInfoResource") request = build_create_or_update_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self.create_or_update.metadata['url'], + content=_content, + template_url=self.create_or_update.metadata["url"], headers=_headers, params=_params, ) @@ -159,71 +237,140 @@ async def create_or_update( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('VaultExtendedInfoResource', pipeline_response) + deserialized = self._deserialize("VaultExtendedInfoResource", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore - + create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore - @distributed_trace_async + @overload async def update( self, resource_group_name: str, vault_name: str, resource_extended_info_details: _models.VaultExtendedInfoResource, + *, + content_type: str = "application/json", **kwargs: Any ) -> _models.VaultExtendedInfoResource: """Update vault extended info. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param resource_extended_info_details: Details of ResourceExtendedInfo. + :param resource_extended_info_details: Details of ResourceExtendedInfo. Required. :type resource_extended_info_details: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :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: VaultExtendedInfoResource or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def update( + self, + resource_group_name: str, + vault_name: str, + resource_extended_info_details: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.VaultExtendedInfoResource: + """Update vault extended info. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param resource_extended_info_details: Details of ResourceExtendedInfo. Required. + :type resource_extended_info_details: IO + :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: VaultExtendedInfoResource, or the result of cls(response) + :return: VaultExtendedInfoResource or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def update( + self, + resource_group_name: str, + vault_name: str, + resource_extended_info_details: Union[_models.VaultExtendedInfoResource, IO], + **kwargs: Any + ) -> _models.VaultExtendedInfoResource: + """Update vault extended info. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param resource_extended_info_details: Details of ResourceExtendedInfo. Is either a model type + or a IO type. Required. + :type resource_extended_info_details: + ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource 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 + :return: VaultExtendedInfoResource or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultExtendedInfoResource] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultExtendedInfoResource] - _json = self._serialize.body(resource_extended_info_details, 'VaultExtendedInfoResource') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(resource_extended_info_details, (IO, bytes)): + _content = resource_extended_info_details + else: + _json = self._serialize.body(resource_extended_info_details, "VaultExtendedInfoResource") request = build_update_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self.update.metadata['url'], + content=_content, + template_url=self.update.metadata["url"], headers=_headers, params=_params, ) @@ -231,22 +378,20 @@ async def update( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('VaultExtendedInfoResource', pipeline_response) + deserialized = self._deserialize("VaultExtendedInfoResource", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore - + update.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vaults_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vaults_operations.py index 14d72532eff8..5785c1706adc 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vaults_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/aio/operations/_vaults_operations.py @@ -6,10 +6,18 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union, cast +from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +from urllib.parse import parse_qs, urljoin, urlparse from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod @@ -22,11 +30,20 @@ from ... import models as _models from ..._vendor import _convert_request -from ...operations._vaults_operations import build_create_or_update_request_initial, build_delete_request, build_get_request, build_list_by_resource_group_request, build_list_by_subscription_id_request, build_update_request_initial +from ...operations._vaults_operations import ( + build_create_or_update_request, + build_delete_request, + build_get_request, + build_list_by_resource_group_request, + build_list_by_subscription_id_request, + build_update_request, +) from .._vendor import MixinABC -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + class VaultsOperations: """ .. warning:: @@ -46,36 +63,36 @@ def __init__(self, *args, **kwargs) -> None: self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") - @distributed_trace - def list_by_subscription_id( - self, - **kwargs: Any - ) -> AsyncIterable[_models.VaultList]: + def list_by_subscription_id(self, **kwargs: Any) -> AsyncIterable["_models.Vault"]: """Fetches all the resources of the specified type in the subscription. :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VaultList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.VaultList] - :raises: ~azure.core.exceptions.HttpResponseError + :return: An iterator like instance of either Vault or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultList] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultList] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_by_subscription_id_request( subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_subscription_id.metadata['url'], + template_url=self.list_by_subscription_id.metadata["url"], headers=_headers, params=_params, ) @@ -83,14 +100,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_by_subscription_id_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -106,10 +120,8 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -119,46 +131,44 @@ async def get_next(next_link=None): return pipeline_response + return AsyncItemPaged(get_next, extract_data) - return AsyncItemPaged( - get_next, extract_data - ) - list_by_subscription_id.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/vaults"} # type: ignore + list_by_subscription_id.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/vaults"} # type: ignore @distributed_trace - def list_by_resource_group( - self, - resource_group_name: str, - **kwargs: Any - ) -> AsyncIterable[_models.VaultList]: + def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> AsyncIterable["_models.Vault"]: """Retrieve a list of Vaults. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VaultList or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.VaultList] - :raises: ~azure.core.exceptions.HttpResponseError + :return: An iterator like instance of either Vault or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultList] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultList] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_by_resource_group_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_resource_group.metadata['url'], + template_url=self.list_by_resource_group.metadata["url"], headers=_headers, params=_params, ) @@ -166,15 +176,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_by_resource_group_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -190,10 +196,8 @@ async def extract_data(pipeline_response): async def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -203,49 +207,44 @@ async def get_next(next_link=None): return pipeline_response + return AsyncItemPaged(get_next, extract_data) - return AsyncItemPaged( - get_next, extract_data - ) - list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults"} # type: ignore + list_by_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults"} # type: ignore @distributed_trace_async - async def get( - self, - resource_group_name: str, - vault_name: str, - **kwargs: Any - ) -> _models.Vault: + async def get(self, resource_group_name: str, vault_name: str, **kwargs: Any) -> _models.Vault: """Get the Vault details. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: Vault, or the result of cls(response) + :return: Vault or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.Vault - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.Vault] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.Vault] - request = build_get_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata['url'], + template_url=self.get.metadata["url"], headers=_headers, params=_params, ) @@ -253,55 +252,59 @@ async def get( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore - + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore async def _create_or_update_initial( - self, - resource_group_name: str, - vault_name: str, - vault: _models.Vault, - **kwargs: Any + self, resource_group_name: str, vault_name: str, vault: Union[_models.Vault, IO], **kwargs: Any ) -> _models.Vault: error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.Vault] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.Vault] - _json = self._serialize.body(vault, 'Vault') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(vault, (IO, bytes)): + _content = vault + else: + _json = self._serialize.body(vault, "Vault") - request = build_create_or_update_request_initial( - subscription_id=self._config.subscription_id, + request = build_create_or_update_request( resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self._create_or_update_initial.metadata['url'], + content=_content, + template_url=self._create_or_update_initial.metadata["url"], headers=_headers, params=_params, ) @@ -309,10 +312,9 @@ async def _create_or_update_initial( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200, 201]: @@ -320,36 +322,105 @@ async def _create_or_update_initial( raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if response.status_code == 201: - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore + _create_or_update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore - - @distributed_trace_async + @overload async def begin_create_or_update( self, resource_group_name: str, vault_name: str, vault: _models.Vault, + *, + content_type: str = "application/json", **kwargs: Any ) -> AsyncLROPoller[_models.Vault]: """Creates or updates a Recovery Services vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param vault: Recovery Services Vault to be created. + :param vault: Recovery Services Vault to be created. Required. :type vault: ~azure.mgmt.recoveryservices.models.Vault + :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 + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either Vault or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + vault_name: str, + vault: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.Vault]: + """Creates or updates a Recovery Services vault. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param vault: Recovery Services Vault to be created. Required. + :type vault: IO + :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 + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either Vault or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_create_or_update( + self, resource_group_name: str, vault_name: str, vault: Union[_models.Vault, IO], **kwargs: Any + ) -> AsyncLROPoller[_models.Vault]: + """Creates or updates a Recovery Services vault. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param vault: Recovery Services Vault to be created. Is either a model type or a IO type. + Required. + :type vault: ~azure.mgmt.recoveryservices.models.Vault 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 :keyword str continuation_token: A continuation token to restart a poller from a saved state. :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for @@ -360,20 +431,17 @@ async def begin_create_or_update( Retry-After header is present. :return: An instance of AsyncLROPoller that returns either Vault or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.recoveryservices.models.Vault] - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ _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', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.Vault] - polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] - lro_delay = kwargs.pop( - 'polling_interval', - self._config.polling_interval - ) - cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.Vault] + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] if cont_token is None: raw_result = await self._create_or_update_initial( # type: ignore resource_group_name=resource_group_name, @@ -381,77 +449,72 @@ async def begin_create_or_update( vault=vault, api_version=api_version, content_type=content_type, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, headers=_headers, params=_params, **kwargs ) - kwargs.pop('error_map', None) + kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - if polling is True: - polling_method = cast(AsyncPollingMethod, AsyncARMPolling( - lro_delay, - - - **kwargs - )) # type: AsyncPollingMethod - elif polling is False: polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: polling_method = polling + polling_method = cast(AsyncPollingMethod, AsyncARMPolling(lro_delay, **kwargs)) # type: AsyncPollingMethod + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling if cont_token: return AsyncLROPoller.from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, - deserialization_callback=get_long_running_output + deserialization_callback=get_long_running_output, ) return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore + begin_create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore @distributed_trace_async async def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - vault_name: str, - **kwargs: Any + self, resource_group_name: str, vault_name: str, **kwargs: Any ) -> None: """Deletes a vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_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) + :return: None or the result of cls(response) :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[None] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[None] - request = build_delete_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.delete.metadata['url'], + template_url=self.delete.metadata["url"], headers=_headers, params=_params, ) @@ -459,10 +522,9 @@ async def delete( # pylint: disable=inconsistent-return-statements request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: @@ -472,38 +534,43 @@ async def delete( # pylint: disable=inconsistent-return-statements if cls: return cls(pipeline_response, None, {}) - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore - + delete.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore async def _update_initial( - self, - resource_group_name: str, - vault_name: str, - vault: _models.PatchVault, - **kwargs: Any + self, resource_group_name: str, vault_name: str, vault: Union[_models.PatchVault, IO], **kwargs: Any ) -> Optional[_models.Vault]: error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[Optional[_models.Vault]] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[Optional[_models.Vault]] - _json = self._serialize.body(vault, 'PatchVault') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(vault, (IO, bytes)): + _content = vault + else: + _json = self._serialize.body(vault, "PatchVault") - request = build_update_request_initial( - subscription_id=self._config.subscription_id, + request = build_update_request( resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self._update_initial.metadata['url'], + content=_content, + template_url=self._update_initial.metadata["url"], headers=_headers, params=_params, ) @@ -511,10 +578,9 @@ async def _update_initial( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = await self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200, 202]: @@ -523,33 +589,102 @@ async def _update_initial( deserialized = None if response.status_code == 200: - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - _update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore - + _update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore - @distributed_trace_async + @overload async def begin_update( self, resource_group_name: str, vault_name: str, vault: _models.PatchVault, + *, + content_type: str = "application/json", **kwargs: Any ) -> AsyncLROPoller[_models.Vault]: """Updates the vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param vault: Recovery Services Vault to be created. + :param vault: Recovery Services Vault to be created. Required. :type vault: ~azure.mgmt.recoveryservices.models.PatchVault + :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 + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either Vault or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + resource_group_name: str, + vault_name: str, + vault: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.Vault]: + """Updates the vault. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param vault: Recovery Services Vault to be created. Required. + :type vault: IO + :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 + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for + this operation to not poll, or pass in your own initialized polling object for a personal + polling strategy. + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either Vault or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_update( + self, resource_group_name: str, vault_name: str, vault: Union[_models.PatchVault, IO], **kwargs: Any + ) -> AsyncLROPoller[_models.Vault]: + """Updates the vault. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param vault: Recovery Services Vault to be created. Is either a model type or a IO type. + Required. + :type vault: ~azure.mgmt.recoveryservices.models.PatchVault 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 :keyword str continuation_token: A continuation token to restart a poller from a saved state. :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for @@ -560,20 +695,17 @@ async def begin_update( Retry-After header is present. :return: An instance of AsyncLROPoller that returns either Vault or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.recoveryservices.models.Vault] - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ _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', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.Vault] - polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] - lro_delay = kwargs.pop( - 'polling_interval', - self._config.polling_interval - ) - cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.Vault] + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] if cont_token is None: raw_result = await self._update_initial( # type: ignore resource_group_name=resource_group_name, @@ -581,36 +713,32 @@ async def begin_update( vault=vault, api_version=api_version, content_type=content_type, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, headers=_headers, params=_params, **kwargs ) - kwargs.pop('error_map', None) + kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - if polling is True: - polling_method = cast(AsyncPollingMethod, AsyncARMPolling( - lro_delay, - - - **kwargs - )) # type: AsyncPollingMethod - elif polling is False: polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: polling_method = polling + polling_method = cast(AsyncPollingMethod, AsyncARMPolling(lro_delay, **kwargs)) # type: AsyncPollingMethod + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling if cont_token: return AsyncLROPoller.from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, - deserialization_callback=get_long_running_output + deserialization_callback=get_long_running_output, ) return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore + begin_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/__init__.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/__init__.py index 931d2efeb90e..a30c6f8150b8 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/__init__.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/__init__.py @@ -22,6 +22,7 @@ from ._models_py3 import Error from ._models_py3 import ErrorAdditionalInfo from ._models_py3 import IdentityData +from ._models_py3 import ImmutabilitySettings from ._models_py3 import JobsSummary from ._models_py3 import MonitoringSettings from ._models_py3 import MonitoringSummary @@ -42,6 +43,7 @@ from ._models_py3 import ResourceCertificateAndAadDetails from ._models_py3 import ResourceCertificateAndAcsDetails from ._models_py3 import ResourceCertificateDetails +from ._models_py3 import SecuritySettings from ._models_py3 import Sku from ._models_py3 import SystemData from ._models_py3 import TrackedResource @@ -58,96 +60,98 @@ from ._models_py3 import VaultUsage from ._models_py3 import VaultUsageList - -from ._recovery_services_client_enums import ( - AlertsState, - AuthType, - BackupStorageVersion, - CreatedByType, - CrossRegionRestore, - InfrastructureEncryptionState, - PrivateEndpointConnectionStatus, - ProvisioningState, - ResourceIdentityType, - ResourceMoveState, - SkuName, - StandardTierStorageRedundancy, - TriggerType, - UsagesUnit, - VaultPrivateEndpointState, - VaultUpgradeState, -) +from ._recovery_services_client_enums import AlertsState +from ._recovery_services_client_enums import AuthType +from ._recovery_services_client_enums import BackupStorageVersion +from ._recovery_services_client_enums import CreatedByType +from ._recovery_services_client_enums import CrossRegionRestore +from ._recovery_services_client_enums import ImmutabilityState +from ._recovery_services_client_enums import InfrastructureEncryptionState +from ._recovery_services_client_enums import PrivateEndpointConnectionStatus +from ._recovery_services_client_enums import ProvisioningState +from ._recovery_services_client_enums import ResourceIdentityType +from ._recovery_services_client_enums import ResourceMoveState +from ._recovery_services_client_enums import SkuName +from ._recovery_services_client_enums import StandardTierStorageRedundancy +from ._recovery_services_client_enums import TriggerType +from ._recovery_services_client_enums import UsagesUnit +from ._recovery_services_client_enums import VaultPrivateEndpointState +from ._recovery_services_client_enums import VaultUpgradeState from ._patch import __all__ as _patch_all from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import from ._patch import patch_sdk as _patch_sdk + __all__ = [ - 'AzureMonitorAlertSettings', - 'CertificateRequest', - 'CheckNameAvailabilityParameters', - 'CheckNameAvailabilityResult', - 'ClassicAlertSettings', - 'ClientDiscoveryDisplay', - 'ClientDiscoveryForLogSpecification', - 'ClientDiscoveryForProperties', - 'ClientDiscoveryForServiceSpecification', - 'ClientDiscoveryResponse', - 'ClientDiscoveryValueForSingleApi', - 'CmkKekIdentity', - 'CmkKeyVaultProperties', - 'Error', - 'ErrorAdditionalInfo', - 'IdentityData', - 'JobsSummary', - 'MonitoringSettings', - 'MonitoringSummary', - 'NameInfo', - 'OperationResource', - 'PatchTrackedResource', - 'PatchVault', - 'PrivateEndpoint', - 'PrivateEndpointConnection', - 'PrivateEndpointConnectionVaultProperties', - 'PrivateLinkResource', - 'PrivateLinkResources', - 'PrivateLinkServiceConnectionState', - 'RawCertificateData', - 'ReplicationUsage', - 'ReplicationUsageList', - 'Resource', - 'ResourceCertificateAndAadDetails', - 'ResourceCertificateAndAcsDetails', - 'ResourceCertificateDetails', - 'Sku', - 'SystemData', - 'TrackedResource', - 'UpgradeDetails', - 'UserIdentity', - 'Vault', - 'VaultCertificateResponse', - 'VaultExtendedInfoResource', - 'VaultList', - 'VaultProperties', - 'VaultPropertiesEncryption', - 'VaultPropertiesMoveDetails', - 'VaultPropertiesRedundancySettings', - 'VaultUsage', - 'VaultUsageList', - 'AlertsState', - 'AuthType', - 'BackupStorageVersion', - 'CreatedByType', - 'CrossRegionRestore', - 'InfrastructureEncryptionState', - 'PrivateEndpointConnectionStatus', - 'ProvisioningState', - 'ResourceIdentityType', - 'ResourceMoveState', - 'SkuName', - 'StandardTierStorageRedundancy', - 'TriggerType', - 'UsagesUnit', - 'VaultPrivateEndpointState', - 'VaultUpgradeState', + "AzureMonitorAlertSettings", + "CertificateRequest", + "CheckNameAvailabilityParameters", + "CheckNameAvailabilityResult", + "ClassicAlertSettings", + "ClientDiscoveryDisplay", + "ClientDiscoveryForLogSpecification", + "ClientDiscoveryForProperties", + "ClientDiscoveryForServiceSpecification", + "ClientDiscoveryResponse", + "ClientDiscoveryValueForSingleApi", + "CmkKekIdentity", + "CmkKeyVaultProperties", + "Error", + "ErrorAdditionalInfo", + "IdentityData", + "ImmutabilitySettings", + "JobsSummary", + "MonitoringSettings", + "MonitoringSummary", + "NameInfo", + "OperationResource", + "PatchTrackedResource", + "PatchVault", + "PrivateEndpoint", + "PrivateEndpointConnection", + "PrivateEndpointConnectionVaultProperties", + "PrivateLinkResource", + "PrivateLinkResources", + "PrivateLinkServiceConnectionState", + "RawCertificateData", + "ReplicationUsage", + "ReplicationUsageList", + "Resource", + "ResourceCertificateAndAadDetails", + "ResourceCertificateAndAcsDetails", + "ResourceCertificateDetails", + "SecuritySettings", + "Sku", + "SystemData", + "TrackedResource", + "UpgradeDetails", + "UserIdentity", + "Vault", + "VaultCertificateResponse", + "VaultExtendedInfoResource", + "VaultList", + "VaultProperties", + "VaultPropertiesEncryption", + "VaultPropertiesMoveDetails", + "VaultPropertiesRedundancySettings", + "VaultUsage", + "VaultUsageList", + "AlertsState", + "AuthType", + "BackupStorageVersion", + "CreatedByType", + "CrossRegionRestore", + "ImmutabilityState", + "InfrastructureEncryptionState", + "PrivateEndpointConnectionStatus", + "ProvisioningState", + "ResourceIdentityType", + "ResourceMoveState", + "SkuName", + "StandardTierStorageRedundancy", + "TriggerType", + "UsagesUnit", + "VaultPrivateEndpointState", + "VaultUpgradeState", ] __all__.extend([p for p in _patch_all if p not in __all__]) -_patch_sdk() \ No newline at end of file +_patch_sdk() diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_models_py3.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_models_py3.py index 89697bffe25f..128d079297e2 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_models_py3.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_models_py3.py @@ -1,4 +1,5 @@ # coding=utf-8 +# pylint: disable=too-many-lines # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. @@ -9,39 +10,34 @@ import datetime from typing import Dict, List, Optional, TYPE_CHECKING, Union -import msrest.serialization +from .. import _serialization if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports - import __init__ as _models + from .. import models as _models -class AzureMonitorAlertSettings(msrest.serialization.Model): +class AzureMonitorAlertSettings(_serialization.Model): """Settings for Azure Monitor based alerts. - :ivar alerts_for_all_job_failures: Known values are: "Enabled", "Disabled". + :ivar alerts_for_all_job_failures: Known values are: "Enabled" and "Disabled". :vartype alerts_for_all_job_failures: str or ~azure.mgmt.recoveryservices.models.AlertsState """ _attribute_map = { - 'alerts_for_all_job_failures': {'key': 'alertsForAllJobFailures', 'type': 'str'}, + "alerts_for_all_job_failures": {"key": "alertsForAllJobFailures", "type": "str"}, } - def __init__( - self, - *, - alerts_for_all_job_failures: Optional[Union[str, "_models.AlertsState"]] = None, - **kwargs - ): + def __init__(self, *, alerts_for_all_job_failures: Optional[Union[str, "_models.AlertsState"]] = None, **kwargs): """ - :keyword alerts_for_all_job_failures: Known values are: "Enabled", "Disabled". + :keyword alerts_for_all_job_failures: Known values are: "Enabled" and "Disabled". :paramtype alerts_for_all_job_failures: str or ~azure.mgmt.recoveryservices.models.AlertsState """ - super(AzureMonitorAlertSettings, self).__init__(**kwargs) + super().__init__(**kwargs) self.alerts_for_all_job_failures = alerts_for_all_job_failures -class CertificateRequest(msrest.serialization.Model): +class CertificateRequest(_serialization.Model): """Details of the certificate to be uploaded to the vault. :ivar properties: Raw certificate data. @@ -49,24 +45,19 @@ class CertificateRequest(msrest.serialization.Model): """ _attribute_map = { - 'properties': {'key': 'properties', 'type': 'RawCertificateData'}, + "properties": {"key": "properties", "type": "RawCertificateData"}, } - def __init__( - self, - *, - properties: Optional["_models.RawCertificateData"] = None, - **kwargs - ): + def __init__(self, *, properties: Optional["_models.RawCertificateData"] = None, **kwargs): """ :keyword properties: Raw certificate data. :paramtype properties: ~azure.mgmt.recoveryservices.models.RawCertificateData """ - super(CertificateRequest, self).__init__(**kwargs) + super().__init__(**kwargs) self.properties = properties -class CheckNameAvailabilityParameters(msrest.serialization.Model): +class CheckNameAvailabilityParameters(_serialization.Model): """Resource Name availability input parameters - Resource type and resource name. :ivar type: Describes the Resource type: Microsoft.RecoveryServices/Vaults. @@ -76,29 +67,23 @@ class CheckNameAvailabilityParameters(msrest.serialization.Model): """ _attribute_map = { - 'type': {'key': 'type', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, + "type": {"key": "type", "type": "str"}, + "name": {"key": "name", "type": "str"}, } - def __init__( - self, - *, - type: Optional[str] = None, - name: Optional[str] = None, - **kwargs - ): + def __init__(self, *, type: Optional[str] = None, name: Optional[str] = None, **kwargs): """ :keyword type: Describes the Resource type: Microsoft.RecoveryServices/Vaults. :paramtype type: str :keyword name: Resource name for which availability needs to be checked. :paramtype name: str """ - super(CheckNameAvailabilityParameters, self).__init__(**kwargs) + super().__init__(**kwargs) self.type = type self.name = name -class CheckNameAvailabilityResult(msrest.serialization.Model): +class CheckNameAvailabilityResult(_serialization.Model): """Response for check name availability API. Resource provider will set availability as true | false. :ivar name_available: @@ -110,9 +95,9 @@ class CheckNameAvailabilityResult(msrest.serialization.Model): """ _attribute_map = { - 'name_available': {'key': 'nameAvailable', 'type': 'bool'}, - 'reason': {'key': 'reason', 'type': 'str'}, - 'message': {'key': 'message', 'type': 'str'}, + "name_available": {"key": "nameAvailable", "type": "bool"}, + "reason": {"key": "reason", "type": "str"}, + "message": {"key": "message", "type": "str"}, } def __init__( @@ -131,39 +116,34 @@ def __init__( :keyword message: :paramtype message: str """ - super(CheckNameAvailabilityResult, self).__init__(**kwargs) + super().__init__(**kwargs) self.name_available = name_available self.reason = reason self.message = message -class ClassicAlertSettings(msrest.serialization.Model): +class ClassicAlertSettings(_serialization.Model): """Settings for classic alerts. - :ivar alerts_for_critical_operations: Known values are: "Enabled", "Disabled". + :ivar alerts_for_critical_operations: Known values are: "Enabled" and "Disabled". :vartype alerts_for_critical_operations: str or ~azure.mgmt.recoveryservices.models.AlertsState """ _attribute_map = { - 'alerts_for_critical_operations': {'key': 'alertsForCriticalOperations', 'type': 'str'}, + "alerts_for_critical_operations": {"key": "alertsForCriticalOperations", "type": "str"}, } - def __init__( - self, - *, - alerts_for_critical_operations: Optional[Union[str, "_models.AlertsState"]] = None, - **kwargs - ): + def __init__(self, *, alerts_for_critical_operations: Optional[Union[str, "_models.AlertsState"]] = None, **kwargs): """ - :keyword alerts_for_critical_operations: Known values are: "Enabled", "Disabled". + :keyword alerts_for_critical_operations: Known values are: "Enabled" and "Disabled". :paramtype alerts_for_critical_operations: str or ~azure.mgmt.recoveryservices.models.AlertsState """ - super(ClassicAlertSettings, self).__init__(**kwargs) + super().__init__(**kwargs) self.alerts_for_critical_operations = alerts_for_critical_operations -class ClientDiscoveryDisplay(msrest.serialization.Model): +class ClientDiscoveryDisplay(_serialization.Model): """Localized display information of an operation. :ivar provider: Name of the provider for display purposes. @@ -177,10 +157,10 @@ class ClientDiscoveryDisplay(msrest.serialization.Model): """ _attribute_map = { - 'provider': {'key': 'provider', 'type': 'str'}, - 'resource': {'key': 'resource', 'type': 'str'}, - 'operation': {'key': 'operation', 'type': 'str'}, - 'description': {'key': 'description', 'type': 'str'}, + "provider": {"key": "provider", "type": "str"}, + "resource": {"key": "resource", "type": "str"}, + "operation": {"key": "operation", "type": "str"}, + "description": {"key": "description", "type": "str"}, } def __init__( @@ -202,14 +182,14 @@ def __init__( :keyword description: Description of the operation having details of what operation is about. :paramtype description: str """ - super(ClientDiscoveryDisplay, self).__init__(**kwargs) + super().__init__(**kwargs) self.provider = provider self.resource = resource self.operation = operation self.description = description -class ClientDiscoveryForLogSpecification(msrest.serialization.Model): +class ClientDiscoveryForLogSpecification(_serialization.Model): """Class to represent shoebox log specification in json client discovery. :ivar name: Name of the log. @@ -221,9 +201,9 @@ class ClientDiscoveryForLogSpecification(msrest.serialization.Model): """ _attribute_map = { - 'name': {'key': 'name', 'type': 'str'}, - 'display_name': {'key': 'displayName', 'type': 'str'}, - 'blob_duration': {'key': 'blobDuration', 'type': 'str'}, + "name": {"key": "name", "type": "str"}, + "display_name": {"key": "displayName", "type": "str"}, + "blob_duration": {"key": "blobDuration", "type": "str"}, } def __init__( @@ -242,13 +222,13 @@ def __init__( :keyword blob_duration: Blobs created in customer storage account per hour. :paramtype blob_duration: str """ - super(ClientDiscoveryForLogSpecification, self).__init__(**kwargs) + super().__init__(**kwargs) self.name = name self.display_name = display_name self.blob_duration = blob_duration -class ClientDiscoveryForProperties(msrest.serialization.Model): +class ClientDiscoveryForProperties(_serialization.Model): """Class to represent shoebox properties in json client discovery. :ivar service_specification: Operation properties. @@ -257,25 +237,22 @@ class ClientDiscoveryForProperties(msrest.serialization.Model): """ _attribute_map = { - 'service_specification': {'key': 'serviceSpecification', 'type': 'ClientDiscoveryForServiceSpecification'}, + "service_specification": {"key": "serviceSpecification", "type": "ClientDiscoveryForServiceSpecification"}, } def __init__( - self, - *, - service_specification: Optional["_models.ClientDiscoveryForServiceSpecification"] = None, - **kwargs + self, *, service_specification: Optional["_models.ClientDiscoveryForServiceSpecification"] = None, **kwargs ): """ :keyword service_specification: Operation properties. :paramtype service_specification: ~azure.mgmt.recoveryservices.models.ClientDiscoveryForServiceSpecification """ - super(ClientDiscoveryForProperties, self).__init__(**kwargs) + super().__init__(**kwargs) self.service_specification = service_specification -class ClientDiscoveryForServiceSpecification(msrest.serialization.Model): +class ClientDiscoveryForServiceSpecification(_serialization.Model): """Class to represent shoebox service specification in json client discovery. :ivar log_specifications: List of log specifications of this operation. @@ -284,25 +261,22 @@ class ClientDiscoveryForServiceSpecification(msrest.serialization.Model): """ _attribute_map = { - 'log_specifications': {'key': 'logSpecifications', 'type': '[ClientDiscoveryForLogSpecification]'}, + "log_specifications": {"key": "logSpecifications", "type": "[ClientDiscoveryForLogSpecification]"}, } def __init__( - self, - *, - log_specifications: Optional[List["_models.ClientDiscoveryForLogSpecification"]] = None, - **kwargs + self, *, log_specifications: Optional[List["_models.ClientDiscoveryForLogSpecification"]] = None, **kwargs ): """ :keyword log_specifications: List of log specifications of this operation. :paramtype log_specifications: list[~azure.mgmt.recoveryservices.models.ClientDiscoveryForLogSpecification] """ - super(ClientDiscoveryForServiceSpecification, self).__init__(**kwargs) + super().__init__(**kwargs) self.log_specifications = log_specifications -class ClientDiscoveryResponse(msrest.serialization.Model): +class ClientDiscoveryResponse(_serialization.Model): """Operations List response which contains list of available APIs. :ivar value: List of available operations. @@ -312,8 +286,8 @@ class ClientDiscoveryResponse(msrest.serialization.Model): """ _attribute_map = { - 'value': {'key': 'value', 'type': '[ClientDiscoveryValueForSingleApi]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + "value": {"key": "value", "type": "[ClientDiscoveryValueForSingleApi]"}, + "next_link": {"key": "nextLink", "type": "str"}, } def __init__( @@ -329,12 +303,12 @@ def __init__( :keyword next_link: Link to the next chunk of the response. :paramtype next_link: str """ - super(ClientDiscoveryResponse, self).__init__(**kwargs) + super().__init__(**kwargs) self.value = value self.next_link = next_link -class ClientDiscoveryValueForSingleApi(msrest.serialization.Model): +class ClientDiscoveryValueForSingleApi(_serialization.Model): """Available operation details. :ivar name: Name of the Operation. @@ -349,10 +323,10 @@ class ClientDiscoveryValueForSingleApi(msrest.serialization.Model): """ _attribute_map = { - 'name': {'key': 'name', 'type': 'str'}, - 'display': {'key': 'display', 'type': 'ClientDiscoveryDisplay'}, - 'origin': {'key': 'origin', 'type': 'str'}, - 'properties': {'key': 'properties', 'type': 'ClientDiscoveryForProperties'}, + "name": {"key": "name", "type": "str"}, + "display": {"key": "display", "type": "ClientDiscoveryDisplay"}, + "origin": {"key": "origin", "type": "str"}, + "properties": {"key": "properties", "type": "ClientDiscoveryForProperties"}, } def __init__( @@ -375,14 +349,14 @@ def __init__( :keyword properties: ShoeBox properties for the given operation. :paramtype properties: ~azure.mgmt.recoveryservices.models.ClientDiscoveryForProperties """ - super(ClientDiscoveryValueForSingleApi, self).__init__(**kwargs) + super().__init__(**kwargs) self.name = name self.display = display self.origin = origin self.properties = properties -class CmkKekIdentity(msrest.serialization.Model): +class CmkKekIdentity(_serialization.Model): """The details of the identity used for CMK. :ivar use_system_assigned_identity: Indicate that system assigned identity should be used. @@ -394,8 +368,8 @@ class CmkKekIdentity(msrest.serialization.Model): """ _attribute_map = { - 'use_system_assigned_identity': {'key': 'useSystemAssignedIdentity', 'type': 'bool'}, - 'user_assigned_identity': {'key': 'userAssignedIdentity', 'type': 'str'}, + "use_system_assigned_identity": {"key": "useSystemAssignedIdentity", "type": "bool"}, + "user_assigned_identity": {"key": "userAssignedIdentity", "type": "str"}, } def __init__( @@ -413,12 +387,12 @@ def __init__( case the type of identity used is UserAssigned. :paramtype user_assigned_identity: str """ - super(CmkKekIdentity, self).__init__(**kwargs) + super().__init__(**kwargs) self.use_system_assigned_identity = use_system_assigned_identity self.user_assigned_identity = user_assigned_identity -class CmkKeyVaultProperties(msrest.serialization.Model): +class CmkKeyVaultProperties(_serialization.Model): """The properties of the Key Vault which hosts CMK. :ivar key_uri: The key uri of the Customer Managed Key. @@ -426,24 +400,19 @@ class CmkKeyVaultProperties(msrest.serialization.Model): """ _attribute_map = { - 'key_uri': {'key': 'keyUri', 'type': 'str'}, + "key_uri": {"key": "keyUri", "type": "str"}, } - def __init__( - self, - *, - key_uri: Optional[str] = None, - **kwargs - ): + def __init__(self, *, key_uri: Optional[str] = None, **kwargs): """ :keyword key_uri: The key uri of the Customer Managed Key. :paramtype key_uri: str """ - super(CmkKeyVaultProperties, self).__init__(**kwargs) + super().__init__(**kwargs) self.key_uri = key_uri -class Error(msrest.serialization.Model): +class Error(_serialization.Model): """The resource management error response. Variables are only populated by the server, and will be ignored when sending a request. @@ -461,28 +430,24 @@ class Error(msrest.serialization.Model): """ _validation = { - 'additional_info': {'readonly': True}, - 'code': {'readonly': True}, - 'details': {'readonly': True}, - 'message': {'readonly': True}, - 'target': {'readonly': True}, + "additional_info": {"readonly": True}, + "code": {"readonly": True}, + "details": {"readonly": True}, + "message": {"readonly": True}, + "target": {"readonly": True}, } _attribute_map = { - 'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'}, - 'code': {'key': 'code', 'type': 'str'}, - 'details': {'key': 'details', 'type': '[Error]'}, - 'message': {'key': 'message', 'type': 'str'}, - 'target': {'key': 'target', 'type': 'str'}, + "additional_info": {"key": "additionalInfo", "type": "[ErrorAdditionalInfo]"}, + "code": {"key": "code", "type": "str"}, + "details": {"key": "details", "type": "[Error]"}, + "message": {"key": "message", "type": "str"}, + "target": {"key": "target", "type": "str"}, } - def __init__( - self, - **kwargs - ): - """ - """ - super(Error, self).__init__(**kwargs) + def __init__(self, **kwargs): + """ """ + super().__init__(**kwargs) self.additional_info = None self.code = None self.details = None @@ -490,39 +455,35 @@ def __init__( self.target = None -class ErrorAdditionalInfo(msrest.serialization.Model): +class ErrorAdditionalInfo(_serialization.Model): """The resource management error additional info. Variables are only populated by the server, and will be ignored when sending a request. :ivar info: The additional info. - :vartype info: any + :vartype info: JSON :ivar type: The additional info type. :vartype type: str """ _validation = { - 'info': {'readonly': True}, - 'type': {'readonly': True}, + "info": {"readonly": True}, + "type": {"readonly": True}, } _attribute_map = { - 'info': {'key': 'info', 'type': 'object'}, - 'type': {'key': 'type', 'type': 'str'}, + "info": {"key": "info", "type": "object"}, + "type": {"key": "type", "type": "str"}, } - def __init__( - self, - **kwargs - ): - """ - """ - super(ErrorAdditionalInfo, self).__init__(**kwargs) + def __init__(self, **kwargs): + """ """ + super().__init__(**kwargs) self.info = None self.type = None -class IdentityData(msrest.serialization.Model): +class IdentityData(_serialization.Model): """Identity for the resource. Variables are only populated by the server, and will be ignored when sending a request. @@ -533,10 +494,10 @@ class IdentityData(msrest.serialization.Model): :vartype principal_id: str :ivar tenant_id: The tenant ID of resource. :vartype tenant_id: str - :ivar type: Required. The type of managed identity used. The type 'SystemAssigned, - UserAssigned' includes both an implicitly created identity and a set of user-assigned - identities. The type 'None' will remove any identities. Known values are: "SystemAssigned", - "None", "UserAssigned", "SystemAssigned, UserAssigned". + :ivar type: The type of managed identity used. The type 'SystemAssigned, UserAssigned' includes + both an implicitly created identity and a set of user-assigned identities. The type 'None' will + remove any identities. Required. Known values are: "SystemAssigned", "None", "UserAssigned", + and "SystemAssigned, UserAssigned". :vartype type: str or ~azure.mgmt.recoveryservices.models.ResourceIdentityType :ivar user_assigned_identities: The list of user-assigned identities associated with the resource. The user-assigned identity dictionary keys will be ARM resource ids in the form: @@ -545,16 +506,16 @@ class IdentityData(msrest.serialization.Model): """ _validation = { - 'principal_id': {'readonly': True}, - 'tenant_id': {'readonly': True}, - 'type': {'required': True}, + "principal_id": {"readonly": True}, + "tenant_id": {"readonly": True}, + "type": {"required": True}, } _attribute_map = { - 'principal_id': {'key': 'principalId', 'type': 'str'}, - 'tenant_id': {'key': 'tenantId', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{UserIdentity}'}, + "principal_id": {"key": "principalId", "type": "str"}, + "tenant_id": {"key": "tenantId", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "user_assigned_identities": {"key": "userAssignedIdentities", "type": "{UserIdentity}"}, } def __init__( @@ -565,10 +526,10 @@ def __init__( **kwargs ): """ - :keyword type: Required. The type of managed identity used. The type 'SystemAssigned, - UserAssigned' includes both an implicitly created identity and a set of user-assigned - identities. The type 'None' will remove any identities. Known values are: "SystemAssigned", - "None", "UserAssigned", "SystemAssigned, UserAssigned". + :keyword type: The type of managed identity used. The type 'SystemAssigned, UserAssigned' + includes both an implicitly created identity and a set of user-assigned identities. The type + 'None' will remove any identities. Required. Known values are: "SystemAssigned", "None", + "UserAssigned", and "SystemAssigned, UserAssigned". :paramtype type: str or ~azure.mgmt.recoveryservices.models.ResourceIdentityType :keyword user_assigned_identities: The list of user-assigned identities associated with the resource. The user-assigned identity dictionary keys will be ARM resource ids in the form: @@ -576,14 +537,34 @@ def __init__( :paramtype user_assigned_identities: dict[str, ~azure.mgmt.recoveryservices.models.UserIdentity] """ - super(IdentityData, self).__init__(**kwargs) + super().__init__(**kwargs) self.principal_id = None self.tenant_id = None self.type = type self.user_assigned_identities = user_assigned_identities -class JobsSummary(msrest.serialization.Model): +class ImmutabilitySettings(_serialization.Model): + """Immutability Settings of vault. + + :ivar state: Known values are: "Disabled", "Unlocked", and "Locked". + :vartype state: str or ~azure.mgmt.recoveryservices.models.ImmutabilityState + """ + + _attribute_map = { + "state": {"key": "state", "type": "str"}, + } + + def __init__(self, *, state: Optional[Union[str, "_models.ImmutabilityState"]] = None, **kwargs): + """ + :keyword state: Known values are: "Disabled", "Unlocked", and "Locked". + :paramtype state: str or ~azure.mgmt.recoveryservices.models.ImmutabilityState + """ + super().__init__(**kwargs) + self.state = state + + +class JobsSummary(_serialization.Model): """Summary of the replication job data for this vault. :ivar failed_jobs: Count of failed jobs. @@ -595,9 +576,9 @@ class JobsSummary(msrest.serialization.Model): """ _attribute_map = { - 'failed_jobs': {'key': 'failedJobs', 'type': 'int'}, - 'suspended_jobs': {'key': 'suspendedJobs', 'type': 'int'}, - 'in_progress_jobs': {'key': 'inProgressJobs', 'type': 'int'}, + "failed_jobs": {"key": "failedJobs", "type": "int"}, + "suspended_jobs": {"key": "suspendedJobs", "type": "int"}, + "in_progress_jobs": {"key": "inProgressJobs", "type": "int"}, } def __init__( @@ -616,13 +597,13 @@ def __init__( :keyword in_progress_jobs: Count of in-progress jobs. :paramtype in_progress_jobs: int """ - super(JobsSummary, self).__init__(**kwargs) + super().__init__(**kwargs) self.failed_jobs = failed_jobs self.suspended_jobs = suspended_jobs self.in_progress_jobs = in_progress_jobs -class MonitoringSettings(msrest.serialization.Model): +class MonitoringSettings(_serialization.Model): """Monitoring Settings of the vault. :ivar azure_monitor_alert_settings: Settings for Azure Monitor based alerts. @@ -633,8 +614,8 @@ class MonitoringSettings(msrest.serialization.Model): """ _attribute_map = { - 'azure_monitor_alert_settings': {'key': 'azureMonitorAlertSettings', 'type': 'AzureMonitorAlertSettings'}, - 'classic_alert_settings': {'key': 'classicAlertSettings', 'type': 'ClassicAlertSettings'}, + "azure_monitor_alert_settings": {"key": "azureMonitorAlertSettings", "type": "AzureMonitorAlertSettings"}, + "classic_alert_settings": {"key": "classicAlertSettings", "type": "ClassicAlertSettings"}, } def __init__( @@ -651,12 +632,12 @@ def __init__( :keyword classic_alert_settings: Settings for classic alerts. :paramtype classic_alert_settings: ~azure.mgmt.recoveryservices.models.ClassicAlertSettings """ - super(MonitoringSettings, self).__init__(**kwargs) + super().__init__(**kwargs) self.azure_monitor_alert_settings = azure_monitor_alert_settings self.classic_alert_settings = classic_alert_settings -class MonitoringSummary(msrest.serialization.Model): +class MonitoringSummary(_serialization.Model): """Summary of the replication monitoring data for this vault. :ivar un_healthy_vm_count: Count of unhealthy VMs. @@ -674,12 +655,12 @@ class MonitoringSummary(msrest.serialization.Model): """ _attribute_map = { - 'un_healthy_vm_count': {'key': 'unHealthyVmCount', 'type': 'int'}, - 'un_healthy_provider_count': {'key': 'unHealthyProviderCount', 'type': 'int'}, - 'events_count': {'key': 'eventsCount', 'type': 'int'}, - 'deprecated_provider_count': {'key': 'deprecatedProviderCount', 'type': 'int'}, - 'supported_provider_count': {'key': 'supportedProviderCount', 'type': 'int'}, - 'unsupported_provider_count': {'key': 'unsupportedProviderCount', 'type': 'int'}, + "un_healthy_vm_count": {"key": "unHealthyVmCount", "type": "int"}, + "un_healthy_provider_count": {"key": "unHealthyProviderCount", "type": "int"}, + "events_count": {"key": "eventsCount", "type": "int"}, + "deprecated_provider_count": {"key": "deprecatedProviderCount", "type": "int"}, + "supported_provider_count": {"key": "supportedProviderCount", "type": "int"}, + "unsupported_provider_count": {"key": "unsupportedProviderCount", "type": "int"}, } def __init__( @@ -707,7 +688,7 @@ def __init__( :keyword unsupported_provider_count: Count of all the unsupported recovery service providers. :paramtype unsupported_provider_count: int """ - super(MonitoringSummary, self).__init__(**kwargs) + super().__init__(**kwargs) self.un_healthy_vm_count = un_healthy_vm_count self.un_healthy_provider_count = un_healthy_provider_count self.events_count = events_count @@ -716,7 +697,7 @@ def __init__( self.unsupported_provider_count = unsupported_provider_count -class NameInfo(msrest.serialization.Model): +class NameInfo(_serialization.Model): """The name of usage. :ivar value: Value of usage. @@ -726,29 +707,23 @@ class NameInfo(msrest.serialization.Model): """ _attribute_map = { - 'value': {'key': 'value', 'type': 'str'}, - 'localized_value': {'key': 'localizedValue', 'type': 'str'}, + "value": {"key": "value", "type": "str"}, + "localized_value": {"key": "localizedValue", "type": "str"}, } - def __init__( - self, - *, - value: Optional[str] = None, - localized_value: Optional[str] = None, - **kwargs - ): + def __init__(self, *, value: Optional[str] = None, localized_value: Optional[str] = None, **kwargs): """ :keyword value: Value of usage. :paramtype value: str :keyword localized_value: Localized value of usage. :paramtype localized_value: str """ - super(NameInfo, self).__init__(**kwargs) + super().__init__(**kwargs) self.value = value self.localized_value = localized_value -class OperationResource(msrest.serialization.Model): +class OperationResource(_serialization.Model): """Operation Resource. :ivar end_time: End time of the operation. @@ -768,12 +743,12 @@ class OperationResource(msrest.serialization.Model): """ _attribute_map = { - 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, - 'error': {'key': 'error', 'type': 'Error'}, - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'status': {'key': 'status', 'type': 'str'}, - 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + "end_time": {"key": "endTime", "type": "iso-8601"}, + "error": {"key": "error", "type": "Error"}, + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "status": {"key": "status", "type": "str"}, + "start_time": {"key": "startTime", "type": "iso-8601"}, } def __init__( @@ -781,7 +756,7 @@ def __init__( *, end_time: Optional[datetime.datetime] = None, error: Optional["_models.Error"] = None, - id: Optional[str] = None, + id: Optional[str] = None, # pylint: disable=redefined-builtin name: Optional[str] = None, status: Optional[str] = None, start_time: Optional[datetime.datetime] = None, @@ -803,7 +778,7 @@ def __init__( :keyword start_time: Start time of the operation. :paramtype start_time: ~datetime.datetime """ - super(OperationResource, self).__init__(**kwargs) + super().__init__(**kwargs) self.end_time = end_time self.error = error self.id = id @@ -812,7 +787,7 @@ def __init__( self.start_time = start_time -class Resource(msrest.serialization.Model): +class Resource(_serialization.Model): """ARM Resource. Variables are only populated by the server, and will be ignored when sending a request. @@ -829,29 +804,24 @@ class Resource(msrest.serialization.Model): """ _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, + "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'}, - 'etag': {'key': 'etag', 'type': 'str'}, + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "etag": {"key": "etag", "type": "str"}, } - def __init__( - self, - *, - etag: Optional[str] = None, - **kwargs - ): + def __init__(self, *, etag: Optional[str] = None, **kwargs): """ :keyword etag: Optional ETag. :paramtype etag: str """ - super(Resource, self).__init__(**kwargs) + super().__init__(**kwargs) self.id = None self.name = None self.type = None @@ -874,23 +844,23 @@ class PatchTrackedResource(Resource): :vartype etag: str :ivar location: Resource location. :vartype location: str - :ivar tags: A set of tags. Resource tags. + :ivar tags: Resource tags. :vartype tags: dict[str, str] """ _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, + "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'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'location': {'key': 'location', 'type': 'str'}, - 'tags': {'key': 'tags', 'type': '{str}'}, + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "etag": {"key": "etag", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, } def __init__( @@ -906,10 +876,10 @@ def __init__( :paramtype etag: str :keyword location: Resource location. :paramtype location: str - :keyword tags: A set of tags. Resource tags. + :keyword tags: Resource tags. :paramtype tags: dict[str, str] """ - super(PatchTrackedResource, self).__init__(etag=etag, **kwargs) + super().__init__(etag=etag, **kwargs) self.location = location self.tags = tags @@ -930,7 +900,7 @@ class PatchVault(PatchTrackedResource): :vartype etag: str :ivar location: Resource location. :vartype location: str - :ivar tags: A set of tags. Resource tags. + :ivar tags: Resource tags. :vartype tags: dict[str, str] :ivar properties: Properties of the vault. :vartype properties: ~azure.mgmt.recoveryservices.models.VaultProperties @@ -941,21 +911,21 @@ class PatchVault(PatchTrackedResource): """ _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, + "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'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'location': {'key': 'location', 'type': 'str'}, - 'tags': {'key': 'tags', 'type': '{str}'}, - 'properties': {'key': 'properties', 'type': 'VaultProperties'}, - 'sku': {'key': 'sku', 'type': 'Sku'}, - 'identity': {'key': 'identity', 'type': 'IdentityData'}, + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "etag": {"key": "etag", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + "properties": {"key": "properties", "type": "VaultProperties"}, + "sku": {"key": "sku", "type": "Sku"}, + "identity": {"key": "identity", "type": "IdentityData"}, } def __init__( @@ -974,7 +944,7 @@ def __init__( :paramtype etag: str :keyword location: Resource location. :paramtype location: str - :keyword tags: A set of tags. Resource tags. + :keyword tags: Resource tags. :paramtype tags: dict[str, str] :keyword properties: Properties of the vault. :paramtype properties: ~azure.mgmt.recoveryservices.models.VaultProperties @@ -983,13 +953,13 @@ def __init__( :keyword identity: Identity for the resource. :paramtype identity: ~azure.mgmt.recoveryservices.models.IdentityData """ - super(PatchVault, self).__init__(etag=etag, location=location, tags=tags, **kwargs) + super().__init__(etag=etag, location=location, tags=tags, **kwargs) self.properties = properties self.sku = sku self.identity = identity -class PrivateEndpoint(msrest.serialization.Model): +class PrivateEndpoint(_serialization.Model): """The Private Endpoint network resource that is linked to the Private Endpoint connection. Variables are only populated by the server, and will be ignored when sending a request. @@ -999,30 +969,26 @@ class PrivateEndpoint(msrest.serialization.Model): """ _validation = { - 'id': {'readonly': True}, + "id": {"readonly": True}, } _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, + "id": {"key": "id", "type": "str"}, } - def __init__( - self, - **kwargs - ): - """ - """ - super(PrivateEndpoint, self).__init__(**kwargs) + def __init__(self, **kwargs): + """ """ + super().__init__(**kwargs) self.id = None -class PrivateEndpointConnection(msrest.serialization.Model): +class PrivateEndpointConnection(_serialization.Model): """Private Endpoint Connection Response Properties. Variables are only populated by the server, and will be ignored when sending a request. :ivar provisioning_state: Gets or sets provisioning state of the private endpoint connection. - Known values are: "Succeeded", "Deleting", "Failed", "Pending". + Known values are: "Succeeded", "Deleting", "Failed", and "Pending". :vartype provisioning_state: str or ~azure.mgmt.recoveryservices.models.ProvisioningState :ivar private_endpoint: The Private Endpoint network resource that is linked to the Private Endpoint connection. @@ -1034,30 +1000,29 @@ class PrivateEndpointConnection(msrest.serialization.Model): """ _validation = { - 'provisioning_state': {'readonly': True}, - 'private_endpoint': {'readonly': True}, - 'private_link_service_connection_state': {'readonly': True}, + "provisioning_state": {"readonly": True}, + "private_endpoint": {"readonly": True}, + "private_link_service_connection_state": {"readonly": True}, } _attribute_map = { - 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, - 'private_endpoint': {'key': 'privateEndpoint', 'type': 'PrivateEndpoint'}, - 'private_link_service_connection_state': {'key': 'privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "private_endpoint": {"key": "privateEndpoint", "type": "PrivateEndpoint"}, + "private_link_service_connection_state": { + "key": "privateLinkServiceConnectionState", + "type": "PrivateLinkServiceConnectionState", + }, } - def __init__( - self, - **kwargs - ): - """ - """ - super(PrivateEndpointConnection, self).__init__(**kwargs) + def __init__(self, **kwargs): + """ """ + super().__init__(**kwargs) self.provisioning_state = None self.private_endpoint = None self.private_link_service_connection_state = None -class PrivateEndpointConnectionVaultProperties(msrest.serialization.Model): +class PrivateEndpointConnectionVaultProperties(_serialization.Model): """Information to be stored in Vault properties as an element of privateEndpointConnections List. Variables are only populated by the server, and will be ignored when sending a request. @@ -1077,28 +1042,24 @@ class PrivateEndpointConnectionVaultProperties(msrest.serialization.Model): """ _validation = { - 'id': {'readonly': True}, - 'properties': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'location': {'readonly': True}, + "id": {"readonly": True}, + "properties": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "location": {"readonly": True}, } _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'properties': {'key': 'properties', 'type': 'PrivateEndpointConnection'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'location': {'key': 'location', 'type': 'str'}, + "id": {"key": "id", "type": "str"}, + "properties": {"key": "properties", "type": "PrivateEndpointConnection"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "location": {"key": "location", "type": "str"}, } - def __init__( - self, - **kwargs - ): - """ - """ - super(PrivateEndpointConnectionVaultProperties, self).__init__(**kwargs) + def __init__(self, **kwargs): + """ """ + super().__init__(**kwargs) self.id = None self.properties = None self.name = None @@ -1106,7 +1067,7 @@ def __init__( self.location = None -class PrivateLinkResource(msrest.serialization.Model): +class PrivateLinkResource(_serialization.Model): """Information of the private link resource. Variables are only populated by the server, and will be ignored when sending a request. @@ -1127,30 +1088,26 @@ class PrivateLinkResource(msrest.serialization.Model): """ _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'group_id': {'readonly': True}, - 'required_members': {'readonly': True}, - 'required_zone_names': {'readonly': True}, + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "group_id": {"readonly": True}, + "required_members": {"readonly": True}, + "required_zone_names": {"readonly": True}, } _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'group_id': {'key': 'properties.groupId', 'type': 'str'}, - 'required_members': {'key': 'properties.requiredMembers', 'type': '[str]'}, - 'required_zone_names': {'key': 'properties.requiredZoneNames', 'type': '[str]'}, + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "group_id": {"key": "properties.groupId", "type": "str"}, + "required_members": {"key": "properties.requiredMembers", "type": "[str]"}, + "required_zone_names": {"key": "properties.requiredZoneNames", "type": "[str]"}, } - def __init__( - self, - **kwargs - ): - """ - """ - super(PrivateLinkResource, self).__init__(**kwargs) + def __init__(self, **kwargs): + """ """ + super().__init__(**kwargs) self.id = None self.name = None self.type = None @@ -1159,7 +1116,7 @@ def __init__( self.required_zone_names = None -class PrivateLinkResources(msrest.serialization.Model): +class PrivateLinkResources(_serialization.Model): """Class which represent the stamps associated with the vault. :ivar value: A collection of private link resources. @@ -1169,16 +1126,12 @@ class PrivateLinkResources(msrest.serialization.Model): """ _attribute_map = { - 'value': {'key': 'value', 'type': '[PrivateLinkResource]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + "value": {"key": "value", "type": "[PrivateLinkResource]"}, + "next_link": {"key": "nextLink", "type": "str"}, } def __init__( - self, - *, - value: Optional[List["_models.PrivateLinkResource"]] = None, - next_link: Optional[str] = None, - **kwargs + self, *, value: Optional[List["_models.PrivateLinkResource"]] = None, next_link: Optional[str] = None, **kwargs ): """ :keyword value: A collection of private link resources. @@ -1186,17 +1139,17 @@ def __init__( :keyword next_link: Link to the next chunk of the response. :paramtype next_link: str """ - super(PrivateLinkResources, self).__init__(**kwargs) + super().__init__(**kwargs) self.value = value self.next_link = next_link -class PrivateLinkServiceConnectionState(msrest.serialization.Model): +class PrivateLinkServiceConnectionState(_serialization.Model): """Gets or sets private link service connection state. Variables are only populated by the server, and will be ignored when sending a request. - :ivar status: Gets or sets the status. Known values are: "Pending", "Approved", "Rejected", + :ivar status: Gets or sets the status. Known values are: "Pending", "Approved", "Rejected", and "Disconnected". :vartype status: str or ~azure.mgmt.recoveryservices.models.PrivateEndpointConnectionStatus :ivar description: Gets or sets description. @@ -1206,64 +1159,60 @@ class PrivateLinkServiceConnectionState(msrest.serialization.Model): """ _validation = { - 'status': {'readonly': True}, - 'description': {'readonly': True}, - 'actions_required': {'readonly': True}, + "status": {"readonly": True}, + "description": {"readonly": True}, + "actions_required": {"readonly": True}, } _attribute_map = { - 'status': {'key': 'status', 'type': 'str'}, - 'description': {'key': 'description', 'type': 'str'}, - 'actions_required': {'key': 'actionsRequired', 'type': 'str'}, + "status": {"key": "status", "type": "str"}, + "description": {"key": "description", "type": "str"}, + "actions_required": {"key": "actionsRequired", "type": "str"}, } - def __init__( - self, - **kwargs - ): - """ - """ - super(PrivateLinkServiceConnectionState, self).__init__(**kwargs) + def __init__(self, **kwargs): + """ """ + super().__init__(**kwargs) self.status = None self.description = None self.actions_required = None -class RawCertificateData(msrest.serialization.Model): +class RawCertificateData(_serialization.Model): """Raw certificate data. :ivar auth_type: Specifies the authentication type. Known values are: "Invalid", "ACS", "AAD", - "AccessControlService", "AzureActiveDirectory". + "AccessControlService", and "AzureActiveDirectory". :vartype auth_type: str or ~azure.mgmt.recoveryservices.models.AuthType :ivar certificate: The base64 encoded certificate raw data string. - :vartype certificate: bytearray + :vartype certificate: bytes """ _attribute_map = { - 'auth_type': {'key': 'authType', 'type': 'str'}, - 'certificate': {'key': 'certificate', 'type': 'bytearray'}, + "auth_type": {"key": "authType", "type": "str"}, + "certificate": {"key": "certificate", "type": "bytearray"}, } def __init__( self, *, auth_type: Optional[Union[str, "_models.AuthType"]] = None, - certificate: Optional[bytearray] = None, + certificate: Optional[bytes] = None, **kwargs ): """ :keyword auth_type: Specifies the authentication type. Known values are: "Invalid", "ACS", - "AAD", "AccessControlService", "AzureActiveDirectory". + "AAD", "AccessControlService", and "AzureActiveDirectory". :paramtype auth_type: str or ~azure.mgmt.recoveryservices.models.AuthType :keyword certificate: The base64 encoded certificate raw data string. - :paramtype certificate: bytearray + :paramtype certificate: bytes """ - super(RawCertificateData, self).__init__(**kwargs) + super().__init__(**kwargs) self.auth_type = auth_type self.certificate = certificate -class ReplicationUsage(msrest.serialization.Model): +class ReplicationUsage(_serialization.Model): """Replication usages of a vault. :ivar monitoring_summary: Summary of the replication monitoring data for this vault. @@ -1282,12 +1231,12 @@ class ReplicationUsage(msrest.serialization.Model): """ _attribute_map = { - 'monitoring_summary': {'key': 'monitoringSummary', 'type': 'MonitoringSummary'}, - 'jobs_summary': {'key': 'jobsSummary', 'type': 'JobsSummary'}, - 'protected_item_count': {'key': 'protectedItemCount', 'type': 'int'}, - 'recovery_plan_count': {'key': 'recoveryPlanCount', 'type': 'int'}, - 'registered_servers_count': {'key': 'registeredServersCount', 'type': 'int'}, - 'recovery_services_provider_auth_type': {'key': 'recoveryServicesProviderAuthType', 'type': 'int'}, + "monitoring_summary": {"key": "monitoringSummary", "type": "MonitoringSummary"}, + "jobs_summary": {"key": "jobsSummary", "type": "JobsSummary"}, + "protected_item_count": {"key": "protectedItemCount", "type": "int"}, + "recovery_plan_count": {"key": "recoveryPlanCount", "type": "int"}, + "registered_servers_count": {"key": "registeredServersCount", "type": "int"}, + "recovery_services_provider_auth_type": {"key": "recoveryServicesProviderAuthType", "type": "int"}, } def __init__( @@ -1316,7 +1265,7 @@ def __init__( providers in the vault. :paramtype recovery_services_provider_auth_type: int """ - super(ReplicationUsage, self).__init__(**kwargs) + super().__init__(**kwargs) self.monitoring_summary = monitoring_summary self.jobs_summary = jobs_summary self.protected_item_count = protected_item_count @@ -1325,7 +1274,7 @@ def __init__( self.recovery_services_provider_auth_type = recovery_services_provider_auth_type -class ReplicationUsageList(msrest.serialization.Model): +class ReplicationUsageList(_serialization.Model): """Replication usages for vault. :ivar value: The list of replication usages for the given vault. @@ -1333,42 +1282,37 @@ class ReplicationUsageList(msrest.serialization.Model): """ _attribute_map = { - 'value': {'key': 'value', 'type': '[ReplicationUsage]'}, + "value": {"key": "value", "type": "[ReplicationUsage]"}, } - def __init__( - self, - *, - value: Optional[List["_models.ReplicationUsage"]] = None, - **kwargs - ): + def __init__(self, *, value: Optional[List["_models.ReplicationUsage"]] = None, **kwargs): """ :keyword value: The list of replication usages for the given vault. :paramtype value: list[~azure.mgmt.recoveryservices.models.ReplicationUsage] """ - super(ReplicationUsageList, self).__init__(**kwargs) + super().__init__(**kwargs) self.value = value -class ResourceCertificateDetails(msrest.serialization.Model): +class ResourceCertificateDetails(_serialization.Model): """Certificate details representing the Vault credentials. - You probably want to use the sub-classes and not this class directly. Known - sub-classes are: ResourceCertificateAndAcsDetails, ResourceCertificateAndAadDetails. + You probably want to use the sub-classes and not this class directly. Known sub-classes are: + ResourceCertificateAndAcsDetails, ResourceCertificateAndAadDetails All required parameters must be populated in order to send to Azure. - :ivar auth_type: Required. This property will be used as the discriminator for deciding the - specific types in the polymorphic chain of types.Constant filled by server. + :ivar auth_type: This property will be used as the discriminator for deciding the specific + types in the polymorphic chain of types. Required. :vartype auth_type: str :ivar certificate: The base64 encoded certificate raw data string. - :vartype certificate: bytearray + :vartype certificate: bytes :ivar friendly_name: Certificate friendly name. :vartype friendly_name: str :ivar issuer: Certificate issuer. :vartype issuer: str :ivar resource_id: Resource ID of the vault. - :vartype resource_id: long + :vartype resource_id: int :ivar subject: Certificate Subject Name. :vartype subject: str :ivar thumbprint: Certificate thumbprint. @@ -1380,29 +1324,32 @@ class ResourceCertificateDetails(msrest.serialization.Model): """ _validation = { - 'auth_type': {'required': True}, + "auth_type": {"required": True}, } _attribute_map = { - 'auth_type': {'key': 'authType', 'type': 'str'}, - 'certificate': {'key': 'certificate', 'type': 'bytearray'}, - 'friendly_name': {'key': 'friendlyName', 'type': 'str'}, - 'issuer': {'key': 'issuer', 'type': 'str'}, - 'resource_id': {'key': 'resourceId', 'type': 'long'}, - 'subject': {'key': 'subject', 'type': 'str'}, - 'thumbprint': {'key': 'thumbprint', 'type': 'str'}, - 'valid_from': {'key': 'validFrom', 'type': 'iso-8601'}, - 'valid_to': {'key': 'validTo', 'type': 'iso-8601'}, + "auth_type": {"key": "authType", "type": "str"}, + "certificate": {"key": "certificate", "type": "bytearray"}, + "friendly_name": {"key": "friendlyName", "type": "str"}, + "issuer": {"key": "issuer", "type": "str"}, + "resource_id": {"key": "resourceId", "type": "int"}, + "subject": {"key": "subject", "type": "str"}, + "thumbprint": {"key": "thumbprint", "type": "str"}, + "valid_from": {"key": "validFrom", "type": "iso-8601"}, + "valid_to": {"key": "validTo", "type": "iso-8601"}, } _subtype_map = { - 'auth_type': {'AccessControlService': 'ResourceCertificateAndAcsDetails', 'AzureActiveDirectory': 'ResourceCertificateAndAadDetails'} + "auth_type": { + "AccessControlService": "ResourceCertificateAndAcsDetails", + "AzureActiveDirectory": "ResourceCertificateAndAadDetails", + } } def __init__( self, *, - certificate: Optional[bytearray] = None, + certificate: Optional[bytes] = None, friendly_name: Optional[str] = None, issuer: Optional[str] = None, resource_id: Optional[int] = None, @@ -1414,13 +1361,13 @@ def __init__( ): """ :keyword certificate: The base64 encoded certificate raw data string. - :paramtype certificate: bytearray + :paramtype certificate: bytes :keyword friendly_name: Certificate friendly name. :paramtype friendly_name: str :keyword issuer: Certificate issuer. :paramtype issuer: str :keyword resource_id: Resource ID of the vault. - :paramtype resource_id: long + :paramtype resource_id: int :keyword subject: Certificate Subject Name. :paramtype subject: str :keyword thumbprint: Certificate thumbprint. @@ -1430,7 +1377,7 @@ def __init__( :keyword valid_to: Certificate Validity End Date time. :paramtype valid_to: ~datetime.datetime """ - super(ResourceCertificateDetails, self).__init__(**kwargs) + super().__init__(**kwargs) self.auth_type = None # type: Optional[str] self.certificate = certificate self.friendly_name = friendly_name @@ -1442,22 +1389,22 @@ def __init__( self.valid_to = valid_to -class ResourceCertificateAndAadDetails(ResourceCertificateDetails): +class ResourceCertificateAndAadDetails(ResourceCertificateDetails): # pylint: disable=too-many-instance-attributes """Certificate details representing the Vault credentials for AAD. All required parameters must be populated in order to send to Azure. - :ivar auth_type: Required. This property will be used as the discriminator for deciding the - specific types in the polymorphic chain of types.Constant filled by server. + :ivar auth_type: This property will be used as the discriminator for deciding the specific + types in the polymorphic chain of types. Required. :vartype auth_type: str :ivar certificate: The base64 encoded certificate raw data string. - :vartype certificate: bytearray + :vartype certificate: bytes :ivar friendly_name: Certificate friendly name. :vartype friendly_name: str :ivar issuer: Certificate issuer. :vartype issuer: str :ivar resource_id: Resource ID of the vault. - :vartype resource_id: long + :vartype resource_id: int :ivar subject: Certificate Subject Name. :vartype subject: str :ivar thumbprint: Certificate thumbprint. @@ -1466,15 +1413,15 @@ class ResourceCertificateAndAadDetails(ResourceCertificateDetails): :vartype valid_from: ~datetime.datetime :ivar valid_to: Certificate Validity End Date time. :vartype valid_to: ~datetime.datetime - :ivar aad_authority: Required. AAD tenant authority. + :ivar aad_authority: AAD tenant authority. Required. :vartype aad_authority: str - :ivar aad_tenant_id: Required. AAD tenant Id. + :ivar aad_tenant_id: AAD tenant Id. Required. :vartype aad_tenant_id: str - :ivar service_principal_client_id: Required. AAD service principal clientId. + :ivar service_principal_client_id: AAD service principal clientId. Required. :vartype service_principal_client_id: str - :ivar service_principal_object_id: Required. AAD service principal ObjectId. + :ivar service_principal_object_id: AAD service principal ObjectId. Required. :vartype service_principal_object_id: str - :ivar azure_management_endpoint_audience: Required. Azure Management Endpoint Audience. + :ivar azure_management_endpoint_audience: Azure Management Endpoint Audience. Required. :vartype azure_management_endpoint_audience: str :ivar service_resource_id: Service Resource Id. :vartype service_resource_id: str @@ -1483,31 +1430,31 @@ class ResourceCertificateAndAadDetails(ResourceCertificateDetails): """ _validation = { - 'auth_type': {'required': True}, - 'aad_authority': {'required': True}, - 'aad_tenant_id': {'required': True}, - 'service_principal_client_id': {'required': True}, - 'service_principal_object_id': {'required': True}, - 'azure_management_endpoint_audience': {'required': True}, + "auth_type": {"required": True}, + "aad_authority": {"required": True}, + "aad_tenant_id": {"required": True}, + "service_principal_client_id": {"required": True}, + "service_principal_object_id": {"required": True}, + "azure_management_endpoint_audience": {"required": True}, } _attribute_map = { - 'auth_type': {'key': 'authType', 'type': 'str'}, - 'certificate': {'key': 'certificate', 'type': 'bytearray'}, - 'friendly_name': {'key': 'friendlyName', 'type': 'str'}, - 'issuer': {'key': 'issuer', 'type': 'str'}, - 'resource_id': {'key': 'resourceId', 'type': 'long'}, - 'subject': {'key': 'subject', 'type': 'str'}, - 'thumbprint': {'key': 'thumbprint', 'type': 'str'}, - 'valid_from': {'key': 'validFrom', 'type': 'iso-8601'}, - 'valid_to': {'key': 'validTo', 'type': 'iso-8601'}, - 'aad_authority': {'key': 'aadAuthority', 'type': 'str'}, - 'aad_tenant_id': {'key': 'aadTenantId', 'type': 'str'}, - 'service_principal_client_id': {'key': 'servicePrincipalClientId', 'type': 'str'}, - 'service_principal_object_id': {'key': 'servicePrincipalObjectId', 'type': 'str'}, - 'azure_management_endpoint_audience': {'key': 'azureManagementEndpointAudience', 'type': 'str'}, - 'service_resource_id': {'key': 'serviceResourceId', 'type': 'str'}, - 'aad_audience': {'key': 'aadAudience', 'type': 'str'}, + "auth_type": {"key": "authType", "type": "str"}, + "certificate": {"key": "certificate", "type": "bytearray"}, + "friendly_name": {"key": "friendlyName", "type": "str"}, + "issuer": {"key": "issuer", "type": "str"}, + "resource_id": {"key": "resourceId", "type": "int"}, + "subject": {"key": "subject", "type": "str"}, + "thumbprint": {"key": "thumbprint", "type": "str"}, + "valid_from": {"key": "validFrom", "type": "iso-8601"}, + "valid_to": {"key": "validTo", "type": "iso-8601"}, + "aad_authority": {"key": "aadAuthority", "type": "str"}, + "aad_tenant_id": {"key": "aadTenantId", "type": "str"}, + "service_principal_client_id": {"key": "servicePrincipalClientId", "type": "str"}, + "service_principal_object_id": {"key": "servicePrincipalObjectId", "type": "str"}, + "azure_management_endpoint_audience": {"key": "azureManagementEndpointAudience", "type": "str"}, + "service_resource_id": {"key": "serviceResourceId", "type": "str"}, + "aad_audience": {"key": "aadAudience", "type": "str"}, } def __init__( @@ -1518,7 +1465,7 @@ def __init__( service_principal_client_id: str, service_principal_object_id: str, azure_management_endpoint_audience: str, - certificate: Optional[bytearray] = None, + certificate: Optional[bytes] = None, friendly_name: Optional[str] = None, issuer: Optional[str] = None, resource_id: Optional[int] = None, @@ -1532,13 +1479,13 @@ def __init__( ): """ :keyword certificate: The base64 encoded certificate raw data string. - :paramtype certificate: bytearray + :paramtype certificate: bytes :keyword friendly_name: Certificate friendly name. :paramtype friendly_name: str :keyword issuer: Certificate issuer. :paramtype issuer: str :keyword resource_id: Resource ID of the vault. - :paramtype resource_id: long + :paramtype resource_id: int :keyword subject: Certificate Subject Name. :paramtype subject: str :keyword thumbprint: Certificate thumbprint. @@ -1547,23 +1494,33 @@ def __init__( :paramtype valid_from: ~datetime.datetime :keyword valid_to: Certificate Validity End Date time. :paramtype valid_to: ~datetime.datetime - :keyword aad_authority: Required. AAD tenant authority. + :keyword aad_authority: AAD tenant authority. Required. :paramtype aad_authority: str - :keyword aad_tenant_id: Required. AAD tenant Id. + :keyword aad_tenant_id: AAD tenant Id. Required. :paramtype aad_tenant_id: str - :keyword service_principal_client_id: Required. AAD service principal clientId. + :keyword service_principal_client_id: AAD service principal clientId. Required. :paramtype service_principal_client_id: str - :keyword service_principal_object_id: Required. AAD service principal ObjectId. + :keyword service_principal_object_id: AAD service principal ObjectId. Required. :paramtype service_principal_object_id: str - :keyword azure_management_endpoint_audience: Required. Azure Management Endpoint Audience. + :keyword azure_management_endpoint_audience: Azure Management Endpoint Audience. Required. :paramtype azure_management_endpoint_audience: str :keyword service_resource_id: Service Resource Id. :paramtype service_resource_id: str :keyword aad_audience: AAD audience for the resource. :paramtype aad_audience: str """ - super(ResourceCertificateAndAadDetails, self).__init__(certificate=certificate, friendly_name=friendly_name, issuer=issuer, resource_id=resource_id, subject=subject, thumbprint=thumbprint, valid_from=valid_from, valid_to=valid_to, **kwargs) - self.auth_type = 'AzureActiveDirectory' # type: str + super().__init__( + certificate=certificate, + friendly_name=friendly_name, + issuer=issuer, + resource_id=resource_id, + subject=subject, + thumbprint=thumbprint, + valid_from=valid_from, + valid_to=valid_to, + **kwargs + ) + self.auth_type = "AzureActiveDirectory" # type: str self.aad_authority = aad_authority self.aad_tenant_id = aad_tenant_id self.service_principal_client_id = service_principal_client_id @@ -1573,22 +1530,22 @@ def __init__( self.aad_audience = aad_audience -class ResourceCertificateAndAcsDetails(ResourceCertificateDetails): +class ResourceCertificateAndAcsDetails(ResourceCertificateDetails): # pylint: disable=too-many-instance-attributes """Certificate details representing the Vault credentials for ACS. All required parameters must be populated in order to send to Azure. - :ivar auth_type: Required. This property will be used as the discriminator for deciding the - specific types in the polymorphic chain of types.Constant filled by server. + :ivar auth_type: This property will be used as the discriminator for deciding the specific + types in the polymorphic chain of types. Required. :vartype auth_type: str :ivar certificate: The base64 encoded certificate raw data string. - :vartype certificate: bytearray + :vartype certificate: bytes :ivar friendly_name: Certificate friendly name. :vartype friendly_name: str :ivar issuer: Certificate issuer. :vartype issuer: str :ivar resource_id: Resource ID of the vault. - :vartype resource_id: long + :vartype resource_id: int :ivar subject: Certificate Subject Name. :vartype subject: str :ivar thumbprint: Certificate thumbprint. @@ -1597,34 +1554,34 @@ class ResourceCertificateAndAcsDetails(ResourceCertificateDetails): :vartype valid_from: ~datetime.datetime :ivar valid_to: Certificate Validity End Date time. :vartype valid_to: ~datetime.datetime - :ivar global_acs_namespace: Required. ACS namespace name - tenant for our service. + :ivar global_acs_namespace: ACS namespace name - tenant for our service. Required. :vartype global_acs_namespace: str - :ivar global_acs_host_name: Required. Acs mgmt host name to connect to. + :ivar global_acs_host_name: Acs mgmt host name to connect to. Required. :vartype global_acs_host_name: str - :ivar global_acs_rp_realm: Required. Global ACS namespace RP realm. + :ivar global_acs_rp_realm: Global ACS namespace RP realm. Required. :vartype global_acs_rp_realm: str """ _validation = { - 'auth_type': {'required': True}, - 'global_acs_namespace': {'required': True}, - 'global_acs_host_name': {'required': True}, - 'global_acs_rp_realm': {'required': True}, + "auth_type": {"required": True}, + "global_acs_namespace": {"required": True}, + "global_acs_host_name": {"required": True}, + "global_acs_rp_realm": {"required": True}, } _attribute_map = { - 'auth_type': {'key': 'authType', 'type': 'str'}, - 'certificate': {'key': 'certificate', 'type': 'bytearray'}, - 'friendly_name': {'key': 'friendlyName', 'type': 'str'}, - 'issuer': {'key': 'issuer', 'type': 'str'}, - 'resource_id': {'key': 'resourceId', 'type': 'long'}, - 'subject': {'key': 'subject', 'type': 'str'}, - 'thumbprint': {'key': 'thumbprint', 'type': 'str'}, - 'valid_from': {'key': 'validFrom', 'type': 'iso-8601'}, - 'valid_to': {'key': 'validTo', 'type': 'iso-8601'}, - 'global_acs_namespace': {'key': 'globalAcsNamespace', 'type': 'str'}, - 'global_acs_host_name': {'key': 'globalAcsHostName', 'type': 'str'}, - 'global_acs_rp_realm': {'key': 'globalAcsRPRealm', 'type': 'str'}, + "auth_type": {"key": "authType", "type": "str"}, + "certificate": {"key": "certificate", "type": "bytearray"}, + "friendly_name": {"key": "friendlyName", "type": "str"}, + "issuer": {"key": "issuer", "type": "str"}, + "resource_id": {"key": "resourceId", "type": "int"}, + "subject": {"key": "subject", "type": "str"}, + "thumbprint": {"key": "thumbprint", "type": "str"}, + "valid_from": {"key": "validFrom", "type": "iso-8601"}, + "valid_to": {"key": "validTo", "type": "iso-8601"}, + "global_acs_namespace": {"key": "globalAcsNamespace", "type": "str"}, + "global_acs_host_name": {"key": "globalAcsHostName", "type": "str"}, + "global_acs_rp_realm": {"key": "globalAcsRPRealm", "type": "str"}, } def __init__( @@ -1633,7 +1590,7 @@ def __init__( global_acs_namespace: str, global_acs_host_name: str, global_acs_rp_realm: str, - certificate: Optional[bytearray] = None, + certificate: Optional[bytes] = None, friendly_name: Optional[str] = None, issuer: Optional[str] = None, resource_id: Optional[int] = None, @@ -1645,13 +1602,13 @@ def __init__( ): """ :keyword certificate: The base64 encoded certificate raw data string. - :paramtype certificate: bytearray + :paramtype certificate: bytes :keyword friendly_name: Certificate friendly name. :paramtype friendly_name: str :keyword issuer: Certificate issuer. :paramtype issuer: str :keyword resource_id: Resource ID of the vault. - :paramtype resource_id: long + :paramtype resource_id: int :keyword subject: Certificate Subject Name. :paramtype subject: str :keyword thumbprint: Certificate thumbprint. @@ -1660,29 +1617,59 @@ def __init__( :paramtype valid_from: ~datetime.datetime :keyword valid_to: Certificate Validity End Date time. :paramtype valid_to: ~datetime.datetime - :keyword global_acs_namespace: Required. ACS namespace name - tenant for our service. + :keyword global_acs_namespace: ACS namespace name - tenant for our service. Required. :paramtype global_acs_namespace: str - :keyword global_acs_host_name: Required. Acs mgmt host name to connect to. + :keyword global_acs_host_name: Acs mgmt host name to connect to. Required. :paramtype global_acs_host_name: str - :keyword global_acs_rp_realm: Required. Global ACS namespace RP realm. + :keyword global_acs_rp_realm: Global ACS namespace RP realm. Required. :paramtype global_acs_rp_realm: str """ - super(ResourceCertificateAndAcsDetails, self).__init__(certificate=certificate, friendly_name=friendly_name, issuer=issuer, resource_id=resource_id, subject=subject, thumbprint=thumbprint, valid_from=valid_from, valid_to=valid_to, **kwargs) - self.auth_type = 'AccessControlService' # type: str + super().__init__( + certificate=certificate, + friendly_name=friendly_name, + issuer=issuer, + resource_id=resource_id, + subject=subject, + thumbprint=thumbprint, + valid_from=valid_from, + valid_to=valid_to, + **kwargs + ) + self.auth_type = "AccessControlService" # type: str self.global_acs_namespace = global_acs_namespace self.global_acs_host_name = global_acs_host_name self.global_acs_rp_realm = global_acs_rp_realm -class Sku(msrest.serialization.Model): +class SecuritySettings(_serialization.Model): + """Security Settings of the vault. + + :ivar immutability_settings: Immutability Settings of a vault. + :vartype immutability_settings: ~azure.mgmt.recoveryservices.models.ImmutabilitySettings + """ + + _attribute_map = { + "immutability_settings": {"key": "immutabilitySettings", "type": "ImmutabilitySettings"}, + } + + def __init__(self, *, immutability_settings: Optional["_models.ImmutabilitySettings"] = None, **kwargs): + """ + :keyword immutability_settings: Immutability Settings of a vault. + :paramtype immutability_settings: ~azure.mgmt.recoveryservices.models.ImmutabilitySettings + """ + super().__init__(**kwargs) + self.immutability_settings = immutability_settings + + +class Sku(_serialization.Model): """Identifies the unique system identifier for each Azure resource. All required parameters must be populated in order to send to Azure. - :ivar name: Required. Name of SKU is RS0 (Recovery Services 0th version) and the tier is - standard tier. They do not have affect on backend storage redundancy or any other vault - settings. To manage storage redundancy, use the backupstorageconfig. Known values are: - "Standard", "RS0". + :ivar name: Name of SKU is RS0 (Recovery Services 0th version) and the tier is standard tier. + They do not have affect on backend storage redundancy or any other vault settings. To manage + storage redundancy, use the backupstorageconfig. Required. Known values are: "Standard" and + "RS0". :vartype name: str or ~azure.mgmt.recoveryservices.models.SkuName :ivar tier: The Sku tier. :vartype tier: str @@ -1695,15 +1682,15 @@ class Sku(msrest.serialization.Model): """ _validation = { - 'name': {'required': True}, + "name": {"required": True}, } _attribute_map = { - 'name': {'key': 'name', 'type': 'str'}, - 'tier': {'key': 'tier', 'type': 'str'}, - 'family': {'key': 'family', 'type': 'str'}, - 'size': {'key': 'size', 'type': 'str'}, - 'capacity': {'key': 'capacity', 'type': 'str'}, + "name": {"key": "name", "type": "str"}, + "tier": {"key": "tier", "type": "str"}, + "family": {"key": "family", "type": "str"}, + "size": {"key": "size", "type": "str"}, + "capacity": {"key": "capacity", "type": "str"}, } def __init__( @@ -1717,10 +1704,10 @@ def __init__( **kwargs ): """ - :keyword name: Required. Name of SKU is RS0 (Recovery Services 0th version) and the tier is - standard tier. They do not have affect on backend storage redundancy or any other vault - settings. To manage storage redundancy, use the backupstorageconfig. Known values are: - "Standard", "RS0". + :keyword name: Name of SKU is RS0 (Recovery Services 0th version) and the tier is standard + tier. They do not have affect on backend storage redundancy or any other vault settings. To + manage storage redundancy, use the backupstorageconfig. Required. Known values are: "Standard" + and "RS0". :paramtype name: str or ~azure.mgmt.recoveryservices.models.SkuName :keyword tier: The Sku tier. :paramtype tier: str @@ -1731,7 +1718,7 @@ def __init__( :keyword capacity: The sku capacity. :paramtype capacity: str """ - super(Sku, self).__init__(**kwargs) + super().__init__(**kwargs) self.name = name self.tier = tier self.family = family @@ -1739,32 +1726,32 @@ def __init__( self.capacity = capacity -class SystemData(msrest.serialization.Model): +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", "Key". + "User", "Application", "ManagedIdentity", and "Key". :vartype created_by_type: str or ~azure.mgmt.recoveryservices.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", "Key". + are: "User", "Application", "ManagedIdentity", and "Key". :vartype last_modified_by_type: str or ~azure.mgmt.recoveryservices.models.CreatedByType :ivar last_modified_at: The type of identity that last modified the resource. :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'}, + "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__( @@ -1782,19 +1769,19 @@ def __init__( :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", "Key". + "User", "Application", "ManagedIdentity", and "Key". :paramtype created_by_type: str or ~azure.mgmt.recoveryservices.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", "Key". + values are: "User", "Application", "ManagedIdentity", and "Key". :paramtype last_modified_by_type: str or ~azure.mgmt.recoveryservices.models.CreatedByType :keyword last_modified_at: The type of identity that last modified the resource. :paramtype last_modified_at: ~datetime.datetime """ - super(SystemData, self).__init__(**kwargs) + super().__init__(**kwargs) self.created_by = created_by self.created_by_type = created_by_type self.created_at = created_at @@ -1819,50 +1806,43 @@ class TrackedResource(Resource): :vartype type: str :ivar etag: Optional ETag. :vartype etag: str - :ivar location: Required. Resource location. + :ivar location: Resource location. Required. :vartype location: str - :ivar tags: A set of tags. Resource tags. + :ivar tags: Resource tags. :vartype tags: dict[str, str] """ _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'location': {'required': True}, + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "location": {"required": True}, } _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'location': {'key': 'location', 'type': 'str'}, - 'tags': {'key': 'tags', 'type': '{str}'}, + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "etag": {"key": "etag", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, } - def __init__( - self, - *, - location: str, - etag: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, - **kwargs - ): + def __init__(self, *, location: str, etag: Optional[str] = None, tags: Optional[Dict[str, str]] = None, **kwargs): """ :keyword etag: Optional ETag. :paramtype etag: str - :keyword location: Required. Resource location. + :keyword location: Resource location. Required. :paramtype location: str - :keyword tags: A set of tags. Resource tags. + :keyword tags: Resource tags. :paramtype tags: dict[str, str] """ - super(TrackedResource, self).__init__(etag=etag, **kwargs) + super().__init__(etag=etag, **kwargs) self.location = location self.tags = tags -class UpgradeDetails(msrest.serialization.Model): +class UpgradeDetails(_serialization.Model): """Details for upgrading vault. Variables are only populated by the server, and will be ignored when sending a request. @@ -1876,12 +1856,12 @@ class UpgradeDetails(msrest.serialization.Model): :ivar end_time_utc: UTC time at which the upgrade operation has ended. :vartype end_time_utc: ~datetime.datetime :ivar status: Status of the vault upgrade operation. Known values are: "Unknown", "InProgress", - "Upgraded", "Failed". + "Upgraded", and "Failed". :vartype status: str or ~azure.mgmt.recoveryservices.models.VaultUpgradeState :ivar message: Message to the user containing information about the upgrade operation. :vartype message: str - :ivar trigger_type: The way the vault upgrade was triggered. Known values are: "UserTriggered", - "ForcedUpgrade". + :ivar trigger_type: The way the vault upgrade was triggered. Known values are: "UserTriggered" + and "ForcedUpgrade". :vartype trigger_type: str or ~azure.mgmt.recoveryservices.models.TriggerType :ivar upgraded_resource_id: Resource ID of the upgraded vault. :vartype upgraded_resource_id: str @@ -1890,36 +1870,32 @@ class UpgradeDetails(msrest.serialization.Model): """ _validation = { - 'operation_id': {'readonly': True}, - 'start_time_utc': {'readonly': True}, - 'last_updated_time_utc': {'readonly': True}, - 'end_time_utc': {'readonly': True}, - 'status': {'readonly': True}, - 'message': {'readonly': True}, - 'trigger_type': {'readonly': True}, - 'upgraded_resource_id': {'readonly': True}, - 'previous_resource_id': {'readonly': True}, + "operation_id": {"readonly": True}, + "start_time_utc": {"readonly": True}, + "last_updated_time_utc": {"readonly": True}, + "end_time_utc": {"readonly": True}, + "status": {"readonly": True}, + "message": {"readonly": True}, + "trigger_type": {"readonly": True}, + "upgraded_resource_id": {"readonly": True}, + "previous_resource_id": {"readonly": True}, } _attribute_map = { - 'operation_id': {'key': 'operationId', 'type': 'str'}, - 'start_time_utc': {'key': 'startTimeUtc', 'type': 'iso-8601'}, - 'last_updated_time_utc': {'key': 'lastUpdatedTimeUtc', 'type': 'iso-8601'}, - 'end_time_utc': {'key': 'endTimeUtc', 'type': 'iso-8601'}, - 'status': {'key': 'status', 'type': 'str'}, - 'message': {'key': 'message', 'type': 'str'}, - 'trigger_type': {'key': 'triggerType', 'type': 'str'}, - 'upgraded_resource_id': {'key': 'upgradedResourceId', 'type': 'str'}, - 'previous_resource_id': {'key': 'previousResourceId', 'type': 'str'}, - } - - def __init__( - self, - **kwargs - ): - """ - """ - super(UpgradeDetails, self).__init__(**kwargs) + "operation_id": {"key": "operationId", "type": "str"}, + "start_time_utc": {"key": "startTimeUtc", "type": "iso-8601"}, + "last_updated_time_utc": {"key": "lastUpdatedTimeUtc", "type": "iso-8601"}, + "end_time_utc": {"key": "endTimeUtc", "type": "iso-8601"}, + "status": {"key": "status", "type": "str"}, + "message": {"key": "message", "type": "str"}, + "trigger_type": {"key": "triggerType", "type": "str"}, + "upgraded_resource_id": {"key": "upgradedResourceId", "type": "str"}, + "previous_resource_id": {"key": "previousResourceId", "type": "str"}, + } + + def __init__(self, **kwargs): + """ """ + super().__init__(**kwargs) self.operation_id = None self.start_time_utc = None self.last_updated_time_utc = None @@ -1931,7 +1907,7 @@ def __init__( self.previous_resource_id = None -class UserIdentity(msrest.serialization.Model): +class UserIdentity(_serialization.Model): """A resource identity that is managed by the user of the service. Variables are only populated by the server, and will be ignored when sending a request. @@ -1943,22 +1919,18 @@ class UserIdentity(msrest.serialization.Model): """ _validation = { - 'principal_id': {'readonly': True}, - 'client_id': {'readonly': True}, + "principal_id": {"readonly": True}, + "client_id": {"readonly": True}, } _attribute_map = { - 'principal_id': {'key': 'principalId', 'type': 'str'}, - 'client_id': {'key': 'clientId', 'type': 'str'}, + "principal_id": {"key": "principalId", "type": "str"}, + "client_id": {"key": "clientId", "type": "str"}, } - def __init__( - self, - **kwargs - ): - """ - """ - super(UserIdentity, self).__init__(**kwargs) + def __init__(self, **kwargs): + """ """ + super().__init__(**kwargs) self.principal_id = None self.client_id = None @@ -1979,9 +1951,9 @@ class Vault(TrackedResource): :vartype type: str :ivar etag: Optional ETag. :vartype etag: str - :ivar location: Required. Resource location. + :ivar location: Resource location. Required. :vartype location: str - :ivar tags: A set of tags. Resource tags. + :ivar tags: Resource tags. :vartype tags: dict[str, str] :ivar identity: Identity for the resource. :vartype identity: ~azure.mgmt.recoveryservices.models.IdentityData @@ -1994,24 +1966,24 @@ class Vault(TrackedResource): """ _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'location': {'required': True}, - 'system_data': {'readonly': True}, + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "location": {"required": True}, + "system_data": {"readonly": True}, } _attribute_map = { - 'id': {'key': 'id', 'type': 'str'}, - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'location': {'key': 'location', 'type': 'str'}, - 'tags': {'key': 'tags', 'type': '{str}'}, - 'identity': {'key': 'identity', 'type': 'IdentityData'}, - 'properties': {'key': 'properties', 'type': 'VaultProperties'}, - 'sku': {'key': 'sku', 'type': 'Sku'}, - 'system_data': {'key': 'systemData', 'type': 'SystemData'}, + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "etag": {"key": "etag", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + "identity": {"key": "identity", "type": "IdentityData"}, + "properties": {"key": "properties", "type": "VaultProperties"}, + "sku": {"key": "sku", "type": "Sku"}, + "system_data": {"key": "systemData", "type": "SystemData"}, } def __init__( @@ -2028,9 +2000,9 @@ def __init__( """ :keyword etag: Optional ETag. :paramtype etag: str - :keyword location: Required. Resource location. + :keyword location: Resource location. Required. :paramtype location: str - :keyword tags: A set of tags. Resource tags. + :keyword tags: Resource tags. :paramtype tags: dict[str, str] :keyword identity: Identity for the resource. :paramtype identity: ~azure.mgmt.recoveryservices.models.IdentityData @@ -2039,14 +2011,14 @@ def __init__( :keyword sku: Identifies the unique system identifier for each Azure resource. :paramtype sku: ~azure.mgmt.recoveryservices.models.Sku """ - super(Vault, self).__init__(etag=etag, location=location, tags=tags, **kwargs) + super().__init__(etag=etag, location=location, tags=tags, **kwargs) self.identity = identity self.properties = properties self.sku = sku self.system_data = None -class VaultCertificateResponse(msrest.serialization.Model): +class VaultCertificateResponse(_serialization.Model): """Certificate corresponding to a vault that can be used by clients to register themselves with the vault. Variables are only populated by the server, and will be ignored when sending a request. @@ -2063,29 +2035,24 @@ class VaultCertificateResponse(msrest.serialization.Model): """ _validation = { - 'name': {'readonly': True}, - 'type': {'readonly': True}, - 'id': {'readonly': True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "id": {"readonly": True}, } _attribute_map = { - 'name': {'key': 'name', 'type': 'str'}, - 'type': {'key': 'type', 'type': 'str'}, - 'id': {'key': 'id', 'type': 'str'}, - 'properties': {'key': 'properties', 'type': 'ResourceCertificateDetails'}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "id": {"key": "id", "type": "str"}, + "properties": {"key": "properties", "type": "ResourceCertificateDetails"}, } - def __init__( - self, - *, - properties: Optional["_models.ResourceCertificateDetails"] = None, - **kwargs - ): + def __init__(self, *, properties: Optional["_models.ResourceCertificateDetails"] = None, **kwargs): """ :keyword properties: Certificate details representing the Vault credentials. :paramtype properties: ~azure.mgmt.recoveryservices.models.ResourceCertificateDetails """ - super(VaultCertificateResponse, self).__init__(**kwargs) + super().__init__(**kwargs) self.name = None self.type = None self.id = None @@ -2117,20 +2084,20 @@ class VaultExtendedInfoResource(Resource): """ _validation = { - 'id': {'readonly': True}, - 'name': {'readonly': True}, - 'type': {'readonly': True}, + "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'}, - 'etag': {'key': 'etag', 'type': 'str'}, - 'integrity_key': {'key': 'properties.integrityKey', 'type': 'str'}, - 'encryption_key': {'key': 'properties.encryptionKey', 'type': 'str'}, - 'encryption_key_thumbprint': {'key': 'properties.encryptionKeyThumbprint', 'type': 'str'}, - 'algorithm': {'key': 'properties.algorithm', 'type': 'str'}, + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "etag": {"key": "etag", "type": "str"}, + "integrity_key": {"key": "properties.integrityKey", "type": "str"}, + "encryption_key": {"key": "properties.encryptionKey", "type": "str"}, + "encryption_key_thumbprint": {"key": "properties.encryptionKeyThumbprint", "type": "str"}, + "algorithm": {"key": "properties.algorithm", "type": "str"}, } def __init__( @@ -2155,14 +2122,14 @@ def __init__( :keyword algorithm: Algorithm for Vault ExtendedInfo. :paramtype algorithm: str """ - super(VaultExtendedInfoResource, self).__init__(etag=etag, **kwargs) + super().__init__(etag=etag, **kwargs) self.integrity_key = integrity_key self.encryption_key = encryption_key self.encryption_key_thumbprint = encryption_key_thumbprint self.algorithm = algorithm -class VaultList(msrest.serialization.Model): +class VaultList(_serialization.Model): """The response model for a list of Vaults. Variables are only populated by the server, and will be ignored when sending a request. @@ -2174,30 +2141,25 @@ class VaultList(msrest.serialization.Model): """ _validation = { - 'next_link': {'readonly': True}, + "next_link": {"readonly": True}, } _attribute_map = { - 'value': {'key': 'value', 'type': '[Vault]'}, - 'next_link': {'key': 'nextLink', 'type': 'str'}, + "value": {"key": "value", "type": "[Vault]"}, + "next_link": {"key": "nextLink", "type": "str"}, } - def __init__( - self, - *, - value: Optional[List["_models.Vault"]] = None, - **kwargs - ): + def __init__(self, *, value: Optional[List["_models.Vault"]] = None, **kwargs): """ :keyword value: :paramtype value: list[~azure.mgmt.recoveryservices.models.Vault] """ - super(VaultList, self).__init__(**kwargs) + super().__init__(**kwargs) self.value = value self.next_link = None -class VaultProperties(msrest.serialization.Model): +class VaultProperties(_serialization.Model): # pylint: disable=too-many-instance-attributes """Properties of the vault. Variables are only populated by the server, and will be ignored when sending a request. @@ -2210,11 +2172,11 @@ class VaultProperties(msrest.serialization.Model): :vartype private_endpoint_connections: list[~azure.mgmt.recoveryservices.models.PrivateEndpointConnectionVaultProperties] :ivar private_endpoint_state_for_backup: Private endpoint state for backup. Known values are: - "None", "Enabled". + "None" and "Enabled". :vartype private_endpoint_state_for_backup: str or ~azure.mgmt.recoveryservices.models.VaultPrivateEndpointState :ivar private_endpoint_state_for_site_recovery: Private endpoint state for site recovery. Known - values are: "None", "Enabled". + values are: "None" and "Enabled". :vartype private_endpoint_state_for_site_recovery: str or ~azure.mgmt.recoveryservices.models.VaultPrivateEndpointState :ivar encryption: Customer Managed Key details of the resource. @@ -2223,9 +2185,9 @@ class VaultProperties(msrest.serialization.Model): :vartype move_details: ~azure.mgmt.recoveryservices.models.VaultPropertiesMoveDetails :ivar move_state: The State of the Resource after the move operation. Known values are: "Unknown", "InProgress", "PrepareFailed", "CommitFailed", "PrepareTimedout", "CommitTimedout", - "MoveSucceeded", "Failure", "CriticalFailure", "PartialSuccess". + "MoveSucceeded", "Failure", "CriticalFailure", and "PartialSuccess". :vartype move_state: str or ~azure.mgmt.recoveryservices.models.ResourceMoveState - :ivar backup_storage_version: Backup storage version. Known values are: "V1", "V2", + :ivar backup_storage_version: Backup storage version. Known values are: "V1", "V2", and "Unassigned". :vartype backup_storage_version: str or ~azure.mgmt.recoveryservices.models.BackupStorageVersion @@ -2234,29 +2196,35 @@ class VaultProperties(msrest.serialization.Model): :ivar redundancy_settings: The redundancy Settings of a Vault. :vartype redundancy_settings: ~azure.mgmt.recoveryservices.models.VaultPropertiesRedundancySettings + :ivar security_settings: Security Settings of the vault. + :vartype security_settings: ~azure.mgmt.recoveryservices.models.SecuritySettings """ _validation = { - 'provisioning_state': {'readonly': True}, - 'private_endpoint_connections': {'readonly': True}, - 'private_endpoint_state_for_backup': {'readonly': True}, - 'private_endpoint_state_for_site_recovery': {'readonly': True}, - 'move_state': {'readonly': True}, - 'backup_storage_version': {'readonly': True}, + "provisioning_state": {"readonly": True}, + "private_endpoint_connections": {"readonly": True}, + "private_endpoint_state_for_backup": {"readonly": True}, + "private_endpoint_state_for_site_recovery": {"readonly": True}, + "move_state": {"readonly": True}, + "backup_storage_version": {"readonly": True}, } _attribute_map = { - 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, - 'upgrade_details': {'key': 'upgradeDetails', 'type': 'UpgradeDetails'}, - 'private_endpoint_connections': {'key': 'privateEndpointConnections', 'type': '[PrivateEndpointConnectionVaultProperties]'}, - 'private_endpoint_state_for_backup': {'key': 'privateEndpointStateForBackup', 'type': 'str'}, - 'private_endpoint_state_for_site_recovery': {'key': 'privateEndpointStateForSiteRecovery', 'type': 'str'}, - 'encryption': {'key': 'encryption', 'type': 'VaultPropertiesEncryption'}, - 'move_details': {'key': 'moveDetails', 'type': 'VaultPropertiesMoveDetails'}, - 'move_state': {'key': 'moveState', 'type': 'str'}, - 'backup_storage_version': {'key': 'backupStorageVersion', 'type': 'str'}, - 'monitoring_settings': {'key': 'monitoringSettings', 'type': 'MonitoringSettings'}, - 'redundancy_settings': {'key': 'redundancySettings', 'type': 'VaultPropertiesRedundancySettings'}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "upgrade_details": {"key": "upgradeDetails", "type": "UpgradeDetails"}, + "private_endpoint_connections": { + "key": "privateEndpointConnections", + "type": "[PrivateEndpointConnectionVaultProperties]", + }, + "private_endpoint_state_for_backup": {"key": "privateEndpointStateForBackup", "type": "str"}, + "private_endpoint_state_for_site_recovery": {"key": "privateEndpointStateForSiteRecovery", "type": "str"}, + "encryption": {"key": "encryption", "type": "VaultPropertiesEncryption"}, + "move_details": {"key": "moveDetails", "type": "VaultPropertiesMoveDetails"}, + "move_state": {"key": "moveState", "type": "str"}, + "backup_storage_version": {"key": "backupStorageVersion", "type": "str"}, + "monitoring_settings": {"key": "monitoringSettings", "type": "MonitoringSettings"}, + "redundancy_settings": {"key": "redundancySettings", "type": "VaultPropertiesRedundancySettings"}, + "security_settings": {"key": "securitySettings", "type": "SecuritySettings"}, } def __init__( @@ -2267,6 +2235,7 @@ def __init__( move_details: Optional["_models.VaultPropertiesMoveDetails"] = None, monitoring_settings: Optional["_models.MonitoringSettings"] = None, redundancy_settings: Optional["_models.VaultPropertiesRedundancySettings"] = None, + security_settings: Optional["_models.SecuritySettings"] = None, **kwargs ): """ @@ -2282,8 +2251,10 @@ def __init__( :keyword redundancy_settings: The redundancy Settings of a Vault. :paramtype redundancy_settings: ~azure.mgmt.recoveryservices.models.VaultPropertiesRedundancySettings + :keyword security_settings: Security Settings of the vault. + :paramtype security_settings: ~azure.mgmt.recoveryservices.models.SecuritySettings """ - super(VaultProperties, self).__init__(**kwargs) + super().__init__(**kwargs) self.provisioning_state = None self.upgrade_details = upgrade_details self.private_endpoint_connections = None @@ -2295,9 +2266,10 @@ def __init__( self.backup_storage_version = None self.monitoring_settings = monitoring_settings self.redundancy_settings = redundancy_settings + self.security_settings = security_settings -class VaultPropertiesEncryption(msrest.serialization.Model): +class VaultPropertiesEncryption(_serialization.Model): """Customer Managed Key details of the resource. :ivar key_vault_properties: The properties of the Key Vault which hosts CMK. @@ -2305,15 +2277,15 @@ class VaultPropertiesEncryption(msrest.serialization.Model): :ivar kek_identity: The details of the identity used for CMK. :vartype kek_identity: ~azure.mgmt.recoveryservices.models.CmkKekIdentity :ivar infrastructure_encryption: Enabling/Disabling the Double Encryption state. Known values - are: "Enabled", "Disabled". + are: "Enabled" and "Disabled". :vartype infrastructure_encryption: str or ~azure.mgmt.recoveryservices.models.InfrastructureEncryptionState """ _attribute_map = { - 'key_vault_properties': {'key': 'keyVaultProperties', 'type': 'CmkKeyVaultProperties'}, - 'kek_identity': {'key': 'kekIdentity', 'type': 'CmkKekIdentity'}, - 'infrastructure_encryption': {'key': 'infrastructureEncryption', 'type': 'str'}, + "key_vault_properties": {"key": "keyVaultProperties", "type": "CmkKeyVaultProperties"}, + "kek_identity": {"key": "kekIdentity", "type": "CmkKekIdentity"}, + "infrastructure_encryption": {"key": "infrastructureEncryption", "type": "str"}, } def __init__( @@ -2330,17 +2302,17 @@ def __init__( :keyword kek_identity: The details of the identity used for CMK. :paramtype kek_identity: ~azure.mgmt.recoveryservices.models.CmkKekIdentity :keyword infrastructure_encryption: Enabling/Disabling the Double Encryption state. Known - values are: "Enabled", "Disabled". + values are: "Enabled" and "Disabled". :paramtype infrastructure_encryption: str or ~azure.mgmt.recoveryservices.models.InfrastructureEncryptionState """ - super(VaultPropertiesEncryption, self).__init__(**kwargs) + super().__init__(**kwargs) self.key_vault_properties = key_vault_properties self.kek_identity = kek_identity self.infrastructure_encryption = infrastructure_encryption -class VaultPropertiesMoveDetails(msrest.serialization.Model): +class VaultPropertiesMoveDetails(_serialization.Model): """The details of the latest move operation performed on the Azure Resource. Variables are only populated by the server, and will be ignored when sending a request. @@ -2358,28 +2330,24 @@ class VaultPropertiesMoveDetails(msrest.serialization.Model): """ _validation = { - 'operation_id': {'readonly': True}, - 'start_time_utc': {'readonly': True}, - 'completion_time_utc': {'readonly': True}, - 'source_resource_id': {'readonly': True}, - 'target_resource_id': {'readonly': True}, + "operation_id": {"readonly": True}, + "start_time_utc": {"readonly": True}, + "completion_time_utc": {"readonly": True}, + "source_resource_id": {"readonly": True}, + "target_resource_id": {"readonly": True}, } _attribute_map = { - 'operation_id': {'key': 'operationId', 'type': 'str'}, - 'start_time_utc': {'key': 'startTimeUtc', 'type': 'iso-8601'}, - 'completion_time_utc': {'key': 'completionTimeUtc', 'type': 'iso-8601'}, - 'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'}, - 'target_resource_id': {'key': 'targetResourceId', 'type': 'str'}, + "operation_id": {"key": "operationId", "type": "str"}, + "start_time_utc": {"key": "startTimeUtc", "type": "iso-8601"}, + "completion_time_utc": {"key": "completionTimeUtc", "type": "iso-8601"}, + "source_resource_id": {"key": "sourceResourceId", "type": "str"}, + "target_resource_id": {"key": "targetResourceId", "type": "str"}, } - def __init__( - self, - **kwargs - ): - """ - """ - super(VaultPropertiesMoveDetails, self).__init__(**kwargs) + def __init__(self, **kwargs): + """ """ + super().__init__(**kwargs) self.operation_id = None self.start_time_utc = None self.completion_time_utc = None @@ -2387,66 +2355,62 @@ def __init__( self.target_resource_id = None -class VaultPropertiesRedundancySettings(msrest.serialization.Model): +class VaultPropertiesRedundancySettings(_serialization.Model): """The redundancy Settings of a Vault. Variables are only populated by the server, and will be ignored when sending a request. :ivar standard_tier_storage_redundancy: The storage redundancy setting of a vault. Known values - are: "LocallyRedundant", "GeoRedundant", "ZoneRedundant". + are: "LocallyRedundant", "GeoRedundant", and "ZoneRedundant". :vartype standard_tier_storage_redundancy: str or ~azure.mgmt.recoveryservices.models.StandardTierStorageRedundancy :ivar cross_region_restore: Flag to show if Cross Region Restore is enabled on the Vault or - not. Known values are: "Enabled", "Disabled". + not. Known values are: "Enabled" and "Disabled". :vartype cross_region_restore: str or ~azure.mgmt.recoveryservices.models.CrossRegionRestore """ _validation = { - 'standard_tier_storage_redundancy': {'readonly': True}, - 'cross_region_restore': {'readonly': True}, + "standard_tier_storage_redundancy": {"readonly": True}, + "cross_region_restore": {"readonly": True}, } _attribute_map = { - 'standard_tier_storage_redundancy': {'key': 'standardTierStorageRedundancy', 'type': 'str'}, - 'cross_region_restore': {'key': 'crossRegionRestore', 'type': 'str'}, + "standard_tier_storage_redundancy": {"key": "standardTierStorageRedundancy", "type": "str"}, + "cross_region_restore": {"key": "crossRegionRestore", "type": "str"}, } - def __init__( - self, - **kwargs - ): - """ - """ - super(VaultPropertiesRedundancySettings, self).__init__(**kwargs) + def __init__(self, **kwargs): + """ """ + super().__init__(**kwargs) self.standard_tier_storage_redundancy = None self.cross_region_restore = None -class VaultUsage(msrest.serialization.Model): +class VaultUsage(_serialization.Model): """Usages of a vault. :ivar unit: Unit of the usage. Known values are: "Count", "Bytes", "Seconds", "Percent", - "CountPerSecond", "BytesPerSecond". + "CountPerSecond", and "BytesPerSecond". :vartype unit: str or ~azure.mgmt.recoveryservices.models.UsagesUnit :ivar quota_period: Quota period of usage. :vartype quota_period: str :ivar next_reset_time: Next reset time of usage. :vartype next_reset_time: ~datetime.datetime :ivar current_value: Current value of usage. - :vartype current_value: long + :vartype current_value: int :ivar limit: Limit of usage. - :vartype limit: long + :vartype limit: int :ivar name: Name of usage. :vartype name: ~azure.mgmt.recoveryservices.models.NameInfo """ _attribute_map = { - 'unit': {'key': 'unit', 'type': 'str'}, - 'quota_period': {'key': 'quotaPeriod', 'type': 'str'}, - 'next_reset_time': {'key': 'nextResetTime', 'type': 'iso-8601'}, - 'current_value': {'key': 'currentValue', 'type': 'long'}, - 'limit': {'key': 'limit', 'type': 'long'}, - 'name': {'key': 'name', 'type': 'NameInfo'}, + "unit": {"key": "unit", "type": "str"}, + "quota_period": {"key": "quotaPeriod", "type": "str"}, + "next_reset_time": {"key": "nextResetTime", "type": "iso-8601"}, + "current_value": {"key": "currentValue", "type": "int"}, + "limit": {"key": "limit", "type": "int"}, + "name": {"key": "name", "type": "NameInfo"}, } def __init__( @@ -2462,20 +2426,20 @@ def __init__( ): """ :keyword unit: Unit of the usage. Known values are: "Count", "Bytes", "Seconds", "Percent", - "CountPerSecond", "BytesPerSecond". + "CountPerSecond", and "BytesPerSecond". :paramtype unit: str or ~azure.mgmt.recoveryservices.models.UsagesUnit :keyword quota_period: Quota period of usage. :paramtype quota_period: str :keyword next_reset_time: Next reset time of usage. :paramtype next_reset_time: ~datetime.datetime :keyword current_value: Current value of usage. - :paramtype current_value: long + :paramtype current_value: int :keyword limit: Limit of usage. - :paramtype limit: long + :paramtype limit: int :keyword name: Name of usage. :paramtype name: ~azure.mgmt.recoveryservices.models.NameInfo """ - super(VaultUsage, self).__init__(**kwargs) + super().__init__(**kwargs) self.unit = unit self.quota_period = quota_period self.next_reset_time = next_reset_time @@ -2484,7 +2448,7 @@ def __init__( self.name = name -class VaultUsageList(msrest.serialization.Model): +class VaultUsageList(_serialization.Model): """Usage for vault. :ivar value: The list of usages for the given vault. @@ -2492,18 +2456,13 @@ class VaultUsageList(msrest.serialization.Model): """ _attribute_map = { - 'value': {'key': 'value', 'type': '[VaultUsage]'}, + "value": {"key": "value", "type": "[VaultUsage]"}, } - def __init__( - self, - *, - value: Optional[List["_models.VaultUsage"]] = None, - **kwargs - ): + def __init__(self, *, value: Optional[List["_models.VaultUsage"]] = None, **kwargs): """ :keyword value: The list of usages for the given vault. :paramtype value: list[~azure.mgmt.recoveryservices.models.VaultUsage] """ - super(VaultUsageList, self).__init__(**kwargs) + super().__init__(**kwargs) self.value = value diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_patch.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_patch.py index 0ad201a8c586..f7dd32510333 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_patch.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_patch.py @@ -10,6 +10,7 @@ __all__: List[str] = [] # Add all objects you want publicly available to users at this package level + def patch_sdk(): """Do not remove from this file. diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_recovery_services_client_enums.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_recovery_services_client_enums.py index a1c3d0bbc4dd..6360c116f5ef 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_recovery_services_client_enums.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/models/_recovery_services_client_enums.py @@ -11,13 +11,14 @@ class AlertsState(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """AlertsState.""" ENABLED = "Enabled" DISABLED = "Disabled" + class AuthType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Specifies the authentication type. - """ + """Specifies the authentication type.""" INVALID = "Invalid" ACS = "ACS" @@ -25,55 +26,64 @@ class AuthType(str, Enum, metaclass=CaseInsensitiveEnumMeta): ACCESS_CONTROL_SERVICE = "AccessControlService" AZURE_ACTIVE_DIRECTORY = "AzureActiveDirectory" + class BackupStorageVersion(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Backup storage version - """ + """Backup storage version.""" V1 = "V1" V2 = "V2" UNASSIGNED = "Unassigned" + class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The type of identity that created the resource. - """ + """The type of identity that created the resource.""" USER = "User" APPLICATION = "Application" MANAGED_IDENTITY = "ManagedIdentity" KEY = "Key" + class CrossRegionRestore(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Flag to show if Cross Region Restore is enabled on the Vault or not - """ + """Flag to show if Cross Region Restore is enabled on the Vault or not.""" ENABLED = "Enabled" DISABLED = "Disabled" + +class ImmutabilityState(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """ImmutabilityState.""" + + DISABLED = "Disabled" + UNLOCKED = "Unlocked" + LOCKED = "Locked" + + class InfrastructureEncryptionState(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Enabling/Disabling the Double Encryption state - """ + """Enabling/Disabling the Double Encryption state.""" ENABLED = "Enabled" DISABLED = "Disabled" + class PrivateEndpointConnectionStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Gets or sets the status. - """ + """Gets or sets the status.""" PENDING = "Pending" APPROVED = "Approved" REJECTED = "Rejected" DISCONNECTED = "Disconnected" + class ProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Gets or sets provisioning state of the private endpoint connection. - """ + """Gets or sets provisioning state of the private endpoint connection.""" SUCCEEDED = "Succeeded" DELETING = "Deleting" FAILED = "Failed" PENDING = "Pending" + class ResourceIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The type of managed identity used. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user-assigned identities. The type 'None' will remove @@ -85,9 +95,9 @@ class ResourceIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): USER_ASSIGNED = "UserAssigned" SYSTEM_ASSIGNED_USER_ASSIGNED = "SystemAssigned, UserAssigned" + class ResourceMoveState(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The State of the Resource after the move operation - """ + """The State of the Resource after the move operation.""" UNKNOWN = "Unknown" IN_PROGRESS = "InProgress" @@ -100,33 +110,34 @@ class ResourceMoveState(str, Enum, metaclass=CaseInsensitiveEnumMeta): CRITICAL_FAILURE = "CriticalFailure" PARTIAL_SUCCESS = "PartialSuccess" + class SkuName(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Name of SKU is RS0 (Recovery Services 0th version) and the tier is standard tier. They do not have affect on backend storage redundancy or any other vault settings. To manage storage - redundancy, use the backupstorageconfig + redundancy, use the backupstorageconfig. """ STANDARD = "Standard" RS0 = "RS0" + class StandardTierStorageRedundancy(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The storage redundancy setting of a vault - """ + """The storage redundancy setting of a vault.""" LOCALLY_REDUNDANT = "LocallyRedundant" GEO_REDUNDANT = "GeoRedundant" ZONE_REDUNDANT = "ZoneRedundant" + class TriggerType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The way the vault upgrade was triggered. - """ + """The way the vault upgrade was triggered.""" USER_TRIGGERED = "UserTriggered" FORCED_UPGRADE = "ForcedUpgrade" + class UsagesUnit(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Unit of the usage. - """ + """Unit of the usage.""" COUNT = "Count" BYTES = "Bytes" @@ -135,16 +146,16 @@ class UsagesUnit(str, Enum, metaclass=CaseInsensitiveEnumMeta): COUNT_PER_SECOND = "CountPerSecond" BYTES_PER_SECOND = "BytesPerSecond" + class VaultPrivateEndpointState(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Private endpoint state for backup. - """ + """Private endpoint state for backup.""" NONE = "None" ENABLED = "Enabled" + class VaultUpgradeState(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Status of the vault upgrade operation. - """ + """Status of the vault upgrade operation.""" UNKNOWN = "Unknown" IN_PROGRESS = "InProgress" diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/__init__.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/__init__.py index 7fc8b3c14b3c..fa4730b40abe 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/__init__.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/__init__.py @@ -20,17 +20,18 @@ from ._patch import __all__ as _patch_all from ._patch import * # type: ignore # pylint: disable=unused-wildcard-import from ._patch import patch_sdk as _patch_sdk + __all__ = [ - 'VaultCertificatesOperations', - 'RegisteredIdentitiesOperations', - 'ReplicationUsagesOperations', - 'PrivateLinkResourcesOperations', - 'RecoveryServicesOperations', - 'VaultsOperations', - 'Operations', - 'VaultExtendedInfoOperations', - 'RecoveryServicesClientOperationsMixin', - 'UsagesOperations', + "VaultCertificatesOperations", + "RegisteredIdentitiesOperations", + "ReplicationUsagesOperations", + "PrivateLinkResourcesOperations", + "RecoveryServicesOperations", + "VaultsOperations", + "Operations", + "VaultExtendedInfoOperations", + "RecoveryServicesClientOperationsMixin", + "UsagesOperations", ] __all__.extend([p for p in _patch_all if p not in __all__]) -_patch_sdk() \ No newline at end of file +_patch_sdk() diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_operations.py index d6c53aeccc1f..0af232221fb7 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_operations.py @@ -7,10 +7,16 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from urllib.parse import parse_qs, urljoin, urlparse + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpResponse @@ -20,38 +26,34 @@ from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._serialization import Serializer from .._vendor import MixinABC, _convert_request -T = TypeVar('T') + +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( - **kwargs: Any -) -> HttpRequest: + +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', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop("template_url", "/providers/Microsoft.RecoveryServices/operations") # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers - _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - return HttpRequest( - method="GET", - url=_url, - params=_params, - headers=_headers, - **kwargs - ) class Operations: """ @@ -72,37 +74,37 @@ def __init__(self, *args, **kwargs): 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 - ) -> Iterable[_models.ClientDiscoveryResponse]: + def list(self, **kwargs: Any) -> Iterable["_models.ClientDiscoveryValueForSingleApi"]: """Returns the list of available operations. :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ClientDiscoveryResponse or the result of + :return: An iterator like instance of either ClientDiscoveryValueForSingleApi or the result of cls(response) :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.ClientDiscoveryResponse] - :raises: ~azure.core.exceptions.HttpResponseError + ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.ClientDiscoveryValueForSingleApi] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.ClientDiscoveryResponse] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.ClientDiscoveryResponse] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_request( api_version=api_version, - template_url=self.list.metadata['url'], + template_url=self.list.metadata["url"], headers=_headers, params=_params, ) @@ -110,13 +112,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_request( - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -132,10 +132,8 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -145,8 +143,6 @@ def get_next(next_link=None): return pipeline_response + return ItemPaged(get_next, extract_data) - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/providers/Microsoft.RecoveryServices/operations"} # type: ignore + list.metadata = {"url": "/providers/Microsoft.RecoveryServices/operations"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_patch.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_patch.py index 0ad201a8c586..f7dd32510333 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_patch.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_patch.py @@ -10,6 +10,7 @@ __all__: List[str] = [] # Add all objects you want publicly available to users at this package level + def patch_sdk(): """Do not remove from this file. diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_private_link_resources_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_private_link_resources_operations.py index 70e06d467b99..1c788b6a24f5 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_private_link_resources_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_private_link_resources_operations.py @@ -7,10 +7,16 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from urllib.parse import parse_qs, urljoin, urlparse + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpResponse @@ -20,87 +26,76 @@ from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._serialization import Serializer from .._vendor import MixinABC, _convert_request, _format_url_section -T = TypeVar('T') + +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, - resource_group_name: str, - vault_name: str, - **kwargs: Any -) -> HttpRequest: + +def build_list_request(resource_group_name: str, vault_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers - _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - return HttpRequest( - method="GET", - url=_url, - params=_params, - headers=_headers, - **kwargs - ) + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) def build_get_request( - subscription_id: str, - resource_group_name: str, - vault_name: str, - private_link_resource_name: str, - **kwargs: Any + resource_group_name: str, vault_name: str, private_link_resource_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources/{privateLinkResourceName}") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources/{privateLinkResourceName}", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), - "privateLinkResourceName": _SERIALIZER.url("private_link_resource_name", private_link_resource_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), + "privateLinkResourceName": _SERIALIZER.url("private_link_resource_name", private_link_resource_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers - _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - return HttpRequest( - method="GET", - url=_url, - params=_params, - headers=_headers, - **kwargs - ) class PrivateLinkResourcesOperations: """ @@ -121,48 +116,45 @@ def __init__(self, *args, **kwargs): 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, - resource_group_name: str, - vault_name: str, - **kwargs: Any - ) -> Iterable[_models.PrivateLinkResources]: + def list(self, resource_group_name: str, vault_name: str, **kwargs: Any) -> Iterable["_models.PrivateLinkResource"]: """Returns the list of private link resources that need to be created for Backup and SiteRecovery. Returns the list of private link resources that need to be created for Backup and SiteRecovery. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either PrivateLinkResources or the result of - cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.PrivateLinkResources] - :raises: ~azure.core.exceptions.HttpResponseError + :return: An iterator like instance of either PrivateLinkResource or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.PrivateLinkResource] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.PrivateLinkResources] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.PrivateLinkResources] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata['url'], + template_url=self.list.metadata["url"], headers=_headers, params=_params, ) @@ -170,16 +162,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - vault_name=vault_name, - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -195,10 +182,8 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -208,55 +193,51 @@ def get_next(next_link=None): return pipeline_response + return ItemPaged(get_next, extract_data) - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources"} # type: ignore + list.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources"} # type: ignore @distributed_trace def get( - self, - resource_group_name: str, - vault_name: str, - private_link_resource_name: str, - **kwargs: Any + self, resource_group_name: str, vault_name: str, private_link_resource_name: str, **kwargs: Any ) -> _models.PrivateLinkResource: """Returns a specified private link resource that need to be created for Backup and SiteRecovery. Returns a specified private link resource that need to be created for Backup and SiteRecovery. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param private_link_resource_name: + :param private_link_resource_name: Required. :type private_link_resource_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: PrivateLinkResource, or the result of cls(response) + :return: PrivateLinkResource or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.PrivateLinkResource - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.PrivateLinkResource] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.PrivateLinkResource] - request = build_get_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, private_link_resource_name=private_link_resource_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata['url'], + template_url=self.get.metadata["url"], headers=_headers, params=_params, ) @@ -264,22 +245,20 @@ def get( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('PrivateLinkResource', pipeline_response) + deserialized = self._deserialize("PrivateLinkResource", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources/{privateLinkResourceName}"} # type: ignore - + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/privateLinkResources/{privateLinkResourceName}"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_recovery_services_client_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_recovery_services_client_operations.py index 4940a77bd91c..eccf300a2910 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_recovery_services_client_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_recovery_services_client_operations.py @@ -8,9 +8,14 @@ # -------------------------------------------------------------------------- from typing import Any, Callable, Dict, Optional, TypeVar -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpResponse from azure.core.rest import HttpRequest @@ -19,133 +24,120 @@ from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._serialization import Serializer from .._vendor import MixinABC, _convert_request, _format_url_section -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False + def build_get_operation_status_request( - subscription_id: str, - resource_group_name: str, - vault_name: str, - operation_id: str, - **kwargs: Any + resource_group_name: str, vault_name: str, operation_id: 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationStatus/{operationId}") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationStatus/{operationId}", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), - "operationId": _SERIALIZER.url("operation_id", operation_id, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), + "operationId": _SERIALIZER.url("operation_id", operation_id, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers - _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - return HttpRequest( - method="GET", - url=_url, - params=_params, - headers=_headers, - **kwargs - ) + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) def build_get_operation_result_request( - subscription_id: str, - resource_group_name: str, - vault_name: str, - operation_id: str, - **kwargs: Any + resource_group_name: str, vault_name: str, operation_id: 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationResults/{operationId}") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationResults/{operationId}", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), - "operationId": _SERIALIZER.url("operation_id", operation_id, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), + "operationId": _SERIALIZER.url("operation_id", operation_id, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers - _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - return HttpRequest( - method="GET", - url=_url, - params=_params, - headers=_headers, - **kwargs - ) + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -class RecoveryServicesClientOperationsMixin(MixinABC): +class RecoveryServicesClientOperationsMixin(MixinABC): @distributed_trace def get_operation_status( - self, - resource_group_name: str, - vault_name: str, - operation_id: str, - **kwargs: Any + self, resource_group_name: str, vault_name: str, operation_id: str, **kwargs: Any ) -> _models.OperationResource: """Gets the operation status for a resource. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param operation_id: + :param operation_id: Required. :type operation_id: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: OperationResource, or the result of cls(response) + :return: OperationResource or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.OperationResource - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.OperationResource] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.OperationResource] - request = build_get_operation_status_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, operation_id=operation_id, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get_operation_status.metadata['url'], + template_url=self.get_operation_status.metadata["url"], headers=_headers, params=_params, ) @@ -153,67 +145,63 @@ def get_operation_status( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('OperationResource', pipeline_response) + deserialized = self._deserialize("OperationResource", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get_operation_status.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationStatus/{operationId}"} # type: ignore - + get_operation_status.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationStatus/{operationId}"} # type: ignore @distributed_trace def get_operation_result( - self, - resource_group_name: str, - vault_name: str, - operation_id: str, - **kwargs: Any + self, resource_group_name: str, vault_name: str, operation_id: str, **kwargs: Any ) -> Optional[_models.Vault]: """Gets the operation result for a resource. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param operation_id: + :param operation_id: Required. :type operation_id: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: Vault, or the result of cls(response) + :return: Vault or None or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.Vault or None - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[Optional[_models.Vault]] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[Optional[_models.Vault]] - request = build_get_operation_result_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, operation_id=operation_id, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get_operation_result.metadata['url'], + template_url=self.get_operation_result.metadata["url"], headers=_headers, params=_params, ) @@ -221,10 +209,9 @@ def get_operation_result( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200, 202]: @@ -233,12 +220,11 @@ def get_operation_result( deserialized = None if response.status_code == 200: - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get_operation_result.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationResults/{operationId}"} # type: ignore - + get_operation_result.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/operationResults/{operationId}"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_recovery_services_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_recovery_services_operations.py index 111c1d708f5f..b8e1d723e69e 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_recovery_services_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_recovery_services_operations.py @@ -6,11 +6,16 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar +from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpResponse from azure.core.rest import HttpRequest @@ -19,56 +24,49 @@ from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._serialization import Serializer from .._vendor import MixinABC, _convert_request, _format_url_section -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False + def build_check_name_availability_request( - subscription_id: str, - resource_group_name: str, - location: str, - *, - json: Optional[_models.CheckNameAvailabilityParameters] = None, - content: Any = None, - **kwargs: Any + resource_group_name: str, location: 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/locations/{location}/checkNameAvailability") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/locations/{location}/checkNameAvailability", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "location": _SERIALIZER.url("location", location, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "location": _SERIALIZER.url("location", location, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _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, - json=json, - content=content, - **kwargs - ) + _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 RecoveryServicesOperations: """ @@ -89,13 +87,14 @@ def __init__(self, *args, **kwargs): 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 + @overload def check_name_availability( self, resource_group_name: str, location: str, input: _models.CheckNameAvailabilityParameters, + *, + content_type: str = "application/json", **kwargs: Any ) -> _models.CheckNameAvailabilityResult: """API to check for resource name availability. @@ -111,39 +110,127 @@ def check_name_availability( be more than 24 Hours Ago. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param location: Location of the resource. + :param location: Location of the resource. Required. :type location: str - :param input: Contains information about Resource type and Resource name. + :param input: Contains information about Resource type and Resource name. Required. :type input: ~azure.mgmt.recoveryservices.models.CheckNameAvailabilityParameters + :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: CheckNameAvailabilityResult or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.CheckNameAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def check_name_availability( + self, + resource_group_name: str, + location: str, + input: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CheckNameAvailabilityResult: + """API to check for resource name availability. + A name is available if no other resource exists that has the same SubscriptionId, Resource Name + and Type + or if one or more such resources exist, each of these must be GC'd and their time of deletion + be more than 24 Hours Ago. + + API to check for resource name availability. + A name is available if no other resource exists that has the same SubscriptionId, Resource Name + and Type + or if one or more such resources exist, each of these must be GC'd and their time of deletion + be more than 24 Hours Ago. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param location: Location of the resource. Required. + :type location: str + :param input: Contains information about Resource type and Resource name. Required. + :type input: IO + :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: CheckNameAvailabilityResult, or the result of cls(response) + :return: CheckNameAvailabilityResult or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.CheckNameAvailabilityResult - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def check_name_availability( + self, + resource_group_name: str, + location: str, + input: Union[_models.CheckNameAvailabilityParameters, IO], + **kwargs: Any + ) -> _models.CheckNameAvailabilityResult: + """API to check for resource name availability. + A name is available if no other resource exists that has the same SubscriptionId, Resource Name + and Type + or if one or more such resources exist, each of these must be GC'd and their time of deletion + be more than 24 Hours Ago. + + API to check for resource name availability. + A name is available if no other resource exists that has the same SubscriptionId, Resource Name + and Type + or if one or more such resources exist, each of these must be GC'd and their time of deletion + be more than 24 Hours Ago. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param location: Location of the resource. Required. + :type location: str + :param input: Contains information about Resource type and Resource name. Is either a model + type or a IO type. Required. + :type input: ~azure.mgmt.recoveryservices.models.CheckNameAvailabilityParameters 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 + :return: CheckNameAvailabilityResult or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.CheckNameAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.CheckNameAvailabilityResult] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.CheckNameAvailabilityResult] - _json = self._serialize.body(input, 'CheckNameAvailabilityParameters') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(input, (IO, bytes)): + _content = input + else: + _json = self._serialize.body(input, "CheckNameAvailabilityParameters") request = build_check_name_availability_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, location=location, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self.check_name_availability.metadata['url'], + content=_content, + template_url=self.check_name_availability.metadata["url"], headers=_headers, params=_params, ) @@ -151,22 +238,20 @@ def check_name_availability( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('CheckNameAvailabilityResult', pipeline_response) + deserialized = self._deserialize("CheckNameAvailabilityResult", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - check_name_availability.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/locations/{location}/checkNameAvailability"} # type: ignore - + check_name_availability.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/locations/{location}/checkNameAvailability"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_registered_identities_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_registered_identities_operations.py index 07a3b5a53186..fc90b124b5a2 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_registered_identities_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_registered_identities_operations.py @@ -8,9 +8,14 @@ # -------------------------------------------------------------------------- from typing import Any, Callable, Dict, Optional, TypeVar -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpResponse from azure.core.rest import HttpRequest @@ -19,43 +24,41 @@ from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._serialization import Serializer from .._vendor import MixinABC, _convert_request, _format_url_section -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False + def build_delete_request( - subscription_id: str, - resource_group_name: str, - vault_name: str, - identity_name: str, - **kwargs: Any + resource_group_name: str, vault_name: str, identity_name: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str # Construct URL - _url = kwargs.pop("template_url", "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/registeredIdentities/{identityName}") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/registeredIdentities/{identityName}", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), - "identityName": _SERIALIZER.url("identity_name", identity_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), + "identityName": _SERIALIZER.url("identity_name", identity_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) - return HttpRequest( - method="DELETE", - url=_url, - params=_params, - **kwargs - ) class RegisteredIdentitiesOperations: """ @@ -76,48 +79,45 @@ def __init__(self, *args, **kwargs): 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 delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - vault_name: str, - identity_name: str, - **kwargs: Any + self, resource_group_name: str, vault_name: str, identity_name: str, **kwargs: Any ) -> None: """Unregisters the given container from your Recovery Services vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param identity_name: Name of the protection container to unregister. + :param identity_name: Name of the protection container to unregister. Required. :type identity_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) + :return: None or the result of cls(response) :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[None] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[None] - request = build_delete_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, identity_name=identity_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.delete.metadata['url'], + template_url=self.delete.metadata["url"], headers=_headers, params=_params, ) @@ -125,10 +125,9 @@ def delete( # pylint: disable=inconsistent-return-statements request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [204]: @@ -138,5 +137,4 @@ def delete( # pylint: disable=inconsistent-return-statements if cls: return cls(pipeline_response, None, {}) - delete.metadata = {'url': "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/registeredIdentities/{identityName}"} # type: ignore - + delete.metadata = {"url": "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/registeredIdentities/{identityName}"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_replication_usages_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_replication_usages_operations.py index 13f8cdafbc63..7eda997aef8f 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_replication_usages_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_replication_usages_operations.py @@ -7,10 +7,16 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from urllib.parse import parse_qs, urljoin, urlparse + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpResponse @@ -20,48 +26,44 @@ from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._serialization import Serializer from .._vendor import MixinABC, _convert_request, _format_url_section -T = TypeVar('T') + +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, - resource_group_name: str, - vault_name: str, - **kwargs: Any -) -> HttpRequest: + +def build_list_request(resource_group_name: str, vault_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/replicationUsages") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/replicationUsages", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers - _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - return HttpRequest( - method="GET", - url=_url, - params=_params, - headers=_headers, - **kwargs - ) class ReplicationUsagesOperations: """ @@ -82,46 +84,43 @@ def __init__(self, *args, **kwargs): 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, - resource_group_name: str, - vault_name: str, - **kwargs: Any - ) -> Iterable[_models.ReplicationUsageList]: + def list(self, resource_group_name: str, vault_name: str, **kwargs: Any) -> Iterable["_models.ReplicationUsage"]: """Fetches the replication usages of the vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ReplicationUsageList or the result of - cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.ReplicationUsageList] - :raises: ~azure.core.exceptions.HttpResponseError + :return: An iterator like instance of either ReplicationUsage or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.ReplicationUsage] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.ReplicationUsageList] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.ReplicationUsageList] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata['url'], + template_url=self.list.metadata["url"], headers=_headers, params=_params, ) @@ -129,16 +128,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - vault_name=vault_name, - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -154,10 +148,8 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -167,8 +159,6 @@ def get_next(next_link=None): return pipeline_response + return ItemPaged(get_next, extract_data) - return ItemPaged( - get_next, extract_data - ) - list.metadata = {'url': "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/replicationUsages"} # type: ignore + list.metadata = {"url": "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/replicationUsages"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_usages_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_usages_operations.py index 0b66673c4c10..34467ed12e13 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_usages_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_usages_operations.py @@ -7,10 +7,16 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import Any, Callable, Dict, Iterable, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from urllib.parse import parse_qs, urljoin, urlparse + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpResponse @@ -20,48 +26,46 @@ from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._serialization import Serializer from .._vendor import MixinABC, _convert_request, _format_url_section -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False + def build_list_by_vaults_request( - subscription_id: str, - resource_group_name: str, - vault_name: str, - **kwargs: Any + resource_group_name: str, vault_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/usages") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/usages", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers - _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - return HttpRequest( - method="GET", - url=_url, - params=_params, - headers=_headers, - **kwargs - ) class UsagesOperations: """ @@ -82,45 +86,45 @@ def __init__(self, *args, **kwargs): self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") - @distributed_trace def list_by_vaults( - self, - resource_group_name: str, - vault_name: str, - **kwargs: Any - ) -> Iterable[_models.VaultUsageList]: + self, resource_group_name: str, vault_name: str, **kwargs: Any + ) -> Iterable["_models.VaultUsage"]: """Fetches the usages of the vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VaultUsageList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.VaultUsageList] - :raises: ~azure.core.exceptions.HttpResponseError + :return: An iterator like instance of either VaultUsage or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.VaultUsage] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultUsageList] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultUsageList] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_by_vaults_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_vaults.metadata['url'], + template_url=self.list_by_vaults.metadata["url"], headers=_headers, params=_params, ) @@ -128,16 +132,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_by_vaults_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - vault_name=vault_name, - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -153,10 +152,8 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -166,8 +163,6 @@ def get_next(next_link=None): return pipeline_response + return ItemPaged(get_next, extract_data) - return ItemPaged( - get_next, extract_data - ) - list_by_vaults.metadata = {'url': "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/usages"} # type: ignore + list_by_vaults.metadata = {"url": "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/usages"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vault_certificates_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vault_certificates_operations.py index 5c53de4d637e..6bd6d4b24fa1 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vault_certificates_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vault_certificates_operations.py @@ -6,11 +6,16 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpResponse from azure.core.rest import HttpRequest @@ -19,58 +24,50 @@ from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._serialization import Serializer from .._vendor import MixinABC, _convert_request, _format_url_section -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False + def build_create_request( - subscription_id: str, - resource_group_name: str, - vault_name: str, - certificate_name: str, - *, - json: Optional[_models.CertificateRequest] = None, - content: Any = None, - **kwargs: Any + resource_group_name: str, vault_name: str, certificate_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/certificates/{certificateName}") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/certificates/{certificateName}", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), - "certificateName": _SERIALIZER.url("certificate_name", certificate_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), + "certificateName": _SERIALIZER.url("certificate_name", certificate_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _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="PUT", - url=_url, - params=_params, - headers=_headers, - json=json, - content=content, - **kwargs - ) + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + class VaultCertificatesOperations: """ @@ -91,55 +88,130 @@ def __init__(self, *args, **kwargs): 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 + @overload def create( self, resource_group_name: str, vault_name: str, certificate_name: str, certificate_request: _models.CertificateRequest, + *, + content_type: str = "application/json", **kwargs: Any ) -> _models.VaultCertificateResponse: """Uploads a certificate for a resource. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param certificate_name: Certificate friendly name. + :param certificate_name: Certificate friendly name. Required. :type certificate_name: str - :param certificate_request: Input parameters for uploading the vault certificate. + :param certificate_request: Input parameters for uploading the vault certificate. Required. :type certificate_request: ~azure.mgmt.recoveryservices.models.CertificateRequest + :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: VaultCertificateResponse, or the result of cls(response) + :return: VaultCertificateResponse or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.VaultCertificateResponse - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create( + self, + resource_group_name: str, + vault_name: str, + certificate_name: str, + certificate_request: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.VaultCertificateResponse: + """Uploads a certificate for a resource. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param certificate_name: Certificate friendly name. Required. + :type certificate_name: str + :param certificate_request: Input parameters for uploading the vault certificate. Required. + :type certificate_request: IO + :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: VaultCertificateResponse or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultCertificateResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create( + self, + resource_group_name: str, + vault_name: str, + certificate_name: str, + certificate_request: Union[_models.CertificateRequest, IO], + **kwargs: Any + ) -> _models.VaultCertificateResponse: + """Uploads a certificate for a resource. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param certificate_name: Certificate friendly name. Required. + :type certificate_name: str + :param certificate_request: Input parameters for uploading the vault certificate. Is either a + model type or a IO type. Required. + :type certificate_request: ~azure.mgmt.recoveryservices.models.CertificateRequest 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 + :return: VaultCertificateResponse or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultCertificateResponse + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultCertificateResponse] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultCertificateResponse] - _json = self._serialize.body(certificate_request, 'CertificateRequest') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(certificate_request, (IO, bytes)): + _content = certificate_request + else: + _json = self._serialize.body(certificate_request, "CertificateRequest") request = build_create_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, certificate_name=certificate_name, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self.create.metadata['url'], + content=_content, + template_url=self.create.metadata["url"], headers=_headers, params=_params, ) @@ -147,22 +219,20 @@ def create( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('VaultCertificateResponse', pipeline_response) + deserialized = self._deserialize("VaultCertificateResponse", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - create.metadata = {'url': "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/certificates/{certificateName}"} # type: ignore - + create.metadata = {"url": "/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/certificates/{certificateName}"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vault_extended_info_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vault_extended_info_operations.py index 5510b44c4466..27cc84a8386e 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vault_extended_info_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vault_extended_info_operations.py @@ -6,11 +6,16 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpResponse from azure.core.rest import HttpRequest @@ -19,138 +24,110 @@ from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models +from .._serialization import Serializer from .._vendor import MixinABC, _convert_request, _format_url_section -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False -def build_get_request( - subscription_id: str, - resource_group_name: str, - vault_name: str, - **kwargs: Any -) -> HttpRequest: + +def build_get_request(resource_group_name: str, vault_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers - _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - return HttpRequest( - method="GET", - url=_url, - params=_params, - headers=_headers, - **kwargs - ) + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) def build_create_or_update_request( - subscription_id: str, - resource_group_name: str, - vault_name: str, - *, - json: Optional[_models.VaultExtendedInfoResource] = None, - content: Any = None, - **kwargs: Any + resource_group_name: str, vault_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _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="PUT", - url=_url, - params=_params, - headers=_headers, - json=json, - content=content, - **kwargs - ) - - -def build_update_request( - subscription_id: str, - resource_group_name: str, - vault_name: str, - *, - json: Optional[_models.VaultExtendedInfoResource] = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_update_request(resource_group_name: str, vault_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _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="PATCH", - url=_url, - params=_params, - headers=_headers, - json=json, - content=content, - **kwargs - ) + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs) + class VaultExtendedInfoOperations: """ @@ -171,44 +148,40 @@ def __init__(self, *args, **kwargs): 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 get( - self, - resource_group_name: str, - vault_name: str, - **kwargs: Any - ) -> _models.VaultExtendedInfoResource: + def get(self, resource_group_name: str, vault_name: str, **kwargs: Any) -> _models.VaultExtendedInfoResource: """Get the vault extended info. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: VaultExtendedInfoResource, or the result of cls(response) + :return: VaultExtendedInfoResource or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultExtendedInfoResource] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultExtendedInfoResource] - request = build_get_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata['url'], + template_url=self.get.metadata["url"], headers=_headers, params=_params, ) @@ -216,71 +189,140 @@ def get( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('VaultExtendedInfoResource', pipeline_response) + deserialized = self._deserialize("VaultExtendedInfoResource", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore - + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore - @distributed_trace + @overload def create_or_update( self, resource_group_name: str, vault_name: str, resource_extended_info_details: _models.VaultExtendedInfoResource, + *, + content_type: str = "application/json", **kwargs: Any ) -> _models.VaultExtendedInfoResource: """Create vault extended info. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param resource_extended_info_details: Details of ResourceExtendedInfo. + :param resource_extended_info_details: Details of ResourceExtendedInfo. Required. :type resource_extended_info_details: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :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: VaultExtendedInfoResource or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update( + self, + resource_group_name: str, + vault_name: str, + resource_extended_info_details: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.VaultExtendedInfoResource: + """Create vault extended info. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param resource_extended_info_details: Details of ResourceExtendedInfo. Required. + :type resource_extended_info_details: IO + :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: VaultExtendedInfoResource, or the result of cls(response) + :return: VaultExtendedInfoResource or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + vault_name: str, + resource_extended_info_details: Union[_models.VaultExtendedInfoResource, IO], + **kwargs: Any + ) -> _models.VaultExtendedInfoResource: + """Create vault extended info. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param resource_extended_info_details: Details of ResourceExtendedInfo. Is either a model type + or a IO type. Required. + :type resource_extended_info_details: + ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource 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 + :return: VaultExtendedInfoResource or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultExtendedInfoResource] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultExtendedInfoResource] - _json = self._serialize.body(resource_extended_info_details, 'VaultExtendedInfoResource') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(resource_extended_info_details, (IO, bytes)): + _content = resource_extended_info_details + else: + _json = self._serialize.body(resource_extended_info_details, "VaultExtendedInfoResource") request = build_create_or_update_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self.create_or_update.metadata['url'], + content=_content, + template_url=self.create_or_update.metadata["url"], headers=_headers, params=_params, ) @@ -288,71 +330,140 @@ def create_or_update( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('VaultExtendedInfoResource', pipeline_response) + deserialized = self._deserialize("VaultExtendedInfoResource", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore + create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore - - @distributed_trace + @overload def update( self, resource_group_name: str, vault_name: str, resource_extended_info_details: _models.VaultExtendedInfoResource, + *, + content_type: str = "application/json", **kwargs: Any ) -> _models.VaultExtendedInfoResource: """Update vault extended info. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param resource_extended_info_details: Details of ResourceExtendedInfo. + :param resource_extended_info_details: Details of ResourceExtendedInfo. Required. :type resource_extended_info_details: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :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: VaultExtendedInfoResource, or the result of cls(response) + :return: VaultExtendedInfoResource or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def update( + self, + resource_group_name: str, + vault_name: str, + resource_extended_info_details: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.VaultExtendedInfoResource: + """Update vault extended info. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param resource_extended_info_details: Details of ResourceExtendedInfo. Required. + :type resource_extended_info_details: IO + :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: VaultExtendedInfoResource or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def update( + self, + resource_group_name: str, + vault_name: str, + resource_extended_info_details: Union[_models.VaultExtendedInfoResource, IO], + **kwargs: Any + ) -> _models.VaultExtendedInfoResource: + """Update vault extended info. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param resource_extended_info_details: Details of ResourceExtendedInfo. Is either a model type + or a IO type. Required. + :type resource_extended_info_details: + ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource 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 + :return: VaultExtendedInfoResource or the result of cls(response) + :rtype: ~azure.mgmt.recoveryservices.models.VaultExtendedInfoResource + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultExtendedInfoResource] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultExtendedInfoResource] - _json = self._serialize.body(resource_extended_info_details, 'VaultExtendedInfoResource') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(resource_extended_info_details, (IO, bytes)): + _content = resource_extended_info_details + else: + _json = self._serialize.body(resource_extended_info_details, "VaultExtendedInfoResource") request = build_update_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self.update.metadata['url'], + content=_content, + template_url=self.update.metadata["url"], headers=_headers, params=_params, ) @@ -360,22 +471,20 @@ def update( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('VaultExtendedInfoResource', pipeline_response) + deserialized = self._deserialize("VaultExtendedInfoResource", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore - + update.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo"} # type: ignore diff --git a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vaults_operations.py b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vaults_operations.py index 7a3c648a5f98..487eaaf79e76 100644 --- a/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vaults_operations.py +++ b/sdk/recoveryservices/azure-mgmt-recoveryservices/azure/mgmt/recoveryservices/operations/_vaults_operations.py @@ -6,11 +6,17 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union, cast - -from msrest import Serializer - -from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload +from urllib.parse import parse_qs, urljoin, urlparse + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpResponse @@ -22,243 +28,191 @@ from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models +from .._serialization import Serializer from .._vendor import MixinABC, _convert_request, _format_url_section -T = TypeVar('T') + +T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False -def build_list_by_subscription_id_request( - subscription_id: str, - **kwargs: Any -) -> HttpRequest: + +def build_list_by_subscription_id_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', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/vaults") path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers - _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - return HttpRequest( - method="GET", - url=_url, - params=_params, - headers=_headers, - **kwargs - ) + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_list_by_resource_group_request( - subscription_id: str, - resource_group_name: str, - **kwargs: Any -) -> HttpRequest: +def build_list_by_resource_group_request(resource_group_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _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( - subscription_id: str, - resource_group_name: str, - vault_name: str, - **kwargs: Any -) -> HttpRequest: + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_get_request(resource_group_name: str, vault_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _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_create_or_update_request_initial( - subscription_id: str, - resource_group_name: str, - vault_name: str, - *, - json: Optional[_models.Vault] = None, - content: Any = None, - **kwargs: Any + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_create_or_update_request( + resource_group_name: str, vault_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _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="PUT", - url=_url, - params=_params, - headers=_headers, - json=json, - content=content, - **kwargs - ) - - -def build_delete_request( - subscription_id: str, - resource_group_name: str, - vault_name: str, - **kwargs: Any -) -> HttpRequest: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_delete_request(resource_group_name: str, vault_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers - _headers['Accept'] = _SERIALIZER.header("accept", accept, 'str') - - return HttpRequest( - method="DELETE", - url=_url, - params=_params, - headers=_headers, - **kwargs - ) - - -def build_update_request_initial( - subscription_id: str, - resource_group_name: str, - vault_name: str, - *, - json: Optional[_models.PatchVault] = None, - content: Any = None, - **kwargs: Any -) -> HttpRequest: + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_update_request(resource_group_name: str, vault_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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', None)) # type: Optional[str] - accept = _headers.pop('Accept', "application/json") + api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-08-01")) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}") # pylint: disable=line-too-long + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}", + ) # pylint: disable=line-too-long path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, 'str'), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, 'str'), - "vaultName": _SERIALIZER.url("vault_name", vault_name, 'str'), + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "vaultName": _SERIALIZER.url("vault_name", vault_name, "str"), } _url = _format_url_section(_url, **path_format_arguments) # Construct parameters - _params['api-version'] = _SERIALIZER.query("api_version", api_version, 'str') + _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="PATCH", - url=_url, - params=_params, - headers=_headers, - json=json, - content=content, - **kwargs - ) + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs) + class VaultsOperations: """ @@ -279,36 +233,36 @@ def __init__(self, *args, **kwargs): self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") - @distributed_trace - def list_by_subscription_id( - self, - **kwargs: Any - ) -> Iterable[_models.VaultList]: + def list_by_subscription_id(self, **kwargs: Any) -> Iterable["_models.Vault"]: """Fetches all the resources of the specified type in the subscription. :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VaultList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.VaultList] - :raises: ~azure.core.exceptions.HttpResponseError + :return: An iterator like instance of either Vault or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultList] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultList] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_by_subscription_id_request( subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_subscription_id.metadata['url'], + template_url=self.list_by_subscription_id.metadata["url"], headers=_headers, params=_params, ) @@ -316,14 +270,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_by_subscription_id_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -339,10 +290,8 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -352,46 +301,44 @@ def get_next(next_link=None): return pipeline_response + return ItemPaged(get_next, extract_data) - return ItemPaged( - get_next, extract_data - ) - list_by_subscription_id.metadata = {'url': "/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/vaults"} # type: ignore + list_by_subscription_id.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/vaults"} # type: ignore @distributed_trace - def list_by_resource_group( - self, - resource_group_name: str, - **kwargs: Any - ) -> Iterable[_models.VaultList]: + def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Iterable["_models.Vault"]: """Retrieve a list of Vaults. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VaultList or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.VaultList] - :raises: ~azure.core.exceptions.HttpResponseError + :return: An iterator like instance of either Vault or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.VaultList] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.VaultList] error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) + def prepare_request(next_link=None): if not next_link: - + request = build_list_by_resource_group_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_resource_group.metadata['url'], + template_url=self.list_by_resource_group.metadata["url"], headers=_headers, params=_params, ) @@ -399,15 +346,11 @@ def prepare_request(next_link=None): request.url = self._client.format_url(request.url) # type: ignore else: - - request = build_list_by_resource_group_request( - subscription_id=self._config.subscription_id, - resource_group_name=resource_group_name, - api_version=api_version, - template_url=next_link, - headers=_headers, - params=_params, - ) + # make call to next link with the client's api-version + _parsed_next_link = urlparse(next_link) + _next_request_params = case_insensitive_dict(parse_qs(_parsed_next_link.query)) + _next_request_params["api-version"] = self._config.api_version + request = HttpRequest("GET", 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" @@ -423,10 +366,8 @@ def extract_data(pipeline_response): def get_next(next_link=None): request = prepare_request(next_link) - pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access - request, - stream=False, - **kwargs + pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access + request, stream=False, **kwargs ) response = pipeline_response.http_response @@ -436,49 +377,44 @@ def get_next(next_link=None): return pipeline_response + return ItemPaged(get_next, extract_data) - return ItemPaged( - get_next, extract_data - ) - list_by_resource_group.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults"} # type: ignore + list_by_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults"} # type: ignore @distributed_trace - def get( - self, - resource_group_name: str, - vault_name: str, - **kwargs: Any - ) -> _models.Vault: + def get(self, resource_group_name: str, vault_name: str, **kwargs: Any) -> _models.Vault: """Get the Vault details. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str :keyword callable cls: A custom type or function that will be passed the direct response - :return: Vault, or the result of cls(response) + :return: Vault or the result of cls(response) :rtype: ~azure.mgmt.recoveryservices.models.Vault - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[_models.Vault] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[_models.Vault] - request = build_get_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata['url'], + template_url=self.get.metadata["url"], headers=_headers, params=_params, ) @@ -486,55 +422,59 @@ def get( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response, error_format=ARMErrorFormat) - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - get.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore - + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore def _create_or_update_initial( - self, - resource_group_name: str, - vault_name: str, - vault: _models.Vault, - **kwargs: Any + self, resource_group_name: str, vault_name: str, vault: Union[_models.Vault, IO], **kwargs: Any ) -> _models.Vault: error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.Vault] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.Vault] - _json = self._serialize.body(vault, 'Vault') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(vault, (IO, bytes)): + _content = vault + else: + _json = self._serialize.body(vault, "Vault") - request = build_create_or_update_request_initial( - subscription_id=self._config.subscription_id, + request = build_create_or_update_request( resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self._create_or_update_initial.metadata['url'], + content=_content, + template_url=self._create_or_update_initial.metadata["url"], headers=_headers, params=_params, ) @@ -542,10 +482,9 @@ def _create_or_update_initial( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200, 201]: @@ -553,36 +492,40 @@ def _create_or_update_initial( raise HttpResponseError(response=response, error_format=ARMErrorFormat) if response.status_code == 200: - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if response.status_code == 201: - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - _create_or_update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore + _create_or_update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore - - @distributed_trace + @overload def begin_create_or_update( self, resource_group_name: str, vault_name: str, vault: _models.Vault, + *, + content_type: str = "application/json", **kwargs: Any ) -> LROPoller[_models.Vault]: """Creates or updates a Recovery Services vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param vault: Recovery Services Vault to be created. + :param vault: Recovery Services Vault to be created. Required. :type vault: ~azure.mgmt.recoveryservices.models.Vault + :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 :keyword str continuation_token: A continuation token to restart a poller from a saved state. :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this @@ -593,20 +536,82 @@ def begin_create_or_update( Retry-After header is present. :return: An instance of LROPoller that returns either Vault or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.recoveryservices.models.Vault] - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + vault_name: str, + vault: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.Vault]: + """Creates or updates a Recovery Services vault. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param vault: Recovery Services Vault to be created. Required. + :type vault: IO + :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 + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either Vault or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_create_or_update( + self, resource_group_name: str, vault_name: str, vault: Union[_models.Vault, IO], **kwargs: Any + ) -> LROPoller[_models.Vault]: + """Creates or updates a Recovery Services vault. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param vault: Recovery Services Vault to be created. Is either a model type or a IO type. + Required. + :type vault: ~azure.mgmt.recoveryservices.models.Vault 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 + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either Vault or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: """ _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', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.Vault] - polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] - lro_delay = kwargs.pop( - 'polling_interval', - self._config.polling_interval - ) - cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.Vault] + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] if cont_token is None: raw_result = self._create_or_update_initial( # type: ignore resource_group_name=resource_group_name, @@ -614,77 +619,72 @@ def begin_create_or_update( vault=vault, api_version=api_version, content_type=content_type, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, headers=_headers, params=_params, **kwargs ) - kwargs.pop('error_map', None) + kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - if polling is True: - polling_method = cast(PollingMethod, ARMPolling( - lro_delay, - - - **kwargs - )) # type: PollingMethod - elif polling is False: polling_method = cast(PollingMethod, NoPolling()) - else: polling_method = polling + polling_method = cast(PollingMethod, ARMPolling(lro_delay, **kwargs)) # type: PollingMethod + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling if cont_token: return LROPoller.from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, - deserialization_callback=get_long_running_output + deserialization_callback=get_long_running_output, ) return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_create_or_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore + begin_create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore @distributed_trace def delete( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - vault_name: str, - **kwargs: Any + self, resource_group_name: str, vault_name: str, **kwargs: Any ) -> None: """Deletes a vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_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) + :return: None or the result of cls(response) :rtype: None - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: """ error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - cls = kwargs.pop('cls', None) # type: ClsType[None] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + cls = kwargs.pop("cls", None) # type: ClsType[None] - request = build_delete_request( - subscription_id=self._config.subscription_id, resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.delete.metadata['url'], + template_url=self.delete.metadata["url"], headers=_headers, params=_params, ) @@ -692,10 +692,9 @@ def delete( # pylint: disable=inconsistent-return-statements request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200]: @@ -705,38 +704,43 @@ def delete( # pylint: disable=inconsistent-return-statements if cls: return cls(pipeline_response, None, {}) - delete.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore - + delete.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore def _update_initial( - self, - resource_group_name: str, - vault_name: str, - vault: _models.PatchVault, - **kwargs: Any + self, resource_group_name: str, vault_name: str, vault: Union[_models.PatchVault, IO], **kwargs: Any ) -> Optional[_models.Vault]: error_map = { - 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } - error_map.update(kwargs.pop('error_map', {}) or {}) + 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 = kwargs.pop('api_version', _params.pop('api-version', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[Optional[_models.Vault]] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[Optional[_models.Vault]] - _json = self._serialize.body(vault, 'PatchVault') + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(vault, (IO, bytes)): + _content = vault + else: + _json = self._serialize.body(vault, "PatchVault") - request = build_update_request_initial( - subscription_id=self._config.subscription_id, + request = build_update_request( resource_group_name=resource_group_name, vault_name=vault_name, + subscription_id=self._config.subscription_id, api_version=api_version, content_type=content_type, json=_json, - template_url=self._update_initial.metadata['url'], + content=_content, + template_url=self._update_initial.metadata["url"], headers=_headers, params=_params, ) @@ -744,10 +748,9 @@ def _update_initial( request.url = self._client.format_url(request.url) # type: ignore pipeline_response = self._client._pipeline.run( # type: ignore # pylint: disable=protected-access - request, - stream=False, - **kwargs + request, stream=False, **kwargs ) + response = pipeline_response.http_response if response.status_code not in [200, 202]: @@ -756,33 +759,72 @@ def _update_initial( deserialized = None if response.status_code == 200: - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - _update_initial.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore - + _update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore - @distributed_trace + @overload def begin_update( self, resource_group_name: str, vault_name: str, vault: _models.PatchVault, + *, + content_type: str = "application/json", **kwargs: Any ) -> LROPoller[_models.Vault]: """Updates the vault. :param resource_group_name: The name of the resource group where the recovery services vault is - present. + present. Required. :type resource_group_name: str - :param vault_name: The name of the recovery services vault. + :param vault_name: The name of the recovery services vault. Required. :type vault_name: str - :param vault: Recovery Services Vault to be created. + :param vault: Recovery Services Vault to be created. Required. :type vault: ~azure.mgmt.recoveryservices.models.PatchVault + :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 + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either Vault or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + resource_group_name: str, + vault_name: str, + vault: IO, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.Vault]: + """Updates the vault. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param vault: Recovery Services Vault to be created. Required. + :type vault: IO + :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 :keyword str continuation_token: A continuation token to restart a poller from a saved state. :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this @@ -793,20 +835,47 @@ def begin_update( Retry-After header is present. :return: An instance of LROPoller that returns either Vault or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.recoveryservices.models.Vault] - :raises: ~azure.core.exceptions.HttpResponseError + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_update( + self, resource_group_name: str, vault_name: str, vault: Union[_models.PatchVault, IO], **kwargs: Any + ) -> LROPoller[_models.Vault]: + """Updates the vault. + + :param resource_group_name: The name of the resource group where the recovery services vault is + present. Required. + :type resource_group_name: str + :param vault_name: The name of the recovery services vault. Required. + :type vault_name: str + :param vault: Recovery Services Vault to be created. Is either a model type or a IO type. + Required. + :type vault: ~azure.mgmt.recoveryservices.models.PatchVault 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 + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this + operation to not poll, or pass in your own initialized polling object for a personal polling + strategy. + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no + Retry-After header is present. + :return: An instance of LROPoller that returns either Vault or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.recoveryservices.models.Vault] + :raises ~azure.core.exceptions.HttpResponseError: """ _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', "2022-04-01")) # type: str - content_type = kwargs.pop('content_type', _headers.pop('Content-Type', "application/json")) # type: Optional[str] - cls = kwargs.pop('cls', None) # type: ClsType[_models.Vault] - polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] - lro_delay = kwargs.pop( - 'polling_interval', - self._config.polling_interval - ) - cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + api_version = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) # type: str + content_type = kwargs.pop("content_type", _headers.pop("Content-Type", None)) # type: Optional[str] + cls = kwargs.pop("cls", None) # type: ClsType[_models.Vault] + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] if cont_token is None: raw_result = self._update_initial( # type: ignore resource_group_name=resource_group_name, @@ -814,36 +883,32 @@ def begin_update( vault=vault, api_version=api_version, content_type=content_type, - cls=lambda x,y,z: x, + cls=lambda x, y, z: x, headers=_headers, params=_params, **kwargs ) - kwargs.pop('error_map', None) + kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize('Vault', pipeline_response) + deserialized = self._deserialize("Vault", pipeline_response) if cls: return cls(pipeline_response, deserialized, {}) return deserialized - if polling is True: - polling_method = cast(PollingMethod, ARMPolling( - lro_delay, - - - **kwargs - )) # type: PollingMethod - elif polling is False: polling_method = cast(PollingMethod, NoPolling()) - else: polling_method = polling + polling_method = cast(PollingMethod, ARMPolling(lro_delay, **kwargs)) # type: PollingMethod + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling if cont_token: return LROPoller.from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, - deserialization_callback=get_long_running_output + deserialization_callback=get_long_running_output, ) return LROPoller(self._client, raw_result, get_long_running_output, polling_method) - begin_update.metadata = {'url': "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore + begin_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}"} # type: ignore