diff --git a/azure-keyvault/HISTORY.rst b/azure-keyvault/HISTORY.rst index 7e05f3e7ce42..95c7587c4258 100644 --- a/azure-keyvault/HISTORY.rst +++ b/azure-keyvault/HISTORY.rst @@ -2,6 +2,27 @@ Release History =============== +1.0.0b1 (2018-04-10) +++++++++++++++++++++ + +* Upgraded to autorest 3.0 generated code +* Breaking change in models requiring all init args be specified by keyword + + +1.0.0a2 (2018-03-28) +++++++++++++++++++++ + +* Upgrading to API version 7.0-preview +* Adding elliptic curve key support +* Adding managed storage account key backup, restore and soft delete support +* Breaking update to managed storage account SasDefinition creation +* Adding certificate backup and restore support +* Adding certificate transparency + +1.0.0a1 (2018-01-25) +++++++++++++++++++++ +* Added message encryption support for message encryption enabled vaults + 0.3.7 (2017-09-22) ++++++++++++++++++ diff --git a/azure-keyvault/README.rst b/azure-keyvault/README.rst index 63151a88017a..6b7b5ab5bc08 100644 --- a/azure-keyvault/README.rst +++ b/azure-keyvault/README.rst @@ -3,13 +3,7 @@ Microsoft Azure SDK for Python This is the Microsoft Azure Key Vault Client Library. -Azure Resource Manager (ARM) is the next generation of management APIs that -replace the old Azure Service Management (ASM). - -This package has been tested with Python 2.7, 3.3, 3.4, 3.5 and 3.6. - -For the older Azure Service Management (ASM) libraries, see -`azure-servicemanagement-legacy `__ library. +This package has been tested with Python 2.7, 3.4, 3.5 and 3.6. For a more complete set of Azure libraries, see the `azure `__ bundle package. @@ -37,8 +31,8 @@ Usage ===== For code examples, see `Key Vault -`__ -on readthedocs.org. +`__ +on docs.microsoft.com. Provide Feedback diff --git a/azure-keyvault/azure/keyvault/__init__.py b/azure-keyvault/azure/keyvault/__init__.py index 04c2e04ae9ee..1b62621a32b1 100644 --- a/azure-keyvault/azure/keyvault/__init__.py +++ b/azure-keyvault/azure/keyvault/__init__.py @@ -11,6 +11,7 @@ from .custom import http_bearer_challenge_cache as HttpBearerChallengeCache from .custom.http_bearer_challenge import HttpBearerChallenge +from .custom.http_challenge import HttpChallenge from .custom.key_vault_client import CustomKeyVaultClient as KeyVaultClient from .custom.key_vault_id import (KeyVaultId, KeyId, @@ -20,7 +21,8 @@ CertificateOperationId, StorageAccountId, StorageSasDefinitionId) -from .custom.key_vault_authentication import KeyVaultAuthentication, KeyVaultAuthBase +from .custom.key_vault_authentication import KeyVaultAuthentication, KeyVaultAuthBase, AccessToken +from .custom.http_message_security import generate_pop_key from .version import VERSION __all__ = ['KeyVaultClient', @@ -34,8 +36,11 @@ 'StorageSasDefinitionId', 'HttpBearerChallengeCache', 'HttpBearerChallenge', + 'HttpChallenge', 'KeyVaultAuthentication', - 'KeyVaultAuthBase'] + 'KeyVaultAuthBase', + 'generate_pop_key', + 'AccessToken'] __version__ = VERSION diff --git a/azure-keyvault/azure/keyvault/custom/http_challenge.py b/azure-keyvault/azure/keyvault/custom/http_challenge.py new file mode 100644 index 000000000000..e6d75f15f158 --- /dev/null +++ b/azure-keyvault/azure/keyvault/custom/http_challenge.py @@ -0,0 +1,115 @@ +#--------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +#--------------------------------------------------------------------------------------------- + +try: + import urllib.parse as parse +except ImportError: + import urlparse as parse # pylint: disable=import-error + + +class HttpChallenge(object): + + def __init__(self, request_uri, challenge, response_headers=None): + """ Parses an HTTP WWW-Authentication Bearer challenge from a server. """ + self.source_authority = self._validate_request_uri(request_uri) + self.source_uri = request_uri + self._parameters = {} + + # get the scheme of the challenge and remove from the challenge string + trimmed_challenge = self._validate_challenge(challenge) + split_challenge = trimmed_challenge.split(' ', 1) + self.scheme = split_challenge[0] + trimmed_challenge = split_challenge[1] + + # split trimmed challenge into comma-separated name=value pairs. Values are expected + # to be surrounded by quotes which are stripped here. + for item in trimmed_challenge.split(','): + # process name=value pairs + comps = item.split('=') + if len(comps) == 2: + key = comps[0].strip(' "') + value = comps[1].strip(' "') + if key: + self._parameters[key] = value + + # minimum set of parameters + if not self._parameters: + raise ValueError('Invalid challenge parameters') + + # must specify authorization or authorization_uri + if 'authorization' not in self._parameters and 'authorization_uri' not in self._parameters: + raise ValueError('Invalid challenge parameters') + + # if the response headers were supplied + if response_headers: + # get the message signing key and message key encryption key from the headers + self.server_signature_key = response_headers.get('x-ms-message-signing-key', None) + self.server_encryption_key = response_headers.get('x-ms-message-encryption-key', None) + + def is_bearer_challenge(self): + """ Tests whether the HttpChallenge a Bearer challenge. + rtype: bool """ + if not self.scheme: + return False + + return self.scheme.lower() == 'bearer' + + def is_pop_challenge(self): + """ Tests whether the HttpChallenge is a proof of possession challenge. + rtype: bool """ + if not self.scheme: + return False + + return self.scheme.lower() == 'pop' + + def get_value(self, key): + return self._parameters.get(key) + + def get_authorization_server(self): + """ Returns the URI for the authorization server if present, otherwise empty string. """ + value = '' + for key in ['authorization_uri', 'authorization']: + value = self.get_value(key) or '' + if value: + break + return value + + def get_resource(self): + """ Returns the resource if present, otherwise empty string. """ + return self.get_value('resource') or '' + + def get_scope(self): + """ Returns the scope if present, otherwise empty string. """ + return self.get_value('scope') or '' + + def supports_pop(self): + """ Returns True if challenge supports pop token auth else False """ + return self._parameters.get('supportspop', '').lower() == 'true' + + def supports_message_protection(self): + """ Returns True if challenge vault supports message protection """ + return self.supports_pop() and self.server_encryption_key and self.server_signature_key + + def _validate_challenge(self, challenge): + """ Verifies that the challenge is a valid auth challenge and returns the key=value pairs. """ + if not challenge: + raise ValueError('Challenge cannot be empty') + + return challenge.strip() + + # pylint: disable=no-self-use + def _validate_request_uri(self, uri): + """ Extracts the host authority from the given URI. """ + if not uri: + raise ValueError('request_uri cannot be empty') + + uri = parse.urlparse(uri) + if not uri.netloc: + raise ValueError('request_uri must be an absolute URI') + + if uri.scheme.lower() not in ['http', 'https']: + raise ValueError('request_uri must be HTTP or HTTPS') + + return uri.netloc diff --git a/azure-keyvault/azure/keyvault/custom/http_message_security.py b/azure-keyvault/azure/keyvault/custom/http_message_security.py new file mode 100644 index 000000000000..b2f318a25b3b --- /dev/null +++ b/azure-keyvault/azure/keyvault/custom/http_message_security.py @@ -0,0 +1,192 @@ +#--------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +#--------------------------------------------------------------------------------------------- + +import json +import time +import os +from .internal import _a128cbc_hs256_encrypt, _a128cbc_hs256_decrypt, _JwsHeader, _JwsObject, \ + _JweHeader, _JweObject, _str_to_b64url, _bstr_to_b64url, _b64_to_bstr, _RsaKey + + +def generate_pop_key(): + """ + Generates a key which can be used for Proof Of Possession token authentication. + :return: + """ + return _RsaKey.generate() + + +class HttpMessageSecurity(object): + """ + Used for message authorization, encryption and decrtyption. + + This class is intended for internal use only. Details are subject to non-compatible changes, consumers of the + azure-keyvault module should not take dependencies on this class or its current implementation. + """ + def __init__(self, client_security_token=None, + client_signature_key=None, + client_encryption_key=None, + server_signature_key=None, + server_encryption_key=None): + self.client_security_token = client_security_token + self.client_signature_key = client_signature_key + self.client_encryption_key = client_encryption_key + self.server_signature_key = server_signature_key + self.server_encryption_key = server_encryption_key + + def protect_request(self, request): + """ + Adds authorization header, and encrypts and signs the request if supported on the specific request. + :param request: unprotected request to apply security protocol + :return: protected request with appropriate security protocal applied + """ + # Setup the auth header on the request + # Due to limitations in the service we hard code the auth scheme to 'Bearer' as the service will fail with any + # other scheme or a different casing such as 'bearer', once this is fixed the following line should be replaced: + # request.headers['Authorization'] = '{} {}'.format(auth[0], auth[1]) + request.headers['Authorization'] = '{} {}'.format('Bearer', self.client_security_token) + + # if the current message security doesn't support message protection, or the body is empty + # skip protection and return the original request + if not self.supports_protection() or len(request.body) == 0: + return request + + plain_text = request.body + + # if the client encryption key is specified add it to the body of the request + if self.client_encryption_key: + # note that this assumes that the body is already json and not simple string content + # this is true for all requests which currently support message encryption, but might + # need to be revisited when the types of + body_dict = json.loads(plain_text) + body_dict['rek'] = {'jwk': self.client_encryption_key.to_jwk().serialize()} + plain_text = json.dumps(body_dict).encode(encoding='utf8') + + # build the header for the jws body + jws_header = _JwsHeader() + jws_header.alg = 'RS256' + jws_header.kid = self.client_signature_key.kid + jws_header.at = self.client_security_token + jws_header.ts = int(time.time()) + jws_header.typ = 'PoP' + + jws = _JwsObject() + + jws.protected = jws_header.to_compact_header() + jws.payload = self._protect_payload(plain_text) + data = (jws.protected + '.' + jws.payload).encode('ascii') + jws.signature = _bstr_to_b64url(self.client_signature_key.sign(data)) + + request.headers['Content-Type'] = 'application/jose+json' + + request.prepare_body(data=jws.to_flattened_jws(), files=None) + + return request + + def unprotect_response(self, response, **kwargs): + """ + Removes protection from the specified response + :param request: response from the key vault service + :return: unprotected response with any security protocal encryption removed + """ + body = response.content + # if the current message security doesn't support message protection, the body is empty, or the request failed + # skip protection and return the original response + if not self.supports_protection() or len(response.content) == 0 or response.status_code != 200: + return response + + # ensure the content-type is application/jose+json + if 'application/jose+json' not in response.headers.get('content-type', '').lower(): + raise ValueError('Invalid protected response') + + # deserialize the response into a JwsObject, using response.text so requests handles the encoding + jws = _JwsObject().deserialize(body) + + # deserialize the protected header + jws_header = _JwsHeader.from_compact_header(jws.protected) + + # ensure the jws signature kid matches the key from original challenge + # and the alg matches expected signature alg + if jws_header.kid != self.server_signature_key.kid \ + or jws_header.alg != 'RS256': + raise ValueError('Invalid protected response') + + # validate the signature of the jws + data = (jws.protected + '.' + jws.payload).encode('ascii') + # verify will raise an InvalidSignature exception if the signature doesn't match + self.server_signature_key.verify(signature=_b64_to_bstr(jws.signature), data=data) + + # get the unprotected response body + decrypted = self._unprotect_payload(jws.payload) + + response._content = decrypted + response.headers['Content-Type'] = 'application/json' + + return response + + def supports_protection(self): + """ + Determines if the the current HttpMessageSecurity object supports the message protection protocol. + :return: True if the current object supports protection, otherwise False + """ + return self.client_signature_key \ + and self.client_encryption_key \ + and self.server_signature_key \ + and self.server_encryption_key + + def _protect_payload(self, plaintext): + # create the jwe header for the payload + kek = self.server_encryption_key + jwe_header = _JweHeader() + jwe_header.alg = 'RSA-OAEP' + jwe_header.kid = kek.kid + jwe_header.enc = 'A128CBC-HS256' + + # create the jwe object + jwe = _JweObject() + jwe.protected = jwe_header.to_compact_header() + + # generate the content encryption key and iv + cek = os.urandom(32) + iv = os.urandom(16) + jwe.iv = _bstr_to_b64url(iv) + # wrap the cek using the server encryption key + wrapped = _bstr_to_b64url(kek.encrypt(cek)) + jwe.encrypted_key = wrapped + + # encrypt the plaintext body with the cek using the protected header + # as the authdata to get the ciphertext and the authtag + ciphertext, tag = _a128cbc_hs256_encrypt(cek, iv, plaintext, jwe.protected.encode('ascii')) + + jwe.ciphertext = _bstr_to_b64url(ciphertext) + jwe.tag = _bstr_to_b64url(tag) + + # flatten and encode the jwe for the final jws payload content + flat = jwe.to_flattened_jwe() + return _str_to_b64url(flat) + + def _unprotect_payload(self, payload): + # deserialize the payload + jwe = _JweObject().deserialize_b64(payload) + + # deserialize the payload header + jwe_header = _JweHeader.from_compact_header(jwe.protected) + + # ensure the kid matches the specified client encryption key + # and the key wrap alg and the data encryption enc match the expected + if self.client_encryption_key.kid != jwe_header.kid \ + or jwe_header.alg != 'RSA-OAEP' \ + or jwe_header.enc != 'A128CBC-HS256': + raise ValueError('Invalid protected response') + + # unwrap the cek using the client encryption key + cek = self.client_encryption_key.decrypt(_b64_to_bstr(jwe.encrypted_key)) + + # decrypt the cipher text to get the unprotected body content + return _a128cbc_hs256_decrypt(cek, + _b64_to_bstr(jwe.iv), + _b64_to_bstr(jwe.ciphertext), + jwe.protected.encode('ascii'), + _b64_to_bstr(jwe.tag)) \ No newline at end of file diff --git a/azure-keyvault/azure/keyvault/custom/internal.py b/azure-keyvault/azure/keyvault/custom/internal.py new file mode 100644 index 000000000000..f3992e8bde57 --- /dev/null +++ b/azure-keyvault/azure/keyvault/custom/internal.py @@ -0,0 +1,410 @@ +#--------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +#--------------------------------------------------------------------------------------------- + +import json +import uuid +import codecs +from base64 import b64encode, b64decode +import cryptography +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateNumbers, RSAPublicNumbers, \ + generate_private_key, rsa_crt_dmp1, rsa_crt_dmq1, rsa_crt_iqmp, RSAPrivateKey, RSAPublicKey +from cryptography.hazmat.primitives.asymmetric import padding as asym_padding +from cryptography.hazmat.primitives import hashes, constant_time, padding, hmac + +from ..models import JsonWebKey + +def _a128cbc_hs256_encrypt(key, iv, plaintext, authdata): + if not key or not len(key) >= 32: + raise ValueError('key must be at least 256 bits for algorithm "A128CBC-HS256"') + if not iv or len(iv) != 16: + raise ValueError('iv must be 128 bits for algorithm "A128CBC-HS256"') + if not plaintext: + raise ValueError('plaintext must be specified') + if not authdata: + raise ValueError('authdata must be specified') + + # get the hmac key and the aes key from the specified key + hmac_key = key[:16] + aes_key = key[16:32] + + # calculate the length of authdata and store as bytes + auth_data_length = _int_to_bigendian_8_bytes(len(authdata) * 8) + + # pad the plaintext with pkcs7 + padder = padding.PKCS7(128).padder() + plaintext = padder.update(plaintext) + padder.finalize() + + # create the cipher and encrypt the plaintext + cipher = Cipher(algorithms.AES(aes_key), modes.CBC(iv), backend=default_backend()) + encryptor = cipher.encryptor() + ciphertext = encryptor.update(plaintext) + encryptor.finalize() + + # get the data to hash with HMAC, hash the data and take the first 16 bytes + hashdata = authdata + iv + ciphertext + auth_data_length + hmac_hash = hmac.HMAC(hmac_key, hashes.SHA256(), backend=default_backend()) + hmac_hash.update(hashdata) + tag = hmac_hash.finalize()[:16] + + return ciphertext, tag + + +def _a128cbc_hs256_decrypt(key, iv, ciphertext, authdata, authtag): + if not key or not len(key) >= 32: + raise ValueError('key must be at least 256 bits for algorithm "A128CBC-HS256"') + if not iv or len(iv) != 16: + raise ValueError('iv must be 128 bits for algorithm "A128CBC-HS256"') + if not ciphertext: + raise ValueError('ciphertext must be specified') + if not authdata: + raise ValueError('authdata must be specified') + if not authtag or len(authtag) != 16: + raise ValueError('authtag must be be 128 bits for algorithm "A128CBC-HS256"') + + hmac_key = key[:16] + aes_key = key[16:32] + auth_data_length = _int_to_bigendian_8_bytes(len(authdata) * 8) + + # ensure the authtag is the expected length for SHA256 hash + if not len(authtag) == 16: + raise ValueError('invalid tag') + + hashdata = authdata + iv + ciphertext + auth_data_length + hmac_hash = hmac.HMAC(hmac_key, hashes.SHA256(), backend=default_backend()) + hmac_hash.update(hashdata) + tag = hmac_hash.finalize()[:16] + + if not constant_time.bytes_eq(tag, authtag): + raise ValueError('"ciphertext" is not authentic') + + cipher = Cipher(algorithms.AES(aes_key), modes.CBC(iv), backend=default_backend()) + decryptor = cipher.decryptor() + plaintext = decryptor.update(ciphertext) + decryptor.finalize() + + # unpad the decrypted plaintext + padder = padding.PKCS7(128).unpadder() + plaintext = padder.update(plaintext) + padder.finalize() + + return plaintext + + +def _bytes_to_int(b): + if not b or not isinstance(b, bytes): + raise ValueError('b must be non-empty byte string') + + return int(codecs.encode(b, 'hex'), 16) + + +def _int_to_bytes(i): + h = hex(i) + if len(h) > 1 and h[0:2] == '0x': + h = h[2:] + + # need to strip L in python 2.x + h = h.strip('L') + + if len(h) % 2: + h = '0' + h + return codecs.decode(h, 'hex') + + +def _bstr_to_b64url(bstr, **kwargs): + """Serialize bytes into base-64 string. + :param str: Object to be serialized. + :rtype: str + """ + encoded = b64encode(bstr).decode() + return encoded.strip('=').replace('+', '-').replace('/', '_') + + +def _str_to_b64url(s, **kwargs): + """Serialize str into base-64 string. + :param str: Object to be serialized. + :rtype: str + """ + return _bstr_to_b64url(s.encode(encoding='utf8')) + + +def _b64_to_bstr(b64str): + """Deserialize base64 encoded string into string. + :param str b64str: response string to be deserialized. + :rtype: bytearray + :raises: TypeError if string format invalid. + """ + padding = '=' * (3 - (len(b64str) + 3) % 4) + b64str = b64str + padding + encoded = b64str.replace('-', '+').replace('_', '/') + return b64decode(encoded) + + +def _b64_to_str(b64str): + """Deserialize base64 encoded string into string. + :param str b64str: response string to be deserialized. + :rtype: str + :raises: TypeError if string format invalid. + """ + return _b64_to_bstr(b64str).decode('utf8') + + +def _int_to_bigendian_8_bytes(i): + b = _int_to_bytes(i) + + if len(b) > 8: + raise ValueError('the specified integer is to large to be represented by 8 bytes') + + if len(b) < 8: + b = (b'\0' * (8 - len(b))) + b + + return b + + +class _JoseObject(object): + + def deserialize(self, s): + d = json.loads(s) + self.__dict__ = d + return self + + def deserialize_b64(self, s): + self.deserialize(_b64_to_str(s)) + return self + + def serialize(self): + return json.dumps(self.__dict__) + + def serialize_b64url(self): + return _str_to_b64url(self.serialize()) + + +class _JoseHeader(_JoseObject): + + def to_compact_header(self): + return _str_to_b64url(json.dumps(self.__dict__)) + + +class _JweHeader(_JoseHeader): + def __init__(self, alg=None, kid=None, enc=None): + self.alg = alg + self.kid = kid + self.enc = enc + + @staticmethod + def from_compact_header(compact): + header = _JweHeader() + header.__dict__ = json.loads(_b64_to_str(compact)) + return header + + +class _JweObject(_JoseObject): + def __init__(self): + self.protected = None + self.encrypted_key = None + self.iv = None + self.ciphertext = None + self.tag = None + + def to_flattened_jwe(self): + if not (self.protected, self.encrypted_key, self.iv, self.ciphertext, self.tag): + raise ValueError('JWE is not complete.') + + return json.dumps(self.__dict__) + + +class _JwsHeader(_JoseHeader): + def __init__(self): + self.alg = None + self.kid = None + self.at = None + self.ts = None + self.p = None + self.typ = None + + @staticmethod + def from_compact_header(compact): + header = _JwsHeader() + header.__dict__ = json.loads(_b64_to_str(compact)) + return header + + +class _JwsObject(_JoseObject): + def __init__(self): + self.protected = None + self.payload = None + self.signature = None + + def to_flattened_jws(self): + if not (self.protected, self.payload, self.signature): + raise ValueError('JWS is not complete.') + + return json.dumps(self.__dict__) + + + +def _default_encryption_padding(): + return asym_padding.OAEP(mgf=asym_padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), label=None) + + +def _default_signature_padding(): + return asym_padding.PKCS1v15() + + +def _default_signature_algorithm(): + return hashes.SHA256() + + +class _RsaKey(object): + PUBLIC_KEY_DEFAULT_OPS = ['encrypt', 'wrapKey', 'verify'] + PRIVATE_KEY_DEFAULT_OPS = ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey', 'verify', 'sign'] + + def __init__(self): + self.kid = None + self.kty = None + self.key_ops = None + self._rsa_impl = None + + @property + def n(self): + return _int_to_bytes(self._public_key_material().n) + + @property + def e(self): + return _int_to_bytes(self._public_key_material().e) + + @property + def q(self): + return _int_to_bytes(self._private_key_material().q) if self.is_private_key() else None + + @property + def p(self): + return _int_to_bytes(self._private_key_material().p) if self.is_private_key() else None + + @property + def d(self): + return _int_to_bytes(self._private_key_material().d) if self.is_private_key() else None + + @property + def dq(self): + return _int_to_bytes(self._private_key_material().dmq1) if self.is_private_key() else None + + @property + def dp(self): + return _int_to_bytes(self._private_key_material().dmp1) if self.is_private_key() else None + + @property + def qi(self): + return _int_to_bytes(self._private_key_material().iqmp) if self.is_private_key() else None + + @property + def private_key(self): + return self._rsa_impl if self.is_private_key() else None + + @property + def public_key(self): + return self._rsa_impl.public_key() if self.is_private_key() else self._rsa_impl + + @staticmethod + def generate(kid=None, kty='RSA', size=2048, e=65537): + key = _RsaKey() + key.kid = kid or str(uuid.uuid4()) + key.kty = kty + key.key_ops = _RsaKey.PRIVATE_KEY_DEFAULT_OPS + key._rsa_impl = generate_private_key(public_exponent=e, + key_size=size, + backend=cryptography.hazmat.backends.default_backend()) + return key + + @staticmethod + def from_jwk_str(s): + jwk_dict = json.loads(s) + jwk = JsonWebKey.from_dict(jwk_dict) + return _RsaKey.from_jwk(jwk) + + @staticmethod + def from_jwk(jwk): + if not isinstance(jwk, JsonWebKey): + raise TypeError('The specified jwk must be a JsonWebKey') + + if jwk.kty != 'RSA' and jwk.kty != 'RSA-HSM': + raise ValueError('The specified jwk must have a key type of "RSA" or "RSA-HSM"') + + if not jwk.n or not jwk.e: + raise ValueError('Invalid RSA jwk, both n and e must be have values') + + rsa_key = _RsaKey() + rsa_key.kid = jwk.kid + rsa_key.kty = jwk.kty + rsa_key.key_ops = jwk.key_ops + + pub = RSAPublicNumbers(n=_bytes_to_int(jwk.n), e=_bytes_to_int(jwk.e)) + + # if the private key values are specified construct a private key + # only the secret primes and private exponent are needed as other fields can be calculated + if jwk.p and jwk.q and jwk.d: + # convert the values of p, q, and d from bytes to int + p = _bytes_to_int(jwk.p) + q = _bytes_to_int(jwk.q) + d = _bytes_to_int(jwk.d) + + # convert or compute the remaining private key numbers + dmp1 = _bytes_to_int(jwk.dp) if jwk.dp else rsa_crt_dmp1(private_exponent=d, p=p) + dmq1 = _bytes_to_int(jwk.dq) if jwk.dq else rsa_crt_dmq1(private_exponent=d, q=q) + iqmp = _bytes_to_int(jwk.qi) if jwk.qi else rsa_crt_iqmp(p=p, q=q) + + # create the private key from the jwk key values + priv = RSAPrivateNumbers(p=p, q=q, d=d, dmp1=dmp1, dmq1=dmq1, iqmp=iqmp, public_numbers=pub) + key_impl = priv.private_key(cryptography.hazmat.backends.default_backend()) + + # if the necessary private key values are not specified create the public key + else: + key_impl = pub.public_key(cryptography.hazmat.backends.default_backend()) + + rsa_key._rsa_impl = key_impl + + return rsa_key + + def to_jwk(self, include_private=False): + jwk = JsonWebKey(kid=self.kid, + kty=self.kty, + key_ops=self.key_ops if include_private else _RsaKey.PUBLIC_KEY_DEFAULT_OPS, + n=self.n, + e=self.e) + + if include_private: + jwk.q = self.q + jwk.p = self.p + jwk.d = self.d + jwk.dq = self.dq + jwk.dp = self.dp + jwk.qi = self.qi + + return jwk + + def encrypt(self, plaintext, padding=_default_encryption_padding()): + return self.public_key.encrypt(plaintext, padding) + + def decrypt(self, ciphertext, padding=_default_encryption_padding()): + if not self.is_private_key(): + raise NotImplementedError('The current RsaKey does not support decrypt') + + return self.private_key.decrypt(ciphertext, padding) + + def sign(self, data, padding=_default_signature_padding(), algorithm=_default_signature_algorithm()): + if not self.is_private_key(): + raise NotImplementedError('The current RsaKey does not support sign') + + return self.private_key.sign(data, padding, algorithm) + + def verify(self, signature, data, padding=_default_signature_padding(), algorithm=_default_signature_algorithm()): + return self.public_key.verify(signature, data, padding, algorithm) + + def is_private_key(self): + return isinstance(self._rsa_impl, RSAPrivateKey) + + def _public_key_material(self): + return self.public_key.public_numbers() + + def _private_key_material(self): + return self.private_key.private_numbers() if self.private_key else None diff --git a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py index faf7b16e052e..3dd29ab89e3c 100644 --- a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py +++ b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py @@ -5,11 +5,30 @@ import threading import requests +import inspect +from collections import namedtuple from requests.auth import AuthBase from requests.cookies import extract_cookies_to_jar -from azure.keyvault import HttpBearerChallenge -from azure.keyvault import HttpBearerChallengeCache as ChallengeCache +from .http_challenge import HttpChallenge +from . import http_bearer_challenge_cache as ChallengeCache from msrest.authentication import OAuthTokenAuthentication +from .http_message_security import HttpMessageSecurity +from .internal import _RsaKey + + +AccessToken = namedtuple('AccessToken', ['scheme', 'token', 'key']) +AccessToken.__new__.__defaults__ = ('Bearer', None, None) + +_message_protection_supported_methods = ['sign', 'verify', 'encrypt', 'decrypt', 'wrapkey', 'unwrapkey'] + + +def _message_protection_supported(challenge, request): + # right now only specific key operations are supported so return true only + # if the vault supports message protection, the request is to the keys collection + # and the requested operation supports it + return challenge.supports_message_protection() \ + and '/keys/' in request.url \ + and request.url.split('?')[0].strip('/').split('/')[-1].lower() in _message_protection_supported_methods class KeyVaultAuthBase(AuthBase): @@ -22,15 +41,25 @@ def __init__(self, authorization_callback): Creates a new KeyVaultAuthBase instance used for handling authentication challenges, by hooking into the request AuthBase extension model. :param authorization_callback: A callback used to provide authentication credentials to the key vault data service. - This callback should take three str arguments: authorization uri, resource, and scope, and return - a tuple of (token type, access token). + This callback should take four str arguments: authorization uri, resource, scope, and scheme, and return + an AccessToken + return AccessToken(scheme=token['token_type'], token=token['access_token']) + Note: for backward compatibility a tuple of the scheme and token can also be returned. return token['token_type'], token['access_token'] """ - self._callback = authorization_callback + self._user_callback = authorization_callback + self._callback = self._auth_callback_compat self._token = None self._thread_local = threading.local() self._thread_local.pos = None self._thread_local.auth_attempted = False + self._thread_local.orig_body = None + + # for backwards compatibility we need to support callbacks which don't accept the scheme + def _auth_callback_compat(self, server, resource, scope, scheme): + return self._user_callback(server, resource, scope) \ + if len(inspect.getargspec(self._user_callback).args) == 3 \ + else self._user_callback(server, resource, scope, scheme) def __call__(self, request): """ @@ -43,28 +72,30 @@ def __call__(self, request): if self._callback: challenge = ChallengeCache.get_challenge_for_url(request.url) if challenge: - # if challenge cached, use the authorization_callback to retrieve token and update the request - self.set_authorization_header(request, challenge) + # if challenge cached get the message security + security = self._get_message_security(request, challenge) + # protect the request + security.protect_request(request) + # register a response hook to unprotect the response + request.register_hook('response', security.unprotect_response) else: - # if the challenge is not cached we will let the request proceed without the auth header so we - # get back the proper challenge in response. We register a callback to handle the response 401 response. - try: - self._thread_local.pos = request.body.tell() - except AttributeError: - self._thread_local.pos = None - + # if the challenge is not cached we will strip the body and proceed without the auth header so we + # get back the auth challenge for the request + self._thread_local.orig_body = request.body + request.body = '' + request.headers['Content-Length'] = 0 + request.register_hook('response', self._handle_401) + request.register_hook('response', self._handle_redirect) self._thread_local.auth_attempted = False - request.register_hook('response', self.handle_401) - request.register_hook('response', self.handle_redirect) return request - def handle_redirect(self, r, **kwargs): + def _handle_redirect(self, r, **kwargs): """Reset auth_attempted on redirects.""" if r.is_redirect: self._thread_local.auth_attempted = False - def handle_401(self, response, **kwargs): + def _handle_401(self, response, **kwargs): """ Takes the response authenticates and resends if neccissary :return: The final response to the authenticated request @@ -75,28 +106,26 @@ def handle_401(self, response, **kwargs): self._thread_local.auth_attempted = False return response - auth_header = response.headers.get('www-authenticate', '') - - # if the response auth header is not a bearer challenge do not auth and return response - if not HttpBearerChallenge.is_bearer_challenge(auth_header): - self._thread_local.auth_attempted = False - return response - # If we've already attempted to auth for this request once, do not auth and return response if self._thread_local.auth_attempted: self._thread_local.auth_attempted = False return response + auth_header = response.headers.get('www-authenticate', '') + # Otherwise authenticate and retry the request self._thread_local.auth_attempted = True - if self._thread_local.pos is not None: - # Rewind the file position indicator of the body to where - # it was to resend the request. - response.request.body.seek(self._thread_local.pos) + # parse the challenge + challenge = HttpChallenge(response.request.url, auth_header, response.headers) + + # bearer and PoP are the only authentication schemes supported at this time + # if the response auth header is not a bearer challenge or pop challange do not auth and return response + if not (challenge.is_bearer_challenge() or challenge.is_pop_challenge()): + self._thread_local.auth_attempted = False + return response # add the challenge to the cache - challenge = HttpBearerChallenge(response.request.url, auth_header) ChallengeCache.set_challenge_for_url(response.request.url, challenge) # Consume content and release the original connection @@ -106,28 +135,51 @@ def handle_401(self, response, **kwargs): # copy the request to resend prep = response.request.copy() + + if self._thread_local.orig_body is not None: + # replace the body with the saved body + prep.prepare_body(data=self._thread_local.orig_body, files=None) + extract_cookies_to_jar(prep._cookies, response.request, response.raw) prep.prepare_cookies(prep._cookies) - # setup the auth header on the copied request - self.set_authorization_header(prep, challenge) + security = self._get_message_security(prep, challenge) - # resend the request with proper authentication + # auth and protect the prepped request message + security.protect_request(prep) + + # resend the request with proper authentication and message protection _response = response.connection.send(prep, **kwargs) _response.history.append(response) _response.request = prep + + # unprotected the response + security.unprotect_response(_response) + return _response - def set_authorization_header(self, request, challenge): - auth = self._callback( - challenge.get_authorization_server(), - challenge.get_resource(), - challenge.get_scope()) + def _get_message_security(self, request, challenge): + scheme = challenge.scheme + + # if the given request can be protected ensure the scheme is PoP so the proper access token is requested + if _message_protection_supported(challenge, request): + scheme = 'PoP' - # Due to limitations in the service we hard code the auth scheme to 'Bearer' as the service will fail with any other - # scheme or a different casing such as 'bearer', once this is fixed the following line should be replace with: - # request.headers['Authorization'] = '{} {}'.format(auth[0], auth[1]) - request.headers['Authorization'] = '{} {}'.format('Bearer', auth[1]) + # use the authentication_callback to get the token and create the message security + token = AccessToken(*self._callback(challenge.get_authorization_server(), + challenge.get_resource(), + challenge.get_scope(), + scheme)) + security = HttpMessageSecurity(client_security_token=token.token) + + # if the given request can be protected add the appropriate keys to the message security + if scheme == 'PoP': + security.client_signature_key = token.key + security.client_encryption_key = _RsaKey.generate() + security.server_encryption_key = _RsaKey.from_jwk_str(challenge.server_encryption_key) + security.server_signature_key = _RsaKey.from_jwk_str(challenge.server_signature_key) + + return security class KeyVaultAuthentication(OAuthTokenAuthentication): @@ -163,20 +215,20 @@ def __init__(self, authorization_callback=None, credentials=None): self._credentials = credentials if not authorization_callback: - def auth_callback(server, resource, scope): + def auth_callback(server, resource, scope, scheme): if self._credentials.resource != resource: self._credentials.resource = resource self._credentials.set_token() token = self._credentials.token - return token['token_type'], token['access_token'] + return AccessToken(scheme=token['token_type'], token=token['access_token'], key=None) authorization_callback = auth_callback self.auth = KeyVaultAuthBase(authorization_callback) self._callback = authorization_callback - def signed_session(self): - session = requests.Session() + def signed_session(self, session=None): + session = session or requests.Session() session.auth = self.auth return session diff --git a/azure-keyvault/azure/keyvault/generated/__init__.py b/azure-keyvault/azure/keyvault/generated/__init__.py deleted file mode 100755 index 39ce8ecf2327..000000000000 --- a/azure-keyvault/azure/keyvault/generated/__init__.py +++ /dev/null @@ -1,149 +0,0 @@ -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -------------------------------------------------------------------------- - -# --------------------------------------------------------------------------- -# The 'azure.keyvault.generated' namespace has been preserved in this version -# of the SDK for backwards compatibility through the preview, however it may -# be removed in subsequent versions of the SDK. -# --------------------------------------------------------------------------- - -from .. import KeyVaultClient -from .. import VERSION -from ..models import Attributes as __models_Attributes -from ..models import JsonWebKey as __models_JsonWebKey -from ..models import KeyAttributes as __models_KeyAttributes -from ..models import KeyBundle as __models_KeyBundle -from ..models import KeyItem as __models_KeyItem -from ..models import SecretAttributes as __models_SecretAttributes -from ..models import SecretBundle as __models_SecretBundle -from ..models import SecretItem as __models_SecretItem -from ..models import CertificateAttributes as __models_CertificateAttributes -from ..models import CertificateItem as __models_CertificateItem -from ..models import CertificateIssuerItem as __models_CertificateIssuerItem -from ..models import KeyProperties as __models_KeyProperties -from ..models import SecretProperties as __models_SecretProperties -from ..models import SubjectAlternativeNames as __models_SubjectAlternativeNames -from ..models import X509CertificateProperties as __models_X509CertificateProperties -from ..models import Trigger as __models_Trigger -from ..models import Action as __models_Action -from ..models import LifetimeAction as __models_LifetimeAction -from ..models import IssuerParameters as __models_IssuerParameters -from ..models import CertificatePolicy as __models_CertificatePolicy -from ..models import CertificateBundle as __models_CertificateBundle -from ..models import Error as __models_Error -from ..models import CertificateOperation as __models_CertificateOperation -from ..models import IssuerCredentials as __models_IssuerCredentials -from ..models import AdministratorDetails as __models_AdministratorDetails -from ..models import OrganizationDetails as __models_OrganizationDetails -from ..models import IssuerAttributes as __models_IssuerAttributes -from ..models import IssuerBundle as __models_IssuerBundle -from ..models import Contact as __models_Contact -from ..models import Contacts as __models_Contacts -from ..models import KeyCreateParameters as __models_KeyCreateParameters -from ..models import KeyImportParameters as __models_KeyImportParameters -from ..models import KeyOperationsParameters as __models_KeyOperationsParameters -from ..models import KeySignParameters as __models_KeySignParameters -from ..models import KeyVerifyParameters as __models_KeyVerifyParameters -from ..models import KeyUpdateParameters as __models_KeyUpdateParameters -from ..models import KeyRestoreParameters as __models_KeyRestoreParameters -from ..models import SecretSetParameters as __models_SecretSetParameters -from ..models import SecretUpdateParameters as __models_SecretUpdateParameters -from ..models import CertificateCreateParameters as __models_CertificateCreateParameters -from ..models import CertificateImportParameters as __models_CertificateImportParameters -from ..models import CertificateUpdateParameters as __models_CertificateUpdateParameters -from ..models import CertificateMergeParameters as __models_CertificateMergeParameters -from ..models import CertificateIssuerSetParameters as __models_CertificateIssuerSetParameters -from ..models import CertificateIssuerUpdateParameters as __models_CertificateIssuerUpdateParameters -from ..models import CertificateOperationUpdateParameter as __models_CertificateOperationUpdateParameter -from ..models import KeyOperationResult as __models_KeyOperationResult -from ..models import KeyVerifyResult as __models_KeyVerifyResult -from ..models import BackupKeyResult as __models_BackupKeyResult -from ..models import PendingCertificateSigningRequestResult as __models_PendingCertificateSigningRequestResult -from ..models import KeyVaultError as __models_KeyVaultError -from ..models import KeyVaultErrorException as __models_KeyVaultErrorException -from ..models import KeyItemPaged as __models_KeyItemPaged -from ..models import SecretItemPaged as __models_SecretItemPaged -from ..models import CertificateItemPaged as __models_CertificateItemPaged -from ..models import CertificateIssuerItemPaged as __models_CertificateIssuerItemPaged -from ..models import JsonWebKeyType as __models_JsonWebKeyType -from ..models import KeyUsageType as __models_KeyUsageType -from ..models import ActionType as __models_ActionType -from ..models import JsonWebKeyOperation as __models_JsonWebKeyOperation -from ..models import JsonWebKeyEncryptionAlgorithm as __models_JsonWebKeyEncryptionAlgorithm -from ..models import JsonWebKeySignatureAlgorithm as __models_JsonWebKeySignatureAlgorithm - -import warnings - -warnings.warn("The namespace azure.keyvault.generated has been deprecated and it's contents moved to azure.keyvault", DeprecationWarning) - -__all__ = ['KeyVaultClient', - '__models_Attributes', - '__models_JsonWebKey', - '__models_KeyAttributes', - '__models_KeyBundle', - '__models_KeyItem', - '__models_SecretAttributes', - '__models_SecretBundle', - '__models_SecretItem', - '__models_CertificateAttributes', - '__models_CertificateItem', - '__models_CertificateIssuerItem', - '__models_KeyProperties', - '__models_SecretProperties', - '__models_SubjectAlternativeNames', - '__models_X509CertificateProperties', - '__models_Trigger', - '__models_Action', - '__models_LifetimeAction', - '__models_IssuerParameters', - '__models_CertificatePolicy', - '__models_CertificateBundle', - '__models_Error', - '__models_CertificateOperation', - '__models_IssuerCredentials', - '__models_AdministratorDetails', - '__models_OrganizationDetails', - '__models_IssuerAttributes', - '__models_IssuerBundle', - '__models_Contact', - '__models_Contacts', - '__models_KeyCreateParameters', - '__models_KeyImportParameters', - '__models_KeyOperationsParameters', - '__models_KeySignParameters', - '__models_KeyVerifyParameters', - '__models_KeyUpdateParameters', - '__models_KeyRestoreParameters', - '__models_SecretSetParameters', - '__models_SecretUpdateParameters', - '__models_CertificateCreateParameters', - '__models_CertificateImportParameters', - '__models_CertificateUpdateParameters', - '__models_CertificateMergeParameters', - '__models_CertificateIssuerSetParameters', - '__models_CertificateIssuerUpdateParameters', - '__models_CertificateOperationUpdateParameter', - '__models_KeyOperationResult', - '__models_KeyVerifyResult', - '__models_BackupKeyResult', - '__models_PendingCertificateSigningRequestResult', - '__models_KeyVaultError', - '__models_KeyVaultErrorException', - '__models_KeyItemPaged', - '__models_SecretItemPaged', - '__models_CertificateItemPaged', - '__models_CertificateIssuerItemPaged', - '__models_JsonWebKeyType', - '__models_KeyUsageType', - '__models_ActionType', - '__models_JsonWebKeyOperation', - '__models_JsonWebKeyEncryptionAlgorithm', - '__models_JsonWebKeySignatureAlgorithm',] - -__version__ = VERSION - - - diff --git a/azure-keyvault/azure/keyvault/generated/models/__init__.py b/azure-keyvault/azure/keyvault/generated/models/__init__.py deleted file mode 100755 index 14bb7c3d39b5..000000000000 --- a/azure-keyvault/azure/keyvault/generated/models/__init__.py +++ /dev/null @@ -1,143 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -------------------------------------------------------------------------- - -# --------------------------------------------------------------------------- -# The 'azure.keyvault.generated' namespace has been preserved in this version -# of the SDK for backwards compatibility through the preview, however it may -# be removed in subsequent versions of the SDK. -# --------------------------------------------------------------------------- - -from .. import __models_Attributes as Attributes -from .. import __models_JsonWebKey as JsonWebKey -from .. import __models_KeyAttributes as KeyAttributes -from .. import __models_KeyBundle as KeyBundle -from .. import __models_KeyItem as KeyItem -from .. import __models_SecretAttributes as SecretAttributes -from .. import __models_SecretBundle as SecretBundle -from .. import __models_SecretItem as SecretItem -from .. import __models_CertificateAttributes as CertificateAttributes -from .. import __models_CertificateItem as CertificateItem -from .. import __models_CertificateIssuerItem as CertificateIssuerItem -from .. import __models_KeyProperties as KeyProperties -from .. import __models_SecretProperties as SecretProperties -from .. import __models_SubjectAlternativeNames as SubjectAlternativeNames -from .. import __models_X509CertificateProperties as X509CertificateProperties -from .. import __models_Trigger as Trigger -from .. import __models_Action as Action -from .. import __models_LifetimeAction as LifetimeAction -from .. import __models_IssuerParameters as IssuerParameters -from .. import __models_CertificatePolicy as CertificatePolicy -from .. import __models_CertificateBundle as CertificateBundle -from .. import __models_Error as Error -from .. import __models_CertificateOperation as CertificateOperation -from .. import __models_IssuerCredentials as IssuerCredentials -from .. import __models_AdministratorDetails as AdministratorDetails -from .. import __models_OrganizationDetails as OrganizationDetails -from .. import __models_IssuerAttributes as IssuerAttributes -from .. import __models_IssuerBundle as IssuerBundle -from .. import __models_Contact as Contact -from .. import __models_Contacts as Contacts -from .. import __models_KeyCreateParameters as KeyCreateParameters -from .. import __models_KeyImportParameters as KeyImportParameters -from .. import __models_KeyOperationsParameters as KeyOperationsParameters -from .. import __models_KeySignParameters as KeySignParameters -from .. import __models_KeyVerifyParameters as KeyVerifyParameters -from .. import __models_KeyUpdateParameters as KeyUpdateParameters -from .. import __models_KeyRestoreParameters as KeyRestoreParameters -from .. import __models_SecretSetParameters as SecretSetParameters -from .. import __models_SecretUpdateParameters as SecretUpdateParameters -from .. import __models_CertificateCreateParameters as CertificateCreateParameters -from .. import __models_CertificateImportParameters as CertificateImportParameters -from .. import __models_CertificateUpdateParameters as CertificateUpdateParameters -from .. import __models_CertificateMergeParameters as CertificateMergeParameters -from .. import __models_CertificateIssuerSetParameters as CertificateIssuerSetParameters -from .. import __models_CertificateIssuerUpdateParameters as CertificateIssuerUpdateParameters -from .. import __models_CertificateOperationUpdateParameter as CertificateOperationUpdateParameter -from .. import __models_KeyOperationResult as KeyOperationResult -from .. import __models_KeyVerifyResult as KeyVerifyResult -from .. import __models_BackupKeyResult as BackupKeyResult -from .. import __models_PendingCertificateSigningRequestResult as PendingCertificateSigningRequestResult -from .. import __models_KeyVaultError as KeyVaultError -from .. import __models_KeyVaultErrorException as KeyVaultErrorException -from .. import __models_KeyItemPaged as KeyItemPaged -from .. import __models_SecretItemPaged as SecretItemPaged -from .. import __models_CertificateItemPaged as CertificateItemPaged -from .. import __models_CertificateIssuerItemPaged as CertificateIssuerItemPaged -from .. import __models_JsonWebKeyType as JsonWebKeyType -from .. import __models_KeyUsageType as KeyUsageType -from .. import __models_ActionType as ActionType -from .. import __models_JsonWebKeyOperation as JsonWebKeyOperation -from .. import __models_JsonWebKeyEncryptionAlgorithm as JsonWebKeyEncryptionAlgorithm -from .. import __models_JsonWebKeySignatureAlgorithm as JsonWebKeySignatureAlgorithm - -import warnings - -warnings.warn("The namespace azure.keyvault.generated.models has been deprecated and it's contents moved to azure.keyvault.models", DeprecationWarning) - -__all__ = [ - 'Attributes', - 'JsonWebKey', - 'KeyAttributes', - 'KeyBundle', - 'KeyItem', - 'SecretAttributes', - 'SecretBundle', - 'SecretItem', - 'CertificateAttributes', - 'CertificateItem', - 'CertificateIssuerItem', - 'KeyProperties', - 'SecretProperties', - 'SubjectAlternativeNames', - 'X509CertificateProperties', - 'Trigger', - 'Action', - 'LifetimeAction', - 'IssuerParameters', - 'CertificatePolicy', - 'CertificateBundle', - 'Error', - 'CertificateOperation', - 'IssuerCredentials', - 'AdministratorDetails', - 'OrganizationDetails', - 'IssuerAttributes', - 'IssuerBundle', - 'Contact', - 'Contacts', - 'KeyCreateParameters', - 'KeyImportParameters', - 'KeyOperationsParameters', - 'KeySignParameters', - 'KeyVerifyParameters', - 'KeyUpdateParameters', - 'KeyRestoreParameters', - 'SecretSetParameters', - 'SecretUpdateParameters', - 'CertificateCreateParameters', - 'CertificateImportParameters', - 'CertificateUpdateParameters', - 'CertificateMergeParameters', - 'CertificateIssuerSetParameters', - 'CertificateIssuerUpdateParameters', - 'CertificateOperationUpdateParameter', - 'KeyOperationResult', - 'KeyVerifyResult', - 'BackupKeyResult', - 'PendingCertificateSigningRequestResult', - 'KeyVaultError', 'KeyVaultErrorException', - 'KeyItemPaged', - 'SecretItemPaged', - 'CertificateItemPaged', - 'CertificateIssuerItemPaged', - 'JsonWebKeyType', - 'KeyUsageType', - 'ActionType', - 'JsonWebKeyOperation', - 'JsonWebKeyEncryptionAlgorithm', - 'JsonWebKeySignatureAlgorithm', -] diff --git a/azure-keyvault/azure/keyvault/key_vault_client.py b/azure-keyvault/azure/keyvault/key_vault_client.py old mode 100755 new mode 100644 index 3059e3951aef..3266084f2145 --- a/azure-keyvault/azure/keyvault/key_vault_client.py +++ b/azure-keyvault/azure/keyvault/key_vault_client.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from msrest.service_client import ServiceClient +from msrest.service_client import SDKClient from msrest import Serializer, Deserializer from msrestazure import AzureConfiguration from .version import VERSION @@ -37,13 +37,13 @@ def __init__( super(KeyVaultClientConfiguration, self).__init__(base_url) - self.add_user_agent('keyvaultclient/{}'.format(VERSION)) + self.add_user_agent('azure-keyvault/{}'.format(VERSION)) self.add_user_agent('Azure-SDK-For-Python') self.credentials = credentials -class KeyVaultClient(object): +class KeyVaultClient(SDKClient): """The key vault client performs cryptographic key operations and vault operations against the Key Vault service. :ivar config: Configuration for client. @@ -58,22 +58,22 @@ def __init__( self, credentials): self.config = KeyVaultClientConfiguration(credentials) - self._client = ServiceClient(self.config.credentials, self.config) + super(KeyVaultClient, self).__init__(self.config.credentials, self.config) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} - self.api_version = '2016-10-01' + self.api_version = '7.0' self._serialize = Serializer(client_models) self._deserialize = Deserializer(client_models) def create_key( - self, vault_base_url, key_name, kty, key_size=None, key_ops=None, key_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): + self, vault_base_url, key_name, kty, key_size=None, key_ops=None, key_attributes=None, tags=None, curve=None, custom_headers=None, raw=False, **operation_config): """Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a - new version of the key. + new version of the key. It requires the keys/create permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -81,41 +81,42 @@ def create_key( :param key_name: The name for the new key. The system will generate the version name for the new key. :type key_name: str - :param kty: The type of key to create. For valid key types, see - JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic - Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', + :param kty: The type of key to create. For valid values, see + JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - :type kty: str or :class:`JsonWebKeyType - ` - :param key_size: The key size in bytes. For example, 1024 or 2048. + :type kty: str or ~azure.keyvault.models.JsonWebKeyType + :param key_size: The key size in bits. For example: 2048, 3072, or + 4096 for RSA. :type key_size: int :param key_ops: - :type key_ops: list of str or :class:`JsonWebKeyOperation - ` + :type key_ops: list[str or ~azure.keyvault.models.JsonWebKeyOperation] :param key_attributes: - :type key_attributes: :class:`KeyAttributes - ` + :type key_attributes: ~azure.keyvault.models.KeyAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] + :param curve: Elliptic curve name. For valid values, see + JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', + 'P-521', 'P-256K' + :type curve: str or ~azure.keyvault.models.JsonWebKeyCurveName :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ - parameters = models.KeyCreateParameters(kty=kty, key_size=key_size, key_ops=key_ops, key_attributes=key_attributes, tags=tags) + parameters = models.KeyCreateParameters(kty=kty, key_size=key_size, key_ops=key_ops, key_attributes=key_attributes, tags=tags, curve=curve) # Construct URL - url = '/keys/{key-name}/create' + url = self.create_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'key-name': self._serialize.url("key_name", key_name, 'str', pattern='^[0-9a-zA-Z-]+$') + 'key-name': self._serialize.url("key_name", key_name, 'str', pattern=r'^[0-9a-zA-Z-]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -139,7 +140,7 @@ def create_key( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -154,6 +155,7 @@ def create_key( return client_raw_response return deserialized + create_key.metadata = {'url': '/keys/{key-name}/create'} def import_key( self, vault_base_url, key_name, key, hsm=None, key_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): @@ -162,7 +164,8 @@ def import_key( The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault - creates a new version of the key. + creates a new version of the key. This operation requires the + keys/import permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -170,33 +173,32 @@ def import_key( :param key_name: Name for the imported key. :type key_name: str :param key: The Json web key - :type key: :class:`JsonWebKey ` + :type key: ~azure.keyvault.models.JsonWebKey :param hsm: Whether to import as a hardware key (HSM) or software key. :type hsm: bool :param key_attributes: The key management attributes. - :type key_attributes: :class:`KeyAttributes - ` + :type key_attributes: ~azure.keyvault.models.KeyAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.KeyImportParameters(hsm=hsm, key=key, key_attributes=key_attributes, tags=tags) # Construct URL - url = '/keys/{key-name}' + url = self.import_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'key-name': self._serialize.url("key_name", key_name, 'str', pattern='^[0-9a-zA-Z-]+$') + 'key-name': self._serialize.url("key_name", key_name, 'str', pattern=r'^[0-9a-zA-Z-]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -220,7 +222,7 @@ def import_key( # Construct and send request request = self._client.put(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -235,6 +237,7 @@ def import_key( return client_raw_response return deserialized + import_key.metadata = {'url': '/keys/{key-name}'} def delete_key( self, vault_base_url, key_name, custom_headers=None, raw=False, **operation_config): @@ -243,7 +246,8 @@ def delete_key( The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, - Wrap/Unwrap or Encrypt/Decrypt operations. + Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the + keys/delete permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -255,15 +259,14 @@ def delete_key( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`DeletedKeyBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: DeletedKeyBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.DeletedKeyBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/keys/{key-name}' + url = self.delete_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str') @@ -286,7 +289,7 @@ def delete_key( # Construct and send request request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -301,6 +304,7 @@ def delete_key( return client_raw_response return deserialized + delete_key.metadata = {'url': '/keys/{key-name}'} def update_key( self, vault_base_url, key_name, key_version, key_ops=None, key_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): @@ -310,7 +314,7 @@ def update_key( In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be - changed. + changed. This operation requires the keys/update permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -321,29 +325,27 @@ def update_key( :type key_version: str :param key_ops: Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - :type key_ops: list of str or :class:`JsonWebKeyOperation - ` + :type key_ops: list[str or ~azure.keyvault.models.JsonWebKeyOperation] :param key_attributes: - :type key_attributes: :class:`KeyAttributes - ` + :type key_attributes: ~azure.keyvault.models.KeyAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.KeyUpdateParameters(key_ops=key_ops, key_attributes=key_attributes, tags=tags) # Construct URL - url = '/keys/{key-name}/{key-version}' + url = self.update_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str'), @@ -371,7 +373,7 @@ def update_key( # Construct and send request request = self._client.patch(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -386,6 +388,7 @@ def update_key( return client_raw_response return deserialized + update_key.metadata = {'url': '/keys/{key-name}/{key-version}'} def get_key( self, vault_base_url, key_name, key_version, custom_headers=None, raw=False, **operation_config): @@ -393,6 +396,7 @@ def get_key( The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. + This operation requires the keys/get permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -407,14 +411,14 @@ def get_key( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/keys/{key-name}/{key-version}' + url = self.get_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str'), @@ -438,7 +442,7 @@ def get_key( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -453,13 +457,14 @@ def get_key( return client_raw_response return deserialized + get_key.metadata = {'url': '/keys/{key-name}/{key-version}'} def get_key_versions( self, vault_base_url, key_name, maxresults=None, custom_headers=None, raw=False, **operation_config): """Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the - response. + response. This operation requires the keys/list permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -474,7 +479,9 @@ def get_key_versions( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyItemPaged ` + :return: An iterator like instance of KeyItem + :rtype: + ~azure.keyvault.models.KeyItemPaged[~azure.keyvault.models.KeyItem] :raises: :class:`KeyVaultErrorException` """ @@ -482,7 +489,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/keys/{key-name}/versions' + url = self.get_key_versions.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str') @@ -512,7 +519,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -528,6 +535,7 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_key_versions.metadata = {'url': '/keys/{key-name}/versions'} def get_keys( self, vault_base_url, maxresults=None, custom_headers=None, raw=False, **operation_config): @@ -536,9 +544,9 @@ def get_keys( Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key - identifier,attributes, and tags are provided in the response. - Individual versions of a key are not listed in the response. - Authorization: Requires the keys/list permission. + identifier, attributes, and tags are provided in the response. + Individual versions of a key are not listed in the response. This + operation requires the keys/list permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -551,7 +559,9 @@ def get_keys( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyItemPaged ` + :return: An iterator like instance of KeyItem + :rtype: + ~azure.keyvault.models.KeyItemPaged[~azure.keyvault.models.KeyItem] :raises: :class:`KeyVaultErrorException` """ @@ -559,7 +569,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/keys' + url = self.get_keys.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -588,7 +598,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -604,6 +614,7 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_keys.metadata = {'url': '/keys'} def backup_key( self, vault_base_url, key_name, custom_headers=None, raw=False, **operation_config): @@ -622,7 +633,8 @@ def backup_key( BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US - geographical area cannot be restored in an EU geographical area. + geographical area cannot be restored in an EU geographical area. This + operation requires the key/backup permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -634,15 +646,14 @@ def backup_key( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`BackupKeyResult - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: BackupKeyResult or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.BackupKeyResult or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/keys/{key-name}/backup' + url = self.backup_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str') @@ -665,7 +676,7 @@ def backup_key( # Construct and send request request = self._client.post(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -680,6 +691,7 @@ def backup_key( return client_raw_response return deserialized + backup_key.metadata = {'url': '/keys/{key-name}/backup'} def restore_key( self, vault_base_url, key_bundle_backup, custom_headers=None, raw=False, **operation_config): @@ -697,7 +709,8 @@ def restore_key( version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE - permission in the target Key Vault. + permission in the target Key Vault. This operation requires the + keys/restore permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -710,16 +723,16 @@ def restore_key( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.KeyRestoreParameters(key_bundle_backup=key_bundle_backup) # Construct URL - url = '/keys/restore' + url = self.restore_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -745,7 +758,7 @@ def restore_key( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -760,6 +773,7 @@ def restore_key( return client_raw_response return deserialized + restore_key.metadata = {'url': '/keys/restore'} def encrypt( self, vault_base_url, key_name, key_version, algorithm, value, custom_headers=None, raw=False, **operation_config): @@ -774,7 +788,8 @@ def encrypt( stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a - key-reference but do not have access to the public key material. + key-reference but do not have access to the public key material. This + operation requires the keys/encypt permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -785,8 +800,8 @@ def encrypt( :type key_version: str :param algorithm: algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - :type algorithm: str or :class:`JsonWebKeyEncryptionAlgorithm - ` + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeyEncryptionAlgorithm :param value: :type value: bytes :param dict custom_headers: headers that will be added to the request @@ -794,17 +809,16 @@ def encrypt( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyOperationResult - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyOperationResult or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyOperationResult or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.KeyOperationsParameters(algorithm=algorithm, value=value) # Construct URL - url = '/keys/{key-name}/{key-version}/encrypt' + url = self.encrypt.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str'), @@ -832,7 +846,7 @@ def encrypt( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -847,6 +861,7 @@ def encrypt( return client_raw_response return deserialized + encrypt.metadata = {'url': '/keys/{key-name}/{key-version}/encrypt'} def decrypt( self, vault_base_url, key_name, key_version, algorithm, value, custom_headers=None, raw=False, **operation_config): @@ -858,7 +873,8 @@ def decrypt( be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private - portion of the key. + portion of the key. This operation requires the keys/decrypt + permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -869,8 +885,8 @@ def decrypt( :type key_version: str :param algorithm: algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - :type algorithm: str or :class:`JsonWebKeyEncryptionAlgorithm - ` + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeyEncryptionAlgorithm :param value: :type value: bytes :param dict custom_headers: headers that will be added to the request @@ -878,17 +894,16 @@ def decrypt( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyOperationResult - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyOperationResult or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyOperationResult or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.KeyOperationsParameters(algorithm=algorithm, value=value) # Construct URL - url = '/keys/{key-name}/{key-version}/decrypt' + url = self.decrypt.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str'), @@ -916,7 +931,7 @@ def decrypt( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -931,6 +946,7 @@ def decrypt( return client_raw_response return deserialized + decrypt.metadata = {'url': '/keys/{key-name}/{key-version}/decrypt'} def sign( self, vault_base_url, key_name, key_version, algorithm, value, custom_headers=None, raw=False, **operation_config): @@ -938,7 +954,7 @@ def sign( The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion - of the key. + of the key. This operation requires the keys/sign permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -950,9 +966,10 @@ def sign( :param algorithm: The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', - 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL' - :type algorithm: str or :class:`JsonWebKeySignatureAlgorithm - ` + 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', + 'ES384', 'ES512', 'ES256K' + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeySignatureAlgorithm :param value: :type value: bytes :param dict custom_headers: headers that will be added to the request @@ -960,17 +977,16 @@ def sign( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyOperationResult - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyOperationResult or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyOperationResult or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.KeySignParameters(algorithm=algorithm, value=value) # Construct URL - url = '/keys/{key-name}/{key-version}/sign' + url = self.sign.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str'), @@ -998,7 +1014,7 @@ def sign( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1013,6 +1029,7 @@ def sign( return client_raw_response return deserialized + sign.metadata = {'url': '/keys/{key-name}/{key-version}/sign'} def verify( self, vault_base_url, key_name, key_version, algorithm, digest, signature, custom_headers=None, raw=False, **operation_config): @@ -1023,7 +1040,8 @@ def verify( in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the - public portion of the key. + public portion of the key. This operation requires the keys/verify + permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -1035,9 +1053,10 @@ def verify( :param algorithm: The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', - 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL' - :type algorithm: str or :class:`JsonWebKeySignatureAlgorithm - ` + 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', + 'ES384', 'ES512', 'ES256K' + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeySignatureAlgorithm :param digest: The digest used for signing. :type digest: bytes :param signature: The signature to be verified. @@ -1047,17 +1066,16 @@ def verify( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyVerifyResult - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyVerifyResult or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyVerifyResult or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.KeyVerifyParameters(algorithm=algorithm, digest=digest, signature=signature) # Construct URL - url = '/keys/{key-name}/{key-version}/verify' + url = self.verify.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str'), @@ -1085,7 +1103,7 @@ def verify( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1100,6 +1118,7 @@ def verify( return client_raw_response return deserialized + verify.metadata = {'url': '/keys/{key-name}/{key-version}/verify'} def wrap_key( self, vault_base_url, key_name, key_version, algorithm, value, custom_headers=None, raw=False, **operation_config): @@ -1111,7 +1130,8 @@ def wrap_key( in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a - key-reference but do not have access to the public key material. + key-reference but do not have access to the public key material. This + operation requires the keys/wrapKey permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -1122,8 +1142,8 @@ def wrap_key( :type key_version: str :param algorithm: algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - :type algorithm: str or :class:`JsonWebKeyEncryptionAlgorithm - ` + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeyEncryptionAlgorithm :param value: :type value: bytes :param dict custom_headers: headers that will be added to the request @@ -1131,17 +1151,16 @@ def wrap_key( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyOperationResult - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyOperationResult or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyOperationResult or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.KeyOperationsParameters(algorithm=algorithm, value=value) # Construct URL - url = '/keys/{key-name}/{key-version}/wrapkey' + url = self.wrap_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str'), @@ -1169,7 +1188,7 @@ def wrap_key( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1184,6 +1203,7 @@ def wrap_key( return client_raw_response return deserialized + wrap_key.metadata = {'url': '/keys/{key-name}/{key-version}/wrapkey'} def unwrap_key( self, vault_base_url, key_name, key_version, algorithm, value, custom_headers=None, raw=False, **operation_config): @@ -1194,7 +1214,7 @@ def unwrap_key( target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the - key. + key. This operation requires the keys/unwrapKey permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -1205,8 +1225,8 @@ def unwrap_key( :type key_version: str :param algorithm: algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - :type algorithm: str or :class:`JsonWebKeyEncryptionAlgorithm - ` + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeyEncryptionAlgorithm :param value: :type value: bytes :param dict custom_headers: headers that will be added to the request @@ -1214,17 +1234,16 @@ def unwrap_key( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyOperationResult - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyOperationResult or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyOperationResult or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.KeyOperationsParameters(algorithm=algorithm, value=value) # Construct URL - url = '/keys/{key-name}/{key-version}/unwrapkey' + url = self.unwrap_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str'), @@ -1252,7 +1271,7 @@ def unwrap_key( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1267,10 +1286,18 @@ def unwrap_key( return client_raw_response return deserialized + unwrap_key.metadata = {'url': '/keys/{key-name}/{key-version}/unwrapkey'} def get_deleted_keys( self, vault_base_url, maxresults=None, custom_headers=None, raw=False, **operation_config): - """List deleted keys in the specified vault. Authorization: Requires the + """Lists the deleted keys in the specified vault. + + Retrieves a list of the keys in the Key Vault as JSON Web Key + structures that contain the public part of a deleted key. This + operation includes deletion-specific information. The Get Deleted Keys + operation is applicable for vaults enabled for soft-delete. While the + operation can be invoked on any vault, it will return an error if + invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. :param vault_base_url: The vault name, for example @@ -1284,8 +1311,9 @@ def get_deleted_keys( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`DeletedKeyItemPaged - ` + :return: An iterator like instance of DeletedKeyItem + :rtype: + ~azure.keyvault.models.DeletedKeyItemPaged[~azure.keyvault.models.DeletedKeyItem] :raises: :class:`KeyVaultErrorException` """ @@ -1293,7 +1321,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/deletedkeys' + url = self.get_deleted_keys.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -1322,7 +1350,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1338,31 +1366,35 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_deleted_keys.metadata = {'url': '/deletedkeys'} def get_deleted_key( self, vault_base_url, key_name, custom_headers=None, raw=False, **operation_config): - """Retrieves the deleted key information plus its attributes. - Authorization: Requires the keys/get permission. + """Gets the public part of a deleted key. + + The Get Deleted Key operation is applicable for soft-delete enabled + vaults. While the operation can be invoked on any vault, it will return + an error if invoked on a non soft-delete enabled vault. This operation + requires the keys/get permission. . :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. :type vault_base_url: str - :param key_name: The name of the key + :param key_name: The name of the key. :type key_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`DeletedKeyBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: DeletedKeyBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.DeletedKeyBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/deletedkeys/{key-name}' + url = self.get_deleted_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str') @@ -1385,7 +1417,7 @@ def get_deleted_key( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1400,11 +1432,16 @@ def get_deleted_key( return client_raw_response return deserialized + get_deleted_key.metadata = {'url': '/deletedkeys/{key-name}'} def purge_deleted_key( self, vault_base_url, key_name, custom_headers=None, raw=False, **operation_config): - """Permanently deletes the specified key. aka purges the key. - Authorization: Requires the keys/purge permission. + """Permanently deletes the specified key. + + The Purge Deleted Key operation is applicable for soft-delete enabled + vaults. While the operation can be invoked on any vault, it will return + an error if invoked on a non soft-delete enabled vault. This operation + requires the keys/purge permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -1416,14 +1453,13 @@ def purge_deleted_key( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: None - :rtype: :class:`ClientRawResponse` - if raw=true + :return: None or ClientRawResponse if raw=true + :rtype: None or ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/deletedkeys/{key-name}' + url = self.purge_deleted_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str') @@ -1446,7 +1482,7 @@ def purge_deleted_key( # Construct and send request request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [204]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1454,30 +1490,37 @@ def purge_deleted_key( if raw: client_raw_response = ClientRawResponse(None, response) return client_raw_response + purge_deleted_key.metadata = {'url': '/deletedkeys/{key-name}'} def recover_deleted_key( self, vault_base_url, key_name, custom_headers=None, raw=False, **operation_config): - """Recovers the deleted key back to its current version under /keys. - Authorization: Requires the keys/recover permission. + """Recovers the deleted key to its latest version. + + The Recover Deleted Key operation is applicable for deleted keys in + soft-delete enabled vaults. It recovers the deleted key back to its + latest version under /keys. An attempt to recover an non-deleted key + will return an error. Consider this the inverse of the delete operation + on soft-delete enabled vaults. This operation requires the keys/recover + permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. :type vault_base_url: str - :param key_name: The name of the deleted key + :param key_name: The name of the deleted key. :type key_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`KeyBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: KeyBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.KeyBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/deletedkeys/{key-name}/recover' + url = self.recover_deleted_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'key-name': self._serialize.url("key_name", key_name, 'str') @@ -1500,7 +1543,7 @@ def recover_deleted_key( # Construct and send request request = self._client.post(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1515,6 +1558,7 @@ def recover_deleted_key( return client_raw_response return deserialized + recover_deleted_key.metadata = {'url': '/deletedkeys/{key-name}/recover'} def set_secret( self, vault_base_url, secret_name, value, tags=None, content_type=None, secret_attributes=None, custom_headers=None, raw=False, **operation_config): @@ -1522,7 +1566,7 @@ def set_secret( The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that - secret. + secret. This operation requires the secrets/set permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -1533,30 +1577,29 @@ def set_secret( :type value: str :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param content_type: Type of the secret value such as a password. :type content_type: str :param secret_attributes: The secret management attributes. - :type secret_attributes: :class:`SecretAttributes - ` + :type secret_attributes: ~azure.keyvault.models.SecretAttributes :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SecretBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: SecretBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.SecretBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.SecretSetParameters(value=value, tags=tags, content_type=content_type, secret_attributes=secret_attributes) # Construct URL - url = '/secrets/{secret-name}' + url = self.set_secret.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'secret-name': self._serialize.url("secret_name", secret_name, 'str', pattern='^[0-9a-zA-Z-]+$') + 'secret-name': self._serialize.url("secret_name", secret_name, 'str', pattern=r'^[0-9a-zA-Z-]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -1580,7 +1623,7 @@ def set_secret( # Construct and send request request = self._client.put(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1595,13 +1638,15 @@ def set_secret( return client_raw_response return deserialized + set_secret.metadata = {'url': '/secrets/{secret-name}'} def delete_secret( self, vault_base_url, secret_name, custom_headers=None, raw=False, **operation_config): """Deletes a secret from a specified key vault. The DELETE operation applies to any secret stored in Azure Key Vault. - DELETE cannot be applied to an individual version of a secret. + DELETE cannot be applied to an individual version of a secret. This + operation requires the secrets/delete permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -1613,15 +1658,14 @@ def delete_secret( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`DeletedSecretBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: DeletedSecretBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.DeletedSecretBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/secrets/{secret-name}' + url = self.delete_secret.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'secret-name': self._serialize.url("secret_name", secret_name, 'str') @@ -1644,7 +1688,7 @@ def delete_secret( # Construct and send request request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1659,6 +1703,7 @@ def delete_secret( return client_raw_response return deserialized + delete_secret.metadata = {'url': '/secrets/{secret-name}'} def update_secret( self, vault_base_url, secret_name, secret_version, content_type=None, secret_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): @@ -1667,7 +1712,8 @@ def update_secret( The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left - unchanged. The value of a secret itself cannot be changed. + unchanged. The value of a secret itself cannot be changed. This + operation requires the secrets/set permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -1679,26 +1725,25 @@ def update_secret( :param content_type: Type of the secret value such as a password. :type content_type: str :param secret_attributes: The secret management attributes. - :type secret_attributes: :class:`SecretAttributes - ` + :type secret_attributes: ~azure.keyvault.models.SecretAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SecretBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: SecretBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.SecretBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.SecretUpdateParameters(content_type=content_type, secret_attributes=secret_attributes, tags=tags) # Construct URL - url = '/secrets/{secret-name}/{secret-version}' + url = self.update_secret.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'secret-name': self._serialize.url("secret_name", secret_name, 'str'), @@ -1726,7 +1771,7 @@ def update_secret( # Construct and send request request = self._client.patch(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1741,13 +1786,14 @@ def update_secret( return client_raw_response return deserialized + update_secret.metadata = {'url': '/secrets/{secret-name}/{secret-version}'} def get_secret( self, vault_base_url, secret_name, secret_version, custom_headers=None, raw=False, **operation_config): """Get a specified secret from a given key vault. The GET operation is applicable to any secret stored in Azure Key - Vault. + Vault. This operation requires the secrets/get permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -1761,14 +1807,14 @@ def get_secret( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SecretBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: SecretBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.SecretBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/secrets/{secret-name}/{secret-version}' + url = self.get_secret.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'secret-name': self._serialize.url("secret_name", secret_name, 'str'), @@ -1792,7 +1838,7 @@ def get_secret( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1807,28 +1853,31 @@ def get_secret( return client_raw_response return deserialized + get_secret.metadata = {'url': '/secrets/{secret-name}/{secret-version}'} def get_secrets( self, vault_base_url, maxresults=None, custom_headers=None, raw=False, **operation_config): """List secrets in a specified key vault. - The LIST operation is applicable to the entire vault, however only the - base secret identifier and attributes are provided in the response. - Individual secret versions are not listed in the response. + The Get Secrets operation is applicable to the entire vault. However, + only the base secret identifier and its attributes are provided in the + response. Individual secret versions are not listed in the response. + This operation requires the secrets/list permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. :type vault_base_url: str :param maxresults: Maximum number of results to return in a page. If - not specified the service will return up to 25 results. + not specified, the service will return up to 25 results. :type maxresults: int :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SecretItemPaged - ` + :return: An iterator like instance of SecretItem + :rtype: + ~azure.keyvault.models.SecretItemPaged[~azure.keyvault.models.SecretItem] :raises: :class:`KeyVaultErrorException` """ @@ -1836,7 +1885,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/secrets' + url = self.get_secrets.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -1865,7 +1914,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1881,15 +1930,15 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_secrets.metadata = {'url': '/secrets'} def get_secret_versions( self, vault_base_url, secret_name, maxresults=None, custom_headers=None, raw=False, **operation_config): - """List the versions of the specified secret. + """List all versions of the specified secret. - The LIST VERSIONS operation can be applied to all versions having the - same secret name in the same key vault. The full secret identifier and - attributes are provided in the response. No values are returned for the - secrets and only current versions of a secret are listed. + The full secret identifier and attributes are provided in the response. + No values are returned for the secrets. This operations requires the + secrets/list permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -1897,15 +1946,16 @@ def get_secret_versions( :param secret_name: The name of the secret. :type secret_name: str :param maxresults: Maximum number of results to return in a page. If - not specified the service will return up to 25 results. + not specified, the service will return up to 25 results. :type maxresults: int :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SecretItemPaged - ` + :return: An iterator like instance of SecretItem + :rtype: + ~azure.keyvault.models.SecretItemPaged[~azure.keyvault.models.SecretItem] :raises: :class:`KeyVaultErrorException` """ @@ -1913,7 +1963,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/secrets/{secret-name}/versions' + url = self.get_secret_versions.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'secret-name': self._serialize.url("secret_name", secret_name, 'str') @@ -1943,7 +1993,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -1959,10 +2009,14 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_secret_versions.metadata = {'url': '/secrets/{secret-name}/versions'} def get_deleted_secrets( self, vault_base_url, maxresults=None, custom_headers=None, raw=False, **operation_config): - """List deleted secrets in the specified vault. Authorization: requires + """Lists deleted secrets for the specified vault. + + The Get Deleted Secrets operation returns the secrets that have been + deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. :param vault_base_url: The vault name, for example @@ -1976,8 +2030,9 @@ def get_deleted_secrets( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`DeletedSecretItemPaged - ` + :return: An iterator like instance of DeletedSecretItem + :rtype: + ~azure.keyvault.models.DeletedSecretItemPaged[~azure.keyvault.models.DeletedSecretItem] :raises: :class:`KeyVaultErrorException` """ @@ -1985,7 +2040,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/deletedsecrets' + url = self.get_deleted_secrets.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -2014,7 +2069,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2030,31 +2085,34 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_deleted_secrets.metadata = {'url': '/deletedsecrets'} def get_deleted_secret( self, vault_base_url, secret_name, custom_headers=None, raw=False, **operation_config): - """Retrieves the deleted secret information plus its attributes. - Authorization: requires the secrets/get permission. + """Gets the specified deleted secret. + + The Get Deleted Secret operation returns the specified deleted secret + along with its attributes. This operation requires the secrets/get + permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. :type vault_base_url: str - :param secret_name: The name of the secret + :param secret_name: The name of the secret. :type secret_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`DeletedSecretBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: DeletedSecretBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.DeletedSecretBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/deletedsecrets/{secret-name}' + url = self.get_deleted_secret.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'secret-name': self._serialize.url("secret_name", secret_name, 'str') @@ -2077,7 +2135,7 @@ def get_deleted_secret( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2092,30 +2150,34 @@ def get_deleted_secret( return client_raw_response return deserialized + get_deleted_secret.metadata = {'url': '/deletedsecrets/{secret-name}'} def purge_deleted_secret( self, vault_base_url, secret_name, custom_headers=None, raw=False, **operation_config): - """Permanently deletes the specified secret. aka purges the secret. - Authorization: requires the secrets/purge permission. + """Permanently deletes the specified secret. + + The purge deleted secret operation removes the secret permanently, + without the possibility of recovery. This operation can only be enabled + on a soft-delete enabled vault. This operation requires the + secrets/purge permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. :type vault_base_url: str - :param secret_name: The name of the secret + :param secret_name: The name of the secret. :type secret_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: None - :rtype: :class:`ClientRawResponse` - if raw=true + :return: None or ClientRawResponse if raw=true + :rtype: None or ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/deletedsecrets/{secret-name}' + url = self.purge_deleted_secret.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'secret-name': self._serialize.url("secret_name", secret_name, 'str') @@ -2138,7 +2200,7 @@ def purge_deleted_secret( # Construct and send request request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [204]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2146,30 +2208,34 @@ def purge_deleted_secret( if raw: client_raw_response = ClientRawResponse(None, response) return client_raw_response + purge_deleted_secret.metadata = {'url': '/deletedsecrets/{secret-name}'} def recover_deleted_secret( self, vault_base_url, secret_name, custom_headers=None, raw=False, **operation_config): - """Recovers the deleted secret back to its current version under /secrets. - Authorization: requires the secrets/recover permission. + """Recovers the deleted secret to the latest version. + + Recovers the deleted secret in the specified vault. This operation can + only be performed on a soft-delete enabled vault. This operation + requires the secrets/recover permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. :type vault_base_url: str - :param secret_name: The name of the deleted secret + :param secret_name: The name of the deleted secret. :type secret_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SecretBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: SecretBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.SecretBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/deletedsecrets/{secret-name}/recover' + url = self.recover_deleted_secret.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'secret-name': self._serialize.url("secret_name", secret_name, 'str') @@ -2192,7 +2258,7 @@ def recover_deleted_secret( # Construct and send request request = self._client.post(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2207,11 +2273,15 @@ def recover_deleted_secret( return client_raw_response return deserialized + recover_deleted_secret.metadata = {'url': '/deletedsecrets/{secret-name}/recover'} def backup_secret( self, vault_base_url, secret_name, custom_headers=None, raw=False, **operation_config): - """Requests that a backup of the specified secret be downloaded to the - client. Authorization: requires the secrets/backup permission. + """Backs up the specified secret. + + Requests that a backup of the specified secret be downloaded to the + client. All versions of the secret will be downloaded. This operation + requires the secrets/backup permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -2223,15 +2293,14 @@ def backup_secret( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`BackupSecretResult - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: BackupSecretResult or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.BackupSecretResult or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/secrets/{secret-name}/backup' + url = self.backup_secret.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'secret-name': self._serialize.url("secret_name", secret_name, 'str') @@ -2254,7 +2323,7 @@ def backup_secret( # Construct and send request request = self._client.post(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2269,11 +2338,14 @@ def backup_secret( return client_raw_response return deserialized + backup_secret.metadata = {'url': '/secrets/{secret-name}/backup'} def restore_secret( self, vault_base_url, secret_bundle_backup, custom_headers=None, raw=False, **operation_config): - """Restores a backed up secret to a vault. Authorization: requires the - secrets/restore permission. + """Restores a backed up secret to a vault. + + Restores a backed up secret, and all its versions, to a vault. This + operation requires the secrets/restore permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -2286,16 +2358,16 @@ def restore_secret( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SecretBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: SecretBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.SecretBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.SecretRestoreParameters(secret_bundle_backup=secret_bundle_backup) # Construct URL - url = '/secrets/restore' + url = self.restore_secret.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -2321,7 +2393,7 @@ def restore_secret( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2336,13 +2408,15 @@ def restore_secret( return client_raw_response return deserialized + restore_secret.metadata = {'url': '/secrets/restore'} def get_certificates( - self, vault_base_url, maxresults=None, custom_headers=None, raw=False, **operation_config): + self, vault_base_url, maxresults=None, include_pending=None, custom_headers=None, raw=False, **operation_config): """List certificates in a specified key vault. The GetCertificates operation returns the set of certificates resources - in the specified key vault. + in the specified key vault. This operation requires the + certificates/list permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -2350,13 +2424,17 @@ def get_certificates( :param maxresults: Maximum number of results to return in a page. If not specified the service will return up to 25 results. :type maxresults: int + :param include_pending: Specifies whether to include certificates + which are not completely provisioned. + :type include_pending: bool :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateItemPaged - ` + :return: An iterator like instance of CertificateItem + :rtype: + ~azure.keyvault.models.CertificateItemPaged[~azure.keyvault.models.CertificateItem] :raises: :class:`KeyVaultErrorException` """ @@ -2364,7 +2442,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/certificates' + url = self.get_certificates.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -2374,6 +2452,8 @@ def internal_paging(next_link=None, raw=False): query_parameters = {} if maxresults is not None: query_parameters['maxresults'] = self._serialize.query("maxresults", maxresults, 'int', maximum=25, minimum=1) + if include_pending is not None: + query_parameters['includePending'] = self._serialize.query("include_pending", include_pending, 'bool') query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') else: @@ -2393,7 +2473,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2409,6 +2489,7 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_certificates.metadata = {'url': '/certificates'} def delete_certificate( self, vault_base_url, certificate_name, custom_headers=None, raw=False, **operation_config): @@ -2416,7 +2497,8 @@ def delete_certificate( Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions - of a certificate object. + of a certificate object. This operation requires the + certificates/delete permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -2428,15 +2510,14 @@ def delete_certificate( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`DeletedCertificateBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: DeletedCertificateBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.DeletedCertificateBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/certificates/{certificate-name}' + url = self.delete_certificate.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') @@ -2459,7 +2540,7 @@ def delete_certificate( # Construct and send request request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2474,35 +2555,35 @@ def delete_certificate( return client_raw_response return deserialized + delete_certificate.metadata = {'url': '/certificates/{certificate-name}'} def set_certificate_contacts( self, vault_base_url, contact_list=None, custom_headers=None, raw=False, **operation_config): """Sets the certificate contacts for the specified key vault. - Sets the certificate contacts for the specified key vault. - Authorization: requires the certificates/managecontacts permission. + Sets the certificate contacts for the specified key vault. This + operation requires the certificates/managecontacts permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. :type vault_base_url: str :param contact_list: The contact list for the vault certificates. - :type contact_list: list of :class:`Contact - ` + :type contact_list: list[~azure.keyvault.models.Contact] :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`Contacts ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: Contacts or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.Contacts or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ contacts = models.Contacts(contact_list=contact_list) # Construct URL - url = '/certificates/contacts' + url = self.set_certificate_contacts.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -2528,7 +2609,7 @@ def set_certificate_contacts( # Construct and send request request = self._client.put(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2543,13 +2624,15 @@ def set_certificate_contacts( return client_raw_response return deserialized + set_certificate_contacts.metadata = {'url': '/certificates/contacts'} def get_certificate_contacts( self, vault_base_url, custom_headers=None, raw=False, **operation_config): """Lists the certificate contacts for a specified key vault. The GetCertificateContacts operation returns the set of certificate - contact resources in the specified key vault. + contact resources in the specified key vault. This operation requires + the certificates/managecontacts permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -2559,14 +2642,14 @@ def get_certificate_contacts( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`Contacts ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: Contacts or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.Contacts or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/certificates/contacts' + url = self.get_certificate_contacts.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -2588,7 +2671,7 @@ def get_certificate_contacts( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2603,13 +2686,14 @@ def get_certificate_contacts( return client_raw_response return deserialized + get_certificate_contacts.metadata = {'url': '/certificates/contacts'} def delete_certificate_contacts( self, vault_base_url, custom_headers=None, raw=False, **operation_config): """Deletes the certificate contacts for a specified key vault. Deletes the certificate contacts for a specified key vault certificate. - Authorization: requires the certificates/managecontacts permission. + This operation requires the certificates/managecontacts permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -2619,14 +2703,14 @@ def delete_certificate_contacts( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`Contacts ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: Contacts or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.Contacts or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/certificates/contacts' + url = self.delete_certificate_contacts.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -2648,7 +2732,7 @@ def delete_certificate_contacts( # Construct and send request request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2663,13 +2747,15 @@ def delete_certificate_contacts( return client_raw_response return deserialized + delete_certificate_contacts.metadata = {'url': '/certificates/contacts'} def get_certificate_issuers( self, vault_base_url, maxresults=None, custom_headers=None, raw=False, **operation_config): """List certificate issuers for a specified key vault. The GetCertificateIssuers operation returns the set of certificate - issuer resources in the specified key vault. + issuer resources in the specified key vault. This operation requires + the certificates/manageissuers/getissuers permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -2682,8 +2768,9 @@ def get_certificate_issuers( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateIssuerItemPaged - ` + :return: An iterator like instance of CertificateIssuerItem + :rtype: + ~azure.keyvault.models.CertificateIssuerItemPaged[~azure.keyvault.models.CertificateIssuerItem] :raises: :class:`KeyVaultErrorException` """ @@ -2691,7 +2778,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/certificates/issuers' + url = self.get_certificate_issuers.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -2720,7 +2807,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2736,13 +2823,15 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_certificate_issuers.metadata = {'url': '/certificates/issuers'} def set_certificate_issuer( self, vault_base_url, issuer_name, provider, credentials=None, organization_details=None, attributes=None, custom_headers=None, raw=False, **operation_config): """Sets the specified certificate issuer. The SetCertificateIssuer operation adds or updates the specified - certificate issuer. + certificate issuer. This operation requires the certificates/setissuers + permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -2752,30 +2841,27 @@ def set_certificate_issuer( :param provider: The issuer provider. :type provider: str :param credentials: The credentials to be used for the issuer. - :type credentials: :class:`IssuerCredentials - ` + :type credentials: ~azure.keyvault.models.IssuerCredentials :param organization_details: Details of the organization as provided to the issuer. - :type organization_details: :class:`OrganizationDetails - ` + :type organization_details: ~azure.keyvault.models.OrganizationDetails :param attributes: Attributes of the issuer object. - :type attributes: :class:`IssuerAttributes - ` + :type attributes: ~azure.keyvault.models.IssuerAttributes :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`IssuerBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: IssuerBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.IssuerBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameter = models.CertificateIssuerSetParameters(provider=provider, credentials=credentials, organization_details=organization_details, attributes=attributes) # Construct URL - url = '/certificates/issuers/{issuer-name}' + url = self.set_certificate_issuer.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'issuer-name': self._serialize.url("issuer_name", issuer_name, 'str') @@ -2802,7 +2888,7 @@ def set_certificate_issuer( # Construct and send request request = self._client.put(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2817,13 +2903,15 @@ def set_certificate_issuer( return client_raw_response return deserialized + set_certificate_issuer.metadata = {'url': '/certificates/issuers/{issuer-name}'} def update_certificate_issuer( self, vault_base_url, issuer_name, provider=None, credentials=None, organization_details=None, attributes=None, custom_headers=None, raw=False, **operation_config): """Updates the specified certificate issuer. The UpdateCertificateIssuer operation performs an update on the - specified certificate issuer entity. + specified certificate issuer entity. This operation requires the + certificates/setissuers permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -2833,30 +2921,27 @@ def update_certificate_issuer( :param provider: The issuer provider. :type provider: str :param credentials: The credentials to be used for the issuer. - :type credentials: :class:`IssuerCredentials - ` + :type credentials: ~azure.keyvault.models.IssuerCredentials :param organization_details: Details of the organization as provided to the issuer. - :type organization_details: :class:`OrganizationDetails - ` + :type organization_details: ~azure.keyvault.models.OrganizationDetails :param attributes: Attributes of the issuer object. - :type attributes: :class:`IssuerAttributes - ` + :type attributes: ~azure.keyvault.models.IssuerAttributes :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`IssuerBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: IssuerBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.IssuerBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameter = models.CertificateIssuerUpdateParameters(provider=provider, credentials=credentials, organization_details=organization_details, attributes=attributes) # Construct URL - url = '/certificates/issuers/{issuer-name}' + url = self.update_certificate_issuer.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'issuer-name': self._serialize.url("issuer_name", issuer_name, 'str') @@ -2883,7 +2968,7 @@ def update_certificate_issuer( # Construct and send request request = self._client.patch(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2898,13 +2983,15 @@ def update_certificate_issuer( return client_raw_response return deserialized + update_certificate_issuer.metadata = {'url': '/certificates/issuers/{issuer-name}'} def get_certificate_issuer( self, vault_base_url, issuer_name, custom_headers=None, raw=False, **operation_config): """Lists the specified certificate issuer. The GetCertificateIssuer operation returns the specified certificate - issuer resources in the specified key vault. + issuer resources in the specified key vault. This operation requires + the certificates/manageissuers/getissuers permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -2916,14 +3003,14 @@ def get_certificate_issuer( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`IssuerBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: IssuerBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.IssuerBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/certificates/issuers/{issuer-name}' + url = self.get_certificate_issuer.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'issuer-name': self._serialize.url("issuer_name", issuer_name, 'str') @@ -2946,7 +3033,7 @@ def get_certificate_issuer( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -2961,13 +3048,15 @@ def get_certificate_issuer( return client_raw_response return deserialized + get_certificate_issuer.metadata = {'url': '/certificates/issuers/{issuer-name}'} def delete_certificate_issuer( self, vault_base_url, issuer_name, custom_headers=None, raw=False, **operation_config): """Deletes the specified certificate issuer. The DeleteCertificateIssuer operation permanently removes the specified - certificate issuer from the vault. + certificate issuer from the vault. This operation requires the + certificates/manageissuers/deleteissuers permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -2979,14 +3068,14 @@ def delete_certificate_issuer( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`IssuerBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: IssuerBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.IssuerBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/certificates/issuers/{issuer-name}' + url = self.delete_certificate_issuer.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'issuer-name': self._serialize.url("issuer_name", issuer_name, 'str') @@ -3009,7 +3098,7 @@ def delete_certificate_issuer( # Construct and send request request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3024,12 +3113,14 @@ def delete_certificate_issuer( return client_raw_response return deserialized + delete_certificate_issuer.metadata = {'url': '/certificates/issuers/{issuer-name}'} def create_certificate( self, vault_base_url, certificate_name, certificate_policy=None, certificate_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): - """Creates a new certificate. . + """Creates a new certificate. - If this is the first version, the certificate resource is created. + If this is the first version, the certificate resource is created. This + operation requires the certificates/create permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3037,34 +3128,32 @@ def create_certificate( :param certificate_name: The name of the certificate. :type certificate_name: str :param certificate_policy: The management policy for the certificate. - :type certificate_policy: :class:`CertificatePolicy - ` + :type certificate_policy: ~azure.keyvault.models.CertificatePolicy :param certificate_attributes: The attributes of the certificate (optional). - :type certificate_attributes: :class:`CertificateAttributes - ` + :type certificate_attributes: + ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateOperation - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: CertificateOperation or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificateOperation or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.CertificateCreateParameters(certificate_policy=certificate_policy, certificate_attributes=certificate_attributes, tags=tags) # Construct URL - url = '/certificates/{certificate-name}/create' + url = self.create_certificate.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str', pattern='^[0-9a-zA-Z-]+$') + 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str', pattern=r'^[0-9a-zA-Z-]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -3088,7 +3177,7 @@ def create_certificate( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [202]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3103,6 +3192,7 @@ def create_certificate( return client_raw_response return deserialized + create_certificate.metadata = {'url': '/certificates/{certificate-name}/create'} def import_certificate( self, vault_base_url, certificate_name, base64_encoded_certificate, password=None, certificate_policy=None, certificate_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): @@ -3111,7 +3201,8 @@ def import_certificate( Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must - contain the key as well as x509 certificates. + contain the key as well as x509 certificates. This operation requires + the certificates/import permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3126,34 +3217,32 @@ def import_certificate( encrypted, the password used for encryption. :type password: str :param certificate_policy: The management policy for the certificate. - :type certificate_policy: :class:`CertificatePolicy - ` + :type certificate_policy: ~azure.keyvault.models.CertificatePolicy :param certificate_attributes: The attributes of the certificate (optional). - :type certificate_attributes: :class:`CertificateAttributes - ` + :type certificate_attributes: + ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: CertificateBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificateBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.CertificateImportParameters(base64_encoded_certificate=base64_encoded_certificate, password=password, certificate_policy=certificate_policy, certificate_attributes=certificate_attributes, tags=tags) # Construct URL - url = '/certificates/{certificate-name}/import' + url = self.import_certificate.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str', pattern='^[0-9a-zA-Z-]+$') + 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str', pattern=r'^[0-9a-zA-Z-]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -3177,7 +3266,7 @@ def import_certificate( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3192,13 +3281,15 @@ def import_certificate( return client_raw_response return deserialized + import_certificate.metadata = {'url': '/certificates/{certificate-name}/import'} def get_certificate_versions( self, vault_base_url, certificate_name, maxresults=None, custom_headers=None, raw=False, **operation_config): """List the versions of a certificate. The GetCertificateVersions operation returns the versions of a - certificate in the specified key vault. + certificate in the specified key vault. This operation requires the + certificates/list permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3213,8 +3304,9 @@ def get_certificate_versions( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateItemPaged - ` + :return: An iterator like instance of CertificateItem + :rtype: + ~azure.keyvault.models.CertificateItemPaged[~azure.keyvault.models.CertificateItem] :raises: :class:`KeyVaultErrorException` """ @@ -3222,7 +3314,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/certificates/{certificate-name}/versions' + url = self.get_certificate_versions.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') @@ -3252,7 +3344,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3268,13 +3360,15 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_certificate_versions.metadata = {'url': '/certificates/{certificate-name}/versions'} def get_certificate_policy( self, vault_base_url, certificate_name, custom_headers=None, raw=False, **operation_config): """Lists the policy for a certificate. The GetCertificatePolicy operation returns the specified certificate - policy resources in the specified key vault. + policy resources in the specified key vault. This operation requires + the certificates/get permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3287,15 +3381,14 @@ def get_certificate_policy( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificatePolicy - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: CertificatePolicy or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificatePolicy or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/certificates/{certificate-name}/policy' + url = self.get_certificate_policy.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') @@ -3318,7 +3411,7 @@ def get_certificate_policy( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3333,12 +3426,14 @@ def get_certificate_policy( return client_raw_response return deserialized + get_certificate_policy.metadata = {'url': '/certificates/{certificate-name}/policy'} def update_certificate_policy( self, vault_base_url, certificate_name, certificate_policy, custom_headers=None, raw=False, **operation_config): """Updates the policy for a certificate. Set specified members in the certificate policy. Leave others as null. + This operation requires the certificates/update permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3347,22 +3442,20 @@ def update_certificate_policy( vault. :type certificate_name: str :param certificate_policy: The policy for the certificate. - :type certificate_policy: :class:`CertificatePolicy - ` + :type certificate_policy: ~azure.keyvault.models.CertificatePolicy :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificatePolicy - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: CertificatePolicy or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificatePolicy or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/certificates/{certificate-name}/policy' + url = self.update_certificate_policy.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') @@ -3389,7 +3482,7 @@ def update_certificate_policy( # Construct and send request request = self._client.patch(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3404,14 +3497,15 @@ def update_certificate_policy( return client_raw_response return deserialized + update_certificate_policy.metadata = {'url': '/certificates/{certificate-name}/policy'} def update_certificate( self, vault_base_url, certificate_name, certificate_version, certificate_policy=None, certificate_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): """Updates the specified attributes associated with the given certificate. The UpdateCertificate operation applies the specified update on the - given certificate; note the only elements being updated are the - certificate's attributes. + given certificate; the only elements updated are the certificate's + attributes. This operation requires the certificates/update permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3422,31 +3516,29 @@ def update_certificate( :param certificate_version: The version of the certificate. :type certificate_version: str :param certificate_policy: The management policy for the certificate. - :type certificate_policy: :class:`CertificatePolicy - ` + :type certificate_policy: ~azure.keyvault.models.CertificatePolicy :param certificate_attributes: The attributes of the certificate (optional). - :type certificate_attributes: :class:`CertificateAttributes - ` + :type certificate_attributes: + ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: CertificateBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificateBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.CertificateUpdateParameters(certificate_policy=certificate_policy, certificate_attributes=certificate_attributes, tags=tags) # Construct URL - url = '/certificates/{certificate-name}/{certificate-version}' + url = self.update_certificate.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str'), @@ -3474,7 +3566,7 @@ def update_certificate( # Construct and send request request = self._client.patch(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3489,10 +3581,13 @@ def update_certificate( return client_raw_response return deserialized + update_certificate.metadata = {'url': '/certificates/{certificate-name}/{certificate-version}'} def get_certificate( self, vault_base_url, certificate_name, certificate_version, custom_headers=None, raw=False, **operation_config): - """Gets information about a specified certificate. Authorization: requires + """Gets information about a certificate. + + Gets information about a specific certificate. This operation requires the certificates/get permission. :param vault_base_url: The vault name, for example @@ -3508,15 +3603,14 @@ def get_certificate( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: CertificateBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificateBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/certificates/{certificate-name}/{certificate-version}' + url = self.get_certificate.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str'), @@ -3540,7 +3634,7 @@ def get_certificate( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3555,11 +3649,14 @@ def get_certificate( return client_raw_response return deserialized + get_certificate.metadata = {'url': '/certificates/{certificate-name}/{certificate-version}'} def update_certificate_operation( self, vault_base_url, certificate_name, cancellation_requested, custom_headers=None, raw=False, **operation_config): - """Updates a certificate operation. Authorization: requires the - certificates/update permission. + """Updates a certificate operation. + + Updates a certificate creation operation that is already in progress. + This operation requires the certificates/update permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3574,17 +3671,16 @@ def update_certificate_operation( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateOperation - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: CertificateOperation or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificateOperation or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ certificate_operation = models.CertificateOperationUpdateParameter(cancellation_requested=cancellation_requested) # Construct URL - url = '/certificates/{certificate-name}/pending' + url = self.update_certificate_operation.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') @@ -3611,7 +3707,7 @@ def update_certificate_operation( # Construct and send request request = self._client.patch(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3626,11 +3722,14 @@ def update_certificate_operation( return client_raw_response return deserialized + update_certificate_operation.metadata = {'url': '/certificates/{certificate-name}/pending'} def get_certificate_operation( self, vault_base_url, certificate_name, custom_headers=None, raw=False, **operation_config): - """Gets the operation associated with a specified certificate. - Authorization: requires the certificates/get permission. + """Gets the creation operation of a certificate. + + Gets the creation operation associated with a specified certificate. + This operation requires the certificates/get permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3642,15 +3741,14 @@ def get_certificate_operation( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateOperation - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: CertificateOperation or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificateOperation or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/certificates/{certificate-name}/pending' + url = self.get_certificate_operation.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') @@ -3673,7 +3771,7 @@ def get_certificate_operation( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3688,11 +3786,15 @@ def get_certificate_operation( return client_raw_response return deserialized + get_certificate_operation.metadata = {'url': '/certificates/{certificate-name}/pending'} def delete_certificate_operation( self, vault_base_url, certificate_name, custom_headers=None, raw=False, **operation_config): - """Deletes the operation for a specified certificate. Authorization: - requires the certificates/update permission. + """Deletes the creation operation for a specific certificate. + + Deletes the creation operation for a specified certificate that is in + the process of being created. The certificate is no longer created. + This operation requires the certificates/update permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3704,15 +3806,14 @@ def delete_certificate_operation( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateOperation - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: CertificateOperation or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificateOperation or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/certificates/{certificate-name}/pending' + url = self.delete_certificate_operation.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') @@ -3735,7 +3836,7 @@ def delete_certificate_operation( # Construct and send request request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3750,6 +3851,7 @@ def delete_certificate_operation( return client_raw_response return deserialized + delete_certificate_operation.metadata = {'url': '/certificates/{certificate-name}/pending'} def merge_certificate( self, vault_base_url, certificate_name, x509_certificates, certificate_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): @@ -3758,7 +3860,7 @@ def merge_certificate( The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. - Authorization: requires the certificates/update permission. + This operation requires the certificates/create permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3767,30 +3869,29 @@ def merge_certificate( :type certificate_name: str :param x509_certificates: The certificate or the certificate chain to merge. - :type x509_certificates: list of bytearray + :type x509_certificates: list[bytearray] :param certificate_attributes: The attributes of the certificate (optional). - :type certificate_attributes: :class:`CertificateAttributes - ` + :type certificate_attributes: + ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: CertificateBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificateBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.CertificateMergeParameters(x509_certificates=x509_certificates, certificate_attributes=certificate_attributes, tags=tags) # Construct URL - url = '/certificates/{certificate-name}/pending/merge' + url = self.merge_certificate.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') @@ -3817,7 +3918,7 @@ def merge_certificate( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [201]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3832,15 +3933,153 @@ def merge_certificate( return client_raw_response return deserialized + merge_certificate.metadata = {'url': '/certificates/{certificate-name}/pending/merge'} + + def backup_certificate( + self, vault_base_url, certificate_name, custom_headers=None, raw=False, **operation_config): + """Backs up the specified certificate. + + Requests that a backup of the specified certificate be downloaded to + the client. All versions of the certificate will be downloaded. This + operation requires the certificates/backup permission. + + :param vault_base_url: The vault name, for example + https://myvault.vault.azure.net. + :type vault_base_url: str + :param certificate_name: The name of the certificate. + :type certificate_name: str + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: BackupCertificateResult or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.BackupCertificateResult or + ~msrest.pipeline.ClientRawResponse + :raises: + :class:`KeyVaultErrorException` + """ + # Construct URL + url = self.backup_certificate.metadata['url'] + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct and send request + request = self._client.post(url, query_parameters) + response = self._client.send(request, header_parameters, stream=False, **operation_config) + + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('BackupCertificateResult', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + backup_certificate.metadata = {'url': '/certificates/{certificate-name}/backup'} + + def restore_certificate( + self, vault_base_url, certificate_bundle_backup, custom_headers=None, raw=False, **operation_config): + """Restores a backed up certificate to a vault. + + Restores a backed up certificate, and all its versions, to a vault. + This operation requires the certificates/restore permission. + + :param vault_base_url: The vault name, for example + https://myvault.vault.azure.net. + :type vault_base_url: str + :param certificate_bundle_backup: The backup blob associated with a + certificate bundle. + :type certificate_bundle_backup: bytes + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: CertificateBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificateBundle or + ~msrest.pipeline.ClientRawResponse + :raises: + :class:`KeyVaultErrorException` + """ + parameters = models.CertificateRestoreParameters(certificate_bundle_backup=certificate_bundle_backup) + + # Construct URL + url = self.restore_certificate.metadata['url'] + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct body + body_content = self._serialize.body(parameters, 'CertificateRestoreParameters') + + # Construct and send request + request = self._client.post(url, query_parameters) + response = self._client.send( + request, header_parameters, body_content, stream=False, **operation_config) + + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('CertificateBundle', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + restore_certificate.metadata = {'url': '/certificates/restore'} def get_deleted_certificates( - self, vault_base_url, maxresults=None, custom_headers=None, raw=False, **operation_config): - """Lists the deleted certificates in the specified vault, currently + self, vault_base_url, maxresults=None, include_pending=None, custom_headers=None, raw=False, **operation_config): + """Lists the deleted certificates in the specified vault currently available for recovery. The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or - purging. + purging. This operation includes deletion-specific information. This + operation requires the certificates/get/list permission. This operation + can only be enabled on soft-delete enabled vaults. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3848,13 +4087,17 @@ def get_deleted_certificates( :param maxresults: Maximum number of results to return in a page. If not specified the service will return up to 25 results. :type maxresults: int + :param include_pending: Specifies whether to include certificates + which are not completely provisioned. + :type include_pending: bool :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`DeletedCertificateItemPaged - ` + :return: An iterator like instance of DeletedCertificateItem + :rtype: + ~azure.keyvault.models.DeletedCertificateItemPaged[~azure.keyvault.models.DeletedCertificateItem] :raises: :class:`KeyVaultErrorException` """ @@ -3862,7 +4105,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/deletedcertificates' + url = self.get_deleted_certificates.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -3872,6 +4115,8 @@ def internal_paging(next_link=None, raw=False): query_parameters = {} if maxresults is not None: query_parameters['maxresults'] = self._serialize.query("maxresults", maxresults, 'int', maximum=25, minimum=1) + if include_pending is not None: + query_parameters['includePending'] = self._serialize.query("include_pending", include_pending, 'bool') query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') else: @@ -3891,7 +4136,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3907,6 +4152,7 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_deleted_certificates.metadata = {'url': '/deletedcertificates'} def get_deleted_certificate( self, vault_base_url, certificate_name, custom_headers=None, raw=False, **operation_config): @@ -3914,7 +4160,8 @@ def get_deleted_certificate( The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled - permanent deletion and the current deletion recovery level. + permanent deletion and the current deletion recovery level. This + operation requires the certificates/get permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3926,15 +4173,14 @@ def get_deleted_certificate( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`DeletedCertificateBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: DeletedCertificateBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.DeletedCertificateBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/deletedcertificates/{certificate-name}' + url = self.get_deleted_certificate.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') @@ -3957,7 +4203,7 @@ def get_deleted_certificate( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -3972,6 +4218,7 @@ def get_deleted_certificate( return client_raw_response return deserialized + get_deleted_certificate.metadata = {'url': '/deletedcertificates/{certificate-name}'} def purge_deleted_certificate( self, vault_base_url, certificate_name, custom_headers=None, raw=False, **operation_config): @@ -3980,7 +4227,7 @@ def purge_deleted_certificate( The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify - 'Purgeable'. Requires the explicit granting of the 'purge' permission. + 'Purgeable'. This operation requires the certificate/purge permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -3992,14 +4239,13 @@ def purge_deleted_certificate( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: None - :rtype: :class:`ClientRawResponse` - if raw=true + :return: None or ClientRawResponse if raw=true + :rtype: None or ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/deletedcertificates/{certificate-name}' + url = self.purge_deleted_certificate.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') @@ -4022,7 +4268,7 @@ def purge_deleted_certificate( # Construct and send request request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [204]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4030,6 +4276,7 @@ def purge_deleted_certificate( if raw: client_raw_response = ClientRawResponse(None, response) return client_raw_response + purge_deleted_certificate.metadata = {'url': '/deletedcertificates/{certificate-name}'} def recover_deleted_certificate( self, vault_base_url, certificate_name, custom_headers=None, raw=False, **operation_config): @@ -4039,7 +4286,8 @@ def recover_deleted_certificate( The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval - (available in the deleted certificate's attributes). + (available in the deleted certificate's attributes). This operation + requires the certificates/recover permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -4051,15 +4299,14 @@ def recover_deleted_certificate( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`CertificateBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: CertificateBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.CertificateBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/deletedcertificates/{certificate-name}/recover' + url = self.recover_deleted_certificate.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), 'certificate-name': self._serialize.url("certificate_name", certificate_name, 'str') @@ -4082,7 +4329,7 @@ def recover_deleted_certificate( # Construct and send request request = self._client.post(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4097,10 +4344,12 @@ def recover_deleted_certificate( return client_raw_response return deserialized + recover_deleted_certificate.metadata = {'url': '/deletedcertificates/{certificate-name}/recover'} def get_storage_accounts( self, vault_base_url, maxresults=None, custom_headers=None, raw=False, **operation_config): - """List storage accounts managed by specified key vault. + """List storage accounts managed by the specified key vault. This + operation requires the storage/list permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -4113,8 +4362,9 @@ def get_storage_accounts( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`StorageAccountItemPaged - ` + :return: An iterator like instance of StorageAccountItem + :rtype: + ~azure.keyvault.models.StorageAccountItemPaged[~azure.keyvault.models.StorageAccountItem] :raises: :class:`KeyVaultErrorException` """ @@ -4122,7 +4372,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/storage' + url = self.get_storage_accounts.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } @@ -4151,7 +4401,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4167,10 +4417,91 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_storage_accounts.metadata = {'url': '/storage'} - def delete_storage_account( + def get_deleted_storage_accounts( + self, vault_base_url, maxresults=None, custom_headers=None, raw=False, **operation_config): + """Lists deleted storage accounts for the specified vault. + + The Get Deleted Storage Accounts operation returns the storage accounts + that have been deleted for a vault enabled for soft-delete. This + operation requires the storage/list permission. + + :param vault_base_url: The vault name, for example + https://myvault.vault.azure.net. + :type vault_base_url: str + :param maxresults: Maximum number of results to return in a page. If + not specified the service will return up to 25 results. + :type maxresults: int + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: An iterator like instance of DeletedStorageAccountItem + :rtype: + ~azure.keyvault.models.DeletedStorageAccountItemPaged[~azure.keyvault.models.DeletedStorageAccountItem] + :raises: + :class:`KeyVaultErrorException` + """ + def internal_paging(next_link=None, raw=False): + + if not next_link: + # Construct URL + url = self.get_deleted_storage_accounts.metadata['url'] + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + if maxresults is not None: + query_parameters['maxresults'] = self._serialize.query("maxresults", maxresults, 'int', maximum=25, minimum=1) + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + else: + url = next_link + query_parameters = {} + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct and send request + request = self._client.get(url, query_parameters) + response = self._client.send( + request, header_parameters, stream=False, **operation_config) + + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) + + return response + + # Deserialize response + deserialized = models.DeletedStorageAccountItemPaged(internal_paging, self._deserialize.dependencies) + + if raw: + header_dict = {} + client_raw_response = models.DeletedStorageAccountItemPaged(internal_paging, self._deserialize.dependencies, header_dict) + return client_raw_response + + return deserialized + get_deleted_storage_accounts.metadata = {'url': '/deletedstorage'} + + def get_deleted_storage_account( self, vault_base_url, storage_account_name, custom_headers=None, raw=False, **operation_config): - """Deletes a storage account. + """Gets the specified deleted storage account. + + The Get Deleted Storage Account operation returns the specified deleted + storage account along with its attributes. This operation requires the + storage/get permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -4182,17 +4513,17 @@ def delete_storage_account( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`StorageBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: DeletedStorageBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.DeletedStorageBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/storage/{storage-account-name}' + url = self.get_deleted_storage_account.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern='^[0-9a-zA-Z]+$') + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -4211,8 +4542,8 @@ def delete_storage_account( header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') # Construct and send request - request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + request = self._client.get(url, query_parameters) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4220,17 +4551,23 @@ def delete_storage_account( deserialized = None if response.status_code == 200: - deserialized = self._deserialize('StorageBundle', response) + deserialized = self._deserialize('DeletedStorageBundle', response) if raw: client_raw_response = ClientRawResponse(deserialized, response) return client_raw_response return deserialized + get_deleted_storage_account.metadata = {'url': '/deletedstorage/{storage-account-name}'} - def get_storage_account( + def purge_deleted_storage_account( self, vault_base_url, storage_account_name, custom_headers=None, raw=False, **operation_config): - """Gets information about a specified storage account. + """Permanently deletes the specified storage account. + + The purge deleted storage account operation removes the secret + permanently, without the possibility of recovery. This operation can + only be performed on a soft-delete enabled vault. This operation + requires the storage/purge permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -4242,17 +4579,16 @@ def get_storage_account( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`StorageBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: None or ClientRawResponse if raw=true + :rtype: None or ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/storage/{storage-account-name}' + url = self.purge_deleted_storage_account.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern='^[0-9a-zA-Z]+$') + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -4271,67 +4607,46 @@ def get_storage_account( header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') # Construct and send request - request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + request = self._client.delete(url, query_parameters) + response = self._client.send(request, header_parameters, stream=False, **operation_config) - if response.status_code not in [200]: + if response.status_code not in [204]: raise models.KeyVaultErrorException(self._deserialize, response) - deserialized = None - - if response.status_code == 200: - deserialized = self._deserialize('StorageBundle', response) - if raw: - client_raw_response = ClientRawResponse(deserialized, response) + client_raw_response = ClientRawResponse(None, response) return client_raw_response + purge_deleted_storage_account.metadata = {'url': '/deletedstorage/{storage-account-name}'} - return deserialized + def recover_deleted_storage_account( + self, vault_base_url, storage_account_name, custom_headers=None, raw=False, **operation_config): + """Recovers the deleted storage account. - def set_storage_account( - self, vault_base_url, storage_account_name, resource_id, active_key_name, auto_regenerate_key, regeneration_period=None, storage_account_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): - """Creates or updates a new storage account. + Recovers the deleted storage account in the specified vault. This + operation can only be performed on a soft-delete enabled vault. This + operation requires the storage/recover permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. :type vault_base_url: str :param storage_account_name: The name of the storage account. :type storage_account_name: str - :param resource_id: Storage account resource id. - :type resource_id: str - :param active_key_name: Current active storage account key name. - :type active_key_name: str - :param auto_regenerate_key: whether keyvault should manage the storage - account for the user. - :type auto_regenerate_key: bool - :param regeneration_period: The key regeneration time duration - specified in ISO-8601 format. - :type regeneration_period: str - :param storage_account_attributes: The attributes of the storage - account. - :type storage_account_attributes: :class:`StorageAccountAttributes - ` - :param tags: Application specific metadata in the form of key-value - pairs. - :type tags: dict :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`StorageBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: StorageBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.StorageBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ - parameters = models.StorageAccountCreateParameters(resource_id=resource_id, active_key_name=active_key_name, auto_regenerate_key=auto_regenerate_key, regeneration_period=regeneration_period, storage_account_attributes=storage_account_attributes, tags=tags) - # Construct URL - url = '/storage/{storage-account-name}' + url = self.recover_deleted_storage_account.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern='^[0-9a-zA-Z]+$') + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -4349,13 +4664,9 @@ def set_storage_account( if self.config.accept_language is not None: header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') - # Construct body - body_content = self._serialize.body(parameters, 'StorageAccountCreateParameters') - # Construct and send request - request = self._client.put(url, query_parameters) - response = self._client.send( - request, header_parameters, body_content, **operation_config) + request = self._client.post(url, query_parameters) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4370,50 +4681,394 @@ def set_storage_account( return client_raw_response return deserialized + recover_deleted_storage_account.metadata = {'url': '/deletedstorage/{storage-account-name}/recover'} - def update_storage_account( - self, vault_base_url, storage_account_name, active_key_name=None, auto_regenerate_key=None, regeneration_period=None, storage_account_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): - """Updates the specified attributes associated with the given storage - account. + def backup_storage_account( + self, vault_base_url, storage_account_name, custom_headers=None, raw=False, **operation_config): + """Backs up the specified storage account. + + Requests that a backup of the specified storage account be downloaded + to the client. This operation requires the storage/backup permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. :type vault_base_url: str :param storage_account_name: The name of the storage account. :type storage_account_name: str - :param active_key_name: The current active storage account key name. - :type active_key_name: str - :param auto_regenerate_key: whether keyvault should manage the storage - account for the user. - :type auto_regenerate_key: bool - :param regeneration_period: The key regeneration time duration - specified in ISO-8601 format. - :type regeneration_period: str - :param storage_account_attributes: The attributes of the storage - account. - :type storage_account_attributes: :class:`StorageAccountAttributes - ` - :param tags: Application specific metadata in the form of key-value + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: BackupStorageResult or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.BackupStorageResult or + ~msrest.pipeline.ClientRawResponse + :raises: + :class:`KeyVaultErrorException` + """ + # Construct URL + url = self.backup_storage_account.metadata['url'] + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str') + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct and send request + request = self._client.post(url, query_parameters) + response = self._client.send(request, header_parameters, stream=False, **operation_config) + + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('BackupStorageResult', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + backup_storage_account.metadata = {'url': '/storage/{storage-account-name}/backup'} + + def restore_storage_account( + self, vault_base_url, storage_bundle_backup, custom_headers=None, raw=False, **operation_config): + """Restores a backed up storage account to a vault. + + Restores a backed up storage account to a vault. This operation + requires the storage/restore permission. + + :param vault_base_url: The vault name, for example + https://myvault.vault.azure.net. + :type vault_base_url: str + :param storage_bundle_backup: The backup blob associated with a + storage account. + :type storage_bundle_backup: bytes + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: StorageBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.StorageBundle or + ~msrest.pipeline.ClientRawResponse + :raises: + :class:`KeyVaultErrorException` + """ + parameters = models.StorageRestoreParameters(storage_bundle_backup=storage_bundle_backup) + + # Construct URL + url = self.restore_storage_account.metadata['url'] + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct body + body_content = self._serialize.body(parameters, 'StorageRestoreParameters') + + # Construct and send request + request = self._client.post(url, query_parameters) + response = self._client.send( + request, header_parameters, body_content, stream=False, **operation_config) + + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('StorageBundle', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + restore_storage_account.metadata = {'url': '/storage/restore'} + + def delete_storage_account( + self, vault_base_url, storage_account_name, custom_headers=None, raw=False, **operation_config): + """Deletes a storage account. This operation requires the storage/delete + permission. + + :param vault_base_url: The vault name, for example + https://myvault.vault.azure.net. + :type vault_base_url: str + :param storage_account_name: The name of the storage account. + :type storage_account_name: str + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: DeletedStorageBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.DeletedStorageBundle or + ~msrest.pipeline.ClientRawResponse + :raises: + :class:`KeyVaultErrorException` + """ + # Construct URL + url = self.delete_storage_account.metadata['url'] + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$') + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct and send request + request = self._client.delete(url, query_parameters) + response = self._client.send(request, header_parameters, stream=False, **operation_config) + + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('DeletedStorageBundle', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + delete_storage_account.metadata = {'url': '/storage/{storage-account-name}'} + + def get_storage_account( + self, vault_base_url, storage_account_name, custom_headers=None, raw=False, **operation_config): + """Gets information about a specified storage account. This operation + requires the storage/get permission. + + :param vault_base_url: The vault name, for example + https://myvault.vault.azure.net. + :type vault_base_url: str + :param storage_account_name: The name of the storage account. + :type storage_account_name: str + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: StorageBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.StorageBundle or + ~msrest.pipeline.ClientRawResponse + :raises: + :class:`KeyVaultErrorException` + """ + # Construct URL + url = self.get_storage_account.metadata['url'] + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$') + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct and send request + request = self._client.get(url, query_parameters) + response = self._client.send(request, header_parameters, stream=False, **operation_config) + + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('StorageBundle', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + get_storage_account.metadata = {'url': '/storage/{storage-account-name}'} + + def set_storage_account( + self, vault_base_url, storage_account_name, resource_id, active_key_name, auto_regenerate_key, regeneration_period=None, storage_account_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): + """Creates or updates a new storage account. This operation requires the + storage/set permission. + + :param vault_base_url: The vault name, for example + https://myvault.vault.azure.net. + :type vault_base_url: str + :param storage_account_name: The name of the storage account. + :type storage_account_name: str + :param resource_id: Storage account resource id. + :type resource_id: str + :param active_key_name: Current active storage account key name. + :type active_key_name: str + :param auto_regenerate_key: whether keyvault should manage the storage + account for the user. + :type auto_regenerate_key: bool + :param regeneration_period: The key regeneration time duration + specified in ISO-8601 format. + :type regeneration_period: str + :param storage_account_attributes: The attributes of the storage + account. + :type storage_account_attributes: + ~azure.keyvault.models.StorageAccountAttributes + :param tags: Application specific metadata in the form of key-value + pairs. + :type tags: dict[str, str] + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: StorageBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.StorageBundle or + ~msrest.pipeline.ClientRawResponse + :raises: + :class:`KeyVaultErrorException` + """ + parameters = models.StorageAccountCreateParameters(resource_id=resource_id, active_key_name=active_key_name, auto_regenerate_key=auto_regenerate_key, regeneration_period=regeneration_period, storage_account_attributes=storage_account_attributes, tags=tags) + + # Construct URL + url = self.set_storage_account.metadata['url'] + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$') + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct body + body_content = self._serialize.body(parameters, 'StorageAccountCreateParameters') + + # Construct and send request + request = self._client.put(url, query_parameters) + response = self._client.send( + request, header_parameters, body_content, stream=False, **operation_config) + + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('StorageBundle', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + set_storage_account.metadata = {'url': '/storage/{storage-account-name}'} + + def update_storage_account( + self, vault_base_url, storage_account_name, active_key_name=None, auto_regenerate_key=None, regeneration_period=None, storage_account_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): + """Updates the specified attributes associated with the given storage + account. This operation requires the storage/set/update permission. + + :param vault_base_url: The vault name, for example + https://myvault.vault.azure.net. + :type vault_base_url: str + :param storage_account_name: The name of the storage account. + :type storage_account_name: str + :param active_key_name: The current active storage account key name. + :type active_key_name: str + :param auto_regenerate_key: whether keyvault should manage the storage + account for the user. + :type auto_regenerate_key: bool + :param regeneration_period: The key regeneration time duration + specified in ISO-8601 format. + :type regeneration_period: str + :param storage_account_attributes: The attributes of the storage + account. + :type storage_account_attributes: + ~azure.keyvault.models.StorageAccountAttributes + :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`StorageBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: StorageBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.StorageBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.StorageAccountUpdateParameters(active_key_name=active_key_name, auto_regenerate_key=auto_regenerate_key, regeneration_period=regeneration_period, storage_account_attributes=storage_account_attributes, tags=tags) # Construct URL - url = '/storage/{storage-account-name}' + url = self.update_storage_account.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern='^[0-9a-zA-Z]+$') + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -4437,7 +5092,7 @@ def update_storage_account( # Construct and send request request = self._client.patch(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4452,10 +5107,12 @@ def update_storage_account( return client_raw_response return deserialized + update_storage_account.metadata = {'url': '/storage/{storage-account-name}'} def regenerate_storage_account_key( self, vault_base_url, storage_account_name, key_name, custom_headers=None, raw=False, **operation_config): - """Regenerates the specified key value for the given storage account. + """Regenerates the specified key value for the given storage account. This + operation requires the storage/regeneratekey permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -4463,26 +5120,25 @@ def regenerate_storage_account_key( :param storage_account_name: The name of the storage account. :type storage_account_name: str :param key_name: The storage account key name. - :type key_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`StorageBundle ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: StorageBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.StorageBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ parameters = models.StorageAccountRegenerteKeyParameters(key_name=key_name) # Construct URL - url = '/storage/{storage-account-name}/regeneratekey' + url = self.regenerate_storage_account_key.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern='^[0-9a-zA-Z]+$') + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -4506,7 +5162,7 @@ def regenerate_storage_account_key( # Construct and send request request = self._client.post(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4521,11 +5177,13 @@ def regenerate_storage_account_key( return client_raw_response return deserialized + regenerate_storage_account_key.metadata = {'url': '/storage/{storage-account-name}/regeneratekey'} def get_sas_definitions( self, vault_base_url, storage_account_name, maxresults=None, custom_headers=None, raw=False, **operation_config): - """List storage SAS definitions for the given storage account. - + """List storage SAS definitions for the given storage account. This + operation requires the storage/listsas permission. + :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. :type vault_base_url: str @@ -4539,8 +5197,9 @@ def get_sas_definitions( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SasDefinitionItemPaged - ` + :return: An iterator like instance of SasDefinitionItem + :rtype: + ~azure.keyvault.models.SasDefinitionItemPaged[~azure.keyvault.models.SasDefinitionItem] :raises: :class:`KeyVaultErrorException` """ @@ -4548,10 +5207,10 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/storage/{storage-account-name}/sas' + url = self.get_sas_definitions.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern='^[0-9a-zA-Z]+$') + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -4578,7 +5237,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4594,11 +5253,95 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + get_sas_definitions.metadata = {'url': '/storage/{storage-account-name}/sas'} - def delete_sas_definition( + def get_deleted_sas_definitions( + self, vault_base_url, storage_account_name, maxresults=None, custom_headers=None, raw=False, **operation_config): + """Lists deleted SAS definitions for the specified vault and storage + account. + + The Get Deleted Sas Definitions operation returns the SAS definitions + that have been deleted for a vault enabled for soft-delete. This + operation requires the storage/listsas permission. + + :param vault_base_url: The vault name, for example + https://myvault.vault.azure.net. + :type vault_base_url: str + :param storage_account_name: The name of the storage account. + :type storage_account_name: str + :param maxresults: Maximum number of results to return in a page. If + not specified the service will return up to 25 results. + :type maxresults: int + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: An iterator like instance of DeletedSasDefinitionItem + :rtype: + ~azure.keyvault.models.DeletedSasDefinitionItemPaged[~azure.keyvault.models.DeletedSasDefinitionItem] + :raises: + :class:`KeyVaultErrorException` + """ + def internal_paging(next_link=None, raw=False): + + if not next_link: + # Construct URL + url = self.get_deleted_sas_definitions.metadata['url'] + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$') + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + if maxresults is not None: + query_parameters['maxresults'] = self._serialize.query("maxresults", maxresults, 'int', maximum=25, minimum=1) + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + else: + url = next_link + query_parameters = {} + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct and send request + request = self._client.get(url, query_parameters) + response = self._client.send( + request, header_parameters, stream=False, **operation_config) + + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) + + return response + + # Deserialize response + deserialized = models.DeletedSasDefinitionItemPaged(internal_paging, self._deserialize.dependencies) + + if raw: + header_dict = {} + client_raw_response = models.DeletedSasDefinitionItemPaged(internal_paging, self._deserialize.dependencies, header_dict) + return client_raw_response + + return deserialized + get_deleted_sas_definitions.metadata = {'url': '/deletedstorage/{storage-account-name}/sas'} + + def get_deleted_sas_definition( self, vault_base_url, storage_account_name, sas_definition_name, custom_headers=None, raw=False, **operation_config): + """Gets the specified deleted sas definition. - """Deletes a SAS definition from a specified storage account. + The Get Deleted SAS Definition operation returns the specified deleted + SAS definition along with its attributes. This operation requires the + storage/getsas permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -4612,19 +5355,18 @@ def delete_sas_definition( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SasDefinitionBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: DeletedSasDefinitionBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.DeletedSasDefinitionBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/storage/{storage-account-name}/sas/{sas-definition-name}' + url = self.get_deleted_sas_definition.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern='^[0-9a-zA-Z]+$'), - 'sas-definition-name': self._serialize.url("sas_definition_name", sas_definition_name, 'str', pattern='^[0-9a-zA-Z]+$') + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$'), + 'sas-definition-name': self._serialize.url("sas_definition_name", sas_definition_name, 'str', pattern=r'^[0-9a-zA-Z]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -4643,8 +5385,76 @@ def delete_sas_definition( header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') # Construct and send request - request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + request = self._client.get(url, query_parameters) + response = self._client.send(request, header_parameters, stream=False, **operation_config) + + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('DeletedSasDefinitionBundle', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + get_deleted_sas_definition.metadata = {'url': '/deletedstorage/{storage-account-name}/sas/{sas-definition-name}'} + + def recover_deleted_sas_definition( + self, vault_base_url, storage_account_name, sas_definition_name, custom_headers=None, raw=False, **operation_config): + """Recovers the deleted SAS definition. + + Recovers the deleted SAS definition for the specified storage account. + This operation can only be performed on a soft-delete enabled vault. + This operation requires the storage/recover permission. + + :param vault_base_url: The vault name, for example + https://myvault.vault.azure.net. + :type vault_base_url: str + :param storage_account_name: The name of the storage account. + :type storage_account_name: str + :param sas_definition_name: The name of the SAS definition. + :type sas_definition_name: str + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: SasDefinitionBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.SasDefinitionBundle or + ~msrest.pipeline.ClientRawResponse + :raises: + :class:`KeyVaultErrorException` + """ + # Construct URL + url = self.recover_deleted_sas_definition.metadata['url'] + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$'), + 'sas-definition-name': self._serialize.url("sas_definition_name", sas_definition_name, 'str', pattern=r'^[0-9a-zA-Z]+$') + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct and send request + request = self._client.post(url, query_parameters) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4659,12 +5469,77 @@ def delete_sas_definition( return client_raw_response return deserialized + recover_deleted_sas_definition.metadata = {'url': '/deletedstorage/{storage-account-name}/sas/{sas-definition-name}/recover'} - def get_sas_definition( + def delete_sas_definition( self, vault_base_url, storage_account_name, sas_definition_name, custom_headers=None, raw=False, **operation_config): + """Deletes a SAS definition from a specified storage account. This + operation requires the storage/deletesas permission. + + :param vault_base_url: The vault name, for example + https://myvault.vault.azure.net. + :type vault_base_url: str + :param storage_account_name: The name of the storage account. + :type storage_account_name: str + :param sas_definition_name: The name of the SAS definition. + :type sas_definition_name: str + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: DeletedSasDefinitionBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.DeletedSasDefinitionBundle or + ~msrest.pipeline.ClientRawResponse + :raises: + :class:`KeyVaultErrorException` + """ + # Construct URL + url = self.delete_sas_definition.metadata['url'] + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$'), + 'sas-definition-name': self._serialize.url("sas_definition_name", sas_definition_name, 'str', pattern=r'^[0-9a-zA-Z]+$') + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct and send request + request = self._client.delete(url, query_parameters) + response = self._client.send(request, header_parameters, stream=False, **operation_config) + + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('DeletedSasDefinitionBundle', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + delete_sas_definition.metadata = {'url': '/storage/{storage-account-name}/sas/{sas-definition-name}'} + + def get_sas_definition( + self, vault_base_url, storage_account_name, sas_definition_name, custom_headers=None, raw=False, **operation_config): """Gets information about a SAS definition for the specified storage - account. + account. This operation requires the storage/getsas permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -4678,19 +5553,18 @@ def get_sas_definition( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SasDefinitionBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: SasDefinitionBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.SasDefinitionBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ # Construct URL - url = '/storage/{storage-account-name}/sas/{sas-definition-name}' + url = self.get_sas_definition.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern='^[0-9a-zA-Z]+$'), - 'sas-definition-name': self._serialize.url("sas_definition_name", sas_definition_name, 'str', pattern='^[0-9a-zA-Z]+$') + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$'), + 'sas-definition-name': self._serialize.url("sas_definition_name", sas_definition_name, 'str', pattern=r'^[0-9a-zA-Z]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -4710,7 +5584,7 @@ def get_sas_definition( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4725,11 +5599,12 @@ def get_sas_definition( return client_raw_response return deserialized + get_sas_definition.metadata = {'url': '/storage/{storage-account-name}/sas/{sas-definition-name}'} def set_sas_definition( - self, vault_base_url, storage_account_name, sas_definition_name, parameters, sas_definition_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): + self, vault_base_url, storage_account_name, sas_definition_name, template_uri, sas_type, validity_period, sas_definition_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): """Creates or updates a new SAS definition for the specified storage - account. + account. This operation requires the storage/setsas permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -4738,36 +5613,42 @@ def set_sas_definition( :type storage_account_name: str :param sas_definition_name: The name of the SAS definition. :type sas_definition_name: str - :param parameters: Sas definition creation metadata in the form of - key-value pairs. - :type parameters: dict + :param template_uri: The SAS definition token template signed with an + arbitrary key. Tokens created according to the SAS definition will + have the same properties as the template. + :type template_uri: str + :param sas_type: The type of SAS token the SAS definition will create. + Possible values include: 'account', 'service' + :type sas_type: str or ~azure.keyvault.models.SasTokenType + :param validity_period: The validity period of SAS tokens created + according to the SAS definition. + :type validity_period: str :param sas_definition_attributes: The attributes of the SAS definition. - :type sas_definition_attributes: :class:`SasDefinitionAttributes - ` + :type sas_definition_attributes: + ~azure.keyvault.models.SasDefinitionAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SasDefinitionBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: SasDefinitionBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.SasDefinitionBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ - parameters1 = models.SasDefinitionCreateParameters(parameters=parameters, sas_definition_attributes=sas_definition_attributes, tags=tags) + parameters = models.SasDefinitionCreateParameters(template_uri=template_uri, sas_type=sas_type, validity_period=validity_period, sas_definition_attributes=sas_definition_attributes, tags=tags) # Construct URL - url = '/storage/{storage-account-name}/sas/{sas-definition-name}' + url = self.set_sas_definition.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern='^[0-9a-zA-Z]+$'), - 'sas-definition-name': self._serialize.url("sas_definition_name", sas_definition_name, 'str', pattern='^[0-9a-zA-Z]+$') + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$'), + 'sas-definition-name': self._serialize.url("sas_definition_name", sas_definition_name, 'str', pattern=r'^[0-9a-zA-Z]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -4786,12 +5667,12 @@ def set_sas_definition( header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') # Construct body - body_content = self._serialize.body(parameters1, 'SasDefinitionCreateParameters') + body_content = self._serialize.body(parameters, 'SasDefinitionCreateParameters') # Construct and send request request = self._client.put(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4806,11 +5687,12 @@ def set_sas_definition( return client_raw_response return deserialized + set_sas_definition.metadata = {'url': '/storage/{storage-account-name}/sas/{sas-definition-name}'} def update_sas_definition( - self, vault_base_url, storage_account_name, sas_definition_name, parameters=None, sas_definition_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): + self, vault_base_url, storage_account_name, sas_definition_name, template_uri=None, sas_type=None, validity_period=None, sas_definition_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): """Updates the specified attributes associated with the given SAS - definition. + definition. This operation requires the storage/setsas permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -4819,36 +5701,42 @@ def update_sas_definition( :type storage_account_name: str :param sas_definition_name: The name of the SAS definition. :type sas_definition_name: str - :param parameters: Sas definition update metadata in the form of - key-value pairs. - :type parameters: dict + :param template_uri: The SAS definition token template signed with an + arbitrary key. Tokens created according to the SAS definition will + have the same properties as the template. + :type template_uri: str + :param sas_type: The type of SAS token the SAS definition will create. + Possible values include: 'account', 'service' + :type sas_type: str or ~azure.keyvault.models.SasTokenType + :param validity_period: The validity period of SAS tokens created + according to the SAS definition. + :type validity_period: str :param sas_definition_attributes: The attributes of the SAS definition. - :type sas_definition_attributes: :class:`SasDefinitionAttributes - ` + :type sas_definition_attributes: + ~azure.keyvault.models.SasDefinitionAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`SasDefinitionBundle - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: SasDefinitionBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.SasDefinitionBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ - parameters1 = models.SasDefinitionUpdateParameters(parameters=parameters, sas_definition_attributes=sas_definition_attributes, tags=tags) + parameters = models.SasDefinitionUpdateParameters(template_uri=template_uri, sas_type=sas_type, validity_period=validity_period, sas_definition_attributes=sas_definition_attributes, tags=tags) # Construct URL - url = '/storage/{storage-account-name}/sas/{sas-definition-name}' + url = self.update_sas_definition.metadata['url'] path_format_arguments = { 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), - 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern='^[0-9a-zA-Z]+$'), - 'sas-definition-name': self._serialize.url("sas_definition_name", sas_definition_name, 'str', pattern='^[0-9a-zA-Z]+$') + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str', pattern=r'^[0-9a-zA-Z]+$'), + 'sas-definition-name': self._serialize.url("sas_definition_name", sas_definition_name, 'str', pattern=r'^[0-9a-zA-Z]+$') } url = self._client.format_url(url, **path_format_arguments) @@ -4867,12 +5755,12 @@ def update_sas_definition( header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') # Construct body - body_content = self._serialize.body(parameters1, 'SasDefinitionUpdateParameters') + body_content = self._serialize.body(parameters, 'SasDefinitionUpdateParameters') # Construct and send request request = self._client.patch(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) if response.status_code not in [200]: raise models.KeyVaultErrorException(self._deserialize, response) @@ -4887,3 +5775,4 @@ def update_sas_definition( return client_raw_response return deserialized + update_sas_definition.metadata = {'url': '/storage/{storage-account-name}/sas/{sas-definition-name}'} diff --git a/azure-keyvault/azure/keyvault/models/__init__.py b/azure-keyvault/azure/keyvault/models/__init__.py old mode 100755 new mode 100644 index e404b4bec3ef..70233748f308 --- a/azure-keyvault/azure/keyvault/models/__init__.py +++ b/azure-keyvault/azure/keyvault/models/__init__.py @@ -9,76 +9,164 @@ # regenerated. # -------------------------------------------------------------------------- -from .attributes import Attributes -from .json_web_key import JsonWebKey -from .key_attributes import KeyAttributes -from .key_bundle import KeyBundle -from .key_item import KeyItem -from .deleted_key_bundle import DeletedKeyBundle -from .deleted_key_item import DeletedKeyItem -from .secret_attributes import SecretAttributes -from .secret_bundle import SecretBundle -from .secret_item import SecretItem -from .deleted_secret_bundle import DeletedSecretBundle -from .deleted_secret_item import DeletedSecretItem -from .secret_restore_parameters import SecretRestoreParameters -from .certificate_attributes import CertificateAttributes -from .certificate_item import CertificateItem -from .certificate_issuer_item import CertificateIssuerItem -from .key_properties import KeyProperties -from .secret_properties import SecretProperties -from .subject_alternative_names import SubjectAlternativeNames -from .x509_certificate_properties import X509CertificateProperties -from .trigger import Trigger -from .action import Action -from .lifetime_action import LifetimeAction -from .issuer_parameters import IssuerParameters -from .certificate_policy import CertificatePolicy -from .certificate_bundle import CertificateBundle -from .deleted_certificate_bundle import DeletedCertificateBundle -from .deleted_certificate_item import DeletedCertificateItem -from .error import Error -from .certificate_operation import CertificateOperation -from .issuer_credentials import IssuerCredentials -from .administrator_details import AdministratorDetails -from .organization_details import OrganizationDetails -from .issuer_attributes import IssuerAttributes -from .issuer_bundle import IssuerBundle -from .contact import Contact -from .contacts import Contacts -from .key_create_parameters import KeyCreateParameters -from .key_import_parameters import KeyImportParameters -from .key_operations_parameters import KeyOperationsParameters -from .key_sign_parameters import KeySignParameters -from .key_verify_parameters import KeyVerifyParameters -from .key_update_parameters import KeyUpdateParameters -from .key_restore_parameters import KeyRestoreParameters -from .secret_set_parameters import SecretSetParameters -from .secret_update_parameters import SecretUpdateParameters -from .certificate_create_parameters import CertificateCreateParameters -from .certificate_import_parameters import CertificateImportParameters -from .certificate_update_parameters import CertificateUpdateParameters -from .certificate_merge_parameters import CertificateMergeParameters -from .certificate_issuer_set_parameters import CertificateIssuerSetParameters -from .certificate_issuer_update_parameters import CertificateIssuerUpdateParameters -from .certificate_operation_update_parameter import CertificateOperationUpdateParameter -from .key_operation_result import KeyOperationResult -from .key_verify_result import KeyVerifyResult -from .backup_key_result import BackupKeyResult -from .backup_secret_result import BackupSecretResult -from .pending_certificate_signing_request_result import PendingCertificateSigningRequestResult -from .storage_account_attributes import StorageAccountAttributes -from .storage_bundle import StorageBundle -from .storage_account_create_parameters import StorageAccountCreateParameters -from .storage_account_update_parameters import StorageAccountUpdateParameters -from .storage_account_regenerte_key_parameters import StorageAccountRegenerteKeyParameters -from .storage_account_item import StorageAccountItem -from .sas_definition_attributes import SasDefinitionAttributes -from .sas_definition_bundle import SasDefinitionBundle -from .sas_definition_item import SasDefinitionItem -from .sas_definition_create_parameters import SasDefinitionCreateParameters -from .sas_definition_update_parameters import SasDefinitionUpdateParameters -from .key_vault_error import KeyVaultError, KeyVaultErrorException +try: + from .attributes_py3 import Attributes + from .json_web_key_py3 import JsonWebKey + from .key_attributes_py3 import KeyAttributes + from .key_bundle_py3 import KeyBundle + from .key_item_py3 import KeyItem + from .deleted_key_bundle_py3 import DeletedKeyBundle + from .deleted_key_item_py3 import DeletedKeyItem + from .secret_attributes_py3 import SecretAttributes + from .secret_bundle_py3 import SecretBundle + from .secret_item_py3 import SecretItem + from .deleted_secret_bundle_py3 import DeletedSecretBundle + from .deleted_secret_item_py3 import DeletedSecretItem + from .secret_restore_parameters_py3 import SecretRestoreParameters + from .storage_restore_parameters_py3 import StorageRestoreParameters + from .certificate_attributes_py3 import CertificateAttributes + from .certificate_item_py3 import CertificateItem + from .certificate_issuer_item_py3 import CertificateIssuerItem + from .key_properties_py3 import KeyProperties + from .secret_properties_py3 import SecretProperties + from .subject_alternative_names_py3 import SubjectAlternativeNames + from .x509_certificate_properties_py3 import X509CertificateProperties + from .trigger_py3 import Trigger + from .action_py3 import Action + from .lifetime_action_py3 import LifetimeAction + from .issuer_parameters_py3 import IssuerParameters + from .certificate_policy_py3 import CertificatePolicy + from .certificate_bundle_py3 import CertificateBundle + from .deleted_certificate_bundle_py3 import DeletedCertificateBundle + from .deleted_certificate_item_py3 import DeletedCertificateItem + from .error_py3 import Error + from .certificate_operation_py3 import CertificateOperation + from .issuer_credentials_py3 import IssuerCredentials + from .administrator_details_py3 import AdministratorDetails + from .organization_details_py3 import OrganizationDetails + from .issuer_attributes_py3 import IssuerAttributes + from .issuer_bundle_py3 import IssuerBundle + from .contact_py3 import Contact + from .contacts_py3 import Contacts + from .key_create_parameters_py3 import KeyCreateParameters + from .key_import_parameters_py3 import KeyImportParameters + from .key_operations_parameters_py3 import KeyOperationsParameters + from .key_sign_parameters_py3 import KeySignParameters + from .key_verify_parameters_py3 import KeyVerifyParameters + from .key_update_parameters_py3 import KeyUpdateParameters + from .key_restore_parameters_py3 import KeyRestoreParameters + from .secret_set_parameters_py3 import SecretSetParameters + from .secret_update_parameters_py3 import SecretUpdateParameters + from .certificate_create_parameters_py3 import CertificateCreateParameters + from .certificate_import_parameters_py3 import CertificateImportParameters + from .certificate_update_parameters_py3 import CertificateUpdateParameters + from .certificate_merge_parameters_py3 import CertificateMergeParameters + from .certificate_issuer_set_parameters_py3 import CertificateIssuerSetParameters + from .certificate_issuer_update_parameters_py3 import CertificateIssuerUpdateParameters + from .certificate_operation_update_parameter_py3 import CertificateOperationUpdateParameter + from .key_operation_result_py3 import KeyOperationResult + from .key_verify_result_py3 import KeyVerifyResult + from .backup_key_result_py3 import BackupKeyResult + from .backup_secret_result_py3 import BackupSecretResult + from .backup_storage_result_py3 import BackupStorageResult + from .pending_certificate_signing_request_result_py3 import PendingCertificateSigningRequestResult + from .storage_account_attributes_py3 import StorageAccountAttributes + from .storage_bundle_py3 import StorageBundle + from .deleted_storage_bundle_py3 import DeletedStorageBundle + from .storage_account_create_parameters_py3 import StorageAccountCreateParameters + from .storage_account_update_parameters_py3 import StorageAccountUpdateParameters + from .storage_account_regenerte_key_parameters_py3 import StorageAccountRegenerteKeyParameters + from .storage_account_item_py3 import StorageAccountItem + from .deleted_storage_account_item_py3 import DeletedStorageAccountItem + from .sas_definition_attributes_py3 import SasDefinitionAttributes + from .sas_definition_bundle_py3 import SasDefinitionBundle + from .deleted_sas_definition_bundle_py3 import DeletedSasDefinitionBundle + from .sas_definition_item_py3 import SasDefinitionItem + from .deleted_sas_definition_item_py3 import DeletedSasDefinitionItem + from .sas_definition_create_parameters_py3 import SasDefinitionCreateParameters + from .sas_definition_update_parameters_py3 import SasDefinitionUpdateParameters + from .key_vault_error_py3 import KeyVaultError, KeyVaultErrorException + from .certificate_restore_parameters_py3 import CertificateRestoreParameters + from .backup_certificate_result_py3 import BackupCertificateResult +except (SyntaxError, ImportError): + from .attributes import Attributes + from .json_web_key import JsonWebKey + from .key_attributes import KeyAttributes + from .key_bundle import KeyBundle + from .key_item import KeyItem + from .deleted_key_bundle import DeletedKeyBundle + from .deleted_key_item import DeletedKeyItem + from .secret_attributes import SecretAttributes + from .secret_bundle import SecretBundle + from .secret_item import SecretItem + from .deleted_secret_bundle import DeletedSecretBundle + from .deleted_secret_item import DeletedSecretItem + from .secret_restore_parameters import SecretRestoreParameters + from .storage_restore_parameters import StorageRestoreParameters + from .certificate_attributes import CertificateAttributes + from .certificate_item import CertificateItem + from .certificate_issuer_item import CertificateIssuerItem + from .key_properties import KeyProperties + from .secret_properties import SecretProperties + from .subject_alternative_names import SubjectAlternativeNames + from .x509_certificate_properties import X509CertificateProperties + from .trigger import Trigger + from .action import Action + from .lifetime_action import LifetimeAction + from .issuer_parameters import IssuerParameters + from .certificate_policy import CertificatePolicy + from .certificate_bundle import CertificateBundle + from .deleted_certificate_bundle import DeletedCertificateBundle + from .deleted_certificate_item import DeletedCertificateItem + from .error import Error + from .certificate_operation import CertificateOperation + from .issuer_credentials import IssuerCredentials + from .administrator_details import AdministratorDetails + from .organization_details import OrganizationDetails + from .issuer_attributes import IssuerAttributes + from .issuer_bundle import IssuerBundle + from .contact import Contact + from .contacts import Contacts + from .key_create_parameters import KeyCreateParameters + from .key_import_parameters import KeyImportParameters + from .key_operations_parameters import KeyOperationsParameters + from .key_sign_parameters import KeySignParameters + from .key_verify_parameters import KeyVerifyParameters + from .key_update_parameters import KeyUpdateParameters + from .key_restore_parameters import KeyRestoreParameters + from .secret_set_parameters import SecretSetParameters + from .secret_update_parameters import SecretUpdateParameters + from .certificate_create_parameters import CertificateCreateParameters + from .certificate_import_parameters import CertificateImportParameters + from .certificate_update_parameters import CertificateUpdateParameters + from .certificate_merge_parameters import CertificateMergeParameters + from .certificate_issuer_set_parameters import CertificateIssuerSetParameters + from .certificate_issuer_update_parameters import CertificateIssuerUpdateParameters + from .certificate_operation_update_parameter import CertificateOperationUpdateParameter + from .key_operation_result import KeyOperationResult + from .key_verify_result import KeyVerifyResult + from .backup_key_result import BackupKeyResult + from .backup_secret_result import BackupSecretResult + from .backup_storage_result import BackupStorageResult + from .pending_certificate_signing_request_result import PendingCertificateSigningRequestResult + from .storage_account_attributes import StorageAccountAttributes + from .storage_bundle import StorageBundle + from .deleted_storage_bundle import DeletedStorageBundle + from .storage_account_create_parameters import StorageAccountCreateParameters + from .storage_account_update_parameters import StorageAccountUpdateParameters + from .storage_account_regenerte_key_parameters import StorageAccountRegenerteKeyParameters + from .storage_account_item import StorageAccountItem + from .deleted_storage_account_item import DeletedStorageAccountItem + from .sas_definition_attributes import SasDefinitionAttributes + from .sas_definition_bundle import SasDefinitionBundle + from .deleted_sas_definition_bundle import DeletedSasDefinitionBundle + from .sas_definition_item import SasDefinitionItem + from .deleted_sas_definition_item import DeletedSasDefinitionItem + from .sas_definition_create_parameters import SasDefinitionCreateParameters + from .sas_definition_update_parameters import SasDefinitionUpdateParameters + from .key_vault_error import KeyVaultError, KeyVaultErrorException + from .certificate_restore_parameters import CertificateRestoreParameters + from .backup_certificate_result import BackupCertificateResult from .key_item_paged import KeyItemPaged from .deleted_key_item_paged import DeletedKeyItemPaged from .secret_item_paged import SecretItemPaged @@ -87,15 +175,19 @@ from .certificate_issuer_item_paged import CertificateIssuerItemPaged from .deleted_certificate_item_paged import DeletedCertificateItemPaged from .storage_account_item_paged import StorageAccountItemPaged +from .deleted_storage_account_item_paged import DeletedStorageAccountItemPaged from .sas_definition_item_paged import SasDefinitionItemPaged +from .deleted_sas_definition_item_paged import DeletedSasDefinitionItemPaged from .key_vault_client_enums import ( JsonWebKeyType, + JsonWebKeyCurveName, DeletionRecoveryLevel, KeyUsageType, ActionType, JsonWebKeyOperation, JsonWebKeyEncryptionAlgorithm, JsonWebKeySignatureAlgorithm, + SasTokenType, ) __all__ = [ @@ -112,6 +204,7 @@ 'DeletedSecretBundle', 'DeletedSecretItem', 'SecretRestoreParameters', + 'StorageRestoreParameters', 'CertificateAttributes', 'CertificateItem', 'CertificateIssuerItem', @@ -156,19 +249,26 @@ 'KeyVerifyResult', 'BackupKeyResult', 'BackupSecretResult', + 'BackupStorageResult', 'PendingCertificateSigningRequestResult', 'StorageAccountAttributes', 'StorageBundle', + 'DeletedStorageBundle', 'StorageAccountCreateParameters', 'StorageAccountUpdateParameters', 'StorageAccountRegenerteKeyParameters', 'StorageAccountItem', + 'DeletedStorageAccountItem', 'SasDefinitionAttributes', 'SasDefinitionBundle', + 'DeletedSasDefinitionBundle', 'SasDefinitionItem', + 'DeletedSasDefinitionItem', 'SasDefinitionCreateParameters', 'SasDefinitionUpdateParameters', 'KeyVaultError', 'KeyVaultErrorException', + 'CertificateRestoreParameters', + 'BackupCertificateResult', 'KeyItemPaged', 'DeletedKeyItemPaged', 'SecretItemPaged', @@ -177,12 +277,16 @@ 'CertificateIssuerItemPaged', 'DeletedCertificateItemPaged', 'StorageAccountItemPaged', + 'DeletedStorageAccountItemPaged', 'SasDefinitionItemPaged', + 'DeletedSasDefinitionItemPaged', 'JsonWebKeyType', + 'JsonWebKeyCurveName', 'DeletionRecoveryLevel', 'KeyUsageType', 'ActionType', 'JsonWebKeyOperation', 'JsonWebKeyEncryptionAlgorithm', 'JsonWebKeySignatureAlgorithm', + 'SasTokenType', ] diff --git a/azure-keyvault/azure/keyvault/models/action.py b/azure-keyvault/azure/keyvault/models/action.py old mode 100755 new mode 100644 index f11e1373fbd4..23a4a13670db --- a/azure-keyvault/azure/keyvault/models/action.py +++ b/azure-keyvault/azure/keyvault/models/action.py @@ -17,13 +17,13 @@ class Action(Model): :param action_type: The type of the action. Possible values include: 'EmailContacts', 'AutoRenew' - :type action_type: str or :class:`ActionType - ` + :type action_type: str or ~azure.keyvault.models.ActionType """ _attribute_map = { 'action_type': {'key': 'action_type', 'type': 'ActionType'}, } - def __init__(self, action_type=None): - self.action_type = action_type + def __init__(self, **kwargs): + super(Action, self).__init__(**kwargs) + self.action_type = kwargs.get('action_type', None) diff --git a/azure-keyvault/azure/keyvault/models/action_py3.py b/azure-keyvault/azure/keyvault/models/action_py3.py new file mode 100644 index 000000000000..285ffc71cb57 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/action_py3.py @@ -0,0 +1,29 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class Action(Model): + """The action that will be executed. + + :param action_type: The type of the action. Possible values include: + 'EmailContacts', 'AutoRenew' + :type action_type: str or ~azure.keyvault.models.ActionType + """ + + _attribute_map = { + 'action_type': {'key': 'action_type', 'type': 'ActionType'}, + } + + def __init__(self, *, action_type=None, **kwargs) -> None: + super(Action, self).__init__(**kwargs) + self.action_type = action_type diff --git a/azure-keyvault/azure/keyvault/models/administrator_details.py b/azure-keyvault/azure/keyvault/models/administrator_details.py old mode 100755 new mode 100644 index 05b62173448e..4026a83a5da4 --- a/azure-keyvault/azure/keyvault/models/administrator_details.py +++ b/azure-keyvault/azure/keyvault/models/administrator_details.py @@ -32,8 +32,9 @@ class AdministratorDetails(Model): 'phone': {'key': 'phone', 'type': 'str'}, } - def __init__(self, first_name=None, last_name=None, email_address=None, phone=None): - self.first_name = first_name - self.last_name = last_name - self.email_address = email_address - self.phone = phone + def __init__(self, **kwargs): + super(AdministratorDetails, self).__init__(**kwargs) + self.first_name = kwargs.get('first_name', None) + self.last_name = kwargs.get('last_name', None) + self.email_address = kwargs.get('email_address', None) + self.phone = kwargs.get('phone', None) diff --git a/azure-keyvault/azure/keyvault/models/administrator_details_py3.py b/azure-keyvault/azure/keyvault/models/administrator_details_py3.py new file mode 100644 index 000000000000..24a8ef8a3a1b --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/administrator_details_py3.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class AdministratorDetails(Model): + """Details of the organization administrator of the certificate issuer. + + :param first_name: First name. + :type first_name: str + :param last_name: Last name. + :type last_name: str + :param email_address: Email addresss. + :type email_address: str + :param phone: Phone number. + :type phone: str + """ + + _attribute_map = { + 'first_name': {'key': 'first_name', 'type': 'str'}, + 'last_name': {'key': 'last_name', 'type': 'str'}, + 'email_address': {'key': 'email', 'type': 'str'}, + 'phone': {'key': 'phone', 'type': 'str'}, + } + + def __init__(self, *, first_name: str=None, last_name: str=None, email_address: str=None, phone: str=None, **kwargs) -> None: + super(AdministratorDetails, self).__init__(**kwargs) + self.first_name = first_name + self.last_name = last_name + self.email_address = email_address + self.phone = phone diff --git a/azure-keyvault/azure/keyvault/models/attributes.py b/azure-keyvault/azure/keyvault/models/attributes.py old mode 100755 new mode 100644 index 57c9b432d63f..5c89678b313f --- a/azure-keyvault/azure/keyvault/models/attributes.py +++ b/azure-keyvault/azure/keyvault/models/attributes.py @@ -43,9 +43,10 @@ class Attributes(Model): 'updated': {'key': 'updated', 'type': 'unix-time'}, } - def __init__(self, enabled=None, not_before=None, expires=None): - self.enabled = enabled - self.not_before = not_before - self.expires = expires + def __init__(self, **kwargs): + super(Attributes, self).__init__(**kwargs) + self.enabled = kwargs.get('enabled', None) + self.not_before = kwargs.get('not_before', None) + self.expires = kwargs.get('expires', None) self.created = None self.updated = None diff --git a/azure-keyvault/azure/keyvault/models/attributes_py3.py b/azure-keyvault/azure/keyvault/models/attributes_py3.py new file mode 100644 index 000000000000..16fe316c84cb --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/attributes_py3.py @@ -0,0 +1,52 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class Attributes(Model): + """The object attributes managed by the KeyVault service. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param enabled: Determines whether the object is enabled. + :type enabled: bool + :param not_before: Not before date in UTC. + :type not_before: datetime + :param expires: Expiry date in UTC. + :type expires: datetime + :ivar created: Creation time in UTC. + :vartype created: datetime + :ivar updated: Last updated time in UTC. + :vartype updated: datetime + """ + + _validation = { + 'created': {'readonly': True}, + 'updated': {'readonly': True}, + } + + _attribute_map = { + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'not_before': {'key': 'nbf', 'type': 'unix-time'}, + 'expires': {'key': 'exp', 'type': 'unix-time'}, + 'created': {'key': 'created', 'type': 'unix-time'}, + 'updated': {'key': 'updated', 'type': 'unix-time'}, + } + + def __init__(self, *, enabled: bool=None, not_before=None, expires=None, **kwargs) -> None: + super(Attributes, self).__init__(**kwargs) + self.enabled = enabled + self.not_before = not_before + self.expires = expires + self.created = None + self.updated = None diff --git a/azure-keyvault/azure/keyvault/models/backup_certificate_result.py b/azure-keyvault/azure/keyvault/models/backup_certificate_result.py new file mode 100644 index 000000000000..670034f28a2a --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/backup_certificate_result.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class BackupCertificateResult(Model): + """The backup certificate result, containing the backup blob. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar value: The backup blob containing the backed up certificate. + :vartype value: bytes + """ + + _validation = { + 'value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, **kwargs): + super(BackupCertificateResult, self).__init__(**kwargs) + self.value = None diff --git a/azure-keyvault/azure/keyvault/models/backup_certificate_result_py3.py b/azure-keyvault/azure/keyvault/models/backup_certificate_result_py3.py new file mode 100644 index 000000000000..1d65f5dd8cc9 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/backup_certificate_result_py3.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class BackupCertificateResult(Model): + """The backup certificate result, containing the backup blob. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar value: The backup blob containing the backed up certificate. + :vartype value: bytes + """ + + _validation = { + 'value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, **kwargs) -> None: + super(BackupCertificateResult, self).__init__(**kwargs) + self.value = None diff --git a/azure-keyvault/azure/keyvault/models/backup_key_result.py b/azure-keyvault/azure/keyvault/models/backup_key_result.py old mode 100755 new mode 100644 index 2e977906ae41..4aaa5fc2ebe8 --- a/azure-keyvault/azure/keyvault/models/backup_key_result.py +++ b/azure-keyvault/azure/keyvault/models/backup_key_result.py @@ -30,5 +30,6 @@ class BackupKeyResult(Model): 'value': {'key': 'value', 'type': 'base64'}, } - def __init__(self): + def __init__(self, **kwargs): + super(BackupKeyResult, self).__init__(**kwargs) self.value = None diff --git a/azure-keyvault/azure/keyvault/models/backup_key_result_py3.py b/azure-keyvault/azure/keyvault/models/backup_key_result_py3.py new file mode 100644 index 000000000000..7865e8701f76 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/backup_key_result_py3.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class BackupKeyResult(Model): + """The backup key result, containing the backup blob. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar value: The backup blob containing the backed up key. + :vartype value: bytes + """ + + _validation = { + 'value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, **kwargs) -> None: + super(BackupKeyResult, self).__init__(**kwargs) + self.value = None diff --git a/azure-keyvault/azure/keyvault/models/backup_secret_result.py b/azure-keyvault/azure/keyvault/models/backup_secret_result.py old mode 100755 new mode 100644 index 5ae53f2f3467..4f803fc0cefe --- a/azure-keyvault/azure/keyvault/models/backup_secret_result.py +++ b/azure-keyvault/azure/keyvault/models/backup_secret_result.py @@ -30,5 +30,6 @@ class BackupSecretResult(Model): 'value': {'key': 'value', 'type': 'base64'}, } - def __init__(self): + def __init__(self, **kwargs): + super(BackupSecretResult, self).__init__(**kwargs) self.value = None diff --git a/azure-keyvault/azure/keyvault/models/backup_secret_result_py3.py b/azure-keyvault/azure/keyvault/models/backup_secret_result_py3.py new file mode 100644 index 000000000000..444ba7fe0fb5 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/backup_secret_result_py3.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class BackupSecretResult(Model): + """The backup secret result, containing the backup blob. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar value: The backup blob containing the backed up secret. + :vartype value: bytes + """ + + _validation = { + 'value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, **kwargs) -> None: + super(BackupSecretResult, self).__init__(**kwargs) + self.value = None diff --git a/azure-keyvault/azure/keyvault/models/backup_storage_result.py b/azure-keyvault/azure/keyvault/models/backup_storage_result.py new file mode 100644 index 000000000000..0847f47dd5c1 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/backup_storage_result.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class BackupStorageResult(Model): + """The backup storage result, containing the backup blob. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar value: The backup blob containing the backed up storage account. + :vartype value: bytes + """ + + _validation = { + 'value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, **kwargs): + super(BackupStorageResult, self).__init__(**kwargs) + self.value = None diff --git a/azure-keyvault/azure/keyvault/models/backup_storage_result_py3.py b/azure-keyvault/azure/keyvault/models/backup_storage_result_py3.py new file mode 100644 index 000000000000..26b965744a7a --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/backup_storage_result_py3.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class BackupStorageResult(Model): + """The backup storage result, containing the backup blob. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar value: The backup blob containing the backed up storage account. + :vartype value: bytes + """ + + _validation = { + 'value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, **kwargs) -> None: + super(BackupStorageResult, self).__init__(**kwargs) + self.value = None diff --git a/azure-keyvault/azure/keyvault/models/certificate_attributes.py b/azure-keyvault/azure/keyvault/models/certificate_attributes.py old mode 100755 new mode 100644 index 48162bdfac8c..a372c204ff0e --- a/azure-keyvault/azure/keyvault/models/certificate_attributes.py +++ b/azure-keyvault/azure/keyvault/models/certificate_attributes.py @@ -35,8 +35,8 @@ class CertificateAttributes(Attributes): retention interval. Possible values include: 'Purgeable', 'Recoverable+Purgeable', 'Recoverable', 'Recoverable+ProtectedSubscription' - :vartype recovery_level: str or :class:`DeletionRecoveryLevel - ` + :vartype recovery_level: str or + ~azure.keyvault.models.DeletionRecoveryLevel """ _validation = { @@ -54,6 +54,6 @@ class CertificateAttributes(Attributes): 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, } - def __init__(self, enabled=None, not_before=None, expires=None): - super(CertificateAttributes, self).__init__(enabled=enabled, not_before=not_before, expires=expires) + def __init__(self, **kwargs): + super(CertificateAttributes, self).__init__(**kwargs) self.recovery_level = None diff --git a/azure-keyvault/azure/keyvault/models/certificate_attributes_py3.py b/azure-keyvault/azure/keyvault/models/certificate_attributes_py3.py new file mode 100644 index 000000000000..0a977c07a8b0 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_attributes_py3.py @@ -0,0 +1,59 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .attributes_py3 import Attributes + + +class CertificateAttributes(Attributes): + """The certificate management attributes. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param enabled: Determines whether the object is enabled. + :type enabled: bool + :param not_before: Not before date in UTC. + :type not_before: datetime + :param expires: Expiry date in UTC. + :type expires: datetime + :ivar created: Creation time in UTC. + :vartype created: datetime + :ivar updated: Last updated time in UTC. + :vartype updated: datetime + :ivar recovery_level: Reflects the deletion recovery level currently in + effect for certificates in the current vault. If it contains 'Purgeable', + the certificate can be permanently deleted by a privileged user; + otherwise, only the system can purge the certificate, at the end of the + retention interval. Possible values include: 'Purgeable', + 'Recoverable+Purgeable', 'Recoverable', + 'Recoverable+ProtectedSubscription' + :vartype recovery_level: str or + ~azure.keyvault.models.DeletionRecoveryLevel + """ + + _validation = { + 'created': {'readonly': True}, + 'updated': {'readonly': True}, + 'recovery_level': {'readonly': True}, + } + + _attribute_map = { + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'not_before': {'key': 'nbf', 'type': 'unix-time'}, + 'expires': {'key': 'exp', 'type': 'unix-time'}, + 'created': {'key': 'created', 'type': 'unix-time'}, + 'updated': {'key': 'updated', 'type': 'unix-time'}, + 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, + } + + def __init__(self, *, enabled: bool=None, not_before=None, expires=None, **kwargs) -> None: + super(CertificateAttributes, self).__init__(enabled=enabled, not_before=not_before, expires=expires, **kwargs) + self.recovery_level = None diff --git a/azure-keyvault/azure/keyvault/models/certificate_bundle.py b/azure-keyvault/azure/keyvault/models/certificate_bundle.py old mode 100755 new mode 100644 index d07959405672..7e06eccada5d --- a/azure-keyvault/azure/keyvault/models/certificate_bundle.py +++ b/azure-keyvault/azure/keyvault/models/certificate_bundle.py @@ -27,17 +27,15 @@ class CertificateBundle(Model): :ivar x509_thumbprint: Thumbprint of the certificate. :vartype x509_thumbprint: bytes :ivar policy: The management policy. - :vartype policy: :class:`CertificatePolicy - ` + :vartype policy: ~azure.keyvault.models.CertificatePolicy :param cer: CER contents of x509 certificate. :type cer: bytearray :param content_type: The content type of the secret. :type content_type: str :param attributes: The certificate attributes. - :type attributes: :class:`CertificateAttributes - ` + :type attributes: ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs - :type tags: dict + :type tags: dict[str, str] """ _validation = { @@ -60,13 +58,14 @@ class CertificateBundle(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, cer=None, content_type=None, attributes=None, tags=None): + def __init__(self, **kwargs): + super(CertificateBundle, self).__init__(**kwargs) self.id = None self.kid = None self.sid = None self.x509_thumbprint = None self.policy = None - self.cer = cer - self.content_type = content_type - self.attributes = attributes - self.tags = tags + self.cer = kwargs.get('cer', None) + self.content_type = kwargs.get('content_type', None) + self.attributes = kwargs.get('attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_bundle_py3.py b/azure-keyvault/azure/keyvault/models/certificate_bundle_py3.py new file mode 100644 index 000000000000..f1870ec6268a --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_bundle_py3.py @@ -0,0 +1,71 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateBundle(Model): + """A certificate bundle consists of a certificate (X509) plus its attributes. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The certificate id. + :vartype id: str + :ivar kid: The key id. + :vartype kid: str + :ivar sid: The secret id. + :vartype sid: str + :ivar x509_thumbprint: Thumbprint of the certificate. + :vartype x509_thumbprint: bytes + :ivar policy: The management policy. + :vartype policy: ~azure.keyvault.models.CertificatePolicy + :param cer: CER contents of x509 certificate. + :type cer: bytearray + :param content_type: The content type of the secret. + :type content_type: str + :param attributes: The certificate attributes. + :type attributes: ~azure.keyvault.models.CertificateAttributes + :param tags: Application specific metadata in the form of key-value pairs + :type tags: dict[str, str] + """ + + _validation = { + 'id': {'readonly': True}, + 'kid': {'readonly': True}, + 'sid': {'readonly': True}, + 'x509_thumbprint': {'readonly': True}, + 'policy': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'kid': {'key': 'kid', 'type': 'str'}, + 'sid': {'key': 'sid', 'type': 'str'}, + 'x509_thumbprint': {'key': 'x5t', 'type': 'base64'}, + 'policy': {'key': 'policy', 'type': 'CertificatePolicy'}, + 'cer': {'key': 'cer', 'type': 'bytearray'}, + 'content_type': {'key': 'contentType', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'CertificateAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, cer: bytearray=None, content_type: str=None, attributes=None, tags=None, **kwargs) -> None: + super(CertificateBundle, self).__init__(**kwargs) + self.id = None + self.kid = None + self.sid = None + self.x509_thumbprint = None + self.policy = None + self.cer = cer + self.content_type = content_type + self.attributes = attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/certificate_create_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_create_parameters.py old mode 100755 new mode 100644 index bfbec2edbab8..67b72b43f738 --- a/azure-keyvault/azure/keyvault/models/certificate_create_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_create_parameters.py @@ -16,14 +16,12 @@ class CertificateCreateParameters(Model): """The certificate create parameters. :param certificate_policy: The management policy for the certificate. - :type certificate_policy: :class:`CertificatePolicy - ` + :type certificate_policy: ~azure.keyvault.models.CertificatePolicy :param certificate_attributes: The attributes of the certificate (optional). - :type certificate_attributes: :class:`CertificateAttributes - ` + :type certificate_attributes: ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] """ _attribute_map = { @@ -32,7 +30,8 @@ class CertificateCreateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, certificate_policy=None, certificate_attributes=None, tags=None): - self.certificate_policy = certificate_policy - self.certificate_attributes = certificate_attributes - self.tags = tags + def __init__(self, **kwargs): + super(CertificateCreateParameters, self).__init__(**kwargs) + self.certificate_policy = kwargs.get('certificate_policy', None) + self.certificate_attributes = kwargs.get('certificate_attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_create_parameters_py3.py b/azure-keyvault/azure/keyvault/models/certificate_create_parameters_py3.py new file mode 100644 index 000000000000..674f3eb0a63c --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_create_parameters_py3.py @@ -0,0 +1,37 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateCreateParameters(Model): + """The certificate create parameters. + + :param certificate_policy: The management policy for the certificate. + :type certificate_policy: ~azure.keyvault.models.CertificatePolicy + :param certificate_attributes: The attributes of the certificate + (optional). + :type certificate_attributes: ~azure.keyvault.models.CertificateAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + """ + + _attribute_map = { + 'certificate_policy': {'key': 'policy', 'type': 'CertificatePolicy'}, + 'certificate_attributes': {'key': 'attributes', 'type': 'CertificateAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, certificate_policy=None, certificate_attributes=None, tags=None, **kwargs) -> None: + super(CertificateCreateParameters, self).__init__(**kwargs) + self.certificate_policy = certificate_policy + self.certificate_attributes = certificate_attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/certificate_import_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_import_parameters.py old mode 100755 new mode 100644 index d0b6136a0397..635afbd1361d --- a/azure-keyvault/azure/keyvault/models/certificate_import_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_import_parameters.py @@ -15,22 +15,22 @@ class CertificateImportParameters(Model): """The certificate import parameters. - :param base64_encoded_certificate: Base64 encoded representation of the - certificate object to import. This certificate needs to contain the + All required parameters must be populated in order to send to Azure. + + :param base64_encoded_certificate: Required. Base64 encoded representation + of the certificate object to import. This certificate needs to contain the private key. :type base64_encoded_certificate: str :param password: If the private key in base64EncodedCertificate is encrypted, the password used for encryption. :type password: str :param certificate_policy: The management policy for the certificate. - :type certificate_policy: :class:`CertificatePolicy - ` + :type certificate_policy: ~azure.keyvault.models.CertificatePolicy :param certificate_attributes: The attributes of the certificate (optional). - :type certificate_attributes: :class:`CertificateAttributes - ` + :type certificate_attributes: ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] """ _validation = { @@ -45,9 +45,10 @@ class CertificateImportParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, base64_encoded_certificate, password=None, certificate_policy=None, certificate_attributes=None, tags=None): - self.base64_encoded_certificate = base64_encoded_certificate - self.password = password - self.certificate_policy = certificate_policy - self.certificate_attributes = certificate_attributes - self.tags = tags + def __init__(self, **kwargs): + super(CertificateImportParameters, self).__init__(**kwargs) + self.base64_encoded_certificate = kwargs.get('base64_encoded_certificate', None) + self.password = kwargs.get('password', None) + self.certificate_policy = kwargs.get('certificate_policy', None) + self.certificate_attributes = kwargs.get('certificate_attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_import_parameters_py3.py b/azure-keyvault/azure/keyvault/models/certificate_import_parameters_py3.py new file mode 100644 index 000000000000..f30ad37e711c --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_import_parameters_py3.py @@ -0,0 +1,54 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateImportParameters(Model): + """The certificate import parameters. + + All required parameters must be populated in order to send to Azure. + + :param base64_encoded_certificate: Required. Base64 encoded representation + of the certificate object to import. This certificate needs to contain the + private key. + :type base64_encoded_certificate: str + :param password: If the private key in base64EncodedCertificate is + encrypted, the password used for encryption. + :type password: str + :param certificate_policy: The management policy for the certificate. + :type certificate_policy: ~azure.keyvault.models.CertificatePolicy + :param certificate_attributes: The attributes of the certificate + (optional). + :type certificate_attributes: ~azure.keyvault.models.CertificateAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + """ + + _validation = { + 'base64_encoded_certificate': {'required': True}, + } + + _attribute_map = { + 'base64_encoded_certificate': {'key': 'value', 'type': 'str'}, + 'password': {'key': 'pwd', 'type': 'str'}, + 'certificate_policy': {'key': 'policy', 'type': 'CertificatePolicy'}, + 'certificate_attributes': {'key': 'attributes', 'type': 'CertificateAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, base64_encoded_certificate: str, password: str=None, certificate_policy=None, certificate_attributes=None, tags=None, **kwargs) -> None: + super(CertificateImportParameters, self).__init__(**kwargs) + self.base64_encoded_certificate = base64_encoded_certificate + self.password = password + self.certificate_policy = certificate_policy + self.certificate_attributes = certificate_attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/certificate_issuer_item.py b/azure-keyvault/azure/keyvault/models/certificate_issuer_item.py old mode 100755 new mode 100644 index 66012dd1173f..98713b2ab4c1 --- a/azure-keyvault/azure/keyvault/models/certificate_issuer_item.py +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_item.py @@ -26,6 +26,7 @@ class CertificateIssuerItem(Model): 'provider': {'key': 'provider', 'type': 'str'}, } - def __init__(self, id=None, provider=None): - self.id = id - self.provider = provider + def __init__(self, **kwargs): + super(CertificateIssuerItem, self).__init__(**kwargs) + self.id = kwargs.get('id', None) + self.provider = kwargs.get('provider', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_issuer_item_paged.py b/azure-keyvault/azure/keyvault/models/certificate_issuer_item_paged.py old mode 100755 new mode 100644 index f13037a9adf7..aea372a5c6a1 --- a/azure-keyvault/azure/keyvault/models/certificate_issuer_item_paged.py +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_item_paged.py @@ -14,7 +14,7 @@ class CertificateIssuerItemPaged(Paged): """ - A paging container for iterating over a list of CertificateIssuerItem object + A paging container for iterating over a list of :class:`CertificateIssuerItem ` object """ _attribute_map = { diff --git a/azure-keyvault/azure/keyvault/models/certificate_issuer_item_py3.py b/azure-keyvault/azure/keyvault/models/certificate_issuer_item_py3.py new file mode 100644 index 000000000000..f11aa78f8cdd --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_item_py3.py @@ -0,0 +1,32 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateIssuerItem(Model): + """The certificate issuer item containing certificate issuer metadata. + + :param id: Certificate Identifier. + :type id: str + :param provider: The issuer provider. + :type provider: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'provider': {'key': 'provider', 'type': 'str'}, + } + + def __init__(self, *, id: str=None, provider: str=None, **kwargs) -> None: + super(CertificateIssuerItem, self).__init__(**kwargs) + self.id = id + self.provider = provider diff --git a/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters.py old mode 100755 new mode 100644 index 6301f1f82bed..733740938202 --- a/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters.py @@ -15,18 +15,17 @@ class CertificateIssuerSetParameters(Model): """The certificate issuer set parameters. - :param provider: The issuer provider. + All required parameters must be populated in order to send to Azure. + + :param provider: Required. The issuer provider. :type provider: str :param credentials: The credentials to be used for the issuer. - :type credentials: :class:`IssuerCredentials - ` + :type credentials: ~azure.keyvault.models.IssuerCredentials :param organization_details: Details of the organization as provided to the issuer. - :type organization_details: :class:`OrganizationDetails - ` + :type organization_details: ~azure.keyvault.models.OrganizationDetails :param attributes: Attributes of the issuer object. - :type attributes: :class:`IssuerAttributes - ` + :type attributes: ~azure.keyvault.models.IssuerAttributes """ _validation = { @@ -40,8 +39,9 @@ class CertificateIssuerSetParameters(Model): 'attributes': {'key': 'attributes', 'type': 'IssuerAttributes'}, } - def __init__(self, provider, credentials=None, organization_details=None, attributes=None): - self.provider = provider - self.credentials = credentials - self.organization_details = organization_details - self.attributes = attributes + def __init__(self, **kwargs): + super(CertificateIssuerSetParameters, self).__init__(**kwargs) + self.provider = kwargs.get('provider', None) + self.credentials = kwargs.get('credentials', None) + self.organization_details = kwargs.get('organization_details', None) + self.attributes = kwargs.get('attributes', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters_py3.py b/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters_py3.py new file mode 100644 index 000000000000..6a36eaef3ae9 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters_py3.py @@ -0,0 +1,47 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateIssuerSetParameters(Model): + """The certificate issuer set parameters. + + All required parameters must be populated in order to send to Azure. + + :param provider: Required. The issuer provider. + :type provider: str + :param credentials: The credentials to be used for the issuer. + :type credentials: ~azure.keyvault.models.IssuerCredentials + :param organization_details: Details of the organization as provided to + the issuer. + :type organization_details: ~azure.keyvault.models.OrganizationDetails + :param attributes: Attributes of the issuer object. + :type attributes: ~azure.keyvault.models.IssuerAttributes + """ + + _validation = { + 'provider': {'required': True}, + } + + _attribute_map = { + 'provider': {'key': 'provider', 'type': 'str'}, + 'credentials': {'key': 'credentials', 'type': 'IssuerCredentials'}, + 'organization_details': {'key': 'org_details', 'type': 'OrganizationDetails'}, + 'attributes': {'key': 'attributes', 'type': 'IssuerAttributes'}, + } + + def __init__(self, *, provider: str, credentials=None, organization_details=None, attributes=None, **kwargs) -> None: + super(CertificateIssuerSetParameters, self).__init__(**kwargs) + self.provider = provider + self.credentials = credentials + self.organization_details = organization_details + self.attributes = attributes diff --git a/azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters.py old mode 100755 new mode 100644 index a5590e044059..44347583ed42 --- a/azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters.py @@ -18,15 +18,12 @@ class CertificateIssuerUpdateParameters(Model): :param provider: The issuer provider. :type provider: str :param credentials: The credentials to be used for the issuer. - :type credentials: :class:`IssuerCredentials - ` + :type credentials: ~azure.keyvault.models.IssuerCredentials :param organization_details: Details of the organization as provided to the issuer. - :type organization_details: :class:`OrganizationDetails - ` + :type organization_details: ~azure.keyvault.models.OrganizationDetails :param attributes: Attributes of the issuer object. - :type attributes: :class:`IssuerAttributes - ` + :type attributes: ~azure.keyvault.models.IssuerAttributes """ _attribute_map = { @@ -36,8 +33,9 @@ class CertificateIssuerUpdateParameters(Model): 'attributes': {'key': 'attributes', 'type': 'IssuerAttributes'}, } - def __init__(self, provider=None, credentials=None, organization_details=None, attributes=None): - self.provider = provider - self.credentials = credentials - self.organization_details = organization_details - self.attributes = attributes + def __init__(self, **kwargs): + super(CertificateIssuerUpdateParameters, self).__init__(**kwargs) + self.provider = kwargs.get('provider', None) + self.credentials = kwargs.get('credentials', None) + self.organization_details = kwargs.get('organization_details', None) + self.attributes = kwargs.get('attributes', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters_py3.py b/azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters_py3.py new file mode 100644 index 000000000000..0b06096a438d --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters_py3.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateIssuerUpdateParameters(Model): + """The certificate issuer update parameters. + + :param provider: The issuer provider. + :type provider: str + :param credentials: The credentials to be used for the issuer. + :type credentials: ~azure.keyvault.models.IssuerCredentials + :param organization_details: Details of the organization as provided to + the issuer. + :type organization_details: ~azure.keyvault.models.OrganizationDetails + :param attributes: Attributes of the issuer object. + :type attributes: ~azure.keyvault.models.IssuerAttributes + """ + + _attribute_map = { + 'provider': {'key': 'provider', 'type': 'str'}, + 'credentials': {'key': 'credentials', 'type': 'IssuerCredentials'}, + 'organization_details': {'key': 'org_details', 'type': 'OrganizationDetails'}, + 'attributes': {'key': 'attributes', 'type': 'IssuerAttributes'}, + } + + def __init__(self, *, provider: str=None, credentials=None, organization_details=None, attributes=None, **kwargs) -> None: + super(CertificateIssuerUpdateParameters, self).__init__(**kwargs) + self.provider = provider + self.credentials = credentials + self.organization_details = organization_details + self.attributes = attributes diff --git a/azure-keyvault/azure/keyvault/models/certificate_item.py b/azure-keyvault/azure/keyvault/models/certificate_item.py old mode 100755 new mode 100644 index 3f8f0c1db218..405cc71751a5 --- a/azure-keyvault/azure/keyvault/models/certificate_item.py +++ b/azure-keyvault/azure/keyvault/models/certificate_item.py @@ -18,10 +18,9 @@ class CertificateItem(Model): :param id: Certificate identifier. :type id: str :param attributes: The certificate management attributes. - :type attributes: :class:`CertificateAttributes - ` + :type attributes: ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param x509_thumbprint: Thumbprint of the certificate. :type x509_thumbprint: bytes """ @@ -33,8 +32,9 @@ class CertificateItem(Model): 'x509_thumbprint': {'key': 'x5t', 'type': 'base64'}, } - def __init__(self, id=None, attributes=None, tags=None, x509_thumbprint=None): - self.id = id - self.attributes = attributes - self.tags = tags - self.x509_thumbprint = x509_thumbprint + def __init__(self, **kwargs): + super(CertificateItem, self).__init__(**kwargs) + self.id = kwargs.get('id', None) + self.attributes = kwargs.get('attributes', None) + self.tags = kwargs.get('tags', None) + self.x509_thumbprint = kwargs.get('x509_thumbprint', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_item_paged.py b/azure-keyvault/azure/keyvault/models/certificate_item_paged.py old mode 100755 new mode 100644 index e560848abcd4..fc6c4609930a --- a/azure-keyvault/azure/keyvault/models/certificate_item_paged.py +++ b/azure-keyvault/azure/keyvault/models/certificate_item_paged.py @@ -14,7 +14,7 @@ class CertificateItemPaged(Paged): """ - A paging container for iterating over a list of CertificateItem object + A paging container for iterating over a list of :class:`CertificateItem ` object """ _attribute_map = { diff --git a/azure-keyvault/azure/keyvault/models/certificate_item_py3.py b/azure-keyvault/azure/keyvault/models/certificate_item_py3.py new file mode 100644 index 000000000000..8d27a8cc6246 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_item_py3.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateItem(Model): + """The certificate item containing certificate metadata. + + :param id: Certificate identifier. + :type id: str + :param attributes: The certificate management attributes. + :type attributes: ~azure.keyvault.models.CertificateAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :param x509_thumbprint: Thumbprint of the certificate. + :type x509_thumbprint: bytes + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'CertificateAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'x509_thumbprint': {'key': 'x5t', 'type': 'base64'}, + } + + def __init__(self, *, id: str=None, attributes=None, tags=None, x509_thumbprint: bytes=None, **kwargs) -> None: + super(CertificateItem, self).__init__(**kwargs) + self.id = id + self.attributes = attributes + self.tags = tags + self.x509_thumbprint = x509_thumbprint diff --git a/azure-keyvault/azure/keyvault/models/certificate_merge_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_merge_parameters.py old mode 100755 new mode 100644 index c83d68be47bd..cb4226161fab --- a/azure-keyvault/azure/keyvault/models/certificate_merge_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_merge_parameters.py @@ -15,15 +15,16 @@ class CertificateMergeParameters(Model): """The certificate merge parameters. - :param x509_certificates: The certificate or the certificate chain to - merge. - :type x509_certificates: list of bytearray + All required parameters must be populated in order to send to Azure. + + :param x509_certificates: Required. The certificate or the certificate + chain to merge. + :type x509_certificates: list[bytearray] :param certificate_attributes: The attributes of the certificate (optional). - :type certificate_attributes: :class:`CertificateAttributes - ` + :type certificate_attributes: ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] """ _validation = { @@ -36,7 +37,8 @@ class CertificateMergeParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, x509_certificates, certificate_attributes=None, tags=None): - self.x509_certificates = x509_certificates - self.certificate_attributes = certificate_attributes - self.tags = tags + def __init__(self, **kwargs): + super(CertificateMergeParameters, self).__init__(**kwargs) + self.x509_certificates = kwargs.get('x509_certificates', None) + self.certificate_attributes = kwargs.get('certificate_attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_merge_parameters_py3.py b/azure-keyvault/azure/keyvault/models/certificate_merge_parameters_py3.py new file mode 100644 index 000000000000..375dfc9bf8e9 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_merge_parameters_py3.py @@ -0,0 +1,44 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateMergeParameters(Model): + """The certificate merge parameters. + + All required parameters must be populated in order to send to Azure. + + :param x509_certificates: Required. The certificate or the certificate + chain to merge. + :type x509_certificates: list[bytearray] + :param certificate_attributes: The attributes of the certificate + (optional). + :type certificate_attributes: ~azure.keyvault.models.CertificateAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + """ + + _validation = { + 'x509_certificates': {'required': True}, + } + + _attribute_map = { + 'x509_certificates': {'key': 'x5c', 'type': '[bytearray]'}, + 'certificate_attributes': {'key': 'attributes', 'type': 'CertificateAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, x509_certificates, certificate_attributes=None, tags=None, **kwargs) -> None: + super(CertificateMergeParameters, self).__init__(**kwargs) + self.x509_certificates = x509_certificates + self.certificate_attributes = certificate_attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/certificate_operation.py b/azure-keyvault/azure/keyvault/models/certificate_operation.py old mode 100755 new mode 100644 index 31389a7abf30..d9976856dd6e --- a/azure-keyvault/azure/keyvault/models/certificate_operation.py +++ b/azure-keyvault/azure/keyvault/models/certificate_operation.py @@ -22,8 +22,7 @@ class CertificateOperation(Model): :vartype id: str :param issuer_parameters: Parameters for the issuer of the X509 component of a certificate. - :type issuer_parameters: :class:`IssuerParameters - ` + :type issuer_parameters: ~azure.keyvault.models.IssuerParameters :param csr: The certificate signing request (CSR) that is being used in the certificate operation. :type csr: bytearray @@ -35,7 +34,7 @@ class CertificateOperation(Model): :param status_details: The status details of the certificate operation. :type status_details: str :param error: Error encountered, if any, during the certificate operation. - :type error: :class:`Error ` + :type error: ~azure.keyvault.models.Error :param target: Location which contains the result of the certificate operation. :type target: str @@ -59,13 +58,14 @@ class CertificateOperation(Model): 'request_id': {'key': 'request_id', 'type': 'str'}, } - def __init__(self, issuer_parameters=None, csr=None, cancellation_requested=None, status=None, status_details=None, error=None, target=None, request_id=None): + def __init__(self, **kwargs): + super(CertificateOperation, self).__init__(**kwargs) self.id = None - self.issuer_parameters = issuer_parameters - self.csr = csr - self.cancellation_requested = cancellation_requested - self.status = status - self.status_details = status_details - self.error = error - self.target = target - self.request_id = request_id + self.issuer_parameters = kwargs.get('issuer_parameters', None) + self.csr = kwargs.get('csr', None) + self.cancellation_requested = kwargs.get('cancellation_requested', None) + self.status = kwargs.get('status', None) + self.status_details = kwargs.get('status_details', None) + self.error = kwargs.get('error', None) + self.target = kwargs.get('target', None) + self.request_id = kwargs.get('request_id', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_operation_py3.py b/azure-keyvault/azure/keyvault/models/certificate_operation_py3.py new file mode 100644 index 000000000000..674fa5e0414a --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_operation_py3.py @@ -0,0 +1,71 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateOperation(Model): + """A certificate operation is returned in case of asynchronous requests. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The certificate id. + :vartype id: str + :param issuer_parameters: Parameters for the issuer of the X509 component + of a certificate. + :type issuer_parameters: ~azure.keyvault.models.IssuerParameters + :param csr: The certificate signing request (CSR) that is being used in + the certificate operation. + :type csr: bytearray + :param cancellation_requested: Indicates if cancellation was requested on + the certificate operation. + :type cancellation_requested: bool + :param status: Status of the certificate operation. + :type status: str + :param status_details: The status details of the certificate operation. + :type status_details: str + :param error: Error encountered, if any, during the certificate operation. + :type error: ~azure.keyvault.models.Error + :param target: Location which contains the result of the certificate + operation. + :type target: str + :param request_id: Identifier for the certificate operation. + :type request_id: str + """ + + _validation = { + 'id': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'issuer_parameters': {'key': 'issuer', 'type': 'IssuerParameters'}, + 'csr': {'key': 'csr', 'type': 'bytearray'}, + 'cancellation_requested': {'key': 'cancellation_requested', 'type': 'bool'}, + 'status': {'key': 'status', 'type': 'str'}, + 'status_details': {'key': 'status_details', 'type': 'str'}, + 'error': {'key': 'error', 'type': 'Error'}, + 'target': {'key': 'target', 'type': 'str'}, + 'request_id': {'key': 'request_id', 'type': 'str'}, + } + + def __init__(self, *, issuer_parameters=None, csr: bytearray=None, cancellation_requested: bool=None, status: str=None, status_details: str=None, error=None, target: str=None, request_id: str=None, **kwargs) -> None: + super(CertificateOperation, self).__init__(**kwargs) + self.id = None + self.issuer_parameters = issuer_parameters + self.csr = csr + self.cancellation_requested = cancellation_requested + self.status = status + self.status_details = status_details + self.error = error + self.target = target + self.request_id = request_id diff --git a/azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter.py b/azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter.py old mode 100755 new mode 100644 index ec887e9d2313..fadc2e3ea734 --- a/azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter.py +++ b/azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter.py @@ -15,8 +15,10 @@ class CertificateOperationUpdateParameter(Model): """The certificate operation update parameters. - :param cancellation_requested: Indicates if cancellation was requested on - the certificate operation. + All required parameters must be populated in order to send to Azure. + + :param cancellation_requested: Required. Indicates if cancellation was + requested on the certificate operation. :type cancellation_requested: bool """ @@ -28,5 +30,6 @@ class CertificateOperationUpdateParameter(Model): 'cancellation_requested': {'key': 'cancellation_requested', 'type': 'bool'}, } - def __init__(self, cancellation_requested): - self.cancellation_requested = cancellation_requested + def __init__(self, **kwargs): + super(CertificateOperationUpdateParameter, self).__init__(**kwargs) + self.cancellation_requested = kwargs.get('cancellation_requested', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter_py3.py b/azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter_py3.py new file mode 100644 index 000000000000..c9fea79090ee --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter_py3.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateOperationUpdateParameter(Model): + """The certificate operation update parameters. + + All required parameters must be populated in order to send to Azure. + + :param cancellation_requested: Required. Indicates if cancellation was + requested on the certificate operation. + :type cancellation_requested: bool + """ + + _validation = { + 'cancellation_requested': {'required': True}, + } + + _attribute_map = { + 'cancellation_requested': {'key': 'cancellation_requested', 'type': 'bool'}, + } + + def __init__(self, *, cancellation_requested: bool, **kwargs) -> None: + super(CertificateOperationUpdateParameter, self).__init__(**kwargs) + self.cancellation_requested = cancellation_requested diff --git a/azure-keyvault/azure/keyvault/models/certificate_policy.py b/azure-keyvault/azure/keyvault/models/certificate_policy.py old mode 100755 new mode 100644 index 684da134dd4e..cbf8823076ea --- a/azure-keyvault/azure/keyvault/models/certificate_policy.py +++ b/azure-keyvault/azure/keyvault/models/certificate_policy.py @@ -21,26 +21,21 @@ class CertificatePolicy(Model): :ivar id: The certificate id. :vartype id: str :param key_properties: Properties of the key backing a certificate. - :type key_properties: :class:`KeyProperties - ` + :type key_properties: ~azure.keyvault.models.KeyProperties :param secret_properties: Properties of the secret backing a certificate. - :type secret_properties: :class:`SecretProperties - ` + :type secret_properties: ~azure.keyvault.models.SecretProperties :param x509_certificate_properties: Properties of the X509 component of a certificate. - :type x509_certificate_properties: :class:`X509CertificateProperties - ` + :type x509_certificate_properties: + ~azure.keyvault.models.X509CertificateProperties :param lifetime_actions: Actions that will be performed by Key Vault over the lifetime of a certificate. - :type lifetime_actions: list of :class:`LifetimeAction - ` + :type lifetime_actions: list[~azure.keyvault.models.LifetimeAction] :param issuer_parameters: Parameters for the issuer of the X509 component of a certificate. - :type issuer_parameters: :class:`IssuerParameters - ` + :type issuer_parameters: ~azure.keyvault.models.IssuerParameters :param attributes: The certificate attributes. - :type attributes: :class:`CertificateAttributes - ` + :type attributes: ~azure.keyvault.models.CertificateAttributes """ _validation = { @@ -57,11 +52,12 @@ class CertificatePolicy(Model): 'attributes': {'key': 'attributes', 'type': 'CertificateAttributes'}, } - def __init__(self, key_properties=None, secret_properties=None, x509_certificate_properties=None, lifetime_actions=None, issuer_parameters=None, attributes=None): + def __init__(self, **kwargs): + super(CertificatePolicy, self).__init__(**kwargs) self.id = None - self.key_properties = key_properties - self.secret_properties = secret_properties - self.x509_certificate_properties = x509_certificate_properties - self.lifetime_actions = lifetime_actions - self.issuer_parameters = issuer_parameters - self.attributes = attributes + self.key_properties = kwargs.get('key_properties', None) + self.secret_properties = kwargs.get('secret_properties', None) + self.x509_certificate_properties = kwargs.get('x509_certificate_properties', None) + self.lifetime_actions = kwargs.get('lifetime_actions', None) + self.issuer_parameters = kwargs.get('issuer_parameters', None) + self.attributes = kwargs.get('attributes', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_policy_py3.py b/azure-keyvault/azure/keyvault/models/certificate_policy_py3.py new file mode 100644 index 000000000000..d338af8a0044 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_policy_py3.py @@ -0,0 +1,63 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificatePolicy(Model): + """Management policy for a certificate. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The certificate id. + :vartype id: str + :param key_properties: Properties of the key backing a certificate. + :type key_properties: ~azure.keyvault.models.KeyProperties + :param secret_properties: Properties of the secret backing a certificate. + :type secret_properties: ~azure.keyvault.models.SecretProperties + :param x509_certificate_properties: Properties of the X509 component of a + certificate. + :type x509_certificate_properties: + ~azure.keyvault.models.X509CertificateProperties + :param lifetime_actions: Actions that will be performed by Key Vault over + the lifetime of a certificate. + :type lifetime_actions: list[~azure.keyvault.models.LifetimeAction] + :param issuer_parameters: Parameters for the issuer of the X509 component + of a certificate. + :type issuer_parameters: ~azure.keyvault.models.IssuerParameters + :param attributes: The certificate attributes. + :type attributes: ~azure.keyvault.models.CertificateAttributes + """ + + _validation = { + 'id': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'key_properties': {'key': 'key_props', 'type': 'KeyProperties'}, + 'secret_properties': {'key': 'secret_props', 'type': 'SecretProperties'}, + 'x509_certificate_properties': {'key': 'x509_props', 'type': 'X509CertificateProperties'}, + 'lifetime_actions': {'key': 'lifetime_actions', 'type': '[LifetimeAction]'}, + 'issuer_parameters': {'key': 'issuer', 'type': 'IssuerParameters'}, + 'attributes': {'key': 'attributes', 'type': 'CertificateAttributes'}, + } + + def __init__(self, *, key_properties=None, secret_properties=None, x509_certificate_properties=None, lifetime_actions=None, issuer_parameters=None, attributes=None, **kwargs) -> None: + super(CertificatePolicy, self).__init__(**kwargs) + self.id = None + self.key_properties = key_properties + self.secret_properties = secret_properties + self.x509_certificate_properties = x509_certificate_properties + self.lifetime_actions = lifetime_actions + self.issuer_parameters = issuer_parameters + self.attributes = attributes diff --git a/azure-keyvault/azure/keyvault/models/certificate_restore_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_restore_parameters.py new file mode 100644 index 000000000000..2a03516d6356 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_restore_parameters.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateRestoreParameters(Model): + """The certificate restore parameters. + + All required parameters must be populated in order to send to Azure. + + :param certificate_bundle_backup: Required. The backup blob associated + with a certificate bundle. + :type certificate_bundle_backup: bytes + """ + + _validation = { + 'certificate_bundle_backup': {'required': True}, + } + + _attribute_map = { + 'certificate_bundle_backup': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, **kwargs): + super(CertificateRestoreParameters, self).__init__(**kwargs) + self.certificate_bundle_backup = kwargs.get('certificate_bundle_backup', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_restore_parameters_py3.py b/azure-keyvault/azure/keyvault/models/certificate_restore_parameters_py3.py new file mode 100644 index 000000000000..674a1294fed1 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_restore_parameters_py3.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateRestoreParameters(Model): + """The certificate restore parameters. + + All required parameters must be populated in order to send to Azure. + + :param certificate_bundle_backup: Required. The backup blob associated + with a certificate bundle. + :type certificate_bundle_backup: bytes + """ + + _validation = { + 'certificate_bundle_backup': {'required': True}, + } + + _attribute_map = { + 'certificate_bundle_backup': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, *, certificate_bundle_backup: bytes, **kwargs) -> None: + super(CertificateRestoreParameters, self).__init__(**kwargs) + self.certificate_bundle_backup = certificate_bundle_backup diff --git a/azure-keyvault/azure/keyvault/models/certificate_update_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_update_parameters.py old mode 100755 new mode 100644 index 499a22d5ff81..9407d23b28ec --- a/azure-keyvault/azure/keyvault/models/certificate_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_update_parameters.py @@ -16,14 +16,12 @@ class CertificateUpdateParameters(Model): """The certificate update parameters. :param certificate_policy: The management policy for the certificate. - :type certificate_policy: :class:`CertificatePolicy - ` + :type certificate_policy: ~azure.keyvault.models.CertificatePolicy :param certificate_attributes: The attributes of the certificate (optional). - :type certificate_attributes: :class:`CertificateAttributes - ` + :type certificate_attributes: ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] """ _attribute_map = { @@ -32,7 +30,8 @@ class CertificateUpdateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, certificate_policy=None, certificate_attributes=None, tags=None): - self.certificate_policy = certificate_policy - self.certificate_attributes = certificate_attributes - self.tags = tags + def __init__(self, **kwargs): + super(CertificateUpdateParameters, self).__init__(**kwargs) + self.certificate_policy = kwargs.get('certificate_policy', None) + self.certificate_attributes = kwargs.get('certificate_attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/certificate_update_parameters_py3.py b/azure-keyvault/azure/keyvault/models/certificate_update_parameters_py3.py new file mode 100644 index 000000000000..cddbe4ea6cee --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_update_parameters_py3.py @@ -0,0 +1,37 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CertificateUpdateParameters(Model): + """The certificate update parameters. + + :param certificate_policy: The management policy for the certificate. + :type certificate_policy: ~azure.keyvault.models.CertificatePolicy + :param certificate_attributes: The attributes of the certificate + (optional). + :type certificate_attributes: ~azure.keyvault.models.CertificateAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + """ + + _attribute_map = { + 'certificate_policy': {'key': 'policy', 'type': 'CertificatePolicy'}, + 'certificate_attributes': {'key': 'attributes', 'type': 'CertificateAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, certificate_policy=None, certificate_attributes=None, tags=None, **kwargs) -> None: + super(CertificateUpdateParameters, self).__init__(**kwargs) + self.certificate_policy = certificate_policy + self.certificate_attributes = certificate_attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/contact.py b/azure-keyvault/azure/keyvault/models/contact.py old mode 100755 new mode 100644 index bdfd1c8b96bb..217a04fb85d0 --- a/azure-keyvault/azure/keyvault/models/contact.py +++ b/azure-keyvault/azure/keyvault/models/contact.py @@ -29,7 +29,8 @@ class Contact(Model): 'phone': {'key': 'phone', 'type': 'str'}, } - def __init__(self, email_address=None, name=None, phone=None): - self.email_address = email_address - self.name = name - self.phone = phone + def __init__(self, **kwargs): + super(Contact, self).__init__(**kwargs) + self.email_address = kwargs.get('email_address', None) + self.name = kwargs.get('name', None) + self.phone = kwargs.get('phone', None) diff --git a/azure-keyvault/azure/keyvault/models/contact_py3.py b/azure-keyvault/azure/keyvault/models/contact_py3.py new file mode 100644 index 000000000000..56569b0d9912 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/contact_py3.py @@ -0,0 +1,36 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class Contact(Model): + """The contact information for the vault certificates. + + :param email_address: Email addresss. + :type email_address: str + :param name: Name. + :type name: str + :param phone: Phone number. + :type phone: str + """ + + _attribute_map = { + 'email_address': {'key': 'email', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'phone': {'key': 'phone', 'type': 'str'}, + } + + def __init__(self, *, email_address: str=None, name: str=None, phone: str=None, **kwargs) -> None: + super(Contact, self).__init__(**kwargs) + self.email_address = email_address + self.name = name + self.phone = phone diff --git a/azure-keyvault/azure/keyvault/models/contacts.py b/azure-keyvault/azure/keyvault/models/contacts.py old mode 100755 new mode 100644 index 3ebe54cd89cf..4efc32f9b5be --- a/azure-keyvault/azure/keyvault/models/contacts.py +++ b/azure-keyvault/azure/keyvault/models/contacts.py @@ -21,8 +21,7 @@ class Contacts(Model): :ivar id: Identifier for the contacts collection. :vartype id: str :param contact_list: The contact list for the vault certificates. - :type contact_list: list of :class:`Contact - ` + :type contact_list: list[~azure.keyvault.models.Contact] """ _validation = { @@ -34,6 +33,7 @@ class Contacts(Model): 'contact_list': {'key': 'contacts', 'type': '[Contact]'}, } - def __init__(self, contact_list=None): + def __init__(self, **kwargs): + super(Contacts, self).__init__(**kwargs) self.id = None - self.contact_list = contact_list + self.contact_list = kwargs.get('contact_list', None) diff --git a/azure-keyvault/azure/keyvault/models/contacts_py3.py b/azure-keyvault/azure/keyvault/models/contacts_py3.py new file mode 100644 index 000000000000..c2539d8e6de3 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/contacts_py3.py @@ -0,0 +1,39 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class Contacts(Model): + """The contacts for the vault certificates. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: Identifier for the contacts collection. + :vartype id: str + :param contact_list: The contact list for the vault certificates. + :type contact_list: list[~azure.keyvault.models.Contact] + """ + + _validation = { + 'id': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'contact_list': {'key': 'contacts', 'type': '[Contact]'}, + } + + def __init__(self, *, contact_list=None, **kwargs) -> None: + super(Contacts, self).__init__(**kwargs) + self.id = None + self.contact_list = contact_list diff --git a/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle.py b/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle.py old mode 100755 new mode 100644 index 518c414f0b2d..b3fac86a9805 --- a/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle.py +++ b/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle.py @@ -28,17 +28,15 @@ class DeletedCertificateBundle(CertificateBundle): :ivar x509_thumbprint: Thumbprint of the certificate. :vartype x509_thumbprint: bytes :ivar policy: The management policy. - :vartype policy: :class:`CertificatePolicy - ` + :vartype policy: ~azure.keyvault.models.CertificatePolicy :param cer: CER contents of x509 certificate. :type cer: bytearray :param content_type: The content type of the secret. :type content_type: str :param attributes: The certificate attributes. - :type attributes: :class:`CertificateAttributes - ` + :type attributes: ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs - :type tags: dict + :type tags: dict[str, str] :param recovery_id: The url of the recovery object, used to identify and recover the deleted certificate. :type recovery_id: str @@ -74,8 +72,8 @@ class DeletedCertificateBundle(CertificateBundle): 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, } - def __init__(self, cer=None, content_type=None, attributes=None, tags=None, recovery_id=None): - super(DeletedCertificateBundle, self).__init__(cer=cer, content_type=content_type, attributes=attributes, tags=tags) - self.recovery_id = recovery_id + def __init__(self, **kwargs): + super(DeletedCertificateBundle, self).__init__(**kwargs) + self.recovery_id = kwargs.get('recovery_id', None) self.scheduled_purge_date = None self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle_py3.py b/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle_py3.py new file mode 100644 index 000000000000..c028d1db6740 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle_py3.py @@ -0,0 +1,79 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .certificate_bundle_py3 import CertificateBundle + + +class DeletedCertificateBundle(CertificateBundle): + """A Deleted Certificate consisting of its previous id, attributes and its + tags, as well as information on when it will be purged. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The certificate id. + :vartype id: str + :ivar kid: The key id. + :vartype kid: str + :ivar sid: The secret id. + :vartype sid: str + :ivar x509_thumbprint: Thumbprint of the certificate. + :vartype x509_thumbprint: bytes + :ivar policy: The management policy. + :vartype policy: ~azure.keyvault.models.CertificatePolicy + :param cer: CER contents of x509 certificate. + :type cer: bytearray + :param content_type: The content type of the secret. + :type content_type: str + :param attributes: The certificate attributes. + :type attributes: ~azure.keyvault.models.CertificateAttributes + :param tags: Application specific metadata in the form of key-value pairs + :type tags: dict[str, str] + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted certificate. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the certificate is scheduled to + be purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the certificate was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'id': {'readonly': True}, + 'kid': {'readonly': True}, + 'sid': {'readonly': True}, + 'x509_thumbprint': {'readonly': True}, + 'policy': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'kid': {'key': 'kid', 'type': 'str'}, + 'sid': {'key': 'sid', 'type': 'str'}, + 'x509_thumbprint': {'key': 'x5t', 'type': 'base64'}, + 'policy': {'key': 'policy', 'type': 'CertificatePolicy'}, + 'cer': {'key': 'cer', 'type': 'bytearray'}, + 'content_type': {'key': 'contentType', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'CertificateAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, *, cer: bytearray=None, content_type: str=None, attributes=None, tags=None, recovery_id: str=None, **kwargs) -> None: + super(DeletedCertificateBundle, self).__init__(cer=cer, content_type=content_type, attributes=attributes, tags=tags, **kwargs) + self.recovery_id = recovery_id + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_certificate_item.py b/azure-keyvault/azure/keyvault/models/deleted_certificate_item.py old mode 100755 new mode 100644 index 38fbcc8f2f50..e6fa2963cc09 --- a/azure-keyvault/azure/keyvault/models/deleted_certificate_item.py +++ b/azure-keyvault/azure/keyvault/models/deleted_certificate_item.py @@ -22,10 +22,9 @@ class DeletedCertificateItem(CertificateItem): :param id: Certificate identifier. :type id: str :param attributes: The certificate management attributes. - :type attributes: :class:`CertificateAttributes - ` + :type attributes: ~azure.keyvault.models.CertificateAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param x509_thumbprint: Thumbprint of the certificate. :type x509_thumbprint: bytes :param recovery_id: The url of the recovery object, used to identify and @@ -53,8 +52,8 @@ class DeletedCertificateItem(CertificateItem): 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, } - def __init__(self, id=None, attributes=None, tags=None, x509_thumbprint=None, recovery_id=None): - super(DeletedCertificateItem, self).__init__(id=id, attributes=attributes, tags=tags, x509_thumbprint=x509_thumbprint) - self.recovery_id = recovery_id + def __init__(self, **kwargs): + super(DeletedCertificateItem, self).__init__(**kwargs) + self.recovery_id = kwargs.get('recovery_id', None) self.scheduled_purge_date = None self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_certificate_item_paged.py b/azure-keyvault/azure/keyvault/models/deleted_certificate_item_paged.py old mode 100755 new mode 100644 index 879fb74641b4..28328340ba83 --- a/azure-keyvault/azure/keyvault/models/deleted_certificate_item_paged.py +++ b/azure-keyvault/azure/keyvault/models/deleted_certificate_item_paged.py @@ -14,7 +14,7 @@ class DeletedCertificateItemPaged(Paged): """ - A paging container for iterating over a list of DeletedCertificateItem object + A paging container for iterating over a list of :class:`DeletedCertificateItem ` object """ _attribute_map = { diff --git a/azure-keyvault/azure/keyvault/models/deleted_certificate_item_py3.py b/azure-keyvault/azure/keyvault/models/deleted_certificate_item_py3.py new file mode 100644 index 000000000000..eb9c4c941c7c --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_certificate_item_py3.py @@ -0,0 +1,59 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .certificate_item_py3 import CertificateItem + + +class DeletedCertificateItem(CertificateItem): + """The deleted certificate item containing metadata about the deleted + certificate. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param id: Certificate identifier. + :type id: str + :param attributes: The certificate management attributes. + :type attributes: ~azure.keyvault.models.CertificateAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :param x509_thumbprint: Thumbprint of the certificate. + :type x509_thumbprint: bytes + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted certificate. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the certificate is scheduled to + be purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the certificate was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'CertificateAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'x509_thumbprint': {'key': 'x5t', 'type': 'base64'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, *, id: str=None, attributes=None, tags=None, x509_thumbprint: bytes=None, recovery_id: str=None, **kwargs) -> None: + super(DeletedCertificateItem, self).__init__(id=id, attributes=attributes, tags=tags, x509_thumbprint=x509_thumbprint, **kwargs) + self.recovery_id = recovery_id + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_key_bundle.py b/azure-keyvault/azure/keyvault/models/deleted_key_bundle.py old mode 100755 new mode 100644 index c2abbaaf2fb5..4da00938813b --- a/azure-keyvault/azure/keyvault/models/deleted_key_bundle.py +++ b/azure-keyvault/azure/keyvault/models/deleted_key_bundle.py @@ -20,12 +20,11 @@ class DeletedKeyBundle(KeyBundle): sending a request. :param key: The Json web key. - :type key: :class:`JsonWebKey ` + :type key: ~azure.keyvault.models.JsonWebKey :param attributes: The key management attributes. - :type attributes: :class:`KeyAttributes - ` + :type attributes: ~azure.keyvault.models.KeyAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :ivar managed: True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true. :vartype managed: bool @@ -55,8 +54,8 @@ class DeletedKeyBundle(KeyBundle): 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, } - def __init__(self, key=None, attributes=None, tags=None, recovery_id=None): - super(DeletedKeyBundle, self).__init__(key=key, attributes=attributes, tags=tags) - self.recovery_id = recovery_id + def __init__(self, **kwargs): + super(DeletedKeyBundle, self).__init__(**kwargs) + self.recovery_id = kwargs.get('recovery_id', None) self.scheduled_purge_date = None self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_key_bundle_py3.py b/azure-keyvault/azure/keyvault/models/deleted_key_bundle_py3.py new file mode 100644 index 000000000000..f36d9a0028b1 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_key_bundle_py3.py @@ -0,0 +1,61 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .key_bundle_py3 import KeyBundle + + +class DeletedKeyBundle(KeyBundle): + """A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion + info. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param key: The Json web key. + :type key: ~azure.keyvault.models.JsonWebKey + :param attributes: The key management attributes. + :type attributes: ~azure.keyvault.models.KeyAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :ivar managed: True if the key's lifetime is managed by key vault. If this + is a key backing a certificate, then managed will be true. + :vartype managed: bool + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted key. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the key is scheduled to be + purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the key was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'managed': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'key': {'key': 'key', 'type': 'JsonWebKey'}, + 'attributes': {'key': 'attributes', 'type': 'KeyAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'managed': {'key': 'managed', 'type': 'bool'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, *, key=None, attributes=None, tags=None, recovery_id: str=None, **kwargs) -> None: + super(DeletedKeyBundle, self).__init__(key=key, attributes=attributes, tags=tags, **kwargs) + self.recovery_id = recovery_id + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_key_item.py b/azure-keyvault/azure/keyvault/models/deleted_key_item.py old mode 100755 new mode 100644 index dc37b3b238b9..a3ed56f9a99e --- a/azure-keyvault/azure/keyvault/models/deleted_key_item.py +++ b/azure-keyvault/azure/keyvault/models/deleted_key_item.py @@ -22,10 +22,9 @@ class DeletedKeyItem(KeyItem): :param kid: Key identifier. :type kid: str :param attributes: The key management attributes. - :type attributes: :class:`KeyAttributes - ` + :type attributes: ~azure.keyvault.models.KeyAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :ivar managed: True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true. :vartype managed: bool @@ -55,8 +54,8 @@ class DeletedKeyItem(KeyItem): 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, } - def __init__(self, kid=None, attributes=None, tags=None, recovery_id=None): - super(DeletedKeyItem, self).__init__(kid=kid, attributes=attributes, tags=tags) - self.recovery_id = recovery_id + def __init__(self, **kwargs): + super(DeletedKeyItem, self).__init__(**kwargs) + self.recovery_id = kwargs.get('recovery_id', None) self.scheduled_purge_date = None self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_key_item_paged.py b/azure-keyvault/azure/keyvault/models/deleted_key_item_paged.py old mode 100755 new mode 100644 index efa1ecf696ba..96b80d8961cf --- a/azure-keyvault/azure/keyvault/models/deleted_key_item_paged.py +++ b/azure-keyvault/azure/keyvault/models/deleted_key_item_paged.py @@ -14,7 +14,7 @@ class DeletedKeyItemPaged(Paged): """ - A paging container for iterating over a list of DeletedKeyItem object + A paging container for iterating over a list of :class:`DeletedKeyItem ` object """ _attribute_map = { diff --git a/azure-keyvault/azure/keyvault/models/deleted_key_item_py3.py b/azure-keyvault/azure/keyvault/models/deleted_key_item_py3.py new file mode 100644 index 000000000000..f891deac56a0 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_key_item_py3.py @@ -0,0 +1,61 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .key_item_py3 import KeyItem + + +class DeletedKeyItem(KeyItem): + """The deleted key item containing the deleted key metadata and information + about deletion. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param kid: Key identifier. + :type kid: str + :param attributes: The key management attributes. + :type attributes: ~azure.keyvault.models.KeyAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :ivar managed: True if the key's lifetime is managed by key vault. If this + is a key backing a certificate, then managed will be true. + :vartype managed: bool + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted key. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the key is scheduled to be + purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the key was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'managed': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'kid': {'key': 'kid', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'KeyAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'managed': {'key': 'managed', 'type': 'bool'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, *, kid: str=None, attributes=None, tags=None, recovery_id: str=None, **kwargs) -> None: + super(DeletedKeyItem, self).__init__(kid=kid, attributes=attributes, tags=tags, **kwargs) + self.recovery_id = recovery_id + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle.py b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle.py new file mode 100644 index 000000000000..7400534281f5 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle.py @@ -0,0 +1,79 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .sas_definition_bundle import SasDefinitionBundle + + +class DeletedSasDefinitionBundle(SasDefinitionBundle): + """A deleted SAS definition bundle consisting of its previous id, attributes + and its tags, as well as information on when it will be purged. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The SAS definition id. + :vartype id: str + :ivar secret_id: Storage account SAS definition secret id. + :vartype secret_id: str + :ivar template_uri: The SAS definition token template signed with an + arbitrary key. Tokens created according to the SAS definition will have + the same properties as the template. + :vartype template_uri: str + :ivar sas_type: The type of SAS token the SAS definition will create. + Possible values include: 'account', 'service' + :vartype sas_type: str or ~azure.keyvault.models.SasTokenType + :ivar validity_period: The validity period of SAS tokens created according + to the SAS definition. + :vartype validity_period: str + :ivar attributes: The SAS definition attributes. + :vartype attributes: ~azure.keyvault.models.SasDefinitionAttributes + :ivar tags: Application specific metadata in the form of key-value pairs + :vartype tags: dict[str, str] + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted SAS definition. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the SAS definition is scheduled + to be purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the SAS definition was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'id': {'readonly': True}, + 'secret_id': {'readonly': True}, + 'template_uri': {'readonly': True}, + 'sas_type': {'readonly': True}, + 'validity_period': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'secret_id': {'key': 'sid', 'type': 'str'}, + 'template_uri': {'key': 'templateUri', 'type': 'str'}, + 'sas_type': {'key': 'sasType', 'type': 'str'}, + 'validity_period': {'key': 'validityPeriod', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'SasDefinitionAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, **kwargs): + super(DeletedSasDefinitionBundle, self).__init__(**kwargs) + self.recovery_id = kwargs.get('recovery_id', None) + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle_py3.py b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle_py3.py new file mode 100644 index 000000000000..ae5d90cd389a --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle_py3.py @@ -0,0 +1,79 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .sas_definition_bundle_py3 import SasDefinitionBundle + + +class DeletedSasDefinitionBundle(SasDefinitionBundle): + """A deleted SAS definition bundle consisting of its previous id, attributes + and its tags, as well as information on when it will be purged. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The SAS definition id. + :vartype id: str + :ivar secret_id: Storage account SAS definition secret id. + :vartype secret_id: str + :ivar template_uri: The SAS definition token template signed with an + arbitrary key. Tokens created according to the SAS definition will have + the same properties as the template. + :vartype template_uri: str + :ivar sas_type: The type of SAS token the SAS definition will create. + Possible values include: 'account', 'service' + :vartype sas_type: str or ~azure.keyvault.models.SasTokenType + :ivar validity_period: The validity period of SAS tokens created according + to the SAS definition. + :vartype validity_period: str + :ivar attributes: The SAS definition attributes. + :vartype attributes: ~azure.keyvault.models.SasDefinitionAttributes + :ivar tags: Application specific metadata in the form of key-value pairs + :vartype tags: dict[str, str] + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted SAS definition. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the SAS definition is scheduled + to be purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the SAS definition was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'id': {'readonly': True}, + 'secret_id': {'readonly': True}, + 'template_uri': {'readonly': True}, + 'sas_type': {'readonly': True}, + 'validity_period': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'secret_id': {'key': 'sid', 'type': 'str'}, + 'template_uri': {'key': 'templateUri', 'type': 'str'}, + 'sas_type': {'key': 'sasType', 'type': 'str'}, + 'validity_period': {'key': 'validityPeriod', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'SasDefinitionAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, *, recovery_id: str=None, **kwargs) -> None: + super(DeletedSasDefinitionBundle, self).__init__(**kwargs) + self.recovery_id = recovery_id + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item.py b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item.py new file mode 100644 index 000000000000..dd50187b3752 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item.py @@ -0,0 +1,63 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .sas_definition_item import SasDefinitionItem + + +class DeletedSasDefinitionItem(SasDefinitionItem): + """The deleted SAS definition item containing metadata about the deleted SAS + definition. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The storage SAS identifier. + :vartype id: str + :ivar secret_id: The storage account SAS definition secret id. + :vartype secret_id: str + :ivar attributes: The SAS definition management attributes. + :vartype attributes: ~azure.keyvault.models.SasDefinitionAttributes + :ivar tags: Application specific metadata in the form of key-value pairs. + :vartype tags: dict[str, str] + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted SAS definition. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the SAS definition is scheduled + to be purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the SAS definition was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'id': {'readonly': True}, + 'secret_id': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'secret_id': {'key': 'sid', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'SasDefinitionAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, **kwargs): + super(DeletedSasDefinitionItem, self).__init__(**kwargs) + self.recovery_id = kwargs.get('recovery_id', None) + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_paged.py b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_paged.py new file mode 100644 index 000000000000..eaca2475e469 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_paged.py @@ -0,0 +1,27 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.paging import Paged + + +class DeletedSasDefinitionItemPaged(Paged): + """ + A paging container for iterating over a list of :class:`DeletedSasDefinitionItem ` object + """ + + _attribute_map = { + 'next_link': {'key': 'nextLink', 'type': 'str'}, + 'current_page': {'key': 'value', 'type': '[DeletedSasDefinitionItem]'} + } + + def __init__(self, *args, **kwargs): + + super(DeletedSasDefinitionItemPaged, self).__init__(*args, **kwargs) diff --git a/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_py3.py b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_py3.py new file mode 100644 index 000000000000..9b689c4a7949 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_py3.py @@ -0,0 +1,63 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .sas_definition_item_py3 import SasDefinitionItem + + +class DeletedSasDefinitionItem(SasDefinitionItem): + """The deleted SAS definition item containing metadata about the deleted SAS + definition. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The storage SAS identifier. + :vartype id: str + :ivar secret_id: The storage account SAS definition secret id. + :vartype secret_id: str + :ivar attributes: The SAS definition management attributes. + :vartype attributes: ~azure.keyvault.models.SasDefinitionAttributes + :ivar tags: Application specific metadata in the form of key-value pairs. + :vartype tags: dict[str, str] + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted SAS definition. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the SAS definition is scheduled + to be purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the SAS definition was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'id': {'readonly': True}, + 'secret_id': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'secret_id': {'key': 'sid', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'SasDefinitionAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, *, recovery_id: str=None, **kwargs) -> None: + super(DeletedSasDefinitionItem, self).__init__(**kwargs) + self.recovery_id = recovery_id + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_secret_bundle.py b/azure-keyvault/azure/keyvault/models/deleted_secret_bundle.py old mode 100755 new mode 100644 index f948590cc77d..f88eb1fb02c2 --- a/azure-keyvault/azure/keyvault/models/deleted_secret_bundle.py +++ b/azure-keyvault/azure/keyvault/models/deleted_secret_bundle.py @@ -26,10 +26,9 @@ class DeletedSecretBundle(SecretBundle): :param content_type: The content type of the secret. :type content_type: str :param attributes: The secret management attributes. - :type attributes: :class:`SecretAttributes - ` + :type attributes: ~azure.keyvault.models.SecretAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :ivar kid: If this is a secret backing a KV certificate, then this field specifies the corresponding key backing the KV certificate. :vartype kid: str @@ -66,8 +65,8 @@ class DeletedSecretBundle(SecretBundle): 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, } - def __init__(self, value=None, id=None, content_type=None, attributes=None, tags=None, recovery_id=None): - super(DeletedSecretBundle, self).__init__(value=value, id=id, content_type=content_type, attributes=attributes, tags=tags) - self.recovery_id = recovery_id + def __init__(self, **kwargs): + super(DeletedSecretBundle, self).__init__(**kwargs) + self.recovery_id = kwargs.get('recovery_id', None) self.scheduled_purge_date = None self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_secret_bundle_py3.py b/azure-keyvault/azure/keyvault/models/deleted_secret_bundle_py3.py new file mode 100644 index 000000000000..d6f4032cd614 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_secret_bundle_py3.py @@ -0,0 +1,72 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .secret_bundle_py3 import SecretBundle + + +class DeletedSecretBundle(SecretBundle): + """A Deleted Secret consisting of its previous id, attributes and its tags, as + well as information on when it will be purged. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param value: The secret value. + :type value: str + :param id: The secret id. + :type id: str + :param content_type: The content type of the secret. + :type content_type: str + :param attributes: The secret management attributes. + :type attributes: ~azure.keyvault.models.SecretAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :ivar kid: If this is a secret backing a KV certificate, then this field + specifies the corresponding key backing the KV certificate. + :vartype kid: str + :ivar managed: True if the secret's lifetime is managed by key vault. If + this is a secret backing a certificate, then managed will be true. + :vartype managed: bool + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted secret. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the secret is scheduled to be + purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the secret was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'kid': {'readonly': True}, + 'managed': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'content_type': {'key': 'contentType', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'SecretAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'kid': {'key': 'kid', 'type': 'str'}, + 'managed': {'key': 'managed', 'type': 'bool'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, *, value: str=None, id: str=None, content_type: str=None, attributes=None, tags=None, recovery_id: str=None, **kwargs) -> None: + super(DeletedSecretBundle, self).__init__(value=value, id=id, content_type=content_type, attributes=attributes, tags=tags, **kwargs) + self.recovery_id = recovery_id + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_secret_item.py b/azure-keyvault/azure/keyvault/models/deleted_secret_item.py old mode 100755 new mode 100644 index a5dd1a4fa3f3..6faa18b080df --- a/azure-keyvault/azure/keyvault/models/deleted_secret_item.py +++ b/azure-keyvault/azure/keyvault/models/deleted_secret_item.py @@ -21,10 +21,9 @@ class DeletedSecretItem(SecretItem): :param id: Secret identifier. :type id: str :param attributes: The secret management attributes. - :type attributes: :class:`SecretAttributes - ` + :type attributes: ~azure.keyvault.models.SecretAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param content_type: Type of the secret value such as a password. :type content_type: str :ivar managed: True if the secret's lifetime is managed by key vault. If @@ -57,8 +56,8 @@ class DeletedSecretItem(SecretItem): 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, } - def __init__(self, id=None, attributes=None, tags=None, content_type=None, recovery_id=None): - super(DeletedSecretItem, self).__init__(id=id, attributes=attributes, tags=tags, content_type=content_type) - self.recovery_id = recovery_id + def __init__(self, **kwargs): + super(DeletedSecretItem, self).__init__(**kwargs) + self.recovery_id = kwargs.get('recovery_id', None) self.scheduled_purge_date = None self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_secret_item_paged.py b/azure-keyvault/azure/keyvault/models/deleted_secret_item_paged.py old mode 100755 new mode 100644 index bc8a5644c259..723328f86a49 --- a/azure-keyvault/azure/keyvault/models/deleted_secret_item_paged.py +++ b/azure-keyvault/azure/keyvault/models/deleted_secret_item_paged.py @@ -14,7 +14,7 @@ class DeletedSecretItemPaged(Paged): """ - A paging container for iterating over a list of DeletedSecretItem object + A paging container for iterating over a list of :class:`DeletedSecretItem ` object """ _attribute_map = { diff --git a/azure-keyvault/azure/keyvault/models/deleted_secret_item_py3.py b/azure-keyvault/azure/keyvault/models/deleted_secret_item_py3.py new file mode 100644 index 000000000000..45a05db4b63e --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_secret_item_py3.py @@ -0,0 +1,63 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .secret_item_py3 import SecretItem + + +class DeletedSecretItem(SecretItem): + """The deleted secret item containing metadata about the deleted secret. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param id: Secret identifier. + :type id: str + :param attributes: The secret management attributes. + :type attributes: ~azure.keyvault.models.SecretAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :param content_type: Type of the secret value such as a password. + :type content_type: str + :ivar managed: True if the secret's lifetime is managed by key vault. If + this is a key backing a certificate, then managed will be true. + :vartype managed: bool + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted secret. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the secret is scheduled to be + purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the secret was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'managed': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'SecretAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'content_type': {'key': 'contentType', 'type': 'str'}, + 'managed': {'key': 'managed', 'type': 'bool'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, *, id: str=None, attributes=None, tags=None, content_type: str=None, recovery_id: str=None, **kwargs) -> None: + super(DeletedSecretItem, self).__init__(id=id, attributes=attributes, tags=tags, content_type=content_type, **kwargs) + self.recovery_id = recovery_id + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_storage_account_item.py b/azure-keyvault/azure/keyvault/models/deleted_storage_account_item.py new file mode 100644 index 000000000000..15d0f15bef06 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_storage_account_item.py @@ -0,0 +1,63 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .storage_account_item import StorageAccountItem + + +class DeletedStorageAccountItem(StorageAccountItem): + """The deleted storage account item containing metadata about the deleted + storage account. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: Storage identifier. + :vartype id: str + :ivar resource_id: Storage account resource Id. + :vartype resource_id: str + :ivar attributes: The storage account management attributes. + :vartype attributes: ~azure.keyvault.models.StorageAccountAttributes + :ivar tags: Application specific metadata in the form of key-value pairs. + :vartype tags: dict[str, str] + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted storage account. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the storage account is scheduled + to be purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the storage account was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'id': {'readonly': True}, + 'resource_id': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'StorageAccountAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, **kwargs): + super(DeletedStorageAccountItem, self).__init__(**kwargs) + self.recovery_id = kwargs.get('recovery_id', None) + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_storage_account_item_paged.py b/azure-keyvault/azure/keyvault/models/deleted_storage_account_item_paged.py new file mode 100644 index 000000000000..e0ae6f7e6755 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_storage_account_item_paged.py @@ -0,0 +1,27 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.paging import Paged + + +class DeletedStorageAccountItemPaged(Paged): + """ + A paging container for iterating over a list of :class:`DeletedStorageAccountItem ` object + """ + + _attribute_map = { + 'next_link': {'key': 'nextLink', 'type': 'str'}, + 'current_page': {'key': 'value', 'type': '[DeletedStorageAccountItem]'} + } + + def __init__(self, *args, **kwargs): + + super(DeletedStorageAccountItemPaged, self).__init__(*args, **kwargs) diff --git a/azure-keyvault/azure/keyvault/models/deleted_storage_account_item_py3.py b/azure-keyvault/azure/keyvault/models/deleted_storage_account_item_py3.py new file mode 100644 index 000000000000..cc0ed4ab734d --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_storage_account_item_py3.py @@ -0,0 +1,63 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .storage_account_item_py3 import StorageAccountItem + + +class DeletedStorageAccountItem(StorageAccountItem): + """The deleted storage account item containing metadata about the deleted + storage account. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: Storage identifier. + :vartype id: str + :ivar resource_id: Storage account resource Id. + :vartype resource_id: str + :ivar attributes: The storage account management attributes. + :vartype attributes: ~azure.keyvault.models.StorageAccountAttributes + :ivar tags: Application specific metadata in the form of key-value pairs. + :vartype tags: dict[str, str] + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted storage account. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the storage account is scheduled + to be purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the storage account was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'id': {'readonly': True}, + 'resource_id': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'StorageAccountAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, *, recovery_id: str=None, **kwargs) -> None: + super(DeletedStorageAccountItem, self).__init__(**kwargs) + self.recovery_id = recovery_id + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_storage_bundle.py b/azure-keyvault/azure/keyvault/models/deleted_storage_bundle.py new file mode 100644 index 000000000000..f9281dc9b3dd --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_storage_bundle.py @@ -0,0 +1,77 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .storage_bundle import StorageBundle + + +class DeletedStorageBundle(StorageBundle): + """A deleted storage account bundle consisting of its previous id, attributes + and its tags, as well as information on when it will be purged. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The storage account id. + :vartype id: str + :ivar resource_id: The storage account resource id. + :vartype resource_id: str + :ivar active_key_name: The current active storage account key name. + :vartype active_key_name: str + :ivar auto_regenerate_key: whether keyvault should manage the storage + account for the user. + :vartype auto_regenerate_key: bool + :ivar regeneration_period: The key regeneration time duration specified in + ISO-8601 format. + :vartype regeneration_period: str + :ivar attributes: The storage account attributes. + :vartype attributes: ~azure.keyvault.models.StorageAccountAttributes + :ivar tags: Application specific metadata in the form of key-value pairs + :vartype tags: dict[str, str] + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted storage account. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the storage account is scheduled + to be purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the storage account was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'id': {'readonly': True}, + 'resource_id': {'readonly': True}, + 'active_key_name': {'readonly': True}, + 'auto_regenerate_key': {'readonly': True}, + 'regeneration_period': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'active_key_name': {'key': 'activeKeyName', 'type': 'str'}, + 'auto_regenerate_key': {'key': 'autoRegenerateKey', 'type': 'bool'}, + 'regeneration_period': {'key': 'regenerationPeriod', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'StorageAccountAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, **kwargs): + super(DeletedStorageBundle, self).__init__(**kwargs) + self.recovery_id = kwargs.get('recovery_id', None) + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/deleted_storage_bundle_py3.py b/azure-keyvault/azure/keyvault/models/deleted_storage_bundle_py3.py new file mode 100644 index 000000000000..1e94dca3fc1d --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/deleted_storage_bundle_py3.py @@ -0,0 +1,77 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .storage_bundle_py3 import StorageBundle + + +class DeletedStorageBundle(StorageBundle): + """A deleted storage account bundle consisting of its previous id, attributes + and its tags, as well as information on when it will be purged. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The storage account id. + :vartype id: str + :ivar resource_id: The storage account resource id. + :vartype resource_id: str + :ivar active_key_name: The current active storage account key name. + :vartype active_key_name: str + :ivar auto_regenerate_key: whether keyvault should manage the storage + account for the user. + :vartype auto_regenerate_key: bool + :ivar regeneration_period: The key regeneration time duration specified in + ISO-8601 format. + :vartype regeneration_period: str + :ivar attributes: The storage account attributes. + :vartype attributes: ~azure.keyvault.models.StorageAccountAttributes + :ivar tags: Application specific metadata in the form of key-value pairs + :vartype tags: dict[str, str] + :param recovery_id: The url of the recovery object, used to identify and + recover the deleted storage account. + :type recovery_id: str + :ivar scheduled_purge_date: The time when the storage account is scheduled + to be purged, in UTC + :vartype scheduled_purge_date: datetime + :ivar deleted_date: The time when the storage account was deleted, in UTC + :vartype deleted_date: datetime + """ + + _validation = { + 'id': {'readonly': True}, + 'resource_id': {'readonly': True}, + 'active_key_name': {'readonly': True}, + 'auto_regenerate_key': {'readonly': True}, + 'regeneration_period': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'deleted_date': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'active_key_name': {'key': 'activeKeyName', 'type': 'str'}, + 'auto_regenerate_key': {'key': 'autoRegenerateKey', 'type': 'bool'}, + 'regeneration_period': {'key': 'regenerationPeriod', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'StorageAccountAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'recovery_id': {'key': 'recoveryId', 'type': 'str'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'unix-time'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, + } + + def __init__(self, *, recovery_id: str=None, **kwargs) -> None: + super(DeletedStorageBundle, self).__init__(**kwargs) + self.recovery_id = recovery_id + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/error.py b/azure-keyvault/azure/keyvault/models/error.py old mode 100755 new mode 100644 index edd0fb144070..9dbe09fa48fc --- a/azure-keyvault/azure/keyvault/models/error.py +++ b/azure-keyvault/azure/keyvault/models/error.py @@ -23,7 +23,7 @@ class Error(Model): :ivar message: The error message. :vartype message: str :ivar inner_error: - :vartype inner_error: :class:`Error ` + :vartype inner_error: ~azure.keyvault.models.Error """ _validation = { @@ -38,7 +38,8 @@ class Error(Model): 'inner_error': {'key': 'innererror', 'type': 'Error'}, } - def __init__(self): + def __init__(self, **kwargs): + super(Error, self).__init__(**kwargs) self.code = None self.message = None self.inner_error = None diff --git a/azure-keyvault/azure/keyvault/models/error_py3.py b/azure-keyvault/azure/keyvault/models/error_py3.py new file mode 100644 index 000000000000..660e077d36db --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/error_py3.py @@ -0,0 +1,45 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class Error(Model): + """The key vault server error. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar code: The error code. + :vartype code: str + :ivar message: The error message. + :vartype message: str + :ivar inner_error: + :vartype inner_error: ~azure.keyvault.models.Error + """ + + _validation = { + 'code': {'readonly': True}, + 'message': {'readonly': True}, + 'inner_error': {'readonly': True}, + } + + _attribute_map = { + 'code': {'key': 'code', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + 'inner_error': {'key': 'innererror', 'type': 'Error'}, + } + + def __init__(self, **kwargs) -> None: + super(Error, self).__init__(**kwargs) + self.code = None + self.message = None + self.inner_error = None diff --git a/azure-keyvault/azure/keyvault/models/issuer_attributes.py b/azure-keyvault/azure/keyvault/models/issuer_attributes.py old mode 100755 new mode 100644 index 4c79186d0155..c10a16642899 --- a/azure-keyvault/azure/keyvault/models/issuer_attributes.py +++ b/azure-keyvault/azure/keyvault/models/issuer_attributes.py @@ -37,7 +37,8 @@ class IssuerAttributes(Model): 'updated': {'key': 'updated', 'type': 'unix-time'}, } - def __init__(self, enabled=None): - self.enabled = enabled + def __init__(self, **kwargs): + super(IssuerAttributes, self).__init__(**kwargs) + self.enabled = kwargs.get('enabled', None) self.created = None self.updated = None diff --git a/azure-keyvault/azure/keyvault/models/issuer_attributes_py3.py b/azure-keyvault/azure/keyvault/models/issuer_attributes_py3.py new file mode 100644 index 000000000000..d52ad4e0fc20 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/issuer_attributes_py3.py @@ -0,0 +1,44 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class IssuerAttributes(Model): + """The attributes of an issuer managed by the Key Vault service. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param enabled: Determines whether the issuer is enabled. + :type enabled: bool + :ivar created: Creation time in UTC. + :vartype created: datetime + :ivar updated: Last updated time in UTC. + :vartype updated: datetime + """ + + _validation = { + 'created': {'readonly': True}, + 'updated': {'readonly': True}, + } + + _attribute_map = { + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'created': {'key': 'created', 'type': 'unix-time'}, + 'updated': {'key': 'updated', 'type': 'unix-time'}, + } + + def __init__(self, *, enabled: bool=None, **kwargs) -> None: + super(IssuerAttributes, self).__init__(**kwargs) + self.enabled = enabled + self.created = None + self.updated = None diff --git a/azure-keyvault/azure/keyvault/models/issuer_bundle.py b/azure-keyvault/azure/keyvault/models/issuer_bundle.py old mode 100755 new mode 100644 index 895598ec2bc4..778b64ada702 --- a/azure-keyvault/azure/keyvault/models/issuer_bundle.py +++ b/azure-keyvault/azure/keyvault/models/issuer_bundle.py @@ -23,15 +23,12 @@ class IssuerBundle(Model): :param provider: The issuer provider. :type provider: str :param credentials: The credentials to be used for the issuer. - :type credentials: :class:`IssuerCredentials - ` + :type credentials: ~azure.keyvault.models.IssuerCredentials :param organization_details: Details of the organization as provided to the issuer. - :type organization_details: :class:`OrganizationDetails - ` + :type organization_details: ~azure.keyvault.models.OrganizationDetails :param attributes: Attributes of the issuer object. - :type attributes: :class:`IssuerAttributes - ` + :type attributes: ~azure.keyvault.models.IssuerAttributes """ _validation = { @@ -46,9 +43,10 @@ class IssuerBundle(Model): 'attributes': {'key': 'attributes', 'type': 'IssuerAttributes'}, } - def __init__(self, provider=None, credentials=None, organization_details=None, attributes=None): + def __init__(self, **kwargs): + super(IssuerBundle, self).__init__(**kwargs) self.id = None - self.provider = provider - self.credentials = credentials - self.organization_details = organization_details - self.attributes = attributes + self.provider = kwargs.get('provider', None) + self.credentials = kwargs.get('credentials', None) + self.organization_details = kwargs.get('organization_details', None) + self.attributes = kwargs.get('attributes', None) diff --git a/azure-keyvault/azure/keyvault/models/issuer_bundle_py3.py b/azure-keyvault/azure/keyvault/models/issuer_bundle_py3.py new file mode 100644 index 000000000000..c8a3dc83178a --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/issuer_bundle_py3.py @@ -0,0 +1,52 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class IssuerBundle(Model): + """The issuer for Key Vault certificate. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: Identifier for the issuer object. + :vartype id: str + :param provider: The issuer provider. + :type provider: str + :param credentials: The credentials to be used for the issuer. + :type credentials: ~azure.keyvault.models.IssuerCredentials + :param organization_details: Details of the organization as provided to + the issuer. + :type organization_details: ~azure.keyvault.models.OrganizationDetails + :param attributes: Attributes of the issuer object. + :type attributes: ~azure.keyvault.models.IssuerAttributes + """ + + _validation = { + 'id': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'provider': {'key': 'provider', 'type': 'str'}, + 'credentials': {'key': 'credentials', 'type': 'IssuerCredentials'}, + 'organization_details': {'key': 'org_details', 'type': 'OrganizationDetails'}, + 'attributes': {'key': 'attributes', 'type': 'IssuerAttributes'}, + } + + def __init__(self, *, provider: str=None, credentials=None, organization_details=None, attributes=None, **kwargs) -> None: + super(IssuerBundle, self).__init__(**kwargs) + self.id = None + self.provider = provider + self.credentials = credentials + self.organization_details = organization_details + self.attributes = attributes diff --git a/azure-keyvault/azure/keyvault/models/issuer_credentials.py b/azure-keyvault/azure/keyvault/models/issuer_credentials.py old mode 100755 new mode 100644 index 9908e3a6c19e..2f86d863239d --- a/azure-keyvault/azure/keyvault/models/issuer_credentials.py +++ b/azure-keyvault/azure/keyvault/models/issuer_credentials.py @@ -26,6 +26,7 @@ class IssuerCredentials(Model): 'password': {'key': 'pwd', 'type': 'str'}, } - def __init__(self, account_id=None, password=None): - self.account_id = account_id - self.password = password + def __init__(self, **kwargs): + super(IssuerCredentials, self).__init__(**kwargs) + self.account_id = kwargs.get('account_id', None) + self.password = kwargs.get('password', None) diff --git a/azure-keyvault/azure/keyvault/models/issuer_credentials_py3.py b/azure-keyvault/azure/keyvault/models/issuer_credentials_py3.py new file mode 100644 index 000000000000..2882bad875d0 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/issuer_credentials_py3.py @@ -0,0 +1,32 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class IssuerCredentials(Model): + """The credentials to be used for the certificate issuer. + + :param account_id: The user name/account name/account id. + :type account_id: str + :param password: The password/secret/account key. + :type password: str + """ + + _attribute_map = { + 'account_id': {'key': 'account_id', 'type': 'str'}, + 'password': {'key': 'pwd', 'type': 'str'}, + } + + def __init__(self, *, account_id: str=None, password: str=None, **kwargs) -> None: + super(IssuerCredentials, self).__init__(**kwargs) + self.account_id = account_id + self.password = password diff --git a/azure-keyvault/azure/keyvault/models/issuer_parameters.py b/azure-keyvault/azure/keyvault/models/issuer_parameters.py old mode 100755 new mode 100644 index 4e8db00262bc..36f15dae7887 --- a/azure-keyvault/azure/keyvault/models/issuer_parameters.py +++ b/azure-keyvault/azure/keyvault/models/issuer_parameters.py @@ -21,13 +21,19 @@ class IssuerParameters(Model): :param certificate_type: Type of certificate to be requested from the issuer provider. :type certificate_type: str + :param certificate_transparency: Indicates if the certificates generated + under this policy should be published to certificate transparency logs. + :type certificate_transparency: bool """ _attribute_map = { 'name': {'key': 'name', 'type': 'str'}, 'certificate_type': {'key': 'cty', 'type': 'str'}, + 'certificate_transparency': {'key': 'cert_transparency', 'type': 'bool'}, } - def __init__(self, name=None, certificate_type=None): - self.name = name - self.certificate_type = certificate_type + def __init__(self, **kwargs): + super(IssuerParameters, self).__init__(**kwargs) + self.name = kwargs.get('name', None) + self.certificate_type = kwargs.get('certificate_type', None) + self.certificate_transparency = kwargs.get('certificate_transparency', None) diff --git a/azure-keyvault/azure/keyvault/models/issuer_parameters_py3.py b/azure-keyvault/azure/keyvault/models/issuer_parameters_py3.py new file mode 100644 index 000000000000..b178321725fd --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/issuer_parameters_py3.py @@ -0,0 +1,39 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class IssuerParameters(Model): + """Parameters for the issuer of the X509 component of a certificate. + + :param name: Name of the referenced issuer object or reserved names; for + example, 'Self' or 'Unknown'. + :type name: str + :param certificate_type: Type of certificate to be requested from the + issuer provider. + :type certificate_type: str + :param certificate_transparency: Indicates if the certificates generated + under this policy should be published to certificate transparency logs. + :type certificate_transparency: bool + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'certificate_type': {'key': 'cty', 'type': 'str'}, + 'certificate_transparency': {'key': 'cert_transparency', 'type': 'bool'}, + } + + def __init__(self, *, name: str=None, certificate_type: str=None, certificate_transparency: bool=None, **kwargs) -> None: + super(IssuerParameters, self).__init__(**kwargs) + self.name = name + self.certificate_type = certificate_type + self.certificate_transparency = certificate_transparency diff --git a/azure-keyvault/azure/keyvault/models/json_web_key.py b/azure-keyvault/azure/keyvault/models/json_web_key.py old mode 100755 new mode 100644 index 481594a77b40..eae162cf0873 --- a/azure-keyvault/azure/keyvault/models/json_web_key.py +++ b/azure-keyvault/azure/keyvault/models/json_web_key.py @@ -17,18 +17,17 @@ class JsonWebKey(Model): :param kid: Key identifier. :type kid: str - :param kty: Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, - HSM, Octet. Kty is usually set to RSA. Possible values include: 'EC', - 'RSA', 'RSA-HSM', 'oct' - :type kty: str or :class:`JsonWebKeyType - ` + :param kty: JsonWebKey Key Type (kty), as defined in + https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. + Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + :type kty: str or ~azure.keyvault.models.JsonWebKeyType :param key_ops: - :type key_ops: list of str + :type key_ops: list[str] :param n: RSA modulus. :type n: bytes :param e: RSA public exponent. :type e: bytes - :param d: RSA private exponent. + :param d: RSA private exponent, or the D component of an EC private key. :type d: bytes :param dp: RSA private key parameter. :type dp: bytes @@ -44,6 +43,14 @@ class JsonWebKey(Model): :type k: bytes :param t: HSM Token, used with 'Bring Your Own Key'. :type t: bytes + :param crv: Elliptic curve name. For valid values, see + JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', + 'P-256K' + :type crv: str or ~azure.keyvault.models.JsonWebKeyCurveName + :param x: X component of an EC public key. + :type x: bytes + :param y: Y component of an EC public key. + :type y: bytes """ _attribute_map = { @@ -60,19 +67,26 @@ class JsonWebKey(Model): 'q': {'key': 'q', 'type': 'base64'}, 'k': {'key': 'k', 'type': 'base64'}, 't': {'key': 'key_hsm', 'type': 'base64'}, + 'crv': {'key': 'crv', 'type': 'str'}, + 'x': {'key': 'x', 'type': 'base64'}, + 'y': {'key': 'y', 'type': 'base64'}, } - def __init__(self, kid=None, kty=None, key_ops=None, n=None, e=None, d=None, dp=None, dq=None, qi=None, p=None, q=None, k=None, t=None): - self.kid = kid - self.kty = kty - self.key_ops = key_ops - self.n = n - self.e = e - self.d = d - self.dp = dp - self.dq = dq - self.qi = qi - self.p = p - self.q = q - self.k = k - self.t = t + def __init__(self, **kwargs): + super(JsonWebKey, self).__init__(**kwargs) + self.kid = kwargs.get('kid', None) + self.kty = kwargs.get('kty', None) + self.key_ops = kwargs.get('key_ops', None) + self.n = kwargs.get('n', None) + self.e = kwargs.get('e', None) + self.d = kwargs.get('d', None) + self.dp = kwargs.get('dp', None) + self.dq = kwargs.get('dq', None) + self.qi = kwargs.get('qi', None) + self.p = kwargs.get('p', None) + self.q = kwargs.get('q', None) + self.k = kwargs.get('k', None) + self.t = kwargs.get('t', None) + self.crv = kwargs.get('crv', None) + self.x = kwargs.get('x', None) + self.y = kwargs.get('y', None) diff --git a/azure-keyvault/azure/keyvault/models/json_web_key_py3.py b/azure-keyvault/azure/keyvault/models/json_web_key_py3.py new file mode 100644 index 000000000000..686a4731a6cd --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/json_web_key_py3.py @@ -0,0 +1,92 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class JsonWebKey(Model): + """As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18. + + :param kid: Key identifier. + :type kid: str + :param kty: JsonWebKey Key Type (kty), as defined in + https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. + Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + :type kty: str or ~azure.keyvault.models.JsonWebKeyType + :param key_ops: + :type key_ops: list[str] + :param n: RSA modulus. + :type n: bytes + :param e: RSA public exponent. + :type e: bytes + :param d: RSA private exponent, or the D component of an EC private key. + :type d: bytes + :param dp: RSA private key parameter. + :type dp: bytes + :param dq: RSA private key parameter. + :type dq: bytes + :param qi: RSA private key parameter. + :type qi: bytes + :param p: RSA secret prime. + :type p: bytes + :param q: RSA secret prime, with p < q. + :type q: bytes + :param k: Symmetric key. + :type k: bytes + :param t: HSM Token, used with 'Bring Your Own Key'. + :type t: bytes + :param crv: Elliptic curve name. For valid values, see + JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', + 'P-256K' + :type crv: str or ~azure.keyvault.models.JsonWebKeyCurveName + :param x: X component of an EC public key. + :type x: bytes + :param y: Y component of an EC public key. + :type y: bytes + """ + + _attribute_map = { + 'kid': {'key': 'kid', 'type': 'str'}, + 'kty': {'key': 'kty', 'type': 'str'}, + 'key_ops': {'key': 'key_ops', 'type': '[str]'}, + 'n': {'key': 'n', 'type': 'base64'}, + 'e': {'key': 'e', 'type': 'base64'}, + 'd': {'key': 'd', 'type': 'base64'}, + 'dp': {'key': 'dp', 'type': 'base64'}, + 'dq': {'key': 'dq', 'type': 'base64'}, + 'qi': {'key': 'qi', 'type': 'base64'}, + 'p': {'key': 'p', 'type': 'base64'}, + 'q': {'key': 'q', 'type': 'base64'}, + 'k': {'key': 'k', 'type': 'base64'}, + 't': {'key': 'key_hsm', 'type': 'base64'}, + 'crv': {'key': 'crv', 'type': 'str'}, + 'x': {'key': 'x', 'type': 'base64'}, + 'y': {'key': 'y', 'type': 'base64'}, + } + + def __init__(self, *, kid: str=None, kty=None, key_ops=None, n: bytes=None, e: bytes=None, d: bytes=None, dp: bytes=None, dq: bytes=None, qi: bytes=None, p: bytes=None, q: bytes=None, k: bytes=None, t: bytes=None, crv=None, x: bytes=None, y: bytes=None, **kwargs) -> None: + super(JsonWebKey, self).__init__(**kwargs) + self.kid = kid + self.kty = kty + self.key_ops = key_ops + self.n = n + self.e = e + self.d = d + self.dp = dp + self.dq = dq + self.qi = qi + self.p = p + self.q = q + self.k = k + self.t = t + self.crv = crv + self.x = x + self.y = y diff --git a/azure-keyvault/azure/keyvault/models/key_attributes.py b/azure-keyvault/azure/keyvault/models/key_attributes.py old mode 100755 new mode 100644 index 3338efe6189d..d1fb33f64a64 --- a/azure-keyvault/azure/keyvault/models/key_attributes.py +++ b/azure-keyvault/azure/keyvault/models/key_attributes.py @@ -34,8 +34,8 @@ class KeyAttributes(Attributes): system can purge the key, at the end of the retention interval. Possible values include: 'Purgeable', 'Recoverable+Purgeable', 'Recoverable', 'Recoverable+ProtectedSubscription' - :vartype recovery_level: str or :class:`DeletionRecoveryLevel - ` + :vartype recovery_level: str or + ~azure.keyvault.models.DeletionRecoveryLevel """ _validation = { @@ -53,6 +53,6 @@ class KeyAttributes(Attributes): 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, } - def __init__(self, enabled=None, not_before=None, expires=None): - super(KeyAttributes, self).__init__(enabled=enabled, not_before=not_before, expires=expires) + def __init__(self, **kwargs): + super(KeyAttributes, self).__init__(**kwargs) self.recovery_level = None diff --git a/azure-keyvault/azure/keyvault/models/key_attributes_py3.py b/azure-keyvault/azure/keyvault/models/key_attributes_py3.py new file mode 100644 index 000000000000..ee606fe0f5f4 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_attributes_py3.py @@ -0,0 +1,58 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .attributes_py3 import Attributes + + +class KeyAttributes(Attributes): + """The attributes of a key managed by the key vault service. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param enabled: Determines whether the object is enabled. + :type enabled: bool + :param not_before: Not before date in UTC. + :type not_before: datetime + :param expires: Expiry date in UTC. + :type expires: datetime + :ivar created: Creation time in UTC. + :vartype created: datetime + :ivar updated: Last updated time in UTC. + :vartype updated: datetime + :ivar recovery_level: Reflects the deletion recovery level currently in + effect for keys in the current vault. If it contains 'Purgeable' the key + can be permanently deleted by a privileged user; otherwise, only the + system can purge the key, at the end of the retention interval. Possible + values include: 'Purgeable', 'Recoverable+Purgeable', 'Recoverable', + 'Recoverable+ProtectedSubscription' + :vartype recovery_level: str or + ~azure.keyvault.models.DeletionRecoveryLevel + """ + + _validation = { + 'created': {'readonly': True}, + 'updated': {'readonly': True}, + 'recovery_level': {'readonly': True}, + } + + _attribute_map = { + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'not_before': {'key': 'nbf', 'type': 'unix-time'}, + 'expires': {'key': 'exp', 'type': 'unix-time'}, + 'created': {'key': 'created', 'type': 'unix-time'}, + 'updated': {'key': 'updated', 'type': 'unix-time'}, + 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, + } + + def __init__(self, *, enabled: bool=None, not_before=None, expires=None, **kwargs) -> None: + super(KeyAttributes, self).__init__(enabled=enabled, not_before=not_before, expires=expires, **kwargs) + self.recovery_level = None diff --git a/azure-keyvault/azure/keyvault/models/key_bundle.py b/azure-keyvault/azure/keyvault/models/key_bundle.py old mode 100755 new mode 100644 index 3bb9ea90c9c6..0dd494c6de1d --- a/azure-keyvault/azure/keyvault/models/key_bundle.py +++ b/azure-keyvault/azure/keyvault/models/key_bundle.py @@ -19,12 +19,11 @@ class KeyBundle(Model): sending a request. :param key: The Json web key. - :type key: :class:`JsonWebKey ` + :type key: ~azure.keyvault.models.JsonWebKey :param attributes: The key management attributes. - :type attributes: :class:`KeyAttributes - ` + :type attributes: ~azure.keyvault.models.KeyAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :ivar managed: True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true. :vartype managed: bool @@ -41,8 +40,9 @@ class KeyBundle(Model): 'managed': {'key': 'managed', 'type': 'bool'}, } - def __init__(self, key=None, attributes=None, tags=None): - self.key = key - self.attributes = attributes - self.tags = tags + def __init__(self, **kwargs): + super(KeyBundle, self).__init__(**kwargs) + self.key = kwargs.get('key', None) + self.attributes = kwargs.get('attributes', None) + self.tags = kwargs.get('tags', None) self.managed = None diff --git a/azure-keyvault/azure/keyvault/models/key_bundle_py3.py b/azure-keyvault/azure/keyvault/models/key_bundle_py3.py new file mode 100644 index 000000000000..53e3abc61095 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_bundle_py3.py @@ -0,0 +1,48 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeyBundle(Model): + """A KeyBundle consisting of a WebKey plus its attributes. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param key: The Json web key. + :type key: ~azure.keyvault.models.JsonWebKey + :param attributes: The key management attributes. + :type attributes: ~azure.keyvault.models.KeyAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :ivar managed: True if the key's lifetime is managed by key vault. If this + is a key backing a certificate, then managed will be true. + :vartype managed: bool + """ + + _validation = { + 'managed': {'readonly': True}, + } + + _attribute_map = { + 'key': {'key': 'key', 'type': 'JsonWebKey'}, + 'attributes': {'key': 'attributes', 'type': 'KeyAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'managed': {'key': 'managed', 'type': 'bool'}, + } + + def __init__(self, *, key=None, attributes=None, tags=None, **kwargs) -> None: + super(KeyBundle, self).__init__(**kwargs) + self.key = key + self.attributes = attributes + self.tags = tags + self.managed = None diff --git a/azure-keyvault/azure/keyvault/models/key_create_parameters.py b/azure-keyvault/azure/keyvault/models/key_create_parameters.py old mode 100755 new mode 100644 index deb9289ea3f9..9db5bfb65d1c --- a/azure-keyvault/azure/keyvault/models/key_create_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_create_parameters.py @@ -15,21 +15,25 @@ class KeyCreateParameters(Model): """The key create parameters. - :param kty: The type of key to create. For valid key types, see - JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, - RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - :type kty: str or :class:`JsonWebKeyType - ` - :param key_size: The key size in bytes. For example, 1024 or 2048. + All required parameters must be populated in order to send to Azure. + + :param kty: Required. The type of key to create. For valid values, see + JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', + 'oct' + :type kty: str or ~azure.keyvault.models.JsonWebKeyType + :param key_size: The key size in bits. For example: 2048, 3072, or 4096 + for RSA. :type key_size: int :param key_ops: - :type key_ops: list of str or :class:`JsonWebKeyOperation - ` + :type key_ops: list[str or ~azure.keyvault.models.JsonWebKeyOperation] :param key_attributes: - :type key_attributes: :class:`KeyAttributes - ` + :type key_attributes: ~azure.keyvault.models.KeyAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] + :param curve: Elliptic curve name. For valid values, see + JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', + 'P-256K' + :type curve: str or ~azure.keyvault.models.JsonWebKeyCurveName """ _validation = { @@ -42,11 +46,14 @@ class KeyCreateParameters(Model): 'key_ops': {'key': 'key_ops', 'type': '[str]'}, 'key_attributes': {'key': 'attributes', 'type': 'KeyAttributes'}, 'tags': {'key': 'tags', 'type': '{str}'}, + 'curve': {'key': 'crv', 'type': 'str'}, } - def __init__(self, kty, key_size=None, key_ops=None, key_attributes=None, tags=None): - self.kty = kty - self.key_size = key_size - self.key_ops = key_ops - self.key_attributes = key_attributes - self.tags = tags + def __init__(self, **kwargs): + super(KeyCreateParameters, self).__init__(**kwargs) + self.kty = kwargs.get('kty', None) + self.key_size = kwargs.get('key_size', None) + self.key_ops = kwargs.get('key_ops', None) + self.key_attributes = kwargs.get('key_attributes', None) + self.tags = kwargs.get('tags', None) + self.curve = kwargs.get('curve', None) diff --git a/azure-keyvault/azure/keyvault/models/key_create_parameters_py3.py b/azure-keyvault/azure/keyvault/models/key_create_parameters_py3.py new file mode 100644 index 000000000000..04c8556245bf --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_create_parameters_py3.py @@ -0,0 +1,59 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeyCreateParameters(Model): + """The key create parameters. + + All required parameters must be populated in order to send to Azure. + + :param kty: Required. The type of key to create. For valid values, see + JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', + 'oct' + :type kty: str or ~azure.keyvault.models.JsonWebKeyType + :param key_size: The key size in bits. For example: 2048, 3072, or 4096 + for RSA. + :type key_size: int + :param key_ops: + :type key_ops: list[str or ~azure.keyvault.models.JsonWebKeyOperation] + :param key_attributes: + :type key_attributes: ~azure.keyvault.models.KeyAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :param curve: Elliptic curve name. For valid values, see + JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', + 'P-256K' + :type curve: str or ~azure.keyvault.models.JsonWebKeyCurveName + """ + + _validation = { + 'kty': {'required': True, 'min_length': 1}, + } + + _attribute_map = { + 'kty': {'key': 'kty', 'type': 'str'}, + 'key_size': {'key': 'key_size', 'type': 'int'}, + 'key_ops': {'key': 'key_ops', 'type': '[str]'}, + 'key_attributes': {'key': 'attributes', 'type': 'KeyAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'curve': {'key': 'crv', 'type': 'str'}, + } + + def __init__(self, *, kty, key_size: int=None, key_ops=None, key_attributes=None, tags=None, curve=None, **kwargs) -> None: + super(KeyCreateParameters, self).__init__(**kwargs) + self.kty = kty + self.key_size = key_size + self.key_ops = key_ops + self.key_attributes = key_attributes + self.tags = tags + self.curve = curve diff --git a/azure-keyvault/azure/keyvault/models/key_import_parameters.py b/azure-keyvault/azure/keyvault/models/key_import_parameters.py old mode 100755 new mode 100644 index 6583fbabd4ca..f309aad29ea8 --- a/azure-keyvault/azure/keyvault/models/key_import_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_import_parameters.py @@ -15,15 +15,16 @@ class KeyImportParameters(Model): """The key import parameters. + All required parameters must be populated in order to send to Azure. + :param hsm: Whether to import as a hardware key (HSM) or software key. :type hsm: bool - :param key: The Json web key - :type key: :class:`JsonWebKey ` + :param key: Required. The Json web key + :type key: ~azure.keyvault.models.JsonWebKey :param key_attributes: The key management attributes. - :type key_attributes: :class:`KeyAttributes - ` + :type key_attributes: ~azure.keyvault.models.KeyAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] """ _validation = { @@ -37,8 +38,9 @@ class KeyImportParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, key, hsm=None, key_attributes=None, tags=None): - self.hsm = hsm - self.key = key - self.key_attributes = key_attributes - self.tags = tags + def __init__(self, **kwargs): + super(KeyImportParameters, self).__init__(**kwargs) + self.hsm = kwargs.get('hsm', None) + self.key = kwargs.get('key', None) + self.key_attributes = kwargs.get('key_attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/key_import_parameters_py3.py b/azure-keyvault/azure/keyvault/models/key_import_parameters_py3.py new file mode 100644 index 000000000000..6808d2290484 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_import_parameters_py3.py @@ -0,0 +1,46 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeyImportParameters(Model): + """The key import parameters. + + All required parameters must be populated in order to send to Azure. + + :param hsm: Whether to import as a hardware key (HSM) or software key. + :type hsm: bool + :param key: Required. The Json web key + :type key: ~azure.keyvault.models.JsonWebKey + :param key_attributes: The key management attributes. + :type key_attributes: ~azure.keyvault.models.KeyAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + """ + + _validation = { + 'key': {'required': True}, + } + + _attribute_map = { + 'hsm': {'key': 'Hsm', 'type': 'bool'}, + 'key': {'key': 'key', 'type': 'JsonWebKey'}, + 'key_attributes': {'key': 'attributes', 'type': 'KeyAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, key, hsm: bool=None, key_attributes=None, tags=None, **kwargs) -> None: + super(KeyImportParameters, self).__init__(**kwargs) + self.hsm = hsm + self.key = key + self.key_attributes = key_attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/key_item.py b/azure-keyvault/azure/keyvault/models/key_item.py old mode 100755 new mode 100644 index 206de5a8f1a7..6a4697b9a54d --- a/azure-keyvault/azure/keyvault/models/key_item.py +++ b/azure-keyvault/azure/keyvault/models/key_item.py @@ -21,10 +21,9 @@ class KeyItem(Model): :param kid: Key identifier. :type kid: str :param attributes: The key management attributes. - :type attributes: :class:`KeyAttributes - ` + :type attributes: ~azure.keyvault.models.KeyAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :ivar managed: True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true. :vartype managed: bool @@ -41,8 +40,9 @@ class KeyItem(Model): 'managed': {'key': 'managed', 'type': 'bool'}, } - def __init__(self, kid=None, attributes=None, tags=None): - self.kid = kid - self.attributes = attributes - self.tags = tags + def __init__(self, **kwargs): + super(KeyItem, self).__init__(**kwargs) + self.kid = kwargs.get('kid', None) + self.attributes = kwargs.get('attributes', None) + self.tags = kwargs.get('tags', None) self.managed = None diff --git a/azure-keyvault/azure/keyvault/models/key_item_paged.py b/azure-keyvault/azure/keyvault/models/key_item_paged.py old mode 100755 new mode 100644 index 11ccc8cf2576..8f2c62fbaa44 --- a/azure-keyvault/azure/keyvault/models/key_item_paged.py +++ b/azure-keyvault/azure/keyvault/models/key_item_paged.py @@ -14,7 +14,7 @@ class KeyItemPaged(Paged): """ - A paging container for iterating over a list of KeyItem object + A paging container for iterating over a list of :class:`KeyItem ` object """ _attribute_map = { diff --git a/azure-keyvault/azure/keyvault/models/key_item_py3.py b/azure-keyvault/azure/keyvault/models/key_item_py3.py new file mode 100644 index 000000000000..cc00bce8ee47 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_item_py3.py @@ -0,0 +1,48 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeyItem(Model): + """The key item containing key metadata. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param kid: Key identifier. + :type kid: str + :param attributes: The key management attributes. + :type attributes: ~azure.keyvault.models.KeyAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :ivar managed: True if the key's lifetime is managed by key vault. If this + is a key backing a certificate, then managed will be true. + :vartype managed: bool + """ + + _validation = { + 'managed': {'readonly': True}, + } + + _attribute_map = { + 'kid': {'key': 'kid', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'KeyAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'managed': {'key': 'managed', 'type': 'bool'}, + } + + def __init__(self, *, kid: str=None, attributes=None, tags=None, **kwargs) -> None: + super(KeyItem, self).__init__(**kwargs) + self.kid = kid + self.attributes = attributes + self.tags = tags + self.managed = None diff --git a/azure-keyvault/azure/keyvault/models/key_operation_result.py b/azure-keyvault/azure/keyvault/models/key_operation_result.py old mode 100755 new mode 100644 index 02c121311b9d..577326dcf54c --- a/azure-keyvault/azure/keyvault/models/key_operation_result.py +++ b/azure-keyvault/azure/keyvault/models/key_operation_result.py @@ -34,6 +34,7 @@ class KeyOperationResult(Model): 'result': {'key': 'value', 'type': 'base64'}, } - def __init__(self): + def __init__(self, **kwargs): + super(KeyOperationResult, self).__init__(**kwargs) self.kid = None self.result = None diff --git a/azure-keyvault/azure/keyvault/models/key_operation_result_py3.py b/azure-keyvault/azure/keyvault/models/key_operation_result_py3.py new file mode 100644 index 000000000000..82cd8de63331 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_operation_result_py3.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeyOperationResult(Model): + """The key operation result. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar kid: Key identifier + :vartype kid: str + :ivar result: + :vartype result: bytes + """ + + _validation = { + 'kid': {'readonly': True}, + 'result': {'readonly': True}, + } + + _attribute_map = { + 'kid': {'key': 'kid', 'type': 'str'}, + 'result': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, **kwargs) -> None: + super(KeyOperationResult, self).__init__(**kwargs) + self.kid = None + self.result = None diff --git a/azure-keyvault/azure/keyvault/models/key_operations_parameters.py b/azure-keyvault/azure/keyvault/models/key_operations_parameters.py old mode 100755 new mode 100644 index 9733161d5326..76c19c93e69c --- a/azure-keyvault/azure/keyvault/models/key_operations_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_operations_parameters.py @@ -15,11 +15,13 @@ class KeyOperationsParameters(Model): """The key operations parameters. - :param algorithm: algorithm identifier. Possible values include: + All required parameters must be populated in order to send to Azure. + + :param algorithm: Required. algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - :type algorithm: str or :class:`JsonWebKeyEncryptionAlgorithm - ` - :param value: + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeyEncryptionAlgorithm + :param value: Required. :type value: bytes """ @@ -33,6 +35,7 @@ class KeyOperationsParameters(Model): 'value': {'key': 'value', 'type': 'base64'}, } - def __init__(self, algorithm, value): - self.algorithm = algorithm - self.value = value + def __init__(self, **kwargs): + super(KeyOperationsParameters, self).__init__(**kwargs) + self.algorithm = kwargs.get('algorithm', None) + self.value = kwargs.get('value', None) diff --git a/azure-keyvault/azure/keyvault/models/key_operations_parameters_py3.py b/azure-keyvault/azure/keyvault/models/key_operations_parameters_py3.py new file mode 100644 index 000000000000..95908ea94bf7 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_operations_parameters_py3.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeyOperationsParameters(Model): + """The key operations parameters. + + All required parameters must be populated in order to send to Azure. + + :param algorithm: Required. algorithm identifier. Possible values include: + 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeyEncryptionAlgorithm + :param value: Required. + :type value: bytes + """ + + _validation = { + 'algorithm': {'required': True, 'min_length': 1}, + 'value': {'required': True}, + } + + _attribute_map = { + 'algorithm': {'key': 'alg', 'type': 'str'}, + 'value': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, *, algorithm, value: bytes, **kwargs) -> None: + super(KeyOperationsParameters, self).__init__(**kwargs) + self.algorithm = algorithm + self.value = value diff --git a/azure-keyvault/azure/keyvault/models/key_properties.py b/azure-keyvault/azure/keyvault/models/key_properties.py old mode 100755 new mode 100644 index 9460e1f6b0ac..0e5833f15189 --- a/azure-keyvault/azure/keyvault/models/key_properties.py +++ b/azure-keyvault/azure/keyvault/models/key_properties.py @@ -17,13 +17,19 @@ class KeyProperties(Model): :param exportable: Indicates if the private key can be exported. :type exportable: bool - :param key_type: The key type. - :type key_type: str - :param key_size: The key size in bytes. For example; 1024 or 2048. + :param key_type: The type of key pair to be used for the certificate. + Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + :type key_type: str or ~azure.keyvault.models.JsonWebKeyType + :param key_size: The key size in bits. For example: 2048, 3072, or 4096 + for RSA. :type key_size: int :param reuse_key: Indicates if the same key pair will be used on certificate renewal. :type reuse_key: bool + :param curve: Elliptic curve name. For valid values, see + JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', + 'P-256K' + :type curve: str or ~azure.keyvault.models.JsonWebKeyCurveName """ _attribute_map = { @@ -31,10 +37,13 @@ class KeyProperties(Model): 'key_type': {'key': 'kty', 'type': 'str'}, 'key_size': {'key': 'key_size', 'type': 'int'}, 'reuse_key': {'key': 'reuse_key', 'type': 'bool'}, + 'curve': {'key': 'crv', 'type': 'str'}, } - def __init__(self, exportable=None, key_type=None, key_size=None, reuse_key=None): - self.exportable = exportable - self.key_type = key_type - self.key_size = key_size - self.reuse_key = reuse_key + def __init__(self, **kwargs): + super(KeyProperties, self).__init__(**kwargs) + self.exportable = kwargs.get('exportable', None) + self.key_type = kwargs.get('key_type', None) + self.key_size = kwargs.get('key_size', None) + self.reuse_key = kwargs.get('reuse_key', None) + self.curve = kwargs.get('curve', None) diff --git a/azure-keyvault/azure/keyvault/models/key_properties_py3.py b/azure-keyvault/azure/keyvault/models/key_properties_py3.py new file mode 100644 index 000000000000..0361f75985c4 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_properties_py3.py @@ -0,0 +1,49 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeyProperties(Model): + """Properties of the key pair backing a certificate. + + :param exportable: Indicates if the private key can be exported. + :type exportable: bool + :param key_type: The type of key pair to be used for the certificate. + Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + :type key_type: str or ~azure.keyvault.models.JsonWebKeyType + :param key_size: The key size in bits. For example: 2048, 3072, or 4096 + for RSA. + :type key_size: int + :param reuse_key: Indicates if the same key pair will be used on + certificate renewal. + :type reuse_key: bool + :param curve: Elliptic curve name. For valid values, see + JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', + 'P-256K' + :type curve: str or ~azure.keyvault.models.JsonWebKeyCurveName + """ + + _attribute_map = { + 'exportable': {'key': 'exportable', 'type': 'bool'}, + 'key_type': {'key': 'kty', 'type': 'str'}, + 'key_size': {'key': 'key_size', 'type': 'int'}, + 'reuse_key': {'key': 'reuse_key', 'type': 'bool'}, + 'curve': {'key': 'crv', 'type': 'str'}, + } + + def __init__(self, *, exportable: bool=None, key_type=None, key_size: int=None, reuse_key: bool=None, curve=None, **kwargs) -> None: + super(KeyProperties, self).__init__(**kwargs) + self.exportable = exportable + self.key_type = key_type + self.key_size = key_size + self.reuse_key = reuse_key + self.curve = curve diff --git a/azure-keyvault/azure/keyvault/models/key_restore_parameters.py b/azure-keyvault/azure/keyvault/models/key_restore_parameters.py old mode 100755 new mode 100644 index 47224e4f519a..7594a7af2833 --- a/azure-keyvault/azure/keyvault/models/key_restore_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_restore_parameters.py @@ -15,7 +15,10 @@ class KeyRestoreParameters(Model): """The key restore parameters. - :param key_bundle_backup: The backup blob associated with a key bundle. + All required parameters must be populated in order to send to Azure. + + :param key_bundle_backup: Required. The backup blob associated with a key + bundle. :type key_bundle_backup: bytes """ @@ -27,5 +30,6 @@ class KeyRestoreParameters(Model): 'key_bundle_backup': {'key': 'value', 'type': 'base64'}, } - def __init__(self, key_bundle_backup): - self.key_bundle_backup = key_bundle_backup + def __init__(self, **kwargs): + super(KeyRestoreParameters, self).__init__(**kwargs) + self.key_bundle_backup = kwargs.get('key_bundle_backup', None) diff --git a/azure-keyvault/azure/keyvault/models/key_restore_parameters_py3.py b/azure-keyvault/azure/keyvault/models/key_restore_parameters_py3.py new file mode 100644 index 000000000000..cf74e5904178 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_restore_parameters_py3.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeyRestoreParameters(Model): + """The key restore parameters. + + All required parameters must be populated in order to send to Azure. + + :param key_bundle_backup: Required. The backup blob associated with a key + bundle. + :type key_bundle_backup: bytes + """ + + _validation = { + 'key_bundle_backup': {'required': True}, + } + + _attribute_map = { + 'key_bundle_backup': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, *, key_bundle_backup: bytes, **kwargs) -> None: + super(KeyRestoreParameters, self).__init__(**kwargs) + self.key_bundle_backup = key_bundle_backup diff --git a/azure-keyvault/azure/keyvault/models/key_sign_parameters.py b/azure-keyvault/azure/keyvault/models/key_sign_parameters.py old mode 100755 new mode 100644 index 025351c4d55c..fb510184d659 --- a/azure-keyvault/azure/keyvault/models/key_sign_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_sign_parameters.py @@ -15,13 +15,16 @@ class KeySignParameters(Model): """The key operations parameters. - :param algorithm: The signing/verification algorithm identifier. For more - information on possible algorithm types, see JsonWebKeySignatureAlgorithm. - Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', - 'RS512', 'RSNULL' - :type algorithm: str or :class:`JsonWebKeySignatureAlgorithm - ` - :param value: + All required parameters must be populated in order to send to Azure. + + :param algorithm: Required. The signing/verification algorithm identifier. + For more information on possible algorithm types, see + JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', + 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', + 'ES256K' + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeySignatureAlgorithm + :param value: Required. :type value: bytes """ @@ -35,6 +38,7 @@ class KeySignParameters(Model): 'value': {'key': 'value', 'type': 'base64'}, } - def __init__(self, algorithm, value): - self.algorithm = algorithm - self.value = value + def __init__(self, **kwargs): + super(KeySignParameters, self).__init__(**kwargs) + self.algorithm = kwargs.get('algorithm', None) + self.value = kwargs.get('value', None) diff --git a/azure-keyvault/azure/keyvault/models/key_sign_parameters_py3.py b/azure-keyvault/azure/keyvault/models/key_sign_parameters_py3.py new file mode 100644 index 000000000000..bd791cc7e9cf --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_sign_parameters_py3.py @@ -0,0 +1,44 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeySignParameters(Model): + """The key operations parameters. + + All required parameters must be populated in order to send to Azure. + + :param algorithm: Required. The signing/verification algorithm identifier. + For more information on possible algorithm types, see + JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', + 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', + 'ES256K' + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeySignatureAlgorithm + :param value: Required. + :type value: bytes + """ + + _validation = { + 'algorithm': {'required': True, 'min_length': 1}, + 'value': {'required': True}, + } + + _attribute_map = { + 'algorithm': {'key': 'alg', 'type': 'str'}, + 'value': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, *, algorithm, value: bytes, **kwargs) -> None: + super(KeySignParameters, self).__init__(**kwargs) + self.algorithm = algorithm + self.value = value diff --git a/azure-keyvault/azure/keyvault/models/key_update_parameters.py b/azure-keyvault/azure/keyvault/models/key_update_parameters.py old mode 100755 new mode 100644 index 8383f77b03cf..976411447e50 --- a/azure-keyvault/azure/keyvault/models/key_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_update_parameters.py @@ -17,13 +17,11 @@ class KeyUpdateParameters(Model): :param key_ops: Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - :type key_ops: list of str or :class:`JsonWebKeyOperation - ` + :type key_ops: list[str or ~azure.keyvault.models.JsonWebKeyOperation] :param key_attributes: - :type key_attributes: :class:`KeyAttributes - ` + :type key_attributes: ~azure.keyvault.models.KeyAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] """ _attribute_map = { @@ -32,7 +30,8 @@ class KeyUpdateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, key_ops=None, key_attributes=None, tags=None): - self.key_ops = key_ops - self.key_attributes = key_attributes - self.tags = tags + def __init__(self, **kwargs): + super(KeyUpdateParameters, self).__init__(**kwargs) + self.key_ops = kwargs.get('key_ops', None) + self.key_attributes = kwargs.get('key_attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/key_update_parameters_py3.py b/azure-keyvault/azure/keyvault/models/key_update_parameters_py3.py new file mode 100644 index 000000000000..0a6f96024f97 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_update_parameters_py3.py @@ -0,0 +1,37 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeyUpdateParameters(Model): + """The key update parameters. + + :param key_ops: Json web key operations. For more information on possible + key operations, see JsonWebKeyOperation. + :type key_ops: list[str or ~azure.keyvault.models.JsonWebKeyOperation] + :param key_attributes: + :type key_attributes: ~azure.keyvault.models.KeyAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + """ + + _attribute_map = { + 'key_ops': {'key': 'key_ops', 'type': '[str]'}, + 'key_attributes': {'key': 'attributes', 'type': 'KeyAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, key_ops=None, key_attributes=None, tags=None, **kwargs) -> None: + super(KeyUpdateParameters, self).__init__(**kwargs) + self.key_ops = key_ops + self.key_attributes = key_attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py b/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py old mode 100755 new mode 100644 index e19fa1bbc999..046a304e990a --- a/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py +++ b/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py @@ -12,15 +12,24 @@ from enum import Enum -class JsonWebKeyType(Enum): +class JsonWebKeyType(str, Enum): - ec = "EC" - rsa = "RSA" - rsa_hsm = "RSA-HSM" - oct = "oct" + ec = "EC" #: Elliptic Curve. + ec_hsm = "EC-HSM" #: Elliptic Curve with a private key which is not exportable from the HSM. + rsa = "RSA" #: RSA (https://tools.ietf.org/html/rfc3447) + rsa_hsm = "RSA-HSM" #: RSA with a private key which is not exportable from the HSM. + oct = "oct" #: Octet sequence (used to represent symmetric keys) -class DeletionRecoveryLevel(Enum): +class JsonWebKeyCurveName(str, Enum): + + p_256 = "P-256" #: The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. + p_384 = "P-384" #: The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. + p_521 = "P-521" #: The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. + p_256_k = "P-256K" #: The SECG SECP256K1 elliptic curve. + + +class DeletionRecoveryLevel(str, Enum): purgeable = "Purgeable" recoverable_purgeable = "Recoverable+Purgeable" @@ -28,7 +37,7 @@ class DeletionRecoveryLevel(Enum): recoverable_protected_subscription = "Recoverable+ProtectedSubscription" -class KeyUsageType(Enum): +class KeyUsageType(str, Enum): digital_signature = "digitalSignature" non_repudiation = "nonRepudiation" @@ -41,13 +50,13 @@ class KeyUsageType(Enum): decipher_only = "decipherOnly" -class ActionType(Enum): +class ActionType(str, Enum): email_contacts = "EmailContacts" auto_renew = "AutoRenew" -class JsonWebKeyOperation(Enum): +class JsonWebKeyOperation(str, Enum): encrypt = "encrypt" decrypt = "decrypt" @@ -57,19 +66,29 @@ class JsonWebKeyOperation(Enum): unwrap_key = "unwrapKey" -class JsonWebKeyEncryptionAlgorithm(Enum): +class JsonWebKeyEncryptionAlgorithm(str, Enum): rsa_oaep = "RSA-OAEP" rsa_oaep_256 = "RSA-OAEP-256" rsa1_5 = "RSA1_5" -class JsonWebKeySignatureAlgorithm(Enum): +class JsonWebKeySignatureAlgorithm(str, Enum): + + ps256 = "PS256" #: RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 + ps384 = "PS384" #: RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 + ps512 = "PS512" #: RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 + rs256 = "RS256" #: RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 + rs384 = "RS384" #: RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 + rs512 = "RS512" #: RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 + rsnull = "RSNULL" #: Reserved + es256 = "ES256" #: ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. + es384 = "ES384" #: ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 + es512 = "ES512" #: ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 + es256_k = "ES256K" #: ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 + + +class SasTokenType(str, Enum): - ps256 = "PS256" - ps384 = "PS384" - ps512 = "PS512" - rs256 = "RS256" - rs384 = "RS384" - rs512 = "RS512" - rsnull = "RSNULL" + account = "account" + service = "service" diff --git a/azure-keyvault/azure/keyvault/models/key_vault_error.py b/azure-keyvault/azure/keyvault/models/key_vault_error.py old mode 100755 new mode 100644 index cd38f4a68a90..91500f293c84 --- a/azure-keyvault/azure/keyvault/models/key_vault_error.py +++ b/azure-keyvault/azure/keyvault/models/key_vault_error.py @@ -20,7 +20,7 @@ class KeyVaultError(Model): sending a request. :ivar error: - :vartype error: :class:`Error ` + :vartype error: ~azure.keyvault.models.Error """ _validation = { @@ -31,7 +31,8 @@ class KeyVaultError(Model): 'error': {'key': 'error', 'type': 'Error'}, } - def __init__(self): + def __init__(self, **kwargs): + super(KeyVaultError, self).__init__(**kwargs) self.error = None diff --git a/azure-keyvault/azure/keyvault/models/key_vault_error_py3.py b/azure-keyvault/azure/keyvault/models/key_vault_error_py3.py new file mode 100644 index 000000000000..288f1d24494c --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_vault_error_py3.py @@ -0,0 +1,48 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model +from msrest.exceptions import HttpOperationError + + +class KeyVaultError(Model): + """The key vault error exception. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar error: + :vartype error: ~azure.keyvault.models.Error + """ + + _validation = { + 'error': {'readonly': True}, + } + + _attribute_map = { + 'error': {'key': 'error', 'type': 'Error'}, + } + + def __init__(self, **kwargs) -> None: + super(KeyVaultError, self).__init__(**kwargs) + self.error = None + + +class KeyVaultErrorException(HttpOperationError): + """Server responsed with exception of type: 'KeyVaultError'. + + :param deserialize: A deserializer + :param response: Server response to be deserialized. + """ + + def __init__(self, deserialize, response, *args): + + super(KeyVaultErrorException, self).__init__(deserialize, response, 'KeyVaultError', *args) diff --git a/azure-keyvault/azure/keyvault/models/key_verify_parameters.py b/azure-keyvault/azure/keyvault/models/key_verify_parameters.py old mode 100755 new mode 100644 index 6201ad1a3e5b..c2c4d31531c2 --- a/azure-keyvault/azure/keyvault/models/key_verify_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_verify_parameters.py @@ -15,15 +15,17 @@ class KeyVerifyParameters(Model): """The key verify parameters. - :param algorithm: The signing/verification algorithm. For more information - on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible - values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', - 'RSNULL' - :type algorithm: str or :class:`JsonWebKeySignatureAlgorithm - ` - :param digest: The digest used for signing. + All required parameters must be populated in order to send to Azure. + + :param algorithm: Required. The signing/verification algorithm. For more + information on possible algorithm types, see JsonWebKeySignatureAlgorithm. + Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', + 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeySignatureAlgorithm + :param digest: Required. The digest used for signing. :type digest: bytes - :param signature: The signature to be verified. + :param signature: Required. The signature to be verified. :type signature: bytes """ @@ -39,7 +41,8 @@ class KeyVerifyParameters(Model): 'signature': {'key': 'value', 'type': 'base64'}, } - def __init__(self, algorithm, digest, signature): - self.algorithm = algorithm - self.digest = digest - self.signature = signature + def __init__(self, **kwargs): + super(KeyVerifyParameters, self).__init__(**kwargs) + self.algorithm = kwargs.get('algorithm', None) + self.digest = kwargs.get('digest', None) + self.signature = kwargs.get('signature', None) diff --git a/azure-keyvault/azure/keyvault/models/key_verify_parameters_py3.py b/azure-keyvault/azure/keyvault/models/key_verify_parameters_py3.py new file mode 100644 index 000000000000..da00a773acb3 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_verify_parameters_py3.py @@ -0,0 +1,48 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeyVerifyParameters(Model): + """The key verify parameters. + + All required parameters must be populated in order to send to Azure. + + :param algorithm: Required. The signing/verification algorithm. For more + information on possible algorithm types, see JsonWebKeySignatureAlgorithm. + Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', + 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeySignatureAlgorithm + :param digest: Required. The digest used for signing. + :type digest: bytes + :param signature: Required. The signature to be verified. + :type signature: bytes + """ + + _validation = { + 'algorithm': {'required': True, 'min_length': 1}, + 'digest': {'required': True}, + 'signature': {'required': True}, + } + + _attribute_map = { + 'algorithm': {'key': 'alg', 'type': 'str'}, + 'digest': {'key': 'digest', 'type': 'base64'}, + 'signature': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, *, algorithm, digest: bytes, signature: bytes, **kwargs) -> None: + super(KeyVerifyParameters, self).__init__(**kwargs) + self.algorithm = algorithm + self.digest = digest + self.signature = signature diff --git a/azure-keyvault/azure/keyvault/models/key_verify_result.py b/azure-keyvault/azure/keyvault/models/key_verify_result.py old mode 100755 new mode 100644 index 4a6296f65a33..baffb85589cc --- a/azure-keyvault/azure/keyvault/models/key_verify_result.py +++ b/azure-keyvault/azure/keyvault/models/key_verify_result.py @@ -30,5 +30,6 @@ class KeyVerifyResult(Model): 'value': {'key': 'value', 'type': 'bool'}, } - def __init__(self): + def __init__(self, **kwargs): + super(KeyVerifyResult, self).__init__(**kwargs) self.value = None diff --git a/azure-keyvault/azure/keyvault/models/key_verify_result_py3.py b/azure-keyvault/azure/keyvault/models/key_verify_result_py3.py new file mode 100644 index 000000000000..33a7a7ebaefa --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_verify_result_py3.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class KeyVerifyResult(Model): + """The key verify result. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar value: True if the signature is verified, otherwise false. + :vartype value: bool + """ + + _validation = { + 'value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'bool'}, + } + + def __init__(self, **kwargs) -> None: + super(KeyVerifyResult, self).__init__(**kwargs) + self.value = None diff --git a/azure-keyvault/azure/keyvault/models/lifetime_action.py b/azure-keyvault/azure/keyvault/models/lifetime_action.py old mode 100755 new mode 100644 index 1347cbe13c47..c7470e260f30 --- a/azure-keyvault/azure/keyvault/models/lifetime_action.py +++ b/azure-keyvault/azure/keyvault/models/lifetime_action.py @@ -17,9 +17,9 @@ class LifetimeAction(Model): lifetime of a certificate. :param trigger: The condition that will execute the action. - :type trigger: :class:`Trigger ` + :type trigger: ~azure.keyvault.models.Trigger :param action: The action that will be executed. - :type action: :class:`Action ` + :type action: ~azure.keyvault.models.Action """ _attribute_map = { @@ -27,6 +27,7 @@ class LifetimeAction(Model): 'action': {'key': 'action', 'type': 'Action'}, } - def __init__(self, trigger=None, action=None): - self.trigger = trigger - self.action = action + def __init__(self, **kwargs): + super(LifetimeAction, self).__init__(**kwargs) + self.trigger = kwargs.get('trigger', None) + self.action = kwargs.get('action', None) diff --git a/azure-keyvault/azure/keyvault/models/lifetime_action_py3.py b/azure-keyvault/azure/keyvault/models/lifetime_action_py3.py new file mode 100644 index 000000000000..a63470077a56 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/lifetime_action_py3.py @@ -0,0 +1,33 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class LifetimeAction(Model): + """Action and its trigger that will be performed by Key Vault over the + lifetime of a certificate. + + :param trigger: The condition that will execute the action. + :type trigger: ~azure.keyvault.models.Trigger + :param action: The action that will be executed. + :type action: ~azure.keyvault.models.Action + """ + + _attribute_map = { + 'trigger': {'key': 'trigger', 'type': 'Trigger'}, + 'action': {'key': 'action', 'type': 'Action'}, + } + + def __init__(self, *, trigger=None, action=None, **kwargs) -> None: + super(LifetimeAction, self).__init__(**kwargs) + self.trigger = trigger + self.action = action diff --git a/azure-keyvault/azure/keyvault/models/organization_details.py b/azure-keyvault/azure/keyvault/models/organization_details.py old mode 100755 new mode 100644 index 3373b26a7653..c9275d5e9727 --- a/azure-keyvault/azure/keyvault/models/organization_details.py +++ b/azure-keyvault/azure/keyvault/models/organization_details.py @@ -18,8 +18,7 @@ class OrganizationDetails(Model): :param id: Id of the organization. :type id: str :param admin_details: Details of the organization administrator. - :type admin_details: list of :class:`AdministratorDetails - ` + :type admin_details: list[~azure.keyvault.models.AdministratorDetails] """ _attribute_map = { @@ -27,6 +26,7 @@ class OrganizationDetails(Model): 'admin_details': {'key': 'admin_details', 'type': '[AdministratorDetails]'}, } - def __init__(self, id=None, admin_details=None): - self.id = id - self.admin_details = admin_details + def __init__(self, **kwargs): + super(OrganizationDetails, self).__init__(**kwargs) + self.id = kwargs.get('id', None) + self.admin_details = kwargs.get('admin_details', None) diff --git a/azure-keyvault/azure/keyvault/models/organization_details_py3.py b/azure-keyvault/azure/keyvault/models/organization_details_py3.py new file mode 100644 index 000000000000..46772a5c718d --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/organization_details_py3.py @@ -0,0 +1,32 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class OrganizationDetails(Model): + """Details of the organization of the certificate issuer. + + :param id: Id of the organization. + :type id: str + :param admin_details: Details of the organization administrator. + :type admin_details: list[~azure.keyvault.models.AdministratorDetails] + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'admin_details': {'key': 'admin_details', 'type': '[AdministratorDetails]'}, + } + + def __init__(self, *, id: str=None, admin_details=None, **kwargs) -> None: + super(OrganizationDetails, self).__init__(**kwargs) + self.id = id + self.admin_details = admin_details diff --git a/azure-keyvault/azure/keyvault/models/pending_certificate_signing_request_result.py b/azure-keyvault/azure/keyvault/models/pending_certificate_signing_request_result.py old mode 100755 new mode 100644 index a870d85d0257..2bea9bfcdd61 --- a/azure-keyvault/azure/keyvault/models/pending_certificate_signing_request_result.py +++ b/azure-keyvault/azure/keyvault/models/pending_certificate_signing_request_result.py @@ -31,5 +31,6 @@ class PendingCertificateSigningRequestResult(Model): 'value': {'key': 'value', 'type': 'str'}, } - def __init__(self): + def __init__(self, **kwargs): + super(PendingCertificateSigningRequestResult, self).__init__(**kwargs) self.value = None diff --git a/azure-keyvault/azure/keyvault/models/pending_certificate_signing_request_result_py3.py b/azure-keyvault/azure/keyvault/models/pending_certificate_signing_request_result_py3.py new file mode 100644 index 000000000000..2895d5a77a03 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/pending_certificate_signing_request_result_py3.py @@ -0,0 +1,36 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class PendingCertificateSigningRequestResult(Model): + """The pending certificate signing request result. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar value: The pending certificate signing request as Base64 encoded + string. + :vartype value: str + """ + + _validation = { + 'value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'str'}, + } + + def __init__(self, **kwargs) -> None: + super(PendingCertificateSigningRequestResult, self).__init__(**kwargs) + self.value = None diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py b/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py old mode 100755 new mode 100644 index 46c31d2ed361..6e7b1edb21c0 --- a/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py @@ -24,20 +24,33 @@ class SasDefinitionAttributes(Model): :vartype created: datetime :ivar updated: Last updated time in UTC. :vartype updated: datetime + :ivar recovery_level: Reflects the deletion recovery level currently in + effect for SAS definitions in the current vault. If it contains + 'Purgeable' the SAS definition can be permanently deleted by a privileged + user; otherwise, only the system can purge the SAS definition, at the end + of the retention interval. Possible values include: 'Purgeable', + 'Recoverable+Purgeable', 'Recoverable', + 'Recoverable+ProtectedSubscription' + :vartype recovery_level: str or + ~azure.keyvault.models.DeletionRecoveryLevel """ _validation = { 'created': {'readonly': True}, 'updated': {'readonly': True}, + 'recovery_level': {'readonly': True}, } _attribute_map = { 'enabled': {'key': 'enabled', 'type': 'bool'}, 'created': {'key': 'created', 'type': 'unix-time'}, 'updated': {'key': 'updated', 'type': 'unix-time'}, + 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, } - def __init__(self, enabled=None): - self.enabled = enabled + def __init__(self, **kwargs): + super(SasDefinitionAttributes, self).__init__(**kwargs) + self.enabled = kwargs.get('enabled', None) self.created = None self.updated = None + self.recovery_level = None diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_attributes_py3.py b/azure-keyvault/azure/keyvault/models/sas_definition_attributes_py3.py new file mode 100644 index 000000000000..09880b269d0c --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/sas_definition_attributes_py3.py @@ -0,0 +1,56 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SasDefinitionAttributes(Model): + """The SAS definition management attributes. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param enabled: the enabled state of the object. + :type enabled: bool + :ivar created: Creation time in UTC. + :vartype created: datetime + :ivar updated: Last updated time in UTC. + :vartype updated: datetime + :ivar recovery_level: Reflects the deletion recovery level currently in + effect for SAS definitions in the current vault. If it contains + 'Purgeable' the SAS definition can be permanently deleted by a privileged + user; otherwise, only the system can purge the SAS definition, at the end + of the retention interval. Possible values include: 'Purgeable', + 'Recoverable+Purgeable', 'Recoverable', + 'Recoverable+ProtectedSubscription' + :vartype recovery_level: str or + ~azure.keyvault.models.DeletionRecoveryLevel + """ + + _validation = { + 'created': {'readonly': True}, + 'updated': {'readonly': True}, + 'recovery_level': {'readonly': True}, + } + + _attribute_map = { + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'created': {'key': 'created', 'type': 'unix-time'}, + 'updated': {'key': 'updated', 'type': 'unix-time'}, + 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, + } + + def __init__(self, *, enabled: bool=None, **kwargs) -> None: + super(SasDefinitionAttributes, self).__init__(**kwargs) + self.enabled = enabled + self.created = None + self.updated = None + self.recovery_level = None diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_bundle.py b/azure-keyvault/azure/keyvault/models/sas_definition_bundle.py old mode 100755 new mode 100644 index 2372dc4f8e11..0d346a2dc449 --- a/azure-keyvault/azure/keyvault/models/sas_definition_bundle.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_bundle.py @@ -23,20 +23,28 @@ class SasDefinitionBundle(Model): :vartype id: str :ivar secret_id: Storage account SAS definition secret id. :vartype secret_id: str - :ivar parameters: The SAS definition metadata in the form of key-value - pairs. - :vartype parameters: dict + :ivar template_uri: The SAS definition token template signed with an + arbitrary key. Tokens created according to the SAS definition will have + the same properties as the template. + :vartype template_uri: str + :ivar sas_type: The type of SAS token the SAS definition will create. + Possible values include: 'account', 'service' + :vartype sas_type: str or ~azure.keyvault.models.SasTokenType + :ivar validity_period: The validity period of SAS tokens created according + to the SAS definition. + :vartype validity_period: str :ivar attributes: The SAS definition attributes. - :vartype attributes: :class:`SasDefinitionAttributes - ` + :vartype attributes: ~azure.keyvault.models.SasDefinitionAttributes :ivar tags: Application specific metadata in the form of key-value pairs - :vartype tags: dict + :vartype tags: dict[str, str] """ _validation = { 'id': {'readonly': True}, 'secret_id': {'readonly': True}, - 'parameters': {'readonly': True}, + 'template_uri': {'readonly': True}, + 'sas_type': {'readonly': True}, + 'validity_period': {'readonly': True}, 'attributes': {'readonly': True}, 'tags': {'readonly': True}, } @@ -44,14 +52,19 @@ class SasDefinitionBundle(Model): _attribute_map = { 'id': {'key': 'id', 'type': 'str'}, 'secret_id': {'key': 'sid', 'type': 'str'}, - 'parameters': {'key': 'parameters', 'type': '{str}'}, + 'template_uri': {'key': 'templateUri', 'type': 'str'}, + 'sas_type': {'key': 'sasType', 'type': 'str'}, + 'validity_period': {'key': 'validityPeriod', 'type': 'str'}, 'attributes': {'key': 'attributes', 'type': 'SasDefinitionAttributes'}, 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self): + def __init__(self, **kwargs): + super(SasDefinitionBundle, self).__init__(**kwargs) self.id = None self.secret_id = None - self.parameters = None + self.template_uri = None + self.sas_type = None + self.validity_period = None self.attributes = None self.tags = None diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_bundle_py3.py b/azure-keyvault/azure/keyvault/models/sas_definition_bundle_py3.py new file mode 100644 index 000000000000..9aa746d4f855 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/sas_definition_bundle_py3.py @@ -0,0 +1,70 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SasDefinitionBundle(Model): + """A SAS definition bundle consists of key vault SAS definition details plus + its attributes. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The SAS definition id. + :vartype id: str + :ivar secret_id: Storage account SAS definition secret id. + :vartype secret_id: str + :ivar template_uri: The SAS definition token template signed with an + arbitrary key. Tokens created according to the SAS definition will have + the same properties as the template. + :vartype template_uri: str + :ivar sas_type: The type of SAS token the SAS definition will create. + Possible values include: 'account', 'service' + :vartype sas_type: str or ~azure.keyvault.models.SasTokenType + :ivar validity_period: The validity period of SAS tokens created according + to the SAS definition. + :vartype validity_period: str + :ivar attributes: The SAS definition attributes. + :vartype attributes: ~azure.keyvault.models.SasDefinitionAttributes + :ivar tags: Application specific metadata in the form of key-value pairs + :vartype tags: dict[str, str] + """ + + _validation = { + 'id': {'readonly': True}, + 'secret_id': {'readonly': True}, + 'template_uri': {'readonly': True}, + 'sas_type': {'readonly': True}, + 'validity_period': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'secret_id': {'key': 'sid', 'type': 'str'}, + 'template_uri': {'key': 'templateUri', 'type': 'str'}, + 'sas_type': {'key': 'sasType', 'type': 'str'}, + 'validity_period': {'key': 'validityPeriod', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'SasDefinitionAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, **kwargs) -> None: + super(SasDefinitionBundle, self).__init__(**kwargs) + self.id = None + self.secret_id = None + self.template_uri = None + self.sas_type = None + self.validity_period = None + self.attributes = None + self.tags = None diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_create_parameters.py b/azure-keyvault/azure/keyvault/models/sas_definition_create_parameters.py old mode 100755 new mode 100644 index a8e6cd3e7b7c..667ab8f59fa3 --- a/azure-keyvault/azure/keyvault/models/sas_definition_create_parameters.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_create_parameters.py @@ -15,27 +15,43 @@ class SasDefinitionCreateParameters(Model): """The SAS definition create parameters. - :param parameters: Sas definition creation metadata in the form of - key-value pairs. - :type parameters: dict + All required parameters must be populated in order to send to Azure. + + :param template_uri: Required. The SAS definition token template signed + with an arbitrary key. Tokens created according to the SAS definition + will have the same properties as the template. + :type template_uri: str + :param sas_type: Required. The type of SAS token the SAS definition will + create. Possible values include: 'account', 'service' + :type sas_type: str or ~azure.keyvault.models.SasTokenType + :param validity_period: Required. The validity period of SAS tokens + created according to the SAS definition. + :type validity_period: str :param sas_definition_attributes: The attributes of the SAS definition. - :type sas_definition_attributes: :class:`SasDefinitionAttributes - ` + :type sas_definition_attributes: + ~azure.keyvault.models.SasDefinitionAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] """ _validation = { - 'parameters': {'required': True}, + 'template_uri': {'required': True}, + 'sas_type': {'required': True}, + 'validity_period': {'required': True}, } _attribute_map = { - 'parameters': {'key': 'parameters', 'type': '{str}'}, + 'template_uri': {'key': 'templateUri', 'type': 'str'}, + 'sas_type': {'key': 'sasType', 'type': 'str'}, + 'validity_period': {'key': 'validityPeriod', 'type': 'str'}, 'sas_definition_attributes': {'key': 'attributes', 'type': 'SasDefinitionAttributes'}, 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, parameters, sas_definition_attributes=None, tags=None): - self.parameters = parameters - self.sas_definition_attributes = sas_definition_attributes - self.tags = tags + def __init__(self, **kwargs): + super(SasDefinitionCreateParameters, self).__init__(**kwargs) + self.template_uri = kwargs.get('template_uri', None) + self.sas_type = kwargs.get('sas_type', None) + self.validity_period = kwargs.get('validity_period', None) + self.sas_definition_attributes = kwargs.get('sas_definition_attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_create_parameters_py3.py b/azure-keyvault/azure/keyvault/models/sas_definition_create_parameters_py3.py new file mode 100644 index 000000000000..71bea69977dc --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/sas_definition_create_parameters_py3.py @@ -0,0 +1,57 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SasDefinitionCreateParameters(Model): + """The SAS definition create parameters. + + All required parameters must be populated in order to send to Azure. + + :param template_uri: Required. The SAS definition token template signed + with an arbitrary key. Tokens created according to the SAS definition + will have the same properties as the template. + :type template_uri: str + :param sas_type: Required. The type of SAS token the SAS definition will + create. Possible values include: 'account', 'service' + :type sas_type: str or ~azure.keyvault.models.SasTokenType + :param validity_period: Required. The validity period of SAS tokens + created according to the SAS definition. + :type validity_period: str + :param sas_definition_attributes: The attributes of the SAS definition. + :type sas_definition_attributes: + ~azure.keyvault.models.SasDefinitionAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + """ + + _validation = { + 'template_uri': {'required': True}, + 'sas_type': {'required': True}, + 'validity_period': {'required': True}, + } + + _attribute_map = { + 'template_uri': {'key': 'templateUri', 'type': 'str'}, + 'sas_type': {'key': 'sasType', 'type': 'str'}, + 'validity_period': {'key': 'validityPeriod', 'type': 'str'}, + 'sas_definition_attributes': {'key': 'attributes', 'type': 'SasDefinitionAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, template_uri: str, sas_type, validity_period: str, sas_definition_attributes=None, tags=None, **kwargs) -> None: + super(SasDefinitionCreateParameters, self).__init__(**kwargs) + self.template_uri = template_uri + self.sas_type = sas_type + self.validity_period = validity_period + self.sas_definition_attributes = sas_definition_attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_item.py b/azure-keyvault/azure/keyvault/models/sas_definition_item.py old mode 100755 new mode 100644 index 668c550e8eec..ad3715ad18dd --- a/azure-keyvault/azure/keyvault/models/sas_definition_item.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_item.py @@ -23,10 +23,9 @@ class SasDefinitionItem(Model): :ivar secret_id: The storage account SAS definition secret id. :vartype secret_id: str :ivar attributes: The SAS definition management attributes. - :vartype attributes: :class:`SasDefinitionAttributes - ` + :vartype attributes: ~azure.keyvault.models.SasDefinitionAttributes :ivar tags: Application specific metadata in the form of key-value pairs. - :vartype tags: dict + :vartype tags: dict[str, str] """ _validation = { @@ -43,7 +42,8 @@ class SasDefinitionItem(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self): + def __init__(self, **kwargs): + super(SasDefinitionItem, self).__init__(**kwargs) self.id = None self.secret_id = None self.attributes = None diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_item_paged.py b/azure-keyvault/azure/keyvault/models/sas_definition_item_paged.py old mode 100755 new mode 100644 index bac7f70a3c6a..e15f77ecd3d1 --- a/azure-keyvault/azure/keyvault/models/sas_definition_item_paged.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_item_paged.py @@ -14,7 +14,7 @@ class SasDefinitionItemPaged(Paged): """ - A paging container for iterating over a list of SasDefinitionItem object + A paging container for iterating over a list of :class:`SasDefinitionItem ` object """ _attribute_map = { diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_item_py3.py b/azure-keyvault/azure/keyvault/models/sas_definition_item_py3.py new file mode 100644 index 000000000000..d4e4ed7ff394 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/sas_definition_item_py3.py @@ -0,0 +1,50 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SasDefinitionItem(Model): + """The SAS definition item containing storage SAS definition metadata. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The storage SAS identifier. + :vartype id: str + :ivar secret_id: The storage account SAS definition secret id. + :vartype secret_id: str + :ivar attributes: The SAS definition management attributes. + :vartype attributes: ~azure.keyvault.models.SasDefinitionAttributes + :ivar tags: Application specific metadata in the form of key-value pairs. + :vartype tags: dict[str, str] + """ + + _validation = { + 'id': {'readonly': True}, + 'secret_id': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'secret_id': {'key': 'sid', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'SasDefinitionAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, **kwargs) -> None: + super(SasDefinitionItem, self).__init__(**kwargs) + self.id = None + self.secret_id = None + self.attributes = None + self.tags = None diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_update_parameters.py b/azure-keyvault/azure/keyvault/models/sas_definition_update_parameters.py old mode 100755 new mode 100644 index a058d7d5fa1f..5e7c058e9ebf --- a/azure-keyvault/azure/keyvault/models/sas_definition_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_update_parameters.py @@ -15,23 +15,35 @@ class SasDefinitionUpdateParameters(Model): """The SAS definition update parameters. - :param parameters: Sas definition update metadata in the form of key-value - pairs. - :type parameters: dict + :param template_uri: The SAS definition token template signed with an + arbitrary key. Tokens created according to the SAS definition will have + the same properties as the template. + :type template_uri: str + :param sas_type: The type of SAS token the SAS definition will create. + Possible values include: 'account', 'service' + :type sas_type: str or ~azure.keyvault.models.SasTokenType + :param validity_period: The validity period of SAS tokens created + according to the SAS definition. + :type validity_period: str :param sas_definition_attributes: The attributes of the SAS definition. - :type sas_definition_attributes: :class:`SasDefinitionAttributes - ` + :type sas_definition_attributes: + ~azure.keyvault.models.SasDefinitionAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] """ _attribute_map = { - 'parameters': {'key': 'parameters', 'type': '{str}'}, + 'template_uri': {'key': 'templateUri', 'type': 'str'}, + 'sas_type': {'key': 'sasType', 'type': 'str'}, + 'validity_period': {'key': 'validityPeriod', 'type': 'str'}, 'sas_definition_attributes': {'key': 'attributes', 'type': 'SasDefinitionAttributes'}, 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, parameters=None, sas_definition_attributes=None, tags=None): - self.parameters = parameters - self.sas_definition_attributes = sas_definition_attributes - self.tags = tags + def __init__(self, **kwargs): + super(SasDefinitionUpdateParameters, self).__init__(**kwargs) + self.template_uri = kwargs.get('template_uri', None) + self.sas_type = kwargs.get('sas_type', None) + self.validity_period = kwargs.get('validity_period', None) + self.sas_definition_attributes = kwargs.get('sas_definition_attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_update_parameters_py3.py b/azure-keyvault/azure/keyvault/models/sas_definition_update_parameters_py3.py new file mode 100644 index 000000000000..b1b13fda8aac --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/sas_definition_update_parameters_py3.py @@ -0,0 +1,49 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SasDefinitionUpdateParameters(Model): + """The SAS definition update parameters. + + :param template_uri: The SAS definition token template signed with an + arbitrary key. Tokens created according to the SAS definition will have + the same properties as the template. + :type template_uri: str + :param sas_type: The type of SAS token the SAS definition will create. + Possible values include: 'account', 'service' + :type sas_type: str or ~azure.keyvault.models.SasTokenType + :param validity_period: The validity period of SAS tokens created + according to the SAS definition. + :type validity_period: str + :param sas_definition_attributes: The attributes of the SAS definition. + :type sas_definition_attributes: + ~azure.keyvault.models.SasDefinitionAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + """ + + _attribute_map = { + 'template_uri': {'key': 'templateUri', 'type': 'str'}, + 'sas_type': {'key': 'sasType', 'type': 'str'}, + 'validity_period': {'key': 'validityPeriod', 'type': 'str'}, + 'sas_definition_attributes': {'key': 'attributes', 'type': 'SasDefinitionAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, template_uri: str=None, sas_type=None, validity_period: str=None, sas_definition_attributes=None, tags=None, **kwargs) -> None: + super(SasDefinitionUpdateParameters, self).__init__(**kwargs) + self.template_uri = template_uri + self.sas_type = sas_type + self.validity_period = validity_period + self.sas_definition_attributes = sas_definition_attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/secret_attributes.py b/azure-keyvault/azure/keyvault/models/secret_attributes.py old mode 100755 new mode 100644 index f56a8b71f61b..58d6325b81b0 --- a/azure-keyvault/azure/keyvault/models/secret_attributes.py +++ b/azure-keyvault/azure/keyvault/models/secret_attributes.py @@ -34,8 +34,8 @@ class SecretAttributes(Attributes): the system can purge the secret, at the end of the retention interval. Possible values include: 'Purgeable', 'Recoverable+Purgeable', 'Recoverable', 'Recoverable+ProtectedSubscription' - :vartype recovery_level: str or :class:`DeletionRecoveryLevel - ` + :vartype recovery_level: str or + ~azure.keyvault.models.DeletionRecoveryLevel """ _validation = { @@ -53,6 +53,6 @@ class SecretAttributes(Attributes): 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, } - def __init__(self, enabled=None, not_before=None, expires=None): - super(SecretAttributes, self).__init__(enabled=enabled, not_before=not_before, expires=expires) + def __init__(self, **kwargs): + super(SecretAttributes, self).__init__(**kwargs) self.recovery_level = None diff --git a/azure-keyvault/azure/keyvault/models/secret_attributes_py3.py b/azure-keyvault/azure/keyvault/models/secret_attributes_py3.py new file mode 100644 index 000000000000..4c81c14e83c6 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/secret_attributes_py3.py @@ -0,0 +1,58 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .attributes_py3 import Attributes + + +class SecretAttributes(Attributes): + """The secret management attributes. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param enabled: Determines whether the object is enabled. + :type enabled: bool + :param not_before: Not before date in UTC. + :type not_before: datetime + :param expires: Expiry date in UTC. + :type expires: datetime + :ivar created: Creation time in UTC. + :vartype created: datetime + :ivar updated: Last updated time in UTC. + :vartype updated: datetime + :ivar recovery_level: Reflects the deletion recovery level currently in + effect for secrets in the current vault. If it contains 'Purgeable', the + secret can be permanently deleted by a privileged user; otherwise, only + the system can purge the secret, at the end of the retention interval. + Possible values include: 'Purgeable', 'Recoverable+Purgeable', + 'Recoverable', 'Recoverable+ProtectedSubscription' + :vartype recovery_level: str or + ~azure.keyvault.models.DeletionRecoveryLevel + """ + + _validation = { + 'created': {'readonly': True}, + 'updated': {'readonly': True}, + 'recovery_level': {'readonly': True}, + } + + _attribute_map = { + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'not_before': {'key': 'nbf', 'type': 'unix-time'}, + 'expires': {'key': 'exp', 'type': 'unix-time'}, + 'created': {'key': 'created', 'type': 'unix-time'}, + 'updated': {'key': 'updated', 'type': 'unix-time'}, + 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, + } + + def __init__(self, *, enabled: bool=None, not_before=None, expires=None, **kwargs) -> None: + super(SecretAttributes, self).__init__(enabled=enabled, not_before=not_before, expires=expires, **kwargs) + self.recovery_level = None diff --git a/azure-keyvault/azure/keyvault/models/secret_bundle.py b/azure-keyvault/azure/keyvault/models/secret_bundle.py old mode 100755 new mode 100644 index 99da33ff8658..53125d49292f --- a/azure-keyvault/azure/keyvault/models/secret_bundle.py +++ b/azure-keyvault/azure/keyvault/models/secret_bundle.py @@ -25,10 +25,9 @@ class SecretBundle(Model): :param content_type: The content type of the secret. :type content_type: str :param attributes: The secret management attributes. - :type attributes: :class:`SecretAttributes - ` + :type attributes: ~azure.keyvault.models.SecretAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :ivar kid: If this is a secret backing a KV certificate, then this field specifies the corresponding key backing the KV certificate. :vartype kid: str @@ -52,11 +51,12 @@ class SecretBundle(Model): 'managed': {'key': 'managed', 'type': 'bool'}, } - def __init__(self, value=None, id=None, content_type=None, attributes=None, tags=None): - self.value = value - self.id = id - self.content_type = content_type - self.attributes = attributes - self.tags = tags + def __init__(self, **kwargs): + super(SecretBundle, self).__init__(**kwargs) + self.value = kwargs.get('value', None) + self.id = kwargs.get('id', None) + self.content_type = kwargs.get('content_type', None) + self.attributes = kwargs.get('attributes', None) + self.tags = kwargs.get('tags', None) self.kid = None self.managed = None diff --git a/azure-keyvault/azure/keyvault/models/secret_bundle_py3.py b/azure-keyvault/azure/keyvault/models/secret_bundle_py3.py new file mode 100644 index 000000000000..63194a95a9b8 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/secret_bundle_py3.py @@ -0,0 +1,62 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SecretBundle(Model): + """A secret consisting of a value, id and its attributes. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param value: The secret value. + :type value: str + :param id: The secret id. + :type id: str + :param content_type: The content type of the secret. + :type content_type: str + :param attributes: The secret management attributes. + :type attributes: ~azure.keyvault.models.SecretAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :ivar kid: If this is a secret backing a KV certificate, then this field + specifies the corresponding key backing the KV certificate. + :vartype kid: str + :ivar managed: True if the secret's lifetime is managed by key vault. If + this is a secret backing a certificate, then managed will be true. + :vartype managed: bool + """ + + _validation = { + 'kid': {'readonly': True}, + 'managed': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'content_type': {'key': 'contentType', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'SecretAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'kid': {'key': 'kid', 'type': 'str'}, + 'managed': {'key': 'managed', 'type': 'bool'}, + } + + def __init__(self, *, value: str=None, id: str=None, content_type: str=None, attributes=None, tags=None, **kwargs) -> None: + super(SecretBundle, self).__init__(**kwargs) + self.value = value + self.id = id + self.content_type = content_type + self.attributes = attributes + self.tags = tags + self.kid = None + self.managed = None diff --git a/azure-keyvault/azure/keyvault/models/secret_item.py b/azure-keyvault/azure/keyvault/models/secret_item.py old mode 100755 new mode 100644 index 9c959957fbaa..941d1690b793 --- a/azure-keyvault/azure/keyvault/models/secret_item.py +++ b/azure-keyvault/azure/keyvault/models/secret_item.py @@ -21,10 +21,9 @@ class SecretItem(Model): :param id: Secret identifier. :type id: str :param attributes: The secret management attributes. - :type attributes: :class:`SecretAttributes - ` + :type attributes: ~azure.keyvault.models.SecretAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param content_type: Type of the secret value such as a password. :type content_type: str :ivar managed: True if the secret's lifetime is managed by key vault. If @@ -44,9 +43,10 @@ class SecretItem(Model): 'managed': {'key': 'managed', 'type': 'bool'}, } - def __init__(self, id=None, attributes=None, tags=None, content_type=None): - self.id = id - self.attributes = attributes - self.tags = tags - self.content_type = content_type + def __init__(self, **kwargs): + super(SecretItem, self).__init__(**kwargs) + self.id = kwargs.get('id', None) + self.attributes = kwargs.get('attributes', None) + self.tags = kwargs.get('tags', None) + self.content_type = kwargs.get('content_type', None) self.managed = None diff --git a/azure-keyvault/azure/keyvault/models/secret_item_paged.py b/azure-keyvault/azure/keyvault/models/secret_item_paged.py old mode 100755 new mode 100644 index ac6f035c3cb0..a558156b2015 --- a/azure-keyvault/azure/keyvault/models/secret_item_paged.py +++ b/azure-keyvault/azure/keyvault/models/secret_item_paged.py @@ -14,7 +14,7 @@ class SecretItemPaged(Paged): """ - A paging container for iterating over a list of SecretItem object + A paging container for iterating over a list of :class:`SecretItem ` object """ _attribute_map = { diff --git a/azure-keyvault/azure/keyvault/models/secret_item_py3.py b/azure-keyvault/azure/keyvault/models/secret_item_py3.py new file mode 100644 index 000000000000..3f5f08581326 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/secret_item_py3.py @@ -0,0 +1,52 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SecretItem(Model): + """The secret item containing secret metadata. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param id: Secret identifier. + :type id: str + :param attributes: The secret management attributes. + :type attributes: ~azure.keyvault.models.SecretAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :param content_type: Type of the secret value such as a password. + :type content_type: str + :ivar managed: True if the secret's lifetime is managed by key vault. If + this is a key backing a certificate, then managed will be true. + :vartype managed: bool + """ + + _validation = { + 'managed': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'SecretAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'content_type': {'key': 'contentType', 'type': 'str'}, + 'managed': {'key': 'managed', 'type': 'bool'}, + } + + def __init__(self, *, id: str=None, attributes=None, tags=None, content_type: str=None, **kwargs) -> None: + super(SecretItem, self).__init__(**kwargs) + self.id = id + self.attributes = attributes + self.tags = tags + self.content_type = content_type + self.managed = None diff --git a/azure-keyvault/azure/keyvault/models/secret_properties.py b/azure-keyvault/azure/keyvault/models/secret_properties.py old mode 100755 new mode 100644 index a59b804491e2..03794579e47c --- a/azure-keyvault/azure/keyvault/models/secret_properties.py +++ b/azure-keyvault/azure/keyvault/models/secret_properties.py @@ -23,5 +23,6 @@ class SecretProperties(Model): 'content_type': {'key': 'contentType', 'type': 'str'}, } - def __init__(self, content_type=None): - self.content_type = content_type + def __init__(self, **kwargs): + super(SecretProperties, self).__init__(**kwargs) + self.content_type = kwargs.get('content_type', None) diff --git a/azure-keyvault/azure/keyvault/models/secret_properties_py3.py b/azure-keyvault/azure/keyvault/models/secret_properties_py3.py new file mode 100644 index 000000000000..f071d84220b8 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/secret_properties_py3.py @@ -0,0 +1,28 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SecretProperties(Model): + """Properties of the key backing a certificate. + + :param content_type: The media type (MIME type). + :type content_type: str + """ + + _attribute_map = { + 'content_type': {'key': 'contentType', 'type': 'str'}, + } + + def __init__(self, *, content_type: str=None, **kwargs) -> None: + super(SecretProperties, self).__init__(**kwargs) + self.content_type = content_type diff --git a/azure-keyvault/azure/keyvault/models/secret_restore_parameters.py b/azure-keyvault/azure/keyvault/models/secret_restore_parameters.py old mode 100755 new mode 100644 index 5994bca6fb2a..9e34c4259edc --- a/azure-keyvault/azure/keyvault/models/secret_restore_parameters.py +++ b/azure-keyvault/azure/keyvault/models/secret_restore_parameters.py @@ -15,8 +15,10 @@ class SecretRestoreParameters(Model): """The secret restore parameters. - :param secret_bundle_backup: The backup blob associated with a secret - bundle. + All required parameters must be populated in order to send to Azure. + + :param secret_bundle_backup: Required. The backup blob associated with a + secret bundle. :type secret_bundle_backup: bytes """ @@ -28,5 +30,6 @@ class SecretRestoreParameters(Model): 'secret_bundle_backup': {'key': 'value', 'type': 'base64'}, } - def __init__(self, secret_bundle_backup): - self.secret_bundle_backup = secret_bundle_backup + def __init__(self, **kwargs): + super(SecretRestoreParameters, self).__init__(**kwargs) + self.secret_bundle_backup = kwargs.get('secret_bundle_backup', None) diff --git a/azure-keyvault/azure/keyvault/models/secret_restore_parameters_py3.py b/azure-keyvault/azure/keyvault/models/secret_restore_parameters_py3.py new file mode 100644 index 000000000000..0c81a9b890aa --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/secret_restore_parameters_py3.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SecretRestoreParameters(Model): + """The secret restore parameters. + + All required parameters must be populated in order to send to Azure. + + :param secret_bundle_backup: Required. The backup blob associated with a + secret bundle. + :type secret_bundle_backup: bytes + """ + + _validation = { + 'secret_bundle_backup': {'required': True}, + } + + _attribute_map = { + 'secret_bundle_backup': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, *, secret_bundle_backup: bytes, **kwargs) -> None: + super(SecretRestoreParameters, self).__init__(**kwargs) + self.secret_bundle_backup = secret_bundle_backup diff --git a/azure-keyvault/azure/keyvault/models/secret_set_parameters.py b/azure-keyvault/azure/keyvault/models/secret_set_parameters.py old mode 100755 new mode 100644 index cd323afbb597..39ae435e2bd5 --- a/azure-keyvault/azure/keyvault/models/secret_set_parameters.py +++ b/azure-keyvault/azure/keyvault/models/secret_set_parameters.py @@ -15,15 +15,16 @@ class SecretSetParameters(Model): """The secret set parameters. - :param value: The value of the secret. + All required parameters must be populated in order to send to Azure. + + :param value: Required. The value of the secret. :type value: str :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] :param content_type: Type of the secret value such as a password. :type content_type: str :param secret_attributes: The secret management attributes. - :type secret_attributes: :class:`SecretAttributes - ` + :type secret_attributes: ~azure.keyvault.models.SecretAttributes """ _validation = { @@ -37,8 +38,9 @@ class SecretSetParameters(Model): 'secret_attributes': {'key': 'attributes', 'type': 'SecretAttributes'}, } - def __init__(self, value, tags=None, content_type=None, secret_attributes=None): - self.value = value - self.tags = tags - self.content_type = content_type - self.secret_attributes = secret_attributes + def __init__(self, **kwargs): + super(SecretSetParameters, self).__init__(**kwargs) + self.value = kwargs.get('value', None) + self.tags = kwargs.get('tags', None) + self.content_type = kwargs.get('content_type', None) + self.secret_attributes = kwargs.get('secret_attributes', None) diff --git a/azure-keyvault/azure/keyvault/models/secret_set_parameters_py3.py b/azure-keyvault/azure/keyvault/models/secret_set_parameters_py3.py new file mode 100644 index 000000000000..81a5478776ef --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/secret_set_parameters_py3.py @@ -0,0 +1,46 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SecretSetParameters(Model): + """The secret set parameters. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. The value of the secret. + :type value: str + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + :param content_type: Type of the secret value such as a password. + :type content_type: str + :param secret_attributes: The secret management attributes. + :type secret_attributes: ~azure.keyvault.models.SecretAttributes + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'content_type': {'key': 'contentType', 'type': 'str'}, + 'secret_attributes': {'key': 'attributes', 'type': 'SecretAttributes'}, + } + + def __init__(self, *, value: str, tags=None, content_type: str=None, secret_attributes=None, **kwargs) -> None: + super(SecretSetParameters, self).__init__(**kwargs) + self.value = value + self.tags = tags + self.content_type = content_type + self.secret_attributes = secret_attributes diff --git a/azure-keyvault/azure/keyvault/models/secret_update_parameters.py b/azure-keyvault/azure/keyvault/models/secret_update_parameters.py old mode 100755 new mode 100644 index 02729a149336..c4935f4899ea --- a/azure-keyvault/azure/keyvault/models/secret_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/secret_update_parameters.py @@ -18,10 +18,9 @@ class SecretUpdateParameters(Model): :param content_type: Type of the secret value such as a password. :type content_type: str :param secret_attributes: The secret management attributes. - :type secret_attributes: :class:`SecretAttributes - ` + :type secret_attributes: ~azure.keyvault.models.SecretAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] """ _attribute_map = { @@ -30,7 +29,8 @@ class SecretUpdateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, content_type=None, secret_attributes=None, tags=None): - self.content_type = content_type - self.secret_attributes = secret_attributes - self.tags = tags + def __init__(self, **kwargs): + super(SecretUpdateParameters, self).__init__(**kwargs) + self.content_type = kwargs.get('content_type', None) + self.secret_attributes = kwargs.get('secret_attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/secret_update_parameters_py3.py b/azure-keyvault/azure/keyvault/models/secret_update_parameters_py3.py new file mode 100644 index 000000000000..dfe4a1028627 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/secret_update_parameters_py3.py @@ -0,0 +1,36 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SecretUpdateParameters(Model): + """The secret update parameters. + + :param content_type: Type of the secret value such as a password. + :type content_type: str + :param secret_attributes: The secret management attributes. + :type secret_attributes: ~azure.keyvault.models.SecretAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + """ + + _attribute_map = { + 'content_type': {'key': 'contentType', 'type': 'str'}, + 'secret_attributes': {'key': 'attributes', 'type': 'SecretAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, content_type: str=None, secret_attributes=None, tags=None, **kwargs) -> None: + super(SecretUpdateParameters, self).__init__(**kwargs) + self.content_type = content_type + self.secret_attributes = secret_attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/storage_account_attributes.py b/azure-keyvault/azure/keyvault/models/storage_account_attributes.py old mode 100755 new mode 100644 index f5a4fda19084..f8ba9114a0ef --- a/azure-keyvault/azure/keyvault/models/storage_account_attributes.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_attributes.py @@ -24,20 +24,33 @@ class StorageAccountAttributes(Model): :vartype created: datetime :ivar updated: Last updated time in UTC. :vartype updated: datetime + :ivar recovery_level: Reflects the deletion recovery level currently in + effect for storage accounts in the current vault. If it contains + 'Purgeable' the storage account can be permanently deleted by a privileged + user; otherwise, only the system can purge the storage account, at the end + of the retention interval. Possible values include: 'Purgeable', + 'Recoverable+Purgeable', 'Recoverable', + 'Recoverable+ProtectedSubscription' + :vartype recovery_level: str or + ~azure.keyvault.models.DeletionRecoveryLevel """ _validation = { 'created': {'readonly': True}, 'updated': {'readonly': True}, + 'recovery_level': {'readonly': True}, } _attribute_map = { 'enabled': {'key': 'enabled', 'type': 'bool'}, 'created': {'key': 'created', 'type': 'unix-time'}, 'updated': {'key': 'updated', 'type': 'unix-time'}, + 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, } - def __init__(self, enabled=None): - self.enabled = enabled + def __init__(self, **kwargs): + super(StorageAccountAttributes, self).__init__(**kwargs) + self.enabled = kwargs.get('enabled', None) self.created = None self.updated = None + self.recovery_level = None diff --git a/azure-keyvault/azure/keyvault/models/storage_account_attributes_py3.py b/azure-keyvault/azure/keyvault/models/storage_account_attributes_py3.py new file mode 100644 index 000000000000..54110fc8b91b --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/storage_account_attributes_py3.py @@ -0,0 +1,56 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class StorageAccountAttributes(Model): + """The storage account management attributes. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param enabled: the enabled state of the object. + :type enabled: bool + :ivar created: Creation time in UTC. + :vartype created: datetime + :ivar updated: Last updated time in UTC. + :vartype updated: datetime + :ivar recovery_level: Reflects the deletion recovery level currently in + effect for storage accounts in the current vault. If it contains + 'Purgeable' the storage account can be permanently deleted by a privileged + user; otherwise, only the system can purge the storage account, at the end + of the retention interval. Possible values include: 'Purgeable', + 'Recoverable+Purgeable', 'Recoverable', + 'Recoverable+ProtectedSubscription' + :vartype recovery_level: str or + ~azure.keyvault.models.DeletionRecoveryLevel + """ + + _validation = { + 'created': {'readonly': True}, + 'updated': {'readonly': True}, + 'recovery_level': {'readonly': True}, + } + + _attribute_map = { + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'created': {'key': 'created', 'type': 'unix-time'}, + 'updated': {'key': 'updated', 'type': 'unix-time'}, + 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, + } + + def __init__(self, *, enabled: bool=None, **kwargs) -> None: + super(StorageAccountAttributes, self).__init__(**kwargs) + self.enabled = enabled + self.created = None + self.updated = None + self.recovery_level = None diff --git a/azure-keyvault/azure/keyvault/models/storage_account_create_parameters.py b/azure-keyvault/azure/keyvault/models/storage_account_create_parameters.py old mode 100755 new mode 100644 index 9ad8358a8967..bed4c83a744a --- a/azure-keyvault/azure/keyvault/models/storage_account_create_parameters.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_create_parameters.py @@ -15,21 +15,23 @@ class StorageAccountCreateParameters(Model): """The storage account create parameters. - :param resource_id: Storage account resource id. + All required parameters must be populated in order to send to Azure. + + :param resource_id: Required. Storage account resource id. :type resource_id: str - :param active_key_name: Current active storage account key name. + :param active_key_name: Required. Current active storage account key name. :type active_key_name: str - :param auto_regenerate_key: whether keyvault should manage the storage - account for the user. + :param auto_regenerate_key: Required. whether keyvault should manage the + storage account for the user. :type auto_regenerate_key: bool :param regeneration_period: The key regeneration time duration specified in ISO-8601 format. :type regeneration_period: str :param storage_account_attributes: The attributes of the storage account. - :type storage_account_attributes: :class:`StorageAccountAttributes - ` + :type storage_account_attributes: + ~azure.keyvault.models.StorageAccountAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] """ _validation = { @@ -47,10 +49,11 @@ class StorageAccountCreateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, resource_id, active_key_name, auto_regenerate_key, regeneration_period=None, storage_account_attributes=None, tags=None): - self.resource_id = resource_id - self.active_key_name = active_key_name - self.auto_regenerate_key = auto_regenerate_key - self.regeneration_period = regeneration_period - self.storage_account_attributes = storage_account_attributes - self.tags = tags + def __init__(self, **kwargs): + super(StorageAccountCreateParameters, self).__init__(**kwargs) + self.resource_id = kwargs.get('resource_id', None) + self.active_key_name = kwargs.get('active_key_name', None) + self.auto_regenerate_key = kwargs.get('auto_regenerate_key', None) + self.regeneration_period = kwargs.get('regeneration_period', None) + self.storage_account_attributes = kwargs.get('storage_account_attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/storage_account_create_parameters_py3.py b/azure-keyvault/azure/keyvault/models/storage_account_create_parameters_py3.py new file mode 100644 index 000000000000..eb75276dc5d5 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/storage_account_create_parameters_py3.py @@ -0,0 +1,59 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class StorageAccountCreateParameters(Model): + """The storage account create parameters. + + All required parameters must be populated in order to send to Azure. + + :param resource_id: Required. Storage account resource id. + :type resource_id: str + :param active_key_name: Required. Current active storage account key name. + :type active_key_name: str + :param auto_regenerate_key: Required. whether keyvault should manage the + storage account for the user. + :type auto_regenerate_key: bool + :param regeneration_period: The key regeneration time duration specified + in ISO-8601 format. + :type regeneration_period: str + :param storage_account_attributes: The attributes of the storage account. + :type storage_account_attributes: + ~azure.keyvault.models.StorageAccountAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + """ + + _validation = { + 'resource_id': {'required': True}, + 'active_key_name': {'required': True}, + 'auto_regenerate_key': {'required': True}, + } + + _attribute_map = { + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'active_key_name': {'key': 'activeKeyName', 'type': 'str'}, + 'auto_regenerate_key': {'key': 'autoRegenerateKey', 'type': 'bool'}, + 'regeneration_period': {'key': 'regenerationPeriod', 'type': 'str'}, + 'storage_account_attributes': {'key': 'attributes', 'type': 'StorageAccountAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, resource_id: str, active_key_name: str, auto_regenerate_key: bool, regeneration_period: str=None, storage_account_attributes=None, tags=None, **kwargs) -> None: + super(StorageAccountCreateParameters, self).__init__(**kwargs) + self.resource_id = resource_id + self.active_key_name = active_key_name + self.auto_regenerate_key = auto_regenerate_key + self.regeneration_period = regeneration_period + self.storage_account_attributes = storage_account_attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/storage_account_item.py b/azure-keyvault/azure/keyvault/models/storage_account_item.py old mode 100755 new mode 100644 index 93d16a6b1159..1a3057e7bf17 --- a/azure-keyvault/azure/keyvault/models/storage_account_item.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_item.py @@ -23,10 +23,9 @@ class StorageAccountItem(Model): :ivar resource_id: Storage account resource Id. :vartype resource_id: str :ivar attributes: The storage account management attributes. - :vartype attributes: :class:`StorageAccountAttributes - ` + :vartype attributes: ~azure.keyvault.models.StorageAccountAttributes :ivar tags: Application specific metadata in the form of key-value pairs. - :vartype tags: dict + :vartype tags: dict[str, str] """ _validation = { @@ -43,7 +42,8 @@ class StorageAccountItem(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self): + def __init__(self, **kwargs): + super(StorageAccountItem, self).__init__(**kwargs) self.id = None self.resource_id = None self.attributes = None diff --git a/azure-keyvault/azure/keyvault/models/storage_account_item_paged.py b/azure-keyvault/azure/keyvault/models/storage_account_item_paged.py old mode 100755 new mode 100644 index d7754e4f7cab..985cd5a5f610 --- a/azure-keyvault/azure/keyvault/models/storage_account_item_paged.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_item_paged.py @@ -14,7 +14,7 @@ class StorageAccountItemPaged(Paged): """ - A paging container for iterating over a list of StorageAccountItem object + A paging container for iterating over a list of :class:`StorageAccountItem ` object """ _attribute_map = { diff --git a/azure-keyvault/azure/keyvault/models/storage_account_item_py3.py b/azure-keyvault/azure/keyvault/models/storage_account_item_py3.py new file mode 100644 index 000000000000..0dbd0edd7687 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/storage_account_item_py3.py @@ -0,0 +1,50 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class StorageAccountItem(Model): + """The storage account item containing storage account metadata. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: Storage identifier. + :vartype id: str + :ivar resource_id: Storage account resource Id. + :vartype resource_id: str + :ivar attributes: The storage account management attributes. + :vartype attributes: ~azure.keyvault.models.StorageAccountAttributes + :ivar tags: Application specific metadata in the form of key-value pairs. + :vartype tags: dict[str, str] + """ + + _validation = { + 'id': {'readonly': True}, + 'resource_id': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'StorageAccountAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, **kwargs) -> None: + super(StorageAccountItem, self).__init__(**kwargs) + self.id = None + self.resource_id = None + self.attributes = None + self.tags = None diff --git a/azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters.py b/azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters.py old mode 100755 new mode 100644 index 2148624ec1f9..459103c575aa --- a/azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters.py @@ -15,7 +15,9 @@ class StorageAccountRegenerteKeyParameters(Model): """The storage account key regenerate parameters. - :param key_name: The storage account key name. + All required parameters must be populated in order to send to Azure. + + :param key_name: Required. The storage account key name. :type key_name: str """ @@ -27,5 +29,6 @@ class StorageAccountRegenerteKeyParameters(Model): 'key_name': {'key': 'keyName', 'type': 'str'}, } - def __init__(self, key_name): - self.key_name = key_name + def __init__(self, **kwargs): + super(StorageAccountRegenerteKeyParameters, self).__init__(**kwargs) + self.key_name = kwargs.get('key_name', None) diff --git a/azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters_py3.py b/azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters_py3.py new file mode 100644 index 000000000000..1403108fbac0 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters_py3.py @@ -0,0 +1,34 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class StorageAccountRegenerteKeyParameters(Model): + """The storage account key regenerate parameters. + + All required parameters must be populated in order to send to Azure. + + :param key_name: Required. The storage account key name. + :type key_name: str + """ + + _validation = { + 'key_name': {'required': True}, + } + + _attribute_map = { + 'key_name': {'key': 'keyName', 'type': 'str'}, + } + + def __init__(self, *, key_name: str, **kwargs) -> None: + super(StorageAccountRegenerteKeyParameters, self).__init__(**kwargs) + self.key_name = key_name diff --git a/azure-keyvault/azure/keyvault/models/storage_account_update_parameters.py b/azure-keyvault/azure/keyvault/models/storage_account_update_parameters.py old mode 100755 new mode 100644 index 2dcbd91da1d0..8b9b5ecb907f --- a/azure-keyvault/azure/keyvault/models/storage_account_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_update_parameters.py @@ -24,10 +24,10 @@ class StorageAccountUpdateParameters(Model): in ISO-8601 format. :type regeneration_period: str :param storage_account_attributes: The attributes of the storage account. - :type storage_account_attributes: :class:`StorageAccountAttributes - ` + :type storage_account_attributes: + ~azure.keyvault.models.StorageAccountAttributes :param tags: Application specific metadata in the form of key-value pairs. - :type tags: dict + :type tags: dict[str, str] """ _attribute_map = { @@ -38,9 +38,10 @@ class StorageAccountUpdateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, active_key_name=None, auto_regenerate_key=None, regeneration_period=None, storage_account_attributes=None, tags=None): - self.active_key_name = active_key_name - self.auto_regenerate_key = auto_regenerate_key - self.regeneration_period = regeneration_period - self.storage_account_attributes = storage_account_attributes - self.tags = tags + def __init__(self, **kwargs): + super(StorageAccountUpdateParameters, self).__init__(**kwargs) + self.active_key_name = kwargs.get('active_key_name', None) + self.auto_regenerate_key = kwargs.get('auto_regenerate_key', None) + self.regeneration_period = kwargs.get('regeneration_period', None) + self.storage_account_attributes = kwargs.get('storage_account_attributes', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-keyvault/azure/keyvault/models/storage_account_update_parameters_py3.py b/azure-keyvault/azure/keyvault/models/storage_account_update_parameters_py3.py new file mode 100644 index 000000000000..c6e860fbb526 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/storage_account_update_parameters_py3.py @@ -0,0 +1,47 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class StorageAccountUpdateParameters(Model): + """The storage account update parameters. + + :param active_key_name: The current active storage account key name. + :type active_key_name: str + :param auto_regenerate_key: whether keyvault should manage the storage + account for the user. + :type auto_regenerate_key: bool + :param regeneration_period: The key regeneration time duration specified + in ISO-8601 format. + :type regeneration_period: str + :param storage_account_attributes: The attributes of the storage account. + :type storage_account_attributes: + ~azure.keyvault.models.StorageAccountAttributes + :param tags: Application specific metadata in the form of key-value pairs. + :type tags: dict[str, str] + """ + + _attribute_map = { + 'active_key_name': {'key': 'activeKeyName', 'type': 'str'}, + 'auto_regenerate_key': {'key': 'autoRegenerateKey', 'type': 'bool'}, + 'regeneration_period': {'key': 'regenerationPeriod', 'type': 'str'}, + 'storage_account_attributes': {'key': 'attributes', 'type': 'StorageAccountAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, active_key_name: str=None, auto_regenerate_key: bool=None, regeneration_period: str=None, storage_account_attributes=None, tags=None, **kwargs) -> None: + super(StorageAccountUpdateParameters, self).__init__(**kwargs) + self.active_key_name = active_key_name + self.auto_regenerate_key = auto_regenerate_key + self.regeneration_period = regeneration_period + self.storage_account_attributes = storage_account_attributes + self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/storage_bundle.py b/azure-keyvault/azure/keyvault/models/storage_bundle.py old mode 100755 new mode 100644 index a455bc23deeb..cf5d645ba4a8 --- a/azure-keyvault/azure/keyvault/models/storage_bundle.py +++ b/azure-keyvault/azure/keyvault/models/storage_bundle.py @@ -32,10 +32,9 @@ class StorageBundle(Model): ISO-8601 format. :vartype regeneration_period: str :ivar attributes: The storage account attributes. - :vartype attributes: :class:`StorageAccountAttributes - ` + :vartype attributes: ~azure.keyvault.models.StorageAccountAttributes :ivar tags: Application specific metadata in the form of key-value pairs - :vartype tags: dict + :vartype tags: dict[str, str] """ _validation = { @@ -58,7 +57,8 @@ class StorageBundle(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self): + def __init__(self, **kwargs): + super(StorageBundle, self).__init__(**kwargs) self.id = None self.resource_id = None self.active_key_name = None diff --git a/azure-keyvault/azure/keyvault/models/storage_bundle_py3.py b/azure-keyvault/azure/keyvault/models/storage_bundle_py3.py new file mode 100644 index 000000000000..1b54975ba292 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/storage_bundle_py3.py @@ -0,0 +1,68 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class StorageBundle(Model): + """A Storage account bundle consists of key vault storage account details plus + its attributes. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The storage account id. + :vartype id: str + :ivar resource_id: The storage account resource id. + :vartype resource_id: str + :ivar active_key_name: The current active storage account key name. + :vartype active_key_name: str + :ivar auto_regenerate_key: whether keyvault should manage the storage + account for the user. + :vartype auto_regenerate_key: bool + :ivar regeneration_period: The key regeneration time duration specified in + ISO-8601 format. + :vartype regeneration_period: str + :ivar attributes: The storage account attributes. + :vartype attributes: ~azure.keyvault.models.StorageAccountAttributes + :ivar tags: Application specific metadata in the form of key-value pairs + :vartype tags: dict[str, str] + """ + + _validation = { + 'id': {'readonly': True}, + 'resource_id': {'readonly': True}, + 'active_key_name': {'readonly': True}, + 'auto_regenerate_key': {'readonly': True}, + 'regeneration_period': {'readonly': True}, + 'attributes': {'readonly': True}, + 'tags': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'resource_id': {'key': 'resourceId', 'type': 'str'}, + 'active_key_name': {'key': 'activeKeyName', 'type': 'str'}, + 'auto_regenerate_key': {'key': 'autoRegenerateKey', 'type': 'bool'}, + 'regeneration_period': {'key': 'regenerationPeriod', 'type': 'str'}, + 'attributes': {'key': 'attributes', 'type': 'StorageAccountAttributes'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, **kwargs) -> None: + super(StorageBundle, self).__init__(**kwargs) + self.id = None + self.resource_id = None + self.active_key_name = None + self.auto_regenerate_key = None + self.regeneration_period = None + self.attributes = None + self.tags = None diff --git a/azure-keyvault/azure/keyvault/models/storage_restore_parameters.py b/azure-keyvault/azure/keyvault/models/storage_restore_parameters.py new file mode 100644 index 000000000000..add6f3cd22fd --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/storage_restore_parameters.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class StorageRestoreParameters(Model): + """The secret restore parameters. + + All required parameters must be populated in order to send to Azure. + + :param storage_bundle_backup: Required. The backup blob associated with a + storage account. + :type storage_bundle_backup: bytes + """ + + _validation = { + 'storage_bundle_backup': {'required': True}, + } + + _attribute_map = { + 'storage_bundle_backup': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, **kwargs): + super(StorageRestoreParameters, self).__init__(**kwargs) + self.storage_bundle_backup = kwargs.get('storage_bundle_backup', None) diff --git a/azure-keyvault/azure/keyvault/models/storage_restore_parameters_py3.py b/azure-keyvault/azure/keyvault/models/storage_restore_parameters_py3.py new file mode 100644 index 000000000000..0496d15ba4ae --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/storage_restore_parameters_py3.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class StorageRestoreParameters(Model): + """The secret restore parameters. + + All required parameters must be populated in order to send to Azure. + + :param storage_bundle_backup: Required. The backup blob associated with a + storage account. + :type storage_bundle_backup: bytes + """ + + _validation = { + 'storage_bundle_backup': {'required': True}, + } + + _attribute_map = { + 'storage_bundle_backup': {'key': 'value', 'type': 'base64'}, + } + + def __init__(self, *, storage_bundle_backup: bytes, **kwargs) -> None: + super(StorageRestoreParameters, self).__init__(**kwargs) + self.storage_bundle_backup = storage_bundle_backup diff --git a/azure-keyvault/azure/keyvault/models/subject_alternative_names.py b/azure-keyvault/azure/keyvault/models/subject_alternative_names.py old mode 100755 new mode 100644 index ed6349548668..0ff2911550df --- a/azure-keyvault/azure/keyvault/models/subject_alternative_names.py +++ b/azure-keyvault/azure/keyvault/models/subject_alternative_names.py @@ -16,11 +16,11 @@ class SubjectAlternativeNames(Model): """The subject alternate names of a X509 object. :param emails: Email addresses. - :type emails: list of str + :type emails: list[str] :param dns_names: Domain names. - :type dns_names: list of str + :type dns_names: list[str] :param upns: User principal names. - :type upns: list of str + :type upns: list[str] """ _attribute_map = { @@ -29,7 +29,8 @@ class SubjectAlternativeNames(Model): 'upns': {'key': 'upns', 'type': '[str]'}, } - def __init__(self, emails=None, dns_names=None, upns=None): - self.emails = emails - self.dns_names = dns_names - self.upns = upns + def __init__(self, **kwargs): + super(SubjectAlternativeNames, self).__init__(**kwargs) + self.emails = kwargs.get('emails', None) + self.dns_names = kwargs.get('dns_names', None) + self.upns = kwargs.get('upns', None) diff --git a/azure-keyvault/azure/keyvault/models/subject_alternative_names_py3.py b/azure-keyvault/azure/keyvault/models/subject_alternative_names_py3.py new file mode 100644 index 000000000000..a2870854d559 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/subject_alternative_names_py3.py @@ -0,0 +1,36 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class SubjectAlternativeNames(Model): + """The subject alternate names of a X509 object. + + :param emails: Email addresses. + :type emails: list[str] + :param dns_names: Domain names. + :type dns_names: list[str] + :param upns: User principal names. + :type upns: list[str] + """ + + _attribute_map = { + 'emails': {'key': 'emails', 'type': '[str]'}, + 'dns_names': {'key': 'dns_names', 'type': '[str]'}, + 'upns': {'key': 'upns', 'type': '[str]'}, + } + + def __init__(self, *, emails=None, dns_names=None, upns=None, **kwargs) -> None: + super(SubjectAlternativeNames, self).__init__(**kwargs) + self.emails = emails + self.dns_names = dns_names + self.upns = upns diff --git a/azure-keyvault/azure/keyvault/models/trigger.py b/azure-keyvault/azure/keyvault/models/trigger.py old mode 100755 new mode 100644 index b60cb21182d5..a68686f8303e --- a/azure-keyvault/azure/keyvault/models/trigger.py +++ b/azure-keyvault/azure/keyvault/models/trigger.py @@ -18,7 +18,10 @@ class Trigger(Model): :param lifetime_percentage: Percentage of lifetime at which to trigger. Value should be between 1 and 99. :type lifetime_percentage: int - :param days_before_expiry: Days before expiry. + :param days_before_expiry: Days before expiry to attempt renewal. Value + should be between 1 and validity_in_months multiplied by 27. If + validity_in_months is 36, then value should be between 1 and 972 (36 * + 27). :type days_before_expiry: int """ @@ -31,6 +34,7 @@ class Trigger(Model): 'days_before_expiry': {'key': 'days_before_expiry', 'type': 'int'}, } - def __init__(self, lifetime_percentage=None, days_before_expiry=None): - self.lifetime_percentage = lifetime_percentage - self.days_before_expiry = days_before_expiry + def __init__(self, **kwargs): + super(Trigger, self).__init__(**kwargs) + self.lifetime_percentage = kwargs.get('lifetime_percentage', None) + self.days_before_expiry = kwargs.get('days_before_expiry', None) diff --git a/azure-keyvault/azure/keyvault/models/trigger_py3.py b/azure-keyvault/azure/keyvault/models/trigger_py3.py new file mode 100644 index 000000000000..38faa3471773 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/trigger_py3.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class Trigger(Model): + """A condition to be satisfied for an action to be executed. + + :param lifetime_percentage: Percentage of lifetime at which to trigger. + Value should be between 1 and 99. + :type lifetime_percentage: int + :param days_before_expiry: Days before expiry to attempt renewal. Value + should be between 1 and validity_in_months multiplied by 27. If + validity_in_months is 36, then value should be between 1 and 972 (36 * + 27). + :type days_before_expiry: int + """ + + _validation = { + 'lifetime_percentage': {'maximum': 99, 'minimum': 1}, + } + + _attribute_map = { + 'lifetime_percentage': {'key': 'lifetime_percentage', 'type': 'int'}, + 'days_before_expiry': {'key': 'days_before_expiry', 'type': 'int'}, + } + + def __init__(self, *, lifetime_percentage: int=None, days_before_expiry: int=None, **kwargs) -> None: + super(Trigger, self).__init__(**kwargs) + self.lifetime_percentage = lifetime_percentage + self.days_before_expiry = days_before_expiry diff --git a/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py b/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py old mode 100755 new mode 100644 index fa9c3633a230..c8370d3817f0 --- a/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py +++ b/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py @@ -19,13 +19,12 @@ class X509CertificateProperties(Model): Name. :type subject: str :param ekus: The enhanced key usage. - :type ekus: list of str + :type ekus: list[str] :param subject_alternative_names: The subject alternative names. - :type subject_alternative_names: :class:`SubjectAlternativeNames - ` + :type subject_alternative_names: + ~azure.keyvault.models.SubjectAlternativeNames :param key_usage: List of key usages. - :type key_usage: list of str or :class:`KeyUsageType - ` + :type key_usage: list[str or ~azure.keyvault.models.KeyUsageType] :param validity_in_months: The duration that the ceritifcate is valid in months. :type validity_in_months: int @@ -43,9 +42,10 @@ class X509CertificateProperties(Model): 'validity_in_months': {'key': 'validity_months', 'type': 'int'}, } - def __init__(self, subject=None, ekus=None, subject_alternative_names=None, key_usage=None, validity_in_months=None): - self.subject = subject - self.ekus = ekus - self.subject_alternative_names = subject_alternative_names - self.key_usage = key_usage - self.validity_in_months = validity_in_months + def __init__(self, **kwargs): + super(X509CertificateProperties, self).__init__(**kwargs) + self.subject = kwargs.get('subject', None) + self.ekus = kwargs.get('ekus', None) + self.subject_alternative_names = kwargs.get('subject_alternative_names', None) + self.key_usage = kwargs.get('key_usage', None) + self.validity_in_months = kwargs.get('validity_in_months', None) diff --git a/azure-keyvault/azure/keyvault/models/x509_certificate_properties_py3.py b/azure-keyvault/azure/keyvault/models/x509_certificate_properties_py3.py new file mode 100644 index 000000000000..d3337a152955 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/x509_certificate_properties_py3.py @@ -0,0 +1,51 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class X509CertificateProperties(Model): + """Properties of the X509 component of a certificate. + + :param subject: The subject name. Should be a valid X509 distinguished + Name. + :type subject: str + :param ekus: The enhanced key usage. + :type ekus: list[str] + :param subject_alternative_names: The subject alternative names. + :type subject_alternative_names: + ~azure.keyvault.models.SubjectAlternativeNames + :param key_usage: List of key usages. + :type key_usage: list[str or ~azure.keyvault.models.KeyUsageType] + :param validity_in_months: The duration that the ceritifcate is valid in + months. + :type validity_in_months: int + """ + + _validation = { + 'validity_in_months': {'minimum': 0}, + } + + _attribute_map = { + 'subject': {'key': 'subject', 'type': 'str'}, + 'ekus': {'key': 'ekus', 'type': '[str]'}, + 'subject_alternative_names': {'key': 'sans', 'type': 'SubjectAlternativeNames'}, + 'key_usage': {'key': 'key_usage', 'type': '[str]'}, + 'validity_in_months': {'key': 'validity_months', 'type': 'int'}, + } + + def __init__(self, *, subject: str=None, ekus=None, subject_alternative_names=None, key_usage=None, validity_in_months: int=None, **kwargs) -> None: + super(X509CertificateProperties, self).__init__(**kwargs) + self.subject = subject + self.ekus = ekus + self.subject_alternative_names = subject_alternative_names + self.key_usage = key_usage + self.validity_in_months = validity_in_months diff --git a/azure-keyvault/azure/keyvault/version.py b/azure-keyvault/azure/keyvault/version.py old mode 100755 new mode 100644 index 3b613fee836a..a39916c162ce --- a/azure-keyvault/azure/keyvault/version.py +++ b/azure-keyvault/azure/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "0.3.7" +VERSION = "1.0.0" diff --git a/azure-keyvault/build.json b/azure-keyvault/build.json index d978484e0944..8312dc405596 100644 --- a/azure-keyvault/build.json +++ b/azure-keyvault/build.json @@ -1,5 +1,516 @@ { - "autorest": "1.0.1-20170417-2300-nightly", - "date": "2017-04-18T20:13:42Z", - "version": "0.2.0" + "autorest": [ + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/autorest-core", + "version": "2.0.4280", + "engines": { + "node": ">=7.10.0" + }, + "dependencies": { + "typescript": "2.6.2" + }, + "optionalDependencies": {}, + "devDependencies": { + "@types/commonmark": "^0.27.0", + "@types/jsonpath": "^0.1.29", + "@types/mocha": "5.2.0", + "@types/node": "^8.0.53", + "@types/source-map": "0.5.0", + "@types/yargs": "^8.0.2", + "@types/z-schema": "^3.16.31", + "dts-generator": "^2.1.0", + "mocha": "5.2.0", + "mocha-typescript": "1.1.14", + "shx": "0.2.2", + "static-link": "^0.2.3", + "vscode-jsonrpc": "^3.3.1" + }, + "bundleDependencies": false, + "peerDependencies": {}, + "deprecated": false, + "_resolved": "/root/.autorest/@microsoft.azure_autorest-core@2.0.4280/node_modules/@microsoft.azure/autorest-core", + "_integrity": null, + "_shasum": "bbdeef29b1cba440a6fe5ce238abffa0c4d9d68f", + "_shrinkwrap": null, + "bin": { + "autorest-core": "./dist/app.js", + "autorest-language-service": "dist/language-service/language-service.js" + }, + "_id": "@microsoft.azure/autorest-core@2.0.4280", + "_from": "file:/root/.autorest/@microsoft.azure_autorest-core@2.0.4280/node_modules/@microsoft.azure/autorest-core", + "_requested": { + "type": "directory", + "where": "/root/.autorest/@microsoft.azure_autorest-core@2.0.4280/node_modules/@microsoft.azure/autorest-core", + "raw": "/root/.autorest/@microsoft.azure_autorest-core@2.0.4280/node_modules/@microsoft.azure/autorest-core", + "rawSpec": "/root/.autorest/@microsoft.azure_autorest-core@2.0.4280/node_modules/@microsoft.azure/autorest-core", + "saveSpec": "file:/root/.autorest/@microsoft.azure_autorest-core@2.0.4280/node_modules/@microsoft.azure/autorest-core", + "fetchSpec": "/root/.autorest/@microsoft.azure_autorest-core@2.0.4280/node_modules/@microsoft.azure/autorest-core" + }, + "_spec": "/root/.autorest/@microsoft.azure_autorest-core@2.0.4280/node_modules/@microsoft.azure/autorest-core", + "_where": "/root/.autorest/@microsoft.azure_autorest-core@2.0.4280/node_modules/@microsoft.azure/autorest-core" + }, + "extensionManager": { + "installationPath": "/root/.autorest", + "sharedLock": { + "name": "/root/.autorest", + "exclusiveLock": { + "name": "_root_.autorest.exclusive-lock", + "options": { + "port": 45234, + "host": "2130706813", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.exclusive-lock:45234" + }, + "busyLock": { + "name": "_root_.autorest.busy-lock", + "options": { + "port": 37199, + "host": "2130756895", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" + }, + "personalLock": { + "name": "_root_.autorest.7463.089005969417.personal-lock", + "options": { + "port": 14970, + "host": "2130768351", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" + }, + "file": "/tmp/_root_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/root/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/autorest.modeler", + "version": "2.0.21", + "dependencies": { + "dotnet-2.0.0": "^1.3.2" + }, + "optionalDependencies": {}, + "devDependencies": { + "coffee-script": "^1.11.1", + "dotnet-sdk-2.0.0": "^1.1.1", + "gulp": "^3.9.1", + "gulp-filter": "^5.0.0", + "gulp-line-ending-corrector": "^1.0.1", + "iced-coffee-script": "^108.0.11", + "marked": "^0.3.6", + "marked-terminal": "^2.0.0", + "moment": "^2.17.1", + "run-sequence": "*", + "shx": "^0.2.2", + "through2-parallel": "^0.1.3", + "yargs": "^8.0.2", + "yarn": "^1.0.2" + }, + "bundleDependencies": false, + "peerDependencies": {}, + "deprecated": false, + "_resolved": "/root/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "_integrity": null, + "_shasum": "3ce7d3939124b31830be15e5de99b9b7768afb90", + "_shrinkwrap": null, + "bin": null, + "_id": "@microsoft.azure/autorest.modeler@2.0.21", + "_from": "file:/root/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "_requested": { + "type": "directory", + "where": "/root/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "raw": "/root/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "rawSpec": "/root/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "saveSpec": "file:/root/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "fetchSpec": "/root/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler" + }, + "_spec": "/root/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "_where": "/root/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler" + }, + "extensionManager": { + "installationPath": "/root/.autorest", + "sharedLock": { + "name": "/root/.autorest", + "exclusiveLock": { + "name": "_root_.autorest.exclusive-lock", + "options": { + "port": 45234, + "host": "2130706813", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.exclusive-lock:45234" + }, + "busyLock": { + "name": "_root_.autorest.busy-lock", + "options": { + "port": 37199, + "host": "2130756895", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" + }, + "personalLock": { + "name": "_root_.autorest.7463.089005969417.personal-lock", + "options": { + "port": 14970, + "host": "2130768351", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" + }, + "file": "/tmp/_root_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/root/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/autorest.modeler", + "version": "2.3.44", + "dependencies": { + "dotnet-2.0.0": "^1.4.4" + }, + "optionalDependencies": {}, + "devDependencies": { + "@microsoft.azure/autorest.testserver": "2.3.17", + "autorest": "^2.0.4225", + "coffee-script": "^1.11.1", + "dotnet-sdk-2.0.0": "^1.4.4", + "gulp": "^3.9.1", + "gulp-filter": "^5.0.0", + "gulp-line-ending-corrector": "^1.0.1", + "iced-coffee-script": "^108.0.11", + "marked": "^0.3.6", + "marked-terminal": "^2.0.0", + "moment": "^2.17.1", + "run-sequence": "*", + "shx": "^0.2.2", + "through2-parallel": "^0.1.3", + "yargs": "^8.0.2", + "yarn": "^1.0.2" + }, + "bundleDependencies": false, + "peerDependencies": {}, + "deprecated": false, + "_resolved": "/root/.autorest/@microsoft.azure_autorest.modeler@2.3.44/node_modules/@microsoft.azure/autorest.modeler", + "_integrity": null, + "_shasum": "9b5a880a77467be33a77f002f03230d3ccc21266", + "_shrinkwrap": null, + "bin": null, + "_id": "@microsoft.azure/autorest.modeler@2.3.44", + "_from": "file:/root/.autorest/@microsoft.azure_autorest.modeler@2.3.44/node_modules/@microsoft.azure/autorest.modeler", + "_requested": { + "type": "directory", + "where": "/root/.autorest/@microsoft.azure_autorest.modeler@2.3.44/node_modules/@microsoft.azure/autorest.modeler", + "raw": "/root/.autorest/@microsoft.azure_autorest.modeler@2.3.44/node_modules/@microsoft.azure/autorest.modeler", + "rawSpec": "/root/.autorest/@microsoft.azure_autorest.modeler@2.3.44/node_modules/@microsoft.azure/autorest.modeler", + "saveSpec": "file:/root/.autorest/@microsoft.azure_autorest.modeler@2.3.44/node_modules/@microsoft.azure/autorest.modeler", + "fetchSpec": "/root/.autorest/@microsoft.azure_autorest.modeler@2.3.44/node_modules/@microsoft.azure/autorest.modeler" + }, + "_spec": "/root/.autorest/@microsoft.azure_autorest.modeler@2.3.44/node_modules/@microsoft.azure/autorest.modeler", + "_where": "/root/.autorest/@microsoft.azure_autorest.modeler@2.3.44/node_modules/@microsoft.azure/autorest.modeler" + }, + "extensionManager": { + "installationPath": "/root/.autorest", + "sharedLock": { + "name": "/root/.autorest", + "exclusiveLock": { + "name": "_root_.autorest.exclusive-lock", + "options": { + "port": 45234, + "host": "2130706813", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.exclusive-lock:45234" + }, + "busyLock": { + "name": "_root_.autorest.busy-lock", + "options": { + "port": 37199, + "host": "2130756895", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" + }, + "personalLock": { + "name": "_root_.autorest.7463.089005969417.personal-lock", + "options": { + "port": 14970, + "host": "2130768351", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" + }, + "file": "/tmp/_root_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/root/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/autorest.python", + "version": "2.1.40", + "dependencies": { + "dotnet-2.0.0": "^1.4.4" + }, + "optionalDependencies": {}, + "devDependencies": { + "@microsoft.azure/autorest.testserver": "^2.4.0", + "autorest": "^2.0.4203", + "coffee-script": "^1.11.1", + "dotnet-sdk-2.0.0": "^1.4.4", + "gulp": "^3.9.1", + "gulp-filter": "^5.0.0", + "gulp-line-ending-corrector": "^1.0.1", + "iced-coffee-script": "^108.0.11", + "marked": "^0.3.6", + "marked-terminal": "^2.0.0", + "moment": "^2.17.1", + "run-sequence": "*", + "shx": "^0.2.2", + "through2-parallel": "^0.1.3", + "yargs": "^8.0.2", + "yarn": "^1.0.2" + }, + "bundleDependencies": false, + "peerDependencies": {}, + "deprecated": false, + "_resolved": "/root/.autorest/@microsoft.azure_autorest.python@2.1.40/node_modules/@microsoft.azure/autorest.python", + "_integrity": null, + "_shasum": "9b3f08c892d725ac571b3a7dc8f781d76da64397", + "_shrinkwrap": null, + "bin": null, + "_id": "@microsoft.azure/autorest.python@2.1.40", + "_from": "file:/root/.autorest/@microsoft.azure_autorest.python@2.1.40/node_modules/@microsoft.azure/autorest.python", + "_requested": { + "type": "directory", + "where": "/root/.autorest/@microsoft.azure_autorest.python@2.1.40/node_modules/@microsoft.azure/autorest.python", + "raw": "/root/.autorest/@microsoft.azure_autorest.python@2.1.40/node_modules/@microsoft.azure/autorest.python", + "rawSpec": "/root/.autorest/@microsoft.azure_autorest.python@2.1.40/node_modules/@microsoft.azure/autorest.python", + "saveSpec": "file:/root/.autorest/@microsoft.azure_autorest.python@2.1.40/node_modules/@microsoft.azure/autorest.python", + "fetchSpec": "/root/.autorest/@microsoft.azure_autorest.python@2.1.40/node_modules/@microsoft.azure/autorest.python" + }, + "_spec": "/root/.autorest/@microsoft.azure_autorest.python@2.1.40/node_modules/@microsoft.azure/autorest.python", + "_where": "/root/.autorest/@microsoft.azure_autorest.python@2.1.40/node_modules/@microsoft.azure/autorest.python" + }, + "extensionManager": { + "installationPath": "/root/.autorest", + "sharedLock": { + "name": "/root/.autorest", + "exclusiveLock": { + "name": "_root_.autorest.exclusive-lock", + "options": { + "port": 45234, + "host": "2130706813", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.exclusive-lock:45234" + }, + "busyLock": { + "name": "_root_.autorest.busy-lock", + "options": { + "port": 37199, + "host": "2130756895", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" + }, + "personalLock": { + "name": "_root_.autorest.7463.089005969417.personal-lock", + "options": { + "port": 14970, + "host": "2130768351", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" + }, + "file": "/tmp/_root_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/root/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/autorest.python", + "version": "3.0.52", + "dependencies": { + "dotnet-2.0.0": "^1.4.4" + }, + "optionalDependencies": {}, + "devDependencies": { + "@microsoft.azure/autorest.testserver": "^2.5.6", + "autorest": "^2.0.4203", + "coffee-script": "^1.11.1", + "dotnet-sdk-2.0.0": "^1.4.4", + "gulp": "^3.9.1", + "gulp-filter": "^5.0.0", + "gulp-line-ending-corrector": "^1.0.1", + "iced-coffee-script": "^108.0.11", + "marked": "^0.3.6", + "marked-terminal": "^2.0.0", + "moment": "^2.17.1", + "run-sequence": "*", + "shx": "^0.2.2", + "through2-parallel": "^0.1.3", + "yargs": "^8.0.2", + "yarn": "^1.0.2" + }, + "bundleDependencies": false, + "peerDependencies": {}, + "deprecated": false, + "_resolved": "/root/.autorest/@microsoft.azure_autorest.python@3.0.52/node_modules/@microsoft.azure/autorest.python", + "_integrity": null, + "_shasum": "9b2d9412ad86807f8186297e0d8f4ac19b7a1f2e", + "_shrinkwrap": null, + "bin": null, + "_id": "@microsoft.azure/autorest.python@3.0.52", + "_from": "file:/root/.autorest/@microsoft.azure_autorest.python@3.0.52/node_modules/@microsoft.azure/autorest.python", + "_requested": { + "type": "directory", + "where": "/root/.autorest/@microsoft.azure_autorest.python@3.0.52/node_modules/@microsoft.azure/autorest.python", + "raw": "/root/.autorest/@microsoft.azure_autorest.python@3.0.52/node_modules/@microsoft.azure/autorest.python", + "rawSpec": "/root/.autorest/@microsoft.azure_autorest.python@3.0.52/node_modules/@microsoft.azure/autorest.python", + "saveSpec": "file:/root/.autorest/@microsoft.azure_autorest.python@3.0.52/node_modules/@microsoft.azure/autorest.python", + "fetchSpec": "/root/.autorest/@microsoft.azure_autorest.python@3.0.52/node_modules/@microsoft.azure/autorest.python" + }, + "_spec": "/root/.autorest/@microsoft.azure_autorest.python@3.0.52/node_modules/@microsoft.azure/autorest.python", + "_where": "/root/.autorest/@microsoft.azure_autorest.python@3.0.52/node_modules/@microsoft.azure/autorest.python" + }, + "extensionManager": { + "installationPath": "/root/.autorest", + "sharedLock": { + "name": "/root/.autorest", + "exclusiveLock": { + "name": "_root_.autorest.exclusive-lock", + "options": { + "port": 45234, + "host": "2130706813", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.exclusive-lock:45234" + }, + "busyLock": { + "name": "_root_.autorest.busy-lock", + "options": { + "port": 37199, + "host": "2130756895", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" + }, + "personalLock": { + "name": "_root_.autorest.7463.089005969417.personal-lock", + "options": { + "port": 14970, + "host": "2130768351", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" + }, + "file": "/tmp/_root_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/root/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/autorest.python", + "version": "3.0.55", + "dependencies": { + "dotnet-2.0.0": "^1.4.4" + }, + "optionalDependencies": {}, + "devDependencies": { + "@microsoft.azure/autorest.testserver": "^2.5.14", + "autorest": "^2.0.4203", + "coffee-script": "^1.11.1", + "dotnet-sdk-2.0.0": "^1.4.4", + "gulp": "^3.9.1", + "gulp-filter": "^5.0.0", + "gulp-line-ending-corrector": "^1.0.1", + "iced-coffee-script": "^108.0.11", + "marked": "^0.3.6", + "marked-terminal": "^2.0.0", + "moment": "^2.17.1", + "run-sequence": "*", + "shx": "^0.2.2", + "through2-parallel": "^0.1.3", + "yargs": "^8.0.2", + "yarn": "^1.0.2" + }, + "bundleDependencies": false, + "peerDependencies": {}, + "deprecated": false, + "_resolved": "/root/.autorest/@microsoft.azure_autorest.python@3.0.55/node_modules/@microsoft.azure/autorest.python", + "_integrity": null, + "_shasum": "2a88b07cf34c7b3299447c6ac58ce36c8d431570", + "_shrinkwrap": null, + "bin": null, + "_id": "@microsoft.azure/autorest.python@3.0.55", + "_from": "file:/root/.autorest/@microsoft.azure_autorest.python@3.0.55/node_modules/@microsoft.azure/autorest.python", + "_requested": { + "type": "directory", + "where": "/root/.autorest/@microsoft.azure_autorest.python@3.0.55/node_modules/@microsoft.azure/autorest.python", + "raw": "/root/.autorest/@microsoft.azure_autorest.python@3.0.55/node_modules/@microsoft.azure/autorest.python", + "rawSpec": "/root/.autorest/@microsoft.azure_autorest.python@3.0.55/node_modules/@microsoft.azure/autorest.python", + "saveSpec": "file:/root/.autorest/@microsoft.azure_autorest.python@3.0.55/node_modules/@microsoft.azure/autorest.python", + "fetchSpec": "/root/.autorest/@microsoft.azure_autorest.python@3.0.55/node_modules/@microsoft.azure/autorest.python" + }, + "_spec": "/root/.autorest/@microsoft.azure_autorest.python@3.0.55/node_modules/@microsoft.azure/autorest.python", + "_where": "/root/.autorest/@microsoft.azure_autorest.python@3.0.55/node_modules/@microsoft.azure/autorest.python" + }, + "extensionManager": { + "installationPath": "/root/.autorest", + "sharedLock": { + "name": "/root/.autorest", + "exclusiveLock": { + "name": "_root_.autorest.exclusive-lock", + "options": { + "port": 45234, + "host": "2130706813", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.exclusive-lock:45234" + }, + "busyLock": { + "name": "_root_.autorest.busy-lock", + "options": { + "port": 37199, + "host": "2130756895", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" + }, + "personalLock": { + "name": "_root_.autorest.7463.089005969417.personal-lock", + "options": { + "port": 14970, + "host": "2130768351", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" + }, + "file": "/tmp/_root_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/root/.autorest" + } + ], + "autorest_bootstrap": {} } \ No newline at end of file diff --git a/azure-keyvault/sdk_packaging.toml b/azure-keyvault/sdk_packaging.toml new file mode 100644 index 000000000000..5c2041749c30 --- /dev/null +++ b/azure-keyvault/sdk_packaging.toml @@ -0,0 +1,5 @@ +[packaging] +package_name = "azure-keyvault" +package_pprint_name = "Key Vault" +package_doc_id = "key-vault" +is_stable = false diff --git a/azure-keyvault/setup.py b/azure-keyvault/setup.py index 364dcae87970..389f8d1575a6 100644 --- a/azure-keyvault/setup.py +++ b/azure-keyvault/setup.py @@ -61,7 +61,7 @@ long_description=readme + '\n\n' + history, license='MIT License', author='Microsoft Corporation', - author_email='ptvshelp@microsoft.com', + author_email='azurekeyvault@microsoft.com', url='https://github.com/Azure/azure-sdk-for-python', classifiers=[ 'Development Status :: 4 - Beta', @@ -69,18 +69,18 @@ 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'License :: OSI Approved :: MIT License', ], zip_safe=False, - packages=find_packages(), + packages=find_packages(exclude=["tests"]), install_requires=[ - 'msrestazure>=0.4.15', - 'msrest>=0.4.17', - 'azure-common~=1.1.5', + 'msrestazure>=0.4.27,<2.0.0', + 'azure-common~=1.1', + 'cryptography>=2.1.4', + 'requests>=2.18.4' ], cmdclass=cmdclass ) diff --git a/azure-keyvault/tests/keyvault_preparer.py b/azure-keyvault/tests/keyvault_preparer.py new file mode 100644 index 000000000000..4a9dab00ff84 --- /dev/null +++ b/azure-keyvault/tests/keyvault_preparer.py @@ -0,0 +1,104 @@ +from collections import namedtuple +import io +import os +import requests +import time + +from azure.mgmt.keyvault import KeyVaultManagementClient +from azure.mgmt.keyvault.models import SecretPermissions, KeyPermissions, CertificatePermissions, StoragePermissions, \ + Permissions, Sku, SkuName, AccessPolicyEntry, VaultProperties, VaultCreateOrUpdateParameters, Vault +from azure_devtools.scenario_tests.preparers import ( + AbstractPreparer, + SingleValueReplacer, +) +from azure_devtools.scenario_tests.exceptions import AzureTestError + +from devtools_testutils import AzureMgmtPreparer, ResourceGroupPreparer, FakeResource +from devtools_testutils.resource_testcase import RESOURCE_GROUP_PARAM + +VAULT_PARAM = 'vault' +FakeAccount = namedtuple( + 'FakeResource', + ['name', 'account_endpoint'] +) + +DEFAULT_PERMISSIONS = Permissions(keys=[perm.value for perm in KeyPermissions], + secrets=[perm.value for perm in SecretPermissions], + certificates=[perm.value for perm in CertificatePermissions], + storage=[perm.value for perm in StoragePermissions]) +DEFAULT_SKU = SkuName.premium.value + +class KeyVaultPreparer(AzureMgmtPreparer): + def __init__(self, + sku=None, + permissions=None, + enabled_for_deployment=True, + enabled_for_disk_encryption=True, + enabled_for_template_deployment=True, + enable_soft_delete=None, + name_prefix='vault', + location='westus', + parameter_name=VAULT_PARAM, + resource_group_parameter_name=RESOURCE_GROUP_PARAM, + disable_recording=True, + playback_fake_resource=None, + client_kwargs=None): + super(KeyVaultPreparer, self).__init__(name_prefix, 24, + disable_recording=disable_recording, + playback_fake_resource=playback_fake_resource, + client_kwargs=client_kwargs) + self.sku = sku or DEFAULT_SKU + self.permissions = permissions or DEFAULT_PERMISSIONS + self.enabled_for_deployment = enabled_for_deployment + self.enabled_for_disk_encryption = enabled_for_disk_encryption + self.enabled_for_template_deployment = enabled_for_template_deployment + self.enable_soft_delete = enable_soft_delete + self.location = location + self.resource_group_parameter_name = resource_group_parameter_name + self.parameter_name = parameter_name + self.creds_parameter = 'credentials' + self.parameter_name_for_location = 'location' + + def _get_resource_group(self, **kwargs): + try: + return kwargs[self.resource_group_parameter_name] + except KeyError: + template = 'To create a key vault a resource group is required. Please add ' \ + 'decorator @{} in front of this storage account preparer.' + raise AzureTestError(template.format(ResourceGroupPreparer.__name__)) + + + def create_resource(self, name, **kwargs): + group = self._get_resource_group(**kwargs).name + + access_policies = [AccessPolicyEntry(tenant_id=self.test_class_instance.settings.TENANT_ID, + object_id=self.test_class_instance.settings.CLIENT_OID, + permissions=self.permissions)] + properties = VaultProperties(tenant_id=self.test_class_instance.settings.TENANT_ID, + sku=Sku(name=self.sku), + access_policies=access_policies, + vault_uri=None, + enabled_for_deployment=self.enabled_for_deployment, + enabled_for_disk_encryption=self.enabled_for_disk_encryption, + enabled_for_template_deployment=self.enabled_for_template_deployment, + enable_soft_delete=self.enable_soft_delete, + enable_purge_protection=None) + + if self.is_live: + self.client = self.create_mgmt_client(KeyVaultManagementClient) + parameters = VaultCreateOrUpdateParameters(location=self.location, + properties=properties) + self.resource = self.client.vaults.create_or_update(group, name, parameters).result() + else: + properties.vault_uri = 'https://{}.vault.azure.net/'.format(name) + self.resource = Vault(location=self.location, properties=properties) + return { + self.parameter_name: self.resource + } + + def remove_resource(self, name, **kwargs): + if self.is_live: + group = self._get_resource_group(**kwargs).name + self.client.vaults.delete(group, name) + if self.enable_soft_delete: + self.client.vaults.purge_deleted(name, self.location).wait() diff --git a/azure-keyvault/tests/keyvault_testcase.py b/azure-keyvault/tests/keyvault_testcase.py new file mode 100644 index 000000000000..01478eecf561 --- /dev/null +++ b/azure-keyvault/tests/keyvault_testcase.py @@ -0,0 +1,21 @@ +from azure_devtools.scenario_tests import GeneralNameReplacer +from devtools_testutils import AzureMgmtTestCase +from azure.keyvault import KeyVaultClient, KeyVaultAuthentication, AccessToken + + +class KeyvaultTestCase(AzureMgmtTestCase): + def setUp(self): + super(KeyvaultTestCase, self).setUp() + self.list_test_size = 2 + if self.is_live: + self.client = self.create_basic_client(KeyVaultClient) + else: + + def _auth_callback(server, resource, scope): + return AccessToken('Bearer', 'fake-token') + self.client = KeyVaultClient(KeyVaultAuthentication(authorization_callback=_auth_callback)) + + def tearDown(self): + super(KeyvaultTestCase, self).tearDown() + + diff --git a/azure-keyvault/tests/recordings/test_certificates.test_async_request_cancellation_and_deletion.yaml b/azure-keyvault/tests/recordings/test_certificates.test_async_request_cancellation_and_deletion.yaml new file mode 100644 index 000000000000..c36a07e6a978 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_certificates.test_async_request_cancellation_and_deletion.yaml @@ -0,0 +1,231 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/create?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 20:26:00 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}, + "x509_props": {"subject": "CN=*.microsoft.com", "sans": {"dns_names": ["onedrive.microsoft.com", + "xbox.microsoft.com"]}, "validity_months": 24}, "issuer": {"name": "Self"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['329'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/create?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxE2UeSKlv045IU1bFkjsyJ2HieKnup+bRx+PuEgkk4dP42hsCeGmUkbQk9WLWKqAvgEs4iRf2kyYiqovY8XHKLI5UmpPcWMuv38AZgdrEYhWxFiqpoGKWpuGJqUbBtySDEK/EfGdLt1gYiQNoJc9c8Rn+XEf7SA4pdwNKUkZKnMnONIxFZVLpYnwSdRtq5duMHFpU4V1fgSr3ATkzmUGSotnTCgPkie1Wl6KmEpwUg/B9Rb2ENHmUdUiM0G0aPJeK5nFsYo/FHvQg30dhOWSCrldRGga5lKZRVP1MFlr+8Vg1RZ9mz3zfGwkpMcg3dS4cVctfMEKYmnUu5UNCMlG6QIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAIgy11sjHdsGNIfoMTzIreor4vEyyDh30TXqxFL7cmLX7odE8c5xXAbk4M4nW3dbXTPEjACS7GtWcf+wFrgQU4PS1ubiFHziPOTUiKdwU+/7GRTC0VMHmXu6GI2eMYNl+Wutuvuz7XmMNwoialXTBYpL/2pDii/TSvhMeTXmgFt9PXoxnha08KLgLF81OmoFuDPXTlXCKlJWdIM13RdqCZCIESM7QmpJ9um3QuRu2D4aBe7+15LOOqC7N70v48wONTFLAO9ztnZ6BMkYOQ5s8bZV6Vpzei+K2zoIeF696SEN9fnsOKR4F2OyUafU5/U8D2CezRByJPmnbUgQYvJ0itU=","cancellation_requested":false,"status":"inProgress","status_details":"Pending + certificate created. Certificate request is in progress. This may take some + time based on the issuer provider. Please check again later.","request_id":"9846f877be164b9bb489726fb5ef36f9"}'} + headers: + cache-control: [no-cache] + content-length: ['1383'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:26:03 GMT'] + expires: ['-1'] + location: ['https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=7.0-preview&request_id=9846f877be164b9bb489726fb5ef36f9'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 202, message: Accepted} +- request: + body: '{"cancellation_requested": true}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['32'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PATCH + uri: https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxE2UeSKlv045IU1bFkjsyJ2HieKnup+bRx+PuEgkk4dP42hsCeGmUkbQk9WLWKqAvgEs4iRf2kyYiqovY8XHKLI5UmpPcWMuv38AZgdrEYhWxFiqpoGKWpuGJqUbBtySDEK/EfGdLt1gYiQNoJc9c8Rn+XEf7SA4pdwNKUkZKnMnONIxFZVLpYnwSdRtq5duMHFpU4V1fgSr3ATkzmUGSotnTCgPkie1Wl6KmEpwUg/B9Rb2ENHmUdUiM0G0aPJeK5nFsYo/FHvQg30dhOWSCrldRGga5lKZRVP1MFlr+8Vg1RZ9mz3zfGwkpMcg3dS4cVctfMEKYmnUu5UNCMlG6QIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAIgy11sjHdsGNIfoMTzIreor4vEyyDh30TXqxFL7cmLX7odE8c5xXAbk4M4nW3dbXTPEjACS7GtWcf+wFrgQU4PS1ubiFHziPOTUiKdwU+/7GRTC0VMHmXu6GI2eMYNl+Wutuvuz7XmMNwoialXTBYpL/2pDii/TSvhMeTXmgFt9PXoxnha08KLgLF81OmoFuDPXTlXCKlJWdIM13RdqCZCIESM7QmpJ9um3QuRu2D4aBe7+15LOOqC7N70v48wONTFLAO9ztnZ6BMkYOQ5s8bZV6Vpzei+K2zoIeF696SEN9fnsOKR4F2OyUafU5/U8D2CezRByJPmnbUgQYvJ0itU=","cancellation_requested":true,"status":"inProgress","status_details":"Pending + certificate created. Certificate request is in progress. This may take some + time based on the issuer provider. Please check again later.","request_id":"9846f877be164b9bb489726fb5ef36f9"}'} + headers: + cache-control: [no-cache] + content-length: ['1382'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:26:02 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxE2UeSKlv045IU1bFkjsyJ2HieKnup+bRx+PuEgkk4dP42hsCeGmUkbQk9WLWKqAvgEs4iRf2kyYiqovY8XHKLI5UmpPcWMuv38AZgdrEYhWxFiqpoGKWpuGJqUbBtySDEK/EfGdLt1gYiQNoJc9c8Rn+XEf7SA4pdwNKUkZKnMnONIxFZVLpYnwSdRtq5duMHFpU4V1fgSr3ATkzmUGSotnTCgPkie1Wl6KmEpwUg/B9Rb2ENHmUdUiM0G0aPJeK5nFsYo/FHvQg30dhOWSCrldRGga5lKZRVP1MFlr+8Vg1RZ9mz3zfGwkpMcg3dS4cVctfMEKYmnUu5UNCMlG6QIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAIgy11sjHdsGNIfoMTzIreor4vEyyDh30TXqxFL7cmLX7odE8c5xXAbk4M4nW3dbXTPEjACS7GtWcf+wFrgQU4PS1ubiFHziPOTUiKdwU+/7GRTC0VMHmXu6GI2eMYNl+Wutuvuz7XmMNwoialXTBYpL/2pDii/TSvhMeTXmgFt9PXoxnha08KLgLF81OmoFuDPXTlXCKlJWdIM13RdqCZCIESM7QmpJ9um3QuRu2D4aBe7+15LOOqC7N70v48wONTFLAO9ztnZ6BMkYOQ5s8bZV6Vpzei+K2zoIeF696SEN9fnsOKR4F2OyUafU5/U8D2CezRByJPmnbUgQYvJ0itU=","cancellation_requested":true,"status":"inProgress","status_details":"Pending + certificate created. Certificate request is in progress. This may take some + time based on the issuer provider. Please check again later.","request_id":"9846f877be164b9bb489726fb5ef36f9"}'} + headers: + cache-control: [no-cache] + content-length: ['1382'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:26:03 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxE2UeSKlv045IU1bFkjsyJ2HieKnup+bRx+PuEgkk4dP42hsCeGmUkbQk9WLWKqAvgEs4iRf2kyYiqovY8XHKLI5UmpPcWMuv38AZgdrEYhWxFiqpoGKWpuGJqUbBtySDEK/EfGdLt1gYiQNoJc9c8Rn+XEf7SA4pdwNKUkZKnMnONIxFZVLpYnwSdRtq5duMHFpU4V1fgSr3ATkzmUGSotnTCgPkie1Wl6KmEpwUg/B9Rb2ENHmUdUiM0G0aPJeK5nFsYo/FHvQg30dhOWSCrldRGga5lKZRVP1MFlr+8Vg1RZ9mz3zfGwkpMcg3dS4cVctfMEKYmnUu5UNCMlG6QIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAIgy11sjHdsGNIfoMTzIreor4vEyyDh30TXqxFL7cmLX7odE8c5xXAbk4M4nW3dbXTPEjACS7GtWcf+wFrgQU4PS1ubiFHziPOTUiKdwU+/7GRTC0VMHmXu6GI2eMYNl+Wutuvuz7XmMNwoialXTBYpL/2pDii/TSvhMeTXmgFt9PXoxnha08KLgLF81OmoFuDPXTlXCKlJWdIM13RdqCZCIESM7QmpJ9um3QuRu2D4aBe7+15LOOqC7N70v48wONTFLAO9ztnZ6BMkYOQ5s8bZV6Vpzei+K2zoIeF696SEN9fnsOKR4F2OyUafU5/U8D2CezRByJPmnbUgQYvJ0itU=","cancellation_requested":true,"status":"inProgress","status_details":"Pending + certificate created. Certificate request is in progress. This may take some + time based on the issuer provider. Please check again later.","request_id":"9846f877be164b9bb489726fb5ef36f9"}'} + headers: + cache-control: [no-cache] + content-length: ['1382'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:26:04 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=7.0-preview + response: + body: {string: '{"error":{"code":"PendingCertificateNotFound","message":"Pending + certificate not found: asyncCanceledDeletedCert"}}'} + headers: + cache-control: [no-cache] + content-length: ['115'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:26:04 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 404, message: Not Found} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/07b5f7e5698f4d80b16b6758e4092c5d","attributes":{"enabled":false,"nbf":1526674562,"exp":1589833562,"created":1526675162,"updated":1526675162,"recoveryLevel":"Purgeable"},"policy":{"id":"https://vault238b197a.vault.azure.net/certificates/asyncCanceledDeletedCert/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=*.microsoft.com","sans":{"dns_names":["onedrive.microsoft.com","xbox.microsoft.com"]},"ekus":["1.3.6.1.5.5.7.3.1","1.3.6.1.5.5.7.3.2"],"key_usage":["digitalSignature","keyEncipherment"],"validity_months":24,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"AutoRenew"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1526675162,"updated":1526675162}}}'} + headers: + cache-control: [no-cache] + content-length: ['948'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:26:05 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_certificates.test_crud_contacts.yaml b/azure-keyvault/tests/recordings/test_certificates.test_crud_contacts.yaml new file mode 100644 index 000000000000..0708318c4fdd --- /dev/null +++ b/azure-keyvault/tests/recordings/test_certificates.test_crud_contacts.yaml @@ -0,0 +1,161 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault11e00ecf.vault.azure.net/certificates/contacts?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 20:26:45 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"contacts": [{"email": "admin@contoso.com", "name": "John Doe", "phone": + "1111111111"}, {"email": "admin2@contoso.com", "name": "John Doe2", "phone": + "2222222222"}]}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['166'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault11e00ecf.vault.azure.net/certificates/contacts?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault11e00ecf.vault.azure.net/certificates/contacts","contacts":[{"email":"admin@contoso.com","name":"John + Doe","phone":"1111111111"},{"email":"admin2@contoso.com","name":"John Doe2","phone":"2222222222"}]}'} + headers: + cache-control: [no-cache] + content-length: ['221'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:26:46 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault11e00ecf.vault.azure.net/certificates/contacts?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault11e00ecf.vault.azure.net/certificates/contacts","contacts":[{"email":"admin@contoso.com","name":"John + Doe","phone":"1111111111"},{"email":"admin2@contoso.com","name":"John Doe2","phone":"2222222222"}]}'} + headers: + cache-control: [no-cache] + content-length: ['221'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:26:46 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault11e00ecf.vault.azure.net/certificates/contacts?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault11e00ecf.vault.azure.net/certificates/contacts","contacts":[{"email":"admin@contoso.com","name":"John + Doe","phone":"1111111111"},{"email":"admin2@contoso.com","name":"John Doe2","phone":"2222222222"}]}'} + headers: + cache-control: [no-cache] + content-length: ['221'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:26:46 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault11e00ecf.vault.azure.net/certificates/contacts?api-version=7.0-preview + response: + body: {string: '{"error":{"code":"ContactsNotFound","message":"Contacts not found"}}'} + headers: + cache-control: [no-cache] + content-length: ['68'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:26:47 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 404, message: Not Found} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_certificates.test_crud_issuer.yaml b/azure-keyvault/tests/recordings/test_certificates.test_crud_issuer.yaml new file mode 100644 index 000000000000..a935bcfa64f2 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_certificates.test_crud_issuer.yaml @@ -0,0 +1,194 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultf50c0e0b.vault.azure.net/certificates/issuers/pythonIssuer?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 20:27:28 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"provider": "test", "credentials": {"account_id": "keyvaultuser", "pwd": + "password"}, "org_details": {"admin_details": [{"first_name": "Jane", "last_name": + "Doe", "email": "admin@contoso.com", "phone": "4256666666"}]}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['219'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultf50c0e0b.vault.azure.net/certificates/issuers/pythonIssuer?api-version=7.0-preview + response: + body: {string: '{"id":"https://vaultf50c0e0b.vault.azure.net/certificates/issuers/pythonIssuer","provider":"test","credentials":{"account_id":"keyvaultuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane","last_name":"Doe","email":"admin@contoso.com","phone":"4256666666"}]},"attributes":{"enabled":true,"created":1526675249,"updated":1526675249}}'} + headers: + cache-control: [no-cache] + content-length: ['345'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:27:28 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultf50c0e0b.vault.azure.net/certificates/issuers/pythonIssuer?api-version=7.0-preview + response: + body: {string: '{"id":"https://vaultf50c0e0b.vault.azure.net/certificates/issuers/pythonIssuer","provider":"test","credentials":{"account_id":"keyvaultuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane","last_name":"Doe","email":"admin@contoso.com","phone":"4256666666"}]},"attributes":{"enabled":true,"created":1526675249,"updated":1526675249}}'} + headers: + cache-control: [no-cache] + content-length: ['345'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:27:30 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"provider": "test", "credentials": {"account_id": "xboxuser", "pwd": "security"}, + "org_details": {"admin_details": [{"first_name": "Jane II", "last_name": "Doe", + "email": "admin@contoso.com", "phone": "1111111111"}]}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['218'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PATCH + uri: https://vaultf50c0e0b.vault.azure.net/certificates/issuers/pythonIssuer?api-version=7.0-preview + response: + body: {string: '{"id":"https://vaultf50c0e0b.vault.azure.net/certificates/issuers/pythonIssuer","provider":"test","credentials":{"account_id":"xboxuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane + II","last_name":"Doe","email":"admin@contoso.com","phone":"1111111111"}]},"attributes":{"enabled":true,"created":1526675249,"updated":1526675250}}'} + headers: + cache-control: [no-cache] + content-length: ['344'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:27:30 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vaultf50c0e0b.vault.azure.net/certificates/issuers/pythonIssuer?api-version=7.0-preview + response: + body: {string: '{"id":"https://vaultf50c0e0b.vault.azure.net/certificates/issuers/pythonIssuer","provider":"test","credentials":{"account_id":"xboxuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane + II","last_name":"Doe","email":"admin@contoso.com","phone":"1111111111"}]},"attributes":{"enabled":true,"created":1526675249,"updated":1526675250}}'} + headers: + cache-control: [no-cache] + content-length: ['344'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:27:30 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultf50c0e0b.vault.azure.net/certificates/issuers/pythonIssuer?api-version=7.0-preview + response: + body: {string: '{"error":{"code":"CertificateIssuerNotFound","message":"Issuer + not found"}}'} + headers: + cache-control: [no-cache] + content-length: ['75'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:27:31 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 404, message: Not Found} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_certificates.test_crud_operations.yaml b/azure-keyvault/tests/recordings/test_certificates.test_crud_operations.yaml new file mode 100644 index 000000000000..24abd7e04cd5 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_certificates.test_crud_operations.yaml @@ -0,0 +1,353 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/create?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 20:28:16 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}, + "x509_props": {"subject": "CN=*.microsoft.com", "sans": {"dns_names": ["onedrive.microsoft.com", + "xbox.microsoft.com"]}, "validity_months": 24}, "issuer": {"name": "Self"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['329'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/create?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnjJVyMyDPyW5rjeN/kJa7Cq1P2HvuQRMa8fd928stldyHkGiiEP7TulLazdd9GvMWCRbSjdM3N1dRPZcm8wiHn+f+vp+ifdN7Kqr5KCopVKXTl473lTiOCSRfr1PKiFmlBnIem6vZAW4pczsJJWiVzdQk+WyAPe8FGn7oBRb27yAgNvJTgsSQ7zobKBw9aIAjyJsrg5jQNnkcSS1Da0XXpirywYXbQUVL4uLzbht6WPS9t2hjcpCHv6V5qvOSU18GD46nFSSzhwLQJn7FIvq0JE8c6fH1jVcsAEZjFCKmf+HU7b7H+v0iBY3qmat3lVqUsr3hchyaNQEUW509XWHuQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAEv0oAK67X4qs/OOKilCHL0WQ6odVHkJcietr7cJy+zydtwR/crDF2HmdBAN+77aWURDImpYCS/pj1AUO+QvgeBGvC3Ai7597Y/KcXX3Gdb1vCQq5BoHMX3b5v7H9m1aTElDEsROZBVcx6yKO5EWiMdoebPWRs3K6NVqTWMioEo0OGCwHbmMUYeq1gt1tnUJhdz3uauFMLFwhaLpg3O43bjGM9T19bRvpQQ5ooML+RR+xXeUb1wlVHDWhvq1e6d2sM39ODPjJH7RyIiFE4nfLC+D1KQ9Qivc3udAugcvheztrXdU6wNRayBFerXyYYuB9w9kFATcEKK5ayHuZ6S4wWE=","cancellation_requested":false,"status":"inProgress","status_details":"Pending + certificate created. Certificate request is in progress. This may take some + time based on the issuer provider. Please check again later.","request_id":"2563fcf3962c4abaa4df2b378cb2fb8c"}'} + headers: + cache-control: [no-cache] + content-length: ['1371'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:28:17 GMT'] + expires: ['-1'] + location: ['https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending?api-version=7.0-preview&request_id=2563fcf3962c4abaa4df2b378cb2fb8c'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 202, message: Accepted} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnjJVyMyDPyW5rjeN/kJa7Cq1P2HvuQRMa8fd928stldyHkGiiEP7TulLazdd9GvMWCRbSjdM3N1dRPZcm8wiHn+f+vp+ifdN7Kqr5KCopVKXTl473lTiOCSRfr1PKiFmlBnIem6vZAW4pczsJJWiVzdQk+WyAPe8FGn7oBRb27yAgNvJTgsSQ7zobKBw9aIAjyJsrg5jQNnkcSS1Da0XXpirywYXbQUVL4uLzbht6WPS9t2hjcpCHv6V5qvOSU18GD46nFSSzhwLQJn7FIvq0JE8c6fH1jVcsAEZjFCKmf+HU7b7H+v0iBY3qmat3lVqUsr3hchyaNQEUW509XWHuQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAEv0oAK67X4qs/OOKilCHL0WQ6odVHkJcietr7cJy+zydtwR/crDF2HmdBAN+77aWURDImpYCS/pj1AUO+QvgeBGvC3Ai7597Y/KcXX3Gdb1vCQq5BoHMX3b5v7H9m1aTElDEsROZBVcx6yKO5EWiMdoebPWRs3K6NVqTWMioEo0OGCwHbmMUYeq1gt1tnUJhdz3uauFMLFwhaLpg3O43bjGM9T19bRvpQQ5ooML+RR+xXeUb1wlVHDWhvq1e6d2sM39ODPjJH7RyIiFE4nfLC+D1KQ9Qivc3udAugcvheztrXdU6wNRayBFerXyYYuB9w9kFATcEKK5ayHuZ6S4wWE=","cancellation_requested":false,"status":"inProgress","status_details":"Pending + certificate created. Certificate request is in progress. This may take some + time based on the issuer provider. Please check again later.","request_id":"2563fcf3962c4abaa4df2b378cb2fb8c"}'} + headers: + cache-control: [no-cache] + content-length: ['1371'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:28:18 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnjJVyMyDPyW5rjeN/kJa7Cq1P2HvuQRMa8fd928stldyHkGiiEP7TulLazdd9GvMWCRbSjdM3N1dRPZcm8wiHn+f+vp+ifdN7Kqr5KCopVKXTl473lTiOCSRfr1PKiFmlBnIem6vZAW4pczsJJWiVzdQk+WyAPe8FGn7oBRb27yAgNvJTgsSQ7zobKBw9aIAjyJsrg5jQNnkcSS1Da0XXpirywYXbQUVL4uLzbht6WPS9t2hjcpCHv6V5qvOSU18GD46nFSSzhwLQJn7FIvq0JE8c6fH1jVcsAEZjFCKmf+HU7b7H+v0iBY3qmat3lVqUsr3hchyaNQEUW509XWHuQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAEv0oAK67X4qs/OOKilCHL0WQ6odVHkJcietr7cJy+zydtwR/crDF2HmdBAN+77aWURDImpYCS/pj1AUO+QvgeBGvC3Ai7597Y/KcXX3Gdb1vCQq5BoHMX3b5v7H9m1aTElDEsROZBVcx6yKO5EWiMdoebPWRs3K6NVqTWMioEo0OGCwHbmMUYeq1gt1tnUJhdz3uauFMLFwhaLpg3O43bjGM9T19bRvpQQ5ooML+RR+xXeUb1wlVHDWhvq1e6d2sM39ODPjJH7RyIiFE4nfLC+D1KQ9Qivc3udAugcvheztrXdU6wNRayBFerXyYYuB9w9kFATcEKK5ayHuZ6S4wWE=","cancellation_requested":false,"status":"inProgress","status_details":"Pending + certificate created. Certificate request is in progress. This may take some + time based on the issuer provider. Please check again later.","request_id":"2563fcf3962c4abaa4df2b378cb2fb8c"}'} + headers: + cache-control: [no-cache] + content-length: ['1371'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:28:23 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnjJVyMyDPyW5rjeN/kJa7Cq1P2HvuQRMa8fd928stldyHkGiiEP7TulLazdd9GvMWCRbSjdM3N1dRPZcm8wiHn+f+vp+ifdN7Kqr5KCopVKXTl473lTiOCSRfr1PKiFmlBnIem6vZAW4pczsJJWiVzdQk+WyAPe8FGn7oBRb27yAgNvJTgsSQ7zobKBw9aIAjyJsrg5jQNnkcSS1Da0XXpirywYXbQUVL4uLzbht6WPS9t2hjcpCHv6V5qvOSU18GD46nFSSzhwLQJn7FIvq0JE8c6fH1jVcsAEZjFCKmf+HU7b7H+v0iBY3qmat3lVqUsr3hchyaNQEUW509XWHuQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAEv0oAK67X4qs/OOKilCHL0WQ6odVHkJcietr7cJy+zydtwR/crDF2HmdBAN+77aWURDImpYCS/pj1AUO+QvgeBGvC3Ai7597Y/KcXX3Gdb1vCQq5BoHMX3b5v7H9m1aTElDEsROZBVcx6yKO5EWiMdoebPWRs3K6NVqTWMioEo0OGCwHbmMUYeq1gt1tnUJhdz3uauFMLFwhaLpg3O43bjGM9T19bRvpQQ5ooML+RR+xXeUb1wlVHDWhvq1e6d2sM39ODPjJH7RyIiFE4nfLC+D1KQ9Qivc3udAugcvheztrXdU6wNRayBFerXyYYuB9w9kFATcEKK5ayHuZ6S4wWE=","cancellation_requested":false,"status":"inProgress","status_details":"Pending + certificate created. Certificate request is in progress. This may take some + time based on the issuer provider. Please check again later.","request_id":"2563fcf3962c4abaa4df2b378cb2fb8c"}'} + headers: + cache-control: [no-cache] + content-length: ['1371'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:28:29 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnjJVyMyDPyW5rjeN/kJa7Cq1P2HvuQRMa8fd928stldyHkGiiEP7TulLazdd9GvMWCRbSjdM3N1dRPZcm8wiHn+f+vp+ifdN7Kqr5KCopVKXTl473lTiOCSRfr1PKiFmlBnIem6vZAW4pczsJJWiVzdQk+WyAPe8FGn7oBRb27yAgNvJTgsSQ7zobKBw9aIAjyJsrg5jQNnkcSS1Da0XXpirywYXbQUVL4uLzbht6WPS9t2hjcpCHv6V5qvOSU18GD46nFSSzhwLQJn7FIvq0JE8c6fH1jVcsAEZjFCKmf+HU7b7H+v0iBY3qmat3lVqUsr3hchyaNQEUW509XWHuQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAEv0oAK67X4qs/OOKilCHL0WQ6odVHkJcietr7cJy+zydtwR/crDF2HmdBAN+77aWURDImpYCS/pj1AUO+QvgeBGvC3Ai7597Y/KcXX3Gdb1vCQq5BoHMX3b5v7H9m1aTElDEsROZBVcx6yKO5EWiMdoebPWRs3K6NVqTWMioEo0OGCwHbmMUYeq1gt1tnUJhdz3uauFMLFwhaLpg3O43bjGM9T19bRvpQQ5ooML+RR+xXeUb1wlVHDWhvq1e6d2sM39ODPjJH7RyIiFE4nfLC+D1KQ9Qivc3udAugcvheztrXdU6wNRayBFerXyYYuB9w9kFATcEKK5ayHuZ6S4wWE=","cancellation_requested":false,"status":"completed","target":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4","request_id":"2563fcf3962c4abaa4df2b378cb2fb8c"}'} + headers: + cache-control: [no-cache] + content-length: ['1281'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:28:35 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8","kid":"https://vault31150fb4.vault.azure.net/keys/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8","sid":"https://vault31150fb4.vault.azure.net/secrets/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8","x5t":"PqqBIJcIaeueJtYdmrgFtYqXBbg","cer":"MIIDczCCAlugAwIBAgIQMCTbTHPkRRSHsdv/MDxWOjANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wHhcNMTgwNTE4MjAxODMxWhcNMjAwNTE4MjAyODMxWjAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCeMlXIzIM/JbmuN43+QlrsKrU/Ye+5BExrx933byy2V3IeQaKIQ/tO6UtrN130a8xYJFtKN0zc3V1E9lybzCIef5/6+n6J903sqqvkoKilUpdOXjveVOI4JJF+vU8qIWaUGch6bq9kBbilzOwklaJXN1CT5bIA97wUafugFFvbvICA28lOCxJDvOhsoHD1ogCPImyuDmNA2eRxJLUNrRdemKvLBhdtBRUvi4vNuG3pY9L23aGNykIe/pXmq85JTXwYPjqcVJLOHAtAmfsUi+rQkTxzp8fWNVywARmMUIqZ/4dTtvsf6/SIFjeqZq3eVWpSyveFyHJo1ARRbnT1dYe5AgMBAAGjgbQwgbEwDgYDVR0PAQH/BAQDAgWgMAkGA1UdEwQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDUGA1UdEQQuMCyCFm9uZWRyaXZlLm1pY3Jvc29mdC5jb22CEnhib3gubWljcm9zb2Z0LmNvbTAfBgNVHSMEGDAWgBQghHvVat9/6r50gYMf0QBJjcojlTAdBgNVHQ4EFgQUIIR71Wrff+q+dIGDH9EASY3KI5UwDQYJKoZIhvcNAQELBQADggEBACWp6nJloh893fzXOTK1NMP9xS2QvjEqXky6f3J4mvtNxJgKHOAqTIIFuBkz6ayrQHFssXqkgsQXAVf/8lvukJ4GJIrs9agwXhMcALEsrWzYY9D0+aU6YkSqrk/KL9fLhJUbI7RRA9ZvdzM1nxscc3hLGOEMmV0W9enTBDAugLXvBdc6NSbGT7HWN/pcu8ZM/PEakPr2gJ8lcCg1jpGmWKr9VUrxQQ4huGe6e7UiHRCOYnh/atfMwx23Nbc5fUl3BohYZ78Byy2+VFskAwW8e4P8IrcxH5uMm7HQgFcsVQsG08zL1iPmIgG64K7v+W1wt7ck/DRscqKlSAL4Y5Xjano=","attributes":{"enabled":true,"nbf":1526674711,"exp":1589833711,"created":1526675311,"updated":1526675311,"recoveryLevel":"Purgeable"},"policy":{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=*.microsoft.com","sans":{"dns_names":["onedrive.microsoft.com","xbox.microsoft.com"]},"ekus":["1.3.6.1.5.5.7.3.1","1.3.6.1.5.5.7.3.2"],"key_usage":["digitalSignature","keyEncipherment"],"validity_months":24,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"AutoRenew"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1526675297,"updated":1526675297}},"pending":{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending"}}'} + headers: + cache-control: [no-cache] + content-length: ['2440'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:28:35 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault31150fb4.vault.azure.net/secrets/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8?api-version=7.0-preview + response: + body: {string: '{"value":"MIIKfAIBAzCCCjwGCSqGSIb3DQEHAaCCCi0EggopMIIKJTCCBhYGCSqGSIb3DQEHAaCCBgcEggYDMIIF/zCCBfsGCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAgfADrR+JmoDwICB9AEggTYvZnlY3C3354KhOBeVbTJCyKth95Ve7pmUKCJC7/lMwi6y/rNMdwOfPS/tRYhNrg6qFOa6egPg/NWQrIvljQcLLpJBnJI04Cga+RruYz2zOH9Ig5n7dZjIGnonOmfng3iiObDGGzbUqmJmaGbPe4V3iN9JRUux2hgN7rtys3YzlsADdi6RWXKLFk7eZADXtN1OSBpUHvdu0m2PAK5TKu2FlQ112YlQE9u6RjhJk/JYRC2G4pgoK9x7XJLUgtxGRfY2Ng4x3TsChUiICvSB5wxLlneRVrkAIvx+KUDLJxKRgYtcvKLI0MYkpsWFLRyA+zkClpBHCJUa0skcIfM874ZQsX9ZkiNAmXB0syyneOvgGsegiK5zOEHKQHaXZN9b7aytCjf4PKSeVFvhffNbbSdfvc4J1TvCeo32g7z94Fh3YEiwaDmXqUvJYS8MkfkSJJa9iLmzW6pidUzmZ660rwUHjixK1SWmFPNIcTL+k+YjE9wBO0Go8UzCTO9JJ3GDOh5kWHfbubVITH1urmIOEZldsmwJI+7xYVwxYB+e5euoFkHNM2eJFiewyXiJg6ocA3x3TuaZgTX3rrfYywbF/KZpyKCGP3GtX/tJrA4fQruf6kcdXR5lci6AjRzhfvopO6qVsolFoH4f/WKZQLwZvBBLEM4jcSHJRg01B6yAxnDiI+LyYfY+oPd3T2JtWsTYvtLehB5ez3hjcTKnSsSa0un6kEp6nzSTSQDSxE1QXAvSabZBVtRk0bcIvZSHBMnMabiq3+9zNx/xFoqzpu0WLfeTAZGW8243021NyvbF+pZTu4v51CEtAQCCLzT6R2y1Mw9wg8Ba1TZicDS8J/HbyKDR8Jg3ieKjNq1E1mhNImrOPXAJ2JGiLqvoPywM1BYi04ElhoYjW7fvaFVOMiA1h4OJtnS0vac1n6MLWG7Eqon+HrP3qgO1Dmu1atvKJGzNeWY2GP3j7uU8Z4LafZnTlhckCD/d6ToOZMZBkKiwVx4iAYTD6D2o65YIsWfolKTyavFzJaNAd8QQ9WxBcHmVsnSc0GiwA1PrQRp4ezZ5xAnBea8Fp06nXUIfVX0nEjmAD49BcBWMSO+2oZ3n3/swf1wdAHMm0Xam4tqWphZtu0fM9uXFkBGmBImd9xeaMGuJ7CBQMg+YKhCyJIdf40xnDoi8gzuWSGASFb33m4VV3il1tmnIxufZJYSyAg5RYn2CApSymSxAOQxOy/+qRda6czQ7lWi/X12iOFWmBAGTupRj6AlIvWgnxz1Gcshh/x15glEEMBLPAGBvc3caNj9m0tVjgPouBQQET6KWM2Uks5+/YBB5LwckfLkg7iFC6J8Z8mPMtL2kZB9X5jkKk5Vt9QxrcevxKpaCAFpF0CN5VWuu87+uCK+EaKDZz73ZGisTGqQ8IbuGh5VYtN8omn8MJzd8FCcaMpdfx0oz1zZC4ClAa2Fr9XKWtcfFfLb4xePVjwYNk5X3galH1bjtWB6M8K23JxYukYywgdhoPaePDskAMTJ1MKWzA4TGSt8B9VARipJTQuIUAt8DrbgSDZOxcxqVP9ZgKNqBMKbsqWoW+P5+Jb5G3QLayJOFekflLsC0O15u+PmEC6Tdf4oBEgw86Zxys9UX7yQvna8nExWKgm3jTgsrVD6qqmu4TGB6TATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGUAYgBiADkAMAAyAGEANAAtADcAZgBmADgALQA0ADMAZgAyAC0AOQA1AGYAZQAtADAANwBhAGMANwBkADMANgA5ADYANwBjMHkGCSsGAQQBgjcRATFsHmoATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByMIIEBwYJKoZIhvcNAQcGoIID+DCCA/QCAQAwggPtBgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAjL6B+MqVX60wICB9CAggPAOHGAUzc9z7KAC77U230aouUrh9A//q0XzgW2J8UzltT+0uRSMgDwoKxdviORCqW7Twnkm1q8fOnjGKF3vutNzhz4Dvu81++dUL5JiX7CDGX+xeSNwI7Ug281aGzYf5ujA98oRKsr/SntcIG9e/oD8WX4uPtZiMJnA7aDasxf43SEaweNM2yCKVAA6mTmpVAcaYQXcP7Vl1MZuMj77FuQiET459Yr7pJZqfYKbRLBbJyOx6+X6PUwnhqg8T1t43YuUVFdi7ff75Va9OhphElVwxSafwaClxFqmwNFK+Gs2J+K03pJVmLh69ZW8lo9q/LsSdmZ9LAqM9iNklXeEYyfXvgekYFPIoHu0FQ8wg983v4wikaypaHNk5/7lvzbHFaXYgg6K/PgzBJKRctxHrc1yk6uw/cWgeIBUCr2YMWIOoSWPzbSyAluZoh88iu5dvMvClH1zdWMi9aouOR6vOPBInYvcbF70a3LLIw5RPiTk7pBuy7A3rp1o6lL7+goMIKdXTo14CbyWFBZkWiMZ9YRWTIgig9zTZ+Xf6ZwCv0J9qHMO3EnVOjyN69pWVQApVf2ju2rgo/YfFYkhod9ovbq81/PTateRCa+yINs4oHN64GkuaZmKsQ4W52SDwGj+pGoVjYHCd6oJFtqhn8i45JdEu25YuAqq3Z2BhuqinjBmRpfvm6CqTA2Gx3p/8x6BzU2P2FomZKMLdLhhbV5qYV38zDwPNT96hCUCB0kAi/T78zt+TBufqFzGDrA/EjLrpmWymWdOzIWK0z5wNlKw8z1sKiFgUktJMC6LWCsSwzmBshiVYt1lO8009TC1vRKL3/ESTQ93fO9pyWFz/fYqt4i0QLdqClykVdZegStffVCWosx6/qfqPwwYFrwNUuk7eR2E7a5jL4UktTMUeoY6OUMIgErjTgIXD5BNScpAiRIb5Kgt8zdWTlHKx+j2fIo2uy9xT8sN91b4pDYf+gi7SEEvqoOcN2y1KVBI+ly9Rlk/Y3kWydY1Umqcu4KEGnFj0md5oW2Q3MFkGnzc57B9S8W5lWeXdNvPyd4VpPuaSlGsYO8/3bLxLHoV0JLTdgPM+GdMuu5GQt4rIOV0XTakcPYdpcFmAsBLU0xWY1YRws+QuuzlBhKS2jgw9vwyNCEWsqNDwK18ErNpey77ZwOREmgepsDmse67jF/WCGfpRnzgg5zUIj5tH5EYSh81AoUGQol6Jn+rXOxgh75aobPD7RK+ohclIArhQapUP3jvDiYeA0M5lHmFyZg2z9H4rf5bDrEMDcwHzAHBgUrDgMCGgQU7QYEMPRiGWBS0HR5mMXF6eJ0VFAEFAPBwgJJWSPMMDZyKkEwhnjiXpAg","contentType":"application/x-pkcs12","id":"https://vault31150fb4.vault.azure.net/secrets/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8","managed":true,"attributes":{"enabled":true,"nbf":1526674711,"exp":1589833711,"created":1526675311,"updated":1526675311,"recoveryLevel":"Purgeable"},"kid":"https://vault31150fb4.vault.azure.net/keys/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8"}'} + headers: + cache-control: [no-cache] + content-length: ['3978'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:28:35 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}, + "x509_props": {"subject": "CN=*.microsoft.com", "sans": {"dns_names": ["onedrive.microsoft.com", + "xbox.microsoft.com"]}, "validity_months": 24}, "issuer": {"name": "Self"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['329'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PATCH + uri: https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8","kid":"https://vault31150fb4.vault.azure.net/keys/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8","sid":"https://vault31150fb4.vault.azure.net/secrets/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8","x5t":"PqqBIJcIaeueJtYdmrgFtYqXBbg","cer":"MIIDczCCAlugAwIBAgIQMCTbTHPkRRSHsdv/MDxWOjANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wHhcNMTgwNTE4MjAxODMxWhcNMjAwNTE4MjAyODMxWjAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCeMlXIzIM/JbmuN43+QlrsKrU/Ye+5BExrx933byy2V3IeQaKIQ/tO6UtrN130a8xYJFtKN0zc3V1E9lybzCIef5/6+n6J903sqqvkoKilUpdOXjveVOI4JJF+vU8qIWaUGch6bq9kBbilzOwklaJXN1CT5bIA97wUafugFFvbvICA28lOCxJDvOhsoHD1ogCPImyuDmNA2eRxJLUNrRdemKvLBhdtBRUvi4vNuG3pY9L23aGNykIe/pXmq85JTXwYPjqcVJLOHAtAmfsUi+rQkTxzp8fWNVywARmMUIqZ/4dTtvsf6/SIFjeqZq3eVWpSyveFyHJo1ARRbnT1dYe5AgMBAAGjgbQwgbEwDgYDVR0PAQH/BAQDAgWgMAkGA1UdEwQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDUGA1UdEQQuMCyCFm9uZWRyaXZlLm1pY3Jvc29mdC5jb22CEnhib3gubWljcm9zb2Z0LmNvbTAfBgNVHSMEGDAWgBQghHvVat9/6r50gYMf0QBJjcojlTAdBgNVHQ4EFgQUIIR71Wrff+q+dIGDH9EASY3KI5UwDQYJKoZIhvcNAQELBQADggEBACWp6nJloh893fzXOTK1NMP9xS2QvjEqXky6f3J4mvtNxJgKHOAqTIIFuBkz6ayrQHFssXqkgsQXAVf/8lvukJ4GJIrs9agwXhMcALEsrWzYY9D0+aU6YkSqrk/KL9fLhJUbI7RRA9ZvdzM1nxscc3hLGOEMmV0W9enTBDAugLXvBdc6NSbGT7HWN/pcu8ZM/PEakPr2gJ8lcCg1jpGmWKr9VUrxQQ4huGe6e7UiHRCOYnh/atfMwx23Nbc5fUl3BohYZ78Byy2+VFskAwW8e4P8IrcxH5uMm7HQgFcsVQsG08zL1iPmIgG64K7v+W1wt7ck/DRscqKlSAL4Y5Xjano=","attributes":{"enabled":true,"nbf":1526674711,"exp":1589833711,"created":1526675311,"updated":1526675311,"recoveryLevel":"Purgeable"},"policy":{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=*.microsoft.com","sans":{"dns_names":["onedrive.microsoft.com","xbox.microsoft.com"]},"ekus":["1.3.6.1.5.5.7.3.1","1.3.6.1.5.5.7.3.2"],"key_usage":["digitalSignature","keyEncipherment"],"validity_months":24,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"AutoRenew"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1526675297,"updated":1526675316}},"pending":{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending"}}'} + headers: + cache-control: [no-cache] + content-length: ['2440'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:28:36 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault31150fb4.vault.azure.net/certificates/cert31150fb4?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8","kid":"https://vault31150fb4.vault.azure.net/keys/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8","sid":"https://vault31150fb4.vault.azure.net/secrets/cert31150fb4/1e49f98934724fbbb31ca0c33f6a05f8","x5t":"PqqBIJcIaeueJtYdmrgFtYqXBbg","cer":"MIIDczCCAlugAwIBAgIQMCTbTHPkRRSHsdv/MDxWOjANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wHhcNMTgwNTE4MjAxODMxWhcNMjAwNTE4MjAyODMxWjAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCeMlXIzIM/JbmuN43+QlrsKrU/Ye+5BExrx933byy2V3IeQaKIQ/tO6UtrN130a8xYJFtKN0zc3V1E9lybzCIef5/6+n6J903sqqvkoKilUpdOXjveVOI4JJF+vU8qIWaUGch6bq9kBbilzOwklaJXN1CT5bIA97wUafugFFvbvICA28lOCxJDvOhsoHD1ogCPImyuDmNA2eRxJLUNrRdemKvLBhdtBRUvi4vNuG3pY9L23aGNykIe/pXmq85JTXwYPjqcVJLOHAtAmfsUi+rQkTxzp8fWNVywARmMUIqZ/4dTtvsf6/SIFjeqZq3eVWpSyveFyHJo1ARRbnT1dYe5AgMBAAGjgbQwgbEwDgYDVR0PAQH/BAQDAgWgMAkGA1UdEwQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDUGA1UdEQQuMCyCFm9uZWRyaXZlLm1pY3Jvc29mdC5jb22CEnhib3gubWljcm9zb2Z0LmNvbTAfBgNVHSMEGDAWgBQghHvVat9/6r50gYMf0QBJjcojlTAdBgNVHQ4EFgQUIIR71Wrff+q+dIGDH9EASY3KI5UwDQYJKoZIhvcNAQELBQADggEBACWp6nJloh893fzXOTK1NMP9xS2QvjEqXky6f3J4mvtNxJgKHOAqTIIFuBkz6ayrQHFssXqkgsQXAVf/8lvukJ4GJIrs9agwXhMcALEsrWzYY9D0+aU6YkSqrk/KL9fLhJUbI7RRA9ZvdzM1nxscc3hLGOEMmV0W9enTBDAugLXvBdc6NSbGT7HWN/pcu8ZM/PEakPr2gJ8lcCg1jpGmWKr9VUrxQQ4huGe6e7UiHRCOYnh/atfMwx23Nbc5fUl3BohYZ78Byy2+VFskAwW8e4P8IrcxH5uMm7HQgFcsVQsG08zL1iPmIgG64K7v+W1wt7ck/DRscqKlSAL4Y5Xjano=","attributes":{"enabled":true,"nbf":1526674711,"exp":1589833711,"created":1526675311,"updated":1526675311,"recoveryLevel":"Purgeable"},"policy":{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=*.microsoft.com","sans":{"dns_names":["onedrive.microsoft.com","xbox.microsoft.com"]},"ekus":["1.3.6.1.5.5.7.3.1","1.3.6.1.5.5.7.3.2"],"key_usage":["digitalSignature","keyEncipherment"],"validity_months":24,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"AutoRenew"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1526675297,"updated":1526675316}},"pending":{"id":"https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/pending"}}'} + headers: + cache-control: [no-cache] + content-length: ['2440'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:28:36 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault31150fb4.vault.azure.net/certificates/cert31150fb4/?api-version=7.0-preview + response: + body: {string: '{"error":{"code":"CertificateNotFound","message":"Certificate + not found: cert31150fb4"}}'} + headers: + cache-control: [no-cache] + content-length: ['88'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:28:36 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 404, message: Not Found} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_certificates.test_import.yaml b/azure-keyvault/tests/recordings/test_certificates.test_import.yaml new file mode 100644 index 000000000000..be076e9255f3 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_certificates.test_import.yaml @@ -0,0 +1,67 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultb3720bfe.vault.azure.net/certificates/certimpb3720bfe/import?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 20:29:18 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", + "pwd": "123", "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['3339'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultb3720bfe.vault.azure.net/certificates/certimpb3720bfe/import?api-version=7.0-preview + response: + body: {string: '{"id":"https://vaultb3720bfe.vault.azure.net/certificates/certimpb3720bfe/68b5cf9de9bd4d569e814e0bb5a9b6bb","kid":"https://vaultb3720bfe.vault.azure.net/keys/certimpb3720bfe/68b5cf9de9bd4d569e814e0bb5a9b6bb","sid":"https://vaultb3720bfe.vault.azure.net/secrets/certimpb3720bfe/68b5cf9de9bd4d569e814e0bb5a9b6bb","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675359,"updated":1526675359,"recoveryLevel":"Purgeable"},"policy":{"id":"https://vaultb3720bfe.vault.azure.net/certificates/certimpb3720bfe/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675359,"updated":1526675359}}}'} + headers: + cache-control: [no-cache] + content-length: ['1802'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:29:20 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_certificates.test_list.yaml b/azure-keyvault/tests/recordings/test_certificates.test_list.yaml new file mode 100644 index 000000000000..1d9320823264 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_certificates.test_list.yaml @@ -0,0 +1,130 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault9bf50b1f.vault.azure.net/certificates/cert09bf50b1f/import?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 20:43:48 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", + "pwd": "123", "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['3339'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault9bf50b1f.vault.azure.net/certificates/cert09bf50b1f/import?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault9bf50b1f.vault.azure.net/certificates/cert09bf50b1f/9f1b86e9d7364e78aec8f0405c55a449","kid":"https://vault9bf50b1f.vault.azure.net/keys/cert09bf50b1f/9f1b86e9d7364e78aec8f0405c55a449","sid":"https://vault9bf50b1f.vault.azure.net/secrets/cert09bf50b1f/9f1b86e9d7364e78aec8f0405c55a449","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526676229,"updated":1526676229,"recoveryLevel":"Purgeable"},"policy":{"id":"https://vault9bf50b1f.vault.azure.net/certificates/cert09bf50b1f/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526676229,"updated":1526676229}}}'} + headers: + cache-control: [no-cache] + content-length: ['1794'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:43:49 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", + "pwd": "123", "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['3339'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault9bf50b1f.vault.azure.net/certificates/cert19bf50b1f/import?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault9bf50b1f.vault.azure.net/certificates/cert19bf50b1f/8f7e40f06dd44d169cf83e2100b24871","kid":"https://vault9bf50b1f.vault.azure.net/keys/cert19bf50b1f/8f7e40f06dd44d169cf83e2100b24871","sid":"https://vault9bf50b1f.vault.azure.net/secrets/cert19bf50b1f/8f7e40f06dd44d169cf83e2100b24871","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526676230,"updated":1526676230,"recoveryLevel":"Purgeable"},"policy":{"id":"https://vault9bf50b1f.vault.azure.net/certificates/cert19bf50b1f/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526676230,"updated":1526676230}}}'} + headers: + cache-control: [no-cache] + content-length: ['1794'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:43:50 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault9bf50b1f.vault.azure.net/certificates?maxresults=2&api-version=7.0-preview + response: + body: {string: '{"value":[{"id":"https://vault9bf50b1f.vault.azure.net/certificates/cert09bf50b1f","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526676229,"updated":1526676229}},{"id":"https://vault9bf50b1f.vault.azure.net/certificates/cert19bf50b1f","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526676230,"updated":1526676230}}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['459'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:43:50 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_certificates.test_list_issuers.yaml b/azure-keyvault/tests/recordings/test_certificates.test_list_issuers.yaml new file mode 100644 index 000000000000..1d1215af11fd --- /dev/null +++ b/azure-keyvault/tests/recordings/test_certificates.test_list_issuers.yaml @@ -0,0 +1,130 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault41e0e8c.vault.azure.net/certificates/issuers/pythonIssuer1?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 20:30:51 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"provider": "test", "credentials": {"account_id": "keyvaultuser", "pwd": + "password"}, "org_details": {"admin_details": [{"first_name": "Jane", "last_name": + "Doe", "email": "admin@contoso.com", "phone": "4256666666"}]}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['219'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault41e0e8c.vault.azure.net/certificates/issuers/pythonIssuer1?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault41e0e8c.vault.azure.net/certificates/issuers/pythonIssuer1","provider":"test","credentials":{"account_id":"keyvaultuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane","last_name":"Doe","email":"admin@contoso.com","phone":"4256666666"}]},"attributes":{"enabled":true,"created":1526675453,"updated":1526675453}}'} + headers: + cache-control: [no-cache] + content-length: ['345'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:30:52 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"provider": "test", "credentials": {"account_id": "keyvaultuser", "pwd": + "password"}, "org_details": {"admin_details": [{"first_name": "Jane", "last_name": + "Doe", "email": "admin@contoso.com", "phone": "4256666666"}]}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['219'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault41e0e8c.vault.azure.net/certificates/issuers/pythonIssuer2?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault41e0e8c.vault.azure.net/certificates/issuers/pythonIssuer2","provider":"test","credentials":{"account_id":"keyvaultuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane","last_name":"Doe","email":"admin@contoso.com","phone":"4256666666"}]},"attributes":{"enabled":true,"created":1526675453,"updated":1526675453}}'} + headers: + cache-control: [no-cache] + content-length: ['345'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:30:52 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault41e0e8c.vault.azure.net/certificates/issuers?maxresults=2&api-version=7.0-preview + response: + body: {string: '{"value":[{"id":"https://vault41e0e8c.vault.azure.net/certificates/issuers/pythonIssuer1","provider":"test"},{"id":"https://vault41e0e8c.vault.azure.net/certificates/issuers/pythonIssuer2","provider":"test"}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['225'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:30:54 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_certificates.test_list_versions.yaml b/azure-keyvault/tests/recordings/test_certificates.test_list_versions.yaml new file mode 100644 index 000000000000..e355ca007e23 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_certificates.test_list_versions.yaml @@ -0,0 +1,130 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault13100ef7.vault.azure.net/certificates/certver13100ef7/import?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 20:44:47 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", + "pwd": "123", "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['3339'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault13100ef7.vault.azure.net/certificates/certver13100ef7/import?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault13100ef7.vault.azure.net/certificates/certver13100ef7/0f7210d7f98c42a1acf34500262348d2","kid":"https://vault13100ef7.vault.azure.net/keys/certver13100ef7/0f7210d7f98c42a1acf34500262348d2","sid":"https://vault13100ef7.vault.azure.net/secrets/certver13100ef7/0f7210d7f98c42a1acf34500262348d2","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526676288,"updated":1526676288,"recoveryLevel":"Purgeable"},"policy":{"id":"https://vault13100ef7.vault.azure.net/certificates/certver13100ef7/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526676288,"updated":1526676288}}}'} + headers: + cache-control: [no-cache] + content-length: ['1802'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:44:49 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", + "pwd": "123", "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['3339'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault13100ef7.vault.azure.net/certificates/certver13100ef7/import?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault13100ef7.vault.azure.net/certificates/certver13100ef7/d2253865955a4884aa7181d078d25801","kid":"https://vault13100ef7.vault.azure.net/keys/certver13100ef7/d2253865955a4884aa7181d078d25801","sid":"https://vault13100ef7.vault.azure.net/secrets/certver13100ef7/d2253865955a4884aa7181d078d25801","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526676290,"updated":1526676290,"recoveryLevel":"Purgeable"},"policy":{"id":"https://vault13100ef7.vault.azure.net/certificates/certver13100ef7/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526676288,"updated":1526676290}}}'} + headers: + cache-control: [no-cache] + content-length: ['1802'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:44:49 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault13100ef7.vault.azure.net/certificates/certver13100ef7/versions?api-version=7.0-preview + response: + body: {string: '{"value":[{"id":"https://vault13100ef7.vault.azure.net/certificates/certver13100ef7/0f7210d7f98c42a1acf34500262348d2","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526676288,"updated":1526676288}},{"id":"https://vault13100ef7.vault.azure.net/certificates/certver13100ef7/d2253865955a4884aa7181d078d25801","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526676290,"updated":1526676290}}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['529'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:44:50 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_certificates.test_manual_enrolled.yaml b/azure-keyvault/tests/recordings/test_certificates.test_manual_enrolled.yaml new file mode 100644 index 000000000000..324c1c8d4529 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_certificates.test_manual_enrolled.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault30a00f95.vault.azure.net/certificates/unknownIssuerCert/create?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 20:32:19 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}, + "x509_props": {"subject": "CN=*.microsoft.com", "sans": {"dns_names": ["onedrive.microsoft.com", + "xbox.microsoft.com"]}, "validity_months": 24}, "issuer": {"name": "Unknown"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['332'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault30a00f95.vault.azure.net/certificates/unknownIssuerCert/create?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault30a00f95.vault.azure.net/certificates/unknownIssuerCert/pending","issuer":{"name":"Unknown"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnrS8yRMNhwZzwM6GspZ4t2MbV7O/QkCYb+3zOkSed9V5VdO3e00ESsbW+sKZfRgrBOXEQPYQOQBeD90X55urx3+Ff2ItI/pw7lkIhFeiO8N4/IuT9gkxWOmpANY0jm+1PYHGC1GrjfHfQEbL5uK52A6GyD86yueajv8ha3fPcRlpr5aXZFfWYvaDzGkbGPEcSmWftIvdIcut5jgyB5a45ZVDiRWVu3AmwC5q9H/Y7Xv5416FG0pWK5yLqizxphrO36VYRwzra4zm5NHPYOFbaJ7IhHghrwes/rY2WSXxO/aeTNnPWhQRaW1W49RnCQQDNGzsiqIUohJRZkl3s1L2zQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAFv4TvzdW2naOG1mCb5tzLe66lcHv4/rnqfUfpyOb5m6mR+C18iANAsa/9H3enNZC8ItlUWgBZ3nxzl6A1ZKhYXLT1UqQcUj31REY9WA1+m/yK77Ufcc3/yQuyTHenCoeitGFFG1rU9if2qt1QIcdmtRHV+uP3LCXM8+hfrKuwkJg99XRFpKgvMMmO6ivRtU8+a3JGhQp5gp10LdV3NMQIT/GOxCf4FsTsLcViIVo6SHkLcKwBPICKpcpSStQxNeyX/1kqWpMT+VDcnMDYbE0iJxsE50GVPzKu8uw1zCvO0ypJD/l14ImtzrY9OaIWJcnXeLVhvZnvh5PAYzIpbZ0j8=","cancellation_requested":false,"status":"inProgress","status_details":"Pending + certificate created. Please Perform Merge to complete the request.","request_id":"526f5136c73b4b75be9135d4581cb587"}'} + headers: + cache-control: [no-cache] + content-length: ['1309'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:32:20 GMT'] + expires: ['-1'] + location: ['https://vault30a00f95.vault.azure.net/certificates/unknownIssuerCert/pending?api-version=7.0-preview&request_id=526f5136c73b4b75be9135d4581cb587'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 202, message: Accepted} +- request: + body: null + headers: + Accept: [application/pkcs10] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault30a00f95.vault.azure.net/certificates/unknownIssuerCert/pending?api-version=7.0-preview + response: + body: {string: MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnrS8yRMNhwZzwM6GspZ4t2MbV7O/QkCYb+3zOkSed9V5VdO3e00ESsbW+sKZfRgrBOXEQPYQOQBeD90X55urx3+Ff2ItI/pw7lkIhFeiO8N4/IuT9gkxWOmpANY0jm+1PYHGC1GrjfHfQEbL5uK52A6GyD86yueajv8ha3fPcRlpr5aXZFfWYvaDzGkbGPEcSmWftIvdIcut5jgyB5a45ZVDiRWVu3AmwC5q9H/Y7Xv5416FG0pWK5yLqizxphrO36VYRwzra4zm5NHPYOFbaJ7IhHghrwes/rY2WSXxO/aeTNnPWhQRaW1W49RnCQQDNGzsiqIUohJRZkl3s1L2zQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAFv4TvzdW2naOG1mCb5tzLe66lcHv4/rnqfUfpyOb5m6mR+C18iANAsa/9H3enNZC8ItlUWgBZ3nxzl6A1ZKhYXLT1UqQcUj31REY9WA1+m/yK77Ufcc3/yQuyTHenCoeitGFFG1rU9if2qt1QIcdmtRHV+uP3LCXM8+hfrKuwkJg99XRFpKgvMMmO6ivRtU8+a3JGhQp5gp10LdV3NMQIT/GOxCf4FsTsLcViIVo6SHkLcKwBPICKpcpSStQxNeyX/1kqWpMT+VDcnMDYbE0iJxsE50GVPzKu8uw1zCvO0ypJD/l14ImtzrY9OaIWJcnXeLVhvZnvh5PAYzIpbZ0j8=} + headers: + cache-control: [no-cache] + content-length: ['992'] + content-type: [application/pkcs10; charset=utf-8] + date: ['Fri, 18 May 2018 20:32:21 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault30a00f95.vault.azure.net/certificates/unknownIssuerCert?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault30a00f95.vault.azure.net/certificates/unknownIssuerCert/cf3dae9c07994b6eb634ddd4ea7ced8e","attributes":{"enabled":false,"nbf":1526674940,"exp":1589833940,"created":1526675540,"updated":1526675540,"recoveryLevel":"Purgeable"},"policy":{"id":"https://vault30a00f95.vault.azure.net/certificates/unknownIssuerCert/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=*.microsoft.com","sans":{"dns_names":["onedrive.microsoft.com","xbox.microsoft.com"]},"ekus":["1.3.6.1.5.5.7.3.1","1.3.6.1.5.5.7.3.2"],"key_usage":["digitalSignature","keyEncipherment"],"validity_months":24,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675540,"updated":1526675540}},"pending":{"id":"https://vault30a00f95.vault.azure.net/certificates/unknownIssuerCert/pending"}}'} + headers: + cache-control: [no-cache] + content-length: ['1037'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:32:21 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_certificates.test_policy.yaml b/azure-keyvault/tests/recordings/test_certificates.test_policy.yaml new file mode 100644 index 000000000000..f7055d06b246 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_certificates.test_policy.yaml @@ -0,0 +1,160 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultb36b0bf3.vault.azure.net/certificates/policyCertificate/import?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 20:33:03 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", + "pwd": "123", "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['3339'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultb36b0bf3.vault.azure.net/certificates/policyCertificate/import?api-version=7.0-preview + response: + body: {string: '{"id":"https://vaultb36b0bf3.vault.azure.net/certificates/policyCertificate/713ae813bdbf4278b9491ee49f22a8e9","kid":"https://vaultb36b0bf3.vault.azure.net/keys/policyCertificate/713ae813bdbf4278b9491ee49f22a8e9","sid":"https://vaultb36b0bf3.vault.azure.net/secrets/policyCertificate/713ae813bdbf4278b9491ee49f22a8e9","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675584,"updated":1526675584,"recoveryLevel":"Purgeable"},"policy":{"id":"https://vaultb36b0bf3.vault.azure.net/certificates/policyCertificate/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675584,"updated":1526675584}}}'} + headers: + cache-control: [no-cache] + content-length: ['1810'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:33:04 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultb36b0bf3.vault.azure.net/certificates/policyCertificate/policy?api-version=7.0-preview + response: + body: {string: '{"id":"https://vaultb36b0bf3.vault.azure.net/certificates/policyCertificate/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675584,"updated":1526675584}}'} + headers: + cache-control: [no-cache] + content-length: ['540'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:33:04 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, "reuse_key": + false}, "secret_props": {"contentType": "application/x-pkcs12"}, "issuer": {"name": + "Self"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['172'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PATCH + uri: https://vaultb36b0bf3.vault.azure.net/certificates/policyCertificate/policy?api-version=7.0-preview + response: + body: {string: '{"id":"https://vaultb36b0bf3.vault.azure.net/certificates/policyCertificate/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1526675584,"updated":1526675586}}'} + headers: + cache-control: [no-cache] + content-length: ['537'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:33:05 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultb36b0bf3.vault.azure.net/certificates/policyCertificate/policy?api-version=7.0-preview + response: + body: {string: '{"id":"https://vaultb36b0bf3.vault.azure.net/certificates/policyCertificate/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1526675584,"updated":1526675586}}'} + headers: + cache-control: [no-cache] + content-length: ['537'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:33:05 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_certificates.test_recover_and_purge.yaml b/azure-keyvault/tests/recordings/test_certificates.test_recover_and_purge.yaml new file mode 100644 index 000000000000..10466e5bac46 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_certificates.test_recover_and_purge.yaml @@ -0,0 +1,530 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault5139106d.vault.azure.net/certificates/certrec05139106d/import?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 20:38:07 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", + "pwd": "123", "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['3339'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault5139106d.vault.azure.net/certificates/certrec05139106d/import?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5139106d.vault.azure.net/certificates/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","kid":"https://vault5139106d.vault.azure.net/keys/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","sid":"https://vault5139106d.vault.azure.net/secrets/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675888,"updated":1526675888,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certrec05139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675888,"updated":1526675888}}}'} + headers: + cache-control: [no-cache] + content-length: ['1818'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:38:08 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", + "pwd": "123", "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['3339'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault5139106d.vault.azure.net/certificates/certrec15139106d/import?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5139106d.vault.azure.net/certificates/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","kid":"https://vault5139106d.vault.azure.net/keys/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","sid":"https://vault5139106d.vault.azure.net/secrets/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675889,"updated":1526675889,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certrec15139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675889,"updated":1526675889}}}'} + headers: + cache-control: [no-cache] + content-length: ['1818'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:38:08 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", + "pwd": "123", "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['3339'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault5139106d.vault.azure.net/certificates/certprg05139106d/import?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5139106d.vault.azure.net/certificates/certprg05139106d/2819ea4af58a4be381813d3101ec8edd","kid":"https://vault5139106d.vault.azure.net/keys/certprg05139106d/2819ea4af58a4be381813d3101ec8edd","sid":"https://vault5139106d.vault.azure.net/secrets/certprg05139106d/2819ea4af58a4be381813d3101ec8edd","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675890,"updated":1526675890,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certprg05139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675890,"updated":1526675890}}}'} + headers: + cache-control: [no-cache] + content-length: ['1818'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:38:09 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", + "pwd": "123", "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": + 2048, "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['3339'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault5139106d.vault.azure.net/certificates/certprg15139106d/import?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5139106d.vault.azure.net/certificates/certprg15139106d/980de5bb7010436992daab74ab8fa0be","kid":"https://vault5139106d.vault.azure.net/keys/certprg15139106d/980de5bb7010436992daab74ab8fa0be","sid":"https://vault5139106d.vault.azure.net/secrets/certprg15139106d/980de5bb7010436992daab74ab8fa0be","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675891,"updated":1526675891,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certprg15139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675891,"updated":1526675891}}}'} + headers: + cache-control: [no-cache] + content-length: ['1818'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:38:10 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault5139106d.vault.azure.net/certificates/certrec05139106d?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vault5139106d.vault.azure.net/deletedcertificates/certrec05139106d","deletedDate":1526675891,"scheduledPurgeDate":1534451891,"id":"https://vault5139106d.vault.azure.net/certificates/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","kid":"https://vault5139106d.vault.azure.net/keys/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","sid":"https://vault5139106d.vault.azure.net/secrets/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675888,"updated":1526675888,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certrec05139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675888,"updated":1526675888}}}'} + headers: + cache-control: [no-cache] + content-length: ['1965'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:38:11 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault5139106d.vault.azure.net/certificates/certrec15139106d?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vault5139106d.vault.azure.net/deletedcertificates/certrec15139106d","deletedDate":1526675892,"scheduledPurgeDate":1534451892,"id":"https://vault5139106d.vault.azure.net/certificates/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","kid":"https://vault5139106d.vault.azure.net/keys/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","sid":"https://vault5139106d.vault.azure.net/secrets/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675889,"updated":1526675889,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certrec15139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675889,"updated":1526675889}}}'} + headers: + cache-control: [no-cache] + content-length: ['1965'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:38:12 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault5139106d.vault.azure.net/certificates/certprg05139106d?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vault5139106d.vault.azure.net/deletedcertificates/certprg05139106d","deletedDate":1526675892,"scheduledPurgeDate":1534451892,"id":"https://vault5139106d.vault.azure.net/certificates/certprg05139106d/2819ea4af58a4be381813d3101ec8edd","kid":"https://vault5139106d.vault.azure.net/keys/certprg05139106d/2819ea4af58a4be381813d3101ec8edd","sid":"https://vault5139106d.vault.azure.net/secrets/certprg05139106d/2819ea4af58a4be381813d3101ec8edd","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675890,"updated":1526675890,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certprg05139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675890,"updated":1526675890}}}'} + headers: + cache-control: [no-cache] + content-length: ['1965'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:38:12 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault5139106d.vault.azure.net/certificates/certprg15139106d?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vault5139106d.vault.azure.net/deletedcertificates/certprg15139106d","deletedDate":1526675893,"scheduledPurgeDate":1534451893,"id":"https://vault5139106d.vault.azure.net/certificates/certprg15139106d/980de5bb7010436992daab74ab8fa0be","kid":"https://vault5139106d.vault.azure.net/keys/certprg15139106d/980de5bb7010436992daab74ab8fa0be","sid":"https://vault5139106d.vault.azure.net/secrets/certprg15139106d/980de5bb7010436992daab74ab8fa0be","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675891,"updated":1526675891,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certprg15139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675891,"updated":1526675891}}}'} + headers: + cache-control: [no-cache] + content-length: ['1965'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:38:13 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5139106d.vault.azure.net/deletedcertificates?api-version=7.0-preview + response: + body: {string: '{"value":[{"recoveryId":"https://vault5139106d.vault.azure.net/deletedcertificates/certprg05139106d","deletedDate":1526675892,"scheduledPurgeDate":1534451892,"id":"https://vault5139106d.vault.azure.net/certificates/certprg05139106d","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675890,"updated":1526675890,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault5139106d.vault.azure.net/deletedcertificates/certprg15139106d","deletedDate":1526675893,"scheduledPurgeDate":1534451893,"id":"https://vault5139106d.vault.azure.net/certificates/certprg15139106d","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675891,"updated":1526675891,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault5139106d.vault.azure.net/deletedcertificates/certrec05139106d","deletedDate":1526675891,"scheduledPurgeDate":1534451891,"id":"https://vault5139106d.vault.azure.net/certificates/certrec05139106d","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675888,"updated":1526675888,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault5139106d.vault.azure.net/deletedcertificates/certrec15139106d","deletedDate":1526675892,"scheduledPurgeDate":1534451892,"id":"https://vault5139106d.vault.azure.net/certificates/certrec15139106d","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675889,"updated":1526675889,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['1651'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:38:43 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault5139106d.vault.azure.net/deletedcertificates/certrec05139106d/recover?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5139106d.vault.azure.net/certificates/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","kid":"https://vault5139106d.vault.azure.net/keys/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","sid":"https://vault5139106d.vault.azure.net/secrets/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675888,"updated":1526675888,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certrec05139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675888,"updated":1526675888}}}'} + headers: + cache-control: [no-cache] + content-length: ['1818'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:38:44 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault5139106d.vault.azure.net/deletedcertificates/certrec15139106d/recover?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5139106d.vault.azure.net/certificates/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","kid":"https://vault5139106d.vault.azure.net/keys/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","sid":"https://vault5139106d.vault.azure.net/secrets/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675889,"updated":1526675889,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certrec15139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675889,"updated":1526675889}}}'} + headers: + cache-control: [no-cache] + content-length: ['1818'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:38:45 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault5139106d.vault.azure.net/deletedcertificates/certprg05139106d?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + date: ['Fri, 18 May 2018 20:38:45 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 204, message: No Content} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault5139106d.vault.azure.net/deletedcertificates/certprg15139106d?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + date: ['Fri, 18 May 2018 20:38:46 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 204, message: No Content} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5139106d.vault.azure.net/deletedcertificates?api-version=7.0-preview + response: + body: {string: '{"value":[],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['28'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:39:16 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5139106d.vault.azure.net/certificates/certrec05139106d/?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5139106d.vault.azure.net/certificates/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","kid":"https://vault5139106d.vault.azure.net/keys/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","sid":"https://vault5139106d.vault.azure.net/secrets/certrec05139106d/fe0ba9dbbeca4e15b8fa871325c3454b","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675888,"updated":1526675888,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certrec05139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675888,"updated":1526675888}}}'} + headers: + cache-control: [no-cache] + content-length: ['1818'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:39:17 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5139106d.vault.azure.net/certificates/certrec15139106d/?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5139106d.vault.azure.net/certificates/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","kid":"https://vault5139106d.vault.azure.net/keys/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","sid":"https://vault5139106d.vault.azure.net/secrets/certrec15139106d/3dd1975aac1147b3ba81df9cd0cc46eb","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1526675889,"updated":1526675889,"recoveryLevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault5139106d.vault.azure.net/certificates/certrec15139106d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1526675889,"updated":1526675889}}}'} + headers: + cache-control: [no-cache] + content-length: ['1818'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 20:39:17 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_keys.test_key_backup_and_restore.yaml b/azure-keyvault/tests/recordings/test_keys.test_key_backup_and_restore.yaml new file mode 100644 index 000000000000..3e2631812586 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_keys.test_key_backup_and_restore.yaml @@ -0,0 +1,158 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault20ea0f3c.vault.azure.net/keys/keybak20ea0f3c/create?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 21:09:02 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"kty": "RSA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['14'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault20ea0f3c.vault.azure.net/keys/keybak20ea0f3c/create?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault20ea0f3c.vault.azure.net/keys/keybak20ea0f3c/fb67127bf1ed4c58a3d915fb846a0334","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"uXlFZS9_GGiUR-6i26fP5dciZIBEM-3-7BSJnUkHTmAVP6NrI4m8HwRHbESWQQWLjWMazy4Zuy2DY59_W4-ypKIuWxmICnZXPr45c7SBvvDz_BNLRBRGQj1uKSYNSy5i8zeWoRrORo67dDEX_IFY0-GO7YyhGVtWaNW0_FvYGjidzyFltaZ6ja8D2LmmZLPizoPLWhS0Q_EjAftqIG1lmp_--DLYdgOzBX5EYZ-BcSyPkU0XQ9L8hGA3b9q4pT2-WlQ46ZKnk0gcMnRKT4ks_aiS_jPfVnVa9vPRJ2MLifH4QVkgTIPawDIEwRVvj2wPOpMjzNobHJzY5YyPrA5SCQ","e":"AQAB"},"attributes":{"enabled":true,"created":1526677743,"updated":1526677743,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['650'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:09:03 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault20ea0f3c.vault.azure.net/keys/keybak20ea0f3c/backup?api-version=7.0-preview + response: + body: {string: '{"value":"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLmFJa2lDWXd2M1ZQSGE5NU1WT3lqbWJYeHRWTjVKRTQwd01ZWXdLSU9tMkNFeGwwa1JsbnFoZlltZTBOTGN6ZS1CWGxlYU9LbDF0RTNNdExNQkc5eTI1QWtWQTJCYUdpOW9GMGNHMTA3NllxdHd6NzY5dFA3QnBaS2NFZ08yYk9STEx2b3dBd0pOVkt5ejJkYzJZaVlTSHRTZ1hvbVJMZDBYSm5iTWNWRWE4VS1ERGtLbWh5OTV0ZERxNGdqSFJGbEVqdW1xXzBaS05SWERNTmZubktMRW1XR1VVRnFadlF0RUk2WnQwTUJmR3ktQTNqX2pxZXl4TGJVckZQTGE1SGtCS3pEa25URzJObktsU2E2TTZTMUtBeFpvaHhZX2NFa1NhTC11MzRuV1JQWlZ6SDJUaDBUWUlxOUZvU0RqN1RLeG5EYU5kVW9NSjYtcHVHc3NiU1hwdy5yTTZFb3NoNFc4R1VWdGNkOFNuSVFBLmxDNm5IUXp6dFpvSWRJYTVsT0JnNGZZbHBwZUl6cnpmM2o4T0lCNlh5NUI1U0Q4ZEdqWWpoVUFlT2xVWUZ6RzlLTmoxZk9DLVJ2V1dlbkt0ZEE0eHNqaWlQYjFjUFp2Rmg0X1pxaG1HRjI0Z2hBVkFBQVN6LW93TDJuZ2xQam1MaXNIT1JoMTBXVEtWaFQxS1lMRF81VWx5SDJqLW1ncGJkUVFGY3hwanpGeGV4WkRYQ3NmMkdoeXlRcVVoSUJBdGxjOFo3WHczTlFhdVdrQW4xTFBHMlRxLWJNZkNpYVBTWHlpalpPSjA1RGNya3NNVTF4T3hEMWxjRnh5ZWQyaHpjMnVNYVJCcGxrT0tTaUZRcnlURGVRNVRVMk9mQmJTSngtVjFXSkh2bmFqbm1FSHRlQ2ZDMEZtb3RGYkNHRTNwQjAxcDFkZUl1RTR4a1k3QUk3Z001U09vdXY1VnhCd29WWmU1VUxQcUhPYWt3d21XcEVkTURodmlPakhqTFd3NlVTYlo3d2hMcnJiVTdqZGk1YVpuSGVVbzhPN3pOR1dndzJkcTlIeG0zTlQ3XzdyelFlRW1JNkttZGZNMmR6Wlp6bmMxWldMSDZkS0xHWndrRHFTMGdkbXN2TVN0Y29mWC1pM180RlA2NG1Wa1RSVlhKcGJfWUhNdUNuQWxKSW9KUkNaVENuZDdFQ2VQaE5CQjNMZTVMYVdOMXVyWjlQd1NFTDltZkVfZEZYWDBRTzQyT1FRY1ZKQXNRc1YxQjJHWl9NY2FreU1fbVkzeVBzdTVvVWhsVWxXbUQ1VTAwYjhOMlNJUFNEQktNczcxMkVEYlFpdUh3dmI5VFVHc3JUS0c1ekMySWVDZkZiblVzNGpaTmpzQ01uekkwbnRITEU0WFhkV0FTUFdDS1pDclF2Vi0ycjhXc3FqaGhaRmx0U3hVSmtTdmNXemQ3NHJvaFAwZ0dvRTVsYS1mU3puSFVKTHhsZm1xU1o1c1UxQzFHaEY3UkpTZ09mdnBzc1ZLMGV4Q3hYQmt1R2U4OGJkbnM2aWlTeU9LZ01heUFIaUlobEt5RzRMREFWM1o3OHpsRFRONkJwRHhtWkp5SzBKVmZMVlE1bDFHWDhUNnVBank4aTMwQ04yZmoxR3h5aWwtcTl5NmhWVkhXaXNNdU1nb05GSG9LU3N2azFqUzNmZEZjYVlBdHVkUTBGVkZtVkxFZ1pxUGxBMm9Oa3JaOHktNVk2a3pZbWphWGZldXF2a0J5dEZEVGVtZWVVQmo1MXJKZmJoX3RmMmtSbm1YU0hldE5SUXlEak5yZ3ZxeFdMT2QtdVI3aWsxTks5VjJ4dUh5T1EzZzZla2hHRHVKbzRaeUx0Z3BLTE94TVNhRzVZRk41ZHhFR3F3QlJqTGVfeHhIZHVsZU9odlBNaDUtam9aSkk3UURRanpNNEdmV2hDR1hkUVBQcFBmU2JmeDJPRVlYa0NINmNQTzZYbHJMTnZWNDBhQmVpWDlIcFpzMXBLeXBFX2ZOZy03VTA4cWZSM1N6NXdITlNnelVuYndpMllsV1ZvWFlWNW9mSWcyOE1ZdzFvRFRVczV2UkZ1RzhLLXFteVljZ29yWTI3ZERUa3pSaV9zeEd4SHRscE5EU2E5ZEhZUHpPMnhRck9DVmlwY09TUlVBaHZEY3haS2xmWG1hM052Q1A3UVVqekN4eHg1T0ViRkpPNTA3RHEwczkyX3dnTXR4UGFiUk1UUTllT1dMVnVTaU1FRmVXaUZyQVhmNHNXR2VqZWx3UXVzVkpJem5OOUxISVlfWmdmd0NIN3NfTnBQQmszczZ4SWRSSlQyc2xXV1R2VlJjdktyMDQxSS1DdUFVUFE5eHM2RUZLQ3BpdEtnLS1TMkVYM253WktMbEVSRzdVUWFheUQ5d2huMXliNWtiSWtCc2lKODBXRFRFTmJaSXpJZFB6WVByemhRMFBtY3gwRFNvUDI2WVNDSklTUGVsSVl1bnZDdXVkRDlsWTR6WlY4czZrendkdnNPcTdxZ2JaRS1wTGVzV1lnaW5sMUtPNzhFU2ZvOWRJZ1hoUU01NlRpZTNQUFRxUUF1VzQyYjlpV29JY1VybjdaTEV4SVRKQS00akZNemNCZE1MUUctSHpfTHRKaUFYeWxSNUJLUm4zTF9Ed1ljME82Z1ZXYThNT2dsdkw0M1k2Q2Y0UkJLWXZRYk92MVVET2F2UTFrVl9YZXhlX2NuY3dGcTlWWVYxUjJFRHpvWHRDU01RSlloVG9lbVBETEt4dWsxdkRpNTBuTC03LXhEdXdWNjd3V3VXY3d1bmxlamd0ZGNrOVJvTmFmVTNuZmd3bF9YTjBrbUxQaDlnbUh5d3BTTi1iX1B6VzA5M0tDejFLRkNXQXdzRUc4ZUstQXFXdUJraW8zTExRd1lQcWQ3LUZrTDBSUlZFOGlSaVVianBuMTFNY1BIUkljdDlhNmlXSmJ4N3NQMjYtU09oWHRydnhBS19XM0tBMXM4TlVMdnY2WmJEZlp3Q2JPM1V2cGZlOW5kQzlFY3YzM2JKckxsSmNuYUg1bHRUclBoQlhLc3QyZ2JycnFMWkVvVGVYVWJRYk5WQWwzY0FpUDdsWjJ6ZnlKaEN4QkdPVDJGVTRaazljSnE5bzFYcHluN1JYZnR4R2VLazY1a1BZNzJabWc2M1NRWTZLTEQ3cHFMZy11UVo1aUJmRFRYLTNwTkVaX2pKVmRlcWJMOGh1MjQ5LUpFU0JhVEtXY1BFYkhQZTBCZUM3RTR2NENTdGNZejlzN3owOVJCRUpWbXQyX2R1RjVETU94Q2FHWkdLQkliazIta0U4Rld3RUt6Njl1Z2VoVEdYZzlYMjNRakpBR0RBSkxueUsxQXUxVzRTU3luQWFzNEFPMEhrdk1wUGVnRGZteWpnaDFCd3dfeFpMZTFFR3lVTXFzZFppZTVYeGk3cFlFQ3hpUEtsMjhFeUkwZ2hTdWFpSENwSzRZWHNnNkRKZno0TElKV3lfWDRHS0NhSjFJQVRud1RNTnY0RFcyamNNc3lFenl1VlJyZUxEYzVhZWMyN2VrbXFTREVJbVJFRTJiRjBxRkQ1d3ZWMHVOakRUMWNLbDcxU1A5RkhRQUYtaW4wUlRDTGN0T2psdENXazJHS2gzZktBY3FOd0NrX3JaR3o3TmRNWWQ4YkduR1g4cE9NUzE1UnJzRnJ1d29RVkdiUlRGRjFjczZRRjhlbWtkUmFfRmhQTG5pU1JFNzZ4Y3BEMFZKc2EySUR0WGd4ZDRMSWRCMTFOVTdiSHo3Szh3NTEyOWRES3dUMnVQUkNFaU5VazdzeEJ0ZW95RFgtbFlmRkVXQXlmdjVqcm9IY2hNMmltYml5dWFCVWF0dzJGNjhuaGRVeTdySHJZdnNwNTg0Q3d1MTBRRG1mXzFmeS1mZmlQZnVYaXFnSTBtMjljb05tZlV3cUFWRUg5QXZheFZmNUl3QjFWQS1jdHdaT0s5VF9BaFR4U2tZMWNCT3BTOGdwSFdyQ2dPdjJRc1FHeEtiZFI5SVVERF9IeWxpWDNzUHRZZVcyZEZVU0hBUmdQbV9PRm5TTnAzNWttSXpUbktBMmVEVVEwZ2JUXzhzVmt2bld3d0FURW5lYnZybUg3QmlHakRFMzZoZllpZVJWZHA1elNLb2V1eWFPNWlrNV96X29QblZjT1ZqaV84Ul9oeThyM3oxbmF4WVpoR0pjNTFoNmpfMGRfeG5OU21tOS1VUk9UNElvaU81WmhzRWtvcUdHNUl6SXFGQ2hHZjJablBtZVBvRkVNX3diY25zLUZCOTgxS1lJS0dZeWtsS2drMmVHWTBuRUZ2YnJEbFZJOElGY2p5TnpKZGlhS3pkZVVYemRZaG9QeHhfM2hSRnBVRE9KQXlHMUE3NDB1bjFWc3Rpdzhuc2VaS3JrMTRCNzB5TmY2eDl6LTFIQ0NpZVV6ZGRDdlBfZV9DZnNwOTRJa0FRTUl2cmxuY3J0U0VMaVBCVVQxNTlsbmNSWWtYYldEb1hzMXlLY1MwVmpLeDVsY212VWFjVllWVnN5S2Vzbk5tbV82OF9nTzRzb2dBSXctMlk4ajYyWXl4RUJHTzduei1nUDZZM192cWktX3A2OFRiZEJZbktKcXVaOUFLb2lJSkRaUXRYZFVfVGUtRDdvN1JpRDRWMkxpUjlMRFJtMUozS2NaMUJPWHR5RVkxT2duNF9KRjFuMkpKeHpZbkxSUURqdDlpbG9hNzhwMWZCZVQwNFdOQUVEdmJrejFNYTNIeDBYZHZGdXFsMjFIYlhrUEU5RHRuaWZ1M2FNc19lRVhZSVlsYkZuTy1OWXBoSmJfLTFNVWNxeW1hNFhUaXVaaWtNUlRpNkZJX1lmdmtyOERpRWFfTzNXeWFWYTc0YU9VeW9jcS1fekdfRUpETmFpeGpGblJINDhYWkpldy05bDFhNmRoQkdGWFRWcldIb3hqUzUySzJXZFZWTXZiZEdvV2JMTHVkYl9TSFo0SzhUbXluNVE5Tk5rOVRQQ2g4REhJcnZYTDFDWXR2MjBLcXppcnBlamFydzFobWVPQnZ3MFJyNVV1VHd0emEwNTZaTWwxNE84LUotSUNkc01xdlY1WnpqYndfLW1FMS16YUkyVk45dExtLWJZNGJfNU50OFpUdzNRVFoxSW1nTERvcE4zTDV3NDQ3aTJJTm1TWng5a29YWUhTa2tubkFPa3lBaVlxLWtmOW15c2RCcl9uX2toWDA0X2RTS2poVmIzTWFjUFFObHFwejVqbTFtRVJXY0F1b05seVJYSERYd3dOTlNlMFRtQThwOEpZQjhPWDNUNlcwMmtKZ1Nnd0ZZa3ZBSGZ4RUc1amVCaHRxZ2g4RHIwYmE5UDMwNkEzYmphWjdFRjJMdVJNRE52OXo0dkxyeHhlUTRMaUxWNVRadEJDcmd0THhtM21CcmdsSXE3MGs4Q3FZdGp2OE5XWVR2dmdlOFVreVJjaHlyUlRrb2xUVEQ0MzduTkxqVVJsWmdkTDBkWUpDbU0ybzFwZFZCeTdZRWtlc0lfcXBaaFRLWFRvaW9uSG5VT0RZT3dLZ1ZPVXVheHpIOVprWkVQTXB0bkNRMmN4OWltakpHYnZoemlyMlVVREZaMkljRU5BOF9rRmV3M3V1cGRvY0lkYXNHdmY0eUZCX3VDaXhfajVIZEpqcy1ySkZaYmw0SjNXanFEWUhKUzAxX2FBUDZaMTRaQTFadFRuLUF0VXVUaHF2UVBmUFV5UDdaOTZhR0xPQjExM1BMZm9zbEJpLXE1VmhVVndkM25CNU9SWHpIR0Y0b295RHhyUV9zLWl2T2wyTFlOR2NLdWFWVmE0UXdZTGR0cG1qZERKb0M0eURGNXQyLTVwa2xiZlNhTXZGcVE1MTJlNWM2VDdrNzZQSndrQlV6WkZkUDJ1bXd1MDJWUEJ1TTZSR3FwWVcxcFpaanpzTXg3Z1pwdF83dTBxbFNxM2NJM1hMX2lsb3dMM0RlWFlNMVRKN2pOUUREdHZxbnNPNW9FZF9iRFdNME1zbWhYUFF4OTUyMGxXZUVmU1l5VXZDM096ZWZUb2p0SVVrUXR0cms1YlZjVzF3R0NuQUc0Y21Jb256b3lSTzdVZUoxRmJtbmU3VzIxbXVwa2hOcVFNY0tJXzdsTnVqcVY1WDJHb1JUZVhMcXRsMDhUejJGWjc4U05LYU9LaHFSV1dBVzMxcmZNM1BEcURkRElyMmZ3VEpQZl9fZFJzSXNMUm9Yc2lsNGdZZ3hpRVNIcEdZYmU1cXFnWTVWcjZpUTV5V3dpLXBLbTJZamg5RE1rd2NSclhwSFY4b2RXR2ZHMW1wblZDS3VOQUxHNG9tTVFYUTA5a0JKWXhfdTZDbnA4a2NwNVYyYlBGVWtoZExCNlRMSFBLcjAyT3FLNjVqMWNwSzRKTFg4NkhmanE0a3NKajJ4aHRoQkRyWG1WR2h4SE0tb1QwQ1IzLTlkZGFWaTlERlVZVGYxRDE3S29saEdvUncyY0RWZUZzWERER09JaXZLbERoQWxPUU80M2EyMXFVXzVrR0oyWmwyaWNFbThCSDVvOXAxNXJyZmdwUTFXUXVnUkJORGpRVmlhRUQ5U3g0Slg5bzM3cy1faHNWQTE1MFNOTmtTOGRQUERndmY4eTFvWkVvNThDX2p2UW5UMXRDOHktblNubUh5ODQzaUtTUkFac3JlTlhiXzF1cDdhcW1idk5EcjZzclNBa1RKdG5KSmhHSnJOWkxzOGI2WUcwTWNTX2d0dWp3a1Z1Y2lvSTNiNGRsaHNNbHpBY1MzMUxTRW5yY3o3UzNNMFJVaEFfZDFWNXNwLWt0alZrRUh6UVk3RW1jWFZvd05zSEhNOHJaOVp6SUVYd3dyVWc0Z3Y2cTQtNmVrWGRhNl9ZaVdBdllWRlZhbl9QenhGenh3NXRvSWIyM090VVllaE1uS0xxdW51S2J0NHYxRlh3MEtQcG9lWDNKZGdGdW5xME9UMG5zZk56aHVqdTVlYmMzSS1TTWNPWXJUME0yV2JvZW1ONGZ6M0JMbnF4WVkxYVFEMTU5NGVUM2MtNFJ0anZ1U3VJM1h1UnRuWTlEWmY0WXBlLU81Q2ppNTN4UjFXd0dwYmVTdmpmN0hnZTc3emZIdHp0RWc0T09FOFhNbDFaZkw4cVhwN3R3NzVRZFpHbFVXMHAxeUNTNWpQQ0hvZVJ0NFp3d1VsNnJjUlpvWnRZQms1Um1uRzUzcVZwTGpia3B6blV6bDZ3Zy16cUp0R1l2dmJFelFlVjBEUC1kOEtyVFl4VTh4d0hLa0pJWkI0ak9OV2t1M19lRTZjTTVnbWVWdFlValVCa0lEbUh4ZHF0V0JjdVkta1Fua0tzWEJxTlpEWWlNa1psZkRocW85ZXlfU1BnbklFRVJhT3ZZb0NQLTZ3NlczNS1DbkpwcHlWZTBNc2ZyTHEzc2Jqb09ULWE0Si1pQ0hfalBYUUE4LW1tRTJyMGxJSDNrT2dQRTczajhhLXFySktVdVloYjYtTlVmcHJRZi1KUmlTRmRTVDQ4QTF6d2hsZk5hV3o1eEFqWUE2WmtGeTFSSDlOS3J4blE2SFBBOVJhbUY1UkxrYk1lbTlaUVZvTW0yckhzZG9sZkpVZmFnX09qaGh3MVlUUjdtNV9mczVjOUJFZ2I2UlNaeTM1WUQ1c2VPRGVWeVljZlA2eUJ4SFllRjEyZ1hTdkVOYWtJSXI0TkVvOWpCQ0RFUmI3WlNWX3NIUWhRN1lhNEpJM0lEckhKZXEyZzdtem1ObFNXVGtSdFY1R1luSlY5SUJhZkNHYmgwQnpUQ0EzNmpNTUVUbHJJdXpXZkxrR0w0TUhJbTNlNUFWbUJGS0hFQ3lrbkg0ZWN2cF9nXzRtcF9ZM3dEV1JhTUxwM1ozal9TM0hGLXcwanFpRU5LMmVjWGR3Ui1Ob0xsNEpYajNJWkxUZHgxVWc0UFA5aHItei1VVFdOSVN6c21nOE9TOHdjNmM0N3pjQWFNVkZ1VGw0RTVjSUh5OTB3VGNyb2NVUENvMFhJZnYwbXJIZWw2c1VQaE9hdURISG5BNTFvRUVjXzFtMUtOUmd1Z0VMS2pEZXl5c21XcWtydVZJVU5ZUnlXQlZNVjJ4T3E3c1hpankzbE9QTF9tWnNjMW1BZjNSWXJiTkZ6TlpRN0ItcW9NR2xGMDR3aDNKZzFOYVRoTVc3cXo2eHR0TVppRWlhLUw5VHU4QURrZHQ4YnRaY25NNlJkZFE2UXVOeVRxQ1BHUzR5UjBtcFJoZ0VRbkR0WHYweVZRdjRVYTNXUnFRMUE3SG91MzBRUE1ZcUtYVEN5V1Y2Ni13bUgzV0tJTHh4YkwwY21BMnFnLTVtTlU2QXlKNFRrSXE2UFBZVWR6WGRFN2N4aXh5YXJyMzJ5S1NseHRic2dzUGhxQ2Y4VGhJVTRraG8tUEw4TXpwRktjTVd6dkRYM0dRQjBFQkppRmpCeW5TcHl4SFg2STQ0Vzd6ZmNvQV9uNjdKUWRmc0FOMUNneDhrdWZmbW4zTTNKS1pINHNpbkp1ZmZUdWtlT00tN2tNZktvYUw0LTF0RDZRQXV3VVBsbFNnUWE5a1hMXzJoWHItUVMxVGpqOUc1cTB6N2FibEgxY0p2T1N1YXpwaml6cFg4bEJaNXB6WFVJWlZMaXIxaVRCS1otRWNaQlZVVEY0RHFjbFhFWENiSE9kZUxJaHA5eW9tV2EwSmdmYW1NT3pIWDBSOUVFN2tZQTg4Mkd3eVpsUUVjRmM4RlNidzlMU2xZTXRXNG8wQjh1bm1xb1IzakJ5OWducnlJWUw0ZWFmcG5HVXdqcTBuVjdVVWFIYXZoQmQ1YVFrN19fZ3RuWW1QdnZXUVFiSnlpVGdVSERuZnFIMlI2SEpCOGwzMU1PWFpPSXRabUNxS0Z6Vld6Y3lqNkhZcDJMYktkTVBOR1ozRnNENkxCYkg0dmtJcURJX0tzRGNIZzFUbThUcWR4dVdiRXdJRkoybGgtQS1EYlFwX1RLbEJ1bjNUZy1LQWhQczRfMkY0QjM5U3FPemJjNmdkUWh0ZDI0anlkRTI0TlE2SWNpbllKU3BraEY2QXA4SDQyYXJ5aHU4dE4tWkRxNGROZ2I2Rnd2YkpGS1d6dy15ejd3SU9fNWNoeHlyLVdrLVA2UFRnU3l4dWxDZFpWQmNmckFfYVU2d0R4MXlFNVpVbG9OYXdYb2U5Z0FuM1ZMVzhHeXFQc1Yxd3dFT2YtbGhvakhtbUlvUnFxbGhRdGpQOHFmamdEN1liMkFQVllEajA5RFRtTXJIUWZOT0ktZVh1YW5ONWpxeThneHdhUzMwelFMYTljNmdqQjcyeVFIRnRnZWtZTXVEYVVVTzlibl9EZ3RNZHFIVVAxcXM3dG95ZGhEOUY5dG9GWXg2Y3dmMEg0eFU1RnBGaWY3VV94TW0zQzVmQW5iU3BrWlRMYW5rekFUbHdTUkZKaHBTcEtjSGVRcER1OE5TMGliTy1KYTJ2VmpiTDZoZnVPaW8tUkJPOU9xQ29sY0lINU9yV0FkQWNUN0dCT3VTWEoxT3ZBT3Z3Ti10LW9rS0hQV3ExbVc5VFUxLUZrS3ZFZ2FCcUlLYkZBRFBBMWpRTzhKZnc3aEZDM2Q5eFl5SUhBX1NqTDZja2RyMUIyZkZQb2IyVU1kWkdYSndmY1loQVBBZ2RFVmlBS1BTV2NJYUJ3ZV92SzdtODdBblZjTjFJcXo3VVQ2ZTFKRlVtVXlxZjVZUlp4ZHBYT0l1dEVna1pheWs5eWlvNF8wUlZKdTFzSzdoMTVpTHpBTUtLNmw3a3hvcHowR3JxajgtTDNPWS1wbHRISm1GMjFXUDZwYXJzQmp1UnJmX3dyNzExaGt0eDBiZVF5d2lYQjAwLUt4WllXeTIyVVhKQlR4MHF5aXJaLVdKY1RacEdBT3hWenRJMElqc1NydUc0QUp6anN3YnNINWlDX0VXWVl2Zmc5T0tVajlkdUxmbHRUOV8yRHFvVHJPSW85N1plMDJqWGNBeTVRc2lnNU1jaFFDMk8yWWxuY1AtUXZsQTVUdWdSSWFXbGpWZVA0LTZOTFYwUG5jSEdzTDMxbV9nanhNZWJPLUVTZkdGeHhucTRsOHNHeDNZQnFJd2h6YUZleGV1X0RMUWZodFRwZFd3dkxUTEJacEdwLU9ObFhhV1NiWlIxVmEzcDJhTm1hRG9ENWNIdm9Od1NZT0otb1Nsa2Y1dVE1VndwY2FsSmtIcFRONFBEa3VpUGtOM19QTlRBdzFCcjZDTG5JeEFPOTFId2N3NUdDclptQXY2d1ZDZC1LbEZIWU5xbjVuMzhKdXdDb0ZmNFpEWF9rQjJLVDBCSElybHJ5NUdfMm9naWRxRlZsV1RESWJCaGtWeHB6Uk1JNEdISEdDbU9Od1pPRy1mbVZjMGFKUWQybWZub1JjdnZsV0hwRnhPa3NJQS5RU1AyRTNaQ0FsaDhYbU1oZ3g3cDhR"}'} + headers: + cache-control: [no-cache] + content-length: ['10692'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:09:03 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault20ea0f3c.vault.azure.net/keys/keybak20ea0f3c?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault20ea0f3c.vault.azure.net/keys/keybak20ea0f3c/fb67127bf1ed4c58a3d915fb846a0334","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"uXlFZS9_GGiUR-6i26fP5dciZIBEM-3-7BSJnUkHTmAVP6NrI4m8HwRHbESWQQWLjWMazy4Zuy2DY59_W4-ypKIuWxmICnZXPr45c7SBvvDz_BNLRBRGQj1uKSYNSy5i8zeWoRrORo67dDEX_IFY0-GO7YyhGVtWaNW0_FvYGjidzyFltaZ6ja8D2LmmZLPizoPLWhS0Q_EjAftqIG1lmp_--DLYdgOzBX5EYZ-BcSyPkU0XQ9L8hGA3b9q4pT2-WlQ46ZKnk0gcMnRKT4ks_aiS_jPfVnVa9vPRJ2MLifH4QVkgTIPawDIEwRVvj2wPOpMjzNobHJzY5YyPrA5SCQ","e":"AQAB"},"attributes":{"enabled":true,"created":1526677743,"updated":1526677743,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['650'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:09:03 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLmFJa2lDWXd2M1ZQSGE5NU1WT3lqbWJYeHRWTjVKRTQwd01ZWXdLSU9tMkNFeGwwa1JsbnFoZlltZTBOTGN6ZS1CWGxlYU9LbDF0RTNNdExNQkc5eTI1QWtWQTJCYUdpOW9GMGNHMTA3NllxdHd6NzY5dFA3QnBaS2NFZ08yYk9STEx2b3dBd0pOVkt5ejJkYzJZaVlTSHRTZ1hvbVJMZDBYSm5iTWNWRWE4VS1ERGtLbWh5OTV0ZERxNGdqSFJGbEVqdW1xXzBaS05SWERNTmZubktMRW1XR1VVRnFadlF0RUk2WnQwTUJmR3ktQTNqX2pxZXl4TGJVckZQTGE1SGtCS3pEa25URzJObktsU2E2TTZTMUtBeFpvaHhZX2NFa1NhTC11MzRuV1JQWlZ6SDJUaDBUWUlxOUZvU0RqN1RLeG5EYU5kVW9NSjYtcHVHc3NiU1hwdy5yTTZFb3NoNFc4R1VWdGNkOFNuSVFBLmxDNm5IUXp6dFpvSWRJYTVsT0JnNGZZbHBwZUl6cnpmM2o4T0lCNlh5NUI1U0Q4ZEdqWWpoVUFlT2xVWUZ6RzlLTmoxZk9DLVJ2V1dlbkt0ZEE0eHNqaWlQYjFjUFp2Rmg0X1pxaG1HRjI0Z2hBVkFBQVN6LW93TDJuZ2xQam1MaXNIT1JoMTBXVEtWaFQxS1lMRF81VWx5SDJqLW1ncGJkUVFGY3hwanpGeGV4WkRYQ3NmMkdoeXlRcVVoSUJBdGxjOFo3WHczTlFhdVdrQW4xTFBHMlRxLWJNZkNpYVBTWHlpalpPSjA1RGNya3NNVTF4T3hEMWxjRnh5ZWQyaHpjMnVNYVJCcGxrT0tTaUZRcnlURGVRNVRVMk9mQmJTSngtVjFXSkh2bmFqbm1FSHRlQ2ZDMEZtb3RGYkNHRTNwQjAxcDFkZUl1RTR4a1k3QUk3Z001U09vdXY1VnhCd29WWmU1VUxQcUhPYWt3d21XcEVkTURodmlPakhqTFd3NlVTYlo3d2hMcnJiVTdqZGk1YVpuSGVVbzhPN3pOR1dndzJkcTlIeG0zTlQ3XzdyelFlRW1JNkttZGZNMmR6Wlp6bmMxWldMSDZkS0xHWndrRHFTMGdkbXN2TVN0Y29mWC1pM180RlA2NG1Wa1RSVlhKcGJfWUhNdUNuQWxKSW9KUkNaVENuZDdFQ2VQaE5CQjNMZTVMYVdOMXVyWjlQd1NFTDltZkVfZEZYWDBRTzQyT1FRY1ZKQXNRc1YxQjJHWl9NY2FreU1fbVkzeVBzdTVvVWhsVWxXbUQ1VTAwYjhOMlNJUFNEQktNczcxMkVEYlFpdUh3dmI5VFVHc3JUS0c1ekMySWVDZkZiblVzNGpaTmpzQ01uekkwbnRITEU0WFhkV0FTUFdDS1pDclF2Vi0ycjhXc3FqaGhaRmx0U3hVSmtTdmNXemQ3NHJvaFAwZ0dvRTVsYS1mU3puSFVKTHhsZm1xU1o1c1UxQzFHaEY3UkpTZ09mdnBzc1ZLMGV4Q3hYQmt1R2U4OGJkbnM2aWlTeU9LZ01heUFIaUlobEt5RzRMREFWM1o3OHpsRFRONkJwRHhtWkp5SzBKVmZMVlE1bDFHWDhUNnVBank4aTMwQ04yZmoxR3h5aWwtcTl5NmhWVkhXaXNNdU1nb05GSG9LU3N2azFqUzNmZEZjYVlBdHVkUTBGVkZtVkxFZ1pxUGxBMm9Oa3JaOHktNVk2a3pZbWphWGZldXF2a0J5dEZEVGVtZWVVQmo1MXJKZmJoX3RmMmtSbm1YU0hldE5SUXlEak5yZ3ZxeFdMT2QtdVI3aWsxTks5VjJ4dUh5T1EzZzZla2hHRHVKbzRaeUx0Z3BLTE94TVNhRzVZRk41ZHhFR3F3QlJqTGVfeHhIZHVsZU9odlBNaDUtam9aSkk3UURRanpNNEdmV2hDR1hkUVBQcFBmU2JmeDJPRVlYa0NINmNQTzZYbHJMTnZWNDBhQmVpWDlIcFpzMXBLeXBFX2ZOZy03VTA4cWZSM1N6NXdITlNnelVuYndpMllsV1ZvWFlWNW9mSWcyOE1ZdzFvRFRVczV2UkZ1RzhLLXFteVljZ29yWTI3ZERUa3pSaV9zeEd4SHRscE5EU2E5ZEhZUHpPMnhRck9DVmlwY09TUlVBaHZEY3haS2xmWG1hM052Q1A3UVVqekN4eHg1T0ViRkpPNTA3RHEwczkyX3dnTXR4UGFiUk1UUTllT1dMVnVTaU1FRmVXaUZyQVhmNHNXR2VqZWx3UXVzVkpJem5OOUxISVlfWmdmd0NIN3NfTnBQQmszczZ4SWRSSlQyc2xXV1R2VlJjdktyMDQxSS1DdUFVUFE5eHM2RUZLQ3BpdEtnLS1TMkVYM253WktMbEVSRzdVUWFheUQ5d2huMXliNWtiSWtCc2lKODBXRFRFTmJaSXpJZFB6WVByemhRMFBtY3gwRFNvUDI2WVNDSklTUGVsSVl1bnZDdXVkRDlsWTR6WlY4czZrendkdnNPcTdxZ2JaRS1wTGVzV1lnaW5sMUtPNzhFU2ZvOWRJZ1hoUU01NlRpZTNQUFRxUUF1VzQyYjlpV29JY1VybjdaTEV4SVRKQS00akZNemNCZE1MUUctSHpfTHRKaUFYeWxSNUJLUm4zTF9Ed1ljME82Z1ZXYThNT2dsdkw0M1k2Q2Y0UkJLWXZRYk92MVVET2F2UTFrVl9YZXhlX2NuY3dGcTlWWVYxUjJFRHpvWHRDU01RSlloVG9lbVBETEt4dWsxdkRpNTBuTC03LXhEdXdWNjd3V3VXY3d1bmxlamd0ZGNrOVJvTmFmVTNuZmd3bF9YTjBrbUxQaDlnbUh5d3BTTi1iX1B6VzA5M0tDejFLRkNXQXdzRUc4ZUstQXFXdUJraW8zTExRd1lQcWQ3LUZrTDBSUlZFOGlSaVVianBuMTFNY1BIUkljdDlhNmlXSmJ4N3NQMjYtU09oWHRydnhBS19XM0tBMXM4TlVMdnY2WmJEZlp3Q2JPM1V2cGZlOW5kQzlFY3YzM2JKckxsSmNuYUg1bHRUclBoQlhLc3QyZ2JycnFMWkVvVGVYVWJRYk5WQWwzY0FpUDdsWjJ6ZnlKaEN4QkdPVDJGVTRaazljSnE5bzFYcHluN1JYZnR4R2VLazY1a1BZNzJabWc2M1NRWTZLTEQ3cHFMZy11UVo1aUJmRFRYLTNwTkVaX2pKVmRlcWJMOGh1MjQ5LUpFU0JhVEtXY1BFYkhQZTBCZUM3RTR2NENTdGNZejlzN3owOVJCRUpWbXQyX2R1RjVETU94Q2FHWkdLQkliazIta0U4Rld3RUt6Njl1Z2VoVEdYZzlYMjNRakpBR0RBSkxueUsxQXUxVzRTU3luQWFzNEFPMEhrdk1wUGVnRGZteWpnaDFCd3dfeFpMZTFFR3lVTXFzZFppZTVYeGk3cFlFQ3hpUEtsMjhFeUkwZ2hTdWFpSENwSzRZWHNnNkRKZno0TElKV3lfWDRHS0NhSjFJQVRud1RNTnY0RFcyamNNc3lFenl1VlJyZUxEYzVhZWMyN2VrbXFTREVJbVJFRTJiRjBxRkQ1d3ZWMHVOakRUMWNLbDcxU1A5RkhRQUYtaW4wUlRDTGN0T2psdENXazJHS2gzZktBY3FOd0NrX3JaR3o3TmRNWWQ4YkduR1g4cE9NUzE1UnJzRnJ1d29RVkdiUlRGRjFjczZRRjhlbWtkUmFfRmhQTG5pU1JFNzZ4Y3BEMFZKc2EySUR0WGd4ZDRMSWRCMTFOVTdiSHo3Szh3NTEyOWRES3dUMnVQUkNFaU5VazdzeEJ0ZW95RFgtbFlmRkVXQXlmdjVqcm9IY2hNMmltYml5dWFCVWF0dzJGNjhuaGRVeTdySHJZdnNwNTg0Q3d1MTBRRG1mXzFmeS1mZmlQZnVYaXFnSTBtMjljb05tZlV3cUFWRUg5QXZheFZmNUl3QjFWQS1jdHdaT0s5VF9BaFR4U2tZMWNCT3BTOGdwSFdyQ2dPdjJRc1FHeEtiZFI5SVVERF9IeWxpWDNzUHRZZVcyZEZVU0hBUmdQbV9PRm5TTnAzNWttSXpUbktBMmVEVVEwZ2JUXzhzVmt2bld3d0FURW5lYnZybUg3QmlHakRFMzZoZllpZVJWZHA1elNLb2V1eWFPNWlrNV96X29QblZjT1ZqaV84Ul9oeThyM3oxbmF4WVpoR0pjNTFoNmpfMGRfeG5OU21tOS1VUk9UNElvaU81WmhzRWtvcUdHNUl6SXFGQ2hHZjJablBtZVBvRkVNX3diY25zLUZCOTgxS1lJS0dZeWtsS2drMmVHWTBuRUZ2YnJEbFZJOElGY2p5TnpKZGlhS3pkZVVYemRZaG9QeHhfM2hSRnBVRE9KQXlHMUE3NDB1bjFWc3Rpdzhuc2VaS3JrMTRCNzB5TmY2eDl6LTFIQ0NpZVV6ZGRDdlBfZV9DZnNwOTRJa0FRTUl2cmxuY3J0U0VMaVBCVVQxNTlsbmNSWWtYYldEb1hzMXlLY1MwVmpLeDVsY212VWFjVllWVnN5S2Vzbk5tbV82OF9nTzRzb2dBSXctMlk4ajYyWXl4RUJHTzduei1nUDZZM192cWktX3A2OFRiZEJZbktKcXVaOUFLb2lJSkRaUXRYZFVfVGUtRDdvN1JpRDRWMkxpUjlMRFJtMUozS2NaMUJPWHR5RVkxT2duNF9KRjFuMkpKeHpZbkxSUURqdDlpbG9hNzhwMWZCZVQwNFdOQUVEdmJrejFNYTNIeDBYZHZGdXFsMjFIYlhrUEU5RHRuaWZ1M2FNc19lRVhZSVlsYkZuTy1OWXBoSmJfLTFNVWNxeW1hNFhUaXVaaWtNUlRpNkZJX1lmdmtyOERpRWFfTzNXeWFWYTc0YU9VeW9jcS1fekdfRUpETmFpeGpGblJINDhYWkpldy05bDFhNmRoQkdGWFRWcldIb3hqUzUySzJXZFZWTXZiZEdvV2JMTHVkYl9TSFo0SzhUbXluNVE5Tk5rOVRQQ2g4REhJcnZYTDFDWXR2MjBLcXppcnBlamFydzFobWVPQnZ3MFJyNVV1VHd0emEwNTZaTWwxNE84LUotSUNkc01xdlY1WnpqYndfLW1FMS16YUkyVk45dExtLWJZNGJfNU50OFpUdzNRVFoxSW1nTERvcE4zTDV3NDQ3aTJJTm1TWng5a29YWUhTa2tubkFPa3lBaVlxLWtmOW15c2RCcl9uX2toWDA0X2RTS2poVmIzTWFjUFFObHFwejVqbTFtRVJXY0F1b05seVJYSERYd3dOTlNlMFRtQThwOEpZQjhPWDNUNlcwMmtKZ1Nnd0ZZa3ZBSGZ4RUc1amVCaHRxZ2g4RHIwYmE5UDMwNkEzYmphWjdFRjJMdVJNRE52OXo0dkxyeHhlUTRMaUxWNVRadEJDcmd0THhtM21CcmdsSXE3MGs4Q3FZdGp2OE5XWVR2dmdlOFVreVJjaHlyUlRrb2xUVEQ0MzduTkxqVVJsWmdkTDBkWUpDbU0ybzFwZFZCeTdZRWtlc0lfcXBaaFRLWFRvaW9uSG5VT0RZT3dLZ1ZPVXVheHpIOVprWkVQTXB0bkNRMmN4OWltakpHYnZoemlyMlVVREZaMkljRU5BOF9rRmV3M3V1cGRvY0lkYXNHdmY0eUZCX3VDaXhfajVIZEpqcy1ySkZaYmw0SjNXanFEWUhKUzAxX2FBUDZaMTRaQTFadFRuLUF0VXVUaHF2UVBmUFV5UDdaOTZhR0xPQjExM1BMZm9zbEJpLXE1VmhVVndkM25CNU9SWHpIR0Y0b295RHhyUV9zLWl2T2wyTFlOR2NLdWFWVmE0UXdZTGR0cG1qZERKb0M0eURGNXQyLTVwa2xiZlNhTXZGcVE1MTJlNWM2VDdrNzZQSndrQlV6WkZkUDJ1bXd1MDJWUEJ1TTZSR3FwWVcxcFpaanpzTXg3Z1pwdF83dTBxbFNxM2NJM1hMX2lsb3dMM0RlWFlNMVRKN2pOUUREdHZxbnNPNW9FZF9iRFdNME1zbWhYUFF4OTUyMGxXZUVmU1l5VXZDM096ZWZUb2p0SVVrUXR0cms1YlZjVzF3R0NuQUc0Y21Jb256b3lSTzdVZUoxRmJtbmU3VzIxbXVwa2hOcVFNY0tJXzdsTnVqcVY1WDJHb1JUZVhMcXRsMDhUejJGWjc4U05LYU9LaHFSV1dBVzMxcmZNM1BEcURkRElyMmZ3VEpQZl9fZFJzSXNMUm9Yc2lsNGdZZ3hpRVNIcEdZYmU1cXFnWTVWcjZpUTV5V3dpLXBLbTJZamg5RE1rd2NSclhwSFY4b2RXR2ZHMW1wblZDS3VOQUxHNG9tTVFYUTA5a0JKWXhfdTZDbnA4a2NwNVYyYlBGVWtoZExCNlRMSFBLcjAyT3FLNjVqMWNwSzRKTFg4NkhmanE0a3NKajJ4aHRoQkRyWG1WR2h4SE0tb1QwQ1IzLTlkZGFWaTlERlVZVGYxRDE3S29saEdvUncyY0RWZUZzWERER09JaXZLbERoQWxPUU80M2EyMXFVXzVrR0oyWmwyaWNFbThCSDVvOXAxNXJyZmdwUTFXUXVnUkJORGpRVmlhRUQ5U3g0Slg5bzM3cy1faHNWQTE1MFNOTmtTOGRQUERndmY4eTFvWkVvNThDX2p2UW5UMXRDOHktblNubUh5ODQzaUtTUkFac3JlTlhiXzF1cDdhcW1idk5EcjZzclNBa1RKdG5KSmhHSnJOWkxzOGI2WUcwTWNTX2d0dWp3a1Z1Y2lvSTNiNGRsaHNNbHpBY1MzMUxTRW5yY3o3UzNNMFJVaEFfZDFWNXNwLWt0alZrRUh6UVk3RW1jWFZvd05zSEhNOHJaOVp6SUVYd3dyVWc0Z3Y2cTQtNmVrWGRhNl9ZaVdBdllWRlZhbl9QenhGenh3NXRvSWIyM090VVllaE1uS0xxdW51S2J0NHYxRlh3MEtQcG9lWDNKZGdGdW5xME9UMG5zZk56aHVqdTVlYmMzSS1TTWNPWXJUME0yV2JvZW1ONGZ6M0JMbnF4WVkxYVFEMTU5NGVUM2MtNFJ0anZ1U3VJM1h1UnRuWTlEWmY0WXBlLU81Q2ppNTN4UjFXd0dwYmVTdmpmN0hnZTc3emZIdHp0RWc0T09FOFhNbDFaZkw4cVhwN3R3NzVRZFpHbFVXMHAxeUNTNWpQQ0hvZVJ0NFp3d1VsNnJjUlpvWnRZQms1Um1uRzUzcVZwTGpia3B6blV6bDZ3Zy16cUp0R1l2dmJFelFlVjBEUC1kOEtyVFl4VTh4d0hLa0pJWkI0ak9OV2t1M19lRTZjTTVnbWVWdFlValVCa0lEbUh4ZHF0V0JjdVkta1Fua0tzWEJxTlpEWWlNa1psZkRocW85ZXlfU1BnbklFRVJhT3ZZb0NQLTZ3NlczNS1DbkpwcHlWZTBNc2ZyTHEzc2Jqb09ULWE0Si1pQ0hfalBYUUE4LW1tRTJyMGxJSDNrT2dQRTczajhhLXFySktVdVloYjYtTlVmcHJRZi1KUmlTRmRTVDQ4QTF6d2hsZk5hV3o1eEFqWUE2WmtGeTFSSDlOS3J4blE2SFBBOVJhbUY1UkxrYk1lbTlaUVZvTW0yckhzZG9sZkpVZmFnX09qaGh3MVlUUjdtNV9mczVjOUJFZ2I2UlNaeTM1WUQ1c2VPRGVWeVljZlA2eUJ4SFllRjEyZ1hTdkVOYWtJSXI0TkVvOWpCQ0RFUmI3WlNWX3NIUWhRN1lhNEpJM0lEckhKZXEyZzdtem1ObFNXVGtSdFY1R1luSlY5SUJhZkNHYmgwQnpUQ0EzNmpNTUVUbHJJdXpXZkxrR0w0TUhJbTNlNUFWbUJGS0hFQ3lrbkg0ZWN2cF9nXzRtcF9ZM3dEV1JhTUxwM1ozal9TM0hGLXcwanFpRU5LMmVjWGR3Ui1Ob0xsNEpYajNJWkxUZHgxVWc0UFA5aHItei1VVFdOSVN6c21nOE9TOHdjNmM0N3pjQWFNVkZ1VGw0RTVjSUh5OTB3VGNyb2NVUENvMFhJZnYwbXJIZWw2c1VQaE9hdURISG5BNTFvRUVjXzFtMUtOUmd1Z0VMS2pEZXl5c21XcWtydVZJVU5ZUnlXQlZNVjJ4T3E3c1hpankzbE9QTF9tWnNjMW1BZjNSWXJiTkZ6TlpRN0ItcW9NR2xGMDR3aDNKZzFOYVRoTVc3cXo2eHR0TVppRWlhLUw5VHU4QURrZHQ4YnRaY25NNlJkZFE2UXVOeVRxQ1BHUzR5UjBtcFJoZ0VRbkR0WHYweVZRdjRVYTNXUnFRMUE3SG91MzBRUE1ZcUtYVEN5V1Y2Ni13bUgzV0tJTHh4YkwwY21BMnFnLTVtTlU2QXlKNFRrSXE2UFBZVWR6WGRFN2N4aXh5YXJyMzJ5S1NseHRic2dzUGhxQ2Y4VGhJVTRraG8tUEw4TXpwRktjTVd6dkRYM0dRQjBFQkppRmpCeW5TcHl4SFg2STQ0Vzd6ZmNvQV9uNjdKUWRmc0FOMUNneDhrdWZmbW4zTTNKS1pINHNpbkp1ZmZUdWtlT00tN2tNZktvYUw0LTF0RDZRQXV3VVBsbFNnUWE5a1hMXzJoWHItUVMxVGpqOUc1cTB6N2FibEgxY0p2T1N1YXpwaml6cFg4bEJaNXB6WFVJWlZMaXIxaVRCS1otRWNaQlZVVEY0RHFjbFhFWENiSE9kZUxJaHA5eW9tV2EwSmdmYW1NT3pIWDBSOUVFN2tZQTg4Mkd3eVpsUUVjRmM4RlNidzlMU2xZTXRXNG8wQjh1bm1xb1IzakJ5OWducnlJWUw0ZWFmcG5HVXdqcTBuVjdVVWFIYXZoQmQ1YVFrN19fZ3RuWW1QdnZXUVFiSnlpVGdVSERuZnFIMlI2SEpCOGwzMU1PWFpPSXRabUNxS0Z6Vld6Y3lqNkhZcDJMYktkTVBOR1ozRnNENkxCYkg0dmtJcURJX0tzRGNIZzFUbThUcWR4dVdiRXdJRkoybGgtQS1EYlFwX1RLbEJ1bjNUZy1LQWhQczRfMkY0QjM5U3FPemJjNmdkUWh0ZDI0anlkRTI0TlE2SWNpbllKU3BraEY2QXA4SDQyYXJ5aHU4dE4tWkRxNGROZ2I2Rnd2YkpGS1d6dy15ejd3SU9fNWNoeHlyLVdrLVA2UFRnU3l4dWxDZFpWQmNmckFfYVU2d0R4MXlFNVpVbG9OYXdYb2U5Z0FuM1ZMVzhHeXFQc1Yxd3dFT2YtbGhvakhtbUlvUnFxbGhRdGpQOHFmamdEN1liMkFQVllEajA5RFRtTXJIUWZOT0ktZVh1YW5ONWpxeThneHdhUzMwelFMYTljNmdqQjcyeVFIRnRnZWtZTXVEYVVVTzlibl9EZ3RNZHFIVVAxcXM3dG95ZGhEOUY5dG9GWXg2Y3dmMEg0eFU1RnBGaWY3VV94TW0zQzVmQW5iU3BrWlRMYW5rekFUbHdTUkZKaHBTcEtjSGVRcER1OE5TMGliTy1KYTJ2VmpiTDZoZnVPaW8tUkJPOU9xQ29sY0lINU9yV0FkQWNUN0dCT3VTWEoxT3ZBT3Z3Ti10LW9rS0hQV3ExbVc5VFUxLUZrS3ZFZ2FCcUlLYkZBRFBBMWpRTzhKZnc3aEZDM2Q5eFl5SUhBX1NqTDZja2RyMUIyZkZQb2IyVU1kWkdYSndmY1loQVBBZ2RFVmlBS1BTV2NJYUJ3ZV92SzdtODdBblZjTjFJcXo3VVQ2ZTFKRlVtVXlxZjVZUlp4ZHBYT0l1dEVna1pheWs5eWlvNF8wUlZKdTFzSzdoMTVpTHpBTUtLNmw3a3hvcHowR3JxajgtTDNPWS1wbHRISm1GMjFXUDZwYXJzQmp1UnJmX3dyNzExaGt0eDBiZVF5d2lYQjAwLUt4WllXeTIyVVhKQlR4MHF5aXJaLVdKY1RacEdBT3hWenRJMElqc1NydUc0QUp6anN3YnNINWlDX0VXWVl2Zmc5T0tVajlkdUxmbHRUOV8yRHFvVHJPSW85N1plMDJqWGNBeTVRc2lnNU1jaFFDMk8yWWxuY1AtUXZsQTVUdWdSSWFXbGpWZVA0LTZOTFYwUG5jSEdzTDMxbV9nanhNZWJPLUVTZkdGeHhucTRsOHNHeDNZQnFJd2h6YUZleGV1X0RMUWZodFRwZFd3dkxUTEJacEdwLU9ObFhhV1NiWlIxVmEzcDJhTm1hRG9ENWNIdm9Od1NZT0otb1Nsa2Y1dVE1VndwY2FsSmtIcFRONFBEa3VpUGtOM19QTlRBdzFCcjZDTG5JeEFPOTFId2N3NUdDclptQXY2d1ZDZC1LbEZIWU5xbjVuMzhKdXdDb0ZmNFpEWF9rQjJLVDBCSElybHJ5NUdfMm9naWRxRlZsV1RESWJCaGtWeHB6Uk1JNEdISEdDbU9Od1pPRy1mbVZjMGFKUWQybWZub1JjdnZsV0hwRnhPa3NJQS5RU1AyRTNaQ0FsaDhYbU1oZ3g3cDhR"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['10693'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault20ea0f3c.vault.azure.net/keys/restore?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault20ea0f3c.vault.azure.net/keys/keybak20ea0f3c/fb67127bf1ed4c58a3d915fb846a0334","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"uXlFZS9_GGiUR-6i26fP5dciZIBEM-3-7BSJnUkHTmAVP6NrI4m8HwRHbESWQQWLjWMazy4Zuy2DY59_W4-ypKIuWxmICnZXPr45c7SBvvDz_BNLRBRGQj1uKSYNSy5i8zeWoRrORo67dDEX_IFY0-GO7YyhGVtWaNW0_FvYGjidzyFltaZ6ja8D2LmmZLPizoPLWhS0Q_EjAftqIG1lmp_--DLYdgOzBX5EYZ-BcSyPkU0XQ9L8hGA3b9q4pT2-WlQ46ZKnk0gcMnRKT4ks_aiS_jPfVnVa9vPRJ2MLifH4QVkgTIPawDIEwRVvj2wPOpMjzNobHJzY5YyPrA5SCQ","e":"AQAB"},"attributes":{"enabled":true,"created":1526677743,"updated":1526677743,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['650'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:09:04 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_keys.test_key_crud_operations.yaml b/azure-keyvault/tests/recordings/test_keys.test_key_crud_operations.yaml new file mode 100644 index 000000000000..4a8d9eee2cbb --- /dev/null +++ b/azure-keyvault/tests/recordings/test_keys.test_key_crud_operations.yaml @@ -0,0 +1,253 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/create?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 21:09:45 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"kty": "RSA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['14'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/create?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/4c6a304efaef4165a93d649bc971557a","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"5v8dxtWmL0N_ylXly6G6sN5UpYbUaa27cPp9LNTshDvJNZNDY549rbhrG8iJE6qvjFFngkRijCtuNuwyPMNjW_1bQ1CF6yD7dWU8jL8M7M1hbNmqdHTAYEKf1GPmd-RGR3ZBWWZQ1-A0C5mSwoCDbtYQxXfBxm4KLXGRyGwMi0EwXESy2ThAQ6jsq65BXPjAR5BBgxU8nvZuTWXg50MvjB6j1KrPXmkpEBgTg_Dnuzty0R9C1nssMwGFL_Mu0J0vTsFnbWNnJnssHdBH-rcpZ3KVlL6L-rmPpf-IhpJyYN4DziLQouuQXUX0pfDPW-4abwtoUspmquz8fVqXk51dtw","e":"AQAB"},"attributes":{"enabled":true,"created":1526677786,"updated":1526677786,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['647'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:09:46 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/4c6a304efaef4165a93d649bc971557a","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"5v8dxtWmL0N_ylXly6G6sN5UpYbUaa27cPp9LNTshDvJNZNDY549rbhrG8iJE6qvjFFngkRijCtuNuwyPMNjW_1bQ1CF6yD7dWU8jL8M7M1hbNmqdHTAYEKf1GPmd-RGR3ZBWWZQ1-A0C5mSwoCDbtYQxXfBxm4KLXGRyGwMi0EwXESy2ThAQ6jsq65BXPjAR5BBgxU8nvZuTWXg50MvjB6j1KrPXmkpEBgTg_Dnuzty0R9C1nssMwGFL_Mu0J0vTsFnbWNnJnssHdBH-rcpZ3KVlL6L-rmPpf-IhpJyYN4DziLQouuQXUX0pfDPW-4abwtoUspmquz8fVqXk51dtw","e":"AQAB"},"attributes":{"enabled":true,"created":1526677786,"updated":1526677786,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['647'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:09:46 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/4c6a304efaef4165a93d649bc971557a?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/4c6a304efaef4165a93d649bc971557a","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"5v8dxtWmL0N_ylXly6G6sN5UpYbUaa27cPp9LNTshDvJNZNDY549rbhrG8iJE6qvjFFngkRijCtuNuwyPMNjW_1bQ1CF6yD7dWU8jL8M7M1hbNmqdHTAYEKf1GPmd-RGR3ZBWWZQ1-A0C5mSwoCDbtYQxXfBxm4KLXGRyGwMi0EwXESy2ThAQ6jsq65BXPjAR5BBgxU8nvZuTWXg50MvjB6j1KrPXmkpEBgTg_Dnuzty0R9C1nssMwGFL_Mu0J0vTsFnbWNnJnssHdBH-rcpZ3KVlL6L-rmPpf-IhpJyYN4DziLQouuQXUX0pfDPW-4abwtoUspmquz8fVqXk51dtw","e":"AQAB"},"attributes":{"enabled":true,"created":1526677786,"updated":1526677786,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['647'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:09:46 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"key_ops": ["encrypt", "decrypt"], "attributes": {"enabled": true, "exp": + 2527401600}, "tags": {"foo": "updated tag"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['119'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PATCH + uri: https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/4c6a304efaef4165a93d649bc971557a","kty":"RSA","key_ops":["encrypt","decrypt"],"n":"5v8dxtWmL0N_ylXly6G6sN5UpYbUaa27cPp9LNTshDvJNZNDY549rbhrG8iJE6qvjFFngkRijCtuNuwyPMNjW_1bQ1CF6yD7dWU8jL8M7M1hbNmqdHTAYEKf1GPmd-RGR3ZBWWZQ1-A0C5mSwoCDbtYQxXfBxm4KLXGRyGwMi0EwXESy2ThAQ6jsq65BXPjAR5BBgxU8nvZuTWXg50MvjB6j1KrPXmkpEBgTg_Dnuzty0R9C1nssMwGFL_Mu0J0vTsFnbWNnJnssHdBH-rcpZ3KVlL6L-rmPpf-IhpJyYN4DziLQouuQXUX0pfDPW-4abwtoUspmquz8fVqXk51dtw","e":"AQAB"},"attributes":{"enabled":true,"exp":2527401600,"created":1526677786,"updated":1526677788,"recoveryLevel":"Purgeable"},"tags":{"foo":"updated + tag"}}'} + headers: + cache-control: [no-cache] + content-length: ['655'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:09:47 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"key_ops": ["encrypt", "decrypt"], "attributes": {"enabled": true, "exp": + 2527401600}, "tags": {"foo": "updated tag"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['119'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PATCH + uri: https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/4c6a304efaef4165a93d649bc971557a?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/4c6a304efaef4165a93d649bc971557a","kty":"RSA","key_ops":["encrypt","decrypt"],"n":"5v8dxtWmL0N_ylXly6G6sN5UpYbUaa27cPp9LNTshDvJNZNDY549rbhrG8iJE6qvjFFngkRijCtuNuwyPMNjW_1bQ1CF6yD7dWU8jL8M7M1hbNmqdHTAYEKf1GPmd-RGR3ZBWWZQ1-A0C5mSwoCDbtYQxXfBxm4KLXGRyGwMi0EwXESy2ThAQ6jsq65BXPjAR5BBgxU8nvZuTWXg50MvjB6j1KrPXmkpEBgTg_Dnuzty0R9C1nssMwGFL_Mu0J0vTsFnbWNnJnssHdBH-rcpZ3KVlL6L-rmPpf-IhpJyYN4DziLQouuQXUX0pfDPW-4abwtoUspmquz8fVqXk51dtw","e":"AQAB"},"attributes":{"enabled":true,"exp":2527401600,"created":1526677786,"updated":1526677788,"recoveryLevel":"Purgeable"},"tags":{"foo":"updated + tag"}}'} + headers: + cache-control: [no-cache] + content-length: ['655'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:09:48 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vaultf6150e22.vault.azure.net/keys/keyf6150e22?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/4c6a304efaef4165a93d649bc971557a","kty":"RSA","key_ops":["encrypt","decrypt"],"n":"5v8dxtWmL0N_ylXly6G6sN5UpYbUaa27cPp9LNTshDvJNZNDY549rbhrG8iJE6qvjFFngkRijCtuNuwyPMNjW_1bQ1CF6yD7dWU8jL8M7M1hbNmqdHTAYEKf1GPmd-RGR3ZBWWZQ1-A0C5mSwoCDbtYQxXfBxm4KLXGRyGwMi0EwXESy2ThAQ6jsq65BXPjAR5BBgxU8nvZuTWXg50MvjB6j1KrPXmkpEBgTg_Dnuzty0R9C1nssMwGFL_Mu0J0vTsFnbWNnJnssHdBH-rcpZ3KVlL6L-rmPpf-IhpJyYN4DziLQouuQXUX0pfDPW-4abwtoUspmquz8fVqXk51dtw","e":"AQAB"},"attributes":{"enabled":true,"exp":2527401600,"created":1526677786,"updated":1526677788,"recoveryLevel":"Purgeable"},"tags":{"foo":"updated + tag"}}'} + headers: + cache-control: [no-cache] + content-length: ['655'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:09:48 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultf6150e22.vault.azure.net/keys/keyf6150e22/?api-version=7.0-preview + response: + body: {string: '{"error":{"code":"KeyNotFound","message":"Key not found: keyf6150e22"}}'} + headers: + cache-control: [no-cache] + content-length: ['71'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:09:48 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 404, message: Not Found} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_keys.test_key_encrypt_and_decrypt.yaml b/azure-keyvault/tests/recordings/test_keys.test_key_encrypt_and_decrypt.yaml new file mode 100644 index 000000000000..86b0debb1c48 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_keys.test_key_encrypt_and_decrypt.yaml @@ -0,0 +1,196 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault32530fc2.vault.azure.net/keys/keycrypt32530fc2?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 21:10:29 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"Hsm": false, "key": {"kty": "RSA", "key_ops": ["encrypt", "decrypt", + "sign", "verify", "wrapKey", "unwrapKey"], "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", + "e": "AQAB", "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", + "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", + "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", + "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH", + "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", + "q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['1738'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault32530fc2.vault.azure.net/keys/keycrypt32530fc2?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault32530fc2.vault.azure.net/keys/keycrypt32530fc2/51800895e2e14eb796a9d436a17ebe39","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU","e":"AQAB"},"attributes":{"enabled":true,"created":1526677831,"updated":1526677831,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['653'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:10:30 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RSA-OAEP", "value": "NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['299'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault32530fc2.vault.azure.net/keys/keycrypt32530fc2/encrypt?api-version=7.0-preview + response: + body: {string: '{"kid":"https://vault32530fc2.vault.azure.net/keys/keycrypt32530fc2/51800895e2e14eb796a9d436a17ebe39","value":"DXI9FtwRP3OHvGQjL3e29s0XBV5n5lS-H7fbojRFpH5V51o9zwxUuvv6zqd7gvZxHamXq6oijMpEhVdQHbZ_c0a6FIX39BGDVR1DM2E5PEKby5jlDH7v3vvIpV0sPS1gXTQZlllubltz4w3qa-sGwSHPeHwEAfCrHKNbIB2wAvS4rv-plFkorVHeJxPOxxGMhCxI4nWMeP8dDT_4ZbFRZVuuVMm8HHzIElb4aEVc8D_h2sZnCobZ9bGUdxuToci9STFmsv-5pQw_hjrSc73iE3O_C3J0lOoTBCUMT8xz2s0ooo9Dd_qCcUAJZNEZqpmsRPFOde0-uZyG2HJu1qgTAA"}'} + headers: + cache-control: [no-cache] + content-length: ['455'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:10:31 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RSA-OAEP", "value": "DXI9FtwRP3OHvGQjL3e29s0XBV5n5lS-H7fbojRFpH5V51o9zwxUuvv6zqd7gvZxHamXq6oijMpEhVdQHbZ_c0a6FIX39BGDVR1DM2E5PEKby5jlDH7v3vvIpV0sPS1gXTQZlllubltz4w3qa-sGwSHPeHwEAfCrHKNbIB2wAvS4rv-plFkorVHeJxPOxxGMhCxI4nWMeP8dDT_4ZbFRZVuuVMm8HHzIElb4aEVc8D_h2sZnCobZ9bGUdxuToci9STFmsv-5pQw_hjrSc73iE3O_C3J0lOoTBCUMT8xz2s0ooo9Dd_qCcUAJZNEZqpmsRPFOde0-uZyG2HJu1qgTAA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['374'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault32530fc2.vault.azure.net/keys/keycrypt32530fc2/decrypt?api-version=7.0-preview + response: + body: {string: '{"kid":"https://vault32530fc2.vault.azure.net/keys/keycrypt32530fc2/51800895e2e14eb796a9d436a17ebe39","value":"NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ"}'} + headers: + cache-control: [no-cache] + content-length: ['380'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:10:32 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RSA-OAEP", "value": "NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['299'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault32530fc2.vault.azure.net/keys/keycrypt32530fc2/51800895e2e14eb796a9d436a17ebe39/encrypt?api-version=7.0-preview + response: + body: {string: '{"kid":"https://vault32530fc2.vault.azure.net/keys/keycrypt32530fc2/51800895e2e14eb796a9d436a17ebe39","value":"IMXmVBf8FsR6Avn0bPgXqn-qpwzOxTp10qTvP3m7yxB95yrfTDWzOKipryg2Ad2pYwxWNTnEnzOrUBRs1unXV36tS5tTyH-x67qkN7-4toCQSMnbKYycvLFdmQ2KPMDLLeF2hrOug0tBb4I1HJMRZG1sSD8wx7WgQYrKJt5buG7x784Vpd7VB3gICqcwIAA9h5r64EmjtKWMCYPS6oG-lS5eh3tjP3KaKT2P4xbc0nckS6MZ9ziF7l92ICRXrdhjcRJSD9hIZc_onVILdG3NfcbpPJIsLkJ-xrRychES7VZ0m_AfUIvCfr_IE02VmX8rqnzrb-Ga7pYrTkgJ_CJvCg"}'} + headers: + cache-control: [no-cache] + content-length: ['455'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:10:31 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RSA-OAEP", "value": "IMXmVBf8FsR6Avn0bPgXqn-qpwzOxTp10qTvP3m7yxB95yrfTDWzOKipryg2Ad2pYwxWNTnEnzOrUBRs1unXV36tS5tTyH-x67qkN7-4toCQSMnbKYycvLFdmQ2KPMDLLeF2hrOug0tBb4I1HJMRZG1sSD8wx7WgQYrKJt5buG7x784Vpd7VB3gICqcwIAA9h5r64EmjtKWMCYPS6oG-lS5eh3tjP3KaKT2P4xbc0nckS6MZ9ziF7l92ICRXrdhjcRJSD9hIZc_onVILdG3NfcbpPJIsLkJ-xrRychES7VZ0m_AfUIvCfr_IE02VmX8rqnzrb-Ga7pYrTkgJ_CJvCg"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['374'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault32530fc2.vault.azure.net/keys/keycrypt32530fc2/51800895e2e14eb796a9d436a17ebe39/decrypt?api-version=7.0-preview + response: + body: {string: '{"kid":"https://vault32530fc2.vault.azure.net/keys/keycrypt32530fc2/51800895e2e14eb796a9d436a17ebe39","value":"NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ"}'} + headers: + cache-control: [no-cache] + content-length: ['380'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:10:32 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_keys.test_key_import.yaml b/azure-keyvault/tests/recordings/test_keys.test_key_import.yaml new file mode 100644 index 000000000000..ad9d68533da2 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_keys.test_key_import.yaml @@ -0,0 +1,110 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault86a30a6c.vault.azure.net/keys/keyimp86a30a6c?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 21:11:12 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"Hsm": false, "key": {"kty": "RSA", "key_ops": ["encrypt", "decrypt", + "sign", "verify", "wrapKey", "unwrapKey"], "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", + "e": "AQAB", "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", + "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", + "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", + "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH", + "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", + "q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['1738'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault86a30a6c.vault.azure.net/keys/keyimp86a30a6c?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault86a30a6c.vault.azure.net/keys/keyimp86a30a6c/6fb8139fab6c4ed5af8aa0556cfea9d4","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU","e":"AQAB"},"attributes":{"enabled":true,"created":1526677873,"updated":1526677873,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['651'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:11:13 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"Hsm": true, "key": {"kty": "RSA", "key_ops": ["encrypt", "decrypt", "sign", + "verify", "wrapKey", "unwrapKey"], "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", + "e": "AQAB", "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", + "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", + "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", + "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH", + "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", + "q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['1737'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault86a30a6c.vault.azure.net/keys/keyimp86a30a6c?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault86a30a6c.vault.azure.net/keys/keyimp86a30a6c/97a9d6affa164462bca84fa46f70cf2a","kty":"RSA-HSM","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU","e":"AQAB"},"attributes":{"enabled":true,"created":1526677873,"updated":1526677873,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['655'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:11:13 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_keys.test_key_list.yaml b/azure-keyvault/tests/recordings/test_keys.test_key_list.yaml new file mode 100644 index 000000000000..404edb54e5d8 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_keys.test_key_list.yaml @@ -0,0 +1,126 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault724a098d.vault.azure.net/keys/key0-724a098d/create?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 21:11:53 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"kty": "RSA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['14'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault724a098d.vault.azure.net/keys/key0-724a098d/create?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault724a098d.vault.azure.net/keys/key0-724a098d/7968877dbc064275a34b40462ba73ffc","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"2Lrq7IL9bZ6uSFuHTd6flAA33JjR4HdUzvV9s17PrBxBZcVOwMk9-qyJjI-uG3Nyx037ca46esRXbKLkcRxxmYRXhRflHiu8KrPVbgB_UHp-PllwPsUM34ZvUWztimQ3e5oazVUFxtgPXyImiJrYYUJwXPNvkPgx_Pj4kDcdeHxOuvI1qQ62R4OQVUWcBXkMfSuhPEaVEAeLqQ794MCYt33H7Ss0wiBGAACSZObaUIGjxlQBELW8cB9dWzskEbQ-Y8WGsK1WmznSokY8NAiVJA0bOftpWJ7zj8nDwCQp46rMUW-T1CVx0Pe3x2I5UFXWl-4Gu3n_1miy-g5RWMBYLw","e":"AQAB"},"attributes":{"enabled":true,"created":1526677915,"updated":1526677915,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['649'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:11:54 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"kty": "RSA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['14'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault724a098d.vault.azure.net/keys/key1-724a098d/create?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault724a098d.vault.azure.net/keys/key1-724a098d/3c09382cf74c4d3fadc29c542f446cfe","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"jvVdOGeshnZs86jAeY1Prk3RK83Er9XZVLy7yFp2fq5p724Xy-Htq_q6r9vEOi0aagp9WH1GSxsWAUuTmvGeWGfJ5h6mbUGTGniou7G8ZVrtPt4n96ZYYsVlzQk8Bp6zKuf_eNiYWTqTZ4lV4sumjCRcmYHRJ0dqKWq9posN4BnFO07RSURRNRYUFz5UWCXErwPdGjziGAJopt6ojdxrdyjFzJAon7XM9Capc88D988BzQK-XbvczX83YAsytfJS3GdrObZFts-PBU4aM1YTtyxlv_OMqxm-Z4BOY8RnapMw4WehTBkHjYbHqxx3j7iNefCxviiKbs8BHSZsnRCEEw","e":"AQAB"},"attributes":{"enabled":true,"created":1526677916,"updated":1526677916,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['649'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:11:55 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault724a098d.vault.azure.net/keys?maxresults=2&api-version=7.0-preview + response: + body: {string: '{"value":[{"kid":"https://vault724a098d.vault.azure.net/keys/key0-724a098d","attributes":{"enabled":true,"created":1526677915,"updated":1526677915,"recoveryLevel":"Purgeable"}},{"kid":"https://vault724a098d.vault.azure.net/keys/key1-724a098d","attributes":{"enabled":true,"created":1526677916,"updated":1526677916,"recoveryLevel":"Purgeable"}}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['361'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:11:55 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_keys.test_key_list_versions.yaml b/azure-keyvault/tests/recordings/test_keys.test_key_list_versions.yaml new file mode 100644 index 000000000000..8f65267931ca --- /dev/null +++ b/azure-keyvault/tests/recordings/test_keys.test_key_list_versions.yaml @@ -0,0 +1,126 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultdb340d65.vault.azure.net/keys/keydb340d65/create?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 21:12:37 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"kty": "RSA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['14'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultdb340d65.vault.azure.net/keys/keydb340d65/create?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vaultdb340d65.vault.azure.net/keys/keydb340d65/91e97cab2e0c4f1386976673dab799bd","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"5ITbHcFMq9uLuRg6Hinjx6V79I5oAsvsYtcCpGmb1JKi1AE5TI4Rnnzjh2yMYbEsgcQy5fUQKRcPO_33A7be2g7_mAd2EksqLvB7kJU2UqgZuZPaokW-YWeq_uRdr352FZlsvLqmoL7-pkrvwAAGP27vXVoiNIaTe17mfzxby1IrMUMRpy8J1xqq4aOBxZzrR1eDOF1Y3iGXQTKpUB9gSfqKf3Ofl0Kp_i3CzZHpZvp8Cqs3f4fg4jV48S4psni7gW4YL2PGepf8jk4i4gTFnkh-LrHfod1B55Gl-lV-QNvu5kRdCwQIRb19aMESThZ8f0TWJ1NPq1ajHopTUf6y3Q","e":"AQAB"},"attributes":{"enabled":true,"created":1526677959,"updated":1526677959,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['647'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:12:38 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"kty": "RSA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['14'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultdb340d65.vault.azure.net/keys/keydb340d65/create?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vaultdb340d65.vault.azure.net/keys/keydb340d65/4357d8875a9a467384965bd0af064a3d","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"5l8Ez6Q5MtFlwLXA-h8D3Wer31rac9WbG41OAQ9NVzOJh9T3n6xrByD3ZYSSYcT45xY3zjOQUK0oBQgGbGbtMayk9JeVC7R5_Hi7q2LXtHX-3SenJDPiBdgFGG7w-HJ-LMfeKLkoNCyOqaolqILlj4f7Bjy83FsuG-_B-vjDcYyyzkPR91HZNN2_rApp20u48A9qzcS00AYEDoQy6oSYiAcEfNPuNcf7mhdeclRPkG_s2YoxaFz0KErMrS2XSgdmn8nc3ABokU8NRzIRlnJ7SY3IbL9IADH6nOTFQT91mZF8Ayz8mSO6Xw-xRvoaNQax9xbZgF0ZN2Xn4N68HTCvlw","e":"AQAB"},"attributes":{"enabled":true,"created":1526677959,"updated":1526677959,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['647'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:12:39 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultdb340d65.vault.azure.net/keys/keydb340d65/versions?api-version=7.0-preview + response: + body: {string: '{"value":[{"kid":"https://vaultdb340d65.vault.azure.net/keys/keydb340d65/4357d8875a9a467384965bd0af064a3d","attributes":{"enabled":true,"created":1526677959,"updated":1526677959,"recoveryLevel":"Purgeable"}},{"kid":"https://vaultdb340d65.vault.azure.net/keys/keydb340d65/91e97cab2e0c4f1386976673dab799bd","attributes":{"enabled":true,"created":1526677959,"updated":1526677959,"recoveryLevel":"Purgeable"}}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['423'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:12:39 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_keys.test_key_recover_and_purge.yaml b/azure-keyvault/tests/recordings/test_keys.test_key_recover_and_purge.yaml new file mode 100644 index 000000000000..038b4b7277c0 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_keys.test_key_recover_and_purge.yaml @@ -0,0 +1,462 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault13240edb.vault.azure.net/keys/keyrec013240edb/create?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 21:18:12 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"kty": "RSA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['14'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault13240edb.vault.azure.net/keys/keyrec013240edb/create?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault13240edb.vault.azure.net/keys/keyrec013240edb/22e5c0d0ef7247f8bb8ccaf8d8fb7a0e","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"1P4gTFCAqVDGtadR8neNOvyFFHQdYAnqkvOw9Ce6CuDdb-nYj2ric-JMkgBUGXMUouHySrxQzbU2A2AXfYvJL5B513jzXVj87Vu7Z0TduSLfoUvaR7v17YrnoEtzVswc5cNV9Y2yy8t4c5KcT1hySFRPzCeNwpmSgYRv1lu1a_9jC9Mv8D-4BIutaAIt-iPKIZYsl7CWykbEXOd2DVuVStGirjIz9S2METwvgNYsjJudnJg-c-IN5BJT-KDmERQLGJ_DBnFLlMeK9ocMe81gSNh8QkUVUVZXe7AgYJzyv3V7k1LcaEchD3ZXqa0U-A504Vlkevr7NiwIDomKuKkpkQ","e":"AQAB"},"attributes":{"enabled":true,"created":1526678293,"updated":1526678293,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['663'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:18:13 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"kty": "RSA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['14'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault13240edb.vault.azure.net/keys/keyrec113240edb/create?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault13240edb.vault.azure.net/keys/keyrec113240edb/bbfa546290694292a638582f395acef3","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"qZ2QyNPVFPKqPN_-n8WSD3z5XT5LLsROSTjNwdPgQh2qtC4CfwJdry5jI6i8q7HxbTnbilnen6gnQtc0nPPvXkzFLjID7w5qOdzWDN1qiuLnhd9hW1RryT6K8DVHHH6rQQoVAuYLIuuSTWmry0vX0T9W7yJUK57zGgKhgR-pS9pgoX2jErSx6BLoVnDG8LPej5kMMjWQeVLEVdo-V9BuDlDOyLSSJy9UOHcxN-99jf5tJ9EYaur4XLkVzBSeOQALYeyyYiZJhu4XTJlY3ju6MhJmQXSbj7D37Cif_ZCvmg-qgIlgIkBlwjYAvrIz5jgtHTBeB6Z7UiaNsiwHRRyJJQ","e":"AQAB"},"attributes":{"enabled":true,"created":1526678294,"updated":1526678294,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['663'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:18:14 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"kty": "RSA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['14'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault13240edb.vault.azure.net/keys/keyprg013240edb/create?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault13240edb.vault.azure.net/keys/keyprg013240edb/c619d9077b4d47a5bc86c81fe9888fd3","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"xN5isDvaLo2wP9CibOSM-AXCdI0l8cXkqJiKjM7-8tetgZ5pFfb9O0x3scFqHKM7-A9LKRoaG3RHqWoGF7NPFlF8y8LDg7asTOKSOfmIMsLAs7xfrklpcOGX32eky06QTe44bCbRVhxQnh7W9d7E_8qMPxNGdeDS1g-hN1GmruKAGItWysQKrhdSzPiMdR3u9F3EAy8ED1LZDQv_S2NNVOCfH2e2pQhwKJWu9oX9VpMtfHv7C0ibsDn_mVUuFIWzZHe8FBW8IPboQ3Kd35eXAh7DNARCOWYxoFB8oH9DyvXKqRjuU2VEiw-Jn_mrnq3BpNqspZDw7U0T_3ahMZ139w","e":"AQAB"},"attributes":{"enabled":true,"created":1526678295,"updated":1526678295,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['663'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:18:14 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"kty": "RSA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['14'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault13240edb.vault.azure.net/keys/keyprg113240edb/create?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault13240edb.vault.azure.net/keys/keyprg113240edb/2bd57f019c3b453bb5e3649333e629ba","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"zFqHU9q15jhQotXB-QwdPE7ZPCngRnPaV6zyc3N0NXy4B5ggovP8ihir6I77lC7_z0tGXnJE9f7yD8upY94za8hPAl1E5iIFN2AwtxkvoKdk0gzW4aHX-_u2iyOfdIda0YvFzf4on1YOIxtD4wNVXi7ftX3bBj6IO7vigJuRavKNL-fZpWt-wqawAXP-IO8uDYxg-heFPUGNyLkUYZh4jEW6maX8vhis2Df1cLK2XzezoLyKOOBFklEXWkir39zP7dLSbGmWxolAN78dJ5FVFbG3yZxnmCgBTJdCNdIb8416fx1sm0L9BtDx5Ws7_vKPMNwOdLsbA84p_2H8RroQ2Q","e":"AQAB"},"attributes":{"enabled":true,"created":1526678295,"updated":1526678295,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['663'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:18:15 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault13240edb.vault.azure.net/keys/keyrec013240edb?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vault13240edb.vault.azure.net/deletedkeys/keyrec013240edb","deletedDate":1526678296,"scheduledPurgeDate":1534454296,"key":{"kid":"https://vault13240edb.vault.azure.net/keys/keyrec013240edb/22e5c0d0ef7247f8bb8ccaf8d8fb7a0e","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"1P4gTFCAqVDGtadR8neNOvyFFHQdYAnqkvOw9Ce6CuDdb-nYj2ric-JMkgBUGXMUouHySrxQzbU2A2AXfYvJL5B513jzXVj87Vu7Z0TduSLfoUvaR7v17YrnoEtzVswc5cNV9Y2yy8t4c5KcT1hySFRPzCeNwpmSgYRv1lu1a_9jC9Mv8D-4BIutaAIt-iPKIZYsl7CWykbEXOd2DVuVStGirjIz9S2METwvgNYsjJudnJg-c-IN5BJT-KDmERQLGJ_DBnFLlMeK9ocMe81gSNh8QkUVUVZXe7AgYJzyv3V7k1LcaEchD3ZXqa0U-A504Vlkevr7NiwIDomKuKkpkQ","e":"AQAB"},"attributes":{"enabled":true,"created":1526678293,"updated":1526678293,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['801'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:18:15 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault13240edb.vault.azure.net/keys/keyrec113240edb?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vault13240edb.vault.azure.net/deletedkeys/keyrec113240edb","deletedDate":1526678296,"scheduledPurgeDate":1534454296,"key":{"kid":"https://vault13240edb.vault.azure.net/keys/keyrec113240edb/bbfa546290694292a638582f395acef3","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"qZ2QyNPVFPKqPN_-n8WSD3z5XT5LLsROSTjNwdPgQh2qtC4CfwJdry5jI6i8q7HxbTnbilnen6gnQtc0nPPvXkzFLjID7w5qOdzWDN1qiuLnhd9hW1RryT6K8DVHHH6rQQoVAuYLIuuSTWmry0vX0T9W7yJUK57zGgKhgR-pS9pgoX2jErSx6BLoVnDG8LPej5kMMjWQeVLEVdo-V9BuDlDOyLSSJy9UOHcxN-99jf5tJ9EYaur4XLkVzBSeOQALYeyyYiZJhu4XTJlY3ju6MhJmQXSbj7D37Cif_ZCvmg-qgIlgIkBlwjYAvrIz5jgtHTBeB6Z7UiaNsiwHRRyJJQ","e":"AQAB"},"attributes":{"enabled":true,"created":1526678294,"updated":1526678294,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['801'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:18:16 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault13240edb.vault.azure.net/keys/keyprg013240edb?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vault13240edb.vault.azure.net/deletedkeys/keyprg013240edb","deletedDate":1526678297,"scheduledPurgeDate":1534454297,"key":{"kid":"https://vault13240edb.vault.azure.net/keys/keyprg013240edb/c619d9077b4d47a5bc86c81fe9888fd3","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"xN5isDvaLo2wP9CibOSM-AXCdI0l8cXkqJiKjM7-8tetgZ5pFfb9O0x3scFqHKM7-A9LKRoaG3RHqWoGF7NPFlF8y8LDg7asTOKSOfmIMsLAs7xfrklpcOGX32eky06QTe44bCbRVhxQnh7W9d7E_8qMPxNGdeDS1g-hN1GmruKAGItWysQKrhdSzPiMdR3u9F3EAy8ED1LZDQv_S2NNVOCfH2e2pQhwKJWu9oX9VpMtfHv7C0ibsDn_mVUuFIWzZHe8FBW8IPboQ3Kd35eXAh7DNARCOWYxoFB8oH9DyvXKqRjuU2VEiw-Jn_mrnq3BpNqspZDw7U0T_3ahMZ139w","e":"AQAB"},"attributes":{"enabled":true,"created":1526678295,"updated":1526678295,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['801'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:18:16 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault13240edb.vault.azure.net/keys/keyprg113240edb?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vault13240edb.vault.azure.net/deletedkeys/keyprg113240edb","deletedDate":1526678298,"scheduledPurgeDate":1534454298,"key":{"kid":"https://vault13240edb.vault.azure.net/keys/keyprg113240edb/2bd57f019c3b453bb5e3649333e629ba","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"zFqHU9q15jhQotXB-QwdPE7ZPCngRnPaV6zyc3N0NXy4B5ggovP8ihir6I77lC7_z0tGXnJE9f7yD8upY94za8hPAl1E5iIFN2AwtxkvoKdk0gzW4aHX-_u2iyOfdIda0YvFzf4on1YOIxtD4wNVXi7ftX3bBj6IO7vigJuRavKNL-fZpWt-wqawAXP-IO8uDYxg-heFPUGNyLkUYZh4jEW6maX8vhis2Df1cLK2XzezoLyKOOBFklEXWkir39zP7dLSbGmWxolAN78dJ5FVFbG3yZxnmCgBTJdCNdIb8416fx1sm0L9BtDx5Ws7_vKPMNwOdLsbA84p_2H8RroQ2Q","e":"AQAB"},"attributes":{"enabled":true,"created":1526678295,"updated":1526678295,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['801'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:18:18 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault13240edb.vault.azure.net/deletedkeys?api-version=7.0-preview + response: + body: {string: '{"value":[{"recoveryId":"https://vault13240edb.vault.azure.net/deletedkeys/keyprg013240edb","deletedDate":1526678297,"scheduledPurgeDate":1534454297,"kid":"https://vault13240edb.vault.azure.net/keys/keyprg013240edb","attributes":{"enabled":true,"created":1526678295,"updated":1526678295,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault13240edb.vault.azure.net/deletedkeys/keyprg113240edb","deletedDate":1526678298,"scheduledPurgeDate":1534454298,"kid":"https://vault13240edb.vault.azure.net/keys/keyprg113240edb","attributes":{"enabled":true,"created":1526678295,"updated":1526678295,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault13240edb.vault.azure.net/deletedkeys/keyrec013240edb","deletedDate":1526678296,"scheduledPurgeDate":1534454296,"kid":"https://vault13240edb.vault.azure.net/keys/keyrec013240edb","attributes":{"enabled":true,"created":1526678293,"updated":1526678293,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault13240edb.vault.azure.net/deletedkeys/keyrec113240edb","deletedDate":1526678296,"scheduledPurgeDate":1534454296,"kid":"https://vault13240edb.vault.azure.net/keys/keyrec113240edb","attributes":{"enabled":true,"created":1526678294,"updated":1526678294,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['1303'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:18:37 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault13240edb.vault.azure.net/deletedkeys/keyrec013240edb/recover?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault13240edb.vault.azure.net/keys/keyrec013240edb/22e5c0d0ef7247f8bb8ccaf8d8fb7a0e","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"1P4gTFCAqVDGtadR8neNOvyFFHQdYAnqkvOw9Ce6CuDdb-nYj2ric-JMkgBUGXMUouHySrxQzbU2A2AXfYvJL5B513jzXVj87Vu7Z0TduSLfoUvaR7v17YrnoEtzVswc5cNV9Y2yy8t4c5KcT1hySFRPzCeNwpmSgYRv1lu1a_9jC9Mv8D-4BIutaAIt-iPKIZYsl7CWykbEXOd2DVuVStGirjIz9S2METwvgNYsjJudnJg-c-IN5BJT-KDmERQLGJ_DBnFLlMeK9ocMe81gSNh8QkUVUVZXe7AgYJzyv3V7k1LcaEchD3ZXqa0U-A504Vlkevr7NiwIDomKuKkpkQ","e":"AQAB"},"attributes":{"enabled":true,"created":1526678293,"updated":1526678293,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['663'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:18:38 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault13240edb.vault.azure.net/deletedkeys/keyrec113240edb/recover?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vault13240edb.vault.azure.net/keys/keyrec113240edb/bbfa546290694292a638582f395acef3","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"qZ2QyNPVFPKqPN_-n8WSD3z5XT5LLsROSTjNwdPgQh2qtC4CfwJdry5jI6i8q7HxbTnbilnen6gnQtc0nPPvXkzFLjID7w5qOdzWDN1qiuLnhd9hW1RryT6K8DVHHH6rQQoVAuYLIuuSTWmry0vX0T9W7yJUK57zGgKhgR-pS9pgoX2jErSx6BLoVnDG8LPej5kMMjWQeVLEVdo-V9BuDlDOyLSSJy9UOHcxN-99jf5tJ9EYaur4XLkVzBSeOQALYeyyYiZJhu4XTJlY3ju6MhJmQXSbj7D37Cif_ZCvmg-qgIlgIkBlwjYAvrIz5jgtHTBeB6Z7UiaNsiwHRRyJJQ","e":"AQAB"},"attributes":{"enabled":true,"created":1526678294,"updated":1526678294,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['663'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:18:39 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault13240edb.vault.azure.net/deletedkeys/keyprg013240edb?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + date: ['Fri, 18 May 2018 21:18:40 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 204, message: No Content} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault13240edb.vault.azure.net/deletedkeys/keyprg113240edb?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + date: ['Fri, 18 May 2018 21:18:40 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 204, message: No Content} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault13240edb.vault.azure.net/deletedkeys?api-version=7.0-preview + response: + body: {string: '{"value":[],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['28'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:19:01 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_keys.test_key_sign_and_verify.yaml b/azure-keyvault/tests/recordings/test_keys.test_key_sign_and_verify.yaml new file mode 100644 index 000000000000..742154b7c798 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_keys.test_key_sign_and_verify.yaml @@ -0,0 +1,198 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultf5590e08.vault.azure.net/keys/keysignf5590e08?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 21:13:36 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"Hsm": false, "key": {"kty": "RSA", "key_ops": ["encrypt", "decrypt", + "sign", "verify", "wrapKey", "unwrapKey"], "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", + "e": "AQAB", "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", + "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", + "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", + "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH", + "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", + "q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['1738'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultf5590e08.vault.azure.net/keys/keysignf5590e08?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vaultf5590e08.vault.azure.net/keys/keysignf5590e08/b30f14bc94a74ae4b6b8e437ef2d34f4","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU","e":"AQAB"},"attributes":{"enabled":true,"created":1526678017,"updated":1526678017,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['652'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:13:37 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RS256", "value": "vgZc0NQUb6WMKX___V2JntcFRO_vszKwSAj7R2rL1zg"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['72'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultf5590e08.vault.azure.net/keys/keysignf5590e08/sign?api-version=7.0-preview + response: + body: {string: '{"kid":"https://vaultf5590e08.vault.azure.net/keys/keysignf5590e08/b30f14bc94a74ae4b6b8e437ef2d34f4","value":"YX0IOuHlYW7IEVboW0c8M_geUfp2pKoCw7ujVZfXZOy0890603_QcjCSzuw_qUWehJ8IYVlfaXeF3Ebu36oB6cD8oG8OfI6rLM9BKQUR2KE5VoCBKAGit7FxhAnLRFGP69dF6gyO_wv_-zCJnXLIOg1Pu0K80WVSYkj6Wzczj35OQHEptDqRmxdwQoDYoEk5iYcb3JOeWC1frcGVEf9qs0yzwx1AbgkAOPElweovZZlleS6MALP0HTt7L5zJg7kjnCsuksVsEfM2R0_Mzt8nT24LczCNyZac50hHVkCepaZDRs26KodYnSs3doFlYOUJpCu8sxil7VBTEtFY38dENg"}'} + headers: + cache-control: [no-cache] + content-length: ['454'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:13:37 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RS256", "digest": "vgZc0NQUb6WMKX___V2JntcFRO_vszKwSAj7R2rL1zg", + "value": "YX0IOuHlYW7IEVboW0c8M_geUfp2pKoCw7ujVZfXZOy0890603_QcjCSzuw_qUWehJ8IYVlfaXeF3Ebu36oB6cD8oG8OfI6rLM9BKQUR2KE5VoCBKAGit7FxhAnLRFGP69dF6gyO_wv_-zCJnXLIOg1Pu0K80WVSYkj6Wzczj35OQHEptDqRmxdwQoDYoEk5iYcb3JOeWC1frcGVEf9qs0yzwx1AbgkAOPElweovZZlleS6MALP0HTt7L5zJg7kjnCsuksVsEfM2R0_Mzt8nT24LczCNyZac50hHVkCepaZDRs26KodYnSs3doFlYOUJpCu8sxil7VBTEtFY38dENg"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['428'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultf5590e08.vault.azure.net/keys/keysignf5590e08/verify?api-version=7.0-preview + response: + body: {string: '{"value":true}'} + headers: + cache-control: [no-cache] + content-length: ['14'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:13:37 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RS256", "value": "vgZc0NQUb6WMKX___V2JntcFRO_vszKwSAj7R2rL1zg"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['72'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultf5590e08.vault.azure.net/keys/keysignf5590e08/sign?api-version=7.0-preview + response: + body: {string: '{"kid":"https://vaultf5590e08.vault.azure.net/keys/keysignf5590e08/b30f14bc94a74ae4b6b8e437ef2d34f4","value":"YX0IOuHlYW7IEVboW0c8M_geUfp2pKoCw7ujVZfXZOy0890603_QcjCSzuw_qUWehJ8IYVlfaXeF3Ebu36oB6cD8oG8OfI6rLM9BKQUR2KE5VoCBKAGit7FxhAnLRFGP69dF6gyO_wv_-zCJnXLIOg1Pu0K80WVSYkj6Wzczj35OQHEptDqRmxdwQoDYoEk5iYcb3JOeWC1frcGVEf9qs0yzwx1AbgkAOPElweovZZlleS6MALP0HTt7L5zJg7kjnCsuksVsEfM2R0_Mzt8nT24LczCNyZac50hHVkCepaZDRs26KodYnSs3doFlYOUJpCu8sxil7VBTEtFY38dENg"}'} + headers: + cache-control: [no-cache] + content-length: ['454'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:13:38 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RS256", "digest": "vgZc0NQUb6WMKX___V2JntcFRO_vszKwSAj7R2rL1zg", + "value": "YX0IOuHlYW7IEVboW0c8M_geUfp2pKoCw7ujVZfXZOy0890603_QcjCSzuw_qUWehJ8IYVlfaXeF3Ebu36oB6cD8oG8OfI6rLM9BKQUR2KE5VoCBKAGit7FxhAnLRFGP69dF6gyO_wv_-zCJnXLIOg1Pu0K80WVSYkj6Wzczj35OQHEptDqRmxdwQoDYoEk5iYcb3JOeWC1frcGVEf9qs0yzwx1AbgkAOPElweovZZlleS6MALP0HTt7L5zJg7kjnCsuksVsEfM2R0_Mzt8nT24LczCNyZac50hHVkCepaZDRs26KodYnSs3doFlYOUJpCu8sxil7VBTEtFY38dENg"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['428'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultf5590e08.vault.azure.net/keys/keysignf5590e08/b30f14bc94a74ae4b6b8e437ef2d34f4/verify?api-version=7.0-preview + response: + body: {string: '{"value":true}'} + headers: + cache-control: [no-cache] + content-length: ['14'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:13:38 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_keys.test_key_wrap_and_unwrap.yaml b/azure-keyvault/tests/recordings/test_keys.test_key_wrap_and_unwrap.yaml new file mode 100644 index 000000000000..09ab074a5f8f --- /dev/null +++ b/azure-keyvault/tests/recordings/test_keys.test_key_wrap_and_unwrap.yaml @@ -0,0 +1,196 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultf6200e19.vault.azure.net/keys/keywrapf6200e19?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 21:14:17 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"Hsm": false, "key": {"kty": "RSA", "key_ops": ["encrypt", "decrypt", + "sign", "verify", "wrapKey", "unwrapKey"], "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", + "e": "AQAB", "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", + "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", + "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", + "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH", + "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", + "q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['1738'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultf6200e19.vault.azure.net/keys/keywrapf6200e19?api-version=7.0-preview + response: + body: {string: '{"key":{"kid":"https://vaultf6200e19.vault.azure.net/keys/keywrapf6200e19/8dc627a2feb944f68039de7aecde2b19","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU","e":"AQAB"},"attributes":{"enabled":true,"created":1526678059,"updated":1526678059,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['652'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:14:18 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RSA-OAEP", "value": "NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['299'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultf6200e19.vault.azure.net/keys/keywrapf6200e19/wrapkey?api-version=7.0-preview + response: + body: {string: '{"kid":"https://vaultf6200e19.vault.azure.net/keys/keywrapf6200e19/8dc627a2feb944f68039de7aecde2b19","value":"Eet1Waix6FlhYAW3kQgQBobYjmINmXJTGx1SeNNfOQP0EqemjNR86F9VGP-L73dKEaKKvys7ZvVaEdHg-7k7RByNs_sZjDbNGn7iXG4d2FZxPJQfGtdijxz7wyde9BTK61ecyksTzIeehXnbAIhTweCic9V2n_K3zYbjUiGHDQuw3PIQ_YHBtSPNGsZNcH36ZSSEZvG_NgULMdW6P7KFElTygrlvTZvibXitkJD0SwnEAGwTQasXlzaSJmKGNS--4k47ZegjykJXilgkQejOvnoAb2q8nO0Z4dPqOH42YxIeaAXJLusSDk0FB-WF67y_Px0hOBW5UIpbb40YXb18IA"}'} + headers: + cache-control: [no-cache] + content-length: ['454'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:14:19 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RSA-OAEP", "value": "Eet1Waix6FlhYAW3kQgQBobYjmINmXJTGx1SeNNfOQP0EqemjNR86F9VGP-L73dKEaKKvys7ZvVaEdHg-7k7RByNs_sZjDbNGn7iXG4d2FZxPJQfGtdijxz7wyde9BTK61ecyksTzIeehXnbAIhTweCic9V2n_K3zYbjUiGHDQuw3PIQ_YHBtSPNGsZNcH36ZSSEZvG_NgULMdW6P7KFElTygrlvTZvibXitkJD0SwnEAGwTQasXlzaSJmKGNS--4k47ZegjykJXilgkQejOvnoAb2q8nO0Z4dPqOH42YxIeaAXJLusSDk0FB-WF67y_Px0hOBW5UIpbb40YXb18IA"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['374'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultf6200e19.vault.azure.net/keys/keywrapf6200e19/unwrapkey?api-version=7.0-preview + response: + body: {string: '{"kid":"https://vaultf6200e19.vault.azure.net/keys/keywrapf6200e19/8dc627a2feb944f68039de7aecde2b19","value":"NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ"}'} + headers: + cache-control: [no-cache] + content-length: ['379'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:14:20 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RSA-OAEP", "value": "NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['299'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultf6200e19.vault.azure.net/keys/keywrapf6200e19/8dc627a2feb944f68039de7aecde2b19/wrapkey?api-version=7.0-preview + response: + body: {string: '{"kid":"https://vaultf6200e19.vault.azure.net/keys/keywrapf6200e19/8dc627a2feb944f68039de7aecde2b19","value":"iTL1QXZuvdCqCSofH1wFcw_1NThsYJa0a94T21NLIui-tA4GrcHK_G2iNYIf8-e68i8JfPeKaEJijRhsuvXnjUtkD1uqwR_3Xd1OiuYUUGC4x1gF4sSnyaXF0PxfdVf4hlQ_2W7oLunVityO3VDBrxrRpSCQ--LzDrhp1fHyrirMVnjuPOAa2Dch8fA9wmmmxpBf9atQrLLpSlK_65eOFfpbp5x7mPlkZu38ZkZRpZuDKYkQhdoiv3EwNBPcL4RFDVK3DxwSlxP29lkwL4vQYlUf5xD2KV7BkRqDIFXLaOtlnD8t2KMMQDXIEcts4Neddb7cMjJIreywBrkbWkK1CQ"}'} + headers: + cache-control: [no-cache] + content-length: ['454'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:14:20 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"alg": "RSA-OAEP", "value": "iTL1QXZuvdCqCSofH1wFcw_1NThsYJa0a94T21NLIui-tA4GrcHK_G2iNYIf8-e68i8JfPeKaEJijRhsuvXnjUtkD1uqwR_3Xd1OiuYUUGC4x1gF4sSnyaXF0PxfdVf4hlQ_2W7oLunVityO3VDBrxrRpSCQ--LzDrhp1fHyrirMVnjuPOAa2Dch8fA9wmmmxpBf9atQrLLpSlK_65eOFfpbp5x7mPlkZu38ZkZRpZuDKYkQhdoiv3EwNBPcL4RFDVK3DxwSlxP29lkwL4vQYlUf5xD2KV7BkRqDIFXLaOtlnD8t2KMMQDXIEcts4Neddb7cMjJIreywBrkbWkK1CQ"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['374'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultf6200e19.vault.azure.net/keys/keywrapf6200e19/8dc627a2feb944f68039de7aecde2b19/unwrapkey?api-version=7.0-preview + response: + body: {string: '{"kid":"https://vaultf6200e19.vault.azure.net/keys/keywrapf6200e19/8dc627a2feb944f68039de7aecde2b19","value":"NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ"}'} + headers: + cache-control: [no-cache] + content-length: ['379'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:14:20 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_secrets.test_backup_restore.yaml b/azure-keyvault/tests/recordings/test_secrets.test_backup_restore.yaml new file mode 100644 index 000000000000..be6e30e5acd5 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_secrets.test_backup_restore.yaml @@ -0,0 +1,96 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultd9f80d3f.vault.azure.net/secrets/secbakd9f80d3f?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 12:41:18 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"value": "secVald9f80d3f"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['27'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultd9f80d3f.vault.azure.net/secrets/secbakd9f80d3f?api-version=7.0-preview + response: + body: {string: '{"value":"secVald9f80d3f","id":"https://vaultd9f80d3f.vault.azure.net/secrets/secbakd9f80d3f/b051f15ca9f745d4843f4b95117d7f94","attributes":{"enabled":true,"created":1526647279,"updated":1526647279,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['227'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:41:19 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultd9f80d3f.vault.azure.net/secrets/secbakd9f80d3f/backup?api-version=7.0-preview + response: + body: {string: '{"error":{"code":"MethodNotAllowed","message":"HTTP POST not allowed"}}'} + headers: + cache-control: [no-cache] + content-length: ['71'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:41:19 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 405, message: Method Not Allowed} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_secrets.test_list_versions.yaml b/azure-keyvault/tests/recordings/test_secrets.test_list_versions.yaml new file mode 100644 index 000000000000..4ff5387947e4 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_secrets.test_list_versions.yaml @@ -0,0 +1,126 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultce470cfa.vault.azure.net/secrets/secce470cfa?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 12:38:34 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"value": "secValce470cfa"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['27'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultce470cfa.vault.azure.net/secrets/secce470cfa?api-version=7.0-preview + response: + body: {string: '{"value":"secValce470cfa","id":"https://vaultce470cfa.vault.azure.net/secrets/secce470cfa/9f334695a3514de8a1f51bdb508d91c6","attributes":{"enabled":true,"created":1526647114,"updated":1526647114,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['224'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:38:34 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "secValce470cfa"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['27'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultce470cfa.vault.azure.net/secrets/secce470cfa?api-version=7.0-preview + response: + body: {string: '{"value":"secValce470cfa","id":"https://vaultce470cfa.vault.azure.net/secrets/secce470cfa/e7aa0570264140169bc8dec104b4dbcd","attributes":{"enabled":true,"created":1526647115,"updated":1526647115,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['224'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:38:35 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultce470cfa.vault.azure.net/secrets/secce470cfa/versions?api-version=7.0-preview + response: + body: {string: '{"value":[{"id":"https://vaultce470cfa.vault.azure.net/secrets/secce470cfa/9f334695a3514de8a1f51bdb508d91c6","attributes":{"enabled":true,"created":1526647114,"updated":1526647114,"recoveryLevel":"Purgeable"}},{"id":"https://vaultce470cfa.vault.azure.net/secrets/secce470cfa/e7aa0570264140169bc8dec104b4dbcd","attributes":{"enabled":true,"created":1526647115,"updated":1526647115,"recoveryLevel":"Purgeable"}}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['427'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:38:36 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_secrets.test_recover_purge.yaml b/azure-keyvault/tests/recordings/test_secrets.test_recover_purge.yaml new file mode 100644 index 000000000000..41456d2b658a --- /dev/null +++ b/azure-keyvault/tests/recordings/test_secrets.test_recover_purge.yaml @@ -0,0 +1,522 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultcdc10cde.vault.azure.net/secrets/secrec0cdc10cde?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 15:46:12 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"value": "secval0cdc10cde"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['28'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultcdc10cde.vault.azure.net/secrets/secrec0cdc10cde?api-version=7.0-preview + response: + body: {string: '{"value":"secval0cdc10cde","id":"https://vaultcdc10cde.vault.azure.net/secrets/secrec0cdc10cde/b4a7d5366bf248708fff11daaf36f8ac","attributes":{"enabled":true,"created":1526658372,"updated":1526658372,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['241'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:46:12 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "secval1cdc10cde"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['28'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultcdc10cde.vault.azure.net/secrets/secrec1cdc10cde?api-version=7.0-preview + response: + body: {string: '{"value":"secval1cdc10cde","id":"https://vaultcdc10cde.vault.azure.net/secrets/secrec1cdc10cde/dd64c3af95ae44fa8bd29c8d478ccd8a","attributes":{"enabled":true,"created":1526658373,"updated":1526658373,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['241'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:46:13 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "secval0cdc10cde"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['28'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultcdc10cde.vault.azure.net/secrets/secprg0cdc10cde?api-version=7.0-preview + response: + body: {string: '{"value":"secval0cdc10cde","id":"https://vaultcdc10cde.vault.azure.net/secrets/secprg0cdc10cde/c6b3ae1b1f93464eb2b84b10436ccbc8","attributes":{"enabled":true,"created":1526658373,"updated":1526658373,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['241'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:46:13 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "secval1cdc10cde"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['28'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultcdc10cde.vault.azure.net/secrets/secprg1cdc10cde?api-version=7.0-preview + response: + body: {string: '{"value":"secval1cdc10cde","id":"https://vaultcdc10cde.vault.azure.net/secrets/secprg1cdc10cde/69d9643ee7cd4dbdba9a4654bb7880d0","attributes":{"enabled":true,"created":1526658374,"updated":1526658374,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['241'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:46:13 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vaultcdc10cde.vault.azure.net/secrets/secrec0cdc10cde?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vaultcdc10cde.vault.azure.net/deletedsecrets/secrec0cdc10cde","deletedDate":1526658374,"scheduledPurgeDate":1534434374,"id":"https://vaultcdc10cde.vault.azure.net/secrets/secrec0cdc10cde/b4a7d5366bf248708fff11daaf36f8ac","attributes":{"enabled":true,"created":1526658372,"updated":1526658372,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['356'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:46:14 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vaultcdc10cde.vault.azure.net/secrets/secrec1cdc10cde?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vaultcdc10cde.vault.azure.net/deletedsecrets/secrec1cdc10cde","deletedDate":1526658375,"scheduledPurgeDate":1534434375,"id":"https://vaultcdc10cde.vault.azure.net/secrets/secrec1cdc10cde/dd64c3af95ae44fa8bd29c8d478ccd8a","attributes":{"enabled":true,"created":1526658373,"updated":1526658373,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['356'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:46:15 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vaultcdc10cde.vault.azure.net/secrets/secprg0cdc10cde?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vaultcdc10cde.vault.azure.net/deletedsecrets/secprg0cdc10cde","deletedDate":1526658375,"scheduledPurgeDate":1534434375,"id":"https://vaultcdc10cde.vault.azure.net/secrets/secprg0cdc10cde/c6b3ae1b1f93464eb2b84b10436ccbc8","attributes":{"enabled":true,"created":1526658373,"updated":1526658373,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['356'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:46:15 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vaultcdc10cde.vault.azure.net/secrets/secprg1cdc10cde?api-version=7.0-preview + response: + body: {string: '{"recoveryId":"https://vaultcdc10cde.vault.azure.net/deletedsecrets/secprg1cdc10cde","deletedDate":1526658376,"scheduledPurgeDate":1534434376,"id":"https://vaultcdc10cde.vault.azure.net/secrets/secprg1cdc10cde/69d9643ee7cd4dbdba9a4654bb7880d0","attributes":{"enabled":true,"created":1526658374,"updated":1526658374,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['356'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:46:16 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultcdc10cde.vault.azure.net/deletedsecrets?api-version=7.0-preview + response: + body: {string: '{"value":[{"recoveryId":"https://vaultcdc10cde.vault.azure.net/deletedsecrets/secprg0cdc10cde","deletedDate":1526658375,"scheduledPurgeDate":1534434375,"id":"https://vaultcdc10cde.vault.azure.net/secrets/secprg0cdc10cde","attributes":{"enabled":true,"created":1526658373,"updated":1526658373,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vaultcdc10cde.vault.azure.net/deletedsecrets/secprg1cdc10cde","deletedDate":1526658376,"scheduledPurgeDate":1534434376,"id":"https://vaultcdc10cde.vault.azure.net/secrets/secprg1cdc10cde","attributes":{"enabled":true,"created":1526658374,"updated":1526658374,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vaultcdc10cde.vault.azure.net/deletedsecrets/secrec0cdc10cde","deletedDate":1526658374,"scheduledPurgeDate":1534434374,"id":"https://vaultcdc10cde.vault.azure.net/secrets/secrec0cdc10cde","attributes":{"enabled":true,"created":1526658372,"updated":1526658372,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vaultcdc10cde.vault.azure.net/deletedsecrets/secrec1cdc10cde","deletedDate":1526658375,"scheduledPurgeDate":1534434375,"id":"https://vaultcdc10cde.vault.azure.net/secrets/secrec1cdc10cde","attributes":{"enabled":true,"created":1526658373,"updated":1526658373,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['1323'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:46:36 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultcdc10cde.vault.azure.net/deletedsecrets/secrec0cdc10cde/recover?api-version=7.0-preview + response: + body: {string: '{"id":"https://vaultcdc10cde.vault.azure.net/secrets/secrec0cdc10cde/b4a7d5366bf248708fff11daaf36f8ac","attributes":{"enabled":true,"created":1526658372,"updated":1526658372,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['215'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:46:37 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vaultcdc10cde.vault.azure.net/deletedsecrets/secrec1cdc10cde/recover?api-version=7.0-preview + response: + body: {string: '{"id":"https://vaultcdc10cde.vault.azure.net/secrets/secrec1cdc10cde/dd64c3af95ae44fa8bd29c8d478ccd8a","attributes":{"enabled":true,"created":1526658373,"updated":1526658373,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['215'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:46:38 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vaultcdc10cde.vault.azure.net/deletedsecrets/secprg0cdc10cde?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + date: ['Fri, 18 May 2018 15:46:38 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 204, message: No Content} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vaultcdc10cde.vault.azure.net/deletedsecrets/secprg1cdc10cde?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + date: ['Fri, 18 May 2018 15:46:39 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 204, message: No Content} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultcdc10cde.vault.azure.net/deletedsecrets?api-version=7.0-preview + response: + body: {string: '{"value":[],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['28'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:47:00 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultcdc10cde.vault.azure.net/secrets/secrec0cdc10cde/?api-version=7.0-preview + response: + body: {string: '{"value":"secval0cdc10cde","id":"https://vaultcdc10cde.vault.azure.net/secrets/secrec0cdc10cde/b4a7d5366bf248708fff11daaf36f8ac","attributes":{"enabled":true,"created":1526658372,"updated":1526658372,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['241'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:47:00 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultcdc10cde.vault.azure.net/secrets/secrec1cdc10cde/?api-version=7.0-preview + response: + body: {string: '{"value":"secval1cdc10cde","id":"https://vaultcdc10cde.vault.azure.net/secrets/secrec1cdc10cde/dd64c3af95ae44fa8bd29c8d478ccd8a","attributes":{"enabled":true,"created":1526658373,"updated":1526658373,"recoveryLevel":"Recoverable+Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['241'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 15:47:00 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_secrets.test_secret_crud_operations.yaml b/azure-keyvault/tests/recordings/test_secrets.test_secret_crud_operations.yaml new file mode 100644 index 000000000000..c47adcd696ce --- /dev/null +++ b/azure-keyvault/tests/recordings/test_secrets.test_secret_crud_operations.yaml @@ -0,0 +1,254 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault5346109c.vault.azure.net/secrets/crud-secret?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 12:22:22 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"value": "crud_secret_value5346109c"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['38'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault5346109c.vault.azure.net/secrets/crud-secret?api-version=7.0-preview + response: + body: {string: '{"value":"crud_secret_value5346109c","id":"https://vault5346109c.vault.azure.net/secrets/crud-secret/89356e41988c49d0bb2aff6e2d5e51b5","attributes":{"enabled":true,"created":1526646144,"updated":1526646144,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['235'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:22:23 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5346109c.vault.azure.net/secrets/crud-secret/?api-version=7.0-preview + response: + body: {string: '{"value":"crud_secret_value5346109c","id":"https://vault5346109c.vault.azure.net/secrets/crud-secret/89356e41988c49d0bb2aff6e2d5e51b5","attributes":{"enabled":true,"created":1526646144,"updated":1526646144,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['235'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:22:23 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5346109c.vault.azure.net/secrets/crud-secret/89356e41988c49d0bb2aff6e2d5e51b5?api-version=7.0-preview + response: + body: {string: '{"value":"crud_secret_value5346109c","id":"https://vault5346109c.vault.azure.net/secrets/crud-secret/89356e41988c49d0bb2aff6e2d5e51b5","attributes":{"enabled":true,"created":1526646144,"updated":1526646144,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['235'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:22:25 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"contentType": "text/plain", "attributes": {"enabled": true, "exp": 2527401600}, + "tags": {"foo": "updated tag"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['113'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PATCH + uri: https://vault5346109c.vault.azure.net/secrets/crud-secret/?api-version=7.0-preview + response: + body: {string: '{"contentType":"text/plain","id":"https://vault5346109c.vault.azure.net/secrets/crud-secret/89356e41988c49d0bb2aff6e2d5e51b5","attributes":{"enabled":true,"exp":2527401600,"created":1526646144,"updated":1526646145,"recoveryLevel":"Purgeable"},"tags":{"foo":"updated + tag"}}'} + headers: + cache-control: [no-cache] + content-length: ['272'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:22:25 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"contentType": "text/plain", "attributes": {"enabled": true, "exp": 2527401600}, + "tags": {"foo": "updated tag"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['113'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PATCH + uri: https://vault5346109c.vault.azure.net/secrets/crud-secret/89356e41988c49d0bb2aff6e2d5e51b5?api-version=7.0-preview + response: + body: {string: '{"contentType":"text/plain","id":"https://vault5346109c.vault.azure.net/secrets/crud-secret/89356e41988c49d0bb2aff6e2d5e51b5","attributes":{"enabled":true,"exp":2527401600,"created":1526646144,"updated":1526646146,"recoveryLevel":"Purgeable"},"tags":{"foo":"updated + tag"}}'} + headers: + cache-control: [no-cache] + content-length: ['272'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:22:25 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault5346109c.vault.azure.net/secrets/crud-secret?api-version=7.0-preview + response: + body: {string: '{"contentType":"text/plain","id":"https://vault5346109c.vault.azure.net/secrets/crud-secret/89356e41988c49d0bb2aff6e2d5e51b5","attributes":{"enabled":true,"exp":2527401600,"created":1526646144,"updated":1526646146,"recoveryLevel":"Purgeable"},"tags":{"foo":"updated + tag"}}'} + headers: + cache-control: [no-cache] + content-length: ['272'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:22:26 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5346109c.vault.azure.net/secrets/crud-secret/?api-version=7.0-preview + response: + body: {string: '{"error":{"code":"SecretNotFound","message":"Secret not found: + crud-secret"}}'} + headers: + cache-control: [no-cache] + content-length: ['77'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:22:26 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 404, message: Not Found} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_secrets.test_secret_list.yaml b/azure-keyvault/tests/recordings/test_secrets.test_secret_list.yaml new file mode 100644 index 000000000000..7e07d85869fd --- /dev/null +++ b/azure-keyvault/tests/recordings/test_secrets.test_secret_list.yaml @@ -0,0 +1,126 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultb42e0c07.vault.azure.net/secrets/sec0?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 12:28:42 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"value": "secVal0b42e0c07"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['28'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultb42e0c07.vault.azure.net/secrets/sec0?api-version=7.0-preview + response: + body: {string: '{"value":"secVal0b42e0c07","id":"https://vaultb42e0c07.vault.azure.net/secrets/sec0/14252e94ef27459dab70a3996b379e3a","attributes":{"enabled":true,"created":1526646524,"updated":1526646524,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['218'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:28:43 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "secVal1b42e0c07"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['28'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vaultb42e0c07.vault.azure.net/secrets/sec1?api-version=7.0-preview + response: + body: {string: '{"value":"secVal1b42e0c07","id":"https://vaultb42e0c07.vault.azure.net/secrets/sec1/e5a9e7f22fae4b8d911627f8f262b0d4","attributes":{"enabled":true,"created":1526646530,"updated":1526646530,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['218'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:28:50 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vaultb42e0c07.vault.azure.net/secrets?maxresults=2&api-version=7.0-preview + response: + body: {string: '{"value":[{"id":"https://vaultb42e0c07.vault.azure.net/secrets/sec0","attributes":{"enabled":true,"created":1526646524,"updated":1526646524,"recoveryLevel":"Purgeable"}},{"id":"https://vaultb42e0c07.vault.azure.net/secrets/sec1","attributes":{"enabled":true,"created":1526646530,"updated":1526646530,"recoveryLevel":"Purgeable"}}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['347'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:28:50 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_secrets.test_secret_list_versions.yaml b/azure-keyvault/tests/recordings/test_secrets.test_secret_list_versions.yaml new file mode 100644 index 000000000000..50db9a2fa0a2 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_secrets.test_secret_list_versions.yaml @@ -0,0 +1,126 @@ +interactions: +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault33710fdf.vault.azure.net/secrets/sec33710fdf?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 12:34:22 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: '{"value": "secVal33710fdf"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['27'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault33710fdf.vault.azure.net/secrets/sec33710fdf?api-version=7.0-preview + response: + body: {string: '{"value":"secVal33710fdf","id":"https://vault33710fdf.vault.azure.net/secrets/sec33710fdf/52714a7585d442e9bfb209bc78e4280f","attributes":{"enabled":true,"created":1526646863,"updated":1526646863,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['224'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:34:23 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"value": "secVal33710fdf"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['27'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault33710fdf.vault.azure.net/secrets/sec33710fdf?api-version=7.0-preview + response: + body: {string: '{"value":"secVal33710fdf","id":"https://vault33710fdf.vault.azure.net/secrets/sec33710fdf/70d4c47a07a3417b951ef2a6b8f4d984","attributes":{"enabled":true,"created":1526646864,"updated":1526646864,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['224'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:34:23 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault33710fdf.vault.azure.net/secrets/sec33710fdf/versions?api-version=7.0-preview + response: + body: {string: '{"value":[{"id":"https://vault33710fdf.vault.azure.net/secrets/sec33710fdf/52714a7585d442e9bfb209bc78e4280f","attributes":{"enabled":true,"created":1526646863,"updated":1526646863,"recoveryLevel":"Purgeable"}},{"id":"https://vault33710fdf.vault.azure.net/secrets/sec33710fdf/70d4c47a07a3417b951ef2a6b8f4d984","attributes":{"enabled":true,"created":1526646864,"updated":1526646864,"recoveryLevel":"Purgeable"}}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['427'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 12:34:23 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/recordings/test_storage.test_e2e.yaml b/azure-keyvault/tests/recordings/test_storage.test_e2e.yaml new file mode 100644 index 000000000000..0206a6ffb677 --- /dev/null +++ b/azure-keyvault/tests/recordings/test_storage.test_e2e.yaml @@ -0,0 +1,568 @@ +interactions: +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-mgmt-authorization/0.40.0 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Storage%20Account%20Key%20Operator%20Service%20Role%27&api-version=2018-01-01-preview + response: + body: {string: '{"value":[{"properties":{"roleName":"Storage Account Key Operator + Service Role","type":"BuiltInRole","description":"Storage Account Key Operators + are allowed to list and regenerate keys on Storage Accounts","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Storage/storageAccounts/listkeys/action","Microsoft.Storage/storageAccounts/regeneratekey/action"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2017-04-13T18:26:11.5770570Z","updatedOn":"2017-04-13T20:57:14.5990198Z","createdBy":null,"updatedBy":null},"id":"/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12","type":"Microsoft.Authorization/roleDefinitions","name":"81a9662b-bebf-436f-a333-f67b29880f12"}]}'} + headers: + cache-control: [no-cache] + content-length: ['737'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:43 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + set-cookie: [x-ms-gateway-slice=productionb; path=/; secure; HttpOnly] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + x-ms-request-charge: ['1'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"properties": {"roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12", + "principalId": "93c27d83-f79b-4cb2-8dd4-4aa716542e74"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['182'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-mgmt-authorization/0.40.0 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_storage_test_e2e5fab085e/providers/Microsoft.Storage/storageAccounts/kvsa15fab085e/providers/Microsoft.Authorization/roleAssignments/d7607bd3-a467-4a14-ab5f-f4b016ffbfff?api-version=2018-01-01-preview + response: + body: {string: '{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12","principalId":"93c27d83-f79b-4cb2-8dd4-4aa716542e74","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_storage_test_e2e5fab085e/providers/Microsoft.Storage/storageAccounts/kvsa15fab085e","createdOn":"2018-05-18T21:31:45.2815467Z","updatedOn":"2018-05-18T21:31:45.2815467Z","createdBy":null,"updatedBy":"00000000-0000-0000-0000-000000000000"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_storage_test_e2e5fab085e/providers/Microsoft.Storage/storageAccounts/kvsa15fab085e/providers/Microsoft.Authorization/roleAssignments/d7607bd3-a467-4a14-ab5f-f4b016ffbfff","type":"Microsoft.Authorization/roleAssignments","name":"d7607bd3-a467-4a14-ab5f-f4b016ffbfff"}'} + headers: + cache-control: [no-cache] + content-length: ['927'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:47 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + set-cookie: [x-ms-gateway-slice=productionb; path=/; secure; HttpOnly] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-request-charge: ['3'] + x-powered-by: [ASP.NET] + status: {code: 201, message: Created} +- request: + body: '' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: [0] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e?api-version=7.0-preview + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 18 May 2018 21:31:47 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://vault.azure.net"'] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 401, message: Unauthorized} +- request: + body: 'b''{"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_storage_test_e2e5fab085e/providers/Microsoft.Storage/storageAccounts/kvsa15fab085e", + "activeKeyName": "key1", "autoRegenerateKey": true, "regenerationPeriod": "P30D", + "attributes": {"enabled": true}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['287'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_storage_test_e2e5fab085e/providers/Microsoft.Storage/storageAccounts/kvsa15fab085e","activeKeyName":"key1","autoRegenerateKey":true,"regenerationPeriod":"P30D","attributes":{"enabled":true,"created":1526679111,"updated":1526679111,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['414'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:50 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"activeKeyName": "key2"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['25'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PATCH + uri: https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_storage_test_e2e5fab085e/providers/Microsoft.Storage/storageAccounts/kvsa15fab085e","activeKeyName":"key2","autoRegenerateKey":true,"regenerationPeriod":"P30D","attributes":{"enabled":true,"created":1526679111,"updated":1526679111,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['414'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:51 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"keyName": "key1"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['19'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: POST + uri: https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/regeneratekey?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_storage_test_e2e5fab085e/providers/Microsoft.Storage/storageAccounts/kvsa15fab085e","activeKeyName":"key1","autoRegenerateKey":true,"regenerationPeriod":"P30D","attributes":{"enabled":true,"created":1526679113,"updated":1526679113,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['414'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:53 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"templateUri": "se=2020-01-01&sp=acdlpruw&sv=2017-07-29&ss=bfqt&srt=sco&sig=YWdFIAQJDor%2B8o/PGcC3XhdPtvsIQFoVcsmDXUO%2BQkg%3D", + "sasType": "account", "validityPeriod": "PT2H", "attributes": {"enabled": true}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['210'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/sas/acctall?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/sas/acctall","sid":"https://vault5fab085e.vault.azure.net/secrets/kvsa15fab085e-acctall","templateUri":"se=2020-01-01&sp=acdlpruw&sv=2017-07-29&ss=bfqt&srt=sco&sig=YWdFIAQJDor%2B8o/PGcC3XhdPtvsIQFoVcsmDXUO%2BQkg%3D","sasType":"account","validityPeriod":"PT2H","attributes":{"enabled":true,"created":1526679113,"updated":1526679113,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['427'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:53 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5fab085e.vault.azure.net/secrets/kvsa15fab085e-acctall/?api-version=7.0-preview + response: + body: {string: '{"value":"?sv=2017-07-29&ss=bfqt&srt=sco&sp=acdlpruw&se=2018-05-18T23:31:54Z&sig=%2FV2kktpbpQ6o1T6edaEAGBfQcheR1ya4VmmS3vdom9Q%3D","contentType":"application/vnd.ms-sastoken-storage","id":"https://vault5fab085e.vault.azure.net/secrets/kvsa15fab085e-acctall","managed":true,"attributes":{"enabled":true,"exp":1526686314,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['348'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:53 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10)] + x-ms-date: ['Fri, 18 May 2018 21:31:54 GMT'] + x-ms-version: ['2017-07-29'] + method: PUT + uri: https://kvsa15fab085e.blob.core.windows.net/blobcontainer?sv=2017-07-29&ss=bfqt&srt=sco&sp=acdlpruw&se=2018-05-18T23:31:54Z&sig=%2FV2kktpbpQ6o1T6edaEAGBfQcheR1ya4VmmS3vdom9Q%3D&restype=container + response: + body: {string: ''} + headers: + date: ['Fri, 18 May 2018 21:31:54 GMT'] + etag: ['"0x8D5BD06C72FC339"'] + last-modified: ['Fri, 18 May 2018 21:31:55 GMT'] + server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] + transfer-encoding: [chunked] + x-ms-version: ['2017-07-29'] + status: {code: 201, message: Created} +- request: + body: test blob1 data + headers: + Connection: [keep-alive] + Content-Length: ['15'] + User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10)] + x-ms-blob-type: [BlockBlob] + x-ms-date: ['Fri, 18 May 2018 21:31:55 GMT'] + x-ms-version: ['2017-07-29'] + method: PUT + uri: https://kvsa15fab085e.blob.core.windows.net/blobcontainer/blob1?sv=2017-07-29&ss=bfqt&srt=sco&sp=acdlpruw&se=2018-05-18T23:31:54Z&sig=%2FV2kktpbpQ6o1T6edaEAGBfQcheR1ya4VmmS3vdom9Q%3D + response: + body: {string: ''} + headers: + content-md5: [nTqGDfAnfDtU7tyJ8UJqKA==] + date: ['Fri, 18 May 2018 21:31:54 GMT'] + etag: ['"0x8D5BD06C751996E"'] + last-modified: ['Fri, 18 May 2018 21:31:55 GMT'] + server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] + transfer-encoding: [chunked] + x-ms-request-server-encrypted: ['true'] + x-ms-version: ['2017-07-29'] + status: {code: 201, message: Created} +- request: + body: '{"templateUri": "https://kvsa15fab085e.blob.core.windows.net/blobcontainer?restype=container&se=2020-01-01&sp=rwdl&sv=2017-07-29&sr=c&sig=0RaJgVOfs0vJD7ZTqiQgjBhaZ4a425P1uNUn1SNhtWY%3D", + "sasType": "service", "validityPeriod": "PT2H", "attributes": {"enabled": true}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['267'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: PUT + uri: https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/sas/blobcontall?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/sas/blobcontall","sid":"https://vault5fab085e.vault.azure.net/secrets/kvsa15fab085e-blobcontall","templateUri":"https://kvsa15fab085e.blob.core.windows.net/blobcontainer?restype=container&se=2020-01-01&sp=rwdl&sv=2017-07-29&sr=c&sig=0RaJgVOfs0vJD7ZTqiQgjBhaZ4a425P1uNUn1SNhtWY%3D","sasType":"service","validityPeriod":"PT2H","attributes":{"enabled":true,"created":1526679115,"updated":1526679115,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['492'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:55 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5fab085e.vault.azure.net/secrets/kvsa15fab085e-blobcontall/?api-version=7.0-preview + response: + body: {string: '{"value":"?sv=2017-07-29&sr=c&sp=rwdl&se=2018-05-18T23%3A31%3A56Z&sig=QYb1R5Qu2TiCgGTxAEv8RR6VMGlMHtQ0Y1gGjYHWIJ8%3D","contentType":"application/vnd.ms-sastoken-storage","id":"https://vault5fab085e.vault.azure.net/secrets/kvsa15fab085e-blobcontall","managed":true,"attributes":{"enabled":true,"exp":1526686316,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['339'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:56 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: test blob2 data + headers: + Connection: [keep-alive] + Content-Length: ['15'] + User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10)] + x-ms-blob-type: [BlockBlob] + x-ms-date: ['Fri, 18 May 2018 21:31:56 GMT'] + x-ms-version: ['2017-07-29'] + method: PUT + uri: https://kvsa15fab085e.blob.core.windows.net/blobcontainer/blob2?sv=2017-07-29&sr=c&sp=rwdl&se=2018-05-18T23%3A31%3A56Z&sig=QYb1R5Qu2TiCgGTxAEv8RR6VMGlMHtQ0Y1gGjYHWIJ8%3D + response: + body: {string: ''} + headers: + content-md5: [862XuMyOsyybSzYVY9l8xg==] + date: ['Fri, 18 May 2018 21:31:56 GMT'] + etag: ['"0x8D5BD06C826F7F2"'] + last-modified: ['Fri, 18 May 2018 21:31:56 GMT'] + server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] + transfer-encoding: [chunked] + x-ms-request-server-encrypted: ['true'] + x-ms-version: ['2017-07-29'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Connection: [keep-alive] + User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10)] + x-ms-date: ['Fri, 18 May 2018 21:31:56 GMT'] + x-ms-version: ['2017-07-29'] + method: GET + uri: https://kvsa15fab085e.blob.core.windows.net/blobcontainer?sv=2017-07-29&sr=c&sp=rwdl&se=2018-05-18T23%3A31%3A56Z&sig=QYb1R5Qu2TiCgGTxAEv8RR6VMGlMHtQ0Y1gGjYHWIJ8%3D&restype=container&comp=list + response: + body: {string: "\uFEFFblob1Fri,\ + \ 18 May 2018 21:31:55 GMT0x8D5BD06C751996E15application/octet-streamnTqGDfAnfDtU7tyJ8UJqKA==BlockBlobunlockedavailabletrueblob2Fri,\ + \ 18 May 2018 21:31:56 GMT0x8D5BD06C826F7F215application/octet-stream862XuMyOsyybSzYVY9l8xg==BlockBlobunlockedavailabletrue"} + headers: + content-type: [application/xml] + date: ['Fri, 18 May 2018 21:31:56 GMT'] + server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] + transfer-encoding: [chunked] + x-ms-version: ['2017-07-29'] + status: {code: 200, message: OK} +- request: + body: null + headers: + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10)] + x-ms-date: ['Fri, 18 May 2018 21:31:57 GMT'] + x-ms-version: ['2017-07-29'] + method: DELETE + uri: https://kvsa15fab085e.blob.core.windows.net/blobcontainer/blob1?sv=2017-07-29&sr=c&sp=rwdl&se=2018-05-18T23%3A31%3A56Z&sig=QYb1R5Qu2TiCgGTxAEv8RR6VMGlMHtQ0Y1gGjYHWIJ8%3D + response: + body: {string: ''} + headers: + date: ['Fri, 18 May 2018 21:31:56 GMT'] + server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] + transfer-encoding: [chunked] + x-ms-delete-type-permanent: ['true'] + x-ms-version: ['2017-07-29'] + status: {code: 202, message: Accepted} +- request: + body: null + headers: + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10)] + x-ms-date: ['Fri, 18 May 2018 21:31:57 GMT'] + x-ms-version: ['2017-07-29'] + method: DELETE + uri: https://kvsa15fab085e.blob.core.windows.net/blobcontainer/blob2?sv=2017-07-29&sr=c&sp=rwdl&se=2018-05-18T23%3A31%3A56Z&sig=QYb1R5Qu2TiCgGTxAEv8RR6VMGlMHtQ0Y1gGjYHWIJ8%3D + response: + body: {string: ''} + headers: + date: ['Fri, 18 May 2018 21:31:56 GMT'] + server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] + transfer-encoding: [chunked] + x-ms-delete-type-permanent: ['true'] + x-ms-version: ['2017-07-29'] + status: {code: 202, message: Accepted} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/sas?maxresults=5&api-version=7.0-preview + response: + body: {string: '{"value":[{"id":"https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/sas/acctall","sid":"https://vault5fab085e.vault.azure.net/secrets/kvsa15fab085e-acctall","attributes":{"enabled":true,"created":1526679113,"updated":1526679113,"recoveryLevel":"Purgeable"}},{"id":"https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/sas/blobcontall","sid":"https://vault5fab085e.vault.azure.net/secrets/kvsa15fab085e-blobcontall","attributes":{"enabled":true,"created":1526679115,"updated":1526679115,"recoveryLevel":"Purgeable"}}],"nextLink":null}'} + headers: + cache-control: [no-cache] + content-length: ['549'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:57 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/sas/acctall?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/sas/acctall","sid":"https://vault5fab085e.vault.azure.net/secrets/kvsa15fab085e-acctall","templateUri":"se=2020-01-01&sp=acdlpruw&sv=2017-07-29&ss=bfqt&srt=sco&sig=YWdFIAQJDor%2B8o/PGcC3XhdPtvsIQFoVcsmDXUO%2BQkg%3D","sasType":"account","validityPeriod":"PT2H","attributes":{"enabled":true,"created":1526679113,"updated":1526679113,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['427'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:58 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: GET + uri: https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/sas/blobcontall?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e/sas/blobcontall","sid":"https://vault5fab085e.vault.azure.net/secrets/kvsa15fab085e-blobcontall","templateUri":"https://kvsa15fab085e.blob.core.windows.net/blobcontainer?restype=container&se=2020-01-01&sp=rwdl&sv=2017-07-29&sr=c&sig=0RaJgVOfs0vJD7ZTqiQgjBhaZ4a425P1uNUn1SNhtWY%3D","sasType":"service","validityPeriod":"PT2H","attributes":{"enabled":true,"created":1526679115,"updated":1526679115,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['492'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:58 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.2 (Windows-10-10.0.17134-SP0) requests/2.18.4 msrest/0.4.27 + msrest_azure/0.4.25 azure-keyvault/1.0.0b1 Azure-SDK-For-Python] + accept-language: [en-US] + method: DELETE + uri: https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e?api-version=7.0-preview + response: + body: {string: '{"id":"https://vault5fab085e.vault.azure.net/storage/kvsa15fab085e","resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_storage_test_e2e5fab085e/providers/Microsoft.Storage/storageAccounts/kvsa15fab085e","activeKeyName":"key1","autoRegenerateKey":true,"regenerationPeriod":"P30D","attributes":{"enabled":true,"created":1526679113,"updated":1526679113,"recoveryLevel":"Purgeable"}}'} + headers: + cache-control: [no-cache] + content-length: ['414'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 18 May 2018 21:31:58 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000;includeSubDomains] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-keyvault-network-info: [addr=167.220.0.114;act_addr_fam=InterNetwork;] + x-ms-keyvault-region: [westus] + x-ms-keyvault-service-version: [1.0.0.848] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/azure-keyvault/tests/test_certificates.py b/azure-keyvault/tests/test_certificates.py new file mode 100644 index 000000000000..d656a3cc4b14 --- /dev/null +++ b/azure-keyvault/tests/test_certificates.py @@ -0,0 +1,515 @@ +import time +from devtools_testutils import ResourceGroupPreparer +from keyvault_preparer import KeyVaultPreparer +from keyvault_testcase import KeyvaultTestCase +from azure.keyvault import KeyVaultId +from azure.keyvault.models import ( + SecretProperties, KeyProperties, CertificatePolicy, IssuerParameters, X509CertificateProperties, + SubjectAlternativeNames, IssuerCredentials, OrganizationDetails, AdministratorDetails, Contact +) + +class KeyVaultCertificateTest(KeyvaultTestCase): + + def _import_common_certificate(self, vault_uri, cert_name): + cert_content = 'MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ' + cert_password = '123' + cert_policy = CertificatePolicy(key_properties=KeyProperties(exportable=True, + key_type='RSA', + key_size=2048, + reuse_key=False), + secret_properties=SecretProperties(content_type='application/x-pkcs12')) + return ( + self.client.import_certificate(vault_uri, cert_name, cert_content, cert_password, cert_policy), + cert_policy + ) + + def _validate_certificate_operation(self, pending_cert, vault, cert_name, cert_policy): + self.assertIsNotNone(pending_cert) + self.assertIsNotNone(pending_cert.csr) + self.assertEqual(cert_policy.issuer_parameters.name, pending_cert.issuer_parameters.name) + pending_id = KeyVaultId.parse_certificate_operation_id(pending_cert.id) + self.assertEqual(pending_id.vault.strip('/'), vault.strip('/')) + self.assertEqual(pending_id.name, cert_name) + + def _validate_certificate_bundle(self, cert, vault, cert_name, cert_policy): + cert_id = KeyVaultId.parse_certificate_id(cert.id) + self.assertEqual(cert_id.vault.strip('/'), vault.strip('/')) + self.assertEqual(cert_id.name, cert_name) + self.assertIsNotNone(cert) + self.assertIsNotNone(cert.x509_thumbprint) + self.assertIsNotNone(cert.cer) + self.assertIsNotNone(cert.attributes) + self.assertIsNotNone(cert.policy) + self.assertIsNotNone(cert.policy.id) + self.assertIsNotNone(cert.policy.issuer_parameters) + self.assertIsNotNone(cert.policy.lifetime_actions) + self.assertEqual(cert.policy.key_properties, cert_policy.key_properties) + self.assertEqual(cert.policy.secret_properties, cert_policy.secret_properties) + self.assertIsNotNone(cert.policy.x509_certificate_properties) + if cert_policy.x509_certificate_properties: + self.assertEqual(cert.policy.x509_certificate_properties.validity_in_months, + cert_policy.x509_certificate_properties.validity_in_months) + KeyVaultId.parse_secret_id(cert.sid) + KeyVaultId.parse_key_id(cert.kid) + + def _validate_certificate_list(self, certificates, expected): + for cert in certificates: + if cert.id in expected.keys(): + del expected[cert.id] + else: + self.assertTrue(False) + + def _validate_issuer_bundle(self, bundle, vault, name, provider, credentials, org_details): + self.assertIsNotNone(bundle) + self.assertIsNotNone(bundle.attributes) + self.assertIsNotNone(bundle.organization_details) + self.assertEqual(bundle.provider, provider) + + issuer_id = KeyVaultId.parse_certificate_issuer_id(bundle.id) + self.assertEqual(issuer_id.vault.strip('/'), vault.strip('/')) + self.assertEqual(issuer_id.name, name) + + if credentials: + self.assertEqual(bundle.credentials.account_id, credentials.account_id) + if org_details: + # To Accomodate tiny change in == semantic in msrest 0.4.20 + org_details.additional_properties = {} + bundle.organization_details.additional_properties = {} + + self.assertEqual(bundle.organization_details, org_details) + + def _validate_certificate_issuer_list(self, issuers, expected): + for issuer in issuers: + KeyVaultId.parse_certificate_issuer_id(issuer.id) + provider = expected[issuer.id] + if provider: + self.assertEqual(provider, issuer.provider) + del expected[issuer.id] + + def _validate_certificate_contacts(self, contacts, vault, expected): + contact_id = '{}certificates/contacts'.format(vault) + self.assertEqual(contact_id, contacts.id) + self.assertEqual(len(contacts.contact_list), len(expected)) + + for contact in contacts.contact_list: + exp_contact = next(x for x in expected if x.email_address == contact.email_address) + self.assertEqual(contact, exp_contact) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_crud_operations(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + cert_name = self.get_resource_name('cert') + + cert_policy = CertificatePolicy(key_properties=KeyProperties(exportable=True, + key_type='RSA', + key_size=2048, + reuse_key=False), + secret_properties=SecretProperties(content_type='application/x-pkcs12'), + issuer_parameters=IssuerParameters(name='Self'), + x509_certificate_properties=X509CertificateProperties( + subject='CN=*.microsoft.com', + subject_alternative_names=SubjectAlternativeNames( + dns_names=['onedrive.microsoft.com', 'xbox.microsoft.com'] + ), + validity_in_months=24 + )) + + # create certificate + interval_time = 5 if not self.is_playback() else 0 + cert_operation = self.client.create_certificate(vault_uri, cert_name, cert_policy) + while True: + pending_cert = self.client.get_certificate_operation(vault_uri, cert_name) + self._validate_certificate_operation(pending_cert, vault_uri, cert_name, cert_policy) + if pending_cert.status.lower() == 'completed': + cert_id = KeyVaultId.parse_certificate_operation_id(pending_cert.target) + break + elif pending_cert.status.lower() != 'inprogress': + raise Exception('Unknown status code for pending certificate: {}'.format(pending_cert)) + time.sleep(interval_time) + + # get certificate + cert_bundle = self.client.get_certificate(cert_id.vault, cert_id.name, '') + self._validate_certificate_bundle(cert_bundle, vault_uri, cert_name, cert_policy) + + # get certificate as secret + secret_id = KeyVaultId.parse_secret_id(cert_bundle.sid) + secret_bundle = self.client.get_secret(secret_id.vault, secret_id.name, secret_id.version) + + # update certificate + cert_policy.tags = {'tag1': 'value1'} + cert_bundle = self.client.update_certificate(cert_id.vault, cert_id.name, cert_id.version, cert_policy) + self._validate_certificate_bundle(cert_bundle, vault_uri, cert_name, cert_policy) + + # delete certificate + cert_bundle = self.client.delete_certificate(vault_uri, cert_name) + self._validate_certificate_bundle(cert_bundle, vault_uri, cert_name, cert_policy) + + # get certificate returns not found + try: + self.client.get_certificate(cert_id.vault, cert_id.name, '') + self.fail('Get should fail') + except Exception as ex: + if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): + raise ex + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_import(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + cert_name = self.get_resource_name('certimp') + + # import certificate( + (cert_bundle, cert_policy) = self._import_common_certificate(vault_uri, cert_name) + self._validate_certificate_bundle(cert_bundle, vault_uri, cert_name, cert_policy) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_list(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + + max_certificates = self.list_test_size + expected = {} + + # import some certificates + for x in range(0, max_certificates): + cert_name = self.get_resource_name('cert{}'.format(x)) + cert_bundle = None + error_count = 0 + while not cert_bundle: + try: + cert_bundle = self._import_common_certificate(vault_uri, cert_name)[0] + cid = KeyVaultId.parse_certificate_id(cert_bundle.id).base_id.strip('/') + expected[cid] = cert_bundle.attributes + except Exception as ex: + if hasattr(ex, 'message') and 'Throttled' in ex.message: + error_count += 1 + time.sleep(2.5 * error_count) + continue + else: + raise ex + + # list certificates + result = list(self.client.get_certificates(vault_uri, self.list_test_size)) + self._validate_certificate_list(result, expected) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_list_versions(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + cert_name = self.get_resource_name('certver') + + max_certificates = self.list_test_size + expected = {} + + # import same certificates as different versions + for x in range(0, max_certificates): + cert_bundle = None + error_count = 0 + while not cert_bundle: + try: + cert_bundle = self._import_common_certificate(vault_uri, cert_name)[0] + cid = KeyVaultId.parse_certificate_id(cert_bundle.id).id.strip('/') + expected[cid] = cert_bundle.attributes + except Exception as ex: + if hasattr(ex, 'message') and 'Throttled' in ex.message: + error_count += 1 + time.sleep(2.5 * error_count) + continue + else: + raise ex + + # list certificate versions + self._validate_certificate_list(list(self.client.get_certificate_versions(vault_uri, cert_name)), expected) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_crud_issuer(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + + issuer_name = 'pythonIssuer' + issuer_credentials = IssuerCredentials(account_id='keyvaultuser', password='password') + organization_details = OrganizationDetails( + admin_details=[AdministratorDetails(first_name='Jane', + last_name='Doe', + email_address='admin@contoso.com', + phone='4256666666')]) + + # create certificate issuer + issuer_bundle = self.client.set_certificate_issuer(vault_uri, issuer_name, 'test', issuer_credentials, + organization_details) + self._validate_issuer_bundle(issuer_bundle, vault_uri, issuer_name, 'test', issuer_credentials, + organization_details) + + # get certificate issuer + issuer_bundle = self.client.get_certificate_issuer(vault_uri, issuer_name) + self._validate_issuer_bundle(issuer_bundle, vault_uri, issuer_name, 'test', issuer_credentials, + organization_details) + + # update certificate issue + new_credentials = IssuerCredentials(account_id='xboxuser', password='security') + new_org_details = OrganizationDetails( + admin_details=[AdministratorDetails(first_name='Jane II', + last_name='Doe', + email_address='admin@contoso.com', + phone='1111111111')]) + issuer_bundle = self.client.update_certificate_issuer(vault_uri, issuer_name, 'test', new_credentials, + new_org_details) + self._validate_issuer_bundle(issuer_bundle, vault_uri, issuer_name, 'test', new_credentials, new_org_details) + + # delete certificate issuer( + self.client.delete_certificate_issuer(vault_uri, issuer_name) + + # get certificate issuer returns not found + try: + self.client.get_certificate_issuer(vault_uri, issuer_name) + self.fail('Get should fail') + except Exception as ex: + if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): + raise ex + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_list_issuers(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + + max_issuers = self.list_test_size + expected = {} + + # create some certificate issuers( + for x in range(0, max_issuers): + issuer_name = 'pythonIssuer{}'.format(x + 1) + issuer_credentials = IssuerCredentials(account_id='keyvaultuser', password='password') + organization_details = OrganizationDetails( + admin_details=[AdministratorDetails(first_name='Jane', + last_name='Doe', + email_address='admin@contoso.com', + phone='4256666666')]) + error_count = 0 + issuer_bundle = None + while not issuer_bundle: + try: + issuer_bundle = self.client.set_certificate_issuer(vault_uri, issuer_name, 'test', + issuer_credentials, organization_details) + expected[issuer_bundle.id] = issuer_bundle.provider + except Exception as ex: + if hasattr(ex, 'message') and 'Throttled' in ex.message: + error_count += 1 + time.sleep(2.5 * error_count) + continue + else: + raise ex + + # list certificate issuers + result = list(self.client.get_certificate_issuers(vault_uri, self.list_test_size)) + self._validate_certificate_issuer_list(result, expected) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_async_request_cancellation_and_deletion(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + + cert_name = 'asyncCanceledDeletedCert' + cert_policy = CertificatePolicy(key_properties=KeyProperties(exportable=True, + key_type='RSA', + key_size=2048, + reuse_key=False), + secret_properties=SecretProperties(content_type='application/x-pkcs12'), + issuer_parameters=IssuerParameters(name='Self'), + x509_certificate_properties=X509CertificateProperties( + subject='CN=*.microsoft.com', + subject_alternative_names=SubjectAlternativeNames( + dns_names=['onedrive.microsoft.com', 'xbox.microsoft.com'] + ), + validity_in_months=24 + )) + + # create certificate + self.client.create_certificate(vault_uri, cert_name, cert_policy) + + # cancel certificate operation + cancel_operation = self.client.update_certificate_operation(vault_uri, cert_name, True) + self.assertTrue(hasattr(cancel_operation, 'cancellation_requested')) + self.assertTrue(cancel_operation.cancellation_requested) + self._validate_certificate_operation(cancel_operation, vault_uri, cert_name, cert_policy) + + retrieved_operation = self.client.get_certificate_operation(vault_uri, cert_name) + self.assertTrue(hasattr(retrieved_operation, 'cancellation_requested')) + self.assertTrue(retrieved_operation.cancellation_requested) + self._validate_certificate_operation(retrieved_operation, vault_uri, cert_name, cert_policy) + + # delete certificate operation + deleted_operation = self.client.delete_certificate_operation(vault_uri, cert_name) + self.assertIsNotNone(deleted_operation) + self._validate_certificate_operation(deleted_operation, vault_uri, cert_name, cert_policy) + + try: + self.client.get_certificate_operation(vault_uri, cert_name) + self.fail('Get should fail') + except Exception as ex: + if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): + raise ex + + # delete cancelled certificate operation + self.client.delete_certificate(vault_uri, cert_name) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_crud_contacts(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + + contact_list = [ + Contact(email_address='admin@contoso.com', + name='John Doe', + phone='1111111111'), + Contact(email_address='admin2@contoso.com', + name='John Doe2', + phone='2222222222') + ] + + # create certificate contacts + contacts = self.client.set_certificate_contacts(vault_uri, contact_list) + self._validate_certificate_contacts(contacts, vault_uri, contact_list) + + # get certificate contacts + contacts = self.client.get_certificate_contacts(vault_uri) + self._validate_certificate_contacts(contacts, vault_uri, contact_list) + + # delete certificate contacts + contacts = self.client.delete_certificate_contacts(vault_uri) + self._validate_certificate_contacts(contacts, vault_uri, contact_list) + + # get certificate contacts returns not found + try: + contacts = self.client.get_certificate_contacts(vault_uri) + self.fail('Get should fail') + except Exception as ex: + if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): + raise ex + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_policy(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + + cert_name = 'policyCertificate' + + # get certificate policy + (cert_bundle, cert_policy) = self._import_common_certificate(vault_uri, cert_name) + retrieved_policy = self.client.get_certificate_policy(vault_uri, cert_name) + self.assertIsNotNone(retrieved_policy) + + # update certificate policy + cert_policy = CertificatePolicy(key_properties=KeyProperties(exportable=True, + key_type='RSA', + key_size=2048, + reuse_key=False), + secret_properties=SecretProperties(content_type='application/x-pkcs12'), + issuer_parameters=IssuerParameters(name='Self') + ) + + self.client.update_certificate_policy(vault_uri, cert_name, cert_policy) + updated_cert_policy = self.client.get_certificate_policy(vault_uri, cert_name) + self.assertIsNotNone(updated_cert_policy) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_manual_enrolled(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + + cert_name = 'unknownIssuerCert' + cert_policy = CertificatePolicy(key_properties=KeyProperties(exportable=True, + key_type='RSA', + key_size=2048, + reuse_key=False), + secret_properties=SecretProperties(content_type='application/x-pkcs12'), + issuer_parameters=IssuerParameters(name='Unknown'), + x509_certificate_properties=X509CertificateProperties( + subject='CN=*.microsoft.com', + subject_alternative_names=SubjectAlternativeNames( + dns_names=['onedrive.microsoft.com', 'xbox.microsoft.com'] + ), + validity_in_months=24 + )) + + # get pending certificate signing request + cert_operation = self.client.create_certificate(vault_uri, cert_name, cert_policy) + pending_version_csr = self.client.get_pending_certificate_signing_request(vault_uri, cert_name) + try: + self.assertEqual(cert_operation.csr, pending_version_csr) + except Exception as ex: + pass + finally: + self.client.delete_certificate(vault_uri, cert_name) + + @ResourceGroupPreparer() + @KeyVaultPreparer(enable_soft_delete=True) + def test_recover_and_purge(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + + certs = {} + cert_policy = CertificatePolicy(key_properties=KeyProperties(exportable=True, + key_type='RSA', + key_size=2048, + reuse_key=False), + secret_properties=SecretProperties(content_type='application/x-pkcs12'), + issuer_parameters=IssuerParameters(name='Self'), + x509_certificate_properties=X509CertificateProperties( + subject='CN=*.microsoft.com', + subject_alternative_names=SubjectAlternativeNames( + dns_names=['onedrive.microsoft.com', 'xbox.microsoft.com'] + ), + validity_in_months=24 + )) + # create certificates to recover + for i in range(0, self.list_test_size): + cert_name = self.get_resource_name('certrec{}'.format(str(i))) + certs[cert_name] = self._import_common_certificate(vault_uri, cert_name) + + # create certificates to purge + for i in range(0, self.list_test_size): + cert_name = self.get_resource_name('certprg{}'.format(str(i))) + certs[cert_name] = self._import_common_certificate(vault_uri, cert_name) + + # delete all certificates + for cert_name in certs.keys(): + delcert = self.client.delete_certificate(vault_uri, cert_name) + print(delcert) + + if not self.is_playback(): + time.sleep(30) + + # validate all our deleted certificates are returned by get_deleted_certificates + deleted = [KeyVaultId.parse_certificate_id(s.id).name for s in self.client.get_deleted_certificates(vault_uri)] + # self.assertTrue(all(s in deleted for s in certs.keys())) + + # recover select secrets + for certificate_name in [s for s in certs.keys() if s.startswith('certrec')]: + self.client.recover_deleted_certificate(vault_uri, certificate_name) + + # purge select secrets + for certificate_name in [s for s in certs.keys() if s.startswith('certprg')]: + self.client.purge_deleted_certificate(vault_uri, certificate_name) + + if not self.is_playback(): + time.sleep(30) + + # validate none of our deleted certificates are returned by get_deleted_certificates + deleted = [KeyVaultId.parse_secret_id(s.id).name for s in self.client.get_deleted_certificates(vault_uri)] + self.assertTrue(not any(s in deleted for s in certs.keys())) + + # validate the recovered certificates + expected = {k: v for k, v in certs.items() if k.startswith('certrec')} + actual = {k: self.client.get_certificate(vault_uri, k, KeyVaultId.version_none) for k in expected.keys()} + self.assertEqual(len(set(expected.keys()) & set(actual.keys())), len(expected)) diff --git a/azure-keyvault/tests/test_custom.py b/azure-keyvault/tests/test_custom.py new file mode 100644 index 000000000000..c5a1003f2f79 --- /dev/null +++ b/azure-keyvault/tests/test_custom.py @@ -0,0 +1,180 @@ +import unittest +from azure.keyvault import KeyVaultId, HttpBearerChallengeCache, HttpBearerChallenge +try: + from unittest.mock import MagicMock +except ImportError: + from mock import MagicMock + +class KeyVaultCustomLayerTest(unittest.TestCase): + def _get_expected(self, collection, vault, name, version=None): + return { + 'vault': 'https://{}.vault.azure.net'.format(vault), + 'collection': collection, + 'name': name, + 'version': version or KeyVaultId.version_none + } + + def test_create_object_id(self): + # success scenarios + expected = self._get_expected('keys', 'myvault', 'mykey') + res = KeyVaultId.create_object_id('keys', 'https://myvault.vault.azure.net', ' mykey', None) + self.assertEqual(res.__dict__, expected) + + res = KeyVaultId.create_object_id('keys', 'https://myvault.vault.azure.net', ' mykey', ' ') + self.assertEqual(res.__dict__, expected) + + expected = self._get_expected('keys', 'myvault', 'mykey', 'abc123') + res = KeyVaultId.create_object_id(' keys ', 'https://myvault.vault.azure.net', ' mykey ', ' abc123 ') + self.assertEqual(res.__dict__, expected) + + # failure scenarios + with self.assertRaises(TypeError): + KeyVaultId.create_object_id('keys', 'https://myvault.vault.azure.net', ['stuff'], '') + with self.assertRaises(ValueError): + KeyVaultId.create_object_id('keys', 'https://myvault.vault.azure.net', ' ', '') + with self.assertRaises(ValueError): + KeyVaultId.create_object_id('keys', 'myvault.vault.azure.net', 'mykey', '') + + def test_parse_object_id(self): + # success scenarios + expected = self._get_expected('keys', 'myvault', 'mykey', 'abc123') + res = KeyVaultId.parse_object_id('keys', 'https://myvault.vault.azure.net/keys/mykey/abc123') + self.assertEqual(res.__dict__, expected) + + expected = self._get_expected('keys', 'myvault', 'mykey') + res = KeyVaultId.parse_object_id('keys', 'https://myvault.vault.azure.net/keys/mykey') + self.assertEqual(res.__dict__, expected) + + # failure scenarios + with self.assertRaises(ValueError): + KeyVaultId.parse_object_id('secret', 'https://myvault.vault.azure.net/keys/mykey/abc123') + with self.assertRaises(ValueError): + KeyVaultId.parse_object_id('keys', 'https://myvault.vault.azure.net/keys/mykey/abc123/extra') + with self.assertRaises(ValueError): + KeyVaultId.parse_object_id('keys', 'https://myvault.vault.azure.net') + + def test_create_key_id(self): + expected = self._get_expected('keys', 'myvault', 'mykey') + res = KeyVaultId.create_key_id('https://myvault.vault.azure.net', ' mykey', None) + self.assertEqual(res.__dict__, expected) + + expected = self._get_expected('keys', 'myvault', 'mykey', 'abc123') + res = KeyVaultId.create_key_id('https://myvault.vault.azure.net', ' mykey ', ' abc123 ') + self.assertEqual(res.__dict__, expected) + + def test_parse_key_id(self): + expected = self._get_expected('keys', 'myvault', 'mykey', 'abc123') + res = KeyVaultId.parse_key_id('https://myvault.vault.azure.net/keys/mykey/abc123') + self.assertEqual(res.__dict__, expected) + + expected = self._get_expected('keys', 'myvault', 'mykey') + res = KeyVaultId.parse_key_id('https://myvault.vault.azure.net/keys/mykey') + self.assertEqual(res.__dict__, expected) + + def test_create_secret_id(self): + expected = self._get_expected('secrets', 'myvault', 'mysecret') + res = KeyVaultId.create_secret_id('https://myvault.vault.azure.net', ' mysecret', None) + self.assertEqual(res.__dict__, expected) + + expected = self._get_expected('secrets', 'myvault', 'mysecret', 'abc123') + res = KeyVaultId.create_secret_id('https://myvault.vault.azure.net', ' mysecret ', ' abc123 ') + self.assertEqual(res.__dict__, expected) + + def test_parse_secret_id(self): + expected = self._get_expected('secrets', 'myvault', 'mysecret', 'abc123') + res = KeyVaultId.parse_secret_id('https://myvault.vault.azure.net/secrets/mysecret/abc123') + self.assertEqual(res.__dict__, expected) + + expected = self._get_expected('secrets', 'myvault', 'mysecret') + res = KeyVaultId.parse_secret_id('https://myvault.vault.azure.net/secrets/mysecret') + self.assertEqual(res.__dict__, expected) + + def test_create_certificate_id(self): + expected = self._get_expected('certificates', 'myvault', 'mycert') + res = KeyVaultId.create_certificate_id('https://myvault.vault.azure.net', ' mycert', None) + self.assertEqual(res.__dict__, expected) + + expected = self._get_expected('certificates', 'myvault', 'mycert', 'abc123') + res = KeyVaultId.create_certificate_id('https://myvault.vault.azure.net', 'mycert', ' abc123') + self.assertEqual(res.__dict__, expected) + + def test_parse_certificate_id(self): + expected = self._get_expected('certificates', 'myvault', 'mycert', 'abc123') + res = KeyVaultId.parse_certificate_id('https://myvault.vault.azure.net/certificates/mycert/abc123') + self.assertEqual(res.__dict__, expected) + + expected = self._get_expected('certificates', 'myvault', 'mycert') + res = KeyVaultId.parse_certificate_id('https://myvault.vault.azure.net/certificates/mycert') + self.assertEqual(res.__dict__, expected) + + def test_create_certificate_operation_id(self): + expected = self._get_expected('certificates', 'myvault', 'mycert', 'pending') + res = KeyVaultId.create_certificate_operation_id('https://myvault.vault.azure.net', ' mycert') + self.assertEqual(res.__dict__, expected) + + def test_parse_certificate_operation_id(self): + expected = self._get_expected('certificates', 'myvault', 'mycert', 'pending') + res = KeyVaultId.parse_certificate_operation_id('https://myvault.vault.azure.net/certificates/mycert/pending') + self.assertEqual(res.__dict__, expected) + + def test_create_certificate_issuer_id(self): + expected = self._get_expected('certificates', 'myvault', 'myissuer') + res = KeyVaultId.create_certificate_issuer_id('https://myvault.vault.azure.net', 'myissuer') + self.assertEqual(res.__dict__, expected) + + def test_parse_certificate_issuer_id(self): + expected = self._get_expected('certificates', 'myvault', 'myissuer') + res = KeyVaultId.parse_certificate_issuer_id('https://myvault.vault.azure.net/certificates/issuers/myissuer') + self.assertEqual(res.__dict__, expected) + + def test_bearer_challenge_cache(self): + test_challenges = [] + HttpBearerChallengeCache.clear() + for x in range(0, 3): + challenge = MagicMock() + challenge.source_authority = 'mytest{}.url.com'.format(x) + url = 'https://mytest{}.url.com'.format(x) + test_challenges.append({ + 'url': url, + 'challenge': challenge + }) + HttpBearerChallengeCache.set_challenge_for_url(url, challenge) + + self.assertEqual(len(HttpBearerChallengeCache._cache), 3) + + cached_challenge = HttpBearerChallengeCache.get_challenge_for_url(test_challenges[1]['url']) + self.assertTrue(cached_challenge.source_authority in test_challenges[1]['url']) + + # test remove + HttpBearerChallengeCache.remove_challenge_for_url(test_challenges[0]['url']) + self.assertIsNone(HttpBearerChallengeCache.get_challenge_for_url(test_challenges[0]['url'])) + + # test clear + self.assertEqual(len(HttpBearerChallengeCache._cache), 2) + HttpBearerChallengeCache.clear() + self.assertEqual(len(HttpBearerChallengeCache._cache), 0) + + with self.assertRaises(ValueError): + HttpBearerChallengeCache.set_challenge_for_url('https://diffurl.com', test_challenges[0]['challenge']) + + def test_bearer_challenge(self): + mock_bearer_challenge = ' Bearer authorization="https://login.windows.net/mock-id", resource="https://vault.azure.net"' + + self.assertTrue(HttpBearerChallenge.is_bearer_challenge(mock_bearer_challenge)) + self.assertFalse(HttpBearerChallenge.is_bearer_challenge('Some other string')) + + with self.assertRaises(ValueError): + HttpBearerChallenge('https://test.uri.com', 'Non bearer string') + + with self.assertRaises(ValueError): + HttpBearerChallenge('ftp://test.ftp.com', mock_bearer_challenge) + + challenge = HttpBearerChallenge('https://test.uri.com', mock_bearer_challenge) + self.assertEqual(challenge.get_authorization_server(), 'https://login.windows.net/mock-id') + self.assertEqual(challenge.get_resource(), 'https://vault.azure.net') + self.assertEqual(challenge.get_value('resource'), 'https://vault.azure.net') + self.assertEqual(challenge.get_scope(), '') + + mock_bearer_challenge = ' Bearer authorization_uri="https://login.windows.net/mock-id", resource="https://vault.azure.net"' + challenge = HttpBearerChallenge('https://test.uri.com', mock_bearer_challenge) + self.assertEqual(challenge.get_authorization_server(), 'https://login.windows.net/mock-id') diff --git a/azure-keyvault/tests/test_internal.py b/azure-keyvault/tests/test_internal.py new file mode 100644 index 000000000000..6ac5ccfb48dd --- /dev/null +++ b/azure-keyvault/tests/test_internal.py @@ -0,0 +1,281 @@ +import unittest +import os +import random +import string +import json +import uuid +import time +from azure.keyvault.custom.internal import _bytes_to_int, _int_to_bytes, _int_to_bigendian_8_bytes, \ + _bstr_to_b64url, _b64_to_bstr, _b64_to_str, _str_to_b64url, _a128cbc_hs256_decrypt, _a128cbc_hs256_encrypt, \ + _RsaKey, _JwsHeader, _JweHeader, _JwsObject, _JweObject + + +class EncodingTests(unittest.TestCase): + def test_int_byte_conversion(self): + # generate a random byte + b = os.urandom(1) + i = _bytes_to_int(b) + self._assert_bytes_significantly_equal(b, _int_to_bytes(i)) + + # generate a random number of random bytes + b = os.urandom(random.randint(1, 32)) + i = _bytes_to_int(b) + self._assert_bytes_significantly_equal(b, _int_to_bytes(i)) + + # generate random 4096 bits (4k key) + b = os.urandom(512) + i = _bytes_to_int(b) + self._assert_bytes_significantly_equal(b, _int_to_bytes(i)) + + # + b = b'\x00\x00\x00\x01' + i = _bytes_to_int(b) + self._assert_bytes_significantly_equal(b, _int_to_bytes(i)) + + b = b'' + with self.assertRaises(ValueError): + _bytes_to_int(b) + + b = None + with self.assertRaises(ValueError): + _bytes_to_int(b) + + def test_int_to_bigendian_8_bytes(self): + i = 0xFFFFFFFFFFFFFFFF + b = _int_to_bigendian_8_bytes(i) + self.assertEqual(b, b'\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF') + + i = 0 + b = _int_to_bigendian_8_bytes(i) + self.assertEqual(b, b'\x00\x00\x00\x00\x00\x00\x00\x00') + + i = random.randint(1, 0xFFFFFFFFFFFFFFFF) + b = _int_to_bigendian_8_bytes(i) + self.assertEqual(len(b), 8) + self.assertEqual(i, _bytes_to_int(b)) + + i = random.randint(0xFFFFFFFFFFFFFFFF01, 0xFFFFFFFFFFFFFFFFFF) + with self.assertRaises(ValueError): + _int_to_bigendian_8_bytes(i) + + def test_bstr_encode_decode(self): + b = b'' + b64 = _bstr_to_b64url(b) + self.assertEqual(b, _b64_to_bstr(b64)) + + b = os.urandom(1) + b64 = _bstr_to_b64url(b) + self.assertEqual(b, _b64_to_bstr(b64)) + + b = os.urandom(random.randint(2, 32)) + b64 = _bstr_to_b64url(b) + self.assertEqual(b, _b64_to_bstr(b64)) + + b = os.urandom(512) + b64 = _bstr_to_b64url(b) + self.assertEqual(b, _b64_to_bstr(b64)) + + def test_str_encode_decode(self): + s = '' + b64 = _str_to_b64url(s) + self.assertEqual(s, _b64_to_str(b64)) + + s = self._random_str(1) + b64 = _str_to_b64url(s) + self.assertEqual(s, _b64_to_str(b64)) + + s = self._random_str(random.randint(2, 32)) + b64 = _str_to_b64url(s) + self.assertEqual(s, _b64_to_str(b64)) + + s = self._random_str(4096) + b64 = _str_to_b64url(s) + self.assertEqual(s, _b64_to_str(b64)) + + def test_a128cbc_hs256_encrypt_decrypt(self): + key = os.urandom(32) + iv = os.urandom(16) + + plain_text = os.urandom(random.randint(1024, 4096)) + auth_data = os.urandom(random.randint(128, 512)) + + cipher_text, auth_tag = _a128cbc_hs256_encrypt(key, iv, plain_text, auth_data) + self.assertEqual(plain_text, _a128cbc_hs256_decrypt(key, iv, cipher_text, auth_data, auth_tag)) + + def test_a128cbc_hs256_encrypt_error(self): + key = os.urandom(32) + iv = os.urandom(16) + plain_text = os.urandom(random.randint(1024, 4096)) + auth_data = os.urandom(random.randint(128, 512)) + + with self.assertRaises(ValueError): + # key not specified + _a128cbc_hs256_encrypt(key=None, iv=iv, plaintext=plain_text, authdata=auth_data) + _a128cbc_hs256_encrypt(key=b'', iv=iv, plaintext=plain_text, authdata=auth_data) + # key insufficient len + _a128cbc_hs256_encrypt(key=os.urandom(31), iv=iv, plaintext=plain_text, authdata=auth_data) + + # iv not specified + _a128cbc_hs256_encrypt(key=key, iv=None, plaintext=plain_text, authdata=auth_data) + _a128cbc_hs256_encrypt(key=key, iv=b'', plaintext=plain_text, authdata=auth_data) + # iv incorrect len + _a128cbc_hs256_encrypt(key=key, iv=os.urandom(15), plaintext=plain_text, authdata=auth_data) + _a128cbc_hs256_encrypt(key=key, iv=os.urandom(17), plaintext=plain_text, authdata=auth_data) + + # plaintext not specified + _a128cbc_hs256_encrypt(key=key, iv=iv, plaintext=None, authdata=auth_data) + _a128cbc_hs256_encrypt(key=key, iv=iv, plaintext=b'', authdata=auth_data) + + # authdata not specified + _a128cbc_hs256_encrypt(key=key, iv=iv, plaintext=plain_text, authdata=None) + _a128cbc_hs256_encrypt(key=key, iv=iv, plaintext=plain_text, authdata=b'') + + def test_a128cbc_hs256_decrypt_error(self): + key = os.urandom(32) + iv = os.urandom(16) + cipher_text = os.urandom(random.randint(1024, 4096)) + auth_data = os.urandom(random.randint(128, 512)) + auth_tag = os.urandom(16) + + with self.assertRaises(ValueError): + # key not specified + _a128cbc_hs256_decrypt(key=None, iv=iv, ciphertext=cipher_text, authdata=auth_data, authtag=auth_tag) + _a128cbc_hs256_decrypt(key=b'', iv=iv, ciphertext=cipher_text, authdata=auth_data, authtag=auth_tag) + # key insufficient len + _a128cbc_hs256_decrypt(key=os.urandom(31), iv=iv, ciphertext=cipher_text, authdata=auth_data, authtag=auth_tag) + + # iv not specified + _a128cbc_hs256_decrypt(key=key, iv=None, ciphertext=cipher_text, authdata=auth_data, authtag=auth_tag) + _a128cbc_hs256_decrypt(key=key, iv=b'', ciphertext=cipher_text, authdata=auth_data, authtag=auth_tag) + # iv incorrect len + _a128cbc_hs256_decrypt(key=key, iv=os.urandom(15), ciphertext=cipher_text, authdata=auth_data, authtag=auth_tag) + _a128cbc_hs256_decrypt(key=key, iv=os.urandom(17), ciphertext=cipher_text, authdata=auth_data, authtag=auth_tag) + + # ciphertext not specified + _a128cbc_hs256_decrypt(key=key, iv=iv, ciphertext=None, authdata=auth_data, authtag=auth_tag) + _a128cbc_hs256_decrypt(key=key, iv=iv, ciphertext=b'', authdata=auth_data, authtag=auth_tag) + + # authdata not specified + _a128cbc_hs256_decrypt(key=key, iv=iv, ciphertext=cipher_text, authdata=None, authtag=auth_tag) + _a128cbc_hs256_decrypt(key=key, iv=iv, ciphertext=cipher_text, authdata=b'', authtag=auth_tag) + + # authtag not specified + _a128cbc_hs256_decrypt(key=key, iv=iv, ciphertext=cipher_text, authdata=auth_data, authtag=None) + _a128cbc_hs256_decrypt(key=key, iv=iv, ciphertext=cipher_text, authdata=auth_data, authtag=b'') + # authtag invalid len + _a128cbc_hs256_decrypt(key=key, iv=iv, ciphertext=cipher_text, authdata=auth_data, authtag=os.urandom(17)) + _a128cbc_hs256_decrypt(key=key, iv=iv, ciphertext=cipher_text, authdata=auth_data, authtag=os.urandom(15)) + + def test_private_rsakey_to_from_jwk(self): + # create a key1 export to jwk and import as key2 + key1 = _RsaKey.generate() + jwk = key1.to_jwk(include_private=True) + key2 = _RsaKey.from_jwk(jwk) + + # validate that key2 is a private key + self.assertTrue(key2.is_private_key()) + + # validate that key2 can encrypt and decrypt properly + unwrapped = os.urandom(32) + wrapped = key1.encrypt(unwrapped) + self.assertEqual(unwrapped, key2.decrypt(wrapped)) + wrapped = key2.encrypt(unwrapped) + self.assertEqual(unwrapped, key1.decrypt(wrapped)) + + # validate that key2 can sign and verify properly + data = os.urandom(random.randint(1024, 4096)) + signature = key1.sign(data) + key2.verify(signature, data) + signature = key2.sign(data) + key1.verify(signature, data) + + # validate that all numbers, both public and private are consistent + self.assertEqual(key1.kid, key2.kid) + self.assertEqual(key1.kty, key2.kty) + self.assertEqual(key1.key_ops, key2.key_ops) + self.assertEqual(key1.n, key2.n) + self.assertEqual(key1.e, key2.e) + self.assertEqual(key1.q, key2.q) + self.assertEqual(key1.p, key2.p) + self.assertEqual(key1.d, key2.d) + self.assertEqual(key1.dq, key2.dq) + self.assertEqual(key1.dp, key2.dp) + self.assertEqual(key1.qi, key2.qi) + + # validate that key2 serializes to the same jwk + self.assertEqual(json.dumps(jwk.serialize()), json.dumps(key2.to_jwk(include_private=True).serialize())) + + def test_public_rsakey_to_from_jwk(self): + # create key1 export public components and import as key2 + key1 = _RsaKey.generate() + jwk = key1.to_jwk() + key2 = _RsaKey.from_jwk(jwk) + + # validate that key2 is not a private key + self.assertFalse(key2.is_private_key()) + + # validate that key2 can encrypt properly + unwrapped = os.urandom(32) + wrapped = key2.encrypt(unwrapped) + self.assertEqual(unwrapped, key1.decrypt(wrapped)) + + # validate that key2 can verify properly + data = os.urandom(random.randint(1024, 4096)) + signature = key1.sign(data) + key2.verify(signature, data) + + # validate that all public numbers consistent + self.assertEqual(key1.kid, key2.kid) + self.assertEqual(key1.kty, key2.kty) + self.assertEqual(key1.n, key2.n) + self.assertEqual(key1.e, key2.e) + + # validate that all private numbers are not present + self.assertIsNone(key2.q) + self.assertIsNone(key2.p) + self.assertIsNone(key2.d) + self.assertIsNone(key2.dq) + self.assertIsNone(key2.dp) + self.assertIsNone(key2.qi) + + # validate that key2 serializes to the same public jwk + self.assertEqual(json.dumps(jwk.serialize()), json.dumps(key2.to_jwk().serialize())) + + def test_jws_header_to_from_compact_header(self): + head1 = _JwsHeader() + head1.alg = 'RS256' + head1.kid = str(uuid.uuid4()) + head1.at = self._random_str(random.randint(512, 1024)) + head1.ts = int(time.time()) + head1.typ = 'PoP' + + compact = head1.to_compact_header() + + head2 = _JwsHeader.from_compact_header(compact) + + # assert that all header values match + self.assertEqual(head1.alg, head2.alg) + self.assertEqual(head1.kid, head2.kid) + self.assertEqual(head1.at, head2.at) + self.assertEqual(head1.ts, head2.ts) + self.assertEqual(head1.typ, head2.typ) + + def test_jwe_header_to_from_compact_header(self): + head1 = _JweHeader() + head1.alg = 'RSA-OAEP' + head1.kid = str(uuid.uuid4()) + head1.enc = 'A128CBC-HS256' + + compact = head1.to_compact_header() + head2 = _JweHeader.from_compact_header(compact) + + # assert that all header values match + self.assertEqual(head1.alg, head2.alg) + self.assertEqual(head1.kid, head2.kid) + self.assertEqual(head1.enc, head2.enc) + + def _random_str(self, length): + return ''.join(random.choice(string.printable) for i in range(length)) + + def _assert_bytes_significantly_equal(self, b1, b2): + self.assertEqual(b1.lstrip(b'\x00'), b2.lstrip(b'\x00')) diff --git a/azure-keyvault/tests/test_keys.py b/azure-keyvault/tests/test_keys.py new file mode 100644 index 000000000000..94d3ca97fafb --- /dev/null +++ b/azure-keyvault/tests/test_keys.py @@ -0,0 +1,355 @@ +import time +import codecs +import copy +import hashlib +from dateutil import parser as date_parse +from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer +from keyvault_preparer import KeyVaultPreparer +from keyvault_testcase import KeyvaultTestCase +from azure.keyvault import KeyVaultId +from azure.keyvault.models import ( + JsonWebKey +) + +class KeyVaultKeyTest(KeyvaultTestCase): + def setUp(self): + super(KeyVaultKeyTest, self).setUp() + self.plain_text = b'5063e6aaa845f150200547944fd199679c98ed6f99da0a0b2dafeaf1f4684496fd532c1c229968cb9dee44957fcef7ccef59ceda0b362e56bcd78fd3faee5781c623c0bb22b35beabde0664fd30e0e824aba3dd1b0afffc4a3d955ede20cf6a854d52cfd' + + def tearDown(self): + super(KeyVaultKeyTest, self).tearDown() + + def _import_test_key(self, vault, key_id, import_to_hardware=False): + + def _to_bytes(hex): + if len(hex) % 2: + hex = '0{}'.format(hex) + return codecs.decode(hex, 'hex_codec') + + key = JsonWebKey( + kty='RSA', + key_ops=['encrypt', 'decrypt', 'sign', 'verify', 'wrapKey', 'unwrapKey'], + n=_to_bytes( + '00a0914d00234ac683b21b4c15d5bed887bdc959c2e57af54ae734e8f00720d775d275e455207e3784ceeb60a50a4655dd72a7a94d271e8ee8f7959a669ca6e775bf0e23badae991b4529d978528b4bd90521d32dd2656796ba82b6bbfc7668c8f5eeb5053747fd199319d29a8440d08f4412d527ff9311eda71825920b47b1c46b11ab3e91d7316407e89c7f340f7b85a34042ce51743b27d4718403d34c7b438af6181be05e4d11eb985d38253d7fe9bf53fc2f1b002d22d2d793fa79a504b6ab42d0492804d7071d727a06cf3a8893aa542b1503f832b296371b6707d4dc6e372f8fe67d8ded1c908fde45ce03bc086a71487fa75e43aa0e0679aa0d20efe35'), + e=_to_bytes('10001'), + d=_to_bytes( + '627c7d24668148fe2252c7fa649ea8a5a9ed44d75c766cda42b29b660e99404f0e862d4561a6c95af6a83d213e0a2244b03cd28576473215073785fb067f015da19084ade9f475e08b040a9a2c7ba00253bb8125508c9df140b75161d266be347a5e0f6900fe1d8bbf78ccc25eeb37e0c9d188d6e1fc15169ba4fe12276193d77790d2326928bd60d0d01d6ead8d6ac4861abadceec95358fd6689c50a1671a4a936d2376440a41445501da4e74bfb98f823bd19c45b94eb01d98fc0d2f284507f018ebd929b8180dbe6381fdd434bffb7800aaabdd973d55f9eaf9bb88a6ea7b28c2a80231e72de1ad244826d665582c2362761019de2e9f10cb8bcc2625649'), + p=_to_bytes( + '00d1deac8d68ddd2c1fd52d5999655b2cf1565260de5269e43fd2a85f39280e1708ffff0682166cb6106ee5ea5e9ffd9f98d0becc9ff2cda2febc97259215ad84b9051e563e14a051dce438bc6541a24ac4f014cf9732d36ebfc1e61a00d82cbe412090f7793cfbd4b7605be133dfc3991f7e1bed5786f337de5036fc1e2df4cf3'), + q=_to_bytes( + '00c3dc66b641a9b73cd833bc439cd34fc6574465ab5b7e8a92d32595a224d56d911e74624225b48c15a670282a51c40d1dad4bc2e9a3c8dab0c76f10052dfb053bc6ed42c65288a8e8bace7a8881184323f94d7db17ea6dfba651218f931a93b8f738f3d8fd3f6ba218d35b96861a0f584b0ab88ddcf446b9815f4d287d83a3237'), + dp=_to_bytes( + '00c9a159be7265cbbabc9afcc4967eb74fe58a4c4945431902d1142da599b760e03838f8cbd26b64324fea6bdc9338503f459793636e59b5361d1e6951e08ddb089e1b507be952a81fbeaf7e76890ea4f536e25505c3f648b1e88377dfc19b4c304e738dfca07211b792286a392a704d0f444c0a802539110b7f1f121c00cff0a9'), + dq=_to_bytes( + '00a0bd4c0a3d9f64436a082374b5caf2488bac1568696153a6a5e4cd85d186db31e2f58f024c617d29f37b4e6b54c97a1e25efec59c4d1fd3061ac33509ce8cae5c11f4cd2e83f41a8264f785e78dc0996076ee23dfdfc43d67c463afaa0180c4a718357f9a6f270d542479a0f213870e661fb950abca4a14ca290570ba7983347'), + qi=_to_bytes( + '009fe7ae42e92bc04fcd5780464bd21d0c8ac0c599f9af020fde6ab0a7e7d1d39902f5d8fb6c614184c4c1b103fb46e94cd10a6c8a40f9991a1f28269f326435b6c50276fda6493353c650a833f724d80c7d522ba16c79f0eb61f672736b68fb8be3243d10943c4ab7028d09e76cfb5892222e38bc4d35585bf35a88cd68c73b07') + ) + imported_key = self.client.import_key(key_id.vault, key_id.name, key, import_to_hardware) + self._validate_rsa_key_bundle(imported_key, vault.properties.vault_uri, key_id.name, + 'RSA-HSM' if import_to_hardware else 'RSA', key.key_ops) + return imported_key + + def _validate_rsa_key_bundle(self, bundle, vault, key_name, kty, key_ops=None): + prefix = '{}keys/{}/'.format(vault, key_name) + key_ops = key_ops or ['encrypt', 'decrypt', 'sign', 'verify', 'wrapKey', 'unwrapKey'] + key = bundle.key + kid = key.kid + self.assertTrue(kid.index(prefix) == 0, + "String should start with '{}', but value is '{}'".format(prefix, kid)) + self.assertEqual(key.kty, kty, "kty should by '{}', but is '{}'".format(key, key.kty)) + self.assertTrue(key.n and key.e, 'Bad RSA public material.') + self.assertEqual(key_ops, key.key_ops, + "keyOps should be '{}', but is '{}'".format(key_ops, key.key_ops)) + self.assertTrue(bundle.attributes.created and bundle.attributes.updated, + 'Missing required date attributes.') + + def _validate_key_list(self, keys, expected): + for key in keys: + if key.kid in expected.keys(): + del expected[key.kid] + else: + self.assertTrue(False) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_key_crud_operations(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + key_name = self.get_resource_name('key') + + # create key + created_bundle = self.client.create_key(vault_uri, key_name, 'RSA') + self._validate_rsa_key_bundle(created_bundle, vault_uri, key_name, 'RSA') + key_id = KeyVaultId.parse_key_id(created_bundle.key.kid) + + # get key without version + self.assertEqual(created_bundle, self.client.get_key(key_id.vault, key_id.name, '')) + + # get key with version + self.assertEqual(created_bundle, self.client.get_key(key_id.vault, key_id.name, key_id.version)) + + def _update_key(key_uri): + updating_bundle = copy.deepcopy(created_bundle) + updating_bundle.attributes.expires = date_parse.parse('2050-02-02T08:00:00.000Z') + updating_bundle.key.key_ops = ['encrypt', 'decrypt'] + updating_bundle.tags = {'foo': 'updated tag'} + kid = KeyVaultId.parse_key_id(key_uri) + key_bundle = self.client.update_key( + kid.vault, kid.name, kid.version, updating_bundle.key.key_ops, updating_bundle.attributes, + updating_bundle.tags) + self.assertEqual(updating_bundle.tags, key_bundle.tags) + self.assertEqual(updating_bundle.key.kid, key_bundle.key.kid) + return key_bundle + + # update key without version + created_bundle = _update_key(key_id.base_id) + + # update key with version + created_bundle = _update_key(key_id.id) + + # delete key + self.client.delete_key(key_id.vault, key_id.name) + + # get key returns not found + try: + self.client.get_key(key_id.vault, key_id.name, '') + self.fail('Get should fail') + except Exception as ex: + if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): + raise ex + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_key_list(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + max_keys = self.list_test_size + expected = {} + + # create many keys + for x in range(0, max_keys): + key_name = self.get_resource_name('key{}-'.format(x)) + key_bundle = None + error_count = 0 + while not key_bundle: + try: + key_bundle = self.client.create_key(vault_uri, key_name, 'RSA') + kid = KeyVaultId.parse_key_id(key_bundle.key.kid).base_id.strip('/') + expected[kid] = key_bundle.attributes + except Exception as ex: + if hasattr(ex, 'message') and 'Throttled' in ex.message: + error_count += 1 + time.sleep(2.5 * error_count) + continue + else: + raise ex + + # list keys + result = list(self.client.get_keys(vault_uri, self.list_test_size)) + self._validate_key_list(result, expected) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_key_list_versions(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + key_name = self.get_resource_name('key') + + max_keys = self.list_test_size + expected = {} + + # create many key versions + for x in range(0, max_keys): + key_bundle = None + error_count = 0 + while not key_bundle: + try: + key_bundle = self.client.create_key(vault_uri, key_name, 'RSA') + kid = KeyVaultId.parse_key_id(key_bundle.key.kid).id.strip('/') + expected[kid] = key_bundle.attributes + except Exception as ex: + if hasattr(ex, 'message') and 'Throttled' in ex.message: + error_count += 1 + time.sleep(2.5 * error_count) + continue + else: + raise ex + + # list key versions + self._validate_key_list(list(self.client.get_key_versions(vault_uri, key_name)), expected) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_key_backup_and_restore(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + key_name = self.get_resource_name('keybak') + + # create key + created_bundle = self.client.create_key(vault_uri, key_name, 'RSA') + key_id = KeyVaultId.parse_key_id(created_bundle.key.kid) + + # backup key + key_backup = self.client.backup_key(key_id.vault, key_id.name).value + + # delete key + self.client.delete_key(key_id.vault, key_id.name) + + # restore key + self.assertEqual(created_bundle, self.client.restore_key(vault_uri, key_backup)) + + @ResourceGroupPreparer() + @KeyVaultPreparer(enable_soft_delete=True) + def test_key_recover_and_purge(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + + keys = {} + + # create keys to recover + for i in range(0, self.list_test_size): + key_name = self.get_resource_name('keyrec{}'.format(str(i))) + keys[key_name] = self.client.create_key(vault_uri, key_name, 'RSA') + + # create keys to purge + for i in range(0, self.list_test_size): + key_name = self.get_resource_name('keyprg{}'.format(str(i))) + keys[key_name] = self.client.create_key(vault_uri, key_name, 'RSA') + + # delete all keys + for key_name in keys.keys(): + self.client.delete_key(vault_uri, key_name) + + if not self.is_playback(): + time.sleep(20) + + # validate all our deleted keys are returned by get_deleted_keys + deleted = [KeyVaultId.parse_key_id(s.kid).name for s in self.client.get_deleted_keys(vault_uri)] + self.assertTrue(all(s in deleted for s in keys.keys())) + + # recover select keys + for key_name in [s for s in keys.keys() if s.startswith('keyrec')]: + self.client.recover_deleted_key(vault_uri, key_name) + + # purge select keys + for key_name in [s for s in keys.keys() if s.startswith('keyprg')]: + self.client.purge_deleted_key(vault_uri, key_name) + + if not self.is_playback(): + time.sleep(20) + + # validate none of our deleted keys are returned by get_deleted_keys + deleted = [KeyVaultId.parse_key_id(s.kid).name for s in self.client.get_deleted_keys(vault_uri)] + self.assertTrue(not any(s in deleted for s in keys.keys())) + + # validate the recovered keys + expected = {k: v for k, v in keys.items() if k.startswith('key-') and k.endswith('-recover')} + actual = {k: self.client.get_key(vault_uri, k) for k in expected.keys()} + self.assertEqual(len(set(expected.keys()) & set(actual.keys())), len(expected)) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_key_import(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + key_name = self.get_resource_name('keyimp') + + key_id = KeyVaultId.create_key_id(vault_uri, key_name) + + # import to software + self._import_test_key(vault, key_id, False) + + # import to hardware + self._import_test_key(vault, key_id, True) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_key_encrypt_and_decrypt(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + key_name = self.get_resource_name('keycrypt') + + key_id = KeyVaultId.create_key_id(vault_uri, key_name) + plain_text = self.plain_text + + # import key + imported_key = self._import_test_key(vault, key_id) + key_id = KeyVaultId.parse_key_id(imported_key.key.kid) + + # encrypt without version + result = self.client.encrypt(key_id.vault, key_id.name, '', 'RSA-OAEP', plain_text) + cipher_text = result.result + + # decrypt without version + result = self.client.decrypt(key_id.vault, key_id.name, '', 'RSA-OAEP', cipher_text) + self.assertEqual(plain_text, result.result) + + # encrypt with version + result = self.client.encrypt(key_id.vault, key_id.name, key_id.version, 'RSA-OAEP', plain_text) + cipher_text = result.result + + # decrypt with version + result = self.client.decrypt(key_id.vault, key_id.name, key_id.version, 'RSA-OAEP', cipher_text) + self.assertEqual(plain_text, result.result) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_key_wrap_and_unwrap(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + key_name = self.get_resource_name('keywrap') + + key_id = KeyVaultId.create_key_id(vault_uri, key_name) + plain_text = self.plain_text + + # import key + imported_key = self._import_test_key(vault, key_id) + key_id = KeyVaultId.parse_key_id(imported_key.key.kid) + + # wrap without version + result = self.client.wrap_key(key_id.vault, key_id.name, '', 'RSA-OAEP', plain_text) + cipher_text = result.result + + # unwrap without version + result = self.client.unwrap_key(key_id.vault, key_id.name, '', 'RSA-OAEP', cipher_text) + self.assertEqual(plain_text, result.result) + + # wrap with version + result = self.client.wrap_key(key_id.vault, key_id.name, key_id.version, 'RSA-OAEP', plain_text) + cipher_text = result.result + + # unwrap with version + result = self.client.unwrap_key(key_id.vault, key_id.name, key_id.version, 'RSA-OAEP', cipher_text) + self.assertEqual(plain_text, result.result) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_key_sign_and_verify(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + key_name = self.get_resource_name('keysign') + + key_id = KeyVaultId.create_key_id(vault_uri, key_name) + plain_text = self.plain_text + md = hashlib.sha256() + md.update(plain_text); + digest = md.digest(); + + # import key + imported_key = self._import_test_key(vault, key_id) + key_id = KeyVaultId.parse_key_id(imported_key.key.kid) + + # sign without version + signature = self.client.sign(key_id.vault, key_id.name, '', 'RS256', digest).result + + # verify without version + result = self.client.verify(key_id.vault, key_id.name, '', 'RS256', digest, signature) + self.assertTrue(result.value) + + # sign with version + signature = self.client.sign(key_id.vault, key_id.name, '', 'RS256', digest).result + + # verify with version + result = self.client.verify(key_id.vault, key_id.name, key_id.version, 'RS256', digest, signature) + self.assertTrue(result.value) diff --git a/azure-keyvault/tests/test_secrets.py b/azure-keyvault/tests/test_secrets.py new file mode 100644 index 000000000000..e39febb336c5 --- /dev/null +++ b/azure-keyvault/tests/test_secrets.py @@ -0,0 +1,216 @@ +from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer +from keyvault_preparer import KeyVaultPreparer +from keyvault_testcase import KeyvaultTestCase +from azure.keyvault import KeyVaultId, KeyVaultClient, KeyVaultAuthentication, AccessToken + +import copy +from dateutil import parser as date_parse +import time +import unittest + + +class KeyVaultSecretTest(KeyvaultTestCase): + + + def _validate_secret_bundle(self, bundle, vault, secret_name, secret_value): + prefix = '{}secrets/{}/'.format(vault, secret_name) + id = bundle.id + self.assertTrue(id.index(prefix) == 0, + "String should start with '{}', but value is '{}'".format(prefix, id)) + self.assertEqual(bundle.value, secret_value, + "value should be '{}', but is '{}'".format(secret_value, bundle.value)) + self.assertTrue(bundle.attributes.created and bundle.attributes.updated, + 'Missing required date attributes.') + + def _validate_secret_list(self, secrets, expected): + for secret in secrets: + if secret.id in expected.keys(): + attributes = expected[secret.id] + self.assertEqual(attributes, secret.attributes) + del expected[secret.id] + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_secret_crud_operations(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + secret_name = 'crud-secret' + secret_value = self.get_resource_name('crud_secret_value') + + # create secret + secret_bundle = self.client.set_secret(vault_uri, secret_name, secret_value) + self._validate_secret_bundle(secret_bundle, vault_uri, secret_name, secret_value) + created_bundle = secret_bundle + secret_id = KeyVaultId.parse_secret_id(created_bundle.id) + + # get secret without version + self.assertEqual(created_bundle, self.client.get_secret(secret_id.vault, secret_id.name, '')) + + # get secret with version + self.assertEqual(created_bundle, self.client.get_secret(secret_id.vault, secret_id.name, secret_id.version)) + + def _update_secret(secret_uri): + updating_bundle = copy.deepcopy(created_bundle) + updating_bundle.content_type = 'text/plain' + updating_bundle.attributes.expires = date_parse.parse('2050-02-02T08:00:00.000Z') + updating_bundle.tags = {'foo': 'updated tag'} + sid = KeyVaultId.parse_secret_id(secret_uri) + secret_bundle = self.client.update_secret( + sid.vault, sid.name, sid.version, updating_bundle.content_type, updating_bundle.attributes, + updating_bundle.tags) + self.assertEqual(updating_bundle.tags, secret_bundle.tags) + self.assertEqual(updating_bundle.id, secret_bundle.id) + self.assertNotEqual(str(updating_bundle.attributes.updated), str(secret_bundle.attributes.updated)) + return secret_bundle + + # update secret without version + secret_bundle = _update_secret(secret_id.base_id) + + # update secret with version + secret_bundle = _update_secret(secret_id.id) + + # delete secret + self.client.delete_secret(secret_id.vault, secret_id.name) + + # get secret returns not found + try: + self.client.get_secret(secret_id.vault, secret_id.name, '') + except Exception as ex: + if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): + raise ex + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_secret_list(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + + max_secrets = self.list_test_size + expected = {} + + # create many secrets + for x in range(0, max_secrets): + secret_name = 'sec{}'.format(x) + secret_value = self.get_resource_name('secVal{}'.format(x)) + secret_bundle = None + error_count = 0 + while not secret_bundle: + try: + secret_bundle = self.client.set_secret(vault_uri, secret_name, secret_value) + sid = KeyVaultId.parse_secret_id(secret_bundle.id).base_id.strip('/') + expected[sid] = secret_bundle.attributes + except Exception as ex: + if hasattr(ex, 'message') and 'Throttled' in ex.message: + error_count += 1 + time.sleep(2.5 * error_count) + continue + else: + raise ex + + # list secrets + result = list(self.client.get_secrets(vault_uri, self.list_test_size)) + self._validate_secret_list(result, expected) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + def test_list_versions(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + secret_name = self.get_resource_name('sec') + secret_value = self.get_resource_name('secVal') + + max_secrets = self.list_test_size + expected = {} + + # create many secret versions + for x in range(0, max_secrets): + secret_bundle = None + error_count = 0 + while not secret_bundle: + try: + secret_bundle = self.client.set_secret(vault_uri, secret_name, secret_value) + sid = KeyVaultId.parse_secret_id(secret_bundle.id).id.strip('/') + expected[sid] = secret_bundle.attributes + except Exception as ex: + if hasattr(ex, 'message') and 'Throttled' in ex.message: + error_count += 1 + time.sleep(2.5 * error_count) + continue + else: + raise ex + + # list secret versions + self._validate_secret_list(list(self.client.get_secret_versions(vault_uri, secret_name)), expected) + + @ResourceGroupPreparer() + @KeyVaultPreparer() + @unittest.skipIf(True, 'routing issue for 7.0 preview') + def test_backup_restore(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + secret_name = self.get_resource_name('secbak') + secret_value = self.get_resource_name('secVal') + + # create secret + created_bundle = self.client.set_secret(vault_uri, secret_name, secret_value) + secret_id = KeyVaultId.parse_secret_id(created_bundle.id) + + # backup secret + secret_backup = self.client.backup_secret(secret_id.vault, secret_id.name).value + + # delete secret + self.client.delete_secret(secret_id.vault, secret_id.name) + + # restore secret + self.assertEqual(created_bundle.attributes, self.client.restore_secret(vault_uri, secret_backup).attributes) + + @ResourceGroupPreparer() + @KeyVaultPreparer(enable_soft_delete=True) + def test_recover_purge(self, vault, **kwargs): + self.assertIsNotNone(vault) + vault_uri = vault.properties.vault_uri + + secrets = {} + + # create secrets to recover + for i in range(0, self.list_test_size): + secret_name = self.get_resource_name('secrec{}'.format(str(i))) + secret_value = self.get_resource_name('secval{}'.format((str(i)))) + secrets[secret_name] = self.client.set_secret(vault_uri, secret_name, secret_value) + + # create secrets to purge + for i in range(0, self.list_test_size): + secret_name = self.get_resource_name('secprg{}'.format(str(i))) + secret_value = self.get_resource_name('secval{}'.format((str(i)))) + secrets[secret_name] = self.client.set_secret(vault_uri, secret_name, secret_value) + + # delete all secrets + for secret_name in secrets.keys(): + self.client.delete_secret(vault_uri, secret_name) + + if not self.is_playback(): + time.sleep(20) + + # validate all our deleted secrets are returned by get_deleted_secrets + deleted = [KeyVaultId.parse_secret_id(s.id).name for s in self.client.get_deleted_secrets(vault_uri)] + self.assertTrue(all(s in deleted for s in secrets.keys())) + + # recover select secrets + for secret_name in [s for s in secrets.keys() if s.startswith('secrec')]: + self.client.recover_deleted_secret(vault_uri, secret_name) + + # purge select secrets + for secret_name in [s for s in secrets.keys() if s.startswith('secprg')]: + self.client.purge_deleted_secret(vault_uri, secret_name) + + if not self.is_playback(): + time.sleep(20) + + # validate none of our deleted secrets are returned by get_deleted_secrets + deleted = [KeyVaultId.parse_secret_id(s.id).name for s in self.client.get_deleted_secrets(vault_uri)] + self.assertTrue(not any(s in deleted for s in secrets.keys())) + + # validate the recovered secrets + expected = {k: v for k, v in secrets.items() if k.startswith('secrec')} + actual = {k: self.client.get_secret(vault_uri, k, KeyVaultId.version_none) for k in expected.keys()} + self.assertEqual(len(set(expected.keys()) & set(actual.keys())), len(expected)) \ No newline at end of file diff --git a/azure-keyvault/tests/test_storage.py b/azure-keyvault/tests/test_storage.py new file mode 100644 index 000000000000..d5908cbb670b --- /dev/null +++ b/azure-keyvault/tests/test_storage.py @@ -0,0 +1,192 @@ +import uuid +from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer, StorageAccountPreparer +from keyvault_preparer import KeyVaultPreparer +from keyvault_testcase import KeyvaultTestCase +from azure.mgmt.authorization import AuthorizationManagementClient +from azure.mgmt.authorization.models import RoleAssignmentCreateParameters +from azure.keyvault.models import StorageAccountAttributes + + +class KeyVaultSecretTest(KeyvaultTestCase): + + @ResourceGroupPreparer() + @StorageAccountPreparer(name_prefix='kvsa1') + @KeyVaultPreparer() + def test_e2e(self, vault, storage_account, resource_group, **kwargs): + # find the role definition for "Storage Account Key Operator Service Role" + filter_str = 'roleName eq \'Storage Account Key Operator Service Role\'' + authorization_mgmt_client = self.create_mgmt_client(AuthorizationManagementClient) + role_id = list(authorization_mgmt_client.role_definitions.list(scope='/', filter=filter_str))[0].id + + # create a role assignment granting the key vault service principal this role + role_params = RoleAssignmentCreateParameters(role_definition_id=role_id, + # the Azure Key Vault service id + principal_id='93c27d83-f79b-4cb2-8dd4-4aa716542e74') + + if not self.is_live: + sa_id = '{}/providers/Microsoft.Storage/storageAccounts/{}'.format(resource_group.id, storage_account.name) + else: + sa_id = storage_account.id + + authorization_mgmt_client.role_assignments.create(scope=sa_id, + role_assignment_name='d7607bd3-a467-4a14-ab5f-f4b016ffbfff', + parameters=role_params) + + + # add the storage account to the vault using the users KeyVaultClient + attributes = StorageAccountAttributes(enabled=True) + self.client.set_storage_account(vault_base_url=vault.properties.vault_uri, + storage_account_name=storage_account.name, + resource_id=sa_id, + active_key_name='key1', + auto_regenerate_key=True, + regeneration_period='P30D', + storage_account_attributes=attributes) + + # update active key for the storage account + self.client.update_storage_account(vault_base_url=vault.properties.vault_uri, + storage_account_name=storage_account.name, + active_key_name='key2') + + self.client.regenerate_storage_account_key(vault_base_url=vault.properties.vault_uri, + storage_account_name=storage_account.name, + key_name='key1') + + self.create_account_sas_definition(storage_account.name, vault.properties.vault_uri) + + self.create_blob_sas_defintion(storage_account.name, vault.properties.vault_uri) + + self.get_sas_definitions(storage_account.name, vault.properties.vault_uri) + + self.client.delete_storage_account(vault_base_url=vault.properties.vault_uri, + storage_account_name=storage_account.name) + + + def create_account_sas_definition(self, storage_account_name, vault_url): + """ + Creates an account sas definition, to manage storage account and its entities. + """ + from azure.storage.common import SharedAccessSignature, CloudStorageAccount + from azure.keyvault.models import SasTokenType, SasDefinitionAttributes + from azure.keyvault import SecretId + + # To create an account sas definition in the vault we must first create the template. The + # template_uri for an account sas definition is the intended account sas token signed with an arbitrary key. + # Use the SharedAccessSignature class from azure.storage.common to create a account sas token + sas = SharedAccessSignature(account_name=storage_account_name, + # don't sign the template with the storage account key use key 00000000 + account_key='00000000') + account_sas_template = sas.generate_account(services='bfqt', # all services blob, file, queue and table + resource_types='sco', # all resources service, template, object + permission='acdlpruw', + # all permissions add, create, list, process, read, update, write + expiry='2020-01-01') # expiry will be ignored and validity period will determine token expiry + + # use the created template to create a sas definition in the vault + attributes = SasDefinitionAttributes(enabled=True) + sas_def = self.client.set_sas_definition(vault_base_url=vault_url, + storage_account_name=storage_account_name, + sas_definition_name='acctall', + template_uri=account_sas_template, + sas_type=SasTokenType.account, + validity_period='PT2H', + sas_definition_attributes=attributes) + + # When the sas definition is created a corresponding managed secret is also created in the vault, the. This + # secret is used to provision sas tokens according to the sas definition. Users retrieve the sas token + # via the get_secret method. + + # get the secret id from the returned SasDefinitionBundle + sas_secret_id = SecretId(uri=sas_def.secret_id) + # call get_secret and the value of the returned SecretBundle will be a newly issued sas token + acct_sas_token = self.client.get_secret(vault_base_url=sas_secret_id.vault, + secret_name=sas_secret_id.name, + secret_version=sas_secret_id.version).value + + # create the cloud storage account object + cloud_storage_account = CloudStorageAccount(account_name=storage_account_name, + sas_token=acct_sas_token) + + # create a blob with the account sas token + blob_service = cloud_storage_account.create_block_blob_service() + blob_service.create_container('blobcontainer') + blob_service.create_blob_from_text(container_name='blobcontainer', + blob_name='blob1', + text=u'test blob1 data') + + def create_blob_sas_defintion(self, storage_account_name, vault_url): + """ + Creates a service SAS definition with access to a blob container. + """ + + from azure.storage.blob import BlockBlobService, ContainerPermissions + from azure.keyvault.models import SasTokenType, SasDefinitionAttributes + from azure.keyvault import SecretId + + # create the blob sas definition template + # the sas template uri for service sas definitions contains the storage entity url with the template token + # this sample demonstrates constructing the template uri for a blob container, but a similar approach can + # be used for all other storage service, i.e. File, Queue, Table + + # create a template sas token for the container + service = BlockBlobService(account_name=storage_account_name, + # don't sign the template with the storage account key use key 00000000 + account_key='00000000') + permissions = ContainerPermissions(read=True, write=True, delete=True, list=True) + temp_token = service.generate_container_shared_access_signature(container_name='blobcontainer', + permission=permissions, + expiry='2020-01-01') + + # use the BlockBlobService to construct the template uri for the container sas definition + blob_sas_template_uri = service.make_container_url(container_name='blobcontainer', + protocol='https', + sas_token=temp_token) + # create the sas definition in the vault + attributes = SasDefinitionAttributes(enabled=True) + blob_sas_def = self.client.set_sas_definition(vault_base_url=vault_url, + storage_account_name=storage_account_name, + sas_definition_name='blobcontall', + template_uri=blob_sas_template_uri, + sas_type=SasTokenType.service, + validity_period='PT2H', + sas_definition_attributes=attributes) + + # use the sas definition to provision a sas token and use it to create a BlockBlobClient + # which can interact with blobs in the container + + # get the secret_id of the container sas definition and get the token from the vault as a secret + sas_secret_id = SecretId(uri=blob_sas_def.secret_id) + blob_sas_token = self.client.get_secret(vault_base_url=sas_secret_id.vault, + secret_name=sas_secret_id.name, + secret_version=sas_secret_id.version).value + service = BlockBlobService(account_name=storage_account_name, + sas_token=blob_sas_token) + service.create_blob_from_text(container_name='blobcontainer', + blob_name='blob2', + text=u'test blob2 data') + blobs = list(service.list_blobs(container_name='blobcontainer')) + + for blob in blobs: + service.delete_blob(container_name='blobcontainer', + blob_name=blob.name) + + def get_sas_definitions(self, storage_account_name, vault_url): + """ + List the sas definitions for the storage account, and get each. + """ + from azure.keyvault import StorageSasDefinitionId + + # list the sas definitions for the storage account + print('list and get sas definitions for the managed storage account') + sas_defs = list(self.client.get_sas_definitions(vault_base_url=vault_url, + storage_account_name=storage_account_name, + maxresults=5)) + + # for each sas definition parse the id and get the SasDefinitionBundle + for s in sas_defs: + sas_def_id = StorageSasDefinitionId(uri=s.id) + sas_def = self.client.get_sas_definition(vault_base_url=sas_def_id.vault, + storage_account_name=sas_def_id.account_name, + sas_definition_name=sas_def_id.sas_definition) + print(sas_def_id.sas_definition, sas_def.template_uri) + diff --git a/azure-mgmt-keyvault/HISTORY.rst b/azure-mgmt-keyvault/HISTORY.rst index 95350e6fa938..b779330e83c7 100644 --- a/azure-mgmt-keyvault/HISTORY.rst +++ b/azure-mgmt-keyvault/HISTORY.rst @@ -2,6 +2,22 @@ Release History =============== +1.0.0b1 (2018-04-10) +++++++++++++++++++++ + +* Upgraded to autorest 3.0 generated code +* Breaking change in models requiring all init args be specified by keyword + +1.0.0a2 (2018-03-28) +++++++++++++++++++++ + +* Upgrading to API version 2018-02-14-preview +* Breaking change in vault create_or_update now returns a 'LROPoller' objects rather than the Vault, to + allow callers to determine when the vault is ready to accept traffic. Callers should use the result() method + to block until the vault is accessible. +* Adding network_acls vault property for limiting network access to a vault +* Adding managed storage account key backup, restore and soft delete support +* Adding vault property enable_purge_protection for enhance protection against vault deletion 0.40.0 (2017-06-06) +++++++++++++++++++ diff --git a/azure-mgmt-keyvault/README.rst b/azure-mgmt-keyvault/README.rst index a1e1f82297a1..ae12064e473d 100644 --- a/azure-mgmt-keyvault/README.rst +++ b/azure-mgmt-keyvault/README.rst @@ -1,12 +1,12 @@ Microsoft Azure SDK for Python ============================== -This is the Microsoft Azure KeyVault Resource Management Client Library. +This is the Microsoft Azure Key Vault Management Client Library. Azure Resource Manager (ARM) is the next generation of management APIs that replace the old Azure Service Management (ASM). -This package has been tested with Python 2.7, 3.3, 3.4 and 3.5. +This package has been tested with Python 2.7, 3.4, 3.5 and 3.6. For a more complete set of Azure libraries, see the `azure `__ bundle package. @@ -33,9 +33,9 @@ If you see azure==0.11.0 (or any version below 1.0), uninstall it first: Usage ===== -For code examples, see `KeyVault Resource Management -`__ -on readthedocs.org. +For code examples, see `Key Vault Management +`__ +on docs.microsoft.com. Provide Feedback diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/__init__.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/__init__.py old mode 100755 new mode 100644 diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/key_vault_management_client.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/key_vault_management_client.py old mode 100755 new mode 100644 index 573b0537f795..469d32def90e --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/key_vault_management_client.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/key_vault_management_client.py @@ -9,11 +9,12 @@ # regenerated. # -------------------------------------------------------------------------- -from msrest.service_client import ServiceClient +from msrest.service_client import SDKClient from msrest import Serializer, Deserializer from msrestazure import AzureConfiguration from .version import VERSION from .operations.vaults_operations import VaultsOperations +from .operations.operations import Operations from . import models @@ -25,9 +26,9 @@ class KeyVaultManagementClientConfiguration(AzureConfiguration): :param credentials: Credentials needed for the client to connect to Azure. :type credentials: :mod:`A msrestazure Credentials object` - :param subscription_id: Gets subscription credentials which uniquely - identify Microsoft Azure subscription. The subscription ID forms part of - the URI for every service call. + :param subscription_id: Subscription credentials which uniquely identify + Microsoft Azure subscription. The subscription ID forms part of the URI + for every service call. :type subscription_id: str :param str base_url: Service URL """ @@ -39,21 +40,19 @@ def __init__( raise ValueError("Parameter 'credentials' must not be None.") if subscription_id is None: raise ValueError("Parameter 'subscription_id' must not be None.") - if not isinstance(subscription_id, str): - raise TypeError("Parameter 'subscription_id' must be str.") if not base_url: base_url = 'https://management.azure.com' super(KeyVaultManagementClientConfiguration, self).__init__(base_url) - self.add_user_agent('keyvaultmanagementclient/{}'.format(VERSION)) + self.add_user_agent('azure-mgmt-keyvault/{}'.format(VERSION)) self.add_user_agent('Azure-SDK-For-Python') self.credentials = credentials self.subscription_id = subscription_id -class KeyVaultManagementClient(object): +class KeyVaultManagementClient(SDKClient): """The Azure management API provides a RESTful set of web services that interact with Azure Key Vault. :ivar config: Configuration for client. @@ -61,13 +60,15 @@ class KeyVaultManagementClient(object): :ivar vaults: Vaults operations :vartype vaults: azure.mgmt.keyvault.operations.VaultsOperations + :ivar operations: Operations operations + :vartype operations: azure.mgmt.keyvault.operations.Operations :param credentials: Credentials needed for the client to connect to Azure. :type credentials: :mod:`A msrestazure Credentials object` - :param subscription_id: Gets subscription credentials which uniquely - identify Microsoft Azure subscription. The subscription ID forms part of - the URI for every service call. + :param subscription_id: Subscription credentials which uniquely identify + Microsoft Azure subscription. The subscription ID forms part of the URI + for every service call. :type subscription_id: str :param str base_url: Service URL """ @@ -76,12 +77,14 @@ def __init__( self, credentials, subscription_id, base_url=None): self.config = KeyVaultManagementClientConfiguration(credentials, subscription_id, base_url) - self._client = ServiceClient(self.config.credentials, self.config) + super(KeyVaultManagementClient, self).__init__(self.config.credentials, self.config) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} - self.api_version = '2016-10-01' + self.api_version = '2018-02-14' self._serialize = Serializer(client_models) self._deserialize = Deserializer(client_models) self.vaults = VaultsOperations( self._client, self.config, self._serialize, self._deserialize) + self.operations = Operations( + self._client, self.config, self._serialize, self._deserialize) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/__init__.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/__init__.py old mode 100755 new mode 100644 index 729a38caa9d8..e561ff7983d0 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/__init__.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/__init__.py @@ -9,18 +9,56 @@ # regenerated. # -------------------------------------------------------------------------- -from .sku import Sku -from .permissions import Permissions -from .access_policy_entry import AccessPolicyEntry -from .vault_properties import VaultProperties -from .deleted_vault_properties import DeletedVaultProperties -from .vault_create_or_update_parameters import VaultCreateOrUpdateParameters -from .vault import Vault -from .deleted_vault import DeletedVault -from .resource import Resource +try: + from .sku_py3 import Sku + from .permissions_py3 import Permissions + from .access_policy_entry_py3 import AccessPolicyEntry + from .ip_rule_py3 import IPRule + from .virtual_network_rule_py3 import VirtualNetworkRule + from .network_rule_set_py3 import NetworkRuleSet + from .vault_properties_py3 import VaultProperties + from .vault_patch_properties_py3 import VaultPatchProperties + from .vault_access_policy_properties_py3 import VaultAccessPolicyProperties + from .deleted_vault_properties_py3 import DeletedVaultProperties + from .vault_create_or_update_parameters_py3 import VaultCreateOrUpdateParameters + from .vault_patch_parameters_py3 import VaultPatchParameters + from .vault_access_policy_parameters_py3 import VaultAccessPolicyParameters + from .vault_py3 import Vault + from .deleted_vault_py3 import DeletedVault + from .resource_py3 import Resource + from .vault_check_name_availability_parameters_py3 import VaultCheckNameAvailabilityParameters + from .check_name_availability_result_py3 import CheckNameAvailabilityResult + from .operation_display_py3 import OperationDisplay + from .log_specification_py3 import LogSpecification + from .service_specification_py3 import ServiceSpecification + from .operation_py3 import Operation +except (SyntaxError, ImportError): + from .sku import Sku + from .permissions import Permissions + from .access_policy_entry import AccessPolicyEntry + from .ip_rule import IPRule + from .virtual_network_rule import VirtualNetworkRule + from .network_rule_set import NetworkRuleSet + from .vault_properties import VaultProperties + from .vault_patch_properties import VaultPatchProperties + from .vault_access_policy_properties import VaultAccessPolicyProperties + from .deleted_vault_properties import DeletedVaultProperties + from .vault_create_or_update_parameters import VaultCreateOrUpdateParameters + from .vault_patch_parameters import VaultPatchParameters + from .vault_access_policy_parameters import VaultAccessPolicyParameters + from .vault import Vault + from .deleted_vault import DeletedVault + from .resource import Resource + from .vault_check_name_availability_parameters import VaultCheckNameAvailabilityParameters + from .check_name_availability_result import CheckNameAvailabilityResult + from .operation_display import OperationDisplay + from .log_specification import LogSpecification + from .service_specification import ServiceSpecification + from .operation import Operation from .vault_paged import VaultPaged from .deleted_vault_paged import DeletedVaultPaged from .resource_paged import ResourcePaged +from .operation_paged import OperationPaged from .key_vault_management_client_enums import ( SkuName, KeyPermissions, @@ -28,25 +66,47 @@ CertificatePermissions, StoragePermissions, CreateMode, + NetworkRuleBypassOptions, + NetworkRuleAction, + Reason, + AccessPolicyUpdateKind, ) __all__ = [ 'Sku', 'Permissions', 'AccessPolicyEntry', + 'IPRule', + 'VirtualNetworkRule', + 'NetworkRuleSet', 'VaultProperties', + 'VaultPatchProperties', + 'VaultAccessPolicyProperties', 'DeletedVaultProperties', 'VaultCreateOrUpdateParameters', + 'VaultPatchParameters', + 'VaultAccessPolicyParameters', 'Vault', 'DeletedVault', 'Resource', + 'VaultCheckNameAvailabilityParameters', + 'CheckNameAvailabilityResult', + 'OperationDisplay', + 'LogSpecification', + 'ServiceSpecification', + 'Operation', 'VaultPaged', 'DeletedVaultPaged', 'ResourcePaged', + 'OperationPaged', 'SkuName', 'KeyPermissions', 'SecretPermissions', 'CertificatePermissions', 'StoragePermissions', 'CreateMode', + 'NetworkRuleBypassOptions', + 'NetworkRuleAction', + 'Reason', + 'AccessPolicyUpdateKind', ] diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/access_policy_entry.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/access_policy_entry.py old mode 100755 new mode 100644 index e21e79188407..532fd4ad3cc4 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/access_policy_entry.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/access_policy_entry.py @@ -16,20 +16,21 @@ class AccessPolicyEntry(Model): """An identity that have access to the key vault. All identities in the array must use the same tenant ID as the key vault's tenant ID. - :param tenant_id: The Azure Active Directory tenant ID that should be used - for authenticating requests to the key vault. + All required parameters must be populated in order to send to Azure. + + :param tenant_id: Required. The Azure Active Directory tenant ID that + should be used for authenticating requests to the key vault. :type tenant_id: str - :param object_id: The object ID of a user, service principal or security - group in the Azure Active Directory tenant for the vault. The object ID - must be unique for the list of access policies. + :param object_id: Required. The object ID of a user, service principal or + security group in the Azure Active Directory tenant for the vault. The + object ID must be unique for the list of access policies. :type object_id: str :param application_id: Application ID of the client making request on behalf of a principal :type application_id: str - :param permissions: Permissions the identity has for keys, secrets and - certificates. - :type permissions: :class:`Permissions - ` + :param permissions: Required. Permissions the identity has for keys, + secrets and certificates. + :type permissions: ~azure.mgmt.keyvault.models.Permissions """ _validation = { @@ -45,8 +46,9 @@ class AccessPolicyEntry(Model): 'permissions': {'key': 'permissions', 'type': 'Permissions'}, } - def __init__(self, tenant_id, object_id, permissions, application_id=None): - self.tenant_id = tenant_id - self.object_id = object_id - self.application_id = application_id - self.permissions = permissions + def __init__(self, **kwargs): + super(AccessPolicyEntry, self).__init__(**kwargs) + self.tenant_id = kwargs.get('tenant_id', None) + self.object_id = kwargs.get('object_id', None) + self.application_id = kwargs.get('application_id', None) + self.permissions = kwargs.get('permissions', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/access_policy_entry_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/access_policy_entry_py3.py new file mode 100644 index 000000000000..1862c8f5e881 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/access_policy_entry_py3.py @@ -0,0 +1,54 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class AccessPolicyEntry(Model): + """An identity that have access to the key vault. All identities in the array + must use the same tenant ID as the key vault's tenant ID. + + All required parameters must be populated in order to send to Azure. + + :param tenant_id: Required. The Azure Active Directory tenant ID that + should be used for authenticating requests to the key vault. + :type tenant_id: str + :param object_id: Required. The object ID of a user, service principal or + security group in the Azure Active Directory tenant for the vault. The + object ID must be unique for the list of access policies. + :type object_id: str + :param application_id: Application ID of the client making request on + behalf of a principal + :type application_id: str + :param permissions: Required. Permissions the identity has for keys, + secrets and certificates. + :type permissions: ~azure.mgmt.keyvault.models.Permissions + """ + + _validation = { + 'tenant_id': {'required': True}, + 'object_id': {'required': True}, + 'permissions': {'required': True}, + } + + _attribute_map = { + 'tenant_id': {'key': 'tenantId', 'type': 'str'}, + 'object_id': {'key': 'objectId', 'type': 'str'}, + 'application_id': {'key': 'applicationId', 'type': 'str'}, + 'permissions': {'key': 'permissions', 'type': 'Permissions'}, + } + + def __init__(self, *, tenant_id: str, object_id: str, permissions, application_id: str=None, **kwargs) -> None: + super(AccessPolicyEntry, self).__init__(**kwargs) + self.tenant_id = tenant_id + self.object_id = object_id + self.application_id = application_id + self.permissions = permissions diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/check_name_availability_result.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/check_name_availability_result.py new file mode 100644 index 000000000000..eb924fe2ecd6 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/check_name_availability_result.py @@ -0,0 +1,50 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CheckNameAvailabilityResult(Model): + """The CheckNameAvailability operation response. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar name_available: A boolean value that indicates whether the name is + available for you to use. If true, the name is available. If false, the + name has already been taken or is invalid and cannot be used. + :vartype name_available: bool + :ivar reason: The reason that a vault name could not be used. The Reason + element is only returned if NameAvailable is false. Possible values + include: 'AccountNameInvalid', 'AlreadyExists' + :vartype reason: str or ~azure.mgmt.keyvault.models.Reason + :ivar message: An error message explaining the Reason value in more + detail. + :vartype message: str + """ + + _validation = { + 'name_available': {'readonly': True}, + 'reason': {'readonly': True}, + 'message': {'readonly': True}, + } + + _attribute_map = { + 'name_available': {'key': 'nameAvailable', 'type': 'bool'}, + 'reason': {'key': 'reason', 'type': 'Reason'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__(self, **kwargs): + super(CheckNameAvailabilityResult, self).__init__(**kwargs) + self.name_available = None + self.reason = None + self.message = None diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/check_name_availability_result_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/check_name_availability_result_py3.py new file mode 100644 index 000000000000..cd818840e171 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/check_name_availability_result_py3.py @@ -0,0 +1,50 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class CheckNameAvailabilityResult(Model): + """The CheckNameAvailability operation response. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar name_available: A boolean value that indicates whether the name is + available for you to use. If true, the name is available. If false, the + name has already been taken or is invalid and cannot be used. + :vartype name_available: bool + :ivar reason: The reason that a vault name could not be used. The Reason + element is only returned if NameAvailable is false. Possible values + include: 'AccountNameInvalid', 'AlreadyExists' + :vartype reason: str or ~azure.mgmt.keyvault.models.Reason + :ivar message: An error message explaining the Reason value in more + detail. + :vartype message: str + """ + + _validation = { + 'name_available': {'readonly': True}, + 'reason': {'readonly': True}, + 'message': {'readonly': True}, + } + + _attribute_map = { + 'name_available': {'key': 'nameAvailable', 'type': 'bool'}, + 'reason': {'key': 'reason', 'type': 'Reason'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__(self, **kwargs) -> None: + super(CheckNameAvailabilityResult, self).__init__(**kwargs) + self.name_available = None + self.reason = None + self.message = None diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault.py old mode 100755 new mode 100644 index cf2e5bd6e46b..fde8fff07353 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault.py @@ -25,8 +25,7 @@ class DeletedVault(Model): :ivar type: The resource type of the key vault. :vartype type: str :param properties: Properties of the vault - :type properties: :class:`DeletedVaultProperties - ` + :type properties: ~azure.mgmt.keyvault.models.DeletedVaultProperties """ _validation = { @@ -42,8 +41,9 @@ class DeletedVault(Model): 'properties': {'key': 'properties', 'type': 'DeletedVaultProperties'}, } - def __init__(self, properties=None): + def __init__(self, **kwargs): + super(DeletedVault, self).__init__(**kwargs) self.id = None self.name = None self.type = None - self.properties = properties + self.properties = kwargs.get('properties', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_paged.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_paged.py old mode 100755 new mode 100644 index a83951301114..756293a8c5eb --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_paged.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_paged.py @@ -14,7 +14,7 @@ class DeletedVaultPaged(Paged): """ - A paging container for iterating over a list of DeletedVault object + A paging container for iterating over a list of :class:`DeletedVault ` object """ _attribute_map = { diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties.py old mode 100755 new mode 100644 index 7dd2b0216eba..76fa9d43de1f --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties.py @@ -27,7 +27,7 @@ class DeletedVaultProperties(Model): :ivar scheduled_purge_date: The scheduled purged date. :vartype scheduled_purge_date: datetime :ivar tags: Tags of the original vault. - :vartype tags: dict + :vartype tags: dict[str, str] """ _validation = { @@ -46,7 +46,8 @@ class DeletedVaultProperties(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self): + def __init__(self, **kwargs): + super(DeletedVaultProperties, self).__init__(**kwargs) self.vault_id = None self.location = None self.deletion_date = None diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties_py3.py new file mode 100644 index 000000000000..c78663f989b5 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties_py3.py @@ -0,0 +1,55 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class DeletedVaultProperties(Model): + """Properties of the deleted vault. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar vault_id: The resource id of the original vault. + :vartype vault_id: str + :ivar location: The location of the original vault. + :vartype location: str + :ivar deletion_date: The deleted date. + :vartype deletion_date: datetime + :ivar scheduled_purge_date: The scheduled purged date. + :vartype scheduled_purge_date: datetime + :ivar tags: Tags of the original vault. + :vartype tags: dict[str, str] + """ + + _validation = { + 'vault_id': {'readonly': True}, + 'location': {'readonly': True}, + 'deletion_date': {'readonly': True}, + 'scheduled_purge_date': {'readonly': True}, + 'tags': {'readonly': True}, + } + + _attribute_map = { + 'vault_id': {'key': 'vaultId', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'deletion_date': {'key': 'deletionDate', 'type': 'iso-8601'}, + 'scheduled_purge_date': {'key': 'scheduledPurgeDate', 'type': 'iso-8601'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, **kwargs) -> None: + super(DeletedVaultProperties, self).__init__(**kwargs) + self.vault_id = None + self.location = None + self.deletion_date = None + self.scheduled_purge_date = None + self.tags = None diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_py3.py new file mode 100644 index 000000000000..5ef53e97840f --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_py3.py @@ -0,0 +1,49 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class DeletedVault(Model): + """Deleted vault information with extended details. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar id: The resource ID for the deleted key vault. + :vartype id: str + :ivar name: The name of the key vault. + :vartype name: str + :ivar type: The resource type of the key vault. + :vartype type: str + :param properties: Properties of the vault + :type properties: ~azure.mgmt.keyvault.models.DeletedVaultProperties + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': 'DeletedVaultProperties'}, + } + + def __init__(self, *, properties=None, **kwargs) -> None: + super(DeletedVault, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.properties = properties diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/ip_rule.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/ip_rule.py new file mode 100644 index 000000000000..8dc2808dd197 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/ip_rule.py @@ -0,0 +1,37 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class IPRule(Model): + """A rule governing the accesibility of a vault from a specific ip address or + ip range. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. An IPv4 address range in CIDR notation, such as + '124.56.78.91' (simple IP address) or '124.56.78.0/24' (all addresses that + start with 124.56.78). + :type value: str + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'str'}, + } + + def __init__(self, **kwargs): + super(IPRule, self).__init__(**kwargs) + self.value = kwargs.get('value', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/ip_rule_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/ip_rule_py3.py new file mode 100644 index 000000000000..e0656699eb1e --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/ip_rule_py3.py @@ -0,0 +1,37 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class IPRule(Model): + """A rule governing the accesibility of a vault from a specific ip address or + ip range. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. An IPv4 address range in CIDR notation, such as + '124.56.78.91' (simple IP address) or '124.56.78.0/24' (all addresses that + start with 124.56.78). + :type value: str + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'str'}, + } + + def __init__(self, *, value: str, **kwargs) -> None: + super(IPRule, self).__init__(**kwargs) + self.value = value diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/key_vault_management_client_enums.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/key_vault_management_client_enums.py old mode 100755 new mode 100644 index b36bd0601cd8..e31e5b8e5c8f --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/key_vault_management_client_enums.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/key_vault_management_client_enums.py @@ -12,13 +12,13 @@ from enum import Enum -class SkuName(Enum): +class SkuName(str, Enum): standard = "standard" premium = "premium" -class KeyPermissions(Enum): +class KeyPermissions(str, Enum): encrypt = "encrypt" decrypt = "decrypt" @@ -38,7 +38,7 @@ class KeyPermissions(Enum): purge = "purge" -class SecretPermissions(Enum): +class SecretPermissions(str, Enum): get = "get" list = "list" @@ -50,7 +50,7 @@ class SecretPermissions(Enum): purge = "purge" -class CertificatePermissions(Enum): +class CertificatePermissions(str, Enum): get = "get" list = "list" @@ -66,9 +66,11 @@ class CertificatePermissions(Enum): manageissuers = "manageissuers" recover = "recover" purge = "purge" + backup = "backup" + restore = "restore" -class StoragePermissions(Enum): +class StoragePermissions(str, Enum): get = "get" list = "list" @@ -76,13 +78,42 @@ class StoragePermissions(Enum): set = "set" update = "update" regeneratekey = "regeneratekey" + recover = "recover" + purge = "purge" + backup = "backup" + restore = "restore" setsas = "setsas" listsas = "listsas" getsas = "getsas" deletesas = "deletesas" -class CreateMode(Enum): +class CreateMode(str, Enum): recover = "recover" default = "default" + + +class NetworkRuleBypassOptions(str, Enum): + + azure_services = "AzureServices" + none = "None" + + +class NetworkRuleAction(str, Enum): + + allow = "Allow" + deny = "Deny" + + +class Reason(str, Enum): + + account_name_invalid = "AccountNameInvalid" + already_exists = "AlreadyExists" + + +class AccessPolicyUpdateKind(str, Enum): + + add = "add" + replace = "replace" + remove = "remove" diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification.py new file mode 100644 index 000000000000..092f8d7039b9 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification.py @@ -0,0 +1,36 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class LogSpecification(Model): + """Log specification of operation. + + :param name: Name of log specification. + :type name: str + :param display_name: Display name of log specification. + :type display_name: str + :param blob_duration: Blob duration of specification. + :type blob_duration: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'display_name': {'key': 'displayName', 'type': 'str'}, + 'blob_duration': {'key': 'blobDuration', 'type': 'str'}, + } + + def __init__(self, **kwargs): + super(LogSpecification, self).__init__(**kwargs) + self.name = kwargs.get('name', None) + self.display_name = kwargs.get('display_name', None) + self.blob_duration = kwargs.get('blob_duration', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification_py3.py new file mode 100644 index 000000000000..091c8250d3f2 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification_py3.py @@ -0,0 +1,36 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class LogSpecification(Model): + """Log specification of operation. + + :param name: Name of log specification. + :type name: str + :param display_name: Display name of log specification. + :type display_name: str + :param blob_duration: Blob duration of specification. + :type blob_duration: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'display_name': {'key': 'displayName', 'type': 'str'}, + 'blob_duration': {'key': 'blobDuration', 'type': 'str'}, + } + + def __init__(self, *, name: str=None, display_name: str=None, blob_duration: str=None, **kwargs) -> None: + super(LogSpecification, self).__init__(**kwargs) + self.name = name + self.display_name = display_name + self.blob_duration = blob_duration diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/network_rule_set.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/network_rule_set.py new file mode 100644 index 000000000000..59ccba80617a --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/network_rule_set.py @@ -0,0 +1,45 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class NetworkRuleSet(Model): + """A set of rules governing the network accessibility of a vault. + + :param bypass: Tells what traffic can bypass network rules. This can be + 'AzureServices' or 'None'. If not specified the default is + 'AzureServices'. Possible values include: 'AzureServices', 'None' + :type bypass: str or ~azure.mgmt.keyvault.models.NetworkRuleBypassOptions + :param default_action: The default action when no rule from ipRules and + from virtualNetworkRules match. This is only used after the bypass + property has been evaluated. Possible values include: 'Allow', 'Deny' + :type default_action: str or ~azure.mgmt.keyvault.models.NetworkRuleAction + :param ip_rules: The list of IP address rules. + :type ip_rules: list[~azure.mgmt.keyvault.models.IPRule] + :param virtual_network_rules: The list of virtual network rules. + :type virtual_network_rules: + list[~azure.mgmt.keyvault.models.VirtualNetworkRule] + """ + + _attribute_map = { + 'bypass': {'key': 'bypass', 'type': 'str'}, + 'default_action': {'key': 'defaultAction', 'type': 'str'}, + 'ip_rules': {'key': 'ipRules', 'type': '[IPRule]'}, + 'virtual_network_rules': {'key': 'virtualNetworkRules', 'type': '[VirtualNetworkRule]'}, + } + + def __init__(self, **kwargs): + super(NetworkRuleSet, self).__init__(**kwargs) + self.bypass = kwargs.get('bypass', None) + self.default_action = kwargs.get('default_action', None) + self.ip_rules = kwargs.get('ip_rules', None) + self.virtual_network_rules = kwargs.get('virtual_network_rules', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/network_rule_set_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/network_rule_set_py3.py new file mode 100644 index 000000000000..ae74ff44fa86 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/network_rule_set_py3.py @@ -0,0 +1,45 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class NetworkRuleSet(Model): + """A set of rules governing the network accessibility of a vault. + + :param bypass: Tells what traffic can bypass network rules. This can be + 'AzureServices' or 'None'. If not specified the default is + 'AzureServices'. Possible values include: 'AzureServices', 'None' + :type bypass: str or ~azure.mgmt.keyvault.models.NetworkRuleBypassOptions + :param default_action: The default action when no rule from ipRules and + from virtualNetworkRules match. This is only used after the bypass + property has been evaluated. Possible values include: 'Allow', 'Deny' + :type default_action: str or ~azure.mgmt.keyvault.models.NetworkRuleAction + :param ip_rules: The list of IP address rules. + :type ip_rules: list[~azure.mgmt.keyvault.models.IPRule] + :param virtual_network_rules: The list of virtual network rules. + :type virtual_network_rules: + list[~azure.mgmt.keyvault.models.VirtualNetworkRule] + """ + + _attribute_map = { + 'bypass': {'key': 'bypass', 'type': 'str'}, + 'default_action': {'key': 'defaultAction', 'type': 'str'}, + 'ip_rules': {'key': 'ipRules', 'type': '[IPRule]'}, + 'virtual_network_rules': {'key': 'virtualNetworkRules', 'type': '[VirtualNetworkRule]'}, + } + + def __init__(self, *, bypass=None, default_action=None, ip_rules=None, virtual_network_rules=None, **kwargs) -> None: + super(NetworkRuleSet, self).__init__(**kwargs) + self.bypass = bypass + self.default_action = default_action + self.ip_rules = ip_rules + self.virtual_network_rules = virtual_network_rules diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation.py new file mode 100644 index 000000000000..201a18369a5d --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation.py @@ -0,0 +1,42 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class Operation(Model): + """Key Vault REST API operation definition. + + :param name: Operation name: {provider}/{resource}/{operation} + :type name: str + :param display: Display metadata associated with the operation. + :type display: ~azure.mgmt.keyvault.models.OperationDisplay + :param origin: The origin of operations. + :type origin: str + :param service_specification: One property of operation, include metric + specifications. + :type service_specification: + ~azure.mgmt.keyvault.models.ServiceSpecification + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'display': {'key': 'display', 'type': 'OperationDisplay'}, + 'origin': {'key': 'origin', 'type': 'str'}, + 'service_specification': {'key': 'properties.serviceSpecification', 'type': 'ServiceSpecification'}, + } + + def __init__(self, **kwargs): + super(Operation, self).__init__(**kwargs) + self.name = kwargs.get('name', None) + self.display = kwargs.get('display', None) + self.origin = kwargs.get('origin', None) + self.service_specification = kwargs.get('service_specification', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_display.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_display.py new file mode 100644 index 000000000000..6aaa72c83818 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_display.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class OperationDisplay(Model): + """Display metadata associated with the operation. + + :param provider: Service provider: Microsoft Key Vault. + :type provider: str + :param resource: Resource on which the operation is performed etc. + :type resource: str + :param operation: Type of operation: get, read, delete, etc. + :type operation: str + :param description: Decription of operation. + :type description: str + """ + + _attribute_map = { + 'provider': {'key': 'provider', 'type': 'str'}, + 'resource': {'key': 'resource', 'type': 'str'}, + 'operation': {'key': 'operation', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + } + + def __init__(self, **kwargs): + super(OperationDisplay, self).__init__(**kwargs) + self.provider = kwargs.get('provider', None) + self.resource = kwargs.get('resource', None) + self.operation = kwargs.get('operation', None) + self.description = kwargs.get('description', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_display_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_display_py3.py new file mode 100644 index 000000000000..75671557dbee --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_display_py3.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class OperationDisplay(Model): + """Display metadata associated with the operation. + + :param provider: Service provider: Microsoft Key Vault. + :type provider: str + :param resource: Resource on which the operation is performed etc. + :type resource: str + :param operation: Type of operation: get, read, delete, etc. + :type operation: str + :param description: Decription of operation. + :type description: str + """ + + _attribute_map = { + 'provider': {'key': 'provider', 'type': 'str'}, + 'resource': {'key': 'resource', 'type': 'str'}, + 'operation': {'key': 'operation', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + } + + def __init__(self, *, provider: str=None, resource: str=None, operation: str=None, description: str=None, **kwargs) -> None: + super(OperationDisplay, self).__init__(**kwargs) + self.provider = provider + self.resource = resource + self.operation = operation + self.description = description diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_paged.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_paged.py new file mode 100644 index 000000000000..cded4bbab821 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_paged.py @@ -0,0 +1,27 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.paging import Paged + + +class OperationPaged(Paged): + """ + A paging container for iterating over a list of :class:`Operation ` object + """ + + _attribute_map = { + 'next_link': {'key': 'nextLink', 'type': 'str'}, + 'current_page': {'key': 'value', 'type': '[Operation]'} + } + + def __init__(self, *args, **kwargs): + + super(OperationPaged, self).__init__(*args, **kwargs) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_py3.py new file mode 100644 index 000000000000..caad53eed64b --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_py3.py @@ -0,0 +1,42 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class Operation(Model): + """Key Vault REST API operation definition. + + :param name: Operation name: {provider}/{resource}/{operation} + :type name: str + :param display: Display metadata associated with the operation. + :type display: ~azure.mgmt.keyvault.models.OperationDisplay + :param origin: The origin of operations. + :type origin: str + :param service_specification: One property of operation, include metric + specifications. + :type service_specification: + ~azure.mgmt.keyvault.models.ServiceSpecification + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'display': {'key': 'display', 'type': 'OperationDisplay'}, + 'origin': {'key': 'origin', 'type': 'str'}, + 'service_specification': {'key': 'properties.serviceSpecification', 'type': 'ServiceSpecification'}, + } + + def __init__(self, *, name: str=None, display=None, origin: str=None, service_specification=None, **kwargs) -> None: + super(Operation, self).__init__(**kwargs) + self.name = name + self.display = display + self.origin = origin + self.service_specification = service_specification diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions.py old mode 100755 new mode 100644 index 1990a3986c85..cd774ee7763f --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions.py @@ -16,17 +16,14 @@ class Permissions(Model): """Permissions the identity has for keys, secrets, certificates and storage. :param keys: Permissions to keys - :type keys: list of str or :class:`KeyPermissions - ` + :type keys: list[str or ~azure.mgmt.keyvault.models.KeyPermissions] :param secrets: Permissions to secrets - :type secrets: list of str or :class:`SecretPermissions - ` + :type secrets: list[str or ~azure.mgmt.keyvault.models.SecretPermissions] :param certificates: Permissions to certificates - :type certificates: list of str or :class:`CertificatePermissions - ` + :type certificates: list[str or + ~azure.mgmt.keyvault.models.CertificatePermissions] :param storage: Permissions to storage accounts - :type storage: list of str or :class:`StoragePermissions - ` + :type storage: list[str or ~azure.mgmt.keyvault.models.StoragePermissions] """ _attribute_map = { @@ -36,8 +33,9 @@ class Permissions(Model): 'storage': {'key': 'storage', 'type': '[str]'}, } - def __init__(self, keys=None, secrets=None, certificates=None, storage=None): - self.keys = keys - self.secrets = secrets - self.certificates = certificates - self.storage = storage + def __init__(self, **kwargs): + super(Permissions, self).__init__(**kwargs) + self.keys = kwargs.get('keys', None) + self.secrets = kwargs.get('secrets', None) + self.certificates = kwargs.get('certificates', None) + self.storage = kwargs.get('storage', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions_py3.py new file mode 100644 index 000000000000..a46b41e32517 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions_py3.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class Permissions(Model): + """Permissions the identity has for keys, secrets, certificates and storage. + + :param keys: Permissions to keys + :type keys: list[str or ~azure.mgmt.keyvault.models.KeyPermissions] + :param secrets: Permissions to secrets + :type secrets: list[str or ~azure.mgmt.keyvault.models.SecretPermissions] + :param certificates: Permissions to certificates + :type certificates: list[str or + ~azure.mgmt.keyvault.models.CertificatePermissions] + :param storage: Permissions to storage accounts + :type storage: list[str or ~azure.mgmt.keyvault.models.StoragePermissions] + """ + + _attribute_map = { + 'keys': {'key': 'keys', 'type': '[str]'}, + 'secrets': {'key': 'secrets', 'type': '[str]'}, + 'certificates': {'key': 'certificates', 'type': '[str]'}, + 'storage': {'key': 'storage', 'type': '[str]'}, + } + + def __init__(self, *, keys=None, secrets=None, certificates=None, storage=None, **kwargs) -> None: + super(Permissions, self).__init__(**kwargs) + self.keys = keys + self.secrets = secrets + self.certificates = certificates + self.storage = storage diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource.py old mode 100755 new mode 100644 index 91d0112ff745..0c30e1ffcb16 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource.py @@ -18,22 +18,24 @@ class Resource(Model): Variables are only populated by the server, and will be ignored when sending a request. + All required parameters must be populated in order to send to Azure. + :ivar id: The Azure Resource Manager resource ID for the key vault. :vartype id: str - :param name: The name of the key vault. - :type name: str + :ivar name: The name of the key vault. + :vartype name: str :ivar type: The resource type of the key vault. :vartype type: str - :param location: The supported Azure location where the key vault should - be created. + :param location: Required. The supported Azure location where the key + vault should be created. :type location: str :param tags: The tags that will be assigned to the key vault. - :type tags: dict + :type tags: dict[str, str] """ _validation = { 'id': {'readonly': True}, - 'name': {'required': True}, + 'name': {'readonly': True}, 'type': {'readonly': True}, 'location': {'required': True}, } @@ -46,9 +48,10 @@ class Resource(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, name, location, tags=None): + def __init__(self, **kwargs): + super(Resource, self).__init__(**kwargs) self.id = None - self.name = name + self.name = None self.type = None - self.location = location - self.tags = tags + self.location = kwargs.get('location', None) + self.tags = kwargs.get('tags', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource_paged.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource_paged.py old mode 100755 new mode 100644 index c6bb017444a4..1635ebc7fda1 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource_paged.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource_paged.py @@ -14,7 +14,7 @@ class ResourcePaged(Paged): """ - A paging container for iterating over a list of Resource object + A paging container for iterating over a list of :class:`Resource ` object """ _attribute_map = { diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource_py3.py new file mode 100644 index 000000000000..57daac0d2a91 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource_py3.py @@ -0,0 +1,57 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class Resource(Model): + """Key Vault resource. + + Variables are only populated by the server, and will be ignored when + sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: The Azure Resource Manager resource ID for the key vault. + :vartype id: str + :ivar name: The name of the key vault. + :vartype name: str + :ivar type: The resource type of the key vault. + :vartype type: str + :param location: Required. The supported Azure location where the key + vault should be created. + :type location: str + :param tags: The tags that will be assigned to the key vault. + :type tags: dict[str, str] + """ + + _validation = { + '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'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + } + + def __init__(self, *, location: str, tags=None, **kwargs) -> None: + super(Resource, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.location = location + self.tags = tags diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/service_specification.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/service_specification.py new file mode 100644 index 000000000000..e049692e09c0 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/service_specification.py @@ -0,0 +1,29 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class ServiceSpecification(Model): + """One property of operation, include log specifications. + + :param log_specifications: Log specifications of operation. + :type log_specifications: + list[~azure.mgmt.keyvault.models.LogSpecification] + """ + + _attribute_map = { + 'log_specifications': {'key': 'logSpecifications', 'type': '[LogSpecification]'}, + } + + def __init__(self, **kwargs): + super(ServiceSpecification, self).__init__(**kwargs) + self.log_specifications = kwargs.get('log_specifications', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/service_specification_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/service_specification_py3.py new file mode 100644 index 000000000000..b34f83c19eee --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/service_specification_py3.py @@ -0,0 +1,29 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class ServiceSpecification(Model): + """One property of operation, include log specifications. + + :param log_specifications: Log specifications of operation. + :type log_specifications: + list[~azure.mgmt.keyvault.models.LogSpecification] + """ + + _attribute_map = { + 'log_specifications': {'key': 'logSpecifications', 'type': '[LogSpecification]'}, + } + + def __init__(self, *, log_specifications=None, **kwargs) -> None: + super(ServiceSpecification, self).__init__(**kwargs) + self.log_specifications = log_specifications diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku.py old mode 100755 new mode 100644 index 7444e328b7f9..821f817256a4 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku.py @@ -18,11 +18,14 @@ class Sku(Model): Variables are only populated by the server, and will be ignored when sending a request. - :ivar family: SKU family name. Default value: "A" . + All required parameters must be populated in order to send to Azure. + + :ivar family: Required. SKU family name. Default value: "A" . :vartype family: str - :param name: SKU name to specify whether the key vault is a standard vault - or a premium vault. Possible values include: 'standard', 'premium' - :type name: str or :class:`SkuName ` + :param name: Required. SKU name to specify whether the key vault is a + standard vault or a premium vault. Possible values include: 'standard', + 'premium' + :type name: str or ~azure.mgmt.keyvault.models.SkuName """ _validation = { @@ -37,5 +40,6 @@ class Sku(Model): family = "A" - def __init__(self, name): - self.name = name + def __init__(self, **kwargs): + super(Sku, self).__init__(**kwargs) + self.name = kwargs.get('name', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku_py3.py new file mode 100644 index 000000000000..f14fc4dafab0 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku_py3.py @@ -0,0 +1,45 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class Sku(Model): + """SKU details. + + Variables are only populated by the server, and will be ignored when + sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar family: Required. SKU family name. Default value: "A" . + :vartype family: str + :param name: Required. SKU name to specify whether the key vault is a + standard vault or a premium vault. Possible values include: 'standard', + 'premium' + :type name: str or ~azure.mgmt.keyvault.models.SkuName + """ + + _validation = { + 'family': {'required': True, 'constant': True}, + 'name': {'required': True}, + } + + _attribute_map = { + 'family': {'key': 'family', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'SkuName'}, + } + + family = "A" + + def __init__(self, *, name, **kwargs) -> None: + super(Sku, self).__init__(**kwargs) + self.name = name diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault.py old mode 100755 new mode 100644 index 46905dbac4f1..6ec3c66c53e1 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault.py @@ -18,25 +18,26 @@ class Vault(Resource): Variables are only populated by the server, and will be ignored when sending a request. + All required parameters must be populated in order to send to Azure. + :ivar id: The Azure Resource Manager resource ID for the key vault. :vartype id: str - :param name: The name of the key vault. - :type name: str + :ivar name: The name of the key vault. + :vartype name: str :ivar type: The resource type of the key vault. :vartype type: str - :param location: The supported Azure location where the key vault should - be created. + :param location: Required. The supported Azure location where the key + vault should be created. :type location: str :param tags: The tags that will be assigned to the key vault. - :type tags: dict - :param properties: Properties of the vault - :type properties: :class:`VaultProperties - ` + :type tags: dict[str, str] + :param properties: Required. Properties of the vault + :type properties: ~azure.mgmt.keyvault.models.VaultProperties """ _validation = { 'id': {'readonly': True}, - 'name': {'required': True}, + 'name': {'readonly': True}, 'type': {'readonly': True}, 'location': {'required': True}, 'properties': {'required': True}, @@ -51,6 +52,6 @@ class Vault(Resource): 'properties': {'key': 'properties', 'type': 'VaultProperties'}, } - def __init__(self, name, location, properties, tags=None): - super(Vault, self).__init__(name=name, location=location, tags=tags) - self.properties = properties + def __init__(self, **kwargs): + super(Vault, self).__init__(**kwargs) + self.properties = kwargs.get('properties', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_parameters.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_parameters.py new file mode 100644 index 000000000000..a2a6e5db234e --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_parameters.py @@ -0,0 +1,57 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultAccessPolicyParameters(Model): + """Parameters for updating the access policy in a vault. + + Variables are only populated by the server, and will be ignored when + sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: The resource id of the access policy. + :vartype id: str + :ivar name: The resource name of the access policy. + :vartype name: str + :ivar type: The resource name of the access policy. + :vartype type: str + :ivar location: The resource type of the the access policy. + :vartype location: str + :param properties: Required. Properties of the access policy + :type properties: ~azure.mgmt.keyvault.models.VaultAccessPolicyProperties + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'location': {'readonly': True}, + 'properties': {'required': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': 'VaultAccessPolicyProperties'}, + } + + def __init__(self, **kwargs): + super(VaultAccessPolicyParameters, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.location = None + self.properties = kwargs.get('properties', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_parameters_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_parameters_py3.py new file mode 100644 index 000000000000..0b3bc1b438c7 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_parameters_py3.py @@ -0,0 +1,57 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultAccessPolicyParameters(Model): + """Parameters for updating the access policy in a vault. + + Variables are only populated by the server, and will be ignored when + sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: The resource id of the access policy. + :vartype id: str + :ivar name: The resource name of the access policy. + :vartype name: str + :ivar type: The resource name of the access policy. + :vartype type: str + :ivar location: The resource type of the the access policy. + :vartype location: str + :param properties: Required. Properties of the access policy + :type properties: ~azure.mgmt.keyvault.models.VaultAccessPolicyProperties + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'location': {'readonly': True}, + 'properties': {'required': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': 'VaultAccessPolicyProperties'}, + } + + def __init__(self, *, properties, **kwargs) -> None: + super(VaultAccessPolicyParameters, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.location = None + self.properties = properties diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_properties.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_properties.py new file mode 100644 index 000000000000..cf906d226126 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_properties.py @@ -0,0 +1,36 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultAccessPolicyProperties(Model): + """Properties of the vault access policy. + + All required parameters must be populated in order to send to Azure. + + :param access_policies: Required. An array of 0 to 16 identities that have + access to the key vault. All identities in the array must use the same + tenant ID as the key vault's tenant ID. + :type access_policies: list[~azure.mgmt.keyvault.models.AccessPolicyEntry] + """ + + _validation = { + 'access_policies': {'required': True}, + } + + _attribute_map = { + 'access_policies': {'key': 'accessPolicies', 'type': '[AccessPolicyEntry]'}, + } + + def __init__(self, **kwargs): + super(VaultAccessPolicyProperties, self).__init__(**kwargs) + self.access_policies = kwargs.get('access_policies', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_properties_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_properties_py3.py new file mode 100644 index 000000000000..bacfa890f9f2 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_properties_py3.py @@ -0,0 +1,36 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultAccessPolicyProperties(Model): + """Properties of the vault access policy. + + All required parameters must be populated in order to send to Azure. + + :param access_policies: Required. An array of 0 to 16 identities that have + access to the key vault. All identities in the array must use the same + tenant ID as the key vault's tenant ID. + :type access_policies: list[~azure.mgmt.keyvault.models.AccessPolicyEntry] + """ + + _validation = { + 'access_policies': {'required': True}, + } + + _attribute_map = { + 'access_policies': {'key': 'accessPolicies', 'type': '[AccessPolicyEntry]'}, + } + + def __init__(self, *, access_policies, **kwargs) -> None: + super(VaultAccessPolicyProperties, self).__init__(**kwargs) + self.access_policies = access_policies diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_check_name_availability_parameters.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_check_name_availability_parameters.py new file mode 100644 index 000000000000..b49bc5dbb513 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_check_name_availability_parameters.py @@ -0,0 +1,44 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultCheckNameAvailabilityParameters(Model): + """The parameters used to check the availabity of the vault name. + + Variables are only populated by the server, and will be ignored when + sending a request. + + All required parameters must be populated in order to send to Azure. + + :param name: Required. The vault name. + :type name: str + :ivar type: Required. The type of resource, Microsoft.KeyVault/vaults. + Default value: "Microsoft.KeyVault/vaults" . + :vartype type: str + """ + + _validation = { + 'name': {'required': True}, + 'type': {'required': True, 'constant': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + type = "Microsoft.KeyVault/vaults" + + def __init__(self, **kwargs): + super(VaultCheckNameAvailabilityParameters, self).__init__(**kwargs) + self.name = kwargs.get('name', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_check_name_availability_parameters_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_check_name_availability_parameters_py3.py new file mode 100644 index 000000000000..74afce9a8c85 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_check_name_availability_parameters_py3.py @@ -0,0 +1,44 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultCheckNameAvailabilityParameters(Model): + """The parameters used to check the availabity of the vault name. + + Variables are only populated by the server, and will be ignored when + sending a request. + + All required parameters must be populated in order to send to Azure. + + :param name: Required. The vault name. + :type name: str + :ivar type: Required. The type of resource, Microsoft.KeyVault/vaults. + Default value: "Microsoft.KeyVault/vaults" . + :vartype type: str + """ + + _validation = { + 'name': {'required': True}, + 'type': {'required': True, 'constant': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + type = "Microsoft.KeyVault/vaults" + + def __init__(self, *, name: str, **kwargs) -> None: + super(VaultCheckNameAvailabilityParameters, self).__init__(**kwargs) + self.name = name diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_create_or_update_parameters.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_create_or_update_parameters.py old mode 100755 new mode 100644 index 58af5285a6e3..17d358af45c4 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_create_or_update_parameters.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_create_or_update_parameters.py @@ -15,14 +15,15 @@ class VaultCreateOrUpdateParameters(Model): """Parameters for creating or updating a vault. - :param location: The supported Azure location where the key vault should - be created. + All required parameters must be populated in order to send to Azure. + + :param location: Required. The supported Azure location where the key + vault should be created. :type location: str :param tags: The tags that will be assigned to the key vault. - :type tags: dict - :param properties: Properties of the vault - :type properties: :class:`VaultProperties - ` + :type tags: dict[str, str] + :param properties: Required. Properties of the vault + :type properties: ~azure.mgmt.keyvault.models.VaultProperties """ _validation = { @@ -36,7 +37,8 @@ class VaultCreateOrUpdateParameters(Model): 'properties': {'key': 'properties', 'type': 'VaultProperties'}, } - def __init__(self, location, properties, tags=None): - self.location = location - self.tags = tags - self.properties = properties + def __init__(self, **kwargs): + super(VaultCreateOrUpdateParameters, self).__init__(**kwargs) + self.location = kwargs.get('location', None) + self.tags = kwargs.get('tags', None) + self.properties = kwargs.get('properties', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_create_or_update_parameters_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_create_or_update_parameters_py3.py new file mode 100644 index 000000000000..861fc58686cb --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_create_or_update_parameters_py3.py @@ -0,0 +1,44 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultCreateOrUpdateParameters(Model): + """Parameters for creating or updating a vault. + + All required parameters must be populated in order to send to Azure. + + :param location: Required. The supported Azure location where the key + vault should be created. + :type location: str + :param tags: The tags that will be assigned to the key vault. + :type tags: dict[str, str] + :param properties: Required. Properties of the vault + :type properties: ~azure.mgmt.keyvault.models.VaultProperties + """ + + _validation = { + 'location': {'required': True}, + 'properties': {'required': True}, + } + + _attribute_map = { + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'properties': {'key': 'properties', 'type': 'VaultProperties'}, + } + + def __init__(self, *, location: str, properties, tags=None, **kwargs) -> None: + super(VaultCreateOrUpdateParameters, self).__init__(**kwargs) + self.location = location + self.tags = tags + self.properties = properties diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_paged.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_paged.py old mode 100755 new mode 100644 index e506499eb8ee..6ec2f41fabab --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_paged.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_paged.py @@ -14,7 +14,7 @@ class VaultPaged(Paged): """ - A paging container for iterating over a list of Vault object + A paging container for iterating over a list of :class:`Vault ` object """ _attribute_map = { diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_parameters.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_parameters.py new file mode 100644 index 000000000000..b38fcc1b32df --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_parameters.py @@ -0,0 +1,32 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultPatchParameters(Model): + """Parameters for creating or updating a vault. + + :param tags: The tags that will be assigned to the key vault. + :type tags: dict[str, str] + :param properties: Properties of the vault + :type properties: ~azure.mgmt.keyvault.models.VaultPatchProperties + """ + + _attribute_map = { + 'tags': {'key': 'tags', 'type': '{str}'}, + 'properties': {'key': 'properties', 'type': 'VaultPatchProperties'}, + } + + def __init__(self, **kwargs): + super(VaultPatchParameters, self).__init__(**kwargs) + self.tags = kwargs.get('tags', None) + self.properties = kwargs.get('properties', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_parameters_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_parameters_py3.py new file mode 100644 index 000000000000..16bf148f7b8c --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_parameters_py3.py @@ -0,0 +1,32 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultPatchParameters(Model): + """Parameters for creating or updating a vault. + + :param tags: The tags that will be assigned to the key vault. + :type tags: dict[str, str] + :param properties: Properties of the vault + :type properties: ~azure.mgmt.keyvault.models.VaultPatchProperties + """ + + _attribute_map = { + 'tags': {'key': 'tags', 'type': '{str}'}, + 'properties': {'key': 'properties', 'type': 'VaultPatchProperties'}, + } + + def __init__(self, *, tags=None, properties=None, **kwargs) -> None: + super(VaultPatchParameters, self).__init__(**kwargs) + self.tags = tags + self.properties = properties diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_properties.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_properties.py new file mode 100644 index 000000000000..e1e4b1b5b89d --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_properties.py @@ -0,0 +1,82 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultPatchProperties(Model): + """Properties of the vault. + + :param tenant_id: The Azure Active Directory tenant ID that should be used + for authenticating requests to the key vault. + :type tenant_id: str + :param sku: SKU details + :type sku: ~azure.mgmt.keyvault.models.Sku + :param access_policies: An array of 0 to 16 identities that have access to + the key vault. All identities in the array must use the same tenant ID as + the key vault's tenant ID. + :type access_policies: list[~azure.mgmt.keyvault.models.AccessPolicyEntry] + :param enabled_for_deployment: Property to specify whether Azure Virtual + Machines are permitted to retrieve certificates stored as secrets from the + key vault. + :type enabled_for_deployment: bool + :param enabled_for_disk_encryption: Property to specify whether Azure Disk + Encryption is permitted to retrieve secrets from the vault and unwrap + keys. + :type enabled_for_disk_encryption: bool + :param enabled_for_template_deployment: Property to specify whether Azure + Resource Manager is permitted to retrieve secrets from the key vault. + :type enabled_for_template_deployment: bool + :param enable_soft_delete: Property to specify whether the 'soft delete' + functionality is enabled for this key vault. It does not accept false + value. + :type enable_soft_delete: bool + :param create_mode: The vault's create mode to indicate whether the vault + need to be recovered or not. Possible values include: 'recover', 'default' + :type create_mode: str or ~azure.mgmt.keyvault.models.CreateMode + :param enable_purge_protection: Property specifying whether protection + against purge is enabled for this vault. Setting this property to true + activates protection against purge for this vault and its content - only + the Key Vault service may initiate a hard, irrecoverable deletion. The + setting is effective only if soft delete is also enabled. Enabling this + functionality is irreversible - that is, the property does not accept + false as its value. + :type enable_purge_protection: bool + :param network_acls: A collection of rules governing the accessibility of + the vault from specific network locations. + :type network_acls: ~azure.mgmt.keyvault.models.NetworkRuleSet + """ + + _attribute_map = { + 'tenant_id': {'key': 'tenantId', 'type': 'str'}, + 'sku': {'key': 'sku', 'type': 'Sku'}, + 'access_policies': {'key': 'accessPolicies', 'type': '[AccessPolicyEntry]'}, + 'enabled_for_deployment': {'key': 'enabledForDeployment', 'type': 'bool'}, + 'enabled_for_disk_encryption': {'key': 'enabledForDiskEncryption', 'type': 'bool'}, + 'enabled_for_template_deployment': {'key': 'enabledForTemplateDeployment', 'type': 'bool'}, + 'enable_soft_delete': {'key': 'enableSoftDelete', 'type': 'bool'}, + 'create_mode': {'key': 'createMode', 'type': 'CreateMode'}, + 'enable_purge_protection': {'key': 'enablePurgeProtection', 'type': 'bool'}, + 'network_acls': {'key': 'networkAcls', 'type': 'NetworkRuleSet'}, + } + + def __init__(self, **kwargs): + super(VaultPatchProperties, self).__init__(**kwargs) + self.tenant_id = kwargs.get('tenant_id', None) + self.sku = kwargs.get('sku', None) + self.access_policies = kwargs.get('access_policies', None) + self.enabled_for_deployment = kwargs.get('enabled_for_deployment', None) + self.enabled_for_disk_encryption = kwargs.get('enabled_for_disk_encryption', None) + self.enabled_for_template_deployment = kwargs.get('enabled_for_template_deployment', None) + self.enable_soft_delete = kwargs.get('enable_soft_delete', None) + self.create_mode = kwargs.get('create_mode', None) + self.enable_purge_protection = kwargs.get('enable_purge_protection', None) + self.network_acls = kwargs.get('network_acls', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_properties_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_properties_py3.py new file mode 100644 index 000000000000..c31e17f365cc --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_properties_py3.py @@ -0,0 +1,82 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultPatchProperties(Model): + """Properties of the vault. + + :param tenant_id: The Azure Active Directory tenant ID that should be used + for authenticating requests to the key vault. + :type tenant_id: str + :param sku: SKU details + :type sku: ~azure.mgmt.keyvault.models.Sku + :param access_policies: An array of 0 to 16 identities that have access to + the key vault. All identities in the array must use the same tenant ID as + the key vault's tenant ID. + :type access_policies: list[~azure.mgmt.keyvault.models.AccessPolicyEntry] + :param enabled_for_deployment: Property to specify whether Azure Virtual + Machines are permitted to retrieve certificates stored as secrets from the + key vault. + :type enabled_for_deployment: bool + :param enabled_for_disk_encryption: Property to specify whether Azure Disk + Encryption is permitted to retrieve secrets from the vault and unwrap + keys. + :type enabled_for_disk_encryption: bool + :param enabled_for_template_deployment: Property to specify whether Azure + Resource Manager is permitted to retrieve secrets from the key vault. + :type enabled_for_template_deployment: bool + :param enable_soft_delete: Property to specify whether the 'soft delete' + functionality is enabled for this key vault. It does not accept false + value. + :type enable_soft_delete: bool + :param create_mode: The vault's create mode to indicate whether the vault + need to be recovered or not. Possible values include: 'recover', 'default' + :type create_mode: str or ~azure.mgmt.keyvault.models.CreateMode + :param enable_purge_protection: Property specifying whether protection + against purge is enabled for this vault. Setting this property to true + activates protection against purge for this vault and its content - only + the Key Vault service may initiate a hard, irrecoverable deletion. The + setting is effective only if soft delete is also enabled. Enabling this + functionality is irreversible - that is, the property does not accept + false as its value. + :type enable_purge_protection: bool + :param network_acls: A collection of rules governing the accessibility of + the vault from specific network locations. + :type network_acls: ~azure.mgmt.keyvault.models.NetworkRuleSet + """ + + _attribute_map = { + 'tenant_id': {'key': 'tenantId', 'type': 'str'}, + 'sku': {'key': 'sku', 'type': 'Sku'}, + 'access_policies': {'key': 'accessPolicies', 'type': '[AccessPolicyEntry]'}, + 'enabled_for_deployment': {'key': 'enabledForDeployment', 'type': 'bool'}, + 'enabled_for_disk_encryption': {'key': 'enabledForDiskEncryption', 'type': 'bool'}, + 'enabled_for_template_deployment': {'key': 'enabledForTemplateDeployment', 'type': 'bool'}, + 'enable_soft_delete': {'key': 'enableSoftDelete', 'type': 'bool'}, + 'create_mode': {'key': 'createMode', 'type': 'CreateMode'}, + 'enable_purge_protection': {'key': 'enablePurgeProtection', 'type': 'bool'}, + 'network_acls': {'key': 'networkAcls', 'type': 'NetworkRuleSet'}, + } + + def __init__(self, *, tenant_id: str=None, sku=None, access_policies=None, enabled_for_deployment: bool=None, enabled_for_disk_encryption: bool=None, enabled_for_template_deployment: bool=None, enable_soft_delete: bool=None, create_mode=None, enable_purge_protection: bool=None, network_acls=None, **kwargs) -> None: + super(VaultPatchProperties, self).__init__(**kwargs) + self.tenant_id = tenant_id + self.sku = sku + self.access_policies = access_policies + self.enabled_for_deployment = enabled_for_deployment + self.enabled_for_disk_encryption = enabled_for_disk_encryption + self.enabled_for_template_deployment = enabled_for_template_deployment + self.enable_soft_delete = enable_soft_delete + self.create_mode = create_mode + self.enable_purge_protection = enable_purge_protection + self.network_acls = network_acls diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py old mode 100755 new mode 100644 index 0d49b5ee4950..a09d68c304b0 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py @@ -15,16 +15,17 @@ class VaultProperties(Model): """Properties of the vault. - :param tenant_id: The Azure Active Directory tenant ID that should be used - for authenticating requests to the key vault. + All required parameters must be populated in order to send to Azure. + + :param tenant_id: Required. The Azure Active Directory tenant ID that + should be used for authenticating requests to the key vault. :type tenant_id: str - :param sku: SKU details - :type sku: :class:`Sku ` + :param sku: Required. SKU details + :type sku: ~azure.mgmt.keyvault.models.Sku :param access_policies: An array of 0 to 16 identities that have access to the key vault. All identities in the array must use the same tenant ID as the key vault's tenant ID. - :type access_policies: list of :class:`AccessPolicyEntry - ` + :type access_policies: list[~azure.mgmt.keyvault.models.AccessPolicyEntry] :param vault_uri: The URI of the vault for performing operations on keys and secrets. :type vault_uri: str @@ -45,14 +46,23 @@ class VaultProperties(Model): :type enable_soft_delete: bool :param create_mode: The vault's create mode to indicate whether the vault need to be recovered or not. Possible values include: 'recover', 'default' - :type create_mode: str or :class:`CreateMode - ` + :type create_mode: str or ~azure.mgmt.keyvault.models.CreateMode + :param enable_purge_protection: Property specifying whether protection + against purge is enabled for this vault. Setting this property to true + activates protection against purge for this vault and its content - only + the Key Vault service may initiate a hard, irrecoverable deletion. The + setting is effective only if soft delete is also enabled. Enabling this + functionality is irreversible - that is, the property does not accept + false as its value. + :type enable_purge_protection: bool + :param network_acls: A collection of rules governing the accessibility of + the vault from specific network locations. + :type network_acls: ~azure.mgmt.keyvault.models.NetworkRuleSet """ _validation = { 'tenant_id': {'required': True}, 'sku': {'required': True}, - 'access_policies': {'max_items': 16}, } _attribute_map = { @@ -65,15 +75,20 @@ class VaultProperties(Model): 'enabled_for_template_deployment': {'key': 'enabledForTemplateDeployment', 'type': 'bool'}, 'enable_soft_delete': {'key': 'enableSoftDelete', 'type': 'bool'}, 'create_mode': {'key': 'createMode', 'type': 'CreateMode'}, + 'enable_purge_protection': {'key': 'enablePurgeProtection', 'type': 'bool'}, + 'network_acls': {'key': 'networkAcls', 'type': 'NetworkRuleSet'}, } - def __init__(self, tenant_id, sku, access_policies=None, vault_uri=None, enabled_for_deployment=None, enabled_for_disk_encryption=None, enabled_for_template_deployment=None, enable_soft_delete=None, create_mode=None): - self.tenant_id = tenant_id - self.sku = sku - self.access_policies = access_policies - self.vault_uri = vault_uri - self.enabled_for_deployment = enabled_for_deployment - self.enabled_for_disk_encryption = enabled_for_disk_encryption - self.enabled_for_template_deployment = enabled_for_template_deployment - self.enable_soft_delete = enable_soft_delete - self.create_mode = create_mode + def __init__(self, **kwargs): + super(VaultProperties, self).__init__(**kwargs) + self.tenant_id = kwargs.get('tenant_id', None) + self.sku = kwargs.get('sku', None) + self.access_policies = kwargs.get('access_policies', None) + self.vault_uri = kwargs.get('vault_uri', None) + self.enabled_for_deployment = kwargs.get('enabled_for_deployment', None) + self.enabled_for_disk_encryption = kwargs.get('enabled_for_disk_encryption', None) + self.enabled_for_template_deployment = kwargs.get('enabled_for_template_deployment', None) + self.enable_soft_delete = kwargs.get('enable_soft_delete', None) + self.create_mode = kwargs.get('create_mode', None) + self.enable_purge_protection = kwargs.get('enable_purge_protection', None) + self.network_acls = kwargs.get('network_acls', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties_py3.py new file mode 100644 index 000000000000..e25654b6d375 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties_py3.py @@ -0,0 +1,94 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VaultProperties(Model): + """Properties of the vault. + + All required parameters must be populated in order to send to Azure. + + :param tenant_id: Required. The Azure Active Directory tenant ID that + should be used for authenticating requests to the key vault. + :type tenant_id: str + :param sku: Required. SKU details + :type sku: ~azure.mgmt.keyvault.models.Sku + :param access_policies: An array of 0 to 16 identities that have access to + the key vault. All identities in the array must use the same tenant ID as + the key vault's tenant ID. + :type access_policies: list[~azure.mgmt.keyvault.models.AccessPolicyEntry] + :param vault_uri: The URI of the vault for performing operations on keys + and secrets. + :type vault_uri: str + :param enabled_for_deployment: Property to specify whether Azure Virtual + Machines are permitted to retrieve certificates stored as secrets from the + key vault. + :type enabled_for_deployment: bool + :param enabled_for_disk_encryption: Property to specify whether Azure Disk + Encryption is permitted to retrieve secrets from the vault and unwrap + keys. + :type enabled_for_disk_encryption: bool + :param enabled_for_template_deployment: Property to specify whether Azure + Resource Manager is permitted to retrieve secrets from the key vault. + :type enabled_for_template_deployment: bool + :param enable_soft_delete: Property to specify whether the 'soft delete' + functionality is enabled for this key vault. It does not accept false + value. + :type enable_soft_delete: bool + :param create_mode: The vault's create mode to indicate whether the vault + need to be recovered or not. Possible values include: 'recover', 'default' + :type create_mode: str or ~azure.mgmt.keyvault.models.CreateMode + :param enable_purge_protection: Property specifying whether protection + against purge is enabled for this vault. Setting this property to true + activates protection against purge for this vault and its content - only + the Key Vault service may initiate a hard, irrecoverable deletion. The + setting is effective only if soft delete is also enabled. Enabling this + functionality is irreversible - that is, the property does not accept + false as its value. + :type enable_purge_protection: bool + :param network_acls: A collection of rules governing the accessibility of + the vault from specific network locations. + :type network_acls: ~azure.mgmt.keyvault.models.NetworkRuleSet + """ + + _validation = { + 'tenant_id': {'required': True}, + 'sku': {'required': True}, + } + + _attribute_map = { + 'tenant_id': {'key': 'tenantId', 'type': 'str'}, + 'sku': {'key': 'sku', 'type': 'Sku'}, + 'access_policies': {'key': 'accessPolicies', 'type': '[AccessPolicyEntry]'}, + 'vault_uri': {'key': 'vaultUri', 'type': 'str'}, + 'enabled_for_deployment': {'key': 'enabledForDeployment', 'type': 'bool'}, + 'enabled_for_disk_encryption': {'key': 'enabledForDiskEncryption', 'type': 'bool'}, + 'enabled_for_template_deployment': {'key': 'enabledForTemplateDeployment', 'type': 'bool'}, + 'enable_soft_delete': {'key': 'enableSoftDelete', 'type': 'bool'}, + 'create_mode': {'key': 'createMode', 'type': 'CreateMode'}, + 'enable_purge_protection': {'key': 'enablePurgeProtection', 'type': 'bool'}, + 'network_acls': {'key': 'networkAcls', 'type': 'NetworkRuleSet'}, + } + + def __init__(self, *, tenant_id: str, sku, access_policies=None, vault_uri: str=None, enabled_for_deployment: bool=None, enabled_for_disk_encryption: bool=None, enabled_for_template_deployment: bool=None, enable_soft_delete: bool=None, create_mode=None, enable_purge_protection: bool=None, network_acls=None, **kwargs) -> None: + super(VaultProperties, self).__init__(**kwargs) + self.tenant_id = tenant_id + self.sku = sku + self.access_policies = access_policies + self.vault_uri = vault_uri + self.enabled_for_deployment = enabled_for_deployment + self.enabled_for_disk_encryption = enabled_for_disk_encryption + self.enabled_for_template_deployment = enabled_for_template_deployment + self.enable_soft_delete = enable_soft_delete + self.create_mode = create_mode + self.enable_purge_protection = enable_purge_protection + self.network_acls = network_acls diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_py3.py new file mode 100644 index 000000000000..50f96583598a --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_py3.py @@ -0,0 +1,57 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from .resource_py3 import Resource + + +class Vault(Resource): + """Resource information with extended details. + + Variables are only populated by the server, and will be ignored when + sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: The Azure Resource Manager resource ID for the key vault. + :vartype id: str + :ivar name: The name of the key vault. + :vartype name: str + :ivar type: The resource type of the key vault. + :vartype type: str + :param location: Required. The supported Azure location where the key + vault should be created. + :type location: str + :param tags: The tags that will be assigned to the key vault. + :type tags: dict[str, str] + :param properties: Required. Properties of the vault + :type properties: ~azure.mgmt.keyvault.models.VaultProperties + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'location': {'required': True}, + 'properties': {'required': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'tags': {'key': 'tags', 'type': '{str}'}, + 'properties': {'key': 'properties', 'type': 'VaultProperties'}, + } + + def __init__(self, *, location: str, properties, tags=None, **kwargs) -> None: + super(Vault, self).__init__(location=location, tags=tags, **kwargs) + self.properties = properties diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule.py new file mode 100644 index 000000000000..638060696e8e --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule.py @@ -0,0 +1,36 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VirtualNetworkRule(Model): + """A rule governing the accesibility of a vault from a specific virtual + network. + + All required parameters must be populated in order to send to Azure. + + :param id: Required. Full resource id of a vnet subnet, such as + '/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1'. + :type id: str + """ + + _validation = { + 'id': {'required': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + } + + def __init__(self, **kwargs): + super(VirtualNetworkRule, self).__init__(**kwargs) + self.id = kwargs.get('id', None) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule_py3.py new file mode 100644 index 000000000000..19f2eec7d290 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule_py3.py @@ -0,0 +1,36 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from msrest.serialization import Model + + +class VirtualNetworkRule(Model): + """A rule governing the accesibility of a vault from a specific virtual + network. + + All required parameters must be populated in order to send to Azure. + + :param id: Required. Full resource id of a vnet subnet, such as + '/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1'. + :type id: str + """ + + _validation = { + 'id': {'required': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + } + + def __init__(self, *, id: str, **kwargs) -> None: + super(VirtualNetworkRule, self).__init__(**kwargs) + self.id = id diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/__init__.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/__init__.py old mode 100755 new mode 100644 index 1fbc1ef63985..6a14a7603b58 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/__init__.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/__init__.py @@ -10,7 +10,9 @@ # -------------------------------------------------------------------------- from .vaults_operations import VaultsOperations +from .operations import Operations __all__ = [ 'VaultsOperations', + 'Operations', ] diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/operations.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/operations.py new file mode 100644 index 000000000000..911cde2fcd34 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/operations.py @@ -0,0 +1,99 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +import uuid +from msrest.pipeline import ClientRawResponse +from msrestazure.azure_exceptions import CloudError + +from .. import models + + +class Operations(object): + """Operations operations. + + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + :ivar api_version: Client Api Version. Constant value: "2018-02-14". + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self.api_version = "2018-02-14" + + self.config = config + + def list( + self, custom_headers=None, raw=False, **operation_config): + """Lists all of the available Key Vault Rest API operations. + + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: An iterator like instance of Operation + :rtype: + ~azure.mgmt.keyvault.models.OperationPaged[~azure.mgmt.keyvault.models.Operation] + :raises: :class:`CloudError` + """ + def internal_paging(next_link=None, raw=False): + + if not next_link: + # Construct URL + url = self.list.metadata['url'] + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + + else: + url = next_link + query_parameters = {} + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct and send request + request = self._client.get(url, query_parameters) + response = self._client.send( + request, header_parameters, stream=False, **operation_config) + + if response.status_code not in [200]: + exp = CloudError(response) + exp.request_id = response.headers.get('x-ms-request-id') + raise exp + + return response + + # Deserialize response + deserialized = models.OperationPaged(internal_paging, self._deserialize.dependencies) + + if raw: + header_dict = {} + client_raw_response = models.OperationPaged(internal_paging, self._deserialize.dependencies, header_dict) + return client_raw_response + + return deserialized + list.metadata = {'url': '/providers/Microsoft.KeyVault/operations'} diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py old mode 100755 new mode 100644 index 406b6bbc2a39..cc8675b21b99 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py @@ -9,10 +9,11 @@ # regenerated. # -------------------------------------------------------------------------- +import uuid from msrest.pipeline import ClientRawResponse from msrestazure.azure_exceptions import CloudError -from msrestazure.azure_operation import AzureOperationPoller -import uuid +from msrest.polling import LROPoller, NoPolling +from msrestazure.polling.arm_polling import ARMPolling from .. import models @@ -23,10 +24,12 @@ class VaultsOperations(object): :param client: Client for service requests. :param config: Configuration of service client. :param serializer: An object model serializer. - :param deserializer: An objec model deserializer. + :param deserializer: An object model deserializer. :ivar filter: The filter to apply on the operation. Constant value: "resourceType eq 'Microsoft.KeyVault/vaults'". """ + models = models + def __init__(self, client, config, serializer, deserializer): self._client = client @@ -36,8 +39,62 @@ def __init__(self, client, config, serializer, deserializer): self.config = config - def create_or_update( + + def _create_or_update_initial( self, resource_group_name, vault_name, parameters, custom_headers=None, raw=False, **operation_config): + api_version = "2018-02-14" + + # Construct URL + url = self.create_or_update.metadata['url'] + path_format_arguments = { + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), + 'vaultName': self._serialize.url("vault_name", vault_name, 'str', pattern=r'^[a-zA-Z0-9-]{3,24}$'), + 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str') + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct body + body_content = self._serialize.body(parameters, 'VaultCreateOrUpdateParameters') + + # Construct and send request + request = self._client.put(url, query_parameters) + response = self._client.send( + request, header_parameters, body_content, stream=False, **operation_config) + + if response.status_code not in [200, 201]: + exp = CloudError(response) + exp.request_id = response.headers.get('x-ms-request-id') + raise exp + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('Vault', response) + if response.status_code == 201: + deserialized = self._deserialize('Vault', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + + def create_or_update( + self, resource_group_name, vault_name, parameters, custom_headers=None, raw=False, polling=True, **operation_config): """Create or update a key vault in the specified subscription. :param resource_group_name: The name of the Resource Group to which @@ -46,25 +103,80 @@ def create_or_update( :param vault_name: Name of the vault :type vault_name: str :param parameters: Parameters to create or update the vault - :type parameters: :class:`VaultCreateOrUpdateParameters - ` + :type parameters: + ~azure.mgmt.keyvault.models.VaultCreateOrUpdateParameters + :param dict custom_headers: headers that will be added to the request + :param bool raw: The poller return type is ClientRawResponse, the + direct response alongside the deserialized response + :param polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :return: An instance of LROPoller that returns Vault or + ClientRawResponse if raw==True + :rtype: + ~msrestazure.azure_operation.AzureOperationPoller[~azure.mgmt.keyvault.models.Vault] + or + ~msrestazure.azure_operation.AzureOperationPoller[~msrest.pipeline.ClientRawResponse[~azure.mgmt.keyvault.models.Vault]] + :raises: :class:`CloudError` + """ + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + vault_name=vault_name, + parameters=parameters, + custom_headers=custom_headers, + raw=True, + **operation_config + ) + + def get_long_running_output(response): + deserialized = self._deserialize('Vault', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + + lro_delay = operation_config.get( + 'long_running_operation_timeout', + self.config.long_running_operation_timeout) + if polling is True: polling_method = ARMPolling(lro_delay, **operation_config) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}'} + + def update( + self, resource_group_name, vault_name, tags=None, properties=None, custom_headers=None, raw=False, **operation_config): + """Update a key vault in the specified subscription. + + :param resource_group_name: The name of the Resource Group to which + the server belongs. + :type resource_group_name: str + :param vault_name: Name of the vault + :type vault_name: str + :param tags: The tags that will be assigned to the key vault. + :type tags: dict[str, str] + :param properties: Properties of the vault + :type properties: ~azure.mgmt.keyvault.models.VaultPatchProperties :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`Vault ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: Vault or ClientRawResponse if raw=true + :rtype: ~azure.mgmt.keyvault.models.Vault or + ~msrest.pipeline.ClientRawResponse :raises: :class:`CloudError` """ - api_version = "2016-10-01" + parameters = models.VaultPatchParameters(tags=tags, properties=properties) + + api_version = "2018-02-14" # Construct URL - url = '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}' + url = self.update.metadata['url'] path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'vaultName': self._serialize.url("vault_name", vault_name, 'str', pattern='^[a-zA-Z0-9-]{3,24}$'), + 'vaultName': self._serialize.url("vault_name", vault_name, 'str', pattern=r'^[a-zA-Z0-9-]{3,24}$'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str') } url = self._client.format_url(url, **path_format_arguments) @@ -84,30 +196,31 @@ def create_or_update( header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') # Construct body - body_content = self._serialize.body(parameters, 'VaultCreateOrUpdateParameters') + body_content = self._serialize.body(parameters, 'VaultPatchParameters') # Construct and send request - request = self._client.put(url, query_parameters) + request = self._client.patch(url, query_parameters) response = self._client.send( - request, header_parameters, body_content, **operation_config) + request, header_parameters, body_content, stream=False, **operation_config) - if response.status_code not in [201, 200]: + if response.status_code not in [200, 201]: exp = CloudError(response) exp.request_id = response.headers.get('x-ms-request-id') raise exp deserialized = None - if response.status_code == 201: - deserialized = self._deserialize('Vault', response) if response.status_code == 200: deserialized = self._deserialize('Vault', response) + if response.status_code == 201: + deserialized = self._deserialize('Vault', response) if raw: client_raw_response = ClientRawResponse(deserialized, response) return client_raw_response return deserialized + update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}'} def delete( self, resource_group_name, vault_name, custom_headers=None, raw=False, **operation_config): @@ -123,15 +236,14 @@ def delete( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: None - :rtype: :class:`ClientRawResponse` - if raw=true + :return: None or ClientRawResponse if raw=true + :rtype: None or ~msrest.pipeline.ClientRawResponse :raises: :class:`CloudError` """ - api_version = "2016-10-01" + api_version = "2018-02-14" # Construct URL - url = '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}' + url = self.delete.metadata['url'] path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'vaultName': self._serialize.url("vault_name", vault_name, 'str'), @@ -155,7 +267,7 @@ def delete( # Construct and send request request = self._client.delete(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: exp = CloudError(response) @@ -165,6 +277,7 @@ def delete( if raw: client_raw_response = ClientRawResponse(None, response) return client_raw_response + delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}'} def get( self, resource_group_name, vault_name, custom_headers=None, raw=False, **operation_config): @@ -180,15 +293,15 @@ def get( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`Vault ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: Vault or ClientRawResponse if raw=true + :rtype: ~azure.mgmt.keyvault.models.Vault or + ~msrest.pipeline.ClientRawResponse :raises: :class:`CloudError` """ - api_version = "2016-10-01" + api_version = "2018-02-14" # Construct URL - url = '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}' + url = self.get.metadata['url'] path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'vaultName': self._serialize.url("vault_name", vault_name, 'str'), @@ -212,7 +325,7 @@ def get( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: exp = CloudError(response) @@ -229,6 +342,88 @@ def get( return client_raw_response return deserialized + get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}'} + + def update_access_policy( + self, resource_group_name, vault_name, operation_kind, properties, custom_headers=None, raw=False, **operation_config): + """Update access policies in a key vault in the specified subscription. + + :param resource_group_name: The name of the Resource Group to which + the vault belongs. + :type resource_group_name: str + :param vault_name: Name of the vault + :type vault_name: str + :param operation_kind: Name of the operation. Possible values include: + 'add', 'replace', 'remove' + :type operation_kind: str or + ~azure.mgmt.keyvault.models.AccessPolicyUpdateKind + :param properties: Properties of the access policy + :type properties: + ~azure.mgmt.keyvault.models.VaultAccessPolicyProperties + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: VaultAccessPolicyParameters or ClientRawResponse if raw=true + :rtype: ~azure.mgmt.keyvault.models.VaultAccessPolicyParameters or + ~msrest.pipeline.ClientRawResponse + :raises: :class:`CloudError` + """ + parameters = models.VaultAccessPolicyParameters(properties=properties) + + api_version = "2018-02-14" + + # Construct URL + url = self.update_access_policy.metadata['url'] + path_format_arguments = { + 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), + 'vaultName': self._serialize.url("vault_name", vault_name, 'str', pattern=r'^[a-zA-Z0-9-]{3,24}$'), + 'operationKind': self._serialize.url("operation_kind", operation_kind, 'AccessPolicyUpdateKind'), + 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str') + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct body + body_content = self._serialize.body(parameters, 'VaultAccessPolicyParameters') + + # Construct and send request + request = self._client.put(url, query_parameters) + response = self._client.send( + request, header_parameters, body_content, stream=False, **operation_config) + + if response.status_code not in [200, 201]: + exp = CloudError(response) + exp.request_id = response.headers.get('x-ms-request-id') + raise exp + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('VaultAccessPolicyParameters', response) + if response.status_code == 201: + deserialized = self._deserialize('VaultAccessPolicyParameters', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + update_access_policy.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}/accessPolicies/{operationKind}'} def list_by_resource_group( self, resource_group_name, top=None, custom_headers=None, raw=False, **operation_config): @@ -245,16 +440,18 @@ def list_by_resource_group( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`VaultPaged ` + :return: An iterator like instance of Vault + :rtype: + ~azure.mgmt.keyvault.models.VaultPaged[~azure.mgmt.keyvault.models.Vault] :raises: :class:`CloudError` """ - api_version = "2016-10-01" + api_version = "2018-02-14" def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults' + url = self.list_by_resource_group.metadata['url'] path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str') @@ -284,7 +481,79 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) + + if response.status_code not in [200]: + exp = CloudError(response) + exp.request_id = response.headers.get('x-ms-request-id') + raise exp + + return response + + # Deserialize response + deserialized = models.VaultPaged(internal_paging, self._deserialize.dependencies) + + if raw: + header_dict = {} + client_raw_response = models.VaultPaged(internal_paging, self._deserialize.dependencies, header_dict) + return client_raw_response + + return deserialized + list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults'} + + def list_by_subscription( + self, top=None, custom_headers=None, raw=False, **operation_config): + """The List operation gets information about the vaults associated with + the subscription. + + :param top: Maximum number of results to return. + :type top: int + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: An iterator like instance of Vault + :rtype: + ~azure.mgmt.keyvault.models.VaultPaged[~azure.mgmt.keyvault.models.Vault] + :raises: :class:`CloudError` + """ + api_version = "2018-02-14" + + def internal_paging(next_link=None, raw=False): + + if not next_link: + # Construct URL + url = self.list_by_subscription.metadata['url'] + path_format_arguments = { + 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str') + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + else: + url = next_link + query_parameters = {} + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct and send request + request = self._client.get(url, query_parameters) + response = self._client.send( + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: exp = CloudError(response) @@ -302,6 +571,7 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + list_by_subscription.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/vaults'} def list_deleted( self, custom_headers=None, raw=False, **operation_config): @@ -312,17 +582,18 @@ def list_deleted( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`DeletedVaultPaged - ` + :return: An iterator like instance of DeletedVault + :rtype: + ~azure.mgmt.keyvault.models.DeletedVaultPaged[~azure.mgmt.keyvault.models.DeletedVault] :raises: :class:`CloudError` """ - api_version = "2016-10-01" + api_version = "2018-02-14" def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/deletedVaults' + url = self.list_deleted.metadata['url'] path_format_arguments = { 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str') } @@ -349,7 +620,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: exp = CloudError(response) @@ -367,6 +638,7 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + list_deleted.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/deletedVaults'} def get_deleted( self, vault_name, location, custom_headers=None, raw=False, **operation_config): @@ -381,16 +653,15 @@ def get_deleted( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`DeletedVault - ` - :rtype: :class:`ClientRawResponse` - if raw=true + :return: DeletedVault or ClientRawResponse if raw=true + :rtype: ~azure.mgmt.keyvault.models.DeletedVault or + ~msrest.pipeline.ClientRawResponse :raises: :class:`CloudError` """ - api_version = "2016-10-01" + api_version = "2018-02-14" # Construct URL - url = '/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/locations/{location}/deletedVaults/{vaultName}' + url = self.get_deleted.metadata['url'] path_format_arguments = { 'vaultName': self._serialize.url("vault_name", vault_name, 'str'), 'location': self._serialize.url("location", location, 'str'), @@ -414,7 +685,7 @@ def get_deleted( # Construct and send request request = self._client.get(url, query_parameters) - response = self._client.send(request, header_parameters, **operation_config) + response = self._client.send(request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: exp = CloudError(response) @@ -431,30 +702,15 @@ def get_deleted( return client_raw_response return deserialized + get_deleted.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/locations/{location}/deletedVaults/{vaultName}'} - def purge_deleted( - self, vault_name, location, custom_headers=None, raw=False, **operation_config): - """Permanently deletes the specified vault. aka Purges the deleted Azure - key vault. - :param vault_name: The name of the soft-deleted vault. - :type vault_name: str - :param location: The location of the soft-deleted vault. - :type location: str - :param dict custom_headers: headers that will be added to the request - :param bool raw: returns the direct response alongside the - deserialized response - :rtype: - :class:`AzureOperationPoller` - instance that returns None - :rtype: :class:`ClientRawResponse` - if raw=true - :raises: :class:`CloudError` - """ - api_version = "2016-10-01" + def _purge_deleted_initial( + self, vault_name, location, custom_headers=None, raw=False, **operation_config): + api_version = "2018-02-14" # Construct URL - url = '/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/locations/{location}/deletedVaults/{vaultName}/purge' + url = self.purge_deleted.metadata['url'] path_format_arguments = { 'vaultName': self._serialize.url("vault_name", vault_name, 'str'), 'location': self._serialize.url("location", location, 'str'), @@ -477,40 +733,59 @@ def purge_deleted( header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') # Construct and send request - def long_running_send(): + request = self._client.post(url, query_parameters) + response = self._client.send(request, header_parameters, stream=False, **operation_config) - request = self._client.post(url, query_parameters) - return self._client.send(request, header_parameters, **operation_config) - - def get_long_running_status(status_link, headers=None): + if response.status_code not in [200, 202]: + exp = CloudError(response) + exp.request_id = response.headers.get('x-ms-request-id') + raise exp - request = self._client.get(status_link) - if headers: - request.headers.update(headers) - return self._client.send( - request, header_parameters, **operation_config) + if raw: + client_raw_response = ClientRawResponse(None, response) + return client_raw_response - def get_long_running_output(response): + def purge_deleted( + self, vault_name, location, custom_headers=None, raw=False, polling=True, **operation_config): + """Permanently deletes the specified vault. aka Purges the deleted Azure + key vault. - if response.status_code not in [200, 202]: - exp = CloudError(response) - exp.request_id = response.headers.get('x-ms-request-id') - raise exp + :param vault_name: The name of the soft-deleted vault. + :type vault_name: str + :param location: The location of the soft-deleted vault. + :type location: str + :param dict custom_headers: headers that will be added to the request + :param bool raw: The poller return type is ClientRawResponse, the + direct response alongside the deserialized response + :param polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :return: An instance of LROPoller that returns None or + ClientRawResponse if raw==True + :rtype: ~msrestazure.azure_operation.AzureOperationPoller[None] or + ~msrestazure.azure_operation.AzureOperationPoller[~msrest.pipeline.ClientRawResponse[None]] + :raises: :class:`CloudError` + """ + raw_result = self._purge_deleted_initial( + vault_name=vault_name, + location=location, + custom_headers=custom_headers, + raw=True, + **operation_config + ) + def get_long_running_output(response): if raw: client_raw_response = ClientRawResponse(None, response) return client_raw_response - if raw: - response = long_running_send() - return get_long_running_output(response) - - long_running_operation_timeout = operation_config.get( + lro_delay = operation_config.get( 'long_running_operation_timeout', self.config.long_running_operation_timeout) - return AzureOperationPoller( - long_running_send, get_long_running_output, - get_long_running_status, long_running_operation_timeout) + if polling is True: polling_method = ARMPolling(lro_delay, **operation_config) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + purge_deleted.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/locations/{location}/deletedVaults/{vaultName}/purge'} def list( self, top=None, custom_headers=None, raw=False, **operation_config): @@ -524,8 +799,9 @@ def list( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :rtype: :class:`ResourcePaged - ` + :return: An iterator like instance of Resource + :rtype: + ~azure.mgmt.keyvault.models.ResourcePaged[~azure.mgmt.keyvault.models.Resource] :raises: :class:`CloudError` """ api_version = "2015-11-01" @@ -534,7 +810,7 @@ def internal_paging(next_link=None, raw=False): if not next_link: # Construct URL - url = '/subscriptions/{subscriptionId}/resources' + url = self.list.metadata['url'] path_format_arguments = { 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str') } @@ -564,7 +840,7 @@ def internal_paging(next_link=None, raw=False): # Construct and send request request = self._client.get(url, query_parameters) response = self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) if response.status_code not in [200]: exp = CloudError(response) @@ -582,3 +858,70 @@ def internal_paging(next_link=None, raw=False): return client_raw_response return deserialized + list.metadata = {'url': '/subscriptions/{subscriptionId}/resources'} + + def check_name_availability( + self, name, custom_headers=None, raw=False, **operation_config): + """Checks that the vault name is valid and is not already in use. + + :param name: The vault name. + :type name: str + :param dict custom_headers: headers that will be added to the request + :param bool raw: returns the direct response alongside the + deserialized response + :param operation_config: :ref:`Operation configuration + overrides`. + :return: CheckNameAvailabilityResult or ClientRawResponse if raw=true + :rtype: ~azure.mgmt.keyvault.models.CheckNameAvailabilityResult or + ~msrest.pipeline.ClientRawResponse + :raises: :class:`CloudError` + """ + vault_name = models.VaultCheckNameAvailabilityParameters(name=name) + + api_version = "2018-02-14" + + # Construct URL + url = self.check_name_availability.metadata['url'] + path_format_arguments = { + 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str') + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} + header_parameters['Content-Type'] = 'application/json; charset=utf-8' + if self.config.generate_client_request_id: + header_parameters['x-ms-client-request-id'] = str(uuid.uuid1()) + if custom_headers: + header_parameters.update(custom_headers) + if self.config.accept_language is not None: + header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') + + # Construct body + body_content = self._serialize.body(vault_name, 'VaultCheckNameAvailabilityParameters') + + # Construct and send request + request = self._client.post(url, query_parameters) + response = self._client.send( + request, header_parameters, body_content, stream=False, **operation_config) + + if response.status_code not in [200]: + exp = CloudError(response) + exp.request_id = response.headers.get('x-ms-request-id') + raise exp + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('CheckNameAvailabilityResult', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + check_name_availability.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/checkNameAvailability'} diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py old mode 100755 new mode 100644 index 39e390a442c6..a39916c162ce --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py @@ -9,6 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "0.40.0" - +VERSION = "1.0.0" diff --git a/azure-mgmt-keyvault/sdk_packaging.toml b/azure-mgmt-keyvault/sdk_packaging.toml new file mode 100644 index 000000000000..6d33bc0f26af --- /dev/null +++ b/azure-mgmt-keyvault/sdk_packaging.toml @@ -0,0 +1,5 @@ +[packaging] +package_name = "azure-mgmt-keyvault" +package_pprint_name = "Key Vault Management" +package_doc_id = "key-vault" +is_stable = false diff --git a/azure-mgmt-keyvault/setup.cfg b/azure-mgmt-keyvault/setup.cfg index 0be29eb3bc63..856f4164982c 100644 --- a/azure-mgmt-keyvault/setup.cfg +++ b/azure-mgmt-keyvault/setup.cfg @@ -1,3 +1,3 @@ [bdist_wheel] universal=1 -azure-namespace-package=azure-mgmt-nspkg +azure-namespace-package=azure-mgmt-nspkg \ No newline at end of file diff --git a/azure-mgmt-keyvault/setup.py b/azure-mgmt-keyvault/setup.py index ed48d6dd1305..82f1c1dfb1f2 100644 --- a/azure-mgmt-keyvault/setup.py +++ b/azure-mgmt-keyvault/setup.py @@ -6,15 +6,25 @@ # license information. #-------------------------------------------------------------------------- -from setuptools import setup +import re +import os.path +from io import open +from setuptools import find_packages, setup try: from azure_bdist_wheel import cmdclass except ImportError: from distutils import log as logger logger.warn("Wheel is not available, disabling bdist_wheel hook") cmdclass = {} -from io import open -import re + +# Change the PACKAGE_NAME only to change folder and different name +PACKAGE_NAME = "azure-mgmt-keyvault" +PACKAGE_PPRINT_NAME = "Key Vault Management" + +# a-b-c => a/b/c +package_folder_path = PACKAGE_NAME.replace('-', '/') +# a-b-c => a.b.c +namespace_name = PACKAGE_NAME.replace('-', '.') # azure v0.x is not compatible with this package # azure v0.x used to have a __version__ attribute (newer versions don't) @@ -32,7 +42,7 @@ pass # Version extraction inspired from 'requests' -with open('azure/mgmt/keyvault/version.py', 'r') as fd: +with open(os.path.join(package_folder_path, 'version.py'), 'r') as fd: version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]', fd.read(), re.MULTILINE).group(1) @@ -45,13 +55,13 @@ history = f.read() setup( - name='azure-mgmt-keyvault', + name=PACKAGE_NAME, version=version, - description='Microsoft Azure KeyVault Apps Resource Management Client Library for Python', + description='Microsoft Azure {} Client Library for Python'.format(PACKAGE_PPRINT_NAME), long_description=readme + '\n\n' + history, license='MIT License', author='Microsoft Corporation', - author_email='ptvshelp@microsoft.com', + author_email='azurekeyvault@microsoft.com', url='https://github.com/Azure/azure-sdk-for-python', classifiers=[ 'Development Status :: 4 - Beta', @@ -59,23 +69,16 @@ 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'License :: OSI Approved :: MIT License', ], zip_safe=False, - packages=[ - 'azure', - 'azure.mgmt', - 'azure.mgmt.keyvault', - 'azure.mgmt.keyvault.models', - 'azure.mgmt.keyvault.operations', - ], + packages=find_packages(exclude=["tests"]), install_requires=[ - 'msrestazure~=0.4.7', - 'azure-common~=1.1.5', + 'msrestazure>=0.4.27,<2.0.0', + 'azure-common~=1.1', ], cmdclass=cmdclass ) diff --git a/azure-mgmt/tests/__init__.py b/azure-mgmt/tests/__init__.py deleted file mode 100644 index 849489fca33c..000000000000 --- a/azure-mgmt/tests/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__import__('pkg_resources').declare_namespace(__name__) diff --git a/azure-mgmt/tests/keyvault_testcase.py b/azure-mgmt/tests/keyvault_testcase.py deleted file mode 100644 index 5da788478902..000000000000 --- a/azure-mgmt/tests/keyvault_testcase.py +++ /dev/null @@ -1,242 +0,0 @@ -#------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -#-------------------------------------------------------------------------- -import json -import os.path -import re -import time - -import azure.mgmt.resource -from azure.mgmt.keyvault import KeyVaultManagementClient -from azure.mgmt.keyvault.models import \ - (VaultCreateOrUpdateParameters, VaultProperties, Sku, AccessPolicyEntry, Permissions, KeyPermissions, SecretPermissions, SkuName, - CertificatePermissions, StoragePermissions) -from azure.keyvault import KeyVaultClient, KeyVaultAuthentication, KeyVaultAuthBase, HttpBearerChallenge - -from azure.common.exceptions import ( - CloudError -) -from tests.mgmt_testcase import HttpStatusCode, AzureMgmtTestCase -from testutils.common_recordingtestcase import ( - RecordingTestCase, - TestMode, -) -import tests.mgmt_settings_fake as fake_settings - -should_log = os.getenv('SDK_TESTS_LOG', '0') -if should_log.lower() == 'true' or should_log == '1': - import logging - logger = logging.getLogger('msrest') - logger.setLevel(logging.DEBUG) - logger.addHandler(logging.StreamHandler()) - - -def privatevault(permissions=None, enabled_for_deployment=True, enabled_for_disk_encryption=True, - enabled_for_template_deployment=True, enable_soft_delete=None): - def testvault_decorator(f): - def wrapper(self): - with self.recording(): - vault = self.setup_private_vault(permissions=permissions, - enabled_for_deployment=enabled_for_deployment, - enabled_for_disk_encryption=enabled_for_disk_encryption, - enabled_for_template_deployment=enabled_for_template_deployment, - enable_soft_delete=enable_soft_delete) - try: - f(self, vault=vault) - finally: - self.cleanup_private_vault(vault) - wrapper.__name__ = f.__name__ - testvault_decorator.__name__ = f.__name__ - return wrapper - return testvault_decorator - -def sharedvault(f): - def wrapper(self): - with self.recording(): - vault = self.setup_shared_vault() - f(self, vault=vault) - wrapper.__name__ = f.__name__ - return wrapper - -class AzureKeyVaultTestCase(AzureMgmtTestCase): - - shared_vault = None - default_group = 'azkv-pytest' - default_vault = 'pytest-shared-vault' - default_permissions = Permissions(keys=[ - KeyPermissions.encrypt, - KeyPermissions.decrypt, - KeyPermissions.wrap_key, - KeyPermissions.unwrap_key, - KeyPermissions.sign, - KeyPermissions.verify, - KeyPermissions.get, - KeyPermissions.list, - KeyPermissions.create, - KeyPermissions.update, - KeyPermissions.import_enum, - KeyPermissions.delete, - KeyPermissions.backup, - KeyPermissions.restore, - KeyPermissions.recover, - KeyPermissions.purge], - secrets=[ - SecretPermissions.get, - SecretPermissions.list, - SecretPermissions.set, - SecretPermissions.delete, - SecretPermissions.backup, - SecretPermissions.restore, - SecretPermissions.recover, - SecretPermissions.purge], - certificates=[ - CertificatePermissions.get, - CertificatePermissions.list, - CertificatePermissions.delete, - CertificatePermissions.create, - CertificatePermissions.import_enum, - CertificatePermissions.update, - CertificatePermissions.managecontacts, - CertificatePermissions.getissuers, - CertificatePermissions.listissuers, - CertificatePermissions.setissuers, - CertificatePermissions.deleteissuers, - CertificatePermissions.manageissuers, - CertificatePermissions.recover, - CertificatePermissions.purge], - storage=[ - StoragePermissions.get, - StoragePermissions.list, - StoragePermissions.delete, - StoragePermissions.set, - StoragePermissions.update, - StoragePermissions.regeneratekey, - StoragePermissions.setsas, - StoragePermissions.listsas, - StoragePermissions.getsas, - StoragePermissions.deletesas]) - - def setUp(self): - self.working_folder = os.path.dirname(__file__) - - super(AzureKeyVaultTestCase, self).setUp() - - def mock_key_vault_auth_base(self, request): - challenge = HttpBearerChallenge(request.url, 'Bearer authorization=fake-url,resource=https://vault.azure.net') - self.set_authorization_header(request, challenge) - return request - - self.fake_settings = fake_settings - if TestMode.is_playback(self.test_mode): - self.settings = self.fake_settings - KeyVaultAuthBase.__call__ = mock_key_vault_auth_base - else: - import tests.mgmt_settings_real as real_settings - self.settings = real_settings - - self.client = self.create_keyvault_client() - self.mgmt_client = self.create_mgmt_client(azure.mgmt.keyvault.KeyVaultManagementClient) - - if not self.is_playback(): - self.create_resource_group() - - - def tearDown(self): - return super(AzureKeyVaultTestCase, self).tearDown() - - def create_keyvault_client(self): - - def _auth_callback(server, resource, scope): - if TestMode.is_playback(self.test_mode): - return ('Bearer', 'fake-token') - credentials = self.settings.get_credentials() - credentials.resource = resource - credentials.set_token() - return credentials.scheme, credentials.__dict__['token']['access_token'] - return KeyVaultClient(KeyVaultAuthentication(_auth_callback)) - - def _ensure_resource_group(self, group_name): - return self.resource_client.resource_groups.create_or_update( - group_name, - { - 'location': self.region - } - ) - - def setup_shared_vault(self): - if not self.is_playback(): - self._ensure_resource_group(self.default_group) - if not AzureKeyVaultTestCase.shared_vault: - AzureKeyVaultTestCase.shared_vault = self.create_vault(self.default_group, self.default_vault) - return AzureKeyVaultTestCase.shared_vault; - - def setup_private_vault(self, permissions=None, enabled_for_deployment=True, enabled_for_disk_encryption=True, - enabled_for_template_deployment=True, enable_soft_delete=None, sku=None): - vault_name = self.get_resource_name('vault-') - vault = self.create_vault(self.group_name, vault_name, - permissions=permissions,enabled_for_deployment=enabled_for_deployment, - enabled_for_template_deployment=enabled_for_template_deployment, enable_soft_delete=enable_soft_delete, - sku=sku) - - return vault - - def create_vault(self, group_name, vault_name, permissions=None, enabled_for_deployment=True, enabled_for_disk_encryption=True, - enabled_for_template_deployment=True, enable_soft_delete=None, sku=None): - creds = self.settings.get_credentials() - access_policies = [AccessPolicyEntry(tenant_id=self.settings.TENANT_ID, - object_id=self.settings.CLIENT_OID, - permissions=permissions or self.default_permissions)] - properties = VaultProperties(tenant_id=self.settings.TENANT_ID, - sku=Sku(sku or SkuName.premium.value), - access_policies=access_policies, - vault_uri=None, - enabled_for_deployment=enabled_for_deployment, - enabled_for_disk_encryption=enabled_for_disk_encryption, - enabled_for_template_deployment=enabled_for_template_deployment, - enable_soft_delete=enable_soft_delete) - parameters = VaultCreateOrUpdateParameters(location='westus', - properties=properties) - - vault = self.mgmt_client.vaults.create_or_update(group_name, vault_name, parameters) - - if not self.is_playback(): - self.sleep(10) - - return vault - - def cleanup_private_vault(self, vault): - # we only need to cleanup if the vault has soft delete enabled otherwise base teardown will - # delete when the resource group is deleted - if not self.is_playback() and vault.properties.enable_soft_delete: - self.mgmt_client.vaults.delete(self.group_name, vault.name) - self.sleep(10) - self.mgmt_client.vaults.purge_deleted(vault.name, vault.location) - - def _scrub_sensitive_request_info(self, request): - request = super(AzureKeyVaultTestCase, self)._scrub_sensitive_request_info(request) - # prevents URI mismatch between Python 2 and 3 if request URI has extra / chars - request.uri = re.sub('//', '/', request.uri) - request.uri = re.sub('/', '//', request.uri, count=1) - # do not record token requests - if '/oauth2/token' in request.uri: - request = None - return request - - def _scrub_sensitive_response_info(self, response): - from pprint import pprint - response = super(AzureKeyVaultTestCase, self)._scrub_sensitive_response_info(response) - # ignore any 401 responses during playback - if response['status']['code'] == 401: - response = None - return response - - def _scrub(self, val): - val = super(AzureKeyVaultTestCase, self)._scrub(val) - real_to_fake_dict = { - self.settings.SUBSCRIPTION_ID: self.fake_settings.SUBSCRIPTION_ID, - self.settings.AD_DOMAIN: self.fake_settings.AD_DOMAIN - } - val = self._scrub_using_dict(val, real_to_fake_dict) - return val diff --git a/azure-mgmt/tests/mgmt_settings_fake.py b/azure-mgmt/tests/mgmt_settings_fake.py deleted file mode 100644 index c9e228026d64..000000000000 --- a/azure-mgmt/tests/mgmt_settings_fake.py +++ /dev/null @@ -1,36 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -------------------------------------------------------------------------- - -from azure.common.credentials import ( - BasicTokenAuthentication, - UserPassCredentials -) - -SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000" - -# this is used explicitly for ADLA job id replacement in recordings. -ADLA_JOB_ID = "00000000-0000-0000-0000-000000000000" -# GraphRBAC tests -AD_DOMAIN = "myaddomain.onmicrosoft.com" -# Keyvault tests -TENANT_ID = '00000000-0000-0000-0000-000000000000' -CLIENT_OID = '00000000-0000-0000-0000-000000000000' - -# Read for details of this file: -# https://github.com/Azure/azure-sdk-for-python/wiki/Contributing-to-the-tests - -def get_credentials(): - # Put your credentials here in the "real" file - # return UserPassCredentials( - # 'user@myaddomain.onmicrosoft.com', - # 'Password' - # ) - # Needed to play recorded tests - return BasicTokenAuthentication( - token = { - 'access_token':'faked_token' - } - ) diff --git a/azure-mgmt/tests/mgmt_testcase.py b/azure-mgmt/tests/mgmt_testcase.py deleted file mode 100644 index 6739cbbec709..000000000000 --- a/azure-mgmt/tests/mgmt_testcase.py +++ /dev/null @@ -1,147 +0,0 @@ -#------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -#-------------------------------------------------------------------------- -import json -import os.path -import time -import azure.mgmt.resource - -from azure.common.exceptions import ( - CloudError -) -from testutils.common_recordingtestcase import ( - RecordingTestCase, - TestMode, -) -import tests.mgmt_settings_fake as fake_settings - - -should_log = os.getenv('SDK_TESTS_LOG', '0') -if should_log.lower() == 'true' or should_log == '1': - import logging - logger = logging.getLogger('msrest') - logger.setLevel(logging.DEBUG) - logger.addHandler(logging.StreamHandler()) - - -class HttpStatusCode(object): - OK = 200 - Created = 201 - Accepted = 202 - NoContent = 204 - NotFound = 404 - - -class AzureMgmtTestCase(RecordingTestCase): - - def setUp(self): - self.working_folder = os.path.dirname(__file__) - - super(AzureMgmtTestCase, self).setUp() - - self.fake_settings = fake_settings - if TestMode.is_playback(self.test_mode): - self.settings = self.fake_settings - else: - import tests.mgmt_settings_real as real_settings - self.settings = real_settings - - self.resource_client = self.create_mgmt_client( - azure.mgmt.resource.ResourceManagementClient - ) - - # Every test uses a different resource group name calculated from its - # qualified test name. - # - # When running all tests serially, this allows us to delete - # the resource group in teardown without waiting for the delete to - # complete. The next test in line will use a different resource group, - # so it won't have any trouble creating its resource group even if the - # previous test resource group hasn't finished deleting. - # - # When running tests individually, if you try to run the same test - # multiple times in a row, it's possible that the delete in the previous - # teardown hasn't completed yet (because we don't wait), and that - # would make resource group creation fail. - # To avoid that, we also delete the resource group in the - # setup, and we wait for that delete to complete. - self.group_name = self.get_resource_name( - self.qualified_test_name.replace('.', '_') - ) - self.region = 'westus' - - if not self.is_playback(): - self.delete_resource_group(wait_timeout=600) - - def tearDown(self): - if not self.is_playback(): - self.delete_resource_group(wait_timeout=None) - return super(AzureMgmtTestCase, self).tearDown() - - def create_basic_client(self, client_class, **kwargs): - # Whatever the client, if credentials is None, fail - with self.assertRaises(ValueError): - client = client_class( - credentials=None, - **kwargs - ) - - # Real client creation - client = client_class( - credentials=self.settings.get_credentials(), - **kwargs - ) - if self.is_playback(): - client.config.long_running_operation_timeout = 0 - return client - - def create_mgmt_client(self, client_class, **kwargs): - # Whatever the client, if subscription_id is None, fail - with self.assertRaises(ValueError): - self.create_basic_client( - client_class, - subscription_id=None, - **kwargs - ) - - return self.create_basic_client( - client_class, - subscription_id=self.settings.SUBSCRIPTION_ID, - **kwargs - ) - - def _scrub(self, val): - val = super(AzureMgmtTestCase, self)._scrub(val) - real_to_fake_dict = { - self.settings.SUBSCRIPTION_ID: self.fake_settings.SUBSCRIPTION_ID, - self.settings.AD_DOMAIN: self.fake_settings.AD_DOMAIN - } - val = self._scrub_using_dict(val, real_to_fake_dict) - return val - - def create_resource_group(self): - self.group = self.resource_client.resource_groups.create_or_update( - self.group_name, - { - 'location': self.region - } - ) - - def delete_resource_group(self, wait_timeout): - """Delete an RG. - - :param wait_timeout: if None, means we don't block at all and let Azure deal with it. - """ - try: - if wait_timeout: - azure_poller = self.resource_client.resource_groups.delete(self.group_name) - azure_poller.wait(wait_timeout) - if azure_poller.done(): - return - self.assertTrue(False, 'Timed out waiting for resource group to be deleted.') - else: - self.resource_client.resource_groups.delete(self.group_name, raw=True) - except CloudError: - pass diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_async_request_cancellation_and_deletion.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_async_request_cancellation_and_deletion.yaml deleted file mode 100644 index cf4436ad7e4f..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_async_request_cancellation_and_deletion.yaml +++ /dev/null @@ -1,286 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [3287efc0-4ad6-11e7-b923-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:35:48 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [b38dc9bc-16ac-4c31-8987-4761cea3ecfc] - x-ms-ratelimit-remaining-subscription-writes: ['1196'] - x-ms-request-id: [b38dc9bc-16ac-4c31-8987-4761cea3ecfc] - x-ms-routing-request-id: ['WESTUS:20170606T163549Z:b38dc9bc-16ac-4c31-8987-4761cea3ecfc'] - status: {code: 200, message: OK} -- request: - body: '{"location": "westus", "properties": {"tenantId": "00000000-0000-0000-0000-000000000000", - "enabledForDeployment": true, "enabledForDiskEncryption": true, "enabledForTemplateDeployment": - true, "accessPolicies": [{"tenantId": "00000000-0000-0000-0000-000000000000", - "objectId": "00000000-0000-0000-0000-000000000000", "permissions": {"certificates": - ["get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers", - "listissuers", "setissuers", "deleteissuers", "manageissuers", "recover", "purge"], - "keys": ["encrypt", "decrypt", "wrapKey", "unwrapKey", "sign", "verify", "get", - "list", "create", "update", "import", "delete", "backup", "restore", "recover", - "purge"], "secrets": ["get", "list", "set", "delete", "backup", "restore", "recover", - "purge"], "storage": ["get", "list", "delete", "set", "update", "regeneratekey", - "setsas", "listsas", "getsas", "deletesas"]}}], "sku": {"name": "premium", "family": - "A"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['938'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [32e5a61e-4ad6-11e7-88f6-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest/providers/Microsoft.KeyVault/vaults/pytest-shared-vault?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest/providers/Microsoft.KeyVault/vaults/pytest-shared-vault","name":"pytest-shared-vault","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"secrets":["get","list","set","delete","backup","restore","recover","purge"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"vaultUri":"https://pytest-shared-vault.vault.azure.net/"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:35:49 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1139'] - x-ms-correlation-request-id: [e030237f-baf5-4017-a285-710d11d145ed] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1192'] - x-ms-request-id: [e030237f-baf5-4017-a285-710d11d145ed] - x-ms-routing-request-id: ['WESTUS:20170606T163550Z:e030237f-baf5-4017-a285-710d11d145ed'] - status: {code: 200, message: OK} -- request: - body: '{"policy": {"x509_props": {"validity_months": 24, "sans": {"dns_names": - ["onedrive.microsoft.com", "xbox.microsoft.com"]}, "subject": "CN=*.microsoft.com"}, - "key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, "reuse_key": - false}, "secret_props": {"contentType": "application/x-pkcs12"}, "issuer": {"name": - "Self"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['329'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [393d80b6-4ad6-11e7-bcf9-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/create?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlbG0TROXjdmWvD3gh+OR4D8YBa1zBRs4wSjCKDNEeG9dq1R76UKzhGgBLgzOO4bvq+iyw7dQ9yLpNE+UxhmL+LBOsqxrvQGob+1MA1xoBBs7Nu08c8+dTNSY8s2cEFEP/noi6hg8t7+HN6FZknZJ1L69KP6LHXRaDAMT/A8cRokW9gBKh0vQSZTOACSw5HFpC2dM9UzHI147VuGjSfnf0uY4/g/XePRN6S/BXz5OYrUFt9ihXBc9JKynWn63faTO0csimP38CM0Htrz3eCuGiu8vt6N4KUfBLDydiBBDJFgfamwCV3pg3UWXUC21rp0L6hik3euZImN0ZCFLkq6W3wIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAD74Z0nZUCpm/QGlAcPdHtrmr1hWQANk+z18R9Y6x66tuNbmcOWxALefzWHqGVq4IJlisZ+WAGk2MTUds9/gqsZDLn+2NS5MAWFiseYsNpKCOsWQNh6gwcbtUtcWU2uZoPl3AC3NxQU3Xp1eZ1Wek9NRFsX0jXdKTM0S0kL4Kyaz8QK8vzihSHScKOADRjC3w8Sngumd+/rm8BAtljiRjKGNShw7/ZFe7kda+jwj47G6RfcxkuZ1LnzdEpWBROKiy5r3R7GlT55afJp0GiPtUTD9FTAA+BHSYBFN/MXVJti5Gt7+9y/afEDCETS7CvFbFsl6qtah8mri9UsaPU4W/ig=","cancellation_requested":false,"status":"inProgress","status_details":"Pending - certificate created. Certificate request is in progress. This may take some - time based on the issuer provider. Please check again later.","request_id":"8e61c0dfe1f049fca58fb07d10174229"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1389'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:02 GMT'] - Expires: ['-1'] - Location: ['https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=2016-10-01&request_id=8e61c0dfe1f049fca58fb07d10174229'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5b4dc0e9-6e47-40c1-9077-a7ffacfa4a20] - status: {code: 202, message: Accepted} -- request: - body: '{"cancellation_requested": true}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['32'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [3b2112de-4ad6-11e7-a6aa-5065f34efe31] - method: PATCH - uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlbG0TROXjdmWvD3gh+OR4D8YBa1zBRs4wSjCKDNEeG9dq1R76UKzhGgBLgzOO4bvq+iyw7dQ9yLpNE+UxhmL+LBOsqxrvQGob+1MA1xoBBs7Nu08c8+dTNSY8s2cEFEP/noi6hg8t7+HN6FZknZJ1L69KP6LHXRaDAMT/A8cRokW9gBKh0vQSZTOACSw5HFpC2dM9UzHI147VuGjSfnf0uY4/g/XePRN6S/BXz5OYrUFt9ihXBc9JKynWn63faTO0csimP38CM0Htrz3eCuGiu8vt6N4KUfBLDydiBBDJFgfamwCV3pg3UWXUC21rp0L6hik3euZImN0ZCFLkq6W3wIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAD74Z0nZUCpm/QGlAcPdHtrmr1hWQANk+z18R9Y6x66tuNbmcOWxALefzWHqGVq4IJlisZ+WAGk2MTUds9/gqsZDLn+2NS5MAWFiseYsNpKCOsWQNh6gwcbtUtcWU2uZoPl3AC3NxQU3Xp1eZ1Wek9NRFsX0jXdKTM0S0kL4Kyaz8QK8vzihSHScKOADRjC3w8Sngumd+/rm8BAtljiRjKGNShw7/ZFe7kda+jwj47G6RfcxkuZ1LnzdEpWBROKiy5r3R7GlT55afJp0GiPtUTD9FTAA+BHSYBFN/MXVJti5Gt7+9y/afEDCETS7CvFbFsl6qtah8mri9UsaPU4W/ig=","cancellation_requested":true,"status":"inProgress","status_details":"Pending - certificate created. Certificate request is in progress. This may take some - time based on the issuer provider. Please check again later.","request_id":"8e61c0dfe1f049fca58fb07d10174229"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1388'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:04 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [cb4343aa-00fb-4b09-ace8-5d4065cb6d39] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [3be7a89a-4ad6-11e7-bf31-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlbG0TROXjdmWvD3gh+OR4D8YBa1zBRs4wSjCKDNEeG9dq1R76UKzhGgBLgzOO4bvq+iyw7dQ9yLpNE+UxhmL+LBOsqxrvQGob+1MA1xoBBs7Nu08c8+dTNSY8s2cEFEP/noi6hg8t7+HN6FZknZJ1L69KP6LHXRaDAMT/A8cRokW9gBKh0vQSZTOACSw5HFpC2dM9UzHI147VuGjSfnf0uY4/g/XePRN6S/BXz5OYrUFt9ihXBc9JKynWn63faTO0csimP38CM0Htrz3eCuGiu8vt6N4KUfBLDydiBBDJFgfamwCV3pg3UWXUC21rp0L6hik3euZImN0ZCFLkq6W3wIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAD74Z0nZUCpm/QGlAcPdHtrmr1hWQANk+z18R9Y6x66tuNbmcOWxALefzWHqGVq4IJlisZ+WAGk2MTUds9/gqsZDLn+2NS5MAWFiseYsNpKCOsWQNh6gwcbtUtcWU2uZoPl3AC3NxQU3Xp1eZ1Wek9NRFsX0jXdKTM0S0kL4Kyaz8QK8vzihSHScKOADRjC3w8Sngumd+/rm8BAtljiRjKGNShw7/ZFe7kda+jwj47G6RfcxkuZ1LnzdEpWBROKiy5r3R7GlT55afJp0GiPtUTD9FTAA+BHSYBFN/MXVJti5Gt7+9y/afEDCETS7CvFbFsl6qtah8mri9UsaPU4W/ig=","cancellation_requested":true,"status":"inProgress","status_details":"Pending - certificate created. Certificate request is in progress. This may take some - time based on the issuer provider. Please check again later.","request_id":"8e61c0dfe1f049fca58fb07d10174229"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1388'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:05 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [bb133497-7fad-4f55-aeff-f3ac07fe892d] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [3c677518-4ad6-11e7-860b-5065f34efe31] - method: DELETE - uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlbG0TROXjdmWvD3gh+OR4D8YBa1zBRs4wSjCKDNEeG9dq1R76UKzhGgBLgzOO4bvq+iyw7dQ9yLpNE+UxhmL+LBOsqxrvQGob+1MA1xoBBs7Nu08c8+dTNSY8s2cEFEP/noi6hg8t7+HN6FZknZJ1L69KP6LHXRaDAMT/A8cRokW9gBKh0vQSZTOACSw5HFpC2dM9UzHI147VuGjSfnf0uY4/g/XePRN6S/BXz5OYrUFt9ihXBc9JKynWn63faTO0csimP38CM0Htrz3eCuGiu8vt6N4KUfBLDydiBBDJFgfamwCV3pg3UWXUC21rp0L6hik3euZImN0ZCFLkq6W3wIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAD74Z0nZUCpm/QGlAcPdHtrmr1hWQANk+z18R9Y6x66tuNbmcOWxALefzWHqGVq4IJlisZ+WAGk2MTUds9/gqsZDLn+2NS5MAWFiseYsNpKCOsWQNh6gwcbtUtcWU2uZoPl3AC3NxQU3Xp1eZ1Wek9NRFsX0jXdKTM0S0kL4Kyaz8QK8vzihSHScKOADRjC3w8Sngumd+/rm8BAtljiRjKGNShw7/ZFe7kda+jwj47G6RfcxkuZ1LnzdEpWBROKiy5r3R7GlT55afJp0GiPtUTD9FTAA+BHSYBFN/MXVJti5Gt7+9y/afEDCETS7CvFbFsl6qtah8mri9UsaPU4W/ig=","cancellation_requested":true,"status":"inProgress","status_details":"Pending - certificate created. Certificate request is in progress. This may take some - time based on the issuer provider. Please check again later.","request_id":"8e61c0dfe1f049fca58fb07d10174229"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1388'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:05 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [370208ac-2080-47b6-80b5-45cd86e957de] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [3d0d8efe-4ad6-11e7-a01a-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=2016-10-01 - response: - body: {string: '{"error":{"code":"PendingCertificateNotFound","message":"Pending - certificate not found: asyncCanceledDeletedCert"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['115'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:06 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [3fbe9c9a-41f9-4ac7-a832-56ce5b9d3796] - status: {code: 404, message: Not Found} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [3d93d7f6-4ad6-11e7-be49-5065f34efe31] - method: DELETE - uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/73317c36b42d44f9b654ca9cadc3c15c","attributes":{"enabled":false,"nbf":1496766361,"exp":1559838961,"created":1496766962,"updated":1496766962,"recoverylevel":"Purgeable"},"policy":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=*.microsoft.com","sans":{"dns_names":["onedrive.microsoft.com","xbox.microsoft.com"]},"ekus":["1.3.6.1.5.5.7.3.1","1.3.6.1.5.5.7.3.2"],"key_usage":["digitalSignature","keyEncipherment"],"validity_months":24,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"AutoRenew"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1496766962,"updated":1496766962}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['960'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:09 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [16aba8ec-e608-46d6-84e5-9e04dea2e669] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_contacts.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_contacts.yaml deleted file mode 100644 index 8e5f58ab46a9..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_contacts.yaml +++ /dev/null @@ -1,164 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [41ee7d08-4ad6-11e7-b759-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:14 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [ca2bcf13-df9c-45f1-bc41-ee618d89793c] - x-ms-ratelimit-remaining-subscription-writes: ['1188'] - x-ms-request-id: [ca2bcf13-df9c-45f1-bc41-ee618d89793c] - x-ms-routing-request-id: ['WESTUS:20170606T163615Z:ca2bcf13-df9c-45f1-bc41-ee618d89793c'] - status: {code: 200, message: OK} -- request: - body: '{"contacts": [{"name": "John Doe", "email": "admin@contoso.com", "phone": - "1111111111"}, {"name": "John Doe2", "email": "admin2@contoso.com", "phone": - "2222222222"}]}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['166'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [422913e6-4ad6-11e7-a5ae-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/certificates/contacts?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/contacts","contacts":[{"email":"admin@contoso.com","name":"John - Doe","phone":"1111111111"},{"email":"admin2@contoso.com","name":"John Doe2","phone":"2222222222"}]}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['227'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:15 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [7c54027a-6fe9-4e65-bf79-91564261282f] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [42c09818-4ad6-11e7-bbb9-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/contacts?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/contacts","contacts":[{"email":"admin@contoso.com","name":"John - Doe","phone":"1111111111"},{"email":"admin2@contoso.com","name":"John Doe2","phone":"2222222222"}]}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['227'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:15 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [c920543d-29c9-4092-8b86-45b719ff9128] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [43415102-4ad6-11e7-af38-5065f34efe31] - method: DELETE - uri: https://pytest-shared-vault.vault.azure.net/certificates/contacts?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/contacts","contacts":[{"email":"admin@contoso.com","name":"John - Doe","phone":"1111111111"},{"email":"admin2@contoso.com","name":"John Doe2","phone":"2222222222"}]}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['227'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:16 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9152beca-c3fc-4bf1-ad6d-e16e5d2a0d1e] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [43bc9968-4ad6-11e7-8930-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/contacts?api-version=2016-10-01 - response: - body: {string: '{"error":{"code":"ContactsNotFound","message":"Contacts not found"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['68'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:18 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [f9ee763b-f079-4fda-bbd2-f08eca9681ab] - status: {code: 404, message: Not Found} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_issuer.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_issuer.yaml deleted file mode 100644 index 582e1371a301..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_issuer.yaml +++ /dev/null @@ -1,198 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4698a1fe-4ad6-11e7-8a5f-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:22 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [fcc2faa4-9f81-4d86-a102-8aaeb6dae2b7] - x-ms-ratelimit-remaining-subscription-writes: ['1196'] - x-ms-request-id: [fcc2faa4-9f81-4d86-a102-8aaeb6dae2b7] - x-ms-routing-request-id: ['WESTUS:20170606T163622Z:fcc2faa4-9f81-4d86-a102-8aaeb6dae2b7'] - status: {code: 200, message: OK} -- request: - body: '{"provider": "test", "org_details": {"admin_details": [{"email": "admin@contoso.com", - "last_name": "Doe", "phone": "4256666666", "first_name": "Jane"}]}, "credentials": - {"account_id": "keyvaultuser", "pwd": "password"}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['219'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [46cff9fa-4ad6-11e7-afad-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer","provider":"test","credentials":{"account_id":"keyvaultuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane","last_name":"Doe","email":"admin@contoso.com","phone":"4256666666"}]},"attributes":{"enabled":true,"created":1496766984,"updated":1496766984}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['351'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:24 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [d20a1f96-203e-4af7-b878-c8f312424e18] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [47760166-4ad6-11e7-b389-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer","provider":"test","credentials":{"account_id":"keyvaultuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane","last_name":"Doe","email":"admin@contoso.com","phone":"4256666666"}]},"attributes":{"enabled":true,"created":1496766984,"updated":1496766984}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['351'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:24 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [a8051fea-be24-47db-a55e-4af92044ebc8] - status: {code: 200, message: OK} -- request: - body: '{"provider": "test", "org_details": {"admin_details": [{"email": "admin@contoso.com", - "last_name": "Doe", "phone": "1111111111", "first_name": "Jane II"}]}, "credentials": - {"account_id": "xboxuser", "pwd": "security"}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['218'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [47fdab74-4ad6-11e7-8448-5065f34efe31] - method: PATCH - uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer","provider":"test","credentials":{"account_id":"xboxuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane - II","last_name":"Doe","email":"admin@contoso.com","phone":"1111111111"}]},"attributes":{"enabled":true,"created":1496766984,"updated":1496766985}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['350'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:25 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [b3e762a9-8208-47e0-a9e1-c821bc85a955] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [489a7e18-4ad6-11e7-aae2-5065f34efe31] - method: DELETE - uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer","provider":"test","credentials":{"account_id":"xboxuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane - II","last_name":"Doe","email":"admin@contoso.com","phone":"1111111111"}]},"attributes":{"enabled":true,"created":1496766984,"updated":1496766985}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['350'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:26 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [8f0206a7-4a4f-482a-8db0-6d7033a4ee74] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [490d3a52-4ad6-11e7-9938-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer?api-version=2016-10-01 - response: - body: {string: '{"error":{"code":"CertificateIssuerNotFound","message":"Issuer - not found"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['75'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:26 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9780228c-e0fa-4e3e-83dc-e922976f55ad] - status: {code: 404, message: Not Found} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_operations.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_operations.yaml deleted file mode 100644 index 87f24542e771..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_operations.yaml +++ /dev/null @@ -1,334 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4bb1f3dc-4ad6-11e7-a296-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:31 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [53ff0d06-fb32-4c23-bf09-820aa51e08fa] - x-ms-ratelimit-remaining-subscription-writes: ['1194'] - x-ms-request-id: [53ff0d06-fb32-4c23-bf09-820aa51e08fa] - x-ms-routing-request-id: ['WESTUS:20170606T163631Z:53ff0d06-fb32-4c23-bf09-820aa51e08fa'] - status: {code: 200, message: OK} -- request: - body: '{"policy": {"x509_props": {"validity_months": 24, "sans": {"dns_names": - ["onedrive.microsoft.com", "xbox.microsoft.com"]}, "subject": "CN=*.microsoft.com"}, - "key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, "reuse_key": - false}, "secret_props": {"contentType": "application/x-pkcs12"}, "issuer": {"name": - "Self"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['329'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4bf2192e-4ad6-11e7-afb8-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/create?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArD3bWUb/AdDAij6ZXfn842ovoFnk5iXIAT9wXHhBqei0Hksd6Dt6HFtjLT/doFZJzh7jqsDONLKXh4d6yHfVdHGmack0YBv1AdPmac/sm7gjNGNluFrpFWGDsLHOeMO1dH/3Cp4Jd0P1ppKn6CvFfZYX5RnIVagS67/sN4CovVdYEOxzmefWQD9cOUQMxLzQdROPxFGzWWyWJSpr8QvZDLfuz1ccSQOo+OFQ6iaToESsSRURY9Um/kYknlqpzQQqrMHWYfoFfB0vuJ2/1xSZmQ+5RietkrDMGN4gn+9xhhdZvC/AbO4PnFKIIOd+l0OkCvhmlHHjy5P/oot6pSmyewIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAJkCFImeIovVpsS1lOgCziUphKJ1/YnFM2L2cpsdSZV9WZiqtdW5EInLC2THiEDwJlcbexRwBf4HJglmuIddCuu6SCBVe1TuuJCfOVEqlLDIYAOe4O8c01aBWN006w5cihs0W5Y5/ON42XFf0sbkCjqY4KzRmEdI6V+7tuEXE4JMLo8zvdH0hZnVfE3MMd6IjHcAEX5J6eW0K/Cz1eZJGL2qjdVU/JM5uJAz2p+1datHJ0b5YnbSaIr5M52G4D67msKUQSB4aJsFr4OHIR+Kf0e0Lx9ML4NddXWqQmabnSFNIPs4IzaMA0K+YXNAwfSW9Uzs3XS5uCn4mCS63FydNrk=","cancellation_requested":false,"status":"inProgress","status_details":"Pending - certificate created. Certificate request is in progress. This may take some - time based on the issuer provider. Please check again later.","request_id":"a55235da06584df2b0bee49aad82798f"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1377'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:33 GMT'] - Expires: ['-1'] - Location: ['https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending?api-version=2016-10-01&request_id=a55235da06584df2b0bee49aad82798f'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [0ddf712c-78ff-4df5-9c33-d4b2df38f548] - status: {code: 202, message: Accepted} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4d28cd5c-4ad6-11e7-bf4e-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArD3bWUb/AdDAij6ZXfn842ovoFnk5iXIAT9wXHhBqei0Hksd6Dt6HFtjLT/doFZJzh7jqsDONLKXh4d6yHfVdHGmack0YBv1AdPmac/sm7gjNGNluFrpFWGDsLHOeMO1dH/3Cp4Jd0P1ppKn6CvFfZYX5RnIVagS67/sN4CovVdYEOxzmefWQD9cOUQMxLzQdROPxFGzWWyWJSpr8QvZDLfuz1ccSQOo+OFQ6iaToESsSRURY9Um/kYknlqpzQQqrMHWYfoFfB0vuJ2/1xSZmQ+5RietkrDMGN4gn+9xhhdZvC/AbO4PnFKIIOd+l0OkCvhmlHHjy5P/oot6pSmyewIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAJkCFImeIovVpsS1lOgCziUphKJ1/YnFM2L2cpsdSZV9WZiqtdW5EInLC2THiEDwJlcbexRwBf4HJglmuIddCuu6SCBVe1TuuJCfOVEqlLDIYAOe4O8c01aBWN006w5cihs0W5Y5/ON42XFf0sbkCjqY4KzRmEdI6V+7tuEXE4JMLo8zvdH0hZnVfE3MMd6IjHcAEX5J6eW0K/Cz1eZJGL2qjdVU/JM5uJAz2p+1datHJ0b5YnbSaIr5M52G4D67msKUQSB4aJsFr4OHIR+Kf0e0Lx9ML4NddXWqQmabnSFNIPs4IzaMA0K+YXNAwfSW9Uzs3XS5uCn4mCS63FydNrk=","cancellation_requested":false,"status":"inProgress","status_details":"Pending - certificate created. Certificate request is in progress. This may take some - time based on the issuer provider. Please check again later.","request_id":"a55235da06584df2b0bee49aad82798f"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1377'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:33 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [91cb3ec5-9f05-42e2-aff3-3656233fb581] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [50a7ee74-4ad6-11e7-998e-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArD3bWUb/AdDAij6ZXfn842ovoFnk5iXIAT9wXHhBqei0Hksd6Dt6HFtjLT/doFZJzh7jqsDONLKXh4d6yHfVdHGmack0YBv1AdPmac/sm7gjNGNluFrpFWGDsLHOeMO1dH/3Cp4Jd0P1ppKn6CvFfZYX5RnIVagS67/sN4CovVdYEOxzmefWQD9cOUQMxLzQdROPxFGzWWyWJSpr8QvZDLfuz1ccSQOo+OFQ6iaToESsSRURY9Um/kYknlqpzQQqrMHWYfoFfB0vuJ2/1xSZmQ+5RietkrDMGN4gn+9xhhdZvC/AbO4PnFKIIOd+l0OkCvhmlHHjy5P/oot6pSmyewIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAJkCFImeIovVpsS1lOgCziUphKJ1/YnFM2L2cpsdSZV9WZiqtdW5EInLC2THiEDwJlcbexRwBf4HJglmuIddCuu6SCBVe1TuuJCfOVEqlLDIYAOe4O8c01aBWN006w5cihs0W5Y5/ON42XFf0sbkCjqY4KzRmEdI6V+7tuEXE4JMLo8zvdH0hZnVfE3MMd6IjHcAEX5J6eW0K/Cz1eZJGL2qjdVU/JM5uJAz2p+1datHJ0b5YnbSaIr5M52G4D67msKUQSB4aJsFr4OHIR+Kf0e0Lx9ML4NddXWqQmabnSFNIPs4IzaMA0K+YXNAwfSW9Uzs3XS5uCn4mCS63FydNrk=","cancellation_requested":false,"status":"inProgress","status_details":"Pending - certificate created. Certificate request is in progress. This may take some - time based on the issuer provider. Please check again later.","request_id":"a55235da06584df2b0bee49aad82798f"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1377'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:38 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [6886b022-b9bc-451d-b631-b37bf7c2ccef] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [542151f8-4ad6-11e7-b7eb-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending","issuer":{"name":"Self"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArD3bWUb/AdDAij6ZXfn842ovoFnk5iXIAT9wXHhBqei0Hksd6Dt6HFtjLT/doFZJzh7jqsDONLKXh4d6yHfVdHGmack0YBv1AdPmac/sm7gjNGNluFrpFWGDsLHOeMO1dH/3Cp4Jd0P1ppKn6CvFfZYX5RnIVagS67/sN4CovVdYEOxzmefWQD9cOUQMxLzQdROPxFGzWWyWJSpr8QvZDLfuz1ccSQOo+OFQ6iaToESsSRURY9Um/kYknlqpzQQqrMHWYfoFfB0vuJ2/1xSZmQ+5RietkrDMGN4gn+9xhhdZvC/AbO4PnFKIIOd+l0OkCvhmlHHjy5P/oot6pSmyewIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAJkCFImeIovVpsS1lOgCziUphKJ1/YnFM2L2cpsdSZV9WZiqtdW5EInLC2THiEDwJlcbexRwBf4HJglmuIddCuu6SCBVe1TuuJCfOVEqlLDIYAOe4O8c01aBWN006w5cihs0W5Y5/ON42XFf0sbkCjqY4KzRmEdI6V+7tuEXE4JMLo8zvdH0hZnVfE3MMd6IjHcAEX5J6eW0K/Cz1eZJGL2qjdVU/JM5uJAz2p+1datHJ0b5YnbSaIr5M52G4D67msKUQSB4aJsFr4OHIR+Kf0e0Lx9ML4NddXWqQmabnSFNIPs4IzaMA0K+YXNAwfSW9Uzs3XS5uCn4mCS63FydNrk=","cancellation_requested":false,"status":"completed","target":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d","request_id":"a55235da06584df2b0bee49aad82798f"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1293'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:45 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [3714b5e9-fd8c-45cb-89fa-9ca662bbc773] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [54c87406-4ad6-11e7-a0cf-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f","kid":"https://pytest-shared-vault.vault.azure.net/keys/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f","sid":"https://pytest-shared-vault.vault.azure.net/secrets/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f","x5t":"6MEw3_wFSzWczWrQ2QbeGoAKmL8","cer":"MIIDczCCAlugAwIBAgIQAUR2/Zf7SuGMW/6KJYgjPzANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wHhcNMTcwNjA2MTYyNjQzWhcNMTkwNjA2MTYzNjQzWjAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsPdtZRv8B0MCKPpld+fzjai+gWeTmJcgBP3BceEGp6LQeSx3oO3ocW2MtP92gVknOHuOqwM40speHh3rId9V0caZpyTRgG/UB0+Zpz+ybuCM0Y2W4WukVYYOwsc54w7V0f/cKngl3Q/WmkqfoK8V9lhflGchVqBLrv+w3gKi9V1gQ7HOZ59ZAP1w5RAzEvNB1E4/EUbNZbJYlKmvxC9kMt+7PVxxJA6j44VDqJpOgRKxJFRFj1Sb+RiSeWqnNBCqswdZh+gV8HS+4nb/XFJmZD7lGJ62SsMwY3iCf73GGF1m8L8Bs7g+cUogg536XQ6QK+GaUcePLk/+ii3qlKbJ7AgMBAAGjgbQwgbEwDgYDVR0PAQH/BAQDAgWgMAkGA1UdEwQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDUGA1UdEQQuMCyCFm9uZWRyaXZlLm1pY3Jvc29mdC5jb22CEnhib3gubWljcm9zb2Z0LmNvbTAfBgNVHSMEGDAWgBS4Z9JVeeQRomSxG6w3kymwrdZCKTAdBgNVHQ4EFgQUuGfSVXnkEaJksRusN5MpsK3WQikwDQYJKoZIhvcNAQELBQADggEBAKMRafZyVD2RoUV4B4MfP2OD8oswJEV2VFsvq/wqfEzq2jBHqG/2SSZat+S7YJclvzkcg9t0RMXWsHvXuEaxbwnFBUaksmhSAghFuLUwkKdmMWDA6+VlYVmu1HJhQcF0gZW02e+zZkcpJkgRuSa4XTn/mUE2trpsCYa14tOJwkPTn4cfBi6l5RFWu0h7AfPcYqJhj/gTUKLndkCQxWP3DNhREe+f3WED3MKtffTjeRk9OaqZcbLHk9eC+Iaaelsk8KC+DgJ3rjVOX+nBkJX56pk86n5mhDyiDGtlXYAb7CXVU/SaEjBzKBalKYsXCT05dld2QOFJT2/n8oirfGwGbGE=","attributes":{"enabled":true,"nbf":1496766403,"exp":1559839003,"created":1496767003,"updated":1496767003,"recoverylevel":"Purgeable"},"policy":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=*.microsoft.com","sans":{"dns_names":["onedrive.microsoft.com","xbox.microsoft.com"]},"ekus":["1.3.6.1.5.5.7.3.1","1.3.6.1.5.5.7.3.2"],"key_usage":["digitalSignature","keyEncipherment"],"validity_months":24,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"AutoRenew"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1496766993,"updated":1496766993}},"pending":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['2470'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:47 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [f4b35478-00f9-485b-95c2-57e23ad956d0] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [5561a968-4ad6-11e7-96a1-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/secrets/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f?api-version=2016-10-01 - response: - body: {string: '{"value":"MIIKfAIBAzCCCjwGCSqGSIb3DQEHAaCCCi0EggopMIIKJTCCBhYGCSqGSIb3DQEHAaCCBgcEggYDMIIF/zCCBfsGCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAguncRbV7HwhAICB9AEggTYQ58KQ9SiN3kuCOo7my6fZ8mTM9VfTVgsM0BkeAIH1lgddeYwj+4WUJLi3vKd7cb2vjSOkvZ+6h/5J63HuL3S/tYiOT+kqUeeArXpvmWbqQlnQ6jH8VU1hVSlTI2QATyKNP6pygZU6GbuYRpJQSUQpE7I3hMK+x9j8rFUslFOMHbePA+Rfqf7ZFrMXIAcwoMLobEIugcTYUUhlc+zYz5DTSZVm22zwQtKpnPGaUQfspftATYRPV9whj6y/Z2LbyGcQTTaVqZLLf8aHWWcl9Wu3u3cxYohtWUlF+4WZZqx4qtkqyknAvZlAKeEptTC+f5ePlwYRIA9rj95Ixnrp76FMWKT/j9Y9uZRPfLgPRvk0rVsEeYeAJZnyiF5WD0GF4BR2AQD75AYCyfWqCMV/1j9IJPNyaxOxzKisAQbtBFl2dZqHnwoZyVgCCZKpqU3p62T3TzMwHruKkJN60/Y+43O6vp0NJpcsTJr8XcWqi7jNGPv8EINL+YLi1t2tP1cX/TWYPD0eAO9SPCUOmsREpUoezM0kEQmwzIIz970dHcQER4LxgDVvOi7VFSxHFThJdt6jh8ycSvfTNmq3v054IgAVtywP7dtlIPTLvjI3YAOjYH2gfGrnSMKslw+O76DxEfyrxjV1ApT2rXuEXC+7h6iqYjEKRhUU5dgf27Jr/TCDr/kefbOkR0pMuwbtZfF/xofeHZ9Hzdms6HKHJLVyyCgwZhxmuaKZvA0DHTae8cD45CYZD1e5fz690uJgJr0kl+ldIUfhM7wYDZs0Rz1JC1+7APj66eq4K0xNSMJ4aEZLxL9xKExMQJWZMe9HwWMajOqfVWYhs+8Ksnirv73t1KiXS4c4023oBEsFl7d5yqsv1DKhIIxAKBz9P6CMC8Dj1WwPhzyUmkzBHp0QQoH2+H5RLfL7aT66AnQQ8bTCkcYw2Fr0zkYgiXkPcRYR2gvtoHwMAL2qPG4zQzroTnhWn5x1r92j2OZ4TITohhjwKih3yzydwhEDzliptoHeRw7Bb8eXIWrJ2LC9u0ysiIfbRHd+LkV+Yl2oHpaocFM6GdmhpliF9Hl9Z61ysciQLjSQDdMJQWjhMwcvoAD/4ALu2fzmDLLmLl6dv+UGHMEeNQ54EBrlwkoT3NkS3+/ZAIoi7c0fCnUZBERLCVqun8iVO0SZbuxptF0f/980ogx428jIaTAQOitGwG/Cb3XrijZMJwk3EgVCp4omOWaPn8VSrFz/kuWbCeEaQI3B85hbu6FNfiUG4HxusNu2bqIwoLdkTgy8RvNZLODbFSpIDxowseGrRcAJhjfJJSMpHIVhuosNqp8JwbpkY8PhilEG0WA3z4WJLxz/f7GJ7mmwluz6itVTUmixjCQ1cIBNMXIdtwrlLT/uQoXTPO93oJb8XMe5IuBlomUApLa8p0xgDf7cRN3xBqPujgzLrDjlljYta98Xt31Hm3GUP2tGwxc9etgNmiQ2Ee2moNn0aRZ48xAeP0358EBGw288a5W6zAoaXVdvWnQMQeIRqpn5IaWtuKC2Il0FIm/+JVyQ9D8esycoWnDGTFJ3fHYxI5JmKTWb29731CxIY3Lq2NnDP5lugpClFKfYlfc9TxvY1CYyvr8qlfLzStnhMvzTEujK78+FjlH1ZYQeHS5RktRMzGB6TATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IADMAOAA3AGMANQBkADcANwAtAGIAYgBhADAALQA0AGIAYgA5AC0AYgA5ADMAMgAtADYANgAzADUAZgBhAGUAZQA5AGEAOAAwMHkGCSsGAQQBgjcRATFsHmoATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByMIIEBwYJKoZIhvcNAQcGoIID+DCCA/QCAQAwggPtBgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAi093zZUwrBeAICB9CAggPAQnPIBhl5UIhqtVdLcSgC5zhYQxjnLw4UmUdTmbE7fkzfWXhNMiEZHWgmnS0aBXA1IzX7o3N+FL8Lzoy3r6QZ/9bQkqqCleB+UvRBVv7k0p2/kSTF4b0x0QnHkenoPUJR1Z/5ngUKzRuuj9SL9jMZdsKD6u1XvAG7JXuyMSmnalxKjhN2cLw+AQeoWhpI5rUcI4K2W54ld6pZSGauvisX3ubudhCk7jyCGDaz0StzuFll26cS/oUaidHXdclXPYhDHGktmKwVXjVIpHAJCuvzU9QWuDnieGB8HKdglh5cWHBSz1MPf7ts4f47hwFAqTrRjsrL+0E5iiuvgWNV5hgUy4CpyOoPNLW7l96L6ekEqvo+ongjtj43XXICkJFKz1iRmDr/WQWrc5XqB+oUiVI3Sf70oS/VC5jODK/8p2Vkx64F9x8MeaCH4BV5Bs0OYcX6h1K32m8xtudAYja0l4GQAE2U0MFFbmkaQct4J/m/7BOFTKdmT/B31GjJthw1Dvi8eK7zUtojZVAuJiHwzq3L0M+Tr0nfUlQ9/jrNon2SXOPcV3dwTbkfqug/XDCkLa3wvepmhp/yzg6ErXqOA8Ygl5kfY/4Agn/ItLfXzlZeTetCDkiR3m8z/6YlYgu632p3k2zxJjaTnpT8Fv+uJP45U0HbFGOdKyEJ9i47AQWGHDbnlrZ7Hqe7VgeRzsMkfikN441yhwEq0fQWIcbE/XyhLxHfTQ0YHaep5iy3hOfCUGbCrjLENOyQikAjCWxlUORqlavI49ZtwtS2+zEFJNJILoduSxjVno6HZi8zfHFvck+Ts3u8bx5HYVq6AIqF9cRk/cCQcF3rN2XEt6o7TRIlMYY/lVliiGA+DnVCYEhnxuiVd+IO6/UNR+LmUs7PhALSecRtXGSV7ZBJL/2kD+nmPihPjBqO94L0b195t5TEEKEAwG41726fM4LnnkIWJxuNmZQFC9ZijlI81FEveKSBqDVliR67Cnh4ci5g+LCM98QILgJqU/2LLdJyYaJ+KNOL6ReYL9lO3oDzs8GEtWITJsD0R//MS+/+AnXgMrPwNxgcgQLQcDUDYXmvLDA+k7caPUPYys4lGAxbC4V8APBBv0fA/wMLlwhL9dbLGq18s832u/38bKYNOpQDTHAJNbfF94Z7kWlHENVfdh0Agdc88QYMCY9B7A2Vz1uk2gyopu5Mb9HmWPaUJykkRLI2qWyEk5i6Q3i3IyMcRLoRSI1VNKXWA5A6OynCItRRzixnALl31KLrYsrCyXN87XlhV6hrMDcwHzAHBgUrDgMCGgQUruswlLHvsO1ExtxJH0gezCrL7TgEFBcNzr7bz25YWQUyhm9Xjm9HVTMJ","contentType":"application/x-pkcs12","id":"https://pytest-shared-vault.vault.azure.net/secrets/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f","managed":true,"attributes":{"enabled":true,"nbf":1496766403,"exp":1559839003,"created":1496767003,"updated":1496767003,"recoverylevel":"Purgeable"},"kid":"https://pytest-shared-vault.vault.azure.net/keys/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['3990'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:47 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [812b4f2a-f1be-4e6f-b2ab-514a21bc2273] - status: {code: 200, message: OK} -- request: - body: '{"policy": {"x509_props": {"validity_months": 24, "sans": {"dns_names": - ["onedrive.microsoft.com", "xbox.microsoft.com"]}, "subject": "CN=*.microsoft.com"}, - "key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, "reuse_key": - false}, "secret_props": {"contentType": "application/x-pkcs12"}, "issuer": {"name": - "Self"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['329'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [55ddc530-4ad6-11e7-a298-5065f34efe31] - method: PATCH - uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f","kid":"https://pytest-shared-vault.vault.azure.net/keys/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f","sid":"https://pytest-shared-vault.vault.azure.net/secrets/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f","x5t":"6MEw3_wFSzWczWrQ2QbeGoAKmL8","cer":"MIIDczCCAlugAwIBAgIQAUR2/Zf7SuGMW/6KJYgjPzANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wHhcNMTcwNjA2MTYyNjQzWhcNMTkwNjA2MTYzNjQzWjAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsPdtZRv8B0MCKPpld+fzjai+gWeTmJcgBP3BceEGp6LQeSx3oO3ocW2MtP92gVknOHuOqwM40speHh3rId9V0caZpyTRgG/UB0+Zpz+ybuCM0Y2W4WukVYYOwsc54w7V0f/cKngl3Q/WmkqfoK8V9lhflGchVqBLrv+w3gKi9V1gQ7HOZ59ZAP1w5RAzEvNB1E4/EUbNZbJYlKmvxC9kMt+7PVxxJA6j44VDqJpOgRKxJFRFj1Sb+RiSeWqnNBCqswdZh+gV8HS+4nb/XFJmZD7lGJ62SsMwY3iCf73GGF1m8L8Bs7g+cUogg536XQ6QK+GaUcePLk/+ii3qlKbJ7AgMBAAGjgbQwgbEwDgYDVR0PAQH/BAQDAgWgMAkGA1UdEwQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDUGA1UdEQQuMCyCFm9uZWRyaXZlLm1pY3Jvc29mdC5jb22CEnhib3gubWljcm9zb2Z0LmNvbTAfBgNVHSMEGDAWgBS4Z9JVeeQRomSxG6w3kymwrdZCKTAdBgNVHQ4EFgQUuGfSVXnkEaJksRusN5MpsK3WQikwDQYJKoZIhvcNAQELBQADggEBAKMRafZyVD2RoUV4B4MfP2OD8oswJEV2VFsvq/wqfEzq2jBHqG/2SSZat+S7YJclvzkcg9t0RMXWsHvXuEaxbwnFBUaksmhSAghFuLUwkKdmMWDA6+VlYVmu1HJhQcF0gZW02e+zZkcpJkgRuSa4XTn/mUE2trpsCYa14tOJwkPTn4cfBi6l5RFWu0h7AfPcYqJhj/gTUKLndkCQxWP3DNhREe+f3WED3MKtffTjeRk9OaqZcbLHk9eC+Iaaelsk8KC+DgJ3rjVOX+nBkJX56pk86n5mhDyiDGtlXYAb7CXVU/SaEjBzKBalKYsXCT05dld2QOFJT2/n8oirfGwGbGE=","attributes":{"enabled":true,"nbf":1496766403,"exp":1559839003,"created":1496767003,"updated":1496767003,"recoverylevel":"Purgeable"},"policy":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=*.microsoft.com","sans":{"dns_names":["onedrive.microsoft.com","xbox.microsoft.com"]},"ekus":["1.3.6.1.5.5.7.3.1","1.3.6.1.5.5.7.3.2"],"key_usage":["digitalSignature","keyEncipherment"],"validity_months":24,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"AutoRenew"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1496766993,"updated":1496767009}},"pending":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['2470'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:49 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [190ac61a-03ca-4b2d-80ad-28e57a92b94d] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [56a1f912-4ad6-11e7-9d89-5065f34efe31] - method: DELETE - uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f","kid":"https://pytest-shared-vault.vault.azure.net/keys/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f","sid":"https://pytest-shared-vault.vault.azure.net/secrets/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f","x5t":"6MEw3_wFSzWczWrQ2QbeGoAKmL8","cer":"MIIDczCCAlugAwIBAgIQAUR2/Zf7SuGMW/6KJYgjPzANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wHhcNMTcwNjA2MTYyNjQzWhcNMTkwNjA2MTYzNjQzWjAaMRgwFgYDVQQDDA8qLm1pY3Jvc29mdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsPdtZRv8B0MCKPpld+fzjai+gWeTmJcgBP3BceEGp6LQeSx3oO3ocW2MtP92gVknOHuOqwM40speHh3rId9V0caZpyTRgG/UB0+Zpz+ybuCM0Y2W4WukVYYOwsc54w7V0f/cKngl3Q/WmkqfoK8V9lhflGchVqBLrv+w3gKi9V1gQ7HOZ59ZAP1w5RAzEvNB1E4/EUbNZbJYlKmvxC9kMt+7PVxxJA6j44VDqJpOgRKxJFRFj1Sb+RiSeWqnNBCqswdZh+gV8HS+4nb/XFJmZD7lGJ62SsMwY3iCf73GGF1m8L8Bs7g+cUogg536XQ6QK+GaUcePLk/+ii3qlKbJ7AgMBAAGjgbQwgbEwDgYDVR0PAQH/BAQDAgWgMAkGA1UdEwQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDUGA1UdEQQuMCyCFm9uZWRyaXZlLm1pY3Jvc29mdC5jb22CEnhib3gubWljcm9zb2Z0LmNvbTAfBgNVHSMEGDAWgBS4Z9JVeeQRomSxG6w3kymwrdZCKTAdBgNVHQ4EFgQUuGfSVXnkEaJksRusN5MpsK3WQikwDQYJKoZIhvcNAQELBQADggEBAKMRafZyVD2RoUV4B4MfP2OD8oswJEV2VFsvq/wqfEzq2jBHqG/2SSZat+S7YJclvzkcg9t0RMXWsHvXuEaxbwnFBUaksmhSAghFuLUwkKdmMWDA6+VlYVmu1HJhQcF0gZW02e+zZkcpJkgRuSa4XTn/mUE2trpsCYa14tOJwkPTn4cfBi6l5RFWu0h7AfPcYqJhj/gTUKLndkCQxWP3DNhREe+f3WED3MKtffTjeRk9OaqZcbLHk9eC+Iaaelsk8KC+DgJ3rjVOX+nBkJX56pk86n5mhDyiDGtlXYAb7CXVU/SaEjBzKBalKYsXCT05dld2QOFJT2/n8oirfGwGbGE=","attributes":{"enabled":true,"nbf":1496766403,"exp":1559839003,"created":1496767003,"updated":1496767003,"recoverylevel":"Purgeable"},"policy":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=*.microsoft.com","sans":{"dns_names":["onedrive.microsoft.com","xbox.microsoft.com"]},"ekus":["1.3.6.1.5.5.7.3.1","1.3.6.1.5.5.7.3.2"],"key_usage":["digitalSignature","keyEncipherment"],"validity_months":24,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"AutoRenew"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1496766993,"updated":1496767009}},"pending":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['2470'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:50 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [819cfc38-2d51-46de-8656-fa0b2da7e3b2] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [5760a874-4ad6-11e7-8ad1-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/?api-version=2016-10-01 - response: - body: {string: '{"error":{"code":"CertificateNotFound","message":"Certificate - not found: cert36d5156d"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['88'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:50 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [8fd3fe93-c9a6-45ee-9f21-27d6c7d0457f] - status: {code: 404, message: Not Found} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_import.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_import.yaml deleted file mode 100644 index 43e6b5b33f83..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_import.yaml +++ /dev/null @@ -1,67 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [5a399bdc-4ad6-11e7-b789-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:55 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [0adac1ae-1f0f-4276-9065-6a3124c18f63] - x-ms-ratelimit-remaining-subscription-writes: ['1192'] - x-ms-request-id: [0adac1ae-1f0f-4276-9065-6a3124c18f63] - x-ms-routing-request-id: ['WESTUS:20170606T163655Z:0adac1ae-1f0f-4276-9065-6a3124c18f63'] - status: {code: 200, message: OK} -- request: - body: '{"pwd": "123", "value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", - "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, - "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['3339'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [5a629cc6-4ad6-11e7-b446-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/certificates/certimp85b111b7/import?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certimp85b111b7/5fb429e233dd481398b999e57978066d","kid":"https://pytest-shared-vault.vault.azure.net/keys/certimp85b111b7/5fb429e233dd481398b999e57978066d","sid":"https://pytest-shared-vault.vault.azure.net/secrets/certimp85b111b7/5fb429e233dd481398b999e57978066d","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767016,"updated":1496767016,"recoverylevel":"Purgeable"},"policy":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certimp85b111b7/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496704632,"updated":1496767016}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1826'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:36:57 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [2b55ea82-d257-4aa7-ab47-ef7ffd58e54a] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list.yaml deleted file mode 100644 index 1d89b0db3d9e..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list.yaml +++ /dev/null @@ -1,194 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [5d9ebb38-4ad6-11e7-b123-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:00 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [ae014c38-5d6f-4315-b28d-3b518d800f64] - x-ms-ratelimit-remaining-subscription-writes: ['1187'] - x-ms-request-id: [ae014c38-5d6f-4315-b28d-3b518d800f64] - x-ms-routing-request-id: ['WESTUS:20170606T163701Z:ae014c38-5d6f-4315-b28d-3b518d800f64'] - status: {code: 200, message: OK} -- request: - body: '{"pwd": "123", "value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", - "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, - "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['3339'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [5dd5b014-4ad6-11e7-9ac2-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/certificates/cert062c210d8/import?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert062c210d8/0c4b38c619bf4e5d9ad3c500084b1131","kid":"https://pytest-shared-vault.vault.azure.net/keys/cert062c210d8/0c4b38c619bf4e5d9ad3c500084b1131","sid":"https://pytest-shared-vault.vault.azure.net/secrets/cert062c210d8/0c4b38c619bf4e5d9ad3c500084b1131","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767023,"updated":1496767023,"recoverylevel":"Purgeable"},"policy":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert062c210d8/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496765217,"updated":1496767023}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1818'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:04 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [31fd028c-06d8-4b84-a3e6-a4d532b07219] - status: {code: 200, message: OK} -- request: - body: '{"pwd": "123", "value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", - "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, - "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['3339'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [5f1a842c-4ad6-11e7-8249-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/certificates/cert162c210d8/import?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert162c210d8/36b7ef1e30cc420ea3546a0dbdf457c7","kid":"https://pytest-shared-vault.vault.azure.net/keys/cert162c210d8/36b7ef1e30cc420ea3546a0dbdf457c7","sid":"https://pytest-shared-vault.vault.azure.net/secrets/cert162c210d8/36b7ef1e30cc420ea3546a0dbdf457c7","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767025,"updated":1496767025,"recoverylevel":"Purgeable"},"policy":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert162c210d8/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496765219,"updated":1496767025}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1818'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:05 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [2a5e065b-89b4-431d-83c8-0622270a8fbb] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [6016ccec-4ad6-11e7-a22b-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates?maxresults=2&api-version=2016-10-01 - response: - body: {string: '{"value":[{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert062c210d8","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767023,"updated":1496767023}},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/cert162c210d8","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767025,"updated":1496767025}}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/certificates?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElXTmxjblJwWm1sallYUmxMME5GVWxRek5rUTFNVFUyUkNFd01EQXdNamdoTWpBeE55MHdOaTB3TmxReE5qb3dOam96T1M0ME1EZ3lOalF4V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['755'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:05 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [867c1c34-8200-4076-bf52-8d76abad2cf8] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [60b30e64-4ad6-11e7-8432-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElXTmxjblJwWm1sallYUmxMME5GVWxRek5rUTFNVFUyUkNFd01EQXdNamdoTWpBeE55MHdOaTB3TmxReE5qb3dOam96T1M0ME1EZ3lOalF4V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2 - response: - body: {string: '{"value":[{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certimp85b111b7","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767016,"updated":1496767016}},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496766221,"updated":1496766221}}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/certificates?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXTmxjblJwWm1sallYUmxMME5QVGxSQlExUlRJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['752'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:07 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [d8de93e9-4b33-4e9d-9d90-09e1eae276c5] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [616bfb36-4ad6-11e7-b556-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXTmxjblJwWm1sallYUmxMME5QVGxSQlExUlRJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2 - response: - body: {string: '{"value":[{"id":"https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496766238,"updated":1496766238}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['253'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:07 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [224429a7-146f-4dc5-bfe8-edb2014e9c29] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list_issuers.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list_issuers.yaml deleted file mode 100644 index 6b809c63358d..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list_issuers.yaml +++ /dev/null @@ -1,132 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [64f56586-4ad6-11e7-93ca-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:13 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [cddd80ad-91d0-41e6-9373-c9827147c30c] - x-ms-ratelimit-remaining-subscription-writes: ['1187'] - x-ms-request-id: [cddd80ad-91d0-41e6-9373-c9827147c30c] - x-ms-routing-request-id: ['WESTUS2:20170606T163714Z:cddd80ad-91d0-41e6-9373-c9827147c30c'] - status: {code: 200, message: OK} -- request: - body: '{"provider": "test", "org_details": {"admin_details": [{"email": "admin@contoso.com", - "last_name": "Doe", "phone": "4256666666", "first_name": "Jane"}]}, "credentials": - {"account_id": "keyvaultuser", "pwd": "password"}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['219'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [65413f50-4ad6-11e7-ac62-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer1?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer1","provider":"test","credentials":{"account_id":"keyvaultuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane","last_name":"Doe","email":"admin@contoso.com","phone":"4256666666"}]},"attributes":{"enabled":true,"created":1496765227,"updated":1496767034}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['352'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:14 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [f941454f-b3da-466c-a065-04c4f0e51b1f] - status: {code: 200, message: OK} -- request: - body: '{"provider": "test", "org_details": {"admin_details": [{"email": "admin@contoso.com", - "last_name": "Doe", "phone": "4256666666", "first_name": "Jane"}]}, "credentials": - {"account_id": "keyvaultuser", "pwd": "password"}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['219'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [65d8bbfe-4ad6-11e7-b1f1-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer2?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer2","provider":"test","credentials":{"account_id":"keyvaultuser"},"org_details":{"zip":0,"admin_details":[{"first_name":"Jane","last_name":"Doe","email":"admin@contoso.com","phone":"4256666666"}]},"attributes":{"enabled":true,"created":1496765228,"updated":1496767035}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['352'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:14 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [6365937a-a5a7-4550-bd8b-b158117dfb6c] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [66c230c2-4ad6-11e7-b7d0-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers?maxresults=2&api-version=2016-10-01 - response: - body: {string: '{"value":[{"id":"https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer1","provider":"test"},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer2","provider":"test"}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['239'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:16 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [53ce378f-9f52-4971-bde6-80ac0730a321] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list_versions.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list_versions.yaml deleted file mode 100644 index adaef6597928..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list_versions.yaml +++ /dev/null @@ -1,132 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [6a0e77ba-4ad6-11e7-a418-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:22 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [3007361c-9c05-4723-bdcd-ad37b34e19d6] - x-ms-ratelimit-remaining-subscription-writes: ['1185'] - x-ms-request-id: [3007361c-9c05-4723-bdcd-ad37b34e19d6] - x-ms-routing-request-id: ['WESTUS2:20170606T163722Z:3007361c-9c05-4723-bdcd-ad37b34e19d6'] - status: {code: 200, message: OK} -- request: - body: '{"pwd": "123", "value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", - "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, - "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['3339'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [6a779374-4ad6-11e7-870d-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/import?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/92543f325e6c45d499bfdefdf4942ae0","kid":"https://pytest-shared-vault.vault.azure.net/keys/certverd5e14b0/92543f325e6c45d499bfdefdf4942ae0","sid":"https://pytest-shared-vault.vault.azure.net/secrets/certverd5e14b0/92543f325e6c45d499bfdefdf4942ae0","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767044,"updated":1496767044,"recoverylevel":"Purgeable"},"policy":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496704661,"updated":1496767044}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1822'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:24 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [62e93a76-1b1b-4b01-9e99-69824b2a9af5] - status: {code: 200, message: OK} -- request: - body: '{"pwd": "123", "value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", - "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, - "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['3339'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [6b7957e4-4ad6-11e7-bf0f-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/import?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/71d6fb0373454a14bfb2c9df3959516a","kid":"https://pytest-shared-vault.vault.azure.net/keys/certverd5e14b0/71d6fb0373454a14bfb2c9df3959516a","sid":"https://pytest-shared-vault.vault.azure.net/secrets/certverd5e14b0/71d6fb0373454a14bfb2c9df3959516a","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767045,"updated":1496767045,"recoverylevel":"Purgeable"},"policy":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496704661,"updated":1496767045}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1822'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:24 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [1985259d-21cb-49d0-b043-66f05a45006f] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [6c4898d8-4ad6-11e7-a670-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/versions?api-version=2016-10-01 - response: - body: {string: '{"value":[{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/15b883b58b7a43229c41ed54f6f40dd4","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496765236,"updated":1496765236}},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/1c0f25a7fc034e3f964a7b6292203b12","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496704661,"updated":1496704661}},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/2359b6044a6a46a3b65c316fd8b2cc2a","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496705471,"updated":1496705471}},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/5a27f931f8cd49cabd9092f6a6fcea7f","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496705469,"updated":1496705469}},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/71d6fb0373454a14bfb2c9df3959516a","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767045,"updated":1496767045}},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/92543f325e6c45d499bfdefdf4942ae0","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767044,"updated":1496767044}},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/9b8461b32afb45449070d0859f89e4a7","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496766220,"updated":1496766220}},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/ae9bb671d67c4828864455eb95c721c3","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496766221,"updated":1496766221}},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/d9b1744c6911454e9122157a4fce195c","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496765235,"updated":1496765235}},{"id":"https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/f82d142a99fb464b950152981b83698d","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496704662,"updated":1496704662}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['2587'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:25 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [ce90c405-9837-40fe-ad80-94659f3c721c] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_manual_enrolled.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_manual_enrolled.yaml deleted file mode 100644 index 6b59844e73ab..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_manual_enrolled.yaml +++ /dev/null @@ -1,136 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [6fd517d4-4ad6-11e7-9053-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:32 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [4556477f-7011-46cc-baef-be07de06671b] - x-ms-ratelimit-remaining-subscription-writes: ['1186'] - x-ms-request-id: [4556477f-7011-46cc-baef-be07de06671b] - x-ms-routing-request-id: ['WESTUS2:20170606T163732Z:4556477f-7011-46cc-baef-be07de06671b'] - status: {code: 200, message: OK} -- request: - body: '{"policy": {"x509_props": {"validity_months": 24, "sans": {"dns_names": - ["onedrive.microsoft.com", "xbox.microsoft.com"]}, "subject": "CN=*.microsoft.com"}, - "key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, "reuse_key": - false}, "secret_props": {"contentType": "application/x-pkcs12"}, "issuer": {"name": - "Unknown"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['332'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [704ff3c6-4ad6-11e7-aac8-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert/create?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert/pending","issuer":{"name":"Unknown"},"csr":"MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoOLOXeOE1Ab8iK862F3CTPCVaxFgh8w8Xih7VQtIYTnKjU+QjoBuk8x/Y52BYCLLF+LLbLg524kDuEJ3V3RAURzv9fty+CziHUCn7sgBzuzKDFhkXZvBuMaZjHWRdY8dHbdvQlyQLx1DqzeY2REAjgTHMs7bNIBoS4NXbqMEmt/TspVsm9ZtxZVZSh0sDBEZAKaivH461sHjNSccQYQZ/QBzdRgYnZE1WemCBzyvQz0aQimwO5/X9QIO3Q11qeF3LYVdLF3a205iImMiDnLqUUSXVprWHsrNqZzJSlUb62eCZWv5LADII2DnA0i3knmBx2e7A8NMF31SYqhqSTnHfQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAI1XsDnR6I+0vy9CzcA4U1oHTYmjHVfSgRrNYbMPCVT/CIT1Rq0ToKA4ym3pbfe1S4rkcmUaitkxDeWOWaPu4L96IgKO4n3SB6bfiwPfhSwaBodADFJEoIXPHMS5yzHvee1h9GHiL6P/TgIyZK0QdJvlcPlq04RFITkRHSRRyuRk72f6Ac4QKc1qgPz9WbElxrTSTxlxx8e5dgJYsl0sVx0WjrQnU9nU5mwcYrLygAMStIY980YBBHd8X3JQe9XxcMuthytKKzZYaK3vMSrVx2un+/G/SglO85HBMachUX6Hf/C+zmxHdgqfcAvzXx0aLGJXK4MX2h/qFLz/qB1dZcg=","cancellation_requested":false,"status":"inProgress","status_details":"Pending - certificate created. Please Perform Merge to complete the request.","request_id":"ca8e87db3d1e436b90bbfbe835fe77a8"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1315'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:33 GMT'] - Expires: ['-1'] - Location: ['https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert/pending?api-version=2016-10-01&request_id=ca8e87db3d1e436b90bbfbe835fe77a8'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [ee35e14f-2c5e-4265-84ea-d7cecb3396df] - status: {code: 202, message: Accepted} -- request: - body: null - headers: - Accept: [application/pkcs10] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [715e0ef4-4ad6-11e7-bada-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert/pending?api-version=2016-10-01 - response: - body: {string: MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoOLOXeOE1Ab8iK862F3CTPCVaxFgh8w8Xih7VQtIYTnKjU+QjoBuk8x/Y52BYCLLF+LLbLg524kDuEJ3V3RAURzv9fty+CziHUCn7sgBzuzKDFhkXZvBuMaZjHWRdY8dHbdvQlyQLx1DqzeY2REAjgTHMs7bNIBoS4NXbqMEmt/TspVsm9ZtxZVZSh0sDBEZAKaivH461sHjNSccQYQZ/QBzdRgYnZE1WemCBzyvQz0aQimwO5/X9QIO3Q11qeF3LYVdLF3a205iImMiDnLqUUSXVprWHsrNqZzJSlUb62eCZWv5LADII2DnA0i3knmBx2e7A8NMF31SYqhqSTnHfQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAI1XsDnR6I+0vy9CzcA4U1oHTYmjHVfSgRrNYbMPCVT/CIT1Rq0ToKA4ym3pbfe1S4rkcmUaitkxDeWOWaPu4L96IgKO4n3SB6bfiwPfhSwaBodADFJEoIXPHMS5yzHvee1h9GHiL6P/TgIyZK0QdJvlcPlq04RFITkRHSRRyuRk72f6Ac4QKc1qgPz9WbElxrTSTxlxx8e5dgJYsl0sVx0WjrQnU9nU5mwcYrLygAMStIY980YBBHd8X3JQe9XxcMuthytKKzZYaK3vMSrVx2un+/G/SglO85HBMachUX6Hf/C+zmxHdgqfcAvzXx0aLGJXK4MX2h/qFLz/qB1dZcg=} - headers: - Cache-Control: [no-cache] - Content-Length: ['992'] - Content-Type: [application/pkcs10; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:34 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [2ec86768-52ba-422a-9e71-6ee3f4941c30] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [71e7fd80-4ad6-11e7-b5cd-5065f34efe31] - method: DELETE - uri: https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert/ae05528673ab42afaf9dde391733b237","attributes":{"enabled":false,"nbf":1496766453,"exp":1559839053,"created":1496767053,"updated":1496767053,"recoverylevel":"Purgeable"},"policy":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=*.microsoft.com","sans":{"dns_names":["onedrive.microsoft.com","xbox.microsoft.com"]},"ekus":["1.3.6.1.5.5.7.3.1","1.3.6.1.5.5.7.3.2"],"key_usage":["digitalSignature","keyEncipherment"],"validity_months":24,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496767053,"updated":1496767053}},"pending":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert/pending"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1055'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:35 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [0116f508-285a-4b71-af57-6cf24c8d9b01] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_policy.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_policy.yaml deleted file mode 100644 index 007c60375c4a..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_policy.yaml +++ /dev/null @@ -1,163 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [756f3240-4ad6-11e7-ac21-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:41 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [ac1d1bf5-8eb9-4144-845c-ff48aafd2088] - x-ms-ratelimit-remaining-subscription-writes: ['1193'] - x-ms-request-id: [ac1d1bf5-8eb9-4144-845c-ff48aafd2088] - x-ms-routing-request-id: ['WESTUS2:20170606T163741Z:ac1d1bf5-8eb9-4144-845c-ff48aafd2088'] - status: {code: 200, message: OK} -- request: - body: '{"pwd": "123", "value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", - "policy": {"key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, - "reuse_key": false}, "secret_props": {"contentType": "application/x-pkcs12"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['3339'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [75cbb8d8-4ad6-11e7-a5d5-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/import?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/7ada9e4f567441a2807e872a1dbc2c12","kid":"https://pytest-shared-vault.vault.azure.net/keys/policyCertificate/7ada9e4f567441a2807e872a1dbc2c12","sid":"https://pytest-shared-vault.vault.azure.net/secrets/policyCertificate/7ada9e4f567441a2807e872a1dbc2c12","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767062,"updated":1496767062,"recoverylevel":"Purgeable"},"policy":{"id":"https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496704724,"updated":1496767062}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1834'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:42 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [6afd9f9e-591f-4af1-9cdc-6950ec54cccc] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [76c28068-4ad6-11e7-95fa-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/policy?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496704724,"updated":1496767062}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['546'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:44 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [732d7edb-ca2f-4a65-ba00-9133c4d7f74a] - status: {code: 200, message: OK} -- request: - body: '{"key_props": {"exportable": true, "kty": "RSA", "key_size": 2048, "reuse_key": - false}, "secret_props": {"contentType": "application/x-pkcs12"}, "issuer": {"name": - "Self"}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['172'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [7746fefa-4ad6-11e7-b3b2-5065f34efe31] - method: PATCH - uri: https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/policy?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1496704724,"updated":1496767065}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['543'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:44 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [449acc63-1823-4e0a-8038-f3627db12c3f] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [77d926c2-4ad6-11e7-9441-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/policy?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Self"},"attributes":{"enabled":true,"created":1496704724,"updated":1496767065}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['543'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:37:46 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [2c897ccd-8f7f-4eb9-a573-efcd347d79c6] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_recover_and_purge.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_recover_and_purge.yaml deleted file mode 100644 index 2d67bf4c1bf7..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_recover_and_purge.yaml +++ /dev/null @@ -1,629 +0,0 @@ -interactions: -- request: - body: '{"properties": {"accessPolicies": [{"permissions": {"storage": ["get", - "list", "delete", "set", "update", "regeneratekey", "setsas", "listsas", "getsas", - "deletesas"], "secrets": ["get", "list", "set", "delete", "backup", "restore", - "recover", "purge"], "keys": ["encrypt", "decrypt", "wrapKey", "unwrapKey", - "sign", "verify", "get", "list", "create", "update", "import", "delete", "backup", - "restore", "recover", "purge"], "certificates": ["get", "list", "delete", "create", - "import", "update", "managecontacts", "getissuers", "listissuers", "setissuers", - "deleteissuers", "manageissuers", "recover", "purge"]}, "objectId": "00000000-0000-0000-0000-000000000000", - "tenantId": "00000000-0000-0000-0000-000000000000"}], "enableSoftDelete": true, - "sku": {"family": "A", "name": "premium"}, "enabledForDiskEncryption": true, - "tenantId": "00000000-0000-0000-0000-000000000000", "enabledForTemplateDeployment": - true, "enabledForDeployment": true}, "location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['964'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e1a37838-4afa-11e7-9197-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_certificate_recover_and_purge626b1626/providers/Microsoft.KeyVault/vaults/vault-626b1626?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_certificate_recover_and_purge626b1626/providers/Microsoft.KeyVault/vaults/vault-626b1626","name":"vault-626b1626","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"],"secrets":["get","list","set","delete","backup","restore","recover","purge"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"enableSoftDelete":true,"vaultUri":"https://vault-626b1626.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:58:25 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1198'] - x-ms-correlation-request-id: [d1645daf-035b-4062-99cb-78f6f27ac6cb] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] - x-ms-request-id: [d1645daf-035b-4062-99cb-78f6f27ac6cb] - x-ms-routing-request-id: ['WESTUS2:20170606T205826Z:d1645daf-035b-4062-99cb-78f6f27ac6cb'] - status: {code: 200, message: OK} -- request: - body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", - "pwd": "123", "policy": {"key_props": {"reuse_key": false, "exportable": true, - "key_size": 2048, "kty": "RSA"}, "secret_props": {"contentType": "application/x-pkcs12"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['3339'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e89c03cc-4afa-11e7-bddc-5065f34efe31] - method: POST - uri: https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/import?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","kid":"https://vault-626b1626.vault.azure.net/keys/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","sid":"https://vault-626b1626.vault.azure.net/secrets/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782717,"updated":1496782717,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782717,"updated":1496782717}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1822'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:58:37 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [71caf04d-9af5-4e31-b640-7929fd90ecf8] - status: {code: 200, message: OK} -- request: - body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", - "pwd": "123", "policy": {"key_props": {"reuse_key": false, "exportable": true, - "key_size": 2048, "kty": "RSA"}, "secret_props": {"contentType": "application/x-pkcs12"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['3339'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e9f7b088-4afa-11e7-adfc-5065f34efe31] - method: POST - uri: https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/import?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","kid":"https://vault-626b1626.vault.azure.net/keys/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","sid":"https://vault-626b1626.vault.azure.net/secrets/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782719,"updated":1496782719,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782719,"updated":1496782719}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1822'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:58:38 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [75f0bbc2-2595-47fd-b85f-663f93b7dd78] - status: {code: 200, message: OK} -- request: - body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", - "pwd": "123", "policy": {"key_props": {"reuse_key": false, "exportable": true, - "key_size": 2048, "kty": "RSA"}, "secret_props": {"contentType": "application/x-pkcs12"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['3339'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [eabfbff0-4afa-11e7-b5a0-5065f34efe31] - method: POST - uri: https://vault-626b1626.vault.azure.net/certificates/certprg0626b1626/import?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-626b1626.vault.azure.net/certificates/certprg0626b1626/616e4bcc0f364bf2b629b8ad95afaac3","kid":"https://vault-626b1626.vault.azure.net/keys/certprg0626b1626/616e4bcc0f364bf2b629b8ad95afaac3","sid":"https://vault-626b1626.vault.azure.net/secrets/certprg0626b1626/616e4bcc0f364bf2b629b8ad95afaac3","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782720,"updated":1496782720,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certprg0626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782720,"updated":1496782720}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1822'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:58:41 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [7402a500-9c1e-46b6-9258-7a593f7f5cf0] - status: {code: 200, message: OK} -- request: - body: '{"value": "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ", - "pwd": "123", "policy": {"key_props": {"reuse_key": false, "exportable": true, - "key_size": 2048, "kty": "RSA"}, "secret_props": {"contentType": "application/x-pkcs12"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['3339'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [eba83938-4afa-11e7-a4dd-5065f34efe31] - method: POST - uri: https://vault-626b1626.vault.azure.net/certificates/certprg1626b1626/import?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-626b1626.vault.azure.net/certificates/certprg1626b1626/3adac69ca910427c8fae2bb8589d2aa0","kid":"https://vault-626b1626.vault.azure.net/keys/certprg1626b1626/3adac69ca910427c8fae2bb8589d2aa0","sid":"https://vault-626b1626.vault.azure.net/secrets/certprg1626b1626/3adac69ca910427c8fae2bb8589d2aa0","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782722,"updated":1496782722,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certprg1626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782722,"updated":1496782722}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1822'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:58:42 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [26620b62-972d-45c3-b4db-70b606b051a5] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ec83bdd4-4afa-11e7-b371-5065f34efe31] - method: DELETE - uri: https://vault-626b1626.vault.azure.net/certificates/certprg0626b1626?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-626b1626.vault.azure.net/deletedcertificates/certprg0626b1626","deletedDate":1496782723,"scheduledPurgeDate":1504558723,"id":"https://vault-626b1626.vault.azure.net/certificates/certprg0626b1626/616e4bcc0f364bf2b629b8ad95afaac3","kid":"https://vault-626b1626.vault.azure.net/keys/certprg0626b1626/616e4bcc0f364bf2b629b8ad95afaac3","sid":"https://vault-626b1626.vault.azure.net/secrets/certprg0626b1626/616e4bcc0f364bf2b629b8ad95afaac3","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782720,"updated":1496782720,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certprg0626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782720,"updated":1496782720}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1970'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:58:43 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [a86665fb-7caf-42a0-ab7e-6c36a2e3cd20] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ed23c336-4afa-11e7-8407-5065f34efe31] - method: DELETE - uri: https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-626b1626.vault.azure.net/deletedcertificates/certrec0626b1626","deletedDate":1496782724,"scheduledPurgeDate":1504558724,"id":"https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","kid":"https://vault-626b1626.vault.azure.net/keys/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","sid":"https://vault-626b1626.vault.azure.net/secrets/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782717,"updated":1496782717,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782717,"updated":1496782717}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1970'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:58:44 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [38195253-a1c8-44cc-9fc2-79b1cfc70921] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [eddf9ef6-4afa-11e7-805a-5065f34efe31] - method: DELETE - uri: https://vault-626b1626.vault.azure.net/certificates/certprg1626b1626?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-626b1626.vault.azure.net/deletedcertificates/certprg1626b1626","deletedDate":1496782724,"scheduledPurgeDate":1504558724,"id":"https://vault-626b1626.vault.azure.net/certificates/certprg1626b1626/3adac69ca910427c8fae2bb8589d2aa0","kid":"https://vault-626b1626.vault.azure.net/keys/certprg1626b1626/3adac69ca910427c8fae2bb8589d2aa0","sid":"https://vault-626b1626.vault.azure.net/secrets/certprg1626b1626/3adac69ca910427c8fae2bb8589d2aa0","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782722,"updated":1496782722,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certprg1626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782722,"updated":1496782722}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1970'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:58:44 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [69a50654-d336-4dca-a385-b669ec1effc2] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ee756b10-4afa-11e7-933c-5065f34efe31] - method: DELETE - uri: https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-626b1626.vault.azure.net/deletedcertificates/certrec1626b1626","deletedDate":1496782726,"scheduledPurgeDate":1504558726,"id":"https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","kid":"https://vault-626b1626.vault.azure.net/keys/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","sid":"https://vault-626b1626.vault.azure.net/secrets/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782719,"updated":1496782719,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782719,"updated":1496782719}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1970'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:58:46 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [1cc3cd26-d6a4-4eb7-9c00-393570523baf] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [010f0d28-4afb-11e7-9eea-5065f34efe31] - method: GET - uri: https://vault-626b1626.vault.azure.net/deletedcertificates?api-version=2016-10-01 - response: - body: {string: '{"value":[{"recoveryId":"https://vault-626b1626.vault.azure.net/deletedcertificates/certprg0626b1626","deletedDate":1496782723,"scheduledPurgeDate":1504558723,"id":"https://vault-626b1626.vault.azure.net/certificates/certprg0626b1626","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782720,"updated":1496782720,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-626b1626.vault.azure.net/deletedcertificates/certprg1626b1626","deletedDate":1496782724,"scheduledPurgeDate":1504558724,"id":"https://vault-626b1626.vault.azure.net/certificates/certprg1626b1626","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782722,"updated":1496782722,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-626b1626.vault.azure.net/deletedcertificates/certrec0626b1626","deletedDate":1496782724,"scheduledPurgeDate":1504558724,"id":"https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782717,"updated":1496782717,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-626b1626.vault.azure.net/deletedcertificates/certrec1626b1626","deletedDate":1496782726,"scheduledPurgeDate":1504558726,"id":"https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782719,"updated":1496782719,"recoverylevel":"Recoverable+Purgeable"}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1659'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:59:17 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [b47c85b9-33d5-40aa-bf80-3f76b165900a] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [01be0cbe-4afb-11e7-9ad7-5065f34efe31] - method: POST - uri: https://vault-626b1626.vault.azure.net/deletedcertificates/certrec0626b1626/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","kid":"https://vault-626b1626.vault.azure.net/keys/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","sid":"https://vault-626b1626.vault.azure.net/secrets/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782717,"updated":1496782717,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782717,"updated":1496782717}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1822'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:59:19 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [04aa3194-9342-4865-82f9-844b3f4e5700] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [025797f6-4afb-11e7-bf95-5065f34efe31] - method: POST - uri: https://vault-626b1626.vault.azure.net/deletedcertificates/certrec1626b1626/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","kid":"https://vault-626b1626.vault.azure.net/keys/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","sid":"https://vault-626b1626.vault.azure.net/secrets/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782719,"updated":1496782719,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782719,"updated":1496782719}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1822'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:59:19 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [b15d9886-3347-4541-a8b0-f259158a0519] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [030bfb9a-4afb-11e7-a2b0-5065f34efe31] - method: DELETE - uri: https://vault-626b1626.vault.azure.net/deletedcertificates/certprg0626b1626?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 20:59:20 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [bcba5138-d23a-47bd-a92d-22be46aa9e64] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [03acf498-4afb-11e7-ab63-5065f34efe31] - method: DELETE - uri: https://vault-626b1626.vault.azure.net/deletedcertificates/certprg1626b1626?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 20:59:22 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [1f5f6b35-bc64-46aa-af6b-66cecebbab8b] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [16317ee2-4afb-11e7-a763-5065f34efe31] - method: GET - uri: https://vault-626b1626.vault.azure.net/deletedcertificates?api-version=2016-10-01 - response: - body: {string: '{"value":[],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:59:53 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [625b8265-fc97-4485-9c07-4dc07625cc6d] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [16bed740-4afb-11e7-a0d4-5065f34efe31] - method: GET - uri: https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","kid":"https://vault-626b1626.vault.azure.net/keys/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","sid":"https://vault-626b1626.vault.azure.net/secrets/certrec0626b1626/abb4e9ac775f4aa1a7ab3fb764c5cd4e","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782717,"updated":1496782717,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782717,"updated":1496782717}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1822'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:59:53 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [992885c2-36f9-435e-af2b-fc45afc98341] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [175b1eec-4afb-11e7-b684-5065f34efe31] - method: GET - uri: https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","kid":"https://vault-626b1626.vault.azure.net/keys/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","sid":"https://vault-626b1626.vault.azure.net/secrets/certrec1626b1626/d36fbdeb3c624f7295a5bb11bc39f8c0","x5t":"fLi3U52HunIVNXubkEnf8tP6Wbo","cer":"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496782719,"updated":1496782719,"recoverylevel":"Recoverable+Purgeable"},"policy":{"id":"https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/policy","key_props":{"exportable":true,"kty":"RSA","key_size":2048,"reuse_key":false},"secret_props":{"contentType":"application/x-pkcs12"},"x509_props":{"subject":"CN=KeyVaultTest","ekus":[],"key_usage":[],"validity_months":297,"basic_constraints":{"ca":false}},"lifetime_actions":[{"trigger":{"lifetime_percentage":80},"action":{"action_type":"EmailContacts"}}],"issuer":{"name":"Unknown"},"attributes":{"enabled":true,"created":1496782719,"updated":1496782719}}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1822'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 20:59:55 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [026973c5-a361-4ace-a8fe-9d2c2f638b1a] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [17de96f4-4afb-11e7-a572-5065f34efe31] - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_certificate_recover_and_purge626b1626/providers/Microsoft.KeyVault/vaults/vault-626b1626?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 20:59:55 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [a72f3899-9737-458d-bac2-cc18ca7e5f66] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1198'] - x-ms-request-id: [a72f3899-9737-458d-bac2-cc18ca7e5f66] - x-ms-routing-request-id: ['WESTUS2:20170606T205956Z:a72f3899-9737-458d-bac2-cc18ca7e5f66'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1e75b378-4afb-11e7-8aec-5065f34efe31] - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-626b1626/purge?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 21:00:06 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzc5NjA3NTQwNDczMXw3MUI4NDEwM0IxNDU0QTNDOUFGMDdDRUQ2OEIyNkU4RQ?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [5944bf0a-d00b-4858-86f2-9990f41e32ac] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] - x-ms-request-id: [5944bf0a-d00b-4858-86f2-9990f41e32ac] - x-ms-routing-request-id: ['WESTUS2:20170606T210007Z:5944bf0a-d00b-4858-86f2-9990f41e32ac'] - status: {code: 202, message: Accepted} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_iterate_empty_list_commands.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_iterate_empty_list_commands.yaml deleted file mode 100644 index 06b291c31d6c..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_iterate_empty_list_commands.yaml +++ /dev/null @@ -1,343 +0,0 @@ -interactions: -- request: - body: '{"location": "westus", "properties": {"enabledForDeployment": true, "accessPolicies": - [{"permissions": {"certificates": ["get", "list", "delete", "create", "import", - "update", "managecontacts", "getissuers", "listissuers", "setissuers", "deleteissuers", - "manageissuers", "recover", "purge"], "secrets": ["get", "list", "set", "delete", - "backup", "restore", "recover", "purge"], "keys": ["encrypt", "decrypt", "wrapKey", - "unwrapKey", "sign", "verify", "get", "list", "create", "update", "import", - "delete", "backup", "restore", "recover", "purge"], "storage": ["get", "list", - "delete", "set", "update", "regeneratekey", "setsas", "listsas", "getsas", "deletesas"]}, - "tenantId": "00000000-0000-0000-0000-000000000000", "objectId": "00000000-0000-0000-0000-000000000000"}], - "tenantId": "00000000-0000-0000-0000-000000000000", "enabledForTemplateDeployment": - true, "enabledForDiskEncryption": true, "sku": {"family": "A", "name": "premium"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['938'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [80bee00c-4bac-11e7-b321-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_iterate_empty_list_commands397e1582/providers/Microsoft.KeyVault/vaults/vault-397e1582?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_iterate_empty_list_commands397e1582/providers/Microsoft.KeyVault/vaults/vault-397e1582","name":"vault-397e1582","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"],"secrets":["get","list","set","delete","backup","restore","recover","purge"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"vaultUri":"https://vault-397e1582.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 07 Jun 2017 18:09:53 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1172'] - x-ms-correlation-request-id: [dcbd7e6d-6640-47a7-a778-632a975d2069] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] - x-ms-request-id: [dcbd7e6d-6640-47a7-a778-632a975d2069] - x-ms-routing-request-id: ['WESTUS:20170607T180954Z:dcbd7e6d-6640-47a7-a778-632a975d2069'] - status: {code: 200, message: OK} -- request: - body: '{"location": "westus", "properties": {"enabledForDeployment": true, "accessPolicies": - [{"objectId": "00000000-0000-0000-0000-000000000000", "tenantId": "00000000-0000-0000-0000-000000000000", - "permissions": {"secrets": ["get", "list", "set", "delete", "backup", "restore", - "recover", "purge"], "certificates": ["get", "list", "delete", "create", "import", - "update", "managecontacts", "getissuers", "listissuers", "setissuers", "deleteissuers", - "manageissuers", "recover", "purge"], "keys": ["encrypt", "decrypt", "wrapKey", - "unwrapKey", "sign", "verify", "get", "list", "create", "update", "import", - "delete", "backup", "restore", "recover", "purge"], "storage": ["get", "list", - "delete", "set", "update", "regeneratekey", "setsas", "listsas", "getsas", "deletesas"]}}], - "enabledForDiskEncryption": true, "enabledForTemplateDeployment": true, "tenantId": - "00000000-0000-0000-0000-000000000000", "sku": {"name": "premium", "family": - "A"}}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['938'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d2914170-4bac-11e7-92a0-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_iterate_empty_list_commands397e1582/providers/Microsoft.KeyVault/vaults/vault-397e1582?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_iterate_empty_list_commands397e1582/providers/Microsoft.KeyVault/vaults/vault-397e1582","name":"vault-397e1582","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"secrets":["get","list","set","delete","backup","restore","recover","purge"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"vaultUri":"https://vault-397e1582.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 07 Jun 2017 18:12:10 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1172'] - x-ms-correlation-request-id: [a5d5c1e7-1def-4f2c-b05b-0f9703a73348] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1198'] - x-ms-request-id: [a5d5c1e7-1def-4f2c-b05b-0f9703a73348] - x-ms-routing-request-id: ['WESTUS:20170607T181211Z:a5d5c1e7-1def-4f2c-b05b-0f9703a73348'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d97fb2b4-4bac-11e7-8894-5065f34efe31] - method: GET - uri: https://vault-397e1582.vault.azure.net/certificates?api-version=2016-10-01 - response: - body: {string: '{"value":null,"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['30'] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 07 Jun 2017 18:12:22 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [f675e0d0-ca3b-4e27-8da9-1d169e363c6e] - status: {code: 200, message: OK} -- request: - body: '{"properties": {"accessPolicies": [{"objectId": "00000000-0000-0000-0000-000000000000", - "permissions": {"storage": ["get", "list", "delete", "set", "update", "regeneratekey", - "setsas", "listsas", "getsas", "deletesas"], "keys": ["encrypt", "decrypt", - "wrapKey", "unwrapKey", "sign", "verify", "get", "list", "create", "update", - "import", "delete", "backup", "restore", "recover", "purge"], "secrets": ["get", - "list", "set", "delete", "backup", "restore", "recover", "purge"], "certificates": - ["get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers", - "listissuers", "setissuers", "deleteissuers", "manageissuers", "recover", "purge"]}, - "tenantId": "00000000-0000-0000-0000-000000000000"}], "enabledForDeployment": - true, "enabledForDiskEncryption": true, "enabledForTemplateDeployment": true, - "sku": {"name": "premium", "family": "A"}, "tenantId": "00000000-0000-0000-0000-000000000000"}, - "location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['938'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4be14828-4bad-11e7-96ea-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_iterate_empty_list_commands397e1582/providers/Microsoft.KeyVault/vaults/vault-397e1582?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_iterate_empty_list_commands397e1582/providers/Microsoft.KeyVault/vaults/vault-397e1582","name":"vault-397e1582","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"secrets":["get","list","set","delete","backup","restore","recover","purge"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"vaultUri":"https://vault-397e1582.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 07 Jun 2017 18:15:34 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1172'] - x-ms-correlation-request-id: [8189221a-65e8-4015-b18c-a4de7830455a] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1198'] - x-ms-request-id: [8189221a-65e8-4015-b18c-a4de7830455a] - x-ms-routing-request-id: ['WESTUS:20170607T181535Z:8189221a-65e8-4015-b18c-a4de7830455a'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [52ffa810-4bad-11e7-b335-5065f34efe31] - method: GET - uri: https://vault-397e1582.vault.azure.net/keys?api-version=2016-10-01 - response: - body: {string: '{"value":null,"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['30'] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 07 Jun 2017 18:15:44 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5572bbd5-0527-43a0-8205-dcb70239ec14] - status: {code: 200, message: OK} -- request: - body: '{"location": "westus", "properties": {"enabledForTemplateDeployment": true, - "accessPolicies": [{"tenantId": "00000000-0000-0000-0000-000000000000", "objectId": - "00000000-0000-0000-0000-000000000000", "permissions": {"secrets": ["get", "list", - "set", "delete", "backup", "restore", "recover", "purge"], "keys": ["encrypt", - "decrypt", "wrapKey", "unwrapKey", "sign", "verify", "get", "list", "create", - "update", "import", "delete", "backup", "restore", "recover", "purge"], "certificates": - ["get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers", - "listissuers", "setissuers", "deleteissuers", "manageissuers", "recover", "purge"], - "storage": ["get", "list", "delete", "set", "update", "regeneratekey", "setsas", - "listsas", "getsas", "deletesas"]}}], "enabledForDeployment": true, "enabledForDiskEncryption": - true, "sku": {"name": "premium", "family": "A"}, "tenantId": "00000000-0000-0000-0000-000000000000"}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['938'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [b67af490-4bb0-11e7-a7fb-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_iterate_empty_list_commands397e1582/providers/Microsoft.KeyVault/vaults/vault-397e1582?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_iterate_empty_list_commands397e1582/providers/Microsoft.KeyVault/vaults/vault-397e1582","name":"vault-397e1582","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"secrets":["get","list","set","delete","backup","restore","recover","purge"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"vaultUri":"https://vault-397e1582.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 07 Jun 2017 18:40:01 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1172'] - x-ms-correlation-request-id: [cae171b1-246f-4264-9ceb-69c4d86de204] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] - x-ms-request-id: [cae171b1-246f-4264-9ceb-69c4d86de204] - x-ms-routing-request-id: ['WESTUS2:20170607T184002Z:cae171b1-246f-4264-9ceb-69c4d86de204'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c31f402e-4bb0-11e7-8551-5065f34efe31] - method: GET - uri: https://vault-397e1582.vault.azure.net/keys?api-version=2016-10-01 - response: - body: {string: '{"value":null,"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['30'] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 07 Jun 2017 18:40:23 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [dcd2390f-12cf-4943-b7de-48a1e910fdd8] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [cfc77aee-4bb0-11e7-bfcc-5065f34efe31] - method: GET - uri: https://vault-397e1582.vault.azure.net/certificates?api-version=2016-10-01 - response: - body: {string: '{"value":null,"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['30'] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 07 Jun 2017 18:40:43 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [d905dc3c-adaa-45df-820f-572bebc1d8e6] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d1b2d294-4bb0-11e7-b9f0-5065f34efe31] - method: GET - uri: https://vault-397e1582.vault.azure.net/secrets?api-version=2016-10-01 - response: - body: {string: '{"value":null,"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['30'] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 07 Jun 2017 18:40:47 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [ffab5135-4132-48e1-97c6-6a0494f3bf01] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_backup_and_restore.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_key_backup_and_restore.yaml deleted file mode 100644 index fb7fec479880..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_backup_and_restore.yaml +++ /dev/null @@ -1,473 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [985f44c0-4ad6-11e7-a71f-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:39 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [2aacdf10-71b5-42e4-b096-0b9810ec51a9] - x-ms-ratelimit-remaining-subscription-writes: ['1186'] - x-ms-request-id: [2aacdf10-71b5-42e4-b096-0b9810ec51a9] - x-ms-routing-request-id: ['WESTUS2:20170606T163840Z:2aacdf10-71b5-42e4-b096-0b9810ec51a9'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [91e99b1a-4ad6-11e7-9729-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzYzOTA5ODgyMjU3MXw1MTg1MTdEOTQ4Mzk0MUFBQjc2NzVFRTAzNDM1OTc3OQ?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 16:38:28Z","status":"NotStarted"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['64'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:39 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzYzOTA5ODgyMjU3MXw1MTg1MTdEOTQ4Mzk0MUFBQjc2NzVFRTAzNDM1OTc3OQ?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [2b02aa37-ba6a-48d0-aaea-c7226924e5ea] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14999'] - x-ms-request-id: [2b02aa37-ba6a-48d0-aaea-c7226924e5ea] - x-ms-routing-request-id: ['WESTUS2:20170606T163840Z:2b02aa37-ba6a-48d0-aaea-c7226924e5ea'] - status: {code: 202, message: Accepted} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [989d656c-4ad6-11e7-a21e-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/f3262e3803ae4c4e8645545f33c11136","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"wKb3gRM-9I2lRjC067HNDmPFCIBfJLxpSj8kSL_BM-vYdq8K-au0x_D_25qw0APmlOYwRrT0yYXC_BvqHymN9Z1Qul5KxcYQR8BhicAy8zwplbwle0sbcl_kfb1gEml2mNGR4_wN3UVPfcMz-sLKytaq4YaRUOlY95dqdh95l81BU1SfLpfc3ikImkazOzGxx7RCh-ltN6rEVYfghHMkoS26VxjN19R6LJ9IcJyb5plWPYRue0Ph97onrMDvcRcKJQL-dIhlDNpCnBPMIH8UkPQH8ofFKtJKKsHKFQaEYkF6XYBzUQ1muJuYyhsJZYRjNhAcKnjxamC582FCDy-c9w","e":"AQAB"},"attributes":{"enabled":true,"created":1496767121,"updated":1496767121,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['656'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:41 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [711144ba-0aef-43e3-b144-3e7fbc9488ee] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [998df786-4ad6-11e7-a7c1-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/backup?api-version=2016-10-01 - response: - body: {string: '{"value":"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLk1rWHJVZlhFNFFxb3psOEZPd1RqdWhpWU02QnA3MzZhamFBMmFycUgwNUthSTU4ZmQ3WEVrbkl4M3BCUVZzTXpyaHYzTVRSTWtEdWtyQ2JoempmR2V2a0dIRmo3NVhTQmU5bUxvaXBuMWRhOFJ0Y0NRTW5hdzV0WEhZLTdhWEtKRlhWSVNodWVTd05YaHZaQkVZN3JlenRWLUpfMFgwVXlUVHB5NklsTzc0N1VCRzl1SjQtU0twczJxaFpwNkQ3WkZ5OEpzY2pGMk1kVlZzOS1oM2VnQWxUN3pmQnZmUzVHblZYSGEzZXV2WjJTOXFnR2UzVDNGdzhKWTQ0WnJmd1dEOF93M1pmaGFPdUpMRzFpQ2ZXZmd2a083a2xtbW14U25Iby1leWIyam1KZXpQS2ZaWkx4NXhKUU9KS2FXQ1pwNVBjQm1SaVp1ZENUUTk4VHoySkIzUS54SGdOVGJ6aEJGcUVXSjZIYm4yZ09RLktXU09XTzFrSVp5WnFfTWV2aEJROTBpMWp3ZmtiUC1PT0ZmN1hhQXZTeFFoN1l1bUh0b1RCakJZVGtBNmV0SzJwRmJaNUczN0JCMTBSR0pDTjBoTjFjcDhLMWJMb2VsQUYxaEF4b0M1Z2NEc0Z3eXlLdUVEWXRiOElMU0tFbEg5VkVnblVVM3h4M2JlMVZVT0hQWTNyY1dOOTVwZVA5dkhGUGdkTmxNdnVLZFVhU09zZTdzYzJSMzlzMmZ6TGJjTTI2QW9LUTJJMVNiM19rVUlPMmV6VDhWMEJ6WVZhcVlScHVHQ21TQ1VjMEQwU1lWWElRNi01M3UzRWlxckJ1WkR5a21MZU5uUG1BSlJUVTJMWS1IZzNCNGM3TGhDcmxyRWt5QmpvRHZ5NjROdjYyY1BOUDNLUGFoNEtwZjlHY2JpdTM2UnJKc0pRUGN3OWJLXzZCUC0yVFVTLXdEUHlUZExHSW5GQW5kRnRaQV9VcjJmWF9WbmNERkhwMmF5aDhyd3I0bU9rMTg4YXNXQWR0ZEhqWUlUVjRUbGFtRW5LSEUzcExUXy1pSDRxZC1vWUhabkd0WEZ2Wkk4TEtpSXR2VlRzbi1Ec2lLZTZGaHYydWM2Ym9YQ1ZrdVZxS0pkZlI2cllzU3NDM3FsQlBITG10dnVGRm5BcFJheGxkVmhPb2JYTWRyZG01UzRoTUZta1hqcjVBU3NvVFRMYzJmZTZTNnVXUmJwYjZ1bnZaWlpNMHM4YXhJZ0hMbGhJRnV0SThQSEx5bXRlMTZmb0NydXB3Z080TXdyUzk4bERHbmg1SlVxU3ZxY1F0OERzQlRTWTRMVzhCclgteU9fb0I4MjB4YVM0S093WUhENW0yVGZfV2xwRlhBOVlzSngxR3dFWUtPWU1jaG0yYXhFcndiVVl5QW5wNjRURGI0cGRtT2hyalN2VTB6M1dPYmJUV3NmV1BWMGhoUU9DQXZ0UHpvMDlxYXJYYzgydDBWN2ItMFBHeDR3VHVtcXE5YXdpY3NCYm5VMWlFQzVQZ0lNeF96OXczeVRicEkweTk2cWFsSGJ4RXd5UlYyUFFWY01ua252by1Qb3hOMVAwTndfSE55V3ljdkhjX0xMVF9rMnJ6dnRRdHYzZFdlNDJteFIwMVRKV1RNLUlJTDg1RjY2WnZOYmdiclVwNmdSTW5mblZuVDZvTFBXLUVITEVBcGZBTUFJU3Y4aFE3blN3bjNjejZJa2JaTmlGQnRpVGNrekM2aFdFNUxnMmV0QnFoSVFhdlpQZW91bzdZYVRaWXdKYldsZ1Q5clIzY0JFR1loN2p3cjg5aExvWGpwZWVpWmV2OFpOMnVXal9oeXpmWm5vN2pPNzFEeUp3LVBxYTRFT1dNemQ3WnJBOE14LVo5eTNNeUJCUk5aazFXN3JRbG5zOVZPaEllMGgxMnVacXJOc09DWEw1UUFZNmVQVk1FWXE5UWNvYWg1bVFZV002NGJoX0k2aEJXNzFMRnVxYjNIU2tMUWpjZ1dWVk81aF9POVg3STJyRUs1VkpyQ2FvSWVNcjIwV19BZGFzc2JOWjhBcHBCMUg1REttVzFTZjYzMVo1Znd2YUE2TFlLZlR3UjdnaXhGYngxSE5BMTgwSHJXUWhqYm5ldzhrYnZXZzFoM2dMMUtDdG0xNnZ6LUhXeWJYQU1JUHBnVUdGVkM0a3ZMZy15WFZ3WVVJQm9PNzFXRjZrZF8zelh3THBiNEFxSl9UYVJ0ZVpiV0RfVkFNWUJBMWp4SllpaFhoeFJQVjIxdVhfYTlRYm1XSHNDMUZ5VFRpdFZ1LVRnZHVsOHBpejllcVZtXy0xRk8xVFNNS04tM0c1QTV1Skt4UHE3OWtNNnV5NlJZbzBvMHVqeENaRE56bDJhNnBxRUZQMkhWcFV6eHV6SGtvTEowc3pDZGlyVXZnTGw2NklHNml5Q1RDc2FBamtkcE5GMURfUVNuY094VFpySl9xSnAtTERnbGF6dWlzYjdzV216cjBWSkV3amZ0ODhXaURZTnFGaDB0Tkw2cDBwTUd0RHZkaE5KcUlFX1pxNG9fUUlSNUNWdERyQTFIczdzbjJPelI3aUI2dGc3eEhJaHFDckZ1OEVjWWV1SHUzX3BibHhvXy1QQUZUQVNzUkRaVGxmZDFGLTZpYlZxbXYyTEVOQXF5aHFXTWxNajBLWjg5OHVKTkIycDNZZEl5TmdFTWRvSF9RY0xuV05HcXNoQm91aU9ldFloeEtwMnduSHpXSVNTWWpmN2NVcDhpNm5icUhzLXo2UXRQZzZySThBejZZSHBFSlQ5RmpucW9nT0hYNkZBbXBYV25qMC03VUVDbDJlc2tvdll2cTE4enhTYnAxaTI1X2NWbE1vRW5IZGs2UFdmTWpuUzgtc21nbEtkREdhT0Jkc2RlSU5iVmFlemlCYl9GRFloa3lVYi0wclJ3TENDOWV0SnRWYlFPbTY1UjNiVkxFVWJOUW5wYk9DZGk5N0cwU1k2Z1IzTjkxbmg5d2xYdGQ2ZV9vTlljOWxwU25SR0ctck5Hb0hfbmRPU2tHNWlRTmR3d3Q4WHM5bE5BT2ZWVm9FazVUREVnWEE4dXV4eVpTdlFlazZ5NTM3T05WcVhmdGZRT2hLWFFLalF3a1kwVEo3ZlRGWmszczk3YmhjbVY5UUZIOHBGczd0UXVsb1NRSVdlLVEtNVdrTjdkZk5KSVRXYkJEU3pSZmxHd2EzM3lQN1ZLTnZBeW5vT2o1NUwwZDBnbFJxTjZhR2FBUk1mUXp6UVlmd1dHNFlRRTFQbnlISmFvbTBla2dHWm5Bd2VPNTByc1lSQldDUm91YnZ0QUh4NFdiTzAxYm9kUlU4ZFpLSGJqQWJkOHlxZkZmYVU4QzJ3dHZQSG5qMW8yUnYwOHBKTTJaZXdRaFEtcVIwRXpDeVp3dmNRLW9COFlEcU8weHE1eWZTeWxWb0ZTVldMMEhyNmg3blJyV3lCN0I5dWV0aFlqZ3dfeWJuS0dLem51QmgzYXI3cTBNd1RHTzlfc0hlaXZqamFtTFg0X1ZwWjZIcEVMaXFKdGhES045S081dlVjYTVZLTVaY05WcGs1UFJvWkVUdVJXVVl1TGZHdWFXbmpMcXIwcFFSbnVRUTlfOEp0Q0VmdEc2dHdvcW1KZS1uSDVSWU5ZM3J2amdrdmpDOGpmQjFSMFBWa21NVkgxdGUtRnNBRDYwOTRBS0dwVmhnbC1oMU1RcEpDTGVxNXVsYVBhVEpkZmVYR01VUjAzMXpablItY1J1ZnZKekVJaVpnUjJGcTc1SU5NaTZyejNtY3kzX3E1YmZQdDRBejROVS1Va0VxV0FwSjh4dF9XeUtBWGRoZklJbUxxZVdVdVdGdzBpTXd5am1fVkdjd09BcGVsOVNsZ21NWkpjX2JIcmI2SEVOS2ZMMHRraHM5S2NhdUVaQWNzOWM5MHBtRFA1S0phQWt4SDhlaVNrY0ZPY25NN1J5OEk4czU4aVBGcUNUSDJOX0ZhRFQ5dU50V0Y2dE95cmNDX1l0Z2xhc1pfZUNfbDdVT3ZVdzc0Z0FEazlnQjV3X1FGbmZSaUxld2NaaHFVVV92VjUteVNmb1FETkg0ZjFlMjVRTXFpeGpHaWEwTFBkV0Nyb1o0Zy1zOExSa21sak9RVzBfZWI4SFJYUmxENmZ2SFBtSm01Z3VBdFlqWlZOOUp5WHZVWXZvZVZhUzFFSlR3OTkxMldKQ3d2VTMwMnhJSjVnRU1VMFNGb0lOM0taQkJTRjIwZXk4MjRiczlXa2tBSko3T01VNTVwR1hKb3JkM1Q4MXFhRFFLNWR0aWxUb3pabk5YWUFjWnhMSFVadEpVU2lvaWlVMGU0ZGtCMzJiR3IzQzk1VXNOakhJMmdudGRSOWZ1V3R2cVlEbWFJcEkyWVIwamNGZl9oTGFxR2dPeTVkQWVkYVBmM3lTcFp6WmNkSjhxNWVGQVNjSXlQaTN5bDNXVlczWlFtaVppbWxlZ0dqX2U3REpFOXdGckFrTU1ZSEpsRzU1QzRIZV83SUhveHkyOURRdzRMNVBrMFJXM1U0OGVoX2l0Y3ZONGYxWkZwaHpJQ0F3UU9iZkVpYVJGWjhiTFZxYmdUdVdBaTduU2tXU2NiN25LOXg3a3hjNkRrbUN2blV3OGRsd2hDazZTYnZFYzluTFRUcUJmTG9YcktoazNnV1JYY2hTcExxZU9wREd6dEpUbF8xWklmSDBaVFFaREduLVhGQzJhaHdXRzJBQVVIWU1PU09CMUlQWTBwZXFRMFd5SFBLdTRQTmJvS0tPeHgxdzZTM2FyM0MtbVdDZXVWZ2hEVkt6VzhValFpY1NsaU81UGNUUElYd3R4QnotN3F0TkZ2cHBGQnYxVTVneXd1VlhxbkExdDdxZjl6X0o2bHFrZml3RzdRSUh6dlRyOXNUSm9jZlhVSWVEbko1QnRFc2djUG1EbWRNTWtKSnBjdzBSZGw2am9xRzF2dXU1T1RQVXdiU0ZUbnNoTmlDQ045bU5SZ1hLNFY0Y05fZzFXUFJLclR6d1N2NWRoSk1yUC1UVHA4NkJfYzRKa3UwRDJlMk5HSkZ1dXFPMUFtRnd3QkxPVE5USmw0SmhnRlBaaDBaU1FKcE82alZxeUhCSTlGMkJVdnBCaGs4ZVE1WklTWFVaNlJhcmlBNnJYdURGeE0tbDZVMFZlelFmamlGek5PRlkyWVhvbXRraGk2ZElYX2NwaGtpNy11M0pBMkRMS1hjOEw5a3F4RUtLWklyR1VvUm1Za1JxcW5oeHh2SlNHV1o5MlN3NjFhTk9rencwQ3pIUm5FUUpIR2hxYV9jT2xycHJMSUE0QkZQU04zeDhXWjgxWWUwN3RWNzBvUWxPUUZWWFlkSkpCZUc3ODh3RWRQWm1odVM5cURLTDFyUFZtb2dWOFBvM3ZpcGFZZkMxQ291d240MHRxbFNockdoRUpyVmpaN1U1V01faDV0bExybFBlT3lZSmxtOFRvN05CQUxpVUtvR3Bva0xvZTR3ZngxcWhueFhEc1Vjb0NlWkF2X25EaG5zUXNtR3dSMEJYeWNGMGhrdUZwYVVQa1dySVRnRkFIMG1SQ3NKNWxvc3pKZC02aDl4VUQ4U0daR2Z4cnBTcmxJQjlqeDV5QlZOcndzMXRTcmpDZ2ZGYm1DeVJkZE1yeFoxQ3RhSlpvdGpQekJjcUMtMnNuX09ia1hYUVo1dnU5MmppSjNUcDR5N1Fhb2EwRFAyTTJRM2hPRDR4MnUxU0cxZVVnNnVDejByQnVCMlVWN1FYVE1nOU1VTld3UjA4TURYczlVNjBZSFVxbjBlNEIyLWRLMVdhZDFSbm1yel95a2ptelEtaHlsSEpaaUZNVldKTFNseWVVU2VkbW96amZ2eGRXSks5cGRGN1FQWE8zLTBINVhHZGpwS201MTRmN2VuZDZ2YkoyNTNlOV9IZlhEQnpJZ3lYS0lmajZtRUFxcktXR1pCekhNcm1QcTJWXzVmMEQ0cGh2MktnYVhlSjBLRmw3bFBvcE03NldYcVM0OXctYkIycHVnQ203X1ZsMUdrRXVwLUhoVDdCMTlsNUpGS1V4d0dGdVJncWhETmNqZWxKc2N3eXJtUW95X2lfVU9pSmM1QkVGelZkR25JSmlPRmp6OGhGQzNOZ2RUZnNSNHFZblUxcVJ2ZDlXcHo4UV9tQXBwVnBpRWg4eUw2V3FjVDhBOVNVbWphRjFGRWFQdy0tZUdRdERPNEs0UnNMVHhBbExjR0s4NlNFeDViQnU4WjBrdTFEM1U4VmJFVDlwT3BPdXBsOF9DYVNxVTVQOTQwTi1ZRFIxUkx4SUQ1ZDF6bl9LQ2RjVHJRMjVmTW0zWkJCdlVsTVdza09ZcG90TjlpN1U0YnZyX2lEQkJsdUtzTTRhV1VSMTlDQk9sNDlXWEprekh6dUxQb3Q3aF9CUDM4ZlBobEJUbkpNanJUeU1tQVBFeWV1NTJXbU5abFg0alNQYlRLZ09lNXlBWWhyY2szb0NXTWE2N2xVekdGVWEwWVNCc3ZveTJ1aTFzN0lJTmZnblZTZTJ0WGE3M2VhSlJTRVRZVTZxMmZzd0p5Q0hlNnhid3JySlF0N21XOUh1TGdGQTV6bWJXWmpjTlcwbTRQQmJBcmRyOFE2Uk15bFhwaFMzemlTcGlsVWxUTDd3R1dJeGlyMkl5eHlpWXJVNHY0QnZSV0w5N2RhejlkTkVFMjMwcEd6VXVwcVpKUnR6WXZvMWF2UzdST2tNRHJmMVppZ1RJUGJMQnIxdmQ1X01mNE1IV2h4bDRwNEFHdVlrUWVXRlpVZ3pNNW1lU3p3Y0tyaUpZdnB2ZHcwSG9tUUF5WHFDRXlxWVNqd1hxelZCd2RjcllXR20zTDFEWFAyU2l2eFBGZ0ppbUM0QTNRckllV2dNdy1Nc05vREhHcVF1VTBTTHFjOHNacm51MjZ2Nkx1UVdoQV84NFRnR1g0YXE4djJFaW9nMXh4eV9ILTFjTGJob2JWQmc2aHplODFTbFRsOGNrVGRDai1PS2gwS19hdk1yNXo4d2tHaXJUcFFnbUdFeDlRNnFJTHJ2NUJaR0dPLXB6RG1mLUxxWmtMWEtfRzRzUzFWZkpvWTBURmRKVGhEWnROYURJR3RDTmdPZWZSRnYzQlVoZlp5Rnc1WGFkMU1jSHoxRlBuQ0J5S2pPcW9UcnVEZm14eVZ1QkhPdFpkMG9qOGZiU3p2LTUxbHhKYnRNM0xxQUEteGJEVG13ZVQ2WGRqdHV3ME5wakRZV3YxVFRhRzBXbXRzMzhVa3J5N1RJWjc5QVZEdElfR1JleEIyZ3dOSGdfRHpTQWdxX1d2UmdJSk12RmcwN2F6QkxiNnZNaEUwSFpLbzE0SldiX2pJZXJTTm10VWNHNk9UT2JJcUdWQzVkRy1BbHZLYVlLWUpoRlJrU3dNbmNYdWpBR3NwUHA2SE5UNWtrbndpdU1DcHkyVUJiVjFuUFBPdUc0Z2hvR3hrOGpxM1RsLTZ4Z09aWWVUUTRKcWg5b2lpLUExX2lpQ2pscFM1U2RBQ0pTY0ZqdHMwLVV6Y0VQa0x1dFBfbi1zTlU3MDBMTUhlTDJ3d1JNMnNlb2JJSU9zejBEcTRiTzlJNmdhT00teTYtWllGUFo5LWxlTnIxTUo1U1lSb3ZzUTZ3UHlZeEs0NC1yLVlpUzBHdzAyZndhbl9KS2JyQ241Q05NbWNPeHB4a3lWcDdWRERyX2pNZjg3ZE1TN0tzaTFUWUl6bXdWVW94YmlfZXl4WUJqTnhxd3VQQnVOMGMxMU9teEpVRmhCSXJIVnpCdkcydFVKTEd0MnNSY0tJX3JkZHRVSnBqc2hEbDVyX2R6YnZNNlJiUG5td0c2aFhXY1dJTkxycWc1RWJqdjFDLW5kZGNJVzFWd25LcDRQbmxVT1FmUmIzYlZ2aXphQW1la00tOTEwYndZMmxuRXlFX3V6NkNPTG51RUUzRnRzUlI5RU5VVHBqenk4a1lIaFl0cUM1UHE4dmkwTGQ4N0l0VGRmbW1sWDAyZ1VfaGJDZXgxQ0k1WE11X0xyZS0tSU9vcHoxUW41aTd2LTRsVk9Sc2J0LVhmMm01MUtjeG5RTTdWMXlsdVlzazhwOXNIek1rX2NOVXV3TEU0ZF9NeGxEWkRPaGNaQUhpLUh4SURaMkJMTXgxN2V3YVZ6OUJ0anhlV0k4THBUcUZlWlYxVDBGZm1qZXFBS3FsUFFBbWd0MEgyR1RsMWJwY01Va1F6MUhteDhFeTVpanpYN1NPa2h0eEt2YmQxVzZKSmxZb0VIMzQyTTk0NnFrTHZnUVo0LVJiLXpXSE1BZ2JvV0JHQV9xVjZZTzVibjctTFZRV05uRnJQUTJKd1pHQVNmUDVWaTBYUWs0VGVrWVV4R2tsd2VzSy1NYlNFU2RBaEJQY3J2N3VBQUIyUThRV21iemNNRV9DdTZZNldPd0tnNW8xc2o4V3hGNnpMZko0M3VZeERISjVYTVNfQXBJM1ozaDI1YlVMQVFkc09IYncyaHZxY2hHNkUwVWdyLTFzNWtrQ0VrVzdYN29ad3NELW1Hd2lreDBqVlVtSmQ0RHpjaU5BMVpmQkZCdmlUeldOWDdKQ3VaQ1A0dDZKLUt3cVRjbmRLaXFzQ181Z21qaE1RRUhRUkxFbGM5ckwtRll2dkpKOEFvWkwtMjd5ZlNaQm1rMFJPMTBiekU0WTNpai1McUo3c3g4SkhESEZvVHRfQ0p3eTJFYVFhendzU1B2N0dBemRPZE9TaTBXSW9neE1HMmFXSnM5SnhaZjZuXy1oT3Bmalk2a0pWbmNEWmtvcGg0a0o5VXBFX0Y4MkZpX3hBeWJLQWtGVC1ya1gxNUlpLXFwZlpuNjd1QV9WOTI4NFhfTkJXVF9JT25rNFpudlFTeEZDVEZ6VUxVaW12elJMVWtBSDdlMTJrQUoyNThVYlJFS21Bc2FZRTRUV19UdTFTSlRSdDlDZEQ1VldtX2ZrNVZZNEh3TnlpU01EeHptSF94YVhsR3JBMDlYZUxSN2VhN2lqalhjSDdXN2szZ2J3OEVzTThWbFhrMjdoZ0h1TWxkS1BnMWJ2d1hLc3UtMXUxNlJWdzhHZFdycG41WEwxbm52MzJPWnk0enFGWnlYS3lPMzlfTVY4eDdFZklvQjh0alpPYWFCSERQemtTdU5SMWxTWmlCSUhFQUtodmpDdy0tUG5OS3dtS0d5QkNiVjlQZXF6S0EzQWQ5SDliQnZxOXA2N1V2ZnZLUnR6OF9lTjdpSEdGS3ZVRk9uVVVPSlhER1hVWk43YlhmSndEU3dCWEV5VEZRU3BSYjExeTVyR1NaZFVBT1VHX1VEb2V4T1l5X2NENjdwdXZuY2xlNThaX3FzRDRvelBfNkloYUY5RUdNMmE2R2xEeUhvOVktOTJ5QlYtTHNjZjYtaUFvZWhVYml0Njd3Uzh3aFUzYjk4b3JMVGs2YjF2MW1SMGFKQTB3NWdoTTF2Y3J2UlJzNGxjdUVpelRfeENldHBWbUZycU5mZVBybTlZUzhLdno5cEppaGhnYlVabTYzZUtvSFBuc3h4dDJKaW81UElXZGEzdnFsaTc2NF96T3NHQzR6Z0k2T282NUoyeTJMSzJOeUQ1TEZVWU9DUndLWGxKTlJhc3NWYl96LWYzN0QtSVdRMEZyZkRReE9ON1lkNE5jSVdsSVpaOG5HcG13ZnQ0MXU4RHc2eWE0Rkx2QzU3WFJOemQtdlN2T3lINHQxaWd3YkZZZEZwazlMRlk5QV9qRFhkVDcwdkppS3dYUW9nRURXVGhNWHYxVkdHczFYWTJoRms3NGhrNDliVG55TXpxV3RBY2xjcVQyQi1ISk12bWpxNXdYTFB5WEo1b2FMWk1PVHg4a0w3NjdtdVBMTWU4SW43cTFZa0JRQnBxa25pNXU1bmlDNUhvRXY3N0MxaVdPX3ZsV3dpWXRtX3F1TjE3ZjFtLUpWOTdJWWdodm1US1VaWFBhZmhDTTV3X0tVQWlrWW0zamg5TzFuM0Q3WEpucFBrWDI2RDhoRmtsYjhnZ1hIeVZKNW01U2tpZzlXNTBPSVhyanVZMHcwRWhYMEQxYmpJbGxpRUl5TGswUlNycm8tZjlFNGVXMU1GaHJGaXpvSGtSV2lZYms2eUNMRTlPZWhlblhITllrU3BaQlAzcXNxa1llZVlMTmNPcGphSC1pMnFXdTRzZHFaZmMxaXJPMEhHZF8yMjRJQlQ2LTA1XzBkZEs2ZnVIWmpuRG01d0pOUm14R296Yy1WS01FNm8xeGZ4VFV0TVZQY2diaDBHMXN0MlhGZEpnb0NEdXRFdE9WRFBicjRVdUxMN3k0RjlYbWhIMGktWDl0SDQ3emFEbTM2Y2MzX3l6blQ3WFBPejVtT3VJRTZTV0NWSjVjYVpIWXJ1Y2M2cGFiTjBaVlVVQTR1eWxPMUdoSFViaXVWNjJjWDhYQU12SU41Um0xendpZEhoSmlzRmlreUd5XzN1UVFycUpYOWFvSm55Q0FHYTlMVnk5elV1bEV0aW80QU5Dd0VEUjhlY3RzR3I2VE1TSE5POVQtQ3dKeHQxcWhxcUN5Z3gtMmsxSXNDTFhIWjhrOUVNSTIydGlXYi1uMnBDMWhjSmtWR1hDRzk2TmhFS0pjdElfajBhQ2hVSDFzSzh1WGN4X1ZLaUpkcUZvdlBueVBWMVFiMXBiQV9mdlpSanBGdVFXUEJxY1Z6QlFJMUFLZ0Y4Nkg3bktEOUlQdnJRZVN1Q2lpY2JLU1lBeFhabXhvY0VGTTAxbzBwenZXcDdZaHNKLTNhbW5aX3hDd3Y4c05WX3h5NEJNVno4SENjNjVPQ1BGeTZ1RHkwS0JlNmhNQ3RYNl9INmFMMHRDbUNKcnVneWp6V2E2LW1FWnNQLXM3c3ZqM29MMVdNM3liMG9hUkFmT0VpN200cGxaSXkxb0kxOGJiQWxRTm1ycmtHUzBUSW0zNFhJVF8zbmlkWVNtUDQtSVJieGVPMjAwdEIwRTdmNWxsREJrUFl3Rks3ZlU3QWhnbVFhRmhHejRxU1NhOEd0b09xOXpqakRDRS1QZWo5czZlcGRIakpqWWdNQ0F3UkNoX0dPV05JNDMzVjdsOUxzLVNkSFJfRzlOQ2NkUFc2VlBEX21jT0JsdGVuNTlVY0QyUlZqN1l6elJ3c2xCWnprRlBLV29HcTYxVTZxRmRpZ2s4ZDRCYUdzOGRSVm95Nzk4bkxGMEZwb2RwaGExTU56OG9PRHJXWXhBSjB2TFhLT3A4cHIzWHByTms0Umt3bzVnMkxLRWNuYnZDOExXczlvQlcwazhtYTdza1lTUWR1WEduYkh6RVRqdENUeHZNZlBFZjM0Q2N5amdNMm1Za29MdlV2clk2U0JvS05mQjlDNHJHdHA1cVhScjNYRWRHOXN5Y2JDVFdCeDlQYU5Qejd1eW1VbzVib245YWdTYXRsSHUtZGJIMXVlVXBhMFhBQXdlQnp3b0s5dXJQTHpYay1rZld4VWpjOEoyNmtXTHVheTY2RWVWVFZaVEZsdXhvNjlVaDRpT3ZuOVhrVXhKeF85X21reUpITmF0VGQ4Qi0tT1dGR1N0SnhnQkJscUJYX3U1WVJKa3VrTXhkdTQzSjRDOTZvT29yd1BMTGE3dVlUVGl1LU1BbjVuOUEwV3BHTTl1Wms5RFdVQnM1WllKM3B1QTJ6NFA2SHMyRmRtUHoyd0NjT181Xy1PQ2ZGYWt1R2pzMVZPdE5mSW1TbVhfWGlaaGVNUWtuSF9pcTIzUm9GeWkyaTREMmZpUTZfX3JWLTIzRVprNUpISUsyeXNsOG5WQkZzUHNZczFNUnBmNDgwdGVBZlBzZFVxMGViOHBndUNlQXR5Y2V6cjdJMnRvNFc1NUw1QWFpdE1CT0paSmhsSURHNW5CTmFWS3dwRVUxTE94VkQ0TU95ODQzZG5FRXhJTEhOLTNTZDZUN1U2NjJfWlRBU2dyUGNfNm1hS1lzeHpSaEMyQ3FjTkVlUTZJUWpJSThyaHViQUZpWmdTUGdGM0o2S2dGQnAzNVNsR21MMlFROTV1TFFlUi1LTGFNT0tQTGZTRnR6NFA2bDhZdExGeUp2cG81aGVtN0tsT0p5UVJoN3FlZVVROTlRUTktelBfMV9zel9BbHpsbDl2RldLbFRNUVV4aUR4eF8yR21ybHZ3QkJuSXpsdHhxWEZMMmp4dTFZcjZhQmp2TThYSHRJU09sd3BCNmwzOG5TdlI0dzE1a2VsSUwyanVBSVdKM3RHTTlud3E5Z2RzWVJoVEFrTjBOS3ZqZ05sSGgyNEFqRkYyeE9mTkFZM2NxLTZoU0NwUjBNS1M4NGh6UUY0TEI0U2hfX0lzSU94RjRoeGVSRWp1VzQ2SklUbDFBWkRHXzdBaWhkZUlHaUtMMzltUGtxQWJTRVI3Tm9WMDFmbkU2bVlyYmlEb1J4U0xoM0J1c2h6S21udXAxRm95OUY5ZFE2dVEwWDhrOThRWXU5QUplTmxsWFYtV3FVZUc3NWhfcnVRZm5jQzFScUc5OWtQY3hZM1NaeEc1RGlHcG96Q3FUTGV5anh0cEFVZkNPQTV3ejlZOVpMWlVLdFFRSUREM2tUNDl0amFUUEU4ZHlFZHpoWG5RTVFSbVBud19tNGZZa2ptdVlJRWxkaUU3bS0ta1hRcVdLR1RCWnJqb0JSdUROWjVoSzRmY0g5VVJOc3VLeFVZRXRvbFI0Tk5iYmN0TjVFY1NLNzgtUE1lUklJX1gyamhtQzFYMW9lUVgwcjlqWFNtUzdTbTM5d0F4b1VFMlZhclJGOXpvS21nOHpocFRGVU1wdTVtaDI3aG9IRE5jYU9tVlhuMVROYXRhSVRvekxDVThBTGMwLXUzM2pNZTN0UVVqTDNrS0gwNW9PMHZrVmhiYl81UTNMQTdEWUlOOThlaWxhRFhtSGJ4X1pnT2UzX3FLdXRzTWNCWEExWHlzaXJFMURBUkx3XzlfY2UwbGthNGJpYmVUM09XV0JCRl92b2JFak5OTkpLcVd5MTBac3hPbEhPM281dEEzUWNPOVF6amY5STZHNHpoYldSTHZIdzRvOHVDeU9MTm1xMVVJVEpuMjhXZWtMM3ZQQnF4TFRZYnFaTnlZZUI0SUF4QzF1eHQ0ZEZGMDd2YlNOZ2o0a3JMcXFpb21lbUF3SkNvblVqWjdXTl9DaVY1MFFLUGdHcjduaU82enQtbjF1SWMwSVplb2VvcGdybzIxa2llZDh3YVQyQVZxR0FBS1NJckZSTktWclpsWHU5emlXTlRPX0xBTE01dmJRMDdPS2l3WThDbG1VSW0wY2xnVEI1bkYtNEtMMHo1bGd1MldwWGJjbFNyRUxXZ3BCZnZSTnRTQ3BwWlZrbENLdG5VVHRDVkNFU1gyVTI2TUJ3N1EyMnRZVXA2MFNsNUZoVGd1YmtQZVFNOHZ2VUpaWFNnSERCSEstS1BseHIzcGJqeDZmYlBMeE5vZmxIQzY2S0dnWGJ5QXpPZGFsZmlNSWY4X3AzOEVKdGFBd3NJUGNHZ3o0T3B1bm5LQ055dmgzay0xRmd1WmtFQm9PQ0Z3clNsWFpTbFdlMV95RWdPeTBrTHBiUXFQdXcyUHFta3JxblFYeDMzeF81aWlzZXRnbVZYdklZd0pTdGtzaWRDam1SRVlxZG9pYUJiVURwajlvenRlcnFSd1JQc3duN2ZXMm1palRhMjQ1SXNFTm9iWGRuU2J1dWdCNXhzXzE5RjNKTXpjTXhwakpkZ3NsT0x1dDdBV3ZvUkdwbmYyZUdZN0ktV1BpMzBLUmRQVVBYbldRRk9UdDMxOFZIVF8xam9vTXVrZjBfN0tPblExV1BqSDh1VU8xS2RZUERoYnpKNm9fNDc5OThuRFZPUkY0dGw1RzczQzlCYXpxazlhR3E2amFPNi1QWFZhUzhYVmhxaXZTR1JfUVhReUdPSExxQ3VrdS0xWVJGUXZVMkRMY2czUVVXdlFIWkh3ZjZQUzNERllzM0ZKT1NZMy1PNG14YThTeUpZenhXRFlUamVISnRJelJkT3EyYVFlNUk2Y3hEN3lWcGlraXNaYlNEbEhOSVlhQ1d5V0s5MVExb2ZhYWlzVVQ1VWhsbzh3Z1lPa1VnVXhQWlpudUIwX0dtLV84NDB5QWFPdUF3eDJXZ3Y0QzJJSFhMTEFLNEQ3Nk5lc1ozLUJCb2l3OGdQUTMycGZ4SUE1N1R1YURDRHlhQ1R6WGRxQlBCTWpEeW8tM1hMamZzdEx3aHcxbjBfVlZoaHNnLWx0al9Hc0g0QV96SFNKWHBfbXNOV3RndGpCcDdPVlNmcjl4cjl0WS13Y2VLOVYyc2xEWGN1eVNRQmtQWDBTR05oSkdIWG1jMi0tVEI1d2ZjT21aSUlJbllXVjlqenluS2pkc1I0ZFJQU0NQQkNqOXBuQ2pUdEJfUGNkMWFpTlY0LXhzdVd3ZUlXWGlHY1BrdFVwZHFYWnhaRGJuY2h1MFVfNXlQeThaUks4U295ellLWC1sNmtzbS13TWtpbm1aTWRlWGdtSXNSelVhZXA5VGF4RzlFMUNhWUE4N2VDd3BtXzJIUzluQjczd0N6ck9SNXEzc3VLZDZOMUVha2o1NVc2dDRKSDM1T2ZsQzdqWjZKZDFrM3JUb1dRUlVrcjVDcEh3V2dtbHJ5d1FiOGphMFotX2gwSk1mSEEtSi00d1FlSDJxVmdmRGxrZFJvRDFUYWdpLWpqUVgtWWRFRXZmWmJZZThkRUJvbnU2aGozSGRPNldxcGZPMjJEZzFrTTBWWmxlRlJEUjdoTmY3Qmhad2FNdzBsdXh0M0w1RGVfWDNlVDNtRnM1bHFfZW9UWUFidFNXOWFDNXFaTkcwUjZsZ0pTcTlub3FfdFpzV1lwYkd0UEEzb19GMEJzZmVFX29pdTRhWGtuYnpMLUpBMzBGUkN3VTVXMUhNNEJIbEJZVWNoWnZreXdFSnIwUE1TdG5ObFZlMmZiNmlZLUMydVJtZmxHRnUyckRqQmM0UndKTTkwOG5nX1BYNUVSbktwQUtlRjRDM3MwZDVKMmVkNk40RW5PRU5TQ2Uwc0dFWkpSM1ZFb2tVVnU4cmlRNFRuMU5KT3kwenhXQ2x2bDU1YXhrb1FJdzZmQlRKc1dhb2gyejBZWk1LUFZmQjRBaXhuSUhYcnBfd3hNb1VEZWpmV1NQRDhSVFBJR3hNZ2pVTWdUQ2ktMjlGMU5WZzhEX2JvZ05fb1JFMXlVckMzUDYyUHRwUzhtV1U3WFJEeFU2cmVzczNqaFJDempyZXVhbWxnU24tU3c2ZGdfb3BNTHRzUDhjZjVUaXFvV295MkZXSWxRd0hZeVJPSEtOY0ZUTGZ2bTc3T0hueGxMQzZpVmhLV0ZLQjI0T0FzQ29tN1R0WFU5bnpJRFRZNWxteGY5NWtiUXQya01QeHhTOFQ2cm5rNHNmSFJPVlBuTG1PV2R6bW44Ujc5YzU1N3hFdG1uSTlmU2hEakdQblU2UTZ1dHBuSmZQbVdHWEhXX2k2dkpjcnhkUXdZakw5V2RVVHh5d3Y5X2NoWFVyc2JGVDl4YVA4NFh6X3ZyTnBtREZ5Xy1zdVBSZDZ6dUNJM004NmZQMUtlbUtSZ0FfYS1zaXZHMmVROXBCVmRGUXNkTjY5WmhUcDhSMlpNeUFIRWpNaVBYaUw0RGlqblo3ZVd0dDUwZHpNQV81MkVLczVORlVSWDE2dS1hdm52cFpwOERQeFdOeHFMdDEwYi04QldQWUd4QjRwZUZGdmM2M0J0dFpudGUxMnlvVEVndlFUZ09nYnJ1MnVjclpWTkRFazZzV3Vic0szd0VicGRBcHNNQy1YUU5tVEktNi12clpNZ282aV9DUmxpYVAweEg0dTNVSGRSZUsxekEwNHpnVHQ4SVZid3BkdVl2eEgtd09tcGc1bHo0eWFPd2dOTjhheklDNEM2Q2Q2Z0g1MERBRl9RRC0ySGQ3WTVLWXZ6VFlxdXhHQU1ER21kMjhOcVRWMXJJbG9ib3pIN04tdm9XYnEyM1FUd0ZrZEFzNjlrbnJsSmUwR2VGdFlVZkhqLUJrSnNIUXhXbnFwT2pab09VclQ4TEo3ME14Z1IzMXBXdmhxWVJJUWlMM3A2OGxwQ3ZjV1VUb0tCZUtyY3pvY0ZLSTUzM0hUdTExemNneTc0a0lLMmxwcmRCS3lCR0RjMmxRcHFiVTYwUG14V0t5Q3VYcUZkaC1HTUJ6eFZkeEo4T296bUJZQnhRaEd4cE54WW53Nmp2ZlpneUx6NWI2UGhZNWozcXVWaTlCX0NGVkpqU25RbWJGb055TzZjMEltNVVWTU1uY1BlazJwRkRzdWtzc0gxME50ZGNsakwxbnREdXlONkFVR2FPNGJDdGcyb3RJUmdtUDZZSnQ5ZUMxSlZlWW5sc2VMZmU0QTBEVk9FUmJqQ0hPX0hXTWt3MVFzN2k4RHZMbEFya3JvSzR3LXNKUGVjMWh2NjRUX0dJWEVtQWhNM1A0V3o5amw2V1B6THFUekJSU29JcUVneS1xdVlqNUltNDVvN202Nk9jeGpQcjVQSG14NmRoUlFFYjlaS0h5ZFQ4SFJBbGttMC1FVzdjVjd6a01UcXhZY0NpaFc4d3RxTE1vZ1lUeTBqTGxrYVE4OERmRDhkNWdLcTZCd09VYmdnMEJlQkFXeVFxZW4xM1pEVEg2cFUxaDVnQnNhd29hVkdoNF8xMnhrTEJGMW1Ga2ZRaUk2cHpnY3RKX2l6d0lLcm1GVlEyYWVoV2czNGUtS2V4NmRIQnllbHQyclJDZmdFbURuc0xPT2tUY19LUmR6dC1QMTQ0TTFSaFA2d2VRUkF4bDVIRXpBOEt0b1h3T0Z5eUhtWWxnTVBmMG1xaTBzQnRjRkM3YWJ1V3hGemNHbkdRTDF2eFBNUG9QRnpqOUswV2RINVlpM2RmVlBhRWNRbHcwQWRGQkZCNklfWXljdENrTVFvYzZDTjRyemdPM3YtcHBNNWdmdXNqSkJNS1dhUzdmUlFzbHA4ek9SYm01TmhDWHBUc2xsMllVWlNPWVNWQi1ZZGs4OVI5b0FCN0Q1WlFxbWE0dEtSMnBQTmVfSkRTUzlPQXBOcnItcTlWQ0V3YXVJRGJNN291ZjZVSHV1Z3c0RkozVUJkVS1xcTNqQ3BRRlQ1UWhaTzFRbE10SXV1SVNYMWl1cUJXdVA4SDQ0WHhET3Rmc3BiQ2NEZnIwV1BwREJFTF9sYW1PV1NyaVRmOWRGOUJRZnEzZ21vNktVUk9CRzIyZDZyM0FwNHdodmhuMVg4VThBQl81TkRFXzZIUHVrbGtrRFJpd3NBbFFndTloQkZqZ3Z5V3pyWERORERSaFowaGtHUGZZWE96YmJwak9POWJTc3RJaXp4cm1kVjJUR3FjNGtlUEQzX3V4eXpRY0pSTGdfUnpfNXJqZDNaTXB3RGo2aWhOSEo2Njcxb1RMNjFSaVptcDlBU3R5cUJPVzdSRXdwN05JMHRuNl8yWkh6UkxZOTdXZWdSWjlYZm5hSXpYb2JRVlI0V3ZERTduSHYzSkF4dkxkX1haQVBmMHFKY0RKYVFlbGZHZEdyOUp0N2pXaTMwX3FzbURSbDRsRFppUjJ0OUVReU01LVEyVUwxU3JmTnVhdUlCQnBzME5qeHhhLWx0QW9sTlRXMlZteUMzakFvNko3eEdhd0RTZUxFbUQ2Qk1iNDJlOGo2d0xkSXVCVGFad0REb0NOODF1OVV0d25qZHdIVzF0TzJFOXl3U2s1RjhRZGE5Wk9abTF6SzJQMEY3eHEyWDF1WWE4S05NOWl4Q3psV3QtbHA2a1ZhT2FvTGhIUF8zdkpzRm1fYTcwd05ZNTF3V2cza3k0UVZab2FQWW0wU2ljWnpFclNMYTF4OUFlNXVFVWJ1ZTJVMUVwSktic1ZkbElubm1fRmdob2p3MTBMX2hWaGdETnpyWEdzamlWbVNBZjlnUWNXVGlCLVVvQUlpdXdpYnhjNEZTLVdYdmdUZjRkNnU2QnJ1aWFjTWM5X3lXNnZZWkpYR0VlakVqb1lDelJHZE5oSm5TNzNjak1pblNTeGl0RW5jeDNvMk9fNHRPM3FkS2VCZ0FaS1hfNFNrNTNHTjFqclNjM1FVSWdwc0c5dmxZUzA1MnlYUGxBR0JpVmFWWFFJOThlbjBpOGNaZC1KdFYtc1UyTVVuZHdHdkJ3bVZabFFHSC1rdTI1U2JTNGRla1o3b2xrX3pqMTE4dF82ODVuTWI2bDJSME1KUDdrbHhxaVFnbnNHcmY1bGg5Ujg4UXQtczlpTXBOX1FEOEZMVzBLU0hqREE2RnlVVl9OLUlMbU1pSTRnd0ZGWXFXN2l6OWNYRGF0UEtLdnVPWG1jX1hidGJ2Qk94NF9GNDNDQndmS1cybUZBMm55Ulp2ZjN1WXY2SWtmaFpTSG16ZjFWLUphUVdLdEZwekZrRkVvd0hGRHdsNUhhSUdVdm5hcjdVZ3RZdjJyRG9jQjVaMjNyT0hOVFVqZ3FQM2NDc01QWlA4ZVBVeEhWOGQ2aXdZd1MyOVdLNmdGYTFfSU5NbUZyUEJLRXRzNXhkcmZhSGpneEFDNEdwNTVXR1liaFJKRXlycVBvNVBJSlZFSFJrY0N4dVdoM0cyZklIM3JUVDdyUmRhcnZFWEJfVlhZTmpxbzF0TXFXb29scURtY3FreFlNYUVUcWFONjBCeWhROWd6RTllMGVmOVhvUTcyM3I2R3dycVQ0NF9HWmxmSUVvZG5sV0VPZFRNdmI4cm1ZVjhmS1pnQmVqTkNnUW5oLWhuMElIUTVrU3BOcUtHellwOXN3Tm9jYTBhV0NtT2xUYXRzRzB6ek0zdEg3Y2FUSW50aTRzaFB6Sk9YdUk0OWtLcG1SZjM2VDJQOWVxbjZPOGF6c196SlFTa0dOYndWQXg2WDdzSkEyOWxvbWVqTTlqZEVhSXh4VTJKaTExR3M1WVhhUVNxNDZIcEl5MXlUY3lYcjlRQndKelNMa1MzOXU2SnhmQmw0UjVMM1NPamJOeEg2RWpsZUpJRVo2NG5ZVGNvTTJaYmVNdjhNcDVwU0tJWWk4RUZMYmgwMEJVb3VaaUNKbFFKU25GUlU5MDltWjlnR2JiNGdxMnR1M01IU21Hd0JSMDBwTEtEd1RoVkFIejJiMlhDZm1ObmtFMnE2c25ra3VYajBoTThyOFFScVhsb1ZHM3g3aVhXeG83M05SS2tJcGJPbTRpRV9RZWxaVUtPcW9NbFc5R3Q4OENpNl9EaG56RFRySXZ0ME9fclEyTVFPUXlOWEZuNC0ycG05OGx4ZXBKTEdwbzIzOXN1c3RBNkYyalBxdVpGQllsVFJNMVpVNGNaRU15WlN2MHN1cW9DSkZ2eTVuWkN4NEZIS3I0VkJ5dGc2WkhKQzRlYmxIaC1BX29QZ25NbXhSRGxiNHJsZFJMVGw0bi1pVG1Mb0htaWlFU2I2emtYVVhaUjYtTjFYSV9nV0F2TjlzNkdEV00tMEV6YkZPc1pVRGRxM09tT3FaS2Z6dFlOdlFSWkY5WW9SODY3MF9rZ2RkTndGT2NacWNta0daOWQ5UUp6RDd5OUlxYmtnWEpHbXdBYi01UFRWLTY3ZDVIbkFNb19ad3VaYi1TUGx6MW5QNUZHQ0dCb1lGMEVsRG56VVRqSTVUYm4wa0JNbHdQY3Y0SVBKQk5KUEh0bTZfclZnbzV5cXJoWHVHaXlXNkQ2Z0UwcGlna2JZQURNTWV4dnFxMnJkSzJFbzZCS0FobkRhc3F6Nkp0Y2lBbGFuWHhFbVFmR1o1czV3cUtkYmZZQk9wSUtEUGxWNThUX2lMS0lfZFZNbGdIZTFFWWs3dGZLeEtyT1Ezc3F5NWR3NTlObTBhWENTV0NqZmJqd0R6ck1uc1lOTGlWR1YzMzcyVVFBSEJYeGxZYU1pTG9RcVE4eGtkZlRqakJJZm11SXpPRXBCY01rYWVXMjNIWmF4cEZoQ0dGRy1XbjJOd09wSThoV3lyU0pvSnZScVZUSmlmdnFfdU41UE80ZXNDbVY2MmVBM1ZOZ0U2YWdIeGFZYkxlSTJrNmJzT3BnMm9rX05obXVxWFhGSGJSenVFQ2xlWXprVVBuWjQyWmk0MFFDZE44UFdqUFlKb0JYV0czbFFCd2dGQ1hIZGp6eXVjQXpzSk5FYnpqd250TjdRRWE2Y0VhZHB1OVpmekJubHBRWG91UU5rVWRJYUVlRW5vX0FsVXo0WGp5WV9QS0lYelFOOUtraGYtdXRnUDJfUnVnTi11M0h0cWlrMlcyOVlUanlYTXVnMXN3VDlsRHQwOFhydnlFeXJ1WEQ0bDd4Zl9kZF9aTWRLa2FhUll6Tm5Xa2J5WjVEcDdSU1MxeUFEVDdpcWNqbXBZVkVXQW5VUlk2OHE1Z0ZMX0UzWlVwUXc3dEItSUkxV2s2Y1I3X1NCR2dPRXNSYWhNTW54YWhraTVpaGpmQ1ExVm5BU3FDbV9OMVZOU3E1LS1aWS1aSFEtalBhVVprdjZ6WWRrSDQ4YmIyclBwNWpvRmZ6NkhPRnFnb0FSeGp4VnJfWmpFaEduTzY3Uk9WalpUUHFRQXJzM3BkemU3bEdXdklqNTRPM1hRTUFXODBhTTFvVTA3cEl2cVVoYl9iRGM1SmtYVE9nR3l0LTh1ZXA5cGJ4OWlpa09fbkJtdkJaRHZ6LTJaR3VNM0tLekVDdkZJWG9ZZjFqX0tqSVRtSE9WVTd0ZnZnZlU0bHgtdGhJc1pfSl9RZ2M0Y1ZpUUNDY0RsSFZZbWIzSVQtb1dWYlN2ekVYQkwzdEtLU1FRV0pVMENwS3k5U00zS1NuT3VzeHNOVGhnUGhSNWFQQnJ6OTlLdWlXWmF5OUg4U2hjMFVuc1hWalJscEpqRm05bVFOdjZXUWV3VkNjX1pQSFotcVljT0RZMWMzTlNzNUdHcWJkbmpDSlo5M3NrX1RlV3dnVC1ENjkwWVprLWdPdHRrUUhVTUE5Z20yd2dLVGZLZExIbHVyVmoxSXBFcnpySG9tai1qZ2I1Tm9fejNMY19yekRWa3dtRllsZkVKbU5RWVl3ZUZ3S29RbExsalBYOHdCeUFtSTVWYkhmMVV0dF9VY0hDRjduUExxUTlLTkdyLWZDUjVwblViQTRlTVhUM0xpUDFHQjRtR2pVbmQ2c2tzMmpRYWlPNXByWE04dFNhNHRacV9VOUlZY0tmVFRRMC0yWkRfYXR0THQ0bXl4dHR4ajRIX1VIV1VLdllQRG5ZSUkwMFlWcXhtOGFZb2o1V05PdXR4bkV6UDV0SklBNWxBcWtab0ZiN29KY1NLdHJnUHVhenhuMU81OTN0NGtUY1NFYzFnbnp2T1dNLWVydncta282YjhmOTBNUVpMU0p6ZWNaU2EtbmFibG9NVXVPWjN6d2VDcmFqdE9SUWpObElOQkN6VUh5VWZFa2hNTTd0ZVVpTldETmJ5WjE0YUc1bVV1ZlJSekd4enByUzUzYkZTSEd0MC14NFVveEp3U0tqYXJfaGlTdDR2dWRiOS11QWxLbVRCOVktOGxIb1pkOE9CU2piNHpYVDFPWEhxcFdkaHIzX0MzVHZUUGJGYnA5M2x6WFVjeFRDbjhXampKRm5tcnIzQWZNU0o0N3ZqMnVyNUowYTJWV0NmTERFdXdnNUlIZVVERVdyWGNGdGVYelpBbG9nc19JV3ZVUS55d1BjV1F2SkVIN2kwOGlOZzFPRWJR"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['21956'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:41 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5c9a4777-d079-45be-bbff-b868743b8e9b] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [9a3367a2-4ad6-11e7-9f7e-5065f34efe31] - method: DELETE - uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/f3262e3803ae4c4e8645545f33c11136","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"wKb3gRM-9I2lRjC067HNDmPFCIBfJLxpSj8kSL_BM-vYdq8K-au0x_D_25qw0APmlOYwRrT0yYXC_BvqHymN9Z1Qul5KxcYQR8BhicAy8zwplbwle0sbcl_kfb1gEml2mNGR4_wN3UVPfcMz-sLKytaq4YaRUOlY95dqdh95l81BU1SfLpfc3ikImkazOzGxx7RCh-ltN6rEVYfghHMkoS26VxjN19R6LJ9IcJyb5plWPYRue0Ph97onrMDvcRcKJQL-dIhlDNpCnBPMIH8UkPQH8ofFKtJKKsHKFQaEYkF6XYBzUQ1muJuYyhsJZYRjNhAcKnjxamC582FCDy-c9w","e":"AQAB"},"attributes":{"enabled":true,"created":1496767121,"updated":1496767121,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['656'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:44 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [11f65bd3-6068-4d86-8e93-57a0ed274937] - status: {code: 200, message: OK} -- request: - body: '{"value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLk1rWHJVZlhFNFFxb3psOEZPd1RqdWhpWU02QnA3MzZhamFBMmFycUgwNUthSTU4ZmQ3WEVrbkl4M3BCUVZzTXpyaHYzTVRSTWtEdWtyQ2JoempmR2V2a0dIRmo3NVhTQmU5bUxvaXBuMWRhOFJ0Y0NRTW5hdzV0WEhZLTdhWEtKRlhWSVNodWVTd05YaHZaQkVZN3JlenRWLUpfMFgwVXlUVHB5NklsTzc0N1VCRzl1SjQtU0twczJxaFpwNkQ3WkZ5OEpzY2pGMk1kVlZzOS1oM2VnQWxUN3pmQnZmUzVHblZYSGEzZXV2WjJTOXFnR2UzVDNGdzhKWTQ0WnJmd1dEOF93M1pmaGFPdUpMRzFpQ2ZXZmd2a083a2xtbW14U25Iby1leWIyam1KZXpQS2ZaWkx4NXhKUU9KS2FXQ1pwNVBjQm1SaVp1ZENUUTk4VHoySkIzUS54SGdOVGJ6aEJGcUVXSjZIYm4yZ09RLktXU09XTzFrSVp5WnFfTWV2aEJROTBpMWp3ZmtiUC1PT0ZmN1hhQXZTeFFoN1l1bUh0b1RCakJZVGtBNmV0SzJwRmJaNUczN0JCMTBSR0pDTjBoTjFjcDhLMWJMb2VsQUYxaEF4b0M1Z2NEc0Z3eXlLdUVEWXRiOElMU0tFbEg5VkVnblVVM3h4M2JlMVZVT0hQWTNyY1dOOTVwZVA5dkhGUGdkTmxNdnVLZFVhU09zZTdzYzJSMzlzMmZ6TGJjTTI2QW9LUTJJMVNiM19rVUlPMmV6VDhWMEJ6WVZhcVlScHVHQ21TQ1VjMEQwU1lWWElRNi01M3UzRWlxckJ1WkR5a21MZU5uUG1BSlJUVTJMWS1IZzNCNGM3TGhDcmxyRWt5QmpvRHZ5NjROdjYyY1BOUDNLUGFoNEtwZjlHY2JpdTM2UnJKc0pRUGN3OWJLXzZCUC0yVFVTLXdEUHlUZExHSW5GQW5kRnRaQV9VcjJmWF9WbmNERkhwMmF5aDhyd3I0bU9rMTg4YXNXQWR0ZEhqWUlUVjRUbGFtRW5LSEUzcExUXy1pSDRxZC1vWUhabkd0WEZ2Wkk4TEtpSXR2VlRzbi1Ec2lLZTZGaHYydWM2Ym9YQ1ZrdVZxS0pkZlI2cllzU3NDM3FsQlBITG10dnVGRm5BcFJheGxkVmhPb2JYTWRyZG01UzRoTUZta1hqcjVBU3NvVFRMYzJmZTZTNnVXUmJwYjZ1bnZaWlpNMHM4YXhJZ0hMbGhJRnV0SThQSEx5bXRlMTZmb0NydXB3Z080TXdyUzk4bERHbmg1SlVxU3ZxY1F0OERzQlRTWTRMVzhCclgteU9fb0I4MjB4YVM0S093WUhENW0yVGZfV2xwRlhBOVlzSngxR3dFWUtPWU1jaG0yYXhFcndiVVl5QW5wNjRURGI0cGRtT2hyalN2VTB6M1dPYmJUV3NmV1BWMGhoUU9DQXZ0UHpvMDlxYXJYYzgydDBWN2ItMFBHeDR3VHVtcXE5YXdpY3NCYm5VMWlFQzVQZ0lNeF96OXczeVRicEkweTk2cWFsSGJ4RXd5UlYyUFFWY01ua252by1Qb3hOMVAwTndfSE55V3ljdkhjX0xMVF9rMnJ6dnRRdHYzZFdlNDJteFIwMVRKV1RNLUlJTDg1RjY2WnZOYmdiclVwNmdSTW5mblZuVDZvTFBXLUVITEVBcGZBTUFJU3Y4aFE3blN3bjNjejZJa2JaTmlGQnRpVGNrekM2aFdFNUxnMmV0QnFoSVFhdlpQZW91bzdZYVRaWXdKYldsZ1Q5clIzY0JFR1loN2p3cjg5aExvWGpwZWVpWmV2OFpOMnVXal9oeXpmWm5vN2pPNzFEeUp3LVBxYTRFT1dNemQ3WnJBOE14LVo5eTNNeUJCUk5aazFXN3JRbG5zOVZPaEllMGgxMnVacXJOc09DWEw1UUFZNmVQVk1FWXE5UWNvYWg1bVFZV002NGJoX0k2aEJXNzFMRnVxYjNIU2tMUWpjZ1dWVk81aF9POVg3STJyRUs1VkpyQ2FvSWVNcjIwV19BZGFzc2JOWjhBcHBCMUg1REttVzFTZjYzMVo1Znd2YUE2TFlLZlR3UjdnaXhGYngxSE5BMTgwSHJXUWhqYm5ldzhrYnZXZzFoM2dMMUtDdG0xNnZ6LUhXeWJYQU1JUHBnVUdGVkM0a3ZMZy15WFZ3WVVJQm9PNzFXRjZrZF8zelh3THBiNEFxSl9UYVJ0ZVpiV0RfVkFNWUJBMWp4SllpaFhoeFJQVjIxdVhfYTlRYm1XSHNDMUZ5VFRpdFZ1LVRnZHVsOHBpejllcVZtXy0xRk8xVFNNS04tM0c1QTV1Skt4UHE3OWtNNnV5NlJZbzBvMHVqeENaRE56bDJhNnBxRUZQMkhWcFV6eHV6SGtvTEowc3pDZGlyVXZnTGw2NklHNml5Q1RDc2FBamtkcE5GMURfUVNuY094VFpySl9xSnAtTERnbGF6dWlzYjdzV216cjBWSkV3amZ0ODhXaURZTnFGaDB0Tkw2cDBwTUd0RHZkaE5KcUlFX1pxNG9fUUlSNUNWdERyQTFIczdzbjJPelI3aUI2dGc3eEhJaHFDckZ1OEVjWWV1SHUzX3BibHhvXy1QQUZUQVNzUkRaVGxmZDFGLTZpYlZxbXYyTEVOQXF5aHFXTWxNajBLWjg5OHVKTkIycDNZZEl5TmdFTWRvSF9RY0xuV05HcXNoQm91aU9ldFloeEtwMnduSHpXSVNTWWpmN2NVcDhpNm5icUhzLXo2UXRQZzZySThBejZZSHBFSlQ5RmpucW9nT0hYNkZBbXBYV25qMC03VUVDbDJlc2tvdll2cTE4enhTYnAxaTI1X2NWbE1vRW5IZGs2UFdmTWpuUzgtc21nbEtkREdhT0Jkc2RlSU5iVmFlemlCYl9GRFloa3lVYi0wclJ3TENDOWV0SnRWYlFPbTY1UjNiVkxFVWJOUW5wYk9DZGk5N0cwU1k2Z1IzTjkxbmg5d2xYdGQ2ZV9vTlljOWxwU25SR0ctck5Hb0hfbmRPU2tHNWlRTmR3d3Q4WHM5bE5BT2ZWVm9FazVUREVnWEE4dXV4eVpTdlFlazZ5NTM3T05WcVhmdGZRT2hLWFFLalF3a1kwVEo3ZlRGWmszczk3YmhjbVY5UUZIOHBGczd0UXVsb1NRSVdlLVEtNVdrTjdkZk5KSVRXYkJEU3pSZmxHd2EzM3lQN1ZLTnZBeW5vT2o1NUwwZDBnbFJxTjZhR2FBUk1mUXp6UVlmd1dHNFlRRTFQbnlISmFvbTBla2dHWm5Bd2VPNTByc1lSQldDUm91YnZ0QUh4NFdiTzAxYm9kUlU4ZFpLSGJqQWJkOHlxZkZmYVU4QzJ3dHZQSG5qMW8yUnYwOHBKTTJaZXdRaFEtcVIwRXpDeVp3dmNRLW9COFlEcU8weHE1eWZTeWxWb0ZTVldMMEhyNmg3blJyV3lCN0I5dWV0aFlqZ3dfeWJuS0dLem51QmgzYXI3cTBNd1RHTzlfc0hlaXZqamFtTFg0X1ZwWjZIcEVMaXFKdGhES045S081dlVjYTVZLTVaY05WcGs1UFJvWkVUdVJXVVl1TGZHdWFXbmpMcXIwcFFSbnVRUTlfOEp0Q0VmdEc2dHdvcW1KZS1uSDVSWU5ZM3J2amdrdmpDOGpmQjFSMFBWa21NVkgxdGUtRnNBRDYwOTRBS0dwVmhnbC1oMU1RcEpDTGVxNXVsYVBhVEpkZmVYR01VUjAzMXpablItY1J1ZnZKekVJaVpnUjJGcTc1SU5NaTZyejNtY3kzX3E1YmZQdDRBejROVS1Va0VxV0FwSjh4dF9XeUtBWGRoZklJbUxxZVdVdVdGdzBpTXd5am1fVkdjd09BcGVsOVNsZ21NWkpjX2JIcmI2SEVOS2ZMMHRraHM5S2NhdUVaQWNzOWM5MHBtRFA1S0phQWt4SDhlaVNrY0ZPY25NN1J5OEk4czU4aVBGcUNUSDJOX0ZhRFQ5dU50V0Y2dE95cmNDX1l0Z2xhc1pfZUNfbDdVT3ZVdzc0Z0FEazlnQjV3X1FGbmZSaUxld2NaaHFVVV92VjUteVNmb1FETkg0ZjFlMjVRTXFpeGpHaWEwTFBkV0Nyb1o0Zy1zOExSa21sak9RVzBfZWI4SFJYUmxENmZ2SFBtSm01Z3VBdFlqWlZOOUp5WHZVWXZvZVZhUzFFSlR3OTkxMldKQ3d2VTMwMnhJSjVnRU1VMFNGb0lOM0taQkJTRjIwZXk4MjRiczlXa2tBSko3T01VNTVwR1hKb3JkM1Q4MXFhRFFLNWR0aWxUb3pabk5YWUFjWnhMSFVadEpVU2lvaWlVMGU0ZGtCMzJiR3IzQzk1VXNOakhJMmdudGRSOWZ1V3R2cVlEbWFJcEkyWVIwamNGZl9oTGFxR2dPeTVkQWVkYVBmM3lTcFp6WmNkSjhxNWVGQVNjSXlQaTN5bDNXVlczWlFtaVppbWxlZ0dqX2U3REpFOXdGckFrTU1ZSEpsRzU1QzRIZV83SUhveHkyOURRdzRMNVBrMFJXM1U0OGVoX2l0Y3ZONGYxWkZwaHpJQ0F3UU9iZkVpYVJGWjhiTFZxYmdUdVdBaTduU2tXU2NiN25LOXg3a3hjNkRrbUN2blV3OGRsd2hDazZTYnZFYzluTFRUcUJmTG9YcktoazNnV1JYY2hTcExxZU9wREd6dEpUbF8xWklmSDBaVFFaREduLVhGQzJhaHdXRzJBQVVIWU1PU09CMUlQWTBwZXFRMFd5SFBLdTRQTmJvS0tPeHgxdzZTM2FyM0MtbVdDZXVWZ2hEVkt6VzhValFpY1NsaU81UGNUUElYd3R4QnotN3F0TkZ2cHBGQnYxVTVneXd1VlhxbkExdDdxZjl6X0o2bHFrZml3RzdRSUh6dlRyOXNUSm9jZlhVSWVEbko1QnRFc2djUG1EbWRNTWtKSnBjdzBSZGw2am9xRzF2dXU1T1RQVXdiU0ZUbnNoTmlDQ045bU5SZ1hLNFY0Y05fZzFXUFJLclR6d1N2NWRoSk1yUC1UVHA4NkJfYzRKa3UwRDJlMk5HSkZ1dXFPMUFtRnd3QkxPVE5USmw0SmhnRlBaaDBaU1FKcE82alZxeUhCSTlGMkJVdnBCaGs4ZVE1WklTWFVaNlJhcmlBNnJYdURGeE0tbDZVMFZlelFmamlGek5PRlkyWVhvbXRraGk2ZElYX2NwaGtpNy11M0pBMkRMS1hjOEw5a3F4RUtLWklyR1VvUm1Za1JxcW5oeHh2SlNHV1o5MlN3NjFhTk9rencwQ3pIUm5FUUpIR2hxYV9jT2xycHJMSUE0QkZQU04zeDhXWjgxWWUwN3RWNzBvUWxPUUZWWFlkSkpCZUc3ODh3RWRQWm1odVM5cURLTDFyUFZtb2dWOFBvM3ZpcGFZZkMxQ291d240MHRxbFNockdoRUpyVmpaN1U1V01faDV0bExybFBlT3lZSmxtOFRvN05CQUxpVUtvR3Bva0xvZTR3ZngxcWhueFhEc1Vjb0NlWkF2X25EaG5zUXNtR3dSMEJYeWNGMGhrdUZwYVVQa1dySVRnRkFIMG1SQ3NKNWxvc3pKZC02aDl4VUQ4U0daR2Z4cnBTcmxJQjlqeDV5QlZOcndzMXRTcmpDZ2ZGYm1DeVJkZE1yeFoxQ3RhSlpvdGpQekJjcUMtMnNuX09ia1hYUVo1dnU5MmppSjNUcDR5N1Fhb2EwRFAyTTJRM2hPRDR4MnUxU0cxZVVnNnVDejByQnVCMlVWN1FYVE1nOU1VTld3UjA4TURYczlVNjBZSFVxbjBlNEIyLWRLMVdhZDFSbm1yel95a2ptelEtaHlsSEpaaUZNVldKTFNseWVVU2VkbW96amZ2eGRXSks5cGRGN1FQWE8zLTBINVhHZGpwS201MTRmN2VuZDZ2YkoyNTNlOV9IZlhEQnpJZ3lYS0lmajZtRUFxcktXR1pCekhNcm1QcTJWXzVmMEQ0cGh2MktnYVhlSjBLRmw3bFBvcE03NldYcVM0OXctYkIycHVnQ203X1ZsMUdrRXVwLUhoVDdCMTlsNUpGS1V4d0dGdVJncWhETmNqZWxKc2N3eXJtUW95X2lfVU9pSmM1QkVGelZkR25JSmlPRmp6OGhGQzNOZ2RUZnNSNHFZblUxcVJ2ZDlXcHo4UV9tQXBwVnBpRWg4eUw2V3FjVDhBOVNVbWphRjFGRWFQdy0tZUdRdERPNEs0UnNMVHhBbExjR0s4NlNFeDViQnU4WjBrdTFEM1U4VmJFVDlwT3BPdXBsOF9DYVNxVTVQOTQwTi1ZRFIxUkx4SUQ1ZDF6bl9LQ2RjVHJRMjVmTW0zWkJCdlVsTVdza09ZcG90TjlpN1U0YnZyX2lEQkJsdUtzTTRhV1VSMTlDQk9sNDlXWEprekh6dUxQb3Q3aF9CUDM4ZlBobEJUbkpNanJUeU1tQVBFeWV1NTJXbU5abFg0alNQYlRLZ09lNXlBWWhyY2szb0NXTWE2N2xVekdGVWEwWVNCc3ZveTJ1aTFzN0lJTmZnblZTZTJ0WGE3M2VhSlJTRVRZVTZxMmZzd0p5Q0hlNnhid3JySlF0N21XOUh1TGdGQTV6bWJXWmpjTlcwbTRQQmJBcmRyOFE2Uk15bFhwaFMzemlTcGlsVWxUTDd3R1dJeGlyMkl5eHlpWXJVNHY0QnZSV0w5N2RhejlkTkVFMjMwcEd6VXVwcVpKUnR6WXZvMWF2UzdST2tNRHJmMVppZ1RJUGJMQnIxdmQ1X01mNE1IV2h4bDRwNEFHdVlrUWVXRlpVZ3pNNW1lU3p3Y0tyaUpZdnB2ZHcwSG9tUUF5WHFDRXlxWVNqd1hxelZCd2RjcllXR20zTDFEWFAyU2l2eFBGZ0ppbUM0QTNRckllV2dNdy1Nc05vREhHcVF1VTBTTHFjOHNacm51MjZ2Nkx1UVdoQV84NFRnR1g0YXE4djJFaW9nMXh4eV9ILTFjTGJob2JWQmc2aHplODFTbFRsOGNrVGRDai1PS2gwS19hdk1yNXo4d2tHaXJUcFFnbUdFeDlRNnFJTHJ2NUJaR0dPLXB6RG1mLUxxWmtMWEtfRzRzUzFWZkpvWTBURmRKVGhEWnROYURJR3RDTmdPZWZSRnYzQlVoZlp5Rnc1WGFkMU1jSHoxRlBuQ0J5S2pPcW9UcnVEZm14eVZ1QkhPdFpkMG9qOGZiU3p2LTUxbHhKYnRNM0xxQUEteGJEVG13ZVQ2WGRqdHV3ME5wakRZV3YxVFRhRzBXbXRzMzhVa3J5N1RJWjc5QVZEdElfR1JleEIyZ3dOSGdfRHpTQWdxX1d2UmdJSk12RmcwN2F6QkxiNnZNaEUwSFpLbzE0SldiX2pJZXJTTm10VWNHNk9UT2JJcUdWQzVkRy1BbHZLYVlLWUpoRlJrU3dNbmNYdWpBR3NwUHA2SE5UNWtrbndpdU1DcHkyVUJiVjFuUFBPdUc0Z2hvR3hrOGpxM1RsLTZ4Z09aWWVUUTRKcWg5b2lpLUExX2lpQ2pscFM1U2RBQ0pTY0ZqdHMwLVV6Y0VQa0x1dFBfbi1zTlU3MDBMTUhlTDJ3d1JNMnNlb2JJSU9zejBEcTRiTzlJNmdhT00teTYtWllGUFo5LWxlTnIxTUo1U1lSb3ZzUTZ3UHlZeEs0NC1yLVlpUzBHdzAyZndhbl9KS2JyQ241Q05NbWNPeHB4a3lWcDdWRERyX2pNZjg3ZE1TN0tzaTFUWUl6bXdWVW94YmlfZXl4WUJqTnhxd3VQQnVOMGMxMU9teEpVRmhCSXJIVnpCdkcydFVKTEd0MnNSY0tJX3JkZHRVSnBqc2hEbDVyX2R6YnZNNlJiUG5td0c2aFhXY1dJTkxycWc1RWJqdjFDLW5kZGNJVzFWd25LcDRQbmxVT1FmUmIzYlZ2aXphQW1la00tOTEwYndZMmxuRXlFX3V6NkNPTG51RUUzRnRzUlI5RU5VVHBqenk4a1lIaFl0cUM1UHE4dmkwTGQ4N0l0VGRmbW1sWDAyZ1VfaGJDZXgxQ0k1WE11X0xyZS0tSU9vcHoxUW41aTd2LTRsVk9Sc2J0LVhmMm01MUtjeG5RTTdWMXlsdVlzazhwOXNIek1rX2NOVXV3TEU0ZF9NeGxEWkRPaGNaQUhpLUh4SURaMkJMTXgxN2V3YVZ6OUJ0anhlV0k4THBUcUZlWlYxVDBGZm1qZXFBS3FsUFFBbWd0MEgyR1RsMWJwY01Va1F6MUhteDhFeTVpanpYN1NPa2h0eEt2YmQxVzZKSmxZb0VIMzQyTTk0NnFrTHZnUVo0LVJiLXpXSE1BZ2JvV0JHQV9xVjZZTzVibjctTFZRV05uRnJQUTJKd1pHQVNmUDVWaTBYUWs0VGVrWVV4R2tsd2VzSy1NYlNFU2RBaEJQY3J2N3VBQUIyUThRV21iemNNRV9DdTZZNldPd0tnNW8xc2o4V3hGNnpMZko0M3VZeERISjVYTVNfQXBJM1ozaDI1YlVMQVFkc09IYncyaHZxY2hHNkUwVWdyLTFzNWtrQ0VrVzdYN29ad3NELW1Hd2lreDBqVlVtSmQ0RHpjaU5BMVpmQkZCdmlUeldOWDdKQ3VaQ1A0dDZKLUt3cVRjbmRLaXFzQ181Z21qaE1RRUhRUkxFbGM5ckwtRll2dkpKOEFvWkwtMjd5ZlNaQm1rMFJPMTBiekU0WTNpai1McUo3c3g4SkhESEZvVHRfQ0p3eTJFYVFhendzU1B2N0dBemRPZE9TaTBXSW9neE1HMmFXSnM5SnhaZjZuXy1oT3Bmalk2a0pWbmNEWmtvcGg0a0o5VXBFX0Y4MkZpX3hBeWJLQWtGVC1ya1gxNUlpLXFwZlpuNjd1QV9WOTI4NFhfTkJXVF9JT25rNFpudlFTeEZDVEZ6VUxVaW12elJMVWtBSDdlMTJrQUoyNThVYlJFS21Bc2FZRTRUV19UdTFTSlRSdDlDZEQ1VldtX2ZrNVZZNEh3TnlpU01EeHptSF94YVhsR3JBMDlYZUxSN2VhN2lqalhjSDdXN2szZ2J3OEVzTThWbFhrMjdoZ0h1TWxkS1BnMWJ2d1hLc3UtMXUxNlJWdzhHZFdycG41WEwxbm52MzJPWnk0enFGWnlYS3lPMzlfTVY4eDdFZklvQjh0alpPYWFCSERQemtTdU5SMWxTWmlCSUhFQUtodmpDdy0tUG5OS3dtS0d5QkNiVjlQZXF6S0EzQWQ5SDliQnZxOXA2N1V2ZnZLUnR6OF9lTjdpSEdGS3ZVRk9uVVVPSlhER1hVWk43YlhmSndEU3dCWEV5VEZRU3BSYjExeTVyR1NaZFVBT1VHX1VEb2V4T1l5X2NENjdwdXZuY2xlNThaX3FzRDRvelBfNkloYUY5RUdNMmE2R2xEeUhvOVktOTJ5QlYtTHNjZjYtaUFvZWhVYml0Njd3Uzh3aFUzYjk4b3JMVGs2YjF2MW1SMGFKQTB3NWdoTTF2Y3J2UlJzNGxjdUVpelRfeENldHBWbUZycU5mZVBybTlZUzhLdno5cEppaGhnYlVabTYzZUtvSFBuc3h4dDJKaW81UElXZGEzdnFsaTc2NF96T3NHQzR6Z0k2T282NUoyeTJMSzJOeUQ1TEZVWU9DUndLWGxKTlJhc3NWYl96LWYzN0QtSVdRMEZyZkRReE9ON1lkNE5jSVdsSVpaOG5HcG13ZnQ0MXU4RHc2eWE0Rkx2QzU3WFJOemQtdlN2T3lINHQxaWd3YkZZZEZwazlMRlk5QV9qRFhkVDcwdkppS3dYUW9nRURXVGhNWHYxVkdHczFYWTJoRms3NGhrNDliVG55TXpxV3RBY2xjcVQyQi1ISk12bWpxNXdYTFB5WEo1b2FMWk1PVHg4a0w3NjdtdVBMTWU4SW43cTFZa0JRQnBxa25pNXU1bmlDNUhvRXY3N0MxaVdPX3ZsV3dpWXRtX3F1TjE3ZjFtLUpWOTdJWWdodm1US1VaWFBhZmhDTTV3X0tVQWlrWW0zamg5TzFuM0Q3WEpucFBrWDI2RDhoRmtsYjhnZ1hIeVZKNW01U2tpZzlXNTBPSVhyanVZMHcwRWhYMEQxYmpJbGxpRUl5TGswUlNycm8tZjlFNGVXMU1GaHJGaXpvSGtSV2lZYms2eUNMRTlPZWhlblhITllrU3BaQlAzcXNxa1llZVlMTmNPcGphSC1pMnFXdTRzZHFaZmMxaXJPMEhHZF8yMjRJQlQ2LTA1XzBkZEs2ZnVIWmpuRG01d0pOUm14R296Yy1WS01FNm8xeGZ4VFV0TVZQY2diaDBHMXN0MlhGZEpnb0NEdXRFdE9WRFBicjRVdUxMN3k0RjlYbWhIMGktWDl0SDQ3emFEbTM2Y2MzX3l6blQ3WFBPejVtT3VJRTZTV0NWSjVjYVpIWXJ1Y2M2cGFiTjBaVlVVQTR1eWxPMUdoSFViaXVWNjJjWDhYQU12SU41Um0xendpZEhoSmlzRmlreUd5XzN1UVFycUpYOWFvSm55Q0FHYTlMVnk5elV1bEV0aW80QU5Dd0VEUjhlY3RzR3I2VE1TSE5POVQtQ3dKeHQxcWhxcUN5Z3gtMmsxSXNDTFhIWjhrOUVNSTIydGlXYi1uMnBDMWhjSmtWR1hDRzk2TmhFS0pjdElfajBhQ2hVSDFzSzh1WGN4X1ZLaUpkcUZvdlBueVBWMVFiMXBiQV9mdlpSanBGdVFXUEJxY1Z6QlFJMUFLZ0Y4Nkg3bktEOUlQdnJRZVN1Q2lpY2JLU1lBeFhabXhvY0VGTTAxbzBwenZXcDdZaHNKLTNhbW5aX3hDd3Y4c05WX3h5NEJNVno4SENjNjVPQ1BGeTZ1RHkwS0JlNmhNQ3RYNl9INmFMMHRDbUNKcnVneWp6V2E2LW1FWnNQLXM3c3ZqM29MMVdNM3liMG9hUkFmT0VpN200cGxaSXkxb0kxOGJiQWxRTm1ycmtHUzBUSW0zNFhJVF8zbmlkWVNtUDQtSVJieGVPMjAwdEIwRTdmNWxsREJrUFl3Rks3ZlU3QWhnbVFhRmhHejRxU1NhOEd0b09xOXpqakRDRS1QZWo5czZlcGRIakpqWWdNQ0F3UkNoX0dPV05JNDMzVjdsOUxzLVNkSFJfRzlOQ2NkUFc2VlBEX21jT0JsdGVuNTlVY0QyUlZqN1l6elJ3c2xCWnprRlBLV29HcTYxVTZxRmRpZ2s4ZDRCYUdzOGRSVm95Nzk4bkxGMEZwb2RwaGExTU56OG9PRHJXWXhBSjB2TFhLT3A4cHIzWHByTms0Umt3bzVnMkxLRWNuYnZDOExXczlvQlcwazhtYTdza1lTUWR1WEduYkh6RVRqdENUeHZNZlBFZjM0Q2N5amdNMm1Za29MdlV2clk2U0JvS05mQjlDNHJHdHA1cVhScjNYRWRHOXN5Y2JDVFdCeDlQYU5Qejd1eW1VbzVib245YWdTYXRsSHUtZGJIMXVlVXBhMFhBQXdlQnp3b0s5dXJQTHpYay1rZld4VWpjOEoyNmtXTHVheTY2RWVWVFZaVEZsdXhvNjlVaDRpT3ZuOVhrVXhKeF85X21reUpITmF0VGQ4Qi0tT1dGR1N0SnhnQkJscUJYX3U1WVJKa3VrTXhkdTQzSjRDOTZvT29yd1BMTGE3dVlUVGl1LU1BbjVuOUEwV3BHTTl1Wms5RFdVQnM1WllKM3B1QTJ6NFA2SHMyRmRtUHoyd0NjT181Xy1PQ2ZGYWt1R2pzMVZPdE5mSW1TbVhfWGlaaGVNUWtuSF9pcTIzUm9GeWkyaTREMmZpUTZfX3JWLTIzRVprNUpISUsyeXNsOG5WQkZzUHNZczFNUnBmNDgwdGVBZlBzZFVxMGViOHBndUNlQXR5Y2V6cjdJMnRvNFc1NUw1QWFpdE1CT0paSmhsSURHNW5CTmFWS3dwRVUxTE94VkQ0TU95ODQzZG5FRXhJTEhOLTNTZDZUN1U2NjJfWlRBU2dyUGNfNm1hS1lzeHpSaEMyQ3FjTkVlUTZJUWpJSThyaHViQUZpWmdTUGdGM0o2S2dGQnAzNVNsR21MMlFROTV1TFFlUi1LTGFNT0tQTGZTRnR6NFA2bDhZdExGeUp2cG81aGVtN0tsT0p5UVJoN3FlZVVROTlRUTktelBfMV9zel9BbHpsbDl2RldLbFRNUVV4aUR4eF8yR21ybHZ3QkJuSXpsdHhxWEZMMmp4dTFZcjZhQmp2TThYSHRJU09sd3BCNmwzOG5TdlI0dzE1a2VsSUwyanVBSVdKM3RHTTlud3E5Z2RzWVJoVEFrTjBOS3ZqZ05sSGgyNEFqRkYyeE9mTkFZM2NxLTZoU0NwUjBNS1M4NGh6UUY0TEI0U2hfX0lzSU94RjRoeGVSRWp1VzQ2SklUbDFBWkRHXzdBaWhkZUlHaUtMMzltUGtxQWJTRVI3Tm9WMDFmbkU2bVlyYmlEb1J4U0xoM0J1c2h6S21udXAxRm95OUY5ZFE2dVEwWDhrOThRWXU5QUplTmxsWFYtV3FVZUc3NWhfcnVRZm5jQzFScUc5OWtQY3hZM1NaeEc1RGlHcG96Q3FUTGV5anh0cEFVZkNPQTV3ejlZOVpMWlVLdFFRSUREM2tUNDl0amFUUEU4ZHlFZHpoWG5RTVFSbVBud19tNGZZa2ptdVlJRWxkaUU3bS0ta1hRcVdLR1RCWnJqb0JSdUROWjVoSzRmY0g5VVJOc3VLeFVZRXRvbFI0Tk5iYmN0TjVFY1NLNzgtUE1lUklJX1gyamhtQzFYMW9lUVgwcjlqWFNtUzdTbTM5d0F4b1VFMlZhclJGOXpvS21nOHpocFRGVU1wdTVtaDI3aG9IRE5jYU9tVlhuMVROYXRhSVRvekxDVThBTGMwLXUzM2pNZTN0UVVqTDNrS0gwNW9PMHZrVmhiYl81UTNMQTdEWUlOOThlaWxhRFhtSGJ4X1pnT2UzX3FLdXRzTWNCWEExWHlzaXJFMURBUkx3XzlfY2UwbGthNGJpYmVUM09XV0JCRl92b2JFak5OTkpLcVd5MTBac3hPbEhPM281dEEzUWNPOVF6amY5STZHNHpoYldSTHZIdzRvOHVDeU9MTm1xMVVJVEpuMjhXZWtMM3ZQQnF4TFRZYnFaTnlZZUI0SUF4QzF1eHQ0ZEZGMDd2YlNOZ2o0a3JMcXFpb21lbUF3SkNvblVqWjdXTl9DaVY1MFFLUGdHcjduaU82enQtbjF1SWMwSVplb2VvcGdybzIxa2llZDh3YVQyQVZxR0FBS1NJckZSTktWclpsWHU5emlXTlRPX0xBTE01dmJRMDdPS2l3WThDbG1VSW0wY2xnVEI1bkYtNEtMMHo1bGd1MldwWGJjbFNyRUxXZ3BCZnZSTnRTQ3BwWlZrbENLdG5VVHRDVkNFU1gyVTI2TUJ3N1EyMnRZVXA2MFNsNUZoVGd1YmtQZVFNOHZ2VUpaWFNnSERCSEstS1BseHIzcGJqeDZmYlBMeE5vZmxIQzY2S0dnWGJ5QXpPZGFsZmlNSWY4X3AzOEVKdGFBd3NJUGNHZ3o0T3B1bm5LQ055dmgzay0xRmd1WmtFQm9PQ0Z3clNsWFpTbFdlMV95RWdPeTBrTHBiUXFQdXcyUHFta3JxblFYeDMzeF81aWlzZXRnbVZYdklZd0pTdGtzaWRDam1SRVlxZG9pYUJiVURwajlvenRlcnFSd1JQc3duN2ZXMm1palRhMjQ1SXNFTm9iWGRuU2J1dWdCNXhzXzE5RjNKTXpjTXhwakpkZ3NsT0x1dDdBV3ZvUkdwbmYyZUdZN0ktV1BpMzBLUmRQVVBYbldRRk9UdDMxOFZIVF8xam9vTXVrZjBfN0tPblExV1BqSDh1VU8xS2RZUERoYnpKNm9fNDc5OThuRFZPUkY0dGw1RzczQzlCYXpxazlhR3E2amFPNi1QWFZhUzhYVmhxaXZTR1JfUVhReUdPSExxQ3VrdS0xWVJGUXZVMkRMY2czUVVXdlFIWkh3ZjZQUzNERllzM0ZKT1NZMy1PNG14YThTeUpZenhXRFlUamVISnRJelJkT3EyYVFlNUk2Y3hEN3lWcGlraXNaYlNEbEhOSVlhQ1d5V0s5MVExb2ZhYWlzVVQ1VWhsbzh3Z1lPa1VnVXhQWlpudUIwX0dtLV84NDB5QWFPdUF3eDJXZ3Y0QzJJSFhMTEFLNEQ3Nk5lc1ozLUJCb2l3OGdQUTMycGZ4SUE1N1R1YURDRHlhQ1R6WGRxQlBCTWpEeW8tM1hMamZzdEx3aHcxbjBfVlZoaHNnLWx0al9Hc0g0QV96SFNKWHBfbXNOV3RndGpCcDdPVlNmcjl4cjl0WS13Y2VLOVYyc2xEWGN1eVNRQmtQWDBTR05oSkdIWG1jMi0tVEI1d2ZjT21aSUlJbllXVjlqenluS2pkc1I0ZFJQU0NQQkNqOXBuQ2pUdEJfUGNkMWFpTlY0LXhzdVd3ZUlXWGlHY1BrdFVwZHFYWnhaRGJuY2h1MFVfNXlQeThaUks4U295ellLWC1sNmtzbS13TWtpbm1aTWRlWGdtSXNSelVhZXA5VGF4RzlFMUNhWUE4N2VDd3BtXzJIUzluQjczd0N6ck9SNXEzc3VLZDZOMUVha2o1NVc2dDRKSDM1T2ZsQzdqWjZKZDFrM3JUb1dRUlVrcjVDcEh3V2dtbHJ5d1FiOGphMFotX2gwSk1mSEEtSi00d1FlSDJxVmdmRGxrZFJvRDFUYWdpLWpqUVgtWWRFRXZmWmJZZThkRUJvbnU2aGozSGRPNldxcGZPMjJEZzFrTTBWWmxlRlJEUjdoTmY3Qmhad2FNdzBsdXh0M0w1RGVfWDNlVDNtRnM1bHFfZW9UWUFidFNXOWFDNXFaTkcwUjZsZ0pTcTlub3FfdFpzV1lwYkd0UEEzb19GMEJzZmVFX29pdTRhWGtuYnpMLUpBMzBGUkN3VTVXMUhNNEJIbEJZVWNoWnZreXdFSnIwUE1TdG5ObFZlMmZiNmlZLUMydVJtZmxHRnUyckRqQmM0UndKTTkwOG5nX1BYNUVSbktwQUtlRjRDM3MwZDVKMmVkNk40RW5PRU5TQ2Uwc0dFWkpSM1ZFb2tVVnU4cmlRNFRuMU5KT3kwenhXQ2x2bDU1YXhrb1FJdzZmQlRKc1dhb2gyejBZWk1LUFZmQjRBaXhuSUhYcnBfd3hNb1VEZWpmV1NQRDhSVFBJR3hNZ2pVTWdUQ2ktMjlGMU5WZzhEX2JvZ05fb1JFMXlVckMzUDYyUHRwUzhtV1U3WFJEeFU2cmVzczNqaFJDempyZXVhbWxnU24tU3c2ZGdfb3BNTHRzUDhjZjVUaXFvV295MkZXSWxRd0hZeVJPSEtOY0ZUTGZ2bTc3T0hueGxMQzZpVmhLV0ZLQjI0T0FzQ29tN1R0WFU5bnpJRFRZNWxteGY5NWtiUXQya01QeHhTOFQ2cm5rNHNmSFJPVlBuTG1PV2R6bW44Ujc5YzU1N3hFdG1uSTlmU2hEakdQblU2UTZ1dHBuSmZQbVdHWEhXX2k2dkpjcnhkUXdZakw5V2RVVHh5d3Y5X2NoWFVyc2JGVDl4YVA4NFh6X3ZyTnBtREZ5Xy1zdVBSZDZ6dUNJM004NmZQMUtlbUtSZ0FfYS1zaXZHMmVROXBCVmRGUXNkTjY5WmhUcDhSMlpNeUFIRWpNaVBYaUw0RGlqblo3ZVd0dDUwZHpNQV81MkVLczVORlVSWDE2dS1hdm52cFpwOERQeFdOeHFMdDEwYi04QldQWUd4QjRwZUZGdmM2M0J0dFpudGUxMnlvVEVndlFUZ09nYnJ1MnVjclpWTkRFazZzV3Vic0szd0VicGRBcHNNQy1YUU5tVEktNi12clpNZ282aV9DUmxpYVAweEg0dTNVSGRSZUsxekEwNHpnVHQ4SVZid3BkdVl2eEgtd09tcGc1bHo0eWFPd2dOTjhheklDNEM2Q2Q2Z0g1MERBRl9RRC0ySGQ3WTVLWXZ6VFlxdXhHQU1ER21kMjhOcVRWMXJJbG9ib3pIN04tdm9XYnEyM1FUd0ZrZEFzNjlrbnJsSmUwR2VGdFlVZkhqLUJrSnNIUXhXbnFwT2pab09VclQ4TEo3ME14Z1IzMXBXdmhxWVJJUWlMM3A2OGxwQ3ZjV1VUb0tCZUtyY3pvY0ZLSTUzM0hUdTExemNneTc0a0lLMmxwcmRCS3lCR0RjMmxRcHFiVTYwUG14V0t5Q3VYcUZkaC1HTUJ6eFZkeEo4T296bUJZQnhRaEd4cE54WW53Nmp2ZlpneUx6NWI2UGhZNWozcXVWaTlCX0NGVkpqU25RbWJGb055TzZjMEltNVVWTU1uY1BlazJwRkRzdWtzc0gxME50ZGNsakwxbnREdXlONkFVR2FPNGJDdGcyb3RJUmdtUDZZSnQ5ZUMxSlZlWW5sc2VMZmU0QTBEVk9FUmJqQ0hPX0hXTWt3MVFzN2k4RHZMbEFya3JvSzR3LXNKUGVjMWh2NjRUX0dJWEVtQWhNM1A0V3o5amw2V1B6THFUekJSU29JcUVneS1xdVlqNUltNDVvN202Nk9jeGpQcjVQSG14NmRoUlFFYjlaS0h5ZFQ4SFJBbGttMC1FVzdjVjd6a01UcXhZY0NpaFc4d3RxTE1vZ1lUeTBqTGxrYVE4OERmRDhkNWdLcTZCd09VYmdnMEJlQkFXeVFxZW4xM1pEVEg2cFUxaDVnQnNhd29hVkdoNF8xMnhrTEJGMW1Ga2ZRaUk2cHpnY3RKX2l6d0lLcm1GVlEyYWVoV2czNGUtS2V4NmRIQnllbHQyclJDZmdFbURuc0xPT2tUY19LUmR6dC1QMTQ0TTFSaFA2d2VRUkF4bDVIRXpBOEt0b1h3T0Z5eUhtWWxnTVBmMG1xaTBzQnRjRkM3YWJ1V3hGemNHbkdRTDF2eFBNUG9QRnpqOUswV2RINVlpM2RmVlBhRWNRbHcwQWRGQkZCNklfWXljdENrTVFvYzZDTjRyemdPM3YtcHBNNWdmdXNqSkJNS1dhUzdmUlFzbHA4ek9SYm01TmhDWHBUc2xsMllVWlNPWVNWQi1ZZGs4OVI5b0FCN0Q1WlFxbWE0dEtSMnBQTmVfSkRTUzlPQXBOcnItcTlWQ0V3YXVJRGJNN291ZjZVSHV1Z3c0RkozVUJkVS1xcTNqQ3BRRlQ1UWhaTzFRbE10SXV1SVNYMWl1cUJXdVA4SDQ0WHhET3Rmc3BiQ2NEZnIwV1BwREJFTF9sYW1PV1NyaVRmOWRGOUJRZnEzZ21vNktVUk9CRzIyZDZyM0FwNHdodmhuMVg4VThBQl81TkRFXzZIUHVrbGtrRFJpd3NBbFFndTloQkZqZ3Z5V3pyWERORERSaFowaGtHUGZZWE96YmJwak9POWJTc3RJaXp4cm1kVjJUR3FjNGtlUEQzX3V4eXpRY0pSTGdfUnpfNXJqZDNaTXB3RGo2aWhOSEo2Njcxb1RMNjFSaVptcDlBU3R5cUJPVzdSRXdwN05JMHRuNl8yWkh6UkxZOTdXZWdSWjlYZm5hSXpYb2JRVlI0V3ZERTduSHYzSkF4dkxkX1haQVBmMHFKY0RKYVFlbGZHZEdyOUp0N2pXaTMwX3FzbURSbDRsRFppUjJ0OUVReU01LVEyVUwxU3JmTnVhdUlCQnBzME5qeHhhLWx0QW9sTlRXMlZteUMzakFvNko3eEdhd0RTZUxFbUQ2Qk1iNDJlOGo2d0xkSXVCVGFad0REb0NOODF1OVV0d25qZHdIVzF0TzJFOXl3U2s1RjhRZGE5Wk9abTF6SzJQMEY3eHEyWDF1WWE4S05NOWl4Q3psV3QtbHA2a1ZhT2FvTGhIUF8zdkpzRm1fYTcwd05ZNTF3V2cza3k0UVZab2FQWW0wU2ljWnpFclNMYTF4OUFlNXVFVWJ1ZTJVMUVwSktic1ZkbElubm1fRmdob2p3MTBMX2hWaGdETnpyWEdzamlWbVNBZjlnUWNXVGlCLVVvQUlpdXdpYnhjNEZTLVdYdmdUZjRkNnU2QnJ1aWFjTWM5X3lXNnZZWkpYR0VlakVqb1lDelJHZE5oSm5TNzNjak1pblNTeGl0RW5jeDNvMk9fNHRPM3FkS2VCZ0FaS1hfNFNrNTNHTjFqclNjM1FVSWdwc0c5dmxZUzA1MnlYUGxBR0JpVmFWWFFJOThlbjBpOGNaZC1KdFYtc1UyTVVuZHdHdkJ3bVZabFFHSC1rdTI1U2JTNGRla1o3b2xrX3pqMTE4dF82ODVuTWI2bDJSME1KUDdrbHhxaVFnbnNHcmY1bGg5Ujg4UXQtczlpTXBOX1FEOEZMVzBLU0hqREE2RnlVVl9OLUlMbU1pSTRnd0ZGWXFXN2l6OWNYRGF0UEtLdnVPWG1jX1hidGJ2Qk94NF9GNDNDQndmS1cybUZBMm55Ulp2ZjN1WXY2SWtmaFpTSG16ZjFWLUphUVdLdEZwekZrRkVvd0hGRHdsNUhhSUdVdm5hcjdVZ3RZdjJyRG9jQjVaMjNyT0hOVFVqZ3FQM2NDc01QWlA4ZVBVeEhWOGQ2aXdZd1MyOVdLNmdGYTFfSU5NbUZyUEJLRXRzNXhkcmZhSGpneEFDNEdwNTVXR1liaFJKRXlycVBvNVBJSlZFSFJrY0N4dVdoM0cyZklIM3JUVDdyUmRhcnZFWEJfVlhZTmpxbzF0TXFXb29scURtY3FreFlNYUVUcWFONjBCeWhROWd6RTllMGVmOVhvUTcyM3I2R3dycVQ0NF9HWmxmSUVvZG5sV0VPZFRNdmI4cm1ZVjhmS1pnQmVqTkNnUW5oLWhuMElIUTVrU3BOcUtHellwOXN3Tm9jYTBhV0NtT2xUYXRzRzB6ek0zdEg3Y2FUSW50aTRzaFB6Sk9YdUk0OWtLcG1SZjM2VDJQOWVxbjZPOGF6c196SlFTa0dOYndWQXg2WDdzSkEyOWxvbWVqTTlqZEVhSXh4VTJKaTExR3M1WVhhUVNxNDZIcEl5MXlUY3lYcjlRQndKelNMa1MzOXU2SnhmQmw0UjVMM1NPamJOeEg2RWpsZUpJRVo2NG5ZVGNvTTJaYmVNdjhNcDVwU0tJWWk4RUZMYmgwMEJVb3VaaUNKbFFKU25GUlU5MDltWjlnR2JiNGdxMnR1M01IU21Hd0JSMDBwTEtEd1RoVkFIejJiMlhDZm1ObmtFMnE2c25ra3VYajBoTThyOFFScVhsb1ZHM3g3aVhXeG83M05SS2tJcGJPbTRpRV9RZWxaVUtPcW9NbFc5R3Q4OENpNl9EaG56RFRySXZ0ME9fclEyTVFPUXlOWEZuNC0ycG05OGx4ZXBKTEdwbzIzOXN1c3RBNkYyalBxdVpGQllsVFJNMVpVNGNaRU15WlN2MHN1cW9DSkZ2eTVuWkN4NEZIS3I0VkJ5dGc2WkhKQzRlYmxIaC1BX29QZ25NbXhSRGxiNHJsZFJMVGw0bi1pVG1Mb0htaWlFU2I2emtYVVhaUjYtTjFYSV9nV0F2TjlzNkdEV00tMEV6YkZPc1pVRGRxM09tT3FaS2Z6dFlOdlFSWkY5WW9SODY3MF9rZ2RkTndGT2NacWNta0daOWQ5UUp6RDd5OUlxYmtnWEpHbXdBYi01UFRWLTY3ZDVIbkFNb19ad3VaYi1TUGx6MW5QNUZHQ0dCb1lGMEVsRG56VVRqSTVUYm4wa0JNbHdQY3Y0SVBKQk5KUEh0bTZfclZnbzV5cXJoWHVHaXlXNkQ2Z0UwcGlna2JZQURNTWV4dnFxMnJkSzJFbzZCS0FobkRhc3F6Nkp0Y2lBbGFuWHhFbVFmR1o1czV3cUtkYmZZQk9wSUtEUGxWNThUX2lMS0lfZFZNbGdIZTFFWWs3dGZLeEtyT1Ezc3F5NWR3NTlObTBhWENTV0NqZmJqd0R6ck1uc1lOTGlWR1YzMzcyVVFBSEJYeGxZYU1pTG9RcVE4eGtkZlRqakJJZm11SXpPRXBCY01rYWVXMjNIWmF4cEZoQ0dGRy1XbjJOd09wSThoV3lyU0pvSnZScVZUSmlmdnFfdU41UE80ZXNDbVY2MmVBM1ZOZ0U2YWdIeGFZYkxlSTJrNmJzT3BnMm9rX05obXVxWFhGSGJSenVFQ2xlWXprVVBuWjQyWmk0MFFDZE44UFdqUFlKb0JYV0czbFFCd2dGQ1hIZGp6eXVjQXpzSk5FYnpqd250TjdRRWE2Y0VhZHB1OVpmekJubHBRWG91UU5rVWRJYUVlRW5vX0FsVXo0WGp5WV9QS0lYelFOOUtraGYtdXRnUDJfUnVnTi11M0h0cWlrMlcyOVlUanlYTXVnMXN3VDlsRHQwOFhydnlFeXJ1WEQ0bDd4Zl9kZF9aTWRLa2FhUll6Tm5Xa2J5WjVEcDdSU1MxeUFEVDdpcWNqbXBZVkVXQW5VUlk2OHE1Z0ZMX0UzWlVwUXc3dEItSUkxV2s2Y1I3X1NCR2dPRXNSYWhNTW54YWhraTVpaGpmQ1ExVm5BU3FDbV9OMVZOU3E1LS1aWS1aSFEtalBhVVprdjZ6WWRrSDQ4YmIyclBwNWpvRmZ6NkhPRnFnb0FSeGp4VnJfWmpFaEduTzY3Uk9WalpUUHFRQXJzM3BkemU3bEdXdklqNTRPM1hRTUFXODBhTTFvVTA3cEl2cVVoYl9iRGM1SmtYVE9nR3l0LTh1ZXA5cGJ4OWlpa09fbkJtdkJaRHZ6LTJaR3VNM0tLekVDdkZJWG9ZZjFqX0tqSVRtSE9WVTd0ZnZnZlU0bHgtdGhJc1pfSl9RZ2M0Y1ZpUUNDY0RsSFZZbWIzSVQtb1dWYlN2ekVYQkwzdEtLU1FRV0pVMENwS3k5U00zS1NuT3VzeHNOVGhnUGhSNWFQQnJ6OTlLdWlXWmF5OUg4U2hjMFVuc1hWalJscEpqRm05bVFOdjZXUWV3VkNjX1pQSFotcVljT0RZMWMzTlNzNUdHcWJkbmpDSlo5M3NrX1RlV3dnVC1ENjkwWVprLWdPdHRrUUhVTUE5Z20yd2dLVGZLZExIbHVyVmoxSXBFcnpySG9tai1qZ2I1Tm9fejNMY19yekRWa3dtRllsZkVKbU5RWVl3ZUZ3S29RbExsalBYOHdCeUFtSTVWYkhmMVV0dF9VY0hDRjduUExxUTlLTkdyLWZDUjVwblViQTRlTVhUM0xpUDFHQjRtR2pVbmQ2c2tzMmpRYWlPNXByWE04dFNhNHRacV9VOUlZY0tmVFRRMC0yWkRfYXR0THQ0bXl4dHR4ajRIX1VIV1VLdllQRG5ZSUkwMFlWcXhtOGFZb2o1V05PdXR4bkV6UDV0SklBNWxBcWtab0ZiN29KY1NLdHJnUHVhenhuMU81OTN0NGtUY1NFYzFnbnp2T1dNLWVydncta282YjhmOTBNUVpMU0p6ZWNaU2EtbmFibG9NVXVPWjN6d2VDcmFqdE9SUWpObElOQkN6VUh5VWZFa2hNTTd0ZVVpTldETmJ5WjE0YUc1bVV1ZlJSekd4enByUzUzYkZTSEd0MC14NFVveEp3U0tqYXJfaGlTdDR2dWRiOS11QWxLbVRCOVktOGxIb1pkOE9CU2piNHpYVDFPWEhxcFdkaHIzX0MzVHZUUGJGYnA5M2x6WFVjeFRDbjhXampKRm5tcnIzQWZNU0o0N3ZqMnVyNUowYTJWV0NmTERFdXdnNUlIZVVERVdyWGNGdGVYelpBbG9nc19JV3ZVUS55d1BjV1F2SkVIN2kwOGlOZzFPRWJR"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['21957'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [9b2d7f88-4ad6-11e7-9eae-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/restore?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/f3262e3803ae4c4e8645545f33c11136","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"wKb3gRM-9I2lRjC067HNDmPFCIBfJLxpSj8kSL_BM-vYdq8K-au0x_D_25qw0APmlOYwRrT0yYXC_BvqHymN9Z1Qul5KxcYQR8BhicAy8zwplbwle0sbcl_kfb1gEml2mNGR4_wN3UVPfcMz-sLKytaq4YaRUOlY95dqdh95l81BU1SfLpfc3ikImkazOzGxx7RCh-ltN6rEVYfghHMkoS26VxjN19R6LJ9IcJyb5plWPYRue0Ph97onrMDvcRcKJQL-dIhlDNpCnBPMIH8UkPQH8ofFKtJKKsHKFQaEYkF6XYBzUQ1muJuYyhsJZYRjNhAcKnjxamC582FCDy-c9w","e":"AQAB"},"attributes":{"enabled":true,"created":1496767121,"updated":1496767121,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['656'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:45 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9072b6bb-325e-4dc5-b56b-4ecd8ddd57f1] - status: {code: 200, message: OK} -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [22744098-4ad8-11e7-98fd-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:49:40 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [6b3c825e-6c39-4f63-a8c1-f2a16499d7bf] - x-ms-ratelimit-remaining-subscription-writes: ['1187'] - x-ms-request-id: [6b3c825e-6c39-4f63-a8c1-f2a16499d7bf] - x-ms-routing-request-id: ['WESTUS:20170606T164941Z:6b3c825e-6c39-4f63-a8c1-f2a16499d7bf'] - status: {code: 200, message: OK} -- request: - body: '{"location": "westus", "properties": {"sku": {"family": "A", "name": "premium"}, - "enabledForDiskEncryption": true, "accessPolicies": [{"permissions": {"secrets": - ["get", "list", "set", "delete", "backup", "restore", "recover", "purge"], "keys": - ["encrypt", "decrypt", "wrapKey", "unwrapKey", "sign", "verify", "get", "list", - "create", "update", "import", "delete", "backup", "restore", "recover", "purge"], - "storage": ["get", "list", "delete", "set", "update", "regeneratekey", "setsas", - "listsas", "getsas", "deletesas"], "certificates": ["get", "list", "delete", - "create", "import", "update", "managecontacts", "getissuers", "listissuers", - "setissuers", "deleteissuers", "manageissuers", "recover", "purge"]}, "tenantId": - "00000000-0000-0000-0000-000000000000", "objectId": "00000000-0000-0000-0000-000000000000"}], - "enabledForTemplateDeployment": true, "tenantId": "00000000-0000-0000-0000-000000000000", - "enabledForDeployment": true}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['938'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [22ec1bd2-4ad8-11e7-9407-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest/providers/Microsoft.KeyVault/vaults/pytest-shared-vault?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest/providers/Microsoft.KeyVault/vaults/pytest-shared-vault","name":"pytest-shared-vault","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"secrets":["get","list","set","delete","backup","restore","recover","purge"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"vaultUri":"https://pytest-shared-vault.vault.azure.net/"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:49:41 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1139'] - x-ms-correlation-request-id: [bc52e13a-f021-4c8d-b451-5b88d67f19af] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1188'] - x-ms-request-id: [bc52e13a-f021-4c8d-b451-5b88d67f19af] - x-ms-routing-request-id: ['WESTUS:20170606T164942Z:bc52e13a-f021-4c8d-b451-5b88d67f19af'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1e72a1be-4ad8-11e7-88d8-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NTc1MDE2MjQ2NnwwRTAxREE2Q0JGQkQ0MzFDODFGNUU3NkJDOEExRjFDNw?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 16:49:34Z","status":"NotStarted"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['64'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:49:44 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NTc1MDE2MjQ2NnwwRTAxREE2Q0JGQkQ0MzFDODFGNUU3NkJDOEExRjFDNw?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [5672dc05-24ff-4087-bbfa-1c4c425faf5e] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14997'] - x-ms-request-id: [5672dc05-24ff-4087-bbfa-1c4c425faf5e] - x-ms-routing-request-id: ['WESTUS:20170606T164945Z:5672dc05-24ff-4087-bbfa-1c4c425faf5e'] - status: {code: 202, message: Accepted} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1e72a1be-4ad8-11e7-88d8-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NTc1MDE2MjQ2NnwwRTAxREE2Q0JGQkQ0MzFDODFGNUU3NkJDOEExRjFDNw?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 16:49:34Z","lastActionDateTime":"2017-06-06 - 16:49:46Z","status":"Succeeded"}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:49:50 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['107'] - x-ms-correlation-request-id: [8689f614-3261-46c6-bc03-a49ea4a5b092] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14997'] - x-ms-request-id: [8689f614-3261-46c6-bc03-a49ea4a5b092] - x-ms-routing-request-id: ['WESTUS2:20170606T164950Z:8689f614-3261-46c6-bc03-a49ea4a5b092'] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [29303106-4ad8-11e7-9caf-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/6f0c928697c74752ba5d79715f5543ec","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"2T79A4j0k8OUMMSV25jsAjbMLCFXftjKaQc1S1gfgzy8ZvxeaQoIxvV0rGTdSCyCiNXepLbMLzj7Sahj11AG-uF1eEPZV6WhgKcNA15I1RoY8krQE7uk02fVWFuFQhhxK_Yrvv93aRxXKPpdtMS4iddbIE79SmqoOtDf8JKf3imMQG8xJ9xC8N83qhEqep3bcdpDDjUMYDDhVaKmRhJpW9ZGmSY8RGrHSZm-9OrZUHCBVnMk_pMM7b3W2RUvfGAvvcx0lfpV7cw7gorLt4NpsJrbp1_z-EyfRueCH48LyeUmO-qtcadrKDOoJW8L_ZTpY9Ikqt44Iyr973I8UlWY5Q","e":"AQAB"},"attributes":{"enabled":true,"created":1496767794,"updated":1496767794,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['656'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:49:54 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [360d7b14-ad50-45b1-aaba-eac3be0b1229] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [2a2e52a6-4ad8-11e7-9159-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/backup?api-version=2016-10-01 - response: - body: {string: '{"value":"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLkZrRFJjTGUzdjB3bGNKeXVCXzJQWU5JcGRlaW1XTkxTNnQ1RTNsSnQwd3pnOWF4cjl1REdMSjRPZW9SS3p3RkxBUVdiVXVlQmpSSHZyX2lDNjVVVjJKRWRtTlEzbEtyUFFzS0Z6bnZEUEVvRHZJTnhyWTMtQUEzLWRoODAxblhWNW1IRWM4cUh3R243M1Q2RXI5YmhOc0tqUUs5RW0yZHRuXzNINm9XRmkyNUJHOWVsTjhlQ0xjUzY0UGJsRnJGTXZOOVRJMi1OTmp4VUZJcF90ZnluZlZMQUdmQk1wLTZvM3h0Sm5jbTREeDQtRmJJbWpkbjQxdHRneVBfcmlkLW5NbUVHYUwwWUppRlJfLVVKVXRoei1LWVFCaXJtWTh1dHRaNEVlU1kzR1l4QzRXUEFVUE9yc2hSc2pxaWJCNG5QaVRueGMybHJXdXhwV3FCbnAxWUlzQS5kaEpqZFFkVlNhWTVxMUpRdnFIWEdBLnJiQl9vSUJucFJhekRUNVlaQkxBSDN0SThTQTE0LUtqdnRMMHlYWU0ya1g5Q2doTGc4alA1S2otUzlBLWZhZ1REdGtvcUloUVBzeDNvSF9xOGswNkxDSHNWR1ZyenRvWkN2QlBrYkhCOGQtTVJRbE9CcEhlQk9ENUdMV29VbmRERHh2VkNCRUpQZndZcHZLalhtWloxSFNTOEpsc1RtSks5ejJmemV4dTlvZGttVE5pRHN6U01kWkR4RVFCVlVtaWNNWWxONWlFdzR2LUN0MER2eXdtRThGYlJLUmo1cEUtREU2cEIycHRWRU5SS3N4NzhkU1BuR2xDNUhnaHVkUDZhOFRxYXZvUVV6OUROaTdKOWhaZGQ0QmhwSlJhTUR6TjBfdEFXcWtfcHU0eGgtZVNVYWRPbFQzcE5kclhadXF2RnNaOW9BN2hhbkdWVjYxUXZRdEhmdTJYZUZ5MmVEaTY5Zl9IWm4yTDZpblcxa0RIb2NYVUtQSkNhV2RPQnd5R1dNQ1BESVd3SHVsWTAxemRqSlR2Ry0yYlpSaFRzbW9kbWdQQy1qOXJjbWpOcDJzSWdLaXVsb2pBb1VNUE91ekExT3Y5MEJYT3djeGd3UHUtMmdmZ3RWLTJNQ2pvZkdoR2gxeHpvbmZqb0lJdDUxcEFyOVl0TkN0SndGcW5hT0JITXZxWkVqM3ppZUZGbGtYOW5wWUdXUndUdEtfWk12VXpaWHBWbkJxNi1aWXAwMTR6aWY0MWxTTWlhMmhYRTZKOWFycFNUb3l3SGxJTkNxV1QxTUwyOFBoM2R5cDJTdF9HTEJWem5KNF9Pb3VPSGpnVlh5c0FGdDctakVQRGxQTUJQeF85cHRIdE1CU2R0THJWcnNvY2F5ZU5uOHBFekdGTDRRcVBhMVExYlVQS3RicUZLbm01M2JuSXUxT0tDRUhfTE41S3lRdWl5Qm04WThuUV9HWTRYS2x0bE5HY3M4QUtwV05yWE9IdG5OV2lRYy1tWmFTd0hYVFlJdXhlUHh0eEZXUDFhVGNsRU9QSFZxYU1zdURLa2RFSlVGakg4T1I4S2s3OU85ZGh2bkJyZF8zWE1vZXczYU4ySEpaLV9WRkRqdXI4Vy12NzBoTDFHS2I4ME1JdW95cU9RTVlsQUE2emNxVm5DekNyVHhTcVlwTlNYR0lZQlRxb1pKWXRrMGlWcE5uUGR3RjhaUUZHcUJUM2gwOVFiaHpPeGxtV2Y5SU5kWDNBdHJaV3RhV0NMYmpieEw0ZEhjc2pINk04alJIaDFlcEEyWVZ6SV85aTgyZmx0ZW54NUxTUHd0OWJ5bFlFVlpwZjllcVozNGcyMW82eUtReXNJcUt6eEZzM1ItdW9leXZ1MHZzT3R6RFBjaS13Ml9IekU1LTAtUzhWLWVsWXZoXzRCMHo1VDBiaWl6blBWYWhCdjNvWmNFLXNBNElLUF84S1VyZWozdVpTTy1fbzkxSkhhRXE4RjloTXA4cjZVelRqMjJjVUs5X0JlbTdOd3RHT2htNWd4dVlnS2o2N3dZeXE0ZkNyLUh5OFFSVTJzbjBiazVlWVZ4NGNGRVN6REtxWDFhNHJwdThMY3l1cWZ1R1NiTFgxaVZmUlhRVVB2b0pFWHdYM1hreVluN0RGN2JVcTRFd2ZlNkkzYkNNcXJQaXdjOHd1Q1o4X0k5dnppX1BqeGI4MEJ6T2JGU3JsVnZUV3VWWW9OdG1vRGtqeEltMFpvemFaY0pBalhveTBxWExCdHNVWTdnODdNdmUyZXNTTXVNUmF3UDh3cXRmRXJ6Rm0tZWFHbDV3SDBOUXVwYUtyTE1GZU9IdGo5ZFloNmZjQ1RlOHZaTnZjVUNvcFlwTWljcFE4dnh1NjZQRUJPeUxOY2Uxd2JlZkpteUR5M3hUSGR0MU1NYzdWejNDM0s5MUEtX2RhZjJnVWdOUU1OMFVhUjRLeWZvSUYtUGNsNUlOWHU0YTNNUHJXdjNwTEIxN0I1eEpVNzczS2J6Z0wtd0NZTXFNc3Q3WUpvLXhiNDEzSkhXVnBjOTVGRktUWHNCUzlxV04tTjZhaHJoZWdnSjlOaUstQnEwNm1kZ1BlRHFzRWJYbk56U2x3M1pMWVFWT1VZVmpKS0xpWFpqbHo2Mkk1N002OFp3VkRSTHRkUkRFdjEwdkZnRURVVS1rWm9fOGhWUERoUVNCMWoxMjdHMC05dnUwOFc0elcyakl2SFd4OTJRUzZja0tHMHE0VEh1TnlST3VfZXRyYWFTV2t5MEM4X05TeW9uS2w3ZW9tUWl0ZUUtcUg1eThpZ2ppRmp1Q2wtS19iQTc5YmY1S2Z4VUtOMW9FSUdMQldJVEVJU1UxalEydFRkVE92aUxtVnlyb3ZxbkZuUGZSdTZIb1NQMjltOHFVYWFRYmE0VTMwaHVoVWFNWnFLb1hoeExCdEdrQW9RX0hrckpDenppM0JVRFRYUEg4NFZUdW1sSm9SWnBGc0huSzFGVGtfdzNGVXd5REhEZ1J6RmdBNDhHY0NMLVFSRE5zcEtrM1VpY1FqNHpwYTR3V0dKZmpkLW94ZXpiU3pPaW8zU2g1YXoySExLNEM5TmZmRmRYcmZKTGpIYnpJTXVIZ3MxaWdmODh5UGJMMUNqbjF1TkdTNUZ4N09QdlNfOEZUa2U1QTlhbTFON3AxOU9KQWdxUDZFckEwOU5ULU1GUlJ3NHBCcU10Q21xQk1VRjJQMnNIQ0dNTUR5NHcySjNIbzZsSm5XUzJNMVVEU2o1dkRFRDRXbjNPdE1PR3FINkh1YjczWWduSDNqdlFMZHcwa2lJd3cxeElYeFZvM3g2bFVYTXRuZkRGNGgzR25DenZscHRQSDc4WDNucU9UNk95SkFHQjNDdmJ0TTJRb0k2MGhaaVNPaWxJQ2ItQ25CRUJmUTk2SG1YQzBsbFJZNTBSSDY4XzRXNGxic21YalZMS1c4YWJSdWhOYmRESXU3QmVUNzdjRThFdHVYVjhGX1FzY3RsV0ZfVW91bjNqLVp6M042ZVV4SXlXT1hLNDlIRDZlZ3o4bEp3VUlDc2xDYjZpTTA5YkswYmR4NVpRYTZZZWpEcGN3TUVhNnRqcjBkYWZIeDB0OGptd1lHRjNQNnRRYkczQ0djTHZuVlZ2aHdPdkpTbVZ3ZGcteHRwLW5FVGhCbzk0VEJiZVlKOFo1MUlacG1OemF1eHU3Nkh4dGRPSU5RU281R25lTHZEdU10X2ZGY0hxMXJrcFgxWWlQOW56Y2Y3Z2pJR0twdE9KUVE4U2NiRUJQLU9Gc0dwN2k5TTRWaXRfZVAyNTRHWFQtS0JoQTBraEl0RGIxbWhweWRzT0Z3Y0pZQkJwUS05enl5WHRqT2dIZmVKWlZtOFRwUXlncWxfdnYzdkxDRUNBNnJlSDMwWlVUeFBTSXVZNy1xSkJxZHdEVjdkN1hSMzlaS3gtcUdtdHBSaXpRSkFDamt5aTNIazNDcmxEZkNIMzE1R2E0bGNNU3Y1MVdZbXlHQU9heVowenl0TXlYUG1Xa2FVY215RXB1ZGFxUlNWUllJX0l2UUhaYWpTdnN3TjhKeEhjSU9XUXN1TjlBc2h0dzlfaFZxbk5aaVN6SENFZ0xUVlBFRVFzUXFlTEpvMzlTbWZ6Z0paaFNHNHFiZUlNS2FlOFlpNUR1MEU5VjlTZ1hHN2ZiNW5XQzNZXy1oa0E2WGg3ZHJGQkROX0xWMjN2ekZVc1JFQmZXd3VzYjg0Y0RydTFGOVR4ZVd1VFNWSnhtVkUwV1RkdnJHSG0tdmktWGc5bXVzQ1dHYWJCYkx6eGR4Y3Q2Q2JvYnAxLWw1VXRFUVZsSTFfTzZObVFHRFVXZkkwRndUblhELUtFTUtiZXkzVVZjNUNTTUlBbE5TZXB0RUROc1NuZzFTOXR1X1lHdVZabXpCVzNiZndEcHdOM0VpdklQXzNfOHJYMHAxN05aWk5FOVpEdXh3LXVDT3llN2RjeVktSldWMWMtY281NmZXdWZFSzVvY1Uwc3c5Vy1XcEx2T19lS3REMkpieGxJU3NmbUFhV0xGZTBCU21MLVh4MG15UGdEQVVNLVRweldlT1JFeGZ4Wkw0am9YZXBncFFsYjFLUjd4Y3MzZWJDSDBTc0RjTjU4S3hWVkJHVmFBanFEVXpnSnhoVkNLZE02QlZlM0VsVHdsZkRVR19nSGFaeHpkWERwbnZBZkF0NDZXdUtKLWhJYUhVaUpEM2hnWHlFZHpzWnBKWGR1aVRNSzBrNFdfRS1mcXNLRWptQ2JFNG9rcHVwdXppaTVuRjVmRHJQcDdvMHpLSl9hVUFCaVVNaW9GS1FfQmZ0dkdaSTJNajg2RjlsZ3dXWjFmUmNJVzNTdWRUMFdzbXRENDd3SVhOeWZWWEtaQ042ZnBlakdJTURhUDNTR1BmdkxYeWFIaTlNRDNpcWtfUnlnNml6MnpNa2ZEc3N3R2Q3bmUtbjNFeDZSMWw3MTRwWklwYUk4Q2J2Z3hiSGItc09qNGRWbHhpQnNfdnVMamZhQjdqTjBvQUN2ZzBqb0RPN2VSUGE1emJ1eW14NkNGalRZdnZpanRobEViYTVKZndxbm93UDRXSDlSQUVtb3Z6S2RMcnhTclZzeE40dXFSMlFsdEdwRmQxTEJoRHIzVkRJQl9XOGRKTnBwQVNrUUpwRnRPSk1EcGJycmFUTkFubERfTEM0SS1zdG1udlZtTVJ4N193OHN3d2Q3MkpQbU1qeUVLSFloSzc3Mk1wcUpXSjNRTGY5T2ZDMUt6UkhyUWY2anZxWmttbHRvU1F3OEl5MVlpV193eVQxbTZnVGdnd1dNd1I4SlBhSlQ5N1NOdW5FV25mVVdQU21XMHVnclh3SFdEMkxpdnllVnNTZ240RnpINzBZNjV6VTVTeHMtbnNLOXRBbkFTdldFN2pOVTA3TlZjLXd3YjVpRkw1ZVphdVkzQlAwd2NGU3RCWVdtQm5temtxNWhYcmZlenJhNzZvMWRKa3djTTVmS1pSUUhVdjE2Y3RGRmlheXJzbEdFQThwSVlvMS1wdUpweDlhb0o0ZDNIM0p6cmZNWWo4b2thWWNXZ1U1RWlFV2stSU9kYzhtTTJtWG80S21iNldlVTktdkpnQXNqZ3J2aFpaYV94MnNxa2kzMzFNc3h3M3hON1lHc0pNS3c1R2QyeHhmcDFqMlVZMWxkTG9uM2o5Nk12b1NKUWtTM3U4dDVHaXZyY0E3MHZ1X2Nla1o4dkFYZEFFNjFTR1Z0bFRZamotYjJybF9Xa2E0LXJyT1JOMzBEa09uU3h0S3lfVGduR2VibEpOcUU0cDZQblBMSTMwb0hwUy14bHRFTThzaW5zMkdYaUtNWXhhT2poenNNcGpCNUlPVEhuRm1tSDg4Nlo2d1lnYlc1M21MeHVWWVNTZlJMYWtMYjQtS2Y4c0FTbFpsSFJyMjJRLTJlNEM4OU9scDMtZXc2Uk9KWXJfYkotU01LSE4xVVZta3hiTnpqV0Fia1Q0TGVZX0dUUE1keVNfb2FaY3Rqem5JWmFpbzFkR0trWXptc2VGcHY3MnNBQ0FaZF9YZWt0ME8wVHNTalZ0X19sOWpEYU1JcWtBeXJoVnJBeWFhaUR1bWx6UjZ2cVJpbWpZU0NGd0s2aDVxWTdEdVBTN1NjdFc4WWlMZVZkNDNkRVcwQUZYb3BTUUY2RVpNRXkwWmR6c3NlOVJyVldJckpfUjNOUjhOLXBKRjVqX0tocVNyNUlNQTdvNmV4S1pTSFZYcGVJWENlQ3M0NWI1bDJXS2xCQTVZN3BPN0pIdm9rTGFabTBUdXM0VXRPZlVPSVMyNHc0bjlTeDFJd0FZbXRUa0gtWDE3ZFpKT2pGN1FfdWV5RVh1TGFiRGNhUmw5dnExc1QzYjdBOGJwVF9xejJhcW9jVDYyYUl4Vkg1Q0FCUjVOVGtFOVZYbEpTc1FZdl9lNFU3RXFFa2loN1ZYNTczYzRFSWxrNXFvRkJ6dlhHVXJSaVp0SV9iVi1BUjZYM2dyN0NOY1JQZmNfa0h3c1NhZGptd1dTVGJrQTFfY1ljTW14dDlCV0NqbktFU3FDQ0N5VFNJTGp2OHlrS2puUVFRTzZLcG85MzZuamltRVBBSFNSV2p1OFVWMHc3V084dDJHQUlrZkx4cXU3R0VuT19PaDZLbzJBdjhta1BkMVBXTkNuTFVWMWpTOVdLYVNHU2lrd1VDbEIybnV2cmp3MnNnNUpqSVhodmRkZUptdFNVejBRMXN5RE9LZktsZFZ5dUx6ZllCUElUMnJaUWxDaTUzUVp1U0UzWmV3MXktZ3ByOGoxTmo1OHJiUHpGLTlwMC1NZkR6ZmE1VTBiNk5NcE5ZU2dPM0RYcDBsdTdNaHJZM1FOWkJVMTd6V09UdGdIdHlxVERqeFMwV2hsYUJjMVlsenRqQ2daakt0U2JBR01QX2RqdXpWTGhjcXAxYWxQS09WRDItZzNQOEp1M2tJdkNtTTc0eGtxazBGaDNvRkFfYnNMdFV1MEhSMThucy11SEo4SjZzVElMM3V6UW1lN1ZBSW9YNVNDWTVHR0xpQ05Wa3RLb3BnQl9WQ19KaTVBblpiaXhLRWNmMTNTRWFhN0xVUGtyZ0xXOTJKamQ5YjM5REtYNEtNV21Ec1p5MjZYR0VuTzFGeHB1cHJWeWhObnRiSnlibUZLX0xEc0lYemx2RlR5ZE0xdlpWcEFQQjBrWHhoaGVSTzNhMFZUbV9IUDdMdGlIeEFKeEtuNFh1UW1CdERlSGdvVG45d0d1VmNpR3QwaHhfc05YWS1hOFgyLUJVb29BeXBOdjlxZmFleExJRGh0OWFRRFJqTkhmcEJQRzl4ZU1PSmpBUlNPaWhKR0xxYlFqblZRN0FRTmFVUkdUa05DeGQtWndPdVJCbkZBcHluSHVCMmotQVNPVy1kLVNpUWZPYzl6czBVdlpvUmxVS01XUWRGZEtwYXludWRFMUM1U3Q0dHhHRmV3S3psTzM0YTdwal9Vc3o1QkUyMlBENG1xcVZkVWJJbXVaYWlBblBaUlBmaHBiYnh1U2lsRXh2b25xVlU4VTRuRUo3aW9JbVhMTUJqZ0lBNW5TMms2QTZHcC1icjRCQk1DclFObFliSURtX0pyaVRNVk13Nzl2UUoyX1dKQURRdzNxMEpjVXhISjBnUEdBQzhYWGdIY2dxTFU3V3VObXloTGVPNEFHWGFTd0N6UWE2Z3FCa0hJeW05TkRJSGlZN1BUSk5uUHdOQXBPaUlpTlBfTlV2bU53U3QxWXlMcnhxZ192dkRrSFRmN1YtSEFGc2M3RC1BVkdua1Zhc01OMlhYTDhIRmtUZVFEMi1uLTRUUWVlZjgxa1hkT25FbXlGbG9lZ25qNFBBdzU0d1ZnLS1qT0lMOXZKa25QTTVmRTlsYTZYOUJkeGFCa2NqbVFrUUZzNmZQaFJ5V2hoa05YdWF3eW1lU0NITWN6VlZEVEpxbktwMmRTd2pzVlBpYWwxYUV1OHJ5a1NZdnhJUUgzc2s4c1AtT1BkMWFhWlg5SjlGUUYyeVhhYVp2bmtjRk5XQjFnSnRBYlZGVDF3M0xxQlZoUVJkUG1fcDhvZEV3RXFJM1Fmc1B0YXhZM2FhUDAtamQwUTQtX1doNXUwdTB4RmJLWDRUbjNIaXg4MWxFWFNtSENfSldDWTR0Q3NxSC1OUjFGc3pKVk9XS2pPLXkxYTZLdWYtVWdVVVlLeUpRV3RtSEFnMEZFSDhIamVFM2lDNGNRM1dOdm8wWHZHOUpwUGVRQVBFa1Rfb0ZuT25uQ2hKVzlTak1NaGN0UzREVzNBUVJnRzFHQzhHLXo5NU90YlBZbzM0aUhLVUZNMmhOZVBfVXBRYl9lSVRDZUtTRzR6UGx6Z3Vyd1lCWkpFZzZxYW5MQ3VDYkc3R1M2U0VpWmNCX0N1UUtEaU5hNmJSTktoN3NxYm95LTE4NVp4WTQxWjB1OXdjOFFnYzZjOWtyNTZ4a3RRRWo5SGlpazVSOHQ1cW9HaXgwR05VQlRrU2kyMUI5SGNhWVE3TktLS2puVXlsdWtBYk1HOFdGdDZJVXRHdXpfak51dTJmQTZOUjJLSW1jUzRWOXRoR2xlcGRVakl2c3ZLOUVNX3ZIemh1Q1lZUU5ScWQ0dG5nU1BFUzhpX295b3ZjS19UaF9EeFh1blYwaWs5UV91a1VqWDhOU3IwMWpRT1VETzdHNkZSWjVhS04yMVNrV0x3Q3hxN1I0U2pFOXpVejBEZU9kN3I0UWdGaHNqRllwUTdwcDdkTS12S1pTNlplZHBoX3lDSWpCaHhNY3N6Y1NwUXppa3UtRFRJejdSODkyVThBSFo2SjduMEFaN0x4Xy1uMk54UHNfWEg1R284TGp2TTl3QngtdFNyallxSS04RzhILXhrWmRSSW93TGstSUZNekx2NU1sU1FpemYzN0V6X1VvRnc4cWs3VnpQUUZPVkJ4bllwWlFpSzhMa1BLbHRpNllfb3pESWR5ZTdTTmJjN2UyTkNVbFdHMmpKY29teXoyU0NjTjYxblUwUjVsWE9tMWFJMjVYcmZhaHZZUVd1VGJpZ3drdWZTemxIRlFtSlJoZnV6Zy16MXJPcE93SEwzTWJDQ0tYNFRXa0FtR2MxWlpzdzllYmNzOFpad3VPVWYyTHNyYlBBZVN0MndMWkJjR3VQczFFdDZaUXZLOU1RRTZ6MU9Ua0RnR1VNUzRTWnZSWkl3ZGFMazRRTGtDUV9Ec29QbEt2NFUxbHNPWUsxTHpKNGkxS0xhd0lMODZfT3lIS0ZqRHFXVGZfMW4xUnVlV1BpZDA4S3AtWDdiRF9rNUpjZHcteVAzdmZzc3p6TVEtTm1XZUNWQVRrRUdoVU1kb2lfQTY4bnFfUHRBbklaNE9HNlpiWW5jWVRWcWpTZjNYVHA2N2FWLUZSbTJwdDkwLVNnZjNnYlBmOElfZ3hpV1JHUkpnNXhBTnJ0ZENSMlBuX0xTMHV0S1pzMVNkbm45MlVXQktWTl93SFNJZC1tVVBiNGVyalozTGJoSDEtNlBkcnd0dTQ2QnpCRW5sdEN0YkNVWEZsWkhoUExFeF9INi12VWdkRHlNWnBvblN3VGFfYU16bm1VUTlxZVVvZnR6Z3VmWlVTaWtwbnZYcHN5dXQxaWFlSXE4QzdGTjVFblNlazRfWWJ0NGp1Mmc2TEJ4MmhORUE4ckpMTjFSZFI3UnVsNkxkQUkySXUwUXBGSVNYdGt2aURTSGpfY1RHTXdIQjFBZVJrdXdlOVB2a2NUVWgxMkZ4dHdNQUEyUEdhUnRmU3hfUlFoZWxnZERMOUdPaXRqOFdhR3ZOeV84ZjVNWEdpeXV2anFfMW43Q2swVG9VUVQ1cFNDVkJvUk9UaGJOZng5bG9FR3RrSEk3dnJlQ3RGb2Zyc2JHd1l5WUFRUVQ5X2RRT0YxRC1IRzM0dFI1bThnSXNwSzVFQ1BYdXowUzNqMjFMeXA3NHR5M1BhcXhxNWpwelcxRHFqZkY4UGxxcFIxWm1nMGJodkNfSUJ5TDZtZGJKZjNVWG0zcEVQckxuVHFvTjdMa3lqSnBZVDdLemhaYi1qdVRuVVFnYm9UaXV2TGMxMEdXSGV1V2xVaUVtYzFyOTYtQnlFcGRHc1EwMHBxWUFZankxa3gxVnVmb1VxNG0tS1hVNnBTcGJEM3lWTXE3WlBubkp3amxaS0dYUlM0emZ6MFRNTEpreFJFcFlpSV9yN29kWXFtbTF3akRkSlI4alZITEltT1Q0VDNzM3YxTnBha2RSR0NPSkdhUlkyTUdnTHBFdFUwVFRpc1NKbmJSUTVTbTJld0RVYnZBek5QOXl6SldjanQxSVFFY3BJZkRjX3F5Q3BNaGFtSDlDU2FubXFFanJpdzhDSjM0bnBHWWRmOElZZ2RGZmhGNDN0a2VJYjgwUm0yNTJTbnI4TEpIaHEwTWxZbm5ia2ZwSTZMemFYaFJ1NUdUR2RSWjV5Um1PR1lod0QxMUQzRkgtOEl2dGkzZklfQkxNZTJMV3VLNU1paENwUnl5aWhETS16MFpUMWhDeTVtN3FHdF8za09SVURkcXBSaEI5RGsxbWxfemsxNDR2bWJyUHZIcGVJVmctNGItMVREdXdxWEpXU2txTTNUVWY4TXBoN1YwQ1hDV0l4azk3MVlqTXRzdmM2TFlZNVg5cm5lNzlMNFZBMGtlT29EcFotNGJBNUxtSVUwY04ySy15c3hXZFNqLV9ycWNLTXFLMWVDNG1VUmI3SmZzUDd0a05SUFMxT3RoN015ZVlRMUtaUHg1X3FxclFxY2JSb0J4N2ZucmFnV3djTHIxUURfZHJIM2VlNUdDbWZldHJ5d0JxNFV2Z2dtZmVHWm5oOElFck1kZkRmTDFLMEhpblJFQUpPSjlrdkZvaVd5X1hoRF9objdFYXVtT1ZWUzN3YjRueHFYS0c0bnRNODJ1ZmFHMUFJQlpfaHJRMjhOOHdJM1BxeHRURWRROVlZS1R0NG1kcEl5Tk9UOEpCQTVnaEN3cmtXWnBXYm5QV1J1UXlZcU5xNHhjQUFxZWdSSVVZdWxRVFRuYWo2SjFIbkM2LTUxUGN3LUFDZ3FnUWQ3dUFOZ2FTUUFZSk56WnBOa0pzbW5wbmd1TElLZXp1V0kxTUFMVllldFotOEFBeGItbnA2RkhaWVdCM2NXblNrY2lIN1Z0cmVjRzNmVndpeXdqZFh2NWNnV19DYm9HQktOclQ4bXlJTUp1Y3JkRmVKdjlYdFdXVFVZS3lPYzRNa1A2bW1TZWFpekFxMXJMYmFxSkw3TElPeVlaYlRsQlZna0MzcmFEaTVjZEhkQkxKWFBUdWpHWHY5bjNVblpfNEwtV190NUY3QVBPLVpVMzJPcUFMTUdKMlRHWV9HTmJ3U2RFeWhtVHM1WWUtVEtxS3Q3aUxScV8yZnhna0dDOHdad0dmOWlrSUpwb0Y3RldoaUZrRF9hbkhxN3h5QzFaZHRyQmJoTjc0R0xxMnhDUGlHai1DV2lJSWRBTXl0c3g4eEcxWDVUcFYtWXExMHkzWUJVMEJNbUdxb0padDdCd2QzbzN1V3JVUGlZMTFHUHRHc1RaVTBxelc2aDdFVkY3UGlSd1N5Qi1Wemw4N05NN0NNNHRvYWp5UkNhci12TE43TEw1dkRXeXByYTUxM2VqX3Y1WUlDdWhMNVNldFJ2TGxmc2pZNE44VVdkNXozdzdCa2txd1BsTW5SQThzY2JORGozbWk4dmpwN0x4M2RpNFdRYUxwZG45TTBuUXVvZktWZ0VlaEdJMWI2SWlXTHdhSUpjbTFPdEd5aVJOSWQxQ0hmR2V4NURYaExNT2dGd2pfYnNCN09LbXMwQ1YycWZORVhEeWNNRkdOOHdqbVBIY3NvaGJqMC10UG9CTmtOckpJVkpFYkdaMW56allwTnhSNWQwOGtrSlJMdGdHWHlNbzVqaTRUNXJEQndVaXhfMTYwZFhXRm1rb05uZnFfaUVjSEd2bDVKQ2F0ZHBxTUlaZ0doaDc4SlR2LTNzaU11VFFKWkZGSzFuOE53WC1QRVZZSXBIdExncy1EZUhmdnBjYU5pSXMtaWM0WnVJa1oyenhFRndFemduY3ZiYXk4WEZpN01STld3UWFHbVVIdzBOR2hCbE9DS1BjN3FBbXFYd2ZjY3NvV2pNQkNoSFRmNU5MMDF6ZUFXUWxDbWZibmVoUEZNU0t0Wk11R21uYU5SNlNkMjZQX1p5NTFCUEhMNV91dlBhaWNQd010cEVvdEtNOURCbFBkRTE4SV9GVFZPc3FrZ0JVTDJoaHdQNFo0QWtJRU1RVTVZaUQwdFZwUDhyaGYwNnhEaG9YcmVnM1NHTHlYS2xxTmQ5aElGVEJsYmdKMUVJVjhVSnctU1A2b29RUmlSZGRDTU9jaGo3cl8wYlByQ3FyTXdaQ3g5V1RLWFlEeXhDcnNIODRlTHBtMFJlQ3MtSkc0amwwaWctQThEMmk0Skk2OTYwS2s2ZUJwcllDbkVPSWV5aWdrMXM3WE83WGZFT0JFSzc3ci1uVFVlT2ROaWFxVlZDMFpUMTlQeXhKbURmS21VNWY2dW81ZjAzM1B4dFBrREFITUZtZW5TcXM1MjRPSmJHNmpYeERJb0xLWERKWW5iVWNuSVkwcFh4VHd5eFF0SGZWc284X0dYMmhyNzFtandHdXlIQjZEYkhOVkN4Ujg3TTdQN1JvcmtXczRXMG9UeGNpRkVhcmkyWjlfNkV1bzFrWTYzNDB2X2FlTVZLVzk5aWVQUW1JOXpSclhxLXZPZHlJcE41V19LZGZQbzZyX1lFNTJuTV9DVi1pR1NVQlFsZ21idUI3VWV5UVJPbDcxRVlFaE1yUlladVFzaU13eXl6aXFRRUh5NExXbWt1dm1oNFpCWGRzT2sta2tzb0dxa1BZVjlTN0VRZ2ZBeEhvZlUzd0ozV19mN1puN3I2OG9iTFVKbl9XNC1WYVIydHFablJ5OVlZMXJNd3MtOTI0Ml85S1NncWhabGUyWlNRRlg5MGp1QTBPMW1MRGhpRXVHRXl2THRWZ1BUNWpHQ05NcmhGdmMtN3N0cllvMEFPbWRUWW11RVdyR24xeFJXeVZLcE5Jdms4ZGd2SjhMUTJ0cEx5NEJyVHlaZWNPSmNiUFl2S0xKdTQyd2ZULS1RMFRadHRtSGRzd25UR3BXOHRWd0xfdW9jNUhjeFViTnpBMzIwc25JTzEtenR2QWZlWk5kVzJFeWFIMVFLbDdXLS1odHNXcUJFM2RwYUU5WnFUYy1OM25rN1JGOHkta1hzTXA2Yk1wU0JvVzVXd0dJa0NGaWtkMWQtZ3lfNmdXWkJ4ZHlEbGlzSi1RZnJiOTEySUxEZ3gxcDJ0clRmNjYwTUhfZl9rNEZGM2FVdjBYYlJiT2ZIREtCR21YLWhWeW1abmZUR1AwbWl2S1F3bEwyOVlTcEpMUW9TSFE4WHFiTUtnbkh1QnNRaTB0clNPYV91RG43TzZ0djZ0RFZ0OUV2R2JiOTB0WkhwMGxWSmlfREhOWlRwTjF2THVMVlpLTTVlcXRnaHdRSjI5MktwU3hZZnd3clJBd1NuUHdaRHBZdHctMDRjWUV5bnlWMzRvSGlTelhDdXdhQUREYkh0UXJRNDZtWnZ5eFF2TTFtUm1iQ0lCMWNfODdIaXdtaWZoTGVqRW5ZZndIMVM2SXlEd2QteFl6U3ppcTVMZHVlaEhDbkZLQ1JPYWdsWjdaN2JocEliZUI5T2tBUE5LYTVkdUJBTFBpamZzaE9wMi1mQ3BWNnc4eEEwa3JZS3Q5SnhwQzZtYm9iX1QwaFAtc2lFMC1na3lxeTFEZXVaUTRRMzB6RlA5S2s4MEhVbEQySHoxTFl1UEQxZHdCOV9BdnZUTmsxNmFlT1lSQWJUaWJJRzBic0xxUG01Z3VMTWU1RExDTVIyMVJBYjZNUmFpRFY4M0llUTZEMzhpR05sWVQxY1Yxal95cWRUaWJ4ZUIyUmJqUktpTGY5UXpuU2Y0WTJWcG5DWWQzenVyRWIzTnFVRU1kYTJYbFZYaWtIek9LeFpHSC13VVVyOENCSzNWN1NtYkVMWlVjS1hHMHZlMFpkWGhkUGpvaGhzU3ZMYmRWNEIzWmlSVnRkSml3bHkwQWFoME82eTRUNzloQ0ZpajhqdEJOR2doSWppTDVjZ042MlNnREdvc1J1VU9aR0JqbHJhYWNTTktBemFGWHJjdUlsSndNZkdzRkdHd1dfUmNvc0s2MHNMSlNmdzdPVUxWaUtGYVZUNWNheUpqdkVtMklsWDRCbDI0cUVDeFZiTlBRdW5hR1VwSGdwYzNoYVVxM0lPcnJBazBPbnZRSERUaG9nc2d2Tk40bVhtM01zWnRBS1NkcGJPXzRST0xFMHNodEp0dlgtZEJOM0p6REdqd1BvUGQ0eE5mODRiRkNXVC1fb0ZrR2tWdE1Wa0loNUdhYjcxTUpjNUlscGhaaGx1QnRxRVpJMnVod0Z5WjQycFBYNU1sVF8zTXFnb2xNTnRBQnc4WThNMFlRRmIxOU1NUTVlRmFmOS0zMmhQUmZQbVZXWHE4WEhRV0FsNGtJeEswREd1QnBmMUpBMWo0dmRTOVRzWjBRS0t2Wi15VnJoQ1BoYXNvWXZ3M1NSQ1FfazBhc3FtcXE5RnpGSGNxeGFEY3NWTl9fZndsQnN2cERvN2pkSElOWDdWWnNPNmxGT1VaaGJ3X0w2X0x6Nno3NF9aUG1tTEQ0bnIwcXAyWDFyZy1UWkZnYkstNEx5NGpoVzFjQkhvbU45OHpHdWRwWkFrM3VERGFjTFFEUFFhUzFWUWxsR2ktc013eFlONGRxM21BeDdid1g3QUItRkZJWGJDSnp6bkZtRXI2b1AwQ1M2aUltQkZESzVGbEZ5UDBSY2VlNDJLb0VQZE4zeTBVdlVSaE1wNXpabVpKUFV4VXFGSFJHS2x1bk50QU5NekE1UGJ5T0tSSVpCdlhVaHBJQWdMMmZCMVdHSzdWd2w1Z21IY202LUtNMTAxQ0VaVFg3UXlkcFVZTDVuYWd2Mk5ZSjZNaXl2cFQ5UXd0NDYyN0JmRDh6SGRSdWtLYzhSLVR5ZzItVEN2UUxiRDBsUXo0SFI5STAyS1o5a1c5eU0wNlpMTlVEQkc4Mjkxa0YtQk0zclhTZ0FId2NGM2pOWmRicFVPZVRSamN3ejdQN25iRWRJUEJJdUMwZkVFRHpjam9rcWFhTHdRS0FiUDNlUzE4UGR2b0pwdFJta0ZTOHBmaVU1cnhJUmdOeEsweDJTYkhqeFJIdHE3cFFQNmwtTnV6bzRkcjZna1FzLUZmTDUzeThJcTlZM2NJYmx0WlNDeFk4bHphdFdJSU55VFBpOWRxWmg2SC1VcXVNekZzTGtmRWxDS0E2dEl2VkpnUlNnOEdCd2RMa1o3YlZad1JFQUVQRWNQRDJjalpCWjJYV3RtWTd3Rk5SODFoUlFzSnFtb3JsUkdjdnNkbGxqdXNzcnRRc3JTdUdlQXRxSGc5dzRpY1djSVdLRHRNY1NYY2hvLUNoejZJM2tpVm14dmt0TXFOU3JGZXhSUjhXSHpGdC1mSUtMQ25yckZCSHZmbVoxVjFMNFVuZ3ZUdXd5RHk1dDAwSVRGU0FyQ2xVR21oS2tWaUlzZGs5UWhSX1NhNDNhZmlOdG5rblIyaUIyNWlxel9WMWl5VjBoUzUzRnZ3R2dKZm5nc2ktV3gzS1AzQzFsM3doYUxBXzJxOE10TGJTUjU0czRmN01jWGxUdUxvUnh2ajdqMEZGWkp2Ni05S0JjSTR4a1lJRUw2eU5SNDFxLTdKTE5uUUJNUjBBSHZuWVpyNk1CREQ3Zkw3Z3VpQlRJQ1M2TGVGTzVUaUh3amUtbzhTSjhERGJNTWlYWmhERm02NWp2QlIxUmU3QktxdnRfMGJBNXExa1Q2a1Zxcm5NSVNCNXlscTlNcEpZVzM4SExRbE1xMW5aZHB2NTF5a09INzJoUk11R0FOM2VDTk9fbDF3Y0JTd3FQRzU2SUhkZWIwb0FzZkc1T0RuRllVUl9NeVVBZ2E1RW96QVZjY1lMZkFQa2pVekx1c1dfQVhYSE5ZY2l2cGJrRVFEVDVqUDh6OFhtSXFSSGZWMW5NMzVGZ0dRMUdRRWZYNkJ3TmVPdHpuUjNWVHdzeHQwWVhtdnJYMm9EUXBGMFhfUk1BdW9lc0pSVTdDVGZLYzlDNXgzOVdXckFhSnhEMkNWVnRfQWxkeWNfUXhWYXdFQmJ6dllZUkFRVVhlTE5KdGNpcmJvZlFnZmx0ZGhyZjl4cnRzcUVxdzFfVkQtbXlObVhYQ0RuUXdPTHlnUktKekVXU2ZSQ3hGNjBCZ0ZNR3lQdmlHeXdxNGRJdXNTaHctWENlUGRzR2tuYTVMZ05yRTVETU5zc1pmWkxsWTRwcHd2MnBGeFF3eV95NWd6RnhGQm1QbGtxekNLRFdMaHdPemlaYzNYZk5DZFJiUFpudVhKRWtzY2ctQlNQdFR6VDRzNXRUcmFHRE9xMlFiZFhHMTR6UGhlSjhuUFlqcnMyXzlReXZWZFhvcXd3OXFvdkRLWXNlMVA4cHJHb0hhal93ejlLaWZpaTVSU1lVRGhHWXRhd0tJOUNWWkFTTWtPM0NhR2dSdXE2d0FLZU9aOWcwUGpUaVBlR19Uc3lSSEtjVXFnVk1xOU1PLU9CTmw0U3lfZm43OFdJTEttdWtuLUZYdm9vT21wTVlPY2FNdmM1Znd5RXhITTJ2dWdnTkNycUNqQS13bTdrYXROREo0T1NNQUtfV3BCaFNhT1R1MHVhR3FvTHdNbnpQa3pITHJKNDl5d0ZQYWRrNkdaYzVWREdXZlN1VmRzWkNOdURCZWhOSE1CRlJzYzZWZEtHbzdCUmhrRTBRbmFYMkxBNnF4WDJWWTlJdnFrRElkZ2xndnBnVkRkRll3YTE5cEI0NHpJZFo2TnRCa3ZWaDU5WE4teGppRzR0Y3MwalFSV0ptS3plWTJCNG5fRUc3anRlczBrakVlcFJULTNZd2hUWUtEVEw4QWs0c3pDeEpmX3BUblZSbUlHUUFZVE40amlUWlVsNlpRRHdPSHdudHBsYTJpMUlFQVUtQjhuVGlPNjRTX2FHcEpCUm96UERWM0NlcThDZjhCNlJKdE1xaHVhNFFjcm84cDJ4LUxUSnJVTkFnVlFjbGN2aHNQQXVTcXNEdWM2VEphc1N4OU9QUlQ2M0x0UVRGTWNIX1dhaHloVmJxTG5oTjJRNTAyQ1VvYXlacXlzaDJVSFBDWFdiMFkyOFJibUI1OW9uZi1fb1BOZExXOEh1YnM2UnlmOXMxMGhFZ18tNl9WVVd5Nkc0SnVITzdpaEdiRktqNlNvZ0RsOWVYc2k3QlJaVy1paWszcnRrRUhBZDNpN3BXNWNoZWd3RFVvMkQ3QjlFZzVSMXU1YnhEMVhvajBFaWtHVU5iWTZXbG9MYXpYLTRTbEdhQ3UyMmc1S0JOYnlxM0ppWkpSaFE0RTNqb0R5Y3RDUnhlaWJ6Sk0zTzM0ZHZLb2JRRzJKMTVtRmJna19oM3V2UDhYdWRIYzRmLW83Z3pBaXd4elptR1ZxOXo1bWdMcVRnRGxSc0JidGdfTm93ZXNWdXpWd2U2WnlCWUwxOHdzbG5fb1U3WmVlWWdLU3FTNjB1ZGpheFpBWmFPc293c3RWeEtXUS1PZGl6RXhtQzFmMlMxclpnUnFleUEycmF1eThjc3JRU2ZmS2kwV2RBMHJuYTVSVG51bEVJdWl3d2JUdkNiaW9zQ1hRREN3UUMyS2xhVmxTdW4xQzNINnJkaTZ3N2FuNDRmY2hKeEluUG44aEN3TlYwZWJMS2dybFlpYkxrVHFqU2pFa3Zid2x6NVhfRHRQVmFUSGZJSXFyQnJONVhhZk5ubGw4cmFwd0ZCbHY1bkkyM2NKM1NLRGs3MWFEMWhrVEE2WVJqSll1dVY2RW5GNGw2dlVyVlVlTW1fMkMteW1qNEJQNTJScHd3MkQ2bmlPYjlXcE50SEVnUi1fRUh3ZlVVcGlObUtJLVFhNnJpTXRWQWJHejZQUFhTOVJ4Q2UtSmE4Yk1nZHdIMEFUN19zalRsZFlKeWdtQVdLUk9wOGFMRTFyMEI2bDRONnlBc1M5dVFCc252QXlNQTNTUWctY3pLemkxblRTdWZiOXlXOHFWOUFHX0J6TFJtcU9qaU5ZT2JYS2VtNmxSc0tLY2V2VDdyUzNrUkJoQ3ZWYXdxVlZQakJZLUdFTlc4bi1pdnE3UGFMSXNUblZobEExY1VheXozbEhKOGh2T2ZYalp6T2NVNmZoSXIwNXN0WTIzbGlGX3EzRFZBc2E3Y0xPNmVyMVdkUUZFVWZSSVpydnNXbXZKam5ydzAya3F4Y0lHUmZFREZYa3hwNDZDMlBqMmJvLThhQ3p4aEdTU1A5bHpDVmd0ZDNmRTJfYVJNYTVxZ0N0SXRDeDNBWkJMX01yazZXMTlmQ3k1YzNsekNRNl83SW80R1NHTkRvWTR5cUkxVTRBM01OYUlPVUQ1aXNFQ21henIwSTRTbzVGSG5DNHZLZ0hsZDlDVW1RT3UxeUVaLVJ3Q1psNGhHOFpoUzM5cnRlMzM0eWRGd1o0Qk5xWmNTSFpTQjIwTVVLX2kyX0xKMHY2b2FrMnI1WmlPazNPRkxYXy12VHYyY2FaeFF4a1lUdjQwbjd0dTZobzVJMXRsS2Y5d1VEQmdKOUlSYTlfT2tVN2I4RkoyVDgzbk54X1ZKcGhnWjhhdTd5aWFtaUtrZ19wRjNucEI2TnVPZXB5NHJ5UVJ4NU84cldhSTVuTmZPLUk1cktyNW9PMVJBVGhBUURBSWVzWVlaemxNQ3JoQWo2TTZfc3lmamRWdDB4MXhNODhMRkszRWhlN0RmeHNYc0ZKVEZKTUw5YUdwa0pLTlJZSlpqNmM0VHVSMFFtZTlCQ25Ea0d0U0ZlMkdOMTIwVlg1Z05JMG9uQWlXLU1OZVJCZnpfNGpBeWpXam13eVZ2WXNHTE1TdmxmY1FrVkdKZl9mWFRXZXdYYkVHVFc4VDZOdFd4THZsYTlkaU5YbGlSZXgwVUFFc3lkT05pZm0wcmpiRWVsWTBuZWFHcEU2N0M5TVpZYVFzY1lsZmxPNkVZTGRoZTBvMTQ0QVRNZG05M3pJM2tPcmhSWEExVDZjNVhHb2IyN0FOMllTV1RDVG1DSTI0NGVjT0drQUpMRlJJdlBIWlhWeng1YjV5SlVKby1XdmItanhpZVhOOXljZ3hnZFVscjh2a01GTGR5XzlubVBYY0tmZTA1c2RKaWs2X2VxVFhPVkJaRmk5WHM3ZlhsLTVVVWdTTzBHQ1VxZzgtMHZBbFQ5ZG15dmQ5LTllRGM5NzRRV29RU1Zna3FEX1hSVE54X0VVUzVFTUFXc3dOc2FRdHVNd0JCVTJJelZGajBNQ2k3UVpGcF9lT2d2LUE0RlNHcG9vOUZ4RkJ4X2V2NnFEYTlJeVdLdnhiR0Y4dE5sNjVXVXNqWkp6Qks3VEd0NzBpemU4Z3pzakN4Rm44UmE0cXZPZDJJUmQtY05NX2xsT3o3LWI4cU1KZ0ZOZlJSdURqUjRPZHJjMjVoZExTd0dUTDJ1S2c4bmN5OHA3UzBWdjV0Z3ViNVRfWlZUYktyS01wVU16QkZUV3MxY1NlZ1NQdXlIMEZsUUxEZGJtSnlkb2RtcktrSVpEdHNaM0VWZFN4c3c5RWVwZkJkNFFtdmVLTGh5MXMwdm8xem1HRXNVNnpqdjMwR3BVam5jVGZVY1B3VFlScDl0aHZMNUppM19YeXBtY2I0WURKeThlQ19GRUI2bHJqemN0dzVpTnFWUHlzdWJUb0ZSSmNuM2ttY0NTbnU1UF9GSkxmX2V2c3FqcEFLYjVmTkJ3OFo1X0oxVnJEcnVneDRJbWphZ1hDaVB4Y2lxSDFjdTN5SnMwbUh0dzl4dFVtbGE2YW91Nnc5MVlRLS1Uem5SX0VEQTkxY2FYOXU3X3NWNTVieEJpczdlYVVXNml6bGVxanU2OW5hZjRVbUVtdURuRHlZT3JWaDRsMDVMWGdDODJDaDFMVllQUXM1UXZpUWNKaFBHMFVnY0I0U3hNRDZGcXplX3pJczlNd0p5bEVyMG1RSEozVHVrYjV6b1o3aVFoNFQzZkx6U0N2VXk2N1YyM29JWmpLc0dzcmN4UHNmc1hnQzljUTRXY183ZGNVUU9qLUpsSDdXRFlmbUdYNmIyM0pYbGF0aldHVWhpZTU0Vk5QU3Z4N3ZQQ0Y4d3g2OHNOWl9xSkUzZXBVSV9FQWNSZmg5VV9EZVlhaC1wekY3MlhOX2xiS0p3S0VFRVIwcWtrNWVKUWJ6aVFSUGlNOHZ0cVBKMDRyNlVIWkNvanZTLWU5ckFBckZjMEJhSWJHbXlfV19Sb2hfUWV0dUJRTWliQWxOQTBCZkxIUGtwcmRIVDlEVDJOUS1XWmNzS2JCR1dRUFYtblhHUkRHSnFlSXdfSjNYd0N4MzZKY3ZkTnBRbzdRM0tzd01OOVFENUgxbkVobEt3d2JUVVJQUklzYUh1X2hhN1dya3Q1cS1SaTdYR21OYzJNMk4td2JqUExOd0I1NjVnWUhEaG9Lc2pQWno4TkRYbl9Sb1ZnOEp2V1RHYWNLTGtKeUtKNW1BUHJzRXFaNE51clJwdHRRNC1BelFlRWIyZGlyRzMtYUQteWNjcmdjR1g5dXh3YmU2cWltU05lWG9Ld2hvRGlJY1d0MDJaSWtNQjJzY2l2Smt5MXUtODI1SWVBZUNSRWlnTWVSMlA4cnNkN0N0VDJiREJGc2Q2bnozaVZaRGdDMWNtQlEtQUlSc2pvaEFxeFBfWFpKb3cwZ1d3Mmc3bE5NNkc3T1hHMzVwVWs0MFFoMFplVVU5dm0tYnZFQ3BhZ25EUkRyMmpXV210czZCUTBIYTVudHB6LVUzXzA5MjViQjdZQ0RzbDh4VTlTYnlrWWRyZjQ5VWlnT1R0OFktSV96Vjd6Wll4X1FMdW1BWUJkbm1nZDJ5Vm5lZUNHeW5SbnhCRjNSZlZweUE3TGhtTlgxdEVRek5BOVhSMmstWk85bGltcFJBbVd0Q3FTeFFPVDJLaWNZUEFNbWJhUHJiSDFnNWFLc1lvNVI3eE54NDBfdVdXUHo1M2NfT0JpLWs5aFZiUzItQVMzNTZrNW1uZFl5QU5XODJCY1JtcFI0ekRPeXhaSFdERFc2eVJTMXIxUTJiT1Y3QVRQZGtTWHBSNzNYekk3TTJiT0YzaXh4Sm9nWTdYSUwyaUN3aFlQTkpvMjJvQ0NZVF9Xc1E5N1c0NHNSMzd1MHVHQ0JWaThkS3kxeW1uaFdUTGxDQlUxaDdlZU1ybDZPRTFBU2gyR05qSGZRNUNMNjQ4SFQ5RFNFemFla0VuVHlDWHJTck1KSEFscEhFYkdYTFpMVThJZ200a2JhU1FLZFJiQzFsclVPQm9BaTBRNzZPME8weGh6RWhwcm1GdVNLVlQwb3A5d3gyem9EbVZJTFdSVkducEdjVlMtbnc5Qk9rVDQ3X21wODNEX09tVGRLRmdpT2NOZUdoMHhfb09oazVUZFdqNXdjajVablExTEpkMW0xVF8tZ1lOVFdKVm5CLTVsbGlZZEU3YTdiRk5hT2VGN0czdU9EQTZZS0ItNFFCdkhiZTZmT3VIOFcySm8tUnNDX2tjSDMwSXN5S3hlSlJpak84TTAwd0hpNHN2emRIM3kzc1liV0habVhhcHhBZWhBLXlrWjUxenkwRHNqTUtMRjZFSmxBQVZzMy05ZVcyNnlWWF9WangwYWJ5aUhDVGlHQjlLYVpvSF9WU2Y5NXZYcFRBT2lTMm45RnFUUEktdGVXNGs5Z0dRQlB0M2dGeG02bnhrTlJOM2VISjFLUFM4XzYtNnNwalI3bTFWbjFkNnlBaDV6bFNpMWhjN0RqM0xwWTJjbDBpTGEyZXhDX3BXNWhBcDRQc3V0YVhsenFXUWVWcGU5QV94WE03T2MxZTN0alk5ZG1iSHdjMERhcHJlQ3VJcGp1ZEpDQnVmTFoybmpQczBLUEVuNDQ3V2RPNEZaQ055aUhhVlpmaXh1OU5hbUFBUWlnMU1feDBLR2FtNzViQU0yUG14UmJPdHpMbFc2NVVaLWlwcWREWVhERHdHRzBJNzlRUi1QMlhobFNXWm1EVkNSSHdnYmR6YUhGVldrSkdBU0pwem10UXBwS3lzUlpLX2ppWEVNRWJtbjRORzRJVGNlREhmT2dyQTBqSnc5N1p5N0FNVko1ajg5S1g4dlBlZ2ZUdUJQZU83eWctZ3JheEE3cUVaWVJNcjRIamtQN2dHeHRFcmJ3NzdaWVd0VjlGLWpEWEVvV1F5dHVOcUZhVjRWR29neHdnNkZpSmhFMW1vaGthdjV4bjlHS2VRcVViSVVKWUVyOFhHT0xWTHg2M2xlWVZEZS0zb0gwa0ZUdGJSTWdJQ2p0bUdaN0Y2UnlzTm1PNVp4aU42eVlFMmNQNS1ScU4wVTM0azRZRDJ4aTF6LXdwUWZYTEt4ck9aTDYwS1ZycTItaW5pd0ZXV205b3p6YzNwcW9xZTZQX2FFV1F6aVZIejl4YXRCUVNkaV9mZTRZVHd2cWVTX1o3VzI3S2I0TGQwQUpadXd3VXZSMXZwUEE4aUZzdmxVY1RIb1FfUjRfSHVKRTB2MnZaa0VLRXlvaGRIV25rbXdMMmRLMVVQS2c1RUFMNWZMVTh4eG51dHEyS2VOd1NzQWVrNnZwRlR3eWFfcTYwWGk5d2ViT2lEdWlUc1FSOTY1LThoOXF4QkVsODdrOEhJMzBsMFJqTjNDN3VSSzlqcmVnbTh1R1o0WW5UcUtPSWlRSElkdkVXN2xjU2JvN0xOaWhNcmh6OVhQTTVkWUh1ZUNkSll4MGxqQmxyOUQxWUxTLXZvYlNIYlNaU1VjTXZ1ZEpkWDZBME94cEJ3QnpHclJ0VDFUNDZ6QVVucEFKYzVvUUVfb0FmMk92ZkVYV0FoSHNvTS12bFBhbFV2Z0xsYzRQdWdDTWExUGg5alhDWWUxdXVuenczMy1kYXo3dXJsVnhsRlRXWXphR2RXYUtMcGpCWmo4ZkozNHZXTmJwRXNfUVkweWNFY2stOTNmX1N4Mm9KcGpsdnJpYTZxUlJmZXlYT3F5TWhETG5FalBFbk1oNEpmMUZkem10N1JBalBNb05Ud1U3LVNUSmtRRFRhYW9DZkNQM19aTFM0dTlLa0pBSThVRzdQWTlMaTl4a3BUS1NDNnJXRUtWSGtZcnpfNEQxU3lqcU43cFJ4dGk5MHpDaVVCeEduMlR2MURDMDUyTmhnRkd0bVpLM2M5Xy1TTXlKVERnSlJQNTR2Y0Rka1FKbkdQZy1LRjJDUFdsQ19kNXEtYnZrZHh4NVZNV3RYVGNEaUFDSHA1ZFlZLTFsd0ViLURZTWtiQU01MDZxLUpuZDh1T0xRbUY1dUlFaFJpY0V5SDFBTmFEMW1CNVlLZlJhNjg2cEVQa3hXR2t0WkxEODZaSzRCTmZpTWlIQUdnclgzdnd5S1FzV1pmS2I3SFBiWHBtYkZHYjBYTjlLT3NVNmdzQ3d2V1JxeWxFMk1GdWhwVHExQkJjNkVvdk5pTUVXY0VhLXc0WURCRXB1cUFBamYzRWpJU2tFYndUelVQLWZmT3Zrb25yOFRzWEZldk5VM041SDBMOU8tMTJWRS1YdFczb3d3U295aHhyQThCd1RSTDh6OUZVQXFhd3Z0YVU2OWJKcDFkSmItQVhaZkNtcXlaOXAwY3NrOW9kQXB4WEI0U3RFcEV4OUNxMGdxSkhGM1dXdkFsYUVOQVpiVlJrR2hVVUhPQ1NSc25EN3llcV80Wkw2LV9tMVV0c2luSUFFbzhzQW5mdUhQbGkwWUF5UVVXS0RUZ1p1TzhZaFFkMkQtTjFudTBuNU9uSXN3eWJVTThLTjZZRDdBd0dsaHdkT05aeXdHanZsb2dsREsydTNxU0VPLXQtektLOEt6U292RHpnZlhSZUx5R2RuUkNQanNrSk9JOTN4bDFTNGhEb0dldUxYM0s4MTJQTVRNMnJycFh6aGN5TFE5ZmdRRVJndUY3WHNfRjNjTFpyWDZzTUdlTVBJSm95anNHUjZKMU16dTNRdkU4ZnRWOWpSb0hNTnRPZTRENjJCekxlZ2s0UDliWE04akd4UXV2OXNHRjM2OUZ0Sk42YXFYX3pRVVpNVGpxYXYycEVPQ3Nhc3BoTUpROE81cmxRaDRtWmFkUmV1R2JhWWpDaXAyQndtV21SR0o0QVNaalJXbmlJWERuQjNKOVhuOGszMVVLT2tqQXNQeXBDWVhZUjI2ak0wR1VLMjFESmR5bWh3WFBFV3RaWHFaMl9qQWpONW9JY3kxSWZtMVFhMDJCVDBoUGxWTFU2eGJvQWV5dk5QTU54NjZnWXlwOFNFQjJUcmNZV1d4cVRRM3dOR2NDZlE4TTMtV1BiV0NvSHBUTWNGVl83dkVvRm9ILUpqRWVXWms5TFQwd2Z2ZnY5S3kyS2xzeE9rZTQ5QWxkLTQtWE9TTnNzZmJKZW12UmVWbTNEbFZydDYtUFQ5VC1WN21xQUNsVGVMX19QQkplQ0N2NVJ5bG9QOXNMeFIyRl9WTVZyc2N6bEVFVjl1MHVyMTNIR01TRDFrUThtUmE0dTMwQmdfUGEwd2EtU2dyaVZRVjJNLldldVJXdUY3bGRRYzVZU3dTZ29HZHc"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['24943'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:49:53 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9689c33c-8288-4034-a429-b28424c8f75f] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [2ac09094-4ad8-11e7-92d6-5065f34efe31] - method: DELETE - uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/6f0c928697c74752ba5d79715f5543ec","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"2T79A4j0k8OUMMSV25jsAjbMLCFXftjKaQc1S1gfgzy8ZvxeaQoIxvV0rGTdSCyCiNXepLbMLzj7Sahj11AG-uF1eEPZV6WhgKcNA15I1RoY8krQE7uk02fVWFuFQhhxK_Yrvv93aRxXKPpdtMS4iddbIE79SmqoOtDf8JKf3imMQG8xJ9xC8N83qhEqep3bcdpDDjUMYDDhVaKmRhJpW9ZGmSY8RGrHSZm-9OrZUHCBVnMk_pMM7b3W2RUvfGAvvcx0lfpV7cw7gorLt4NpsJrbp1_z-EyfRueCH48LyeUmO-qtcadrKDOoJW8L_ZTpY9Ikqt44Iyr973I8UlWY5Q","e":"AQAB"},"attributes":{"enabled":true,"created":1496767794,"updated":1496767794,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['656'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:49:54 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [7c8156c0-e5a8-4217-a384-858b2c9ea73a] - status: {code: 200, message: OK} -- request: - body: '{"value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLkZrRFJjTGUzdjB3bGNKeXVCXzJQWU5JcGRlaW1XTkxTNnQ1RTNsSnQwd3pnOWF4cjl1REdMSjRPZW9SS3p3RkxBUVdiVXVlQmpSSHZyX2lDNjVVVjJKRWRtTlEzbEtyUFFzS0Z6bnZEUEVvRHZJTnhyWTMtQUEzLWRoODAxblhWNW1IRWM4cUh3R243M1Q2RXI5YmhOc0tqUUs5RW0yZHRuXzNINm9XRmkyNUJHOWVsTjhlQ0xjUzY0UGJsRnJGTXZOOVRJMi1OTmp4VUZJcF90ZnluZlZMQUdmQk1wLTZvM3h0Sm5jbTREeDQtRmJJbWpkbjQxdHRneVBfcmlkLW5NbUVHYUwwWUppRlJfLVVKVXRoei1LWVFCaXJtWTh1dHRaNEVlU1kzR1l4QzRXUEFVUE9yc2hSc2pxaWJCNG5QaVRueGMybHJXdXhwV3FCbnAxWUlzQS5kaEpqZFFkVlNhWTVxMUpRdnFIWEdBLnJiQl9vSUJucFJhekRUNVlaQkxBSDN0SThTQTE0LUtqdnRMMHlYWU0ya1g5Q2doTGc4alA1S2otUzlBLWZhZ1REdGtvcUloUVBzeDNvSF9xOGswNkxDSHNWR1ZyenRvWkN2QlBrYkhCOGQtTVJRbE9CcEhlQk9ENUdMV29VbmRERHh2VkNCRUpQZndZcHZLalhtWloxSFNTOEpsc1RtSks5ejJmemV4dTlvZGttVE5pRHN6U01kWkR4RVFCVlVtaWNNWWxONWlFdzR2LUN0MER2eXdtRThGYlJLUmo1cEUtREU2cEIycHRWRU5SS3N4NzhkU1BuR2xDNUhnaHVkUDZhOFRxYXZvUVV6OUROaTdKOWhaZGQ0QmhwSlJhTUR6TjBfdEFXcWtfcHU0eGgtZVNVYWRPbFQzcE5kclhadXF2RnNaOW9BN2hhbkdWVjYxUXZRdEhmdTJYZUZ5MmVEaTY5Zl9IWm4yTDZpblcxa0RIb2NYVUtQSkNhV2RPQnd5R1dNQ1BESVd3SHVsWTAxemRqSlR2Ry0yYlpSaFRzbW9kbWdQQy1qOXJjbWpOcDJzSWdLaXVsb2pBb1VNUE91ekExT3Y5MEJYT3djeGd3UHUtMmdmZ3RWLTJNQ2pvZkdoR2gxeHpvbmZqb0lJdDUxcEFyOVl0TkN0SndGcW5hT0JITXZxWkVqM3ppZUZGbGtYOW5wWUdXUndUdEtfWk12VXpaWHBWbkJxNi1aWXAwMTR6aWY0MWxTTWlhMmhYRTZKOWFycFNUb3l3SGxJTkNxV1QxTUwyOFBoM2R5cDJTdF9HTEJWem5KNF9Pb3VPSGpnVlh5c0FGdDctakVQRGxQTUJQeF85cHRIdE1CU2R0THJWcnNvY2F5ZU5uOHBFekdGTDRRcVBhMVExYlVQS3RicUZLbm01M2JuSXUxT0tDRUhfTE41S3lRdWl5Qm04WThuUV9HWTRYS2x0bE5HY3M4QUtwV05yWE9IdG5OV2lRYy1tWmFTd0hYVFlJdXhlUHh0eEZXUDFhVGNsRU9QSFZxYU1zdURLa2RFSlVGakg4T1I4S2s3OU85ZGh2bkJyZF8zWE1vZXczYU4ySEpaLV9WRkRqdXI4Vy12NzBoTDFHS2I4ME1JdW95cU9RTVlsQUE2emNxVm5DekNyVHhTcVlwTlNYR0lZQlRxb1pKWXRrMGlWcE5uUGR3RjhaUUZHcUJUM2gwOVFiaHpPeGxtV2Y5SU5kWDNBdHJaV3RhV0NMYmpieEw0ZEhjc2pINk04alJIaDFlcEEyWVZ6SV85aTgyZmx0ZW54NUxTUHd0OWJ5bFlFVlpwZjllcVozNGcyMW82eUtReXNJcUt6eEZzM1ItdW9leXZ1MHZzT3R6RFBjaS13Ml9IekU1LTAtUzhWLWVsWXZoXzRCMHo1VDBiaWl6blBWYWhCdjNvWmNFLXNBNElLUF84S1VyZWozdVpTTy1fbzkxSkhhRXE4RjloTXA4cjZVelRqMjJjVUs5X0JlbTdOd3RHT2htNWd4dVlnS2o2N3dZeXE0ZkNyLUh5OFFSVTJzbjBiazVlWVZ4NGNGRVN6REtxWDFhNHJwdThMY3l1cWZ1R1NiTFgxaVZmUlhRVVB2b0pFWHdYM1hreVluN0RGN2JVcTRFd2ZlNkkzYkNNcXJQaXdjOHd1Q1o4X0k5dnppX1BqeGI4MEJ6T2JGU3JsVnZUV3VWWW9OdG1vRGtqeEltMFpvemFaY0pBalhveTBxWExCdHNVWTdnODdNdmUyZXNTTXVNUmF3UDh3cXRmRXJ6Rm0tZWFHbDV3SDBOUXVwYUtyTE1GZU9IdGo5ZFloNmZjQ1RlOHZaTnZjVUNvcFlwTWljcFE4dnh1NjZQRUJPeUxOY2Uxd2JlZkpteUR5M3hUSGR0MU1NYzdWejNDM0s5MUEtX2RhZjJnVWdOUU1OMFVhUjRLeWZvSUYtUGNsNUlOWHU0YTNNUHJXdjNwTEIxN0I1eEpVNzczS2J6Z0wtd0NZTXFNc3Q3WUpvLXhiNDEzSkhXVnBjOTVGRktUWHNCUzlxV04tTjZhaHJoZWdnSjlOaUstQnEwNm1kZ1BlRHFzRWJYbk56U2x3M1pMWVFWT1VZVmpKS0xpWFpqbHo2Mkk1N002OFp3VkRSTHRkUkRFdjEwdkZnRURVVS1rWm9fOGhWUERoUVNCMWoxMjdHMC05dnUwOFc0elcyakl2SFd4OTJRUzZja0tHMHE0VEh1TnlST3VfZXRyYWFTV2t5MEM4X05TeW9uS2w3ZW9tUWl0ZUUtcUg1eThpZ2ppRmp1Q2wtS19iQTc5YmY1S2Z4VUtOMW9FSUdMQldJVEVJU1UxalEydFRkVE92aUxtVnlyb3ZxbkZuUGZSdTZIb1NQMjltOHFVYWFRYmE0VTMwaHVoVWFNWnFLb1hoeExCdEdrQW9RX0hrckpDenppM0JVRFRYUEg4NFZUdW1sSm9SWnBGc0huSzFGVGtfdzNGVXd5REhEZ1J6RmdBNDhHY0NMLVFSRE5zcEtrM1VpY1FqNHpwYTR3V0dKZmpkLW94ZXpiU3pPaW8zU2g1YXoySExLNEM5TmZmRmRYcmZKTGpIYnpJTXVIZ3MxaWdmODh5UGJMMUNqbjF1TkdTNUZ4N09QdlNfOEZUa2U1QTlhbTFON3AxOU9KQWdxUDZFckEwOU5ULU1GUlJ3NHBCcU10Q21xQk1VRjJQMnNIQ0dNTUR5NHcySjNIbzZsSm5XUzJNMVVEU2o1dkRFRDRXbjNPdE1PR3FINkh1YjczWWduSDNqdlFMZHcwa2lJd3cxeElYeFZvM3g2bFVYTXRuZkRGNGgzR25DenZscHRQSDc4WDNucU9UNk95SkFHQjNDdmJ0TTJRb0k2MGhaaVNPaWxJQ2ItQ25CRUJmUTk2SG1YQzBsbFJZNTBSSDY4XzRXNGxic21YalZMS1c4YWJSdWhOYmRESXU3QmVUNzdjRThFdHVYVjhGX1FzY3RsV0ZfVW91bjNqLVp6M042ZVV4SXlXT1hLNDlIRDZlZ3o4bEp3VUlDc2xDYjZpTTA5YkswYmR4NVpRYTZZZWpEcGN3TUVhNnRqcjBkYWZIeDB0OGptd1lHRjNQNnRRYkczQ0djTHZuVlZ2aHdPdkpTbVZ3ZGcteHRwLW5FVGhCbzk0VEJiZVlKOFo1MUlacG1OemF1eHU3Nkh4dGRPSU5RU281R25lTHZEdU10X2ZGY0hxMXJrcFgxWWlQOW56Y2Y3Z2pJR0twdE9KUVE4U2NiRUJQLU9Gc0dwN2k5TTRWaXRfZVAyNTRHWFQtS0JoQTBraEl0RGIxbWhweWRzT0Z3Y0pZQkJwUS05enl5WHRqT2dIZmVKWlZtOFRwUXlncWxfdnYzdkxDRUNBNnJlSDMwWlVUeFBTSXVZNy1xSkJxZHdEVjdkN1hSMzlaS3gtcUdtdHBSaXpRSkFDamt5aTNIazNDcmxEZkNIMzE1R2E0bGNNU3Y1MVdZbXlHQU9heVowenl0TXlYUG1Xa2FVY215RXB1ZGFxUlNWUllJX0l2UUhaYWpTdnN3TjhKeEhjSU9XUXN1TjlBc2h0dzlfaFZxbk5aaVN6SENFZ0xUVlBFRVFzUXFlTEpvMzlTbWZ6Z0paaFNHNHFiZUlNS2FlOFlpNUR1MEU5VjlTZ1hHN2ZiNW5XQzNZXy1oa0E2WGg3ZHJGQkROX0xWMjN2ekZVc1JFQmZXd3VzYjg0Y0RydTFGOVR4ZVd1VFNWSnhtVkUwV1RkdnJHSG0tdmktWGc5bXVzQ1dHYWJCYkx6eGR4Y3Q2Q2JvYnAxLWw1VXRFUVZsSTFfTzZObVFHRFVXZkkwRndUblhELUtFTUtiZXkzVVZjNUNTTUlBbE5TZXB0RUROc1NuZzFTOXR1X1lHdVZabXpCVzNiZndEcHdOM0VpdklQXzNfOHJYMHAxN05aWk5FOVpEdXh3LXVDT3llN2RjeVktSldWMWMtY281NmZXdWZFSzVvY1Uwc3c5Vy1XcEx2T19lS3REMkpieGxJU3NmbUFhV0xGZTBCU21MLVh4MG15UGdEQVVNLVRweldlT1JFeGZ4Wkw0am9YZXBncFFsYjFLUjd4Y3MzZWJDSDBTc0RjTjU4S3hWVkJHVmFBanFEVXpnSnhoVkNLZE02QlZlM0VsVHdsZkRVR19nSGFaeHpkWERwbnZBZkF0NDZXdUtKLWhJYUhVaUpEM2hnWHlFZHpzWnBKWGR1aVRNSzBrNFdfRS1mcXNLRWptQ2JFNG9rcHVwdXppaTVuRjVmRHJQcDdvMHpLSl9hVUFCaVVNaW9GS1FfQmZ0dkdaSTJNajg2RjlsZ3dXWjFmUmNJVzNTdWRUMFdzbXRENDd3SVhOeWZWWEtaQ042ZnBlakdJTURhUDNTR1BmdkxYeWFIaTlNRDNpcWtfUnlnNml6MnpNa2ZEc3N3R2Q3bmUtbjNFeDZSMWw3MTRwWklwYUk4Q2J2Z3hiSGItc09qNGRWbHhpQnNfdnVMamZhQjdqTjBvQUN2ZzBqb0RPN2VSUGE1emJ1eW14NkNGalRZdnZpanRobEViYTVKZndxbm93UDRXSDlSQUVtb3Z6S2RMcnhTclZzeE40dXFSMlFsdEdwRmQxTEJoRHIzVkRJQl9XOGRKTnBwQVNrUUpwRnRPSk1EcGJycmFUTkFubERfTEM0SS1zdG1udlZtTVJ4N193OHN3d2Q3MkpQbU1qeUVLSFloSzc3Mk1wcUpXSjNRTGY5T2ZDMUt6UkhyUWY2anZxWmttbHRvU1F3OEl5MVlpV193eVQxbTZnVGdnd1dNd1I4SlBhSlQ5N1NOdW5FV25mVVdQU21XMHVnclh3SFdEMkxpdnllVnNTZ240RnpINzBZNjV6VTVTeHMtbnNLOXRBbkFTdldFN2pOVTA3TlZjLXd3YjVpRkw1ZVphdVkzQlAwd2NGU3RCWVdtQm5temtxNWhYcmZlenJhNzZvMWRKa3djTTVmS1pSUUhVdjE2Y3RGRmlheXJzbEdFQThwSVlvMS1wdUpweDlhb0o0ZDNIM0p6cmZNWWo4b2thWWNXZ1U1RWlFV2stSU9kYzhtTTJtWG80S21iNldlVTktdkpnQXNqZ3J2aFpaYV94MnNxa2kzMzFNc3h3M3hON1lHc0pNS3c1R2QyeHhmcDFqMlVZMWxkTG9uM2o5Nk12b1NKUWtTM3U4dDVHaXZyY0E3MHZ1X2Nla1o4dkFYZEFFNjFTR1Z0bFRZamotYjJybF9Xa2E0LXJyT1JOMzBEa09uU3h0S3lfVGduR2VibEpOcUU0cDZQblBMSTMwb0hwUy14bHRFTThzaW5zMkdYaUtNWXhhT2poenNNcGpCNUlPVEhuRm1tSDg4Nlo2d1lnYlc1M21MeHVWWVNTZlJMYWtMYjQtS2Y4c0FTbFpsSFJyMjJRLTJlNEM4OU9scDMtZXc2Uk9KWXJfYkotU01LSE4xVVZta3hiTnpqV0Fia1Q0TGVZX0dUUE1keVNfb2FaY3Rqem5JWmFpbzFkR0trWXptc2VGcHY3MnNBQ0FaZF9YZWt0ME8wVHNTalZ0X19sOWpEYU1JcWtBeXJoVnJBeWFhaUR1bWx6UjZ2cVJpbWpZU0NGd0s2aDVxWTdEdVBTN1NjdFc4WWlMZVZkNDNkRVcwQUZYb3BTUUY2RVpNRXkwWmR6c3NlOVJyVldJckpfUjNOUjhOLXBKRjVqX0tocVNyNUlNQTdvNmV4S1pTSFZYcGVJWENlQ3M0NWI1bDJXS2xCQTVZN3BPN0pIdm9rTGFabTBUdXM0VXRPZlVPSVMyNHc0bjlTeDFJd0FZbXRUa0gtWDE3ZFpKT2pGN1FfdWV5RVh1TGFiRGNhUmw5dnExc1QzYjdBOGJwVF9xejJhcW9jVDYyYUl4Vkg1Q0FCUjVOVGtFOVZYbEpTc1FZdl9lNFU3RXFFa2loN1ZYNTczYzRFSWxrNXFvRkJ6dlhHVXJSaVp0SV9iVi1BUjZYM2dyN0NOY1JQZmNfa0h3c1NhZGptd1dTVGJrQTFfY1ljTW14dDlCV0NqbktFU3FDQ0N5VFNJTGp2OHlrS2puUVFRTzZLcG85MzZuamltRVBBSFNSV2p1OFVWMHc3V084dDJHQUlrZkx4cXU3R0VuT19PaDZLbzJBdjhta1BkMVBXTkNuTFVWMWpTOVdLYVNHU2lrd1VDbEIybnV2cmp3MnNnNUpqSVhodmRkZUptdFNVejBRMXN5RE9LZktsZFZ5dUx6ZllCUElUMnJaUWxDaTUzUVp1U0UzWmV3MXktZ3ByOGoxTmo1OHJiUHpGLTlwMC1NZkR6ZmE1VTBiNk5NcE5ZU2dPM0RYcDBsdTdNaHJZM1FOWkJVMTd6V09UdGdIdHlxVERqeFMwV2hsYUJjMVlsenRqQ2daakt0U2JBR01QX2RqdXpWTGhjcXAxYWxQS09WRDItZzNQOEp1M2tJdkNtTTc0eGtxazBGaDNvRkFfYnNMdFV1MEhSMThucy11SEo4SjZzVElMM3V6UW1lN1ZBSW9YNVNDWTVHR0xpQ05Wa3RLb3BnQl9WQ19KaTVBblpiaXhLRWNmMTNTRWFhN0xVUGtyZ0xXOTJKamQ5YjM5REtYNEtNV21Ec1p5MjZYR0VuTzFGeHB1cHJWeWhObnRiSnlibUZLX0xEc0lYemx2RlR5ZE0xdlpWcEFQQjBrWHhoaGVSTzNhMFZUbV9IUDdMdGlIeEFKeEtuNFh1UW1CdERlSGdvVG45d0d1VmNpR3QwaHhfc05YWS1hOFgyLUJVb29BeXBOdjlxZmFleExJRGh0OWFRRFJqTkhmcEJQRzl4ZU1PSmpBUlNPaWhKR0xxYlFqblZRN0FRTmFVUkdUa05DeGQtWndPdVJCbkZBcHluSHVCMmotQVNPVy1kLVNpUWZPYzl6czBVdlpvUmxVS01XUWRGZEtwYXludWRFMUM1U3Q0dHhHRmV3S3psTzM0YTdwal9Vc3o1QkUyMlBENG1xcVZkVWJJbXVaYWlBblBaUlBmaHBiYnh1U2lsRXh2b25xVlU4VTRuRUo3aW9JbVhMTUJqZ0lBNW5TMms2QTZHcC1icjRCQk1DclFObFliSURtX0pyaVRNVk13Nzl2UUoyX1dKQURRdzNxMEpjVXhISjBnUEdBQzhYWGdIY2dxTFU3V3VObXloTGVPNEFHWGFTd0N6UWE2Z3FCa0hJeW05TkRJSGlZN1BUSk5uUHdOQXBPaUlpTlBfTlV2bU53U3QxWXlMcnhxZ192dkRrSFRmN1YtSEFGc2M3RC1BVkdua1Zhc01OMlhYTDhIRmtUZVFEMi1uLTRUUWVlZjgxa1hkT25FbXlGbG9lZ25qNFBBdzU0d1ZnLS1qT0lMOXZKa25QTTVmRTlsYTZYOUJkeGFCa2NqbVFrUUZzNmZQaFJ5V2hoa05YdWF3eW1lU0NITWN6VlZEVEpxbktwMmRTd2pzVlBpYWwxYUV1OHJ5a1NZdnhJUUgzc2s4c1AtT1BkMWFhWlg5SjlGUUYyeVhhYVp2bmtjRk5XQjFnSnRBYlZGVDF3M0xxQlZoUVJkUG1fcDhvZEV3RXFJM1Fmc1B0YXhZM2FhUDAtamQwUTQtX1doNXUwdTB4RmJLWDRUbjNIaXg4MWxFWFNtSENfSldDWTR0Q3NxSC1OUjFGc3pKVk9XS2pPLXkxYTZLdWYtVWdVVVlLeUpRV3RtSEFnMEZFSDhIamVFM2lDNGNRM1dOdm8wWHZHOUpwUGVRQVBFa1Rfb0ZuT25uQ2hKVzlTak1NaGN0UzREVzNBUVJnRzFHQzhHLXo5NU90YlBZbzM0aUhLVUZNMmhOZVBfVXBRYl9lSVRDZUtTRzR6UGx6Z3Vyd1lCWkpFZzZxYW5MQ3VDYkc3R1M2U0VpWmNCX0N1UUtEaU5hNmJSTktoN3NxYm95LTE4NVp4WTQxWjB1OXdjOFFnYzZjOWtyNTZ4a3RRRWo5SGlpazVSOHQ1cW9HaXgwR05VQlRrU2kyMUI5SGNhWVE3TktLS2puVXlsdWtBYk1HOFdGdDZJVXRHdXpfak51dTJmQTZOUjJLSW1jUzRWOXRoR2xlcGRVakl2c3ZLOUVNX3ZIemh1Q1lZUU5ScWQ0dG5nU1BFUzhpX295b3ZjS19UaF9EeFh1blYwaWs5UV91a1VqWDhOU3IwMWpRT1VETzdHNkZSWjVhS04yMVNrV0x3Q3hxN1I0U2pFOXpVejBEZU9kN3I0UWdGaHNqRllwUTdwcDdkTS12S1pTNlplZHBoX3lDSWpCaHhNY3N6Y1NwUXppa3UtRFRJejdSODkyVThBSFo2SjduMEFaN0x4Xy1uMk54UHNfWEg1R284TGp2TTl3QngtdFNyallxSS04RzhILXhrWmRSSW93TGstSUZNekx2NU1sU1FpemYzN0V6X1VvRnc4cWs3VnpQUUZPVkJ4bllwWlFpSzhMa1BLbHRpNllfb3pESWR5ZTdTTmJjN2UyTkNVbFdHMmpKY29teXoyU0NjTjYxblUwUjVsWE9tMWFJMjVYcmZhaHZZUVd1VGJpZ3drdWZTemxIRlFtSlJoZnV6Zy16MXJPcE93SEwzTWJDQ0tYNFRXa0FtR2MxWlpzdzllYmNzOFpad3VPVWYyTHNyYlBBZVN0MndMWkJjR3VQczFFdDZaUXZLOU1RRTZ6MU9Ua0RnR1VNUzRTWnZSWkl3ZGFMazRRTGtDUV9Ec29QbEt2NFUxbHNPWUsxTHpKNGkxS0xhd0lMODZfT3lIS0ZqRHFXVGZfMW4xUnVlV1BpZDA4S3AtWDdiRF9rNUpjZHcteVAzdmZzc3p6TVEtTm1XZUNWQVRrRUdoVU1kb2lfQTY4bnFfUHRBbklaNE9HNlpiWW5jWVRWcWpTZjNYVHA2N2FWLUZSbTJwdDkwLVNnZjNnYlBmOElfZ3hpV1JHUkpnNXhBTnJ0ZENSMlBuX0xTMHV0S1pzMVNkbm45MlVXQktWTl93SFNJZC1tVVBiNGVyalozTGJoSDEtNlBkcnd0dTQ2QnpCRW5sdEN0YkNVWEZsWkhoUExFeF9INi12VWdkRHlNWnBvblN3VGFfYU16bm1VUTlxZVVvZnR6Z3VmWlVTaWtwbnZYcHN5dXQxaWFlSXE4QzdGTjVFblNlazRfWWJ0NGp1Mmc2TEJ4MmhORUE4ckpMTjFSZFI3UnVsNkxkQUkySXUwUXBGSVNYdGt2aURTSGpfY1RHTXdIQjFBZVJrdXdlOVB2a2NUVWgxMkZ4dHdNQUEyUEdhUnRmU3hfUlFoZWxnZERMOUdPaXRqOFdhR3ZOeV84ZjVNWEdpeXV2anFfMW43Q2swVG9VUVQ1cFNDVkJvUk9UaGJOZng5bG9FR3RrSEk3dnJlQ3RGb2Zyc2JHd1l5WUFRUVQ5X2RRT0YxRC1IRzM0dFI1bThnSXNwSzVFQ1BYdXowUzNqMjFMeXA3NHR5M1BhcXhxNWpwelcxRHFqZkY4UGxxcFIxWm1nMGJodkNfSUJ5TDZtZGJKZjNVWG0zcEVQckxuVHFvTjdMa3lqSnBZVDdLemhaYi1qdVRuVVFnYm9UaXV2TGMxMEdXSGV1V2xVaUVtYzFyOTYtQnlFcGRHc1EwMHBxWUFZankxa3gxVnVmb1VxNG0tS1hVNnBTcGJEM3lWTXE3WlBubkp3amxaS0dYUlM0emZ6MFRNTEpreFJFcFlpSV9yN29kWXFtbTF3akRkSlI4alZITEltT1Q0VDNzM3YxTnBha2RSR0NPSkdhUlkyTUdnTHBFdFUwVFRpc1NKbmJSUTVTbTJld0RVYnZBek5QOXl6SldjanQxSVFFY3BJZkRjX3F5Q3BNaGFtSDlDU2FubXFFanJpdzhDSjM0bnBHWWRmOElZZ2RGZmhGNDN0a2VJYjgwUm0yNTJTbnI4TEpIaHEwTWxZbm5ia2ZwSTZMemFYaFJ1NUdUR2RSWjV5Um1PR1lod0QxMUQzRkgtOEl2dGkzZklfQkxNZTJMV3VLNU1paENwUnl5aWhETS16MFpUMWhDeTVtN3FHdF8za09SVURkcXBSaEI5RGsxbWxfemsxNDR2bWJyUHZIcGVJVmctNGItMVREdXdxWEpXU2txTTNUVWY4TXBoN1YwQ1hDV0l4azk3MVlqTXRzdmM2TFlZNVg5cm5lNzlMNFZBMGtlT29EcFotNGJBNUxtSVUwY04ySy15c3hXZFNqLV9ycWNLTXFLMWVDNG1VUmI3SmZzUDd0a05SUFMxT3RoN015ZVlRMUtaUHg1X3FxclFxY2JSb0J4N2ZucmFnV3djTHIxUURfZHJIM2VlNUdDbWZldHJ5d0JxNFV2Z2dtZmVHWm5oOElFck1kZkRmTDFLMEhpblJFQUpPSjlrdkZvaVd5X1hoRF9objdFYXVtT1ZWUzN3YjRueHFYS0c0bnRNODJ1ZmFHMUFJQlpfaHJRMjhOOHdJM1BxeHRURWRROVlZS1R0NG1kcEl5Tk9UOEpCQTVnaEN3cmtXWnBXYm5QV1J1UXlZcU5xNHhjQUFxZWdSSVVZdWxRVFRuYWo2SjFIbkM2LTUxUGN3LUFDZ3FnUWQ3dUFOZ2FTUUFZSk56WnBOa0pzbW5wbmd1TElLZXp1V0kxTUFMVllldFotOEFBeGItbnA2RkhaWVdCM2NXblNrY2lIN1Z0cmVjRzNmVndpeXdqZFh2NWNnV19DYm9HQktOclQ4bXlJTUp1Y3JkRmVKdjlYdFdXVFVZS3lPYzRNa1A2bW1TZWFpekFxMXJMYmFxSkw3TElPeVlaYlRsQlZna0MzcmFEaTVjZEhkQkxKWFBUdWpHWHY5bjNVblpfNEwtV190NUY3QVBPLVpVMzJPcUFMTUdKMlRHWV9HTmJ3U2RFeWhtVHM1WWUtVEtxS3Q3aUxScV8yZnhna0dDOHdad0dmOWlrSUpwb0Y3RldoaUZrRF9hbkhxN3h5QzFaZHRyQmJoTjc0R0xxMnhDUGlHai1DV2lJSWRBTXl0c3g4eEcxWDVUcFYtWXExMHkzWUJVMEJNbUdxb0padDdCd2QzbzN1V3JVUGlZMTFHUHRHc1RaVTBxelc2aDdFVkY3UGlSd1N5Qi1Wemw4N05NN0NNNHRvYWp5UkNhci12TE43TEw1dkRXeXByYTUxM2VqX3Y1WUlDdWhMNVNldFJ2TGxmc2pZNE44VVdkNXozdzdCa2txd1BsTW5SQThzY2JORGozbWk4dmpwN0x4M2RpNFdRYUxwZG45TTBuUXVvZktWZ0VlaEdJMWI2SWlXTHdhSUpjbTFPdEd5aVJOSWQxQ0hmR2V4NURYaExNT2dGd2pfYnNCN09LbXMwQ1YycWZORVhEeWNNRkdOOHdqbVBIY3NvaGJqMC10UG9CTmtOckpJVkpFYkdaMW56allwTnhSNWQwOGtrSlJMdGdHWHlNbzVqaTRUNXJEQndVaXhfMTYwZFhXRm1rb05uZnFfaUVjSEd2bDVKQ2F0ZHBxTUlaZ0doaDc4SlR2LTNzaU11VFFKWkZGSzFuOE53WC1QRVZZSXBIdExncy1EZUhmdnBjYU5pSXMtaWM0WnVJa1oyenhFRndFemduY3ZiYXk4WEZpN01STld3UWFHbVVIdzBOR2hCbE9DS1BjN3FBbXFYd2ZjY3NvV2pNQkNoSFRmNU5MMDF6ZUFXUWxDbWZibmVoUEZNU0t0Wk11R21uYU5SNlNkMjZQX1p5NTFCUEhMNV91dlBhaWNQd010cEVvdEtNOURCbFBkRTE4SV9GVFZPc3FrZ0JVTDJoaHdQNFo0QWtJRU1RVTVZaUQwdFZwUDhyaGYwNnhEaG9YcmVnM1NHTHlYS2xxTmQ5aElGVEJsYmdKMUVJVjhVSnctU1A2b29RUmlSZGRDTU9jaGo3cl8wYlByQ3FyTXdaQ3g5V1RLWFlEeXhDcnNIODRlTHBtMFJlQ3MtSkc0amwwaWctQThEMmk0Skk2OTYwS2s2ZUJwcllDbkVPSWV5aWdrMXM3WE83WGZFT0JFSzc3ci1uVFVlT2ROaWFxVlZDMFpUMTlQeXhKbURmS21VNWY2dW81ZjAzM1B4dFBrREFITUZtZW5TcXM1MjRPSmJHNmpYeERJb0xLWERKWW5iVWNuSVkwcFh4VHd5eFF0SGZWc284X0dYMmhyNzFtandHdXlIQjZEYkhOVkN4Ujg3TTdQN1JvcmtXczRXMG9UeGNpRkVhcmkyWjlfNkV1bzFrWTYzNDB2X2FlTVZLVzk5aWVQUW1JOXpSclhxLXZPZHlJcE41V19LZGZQbzZyX1lFNTJuTV9DVi1pR1NVQlFsZ21idUI3VWV5UVJPbDcxRVlFaE1yUlladVFzaU13eXl6aXFRRUh5NExXbWt1dm1oNFpCWGRzT2sta2tzb0dxa1BZVjlTN0VRZ2ZBeEhvZlUzd0ozV19mN1puN3I2OG9iTFVKbl9XNC1WYVIydHFablJ5OVlZMXJNd3MtOTI0Ml85S1NncWhabGUyWlNRRlg5MGp1QTBPMW1MRGhpRXVHRXl2THRWZ1BUNWpHQ05NcmhGdmMtN3N0cllvMEFPbWRUWW11RVdyR24xeFJXeVZLcE5Jdms4ZGd2SjhMUTJ0cEx5NEJyVHlaZWNPSmNiUFl2S0xKdTQyd2ZULS1RMFRadHRtSGRzd25UR3BXOHRWd0xfdW9jNUhjeFViTnpBMzIwc25JTzEtenR2QWZlWk5kVzJFeWFIMVFLbDdXLS1odHNXcUJFM2RwYUU5WnFUYy1OM25rN1JGOHkta1hzTXA2Yk1wU0JvVzVXd0dJa0NGaWtkMWQtZ3lfNmdXWkJ4ZHlEbGlzSi1RZnJiOTEySUxEZ3gxcDJ0clRmNjYwTUhfZl9rNEZGM2FVdjBYYlJiT2ZIREtCR21YLWhWeW1abmZUR1AwbWl2S1F3bEwyOVlTcEpMUW9TSFE4WHFiTUtnbkh1QnNRaTB0clNPYV91RG43TzZ0djZ0RFZ0OUV2R2JiOTB0WkhwMGxWSmlfREhOWlRwTjF2THVMVlpLTTVlcXRnaHdRSjI5MktwU3hZZnd3clJBd1NuUHdaRHBZdHctMDRjWUV5bnlWMzRvSGlTelhDdXdhQUREYkh0UXJRNDZtWnZ5eFF2TTFtUm1iQ0lCMWNfODdIaXdtaWZoTGVqRW5ZZndIMVM2SXlEd2QteFl6U3ppcTVMZHVlaEhDbkZLQ1JPYWdsWjdaN2JocEliZUI5T2tBUE5LYTVkdUJBTFBpamZzaE9wMi1mQ3BWNnc4eEEwa3JZS3Q5SnhwQzZtYm9iX1QwaFAtc2lFMC1na3lxeTFEZXVaUTRRMzB6RlA5S2s4MEhVbEQySHoxTFl1UEQxZHdCOV9BdnZUTmsxNmFlT1lSQWJUaWJJRzBic0xxUG01Z3VMTWU1RExDTVIyMVJBYjZNUmFpRFY4M0llUTZEMzhpR05sWVQxY1Yxal95cWRUaWJ4ZUIyUmJqUktpTGY5UXpuU2Y0WTJWcG5DWWQzenVyRWIzTnFVRU1kYTJYbFZYaWtIek9LeFpHSC13VVVyOENCSzNWN1NtYkVMWlVjS1hHMHZlMFpkWGhkUGpvaGhzU3ZMYmRWNEIzWmlSVnRkSml3bHkwQWFoME82eTRUNzloQ0ZpajhqdEJOR2doSWppTDVjZ042MlNnREdvc1J1VU9aR0JqbHJhYWNTTktBemFGWHJjdUlsSndNZkdzRkdHd1dfUmNvc0s2MHNMSlNmdzdPVUxWaUtGYVZUNWNheUpqdkVtMklsWDRCbDI0cUVDeFZiTlBRdW5hR1VwSGdwYzNoYVVxM0lPcnJBazBPbnZRSERUaG9nc2d2Tk40bVhtM01zWnRBS1NkcGJPXzRST0xFMHNodEp0dlgtZEJOM0p6REdqd1BvUGQ0eE5mODRiRkNXVC1fb0ZrR2tWdE1Wa0loNUdhYjcxTUpjNUlscGhaaGx1QnRxRVpJMnVod0Z5WjQycFBYNU1sVF8zTXFnb2xNTnRBQnc4WThNMFlRRmIxOU1NUTVlRmFmOS0zMmhQUmZQbVZXWHE4WEhRV0FsNGtJeEswREd1QnBmMUpBMWo0dmRTOVRzWjBRS0t2Wi15VnJoQ1BoYXNvWXZ3M1NSQ1FfazBhc3FtcXE5RnpGSGNxeGFEY3NWTl9fZndsQnN2cERvN2pkSElOWDdWWnNPNmxGT1VaaGJ3X0w2X0x6Nno3NF9aUG1tTEQ0bnIwcXAyWDFyZy1UWkZnYkstNEx5NGpoVzFjQkhvbU45OHpHdWRwWkFrM3VERGFjTFFEUFFhUzFWUWxsR2ktc013eFlONGRxM21BeDdid1g3QUItRkZJWGJDSnp6bkZtRXI2b1AwQ1M2aUltQkZESzVGbEZ5UDBSY2VlNDJLb0VQZE4zeTBVdlVSaE1wNXpabVpKUFV4VXFGSFJHS2x1bk50QU5NekE1UGJ5T0tSSVpCdlhVaHBJQWdMMmZCMVdHSzdWd2w1Z21IY202LUtNMTAxQ0VaVFg3UXlkcFVZTDVuYWd2Mk5ZSjZNaXl2cFQ5UXd0NDYyN0JmRDh6SGRSdWtLYzhSLVR5ZzItVEN2UUxiRDBsUXo0SFI5STAyS1o5a1c5eU0wNlpMTlVEQkc4Mjkxa0YtQk0zclhTZ0FId2NGM2pOWmRicFVPZVRSamN3ejdQN25iRWRJUEJJdUMwZkVFRHpjam9rcWFhTHdRS0FiUDNlUzE4UGR2b0pwdFJta0ZTOHBmaVU1cnhJUmdOeEsweDJTYkhqeFJIdHE3cFFQNmwtTnV6bzRkcjZna1FzLUZmTDUzeThJcTlZM2NJYmx0WlNDeFk4bHphdFdJSU55VFBpOWRxWmg2SC1VcXVNekZzTGtmRWxDS0E2dEl2VkpnUlNnOEdCd2RMa1o3YlZad1JFQUVQRWNQRDJjalpCWjJYV3RtWTd3Rk5SODFoUlFzSnFtb3JsUkdjdnNkbGxqdXNzcnRRc3JTdUdlQXRxSGc5dzRpY1djSVdLRHRNY1NYY2hvLUNoejZJM2tpVm14dmt0TXFOU3JGZXhSUjhXSHpGdC1mSUtMQ25yckZCSHZmbVoxVjFMNFVuZ3ZUdXd5RHk1dDAwSVRGU0FyQ2xVR21oS2tWaUlzZGs5UWhSX1NhNDNhZmlOdG5rblIyaUIyNWlxel9WMWl5VjBoUzUzRnZ3R2dKZm5nc2ktV3gzS1AzQzFsM3doYUxBXzJxOE10TGJTUjU0czRmN01jWGxUdUxvUnh2ajdqMEZGWkp2Ni05S0JjSTR4a1lJRUw2eU5SNDFxLTdKTE5uUUJNUjBBSHZuWVpyNk1CREQ3Zkw3Z3VpQlRJQ1M2TGVGTzVUaUh3amUtbzhTSjhERGJNTWlYWmhERm02NWp2QlIxUmU3QktxdnRfMGJBNXExa1Q2a1Zxcm5NSVNCNXlscTlNcEpZVzM4SExRbE1xMW5aZHB2NTF5a09INzJoUk11R0FOM2VDTk9fbDF3Y0JTd3FQRzU2SUhkZWIwb0FzZkc1T0RuRllVUl9NeVVBZ2E1RW96QVZjY1lMZkFQa2pVekx1c1dfQVhYSE5ZY2l2cGJrRVFEVDVqUDh6OFhtSXFSSGZWMW5NMzVGZ0dRMUdRRWZYNkJ3TmVPdHpuUjNWVHdzeHQwWVhtdnJYMm9EUXBGMFhfUk1BdW9lc0pSVTdDVGZLYzlDNXgzOVdXckFhSnhEMkNWVnRfQWxkeWNfUXhWYXdFQmJ6dllZUkFRVVhlTE5KdGNpcmJvZlFnZmx0ZGhyZjl4cnRzcUVxdzFfVkQtbXlObVhYQ0RuUXdPTHlnUktKekVXU2ZSQ3hGNjBCZ0ZNR3lQdmlHeXdxNGRJdXNTaHctWENlUGRzR2tuYTVMZ05yRTVETU5zc1pmWkxsWTRwcHd2MnBGeFF3eV95NWd6RnhGQm1QbGtxekNLRFdMaHdPemlaYzNYZk5DZFJiUFpudVhKRWtzY2ctQlNQdFR6VDRzNXRUcmFHRE9xMlFiZFhHMTR6UGhlSjhuUFlqcnMyXzlReXZWZFhvcXd3OXFvdkRLWXNlMVA4cHJHb0hhal93ejlLaWZpaTVSU1lVRGhHWXRhd0tJOUNWWkFTTWtPM0NhR2dSdXE2d0FLZU9aOWcwUGpUaVBlR19Uc3lSSEtjVXFnVk1xOU1PLU9CTmw0U3lfZm43OFdJTEttdWtuLUZYdm9vT21wTVlPY2FNdmM1Znd5RXhITTJ2dWdnTkNycUNqQS13bTdrYXROREo0T1NNQUtfV3BCaFNhT1R1MHVhR3FvTHdNbnpQa3pITHJKNDl5d0ZQYWRrNkdaYzVWREdXZlN1VmRzWkNOdURCZWhOSE1CRlJzYzZWZEtHbzdCUmhrRTBRbmFYMkxBNnF4WDJWWTlJdnFrRElkZ2xndnBnVkRkRll3YTE5cEI0NHpJZFo2TnRCa3ZWaDU5WE4teGppRzR0Y3MwalFSV0ptS3plWTJCNG5fRUc3anRlczBrakVlcFJULTNZd2hUWUtEVEw4QWs0c3pDeEpmX3BUblZSbUlHUUFZVE40amlUWlVsNlpRRHdPSHdudHBsYTJpMUlFQVUtQjhuVGlPNjRTX2FHcEpCUm96UERWM0NlcThDZjhCNlJKdE1xaHVhNFFjcm84cDJ4LUxUSnJVTkFnVlFjbGN2aHNQQXVTcXNEdWM2VEphc1N4OU9QUlQ2M0x0UVRGTWNIX1dhaHloVmJxTG5oTjJRNTAyQ1VvYXlacXlzaDJVSFBDWFdiMFkyOFJibUI1OW9uZi1fb1BOZExXOEh1YnM2UnlmOXMxMGhFZ18tNl9WVVd5Nkc0SnVITzdpaEdiRktqNlNvZ0RsOWVYc2k3QlJaVy1paWszcnRrRUhBZDNpN3BXNWNoZWd3RFVvMkQ3QjlFZzVSMXU1YnhEMVhvajBFaWtHVU5iWTZXbG9MYXpYLTRTbEdhQ3UyMmc1S0JOYnlxM0ppWkpSaFE0RTNqb0R5Y3RDUnhlaWJ6Sk0zTzM0ZHZLb2JRRzJKMTVtRmJna19oM3V2UDhYdWRIYzRmLW83Z3pBaXd4elptR1ZxOXo1bWdMcVRnRGxSc0JidGdfTm93ZXNWdXpWd2U2WnlCWUwxOHdzbG5fb1U3WmVlWWdLU3FTNjB1ZGpheFpBWmFPc293c3RWeEtXUS1PZGl6RXhtQzFmMlMxclpnUnFleUEycmF1eThjc3JRU2ZmS2kwV2RBMHJuYTVSVG51bEVJdWl3d2JUdkNiaW9zQ1hRREN3UUMyS2xhVmxTdW4xQzNINnJkaTZ3N2FuNDRmY2hKeEluUG44aEN3TlYwZWJMS2dybFlpYkxrVHFqU2pFa3Zid2x6NVhfRHRQVmFUSGZJSXFyQnJONVhhZk5ubGw4cmFwd0ZCbHY1bkkyM2NKM1NLRGs3MWFEMWhrVEE2WVJqSll1dVY2RW5GNGw2dlVyVlVlTW1fMkMteW1qNEJQNTJScHd3MkQ2bmlPYjlXcE50SEVnUi1fRUh3ZlVVcGlObUtJLVFhNnJpTXRWQWJHejZQUFhTOVJ4Q2UtSmE4Yk1nZHdIMEFUN19zalRsZFlKeWdtQVdLUk9wOGFMRTFyMEI2bDRONnlBc1M5dVFCc252QXlNQTNTUWctY3pLemkxblRTdWZiOXlXOHFWOUFHX0J6TFJtcU9qaU5ZT2JYS2VtNmxSc0tLY2V2VDdyUzNrUkJoQ3ZWYXdxVlZQakJZLUdFTlc4bi1pdnE3UGFMSXNUblZobEExY1VheXozbEhKOGh2T2ZYalp6T2NVNmZoSXIwNXN0WTIzbGlGX3EzRFZBc2E3Y0xPNmVyMVdkUUZFVWZSSVpydnNXbXZKam5ydzAya3F4Y0lHUmZFREZYa3hwNDZDMlBqMmJvLThhQ3p4aEdTU1A5bHpDVmd0ZDNmRTJfYVJNYTVxZ0N0SXRDeDNBWkJMX01yazZXMTlmQ3k1YzNsekNRNl83SW80R1NHTkRvWTR5cUkxVTRBM01OYUlPVUQ1aXNFQ21henIwSTRTbzVGSG5DNHZLZ0hsZDlDVW1RT3UxeUVaLVJ3Q1psNGhHOFpoUzM5cnRlMzM0eWRGd1o0Qk5xWmNTSFpTQjIwTVVLX2kyX0xKMHY2b2FrMnI1WmlPazNPRkxYXy12VHYyY2FaeFF4a1lUdjQwbjd0dTZobzVJMXRsS2Y5d1VEQmdKOUlSYTlfT2tVN2I4RkoyVDgzbk54X1ZKcGhnWjhhdTd5aWFtaUtrZ19wRjNucEI2TnVPZXB5NHJ5UVJ4NU84cldhSTVuTmZPLUk1cktyNW9PMVJBVGhBUURBSWVzWVlaemxNQ3JoQWo2TTZfc3lmamRWdDB4MXhNODhMRkszRWhlN0RmeHNYc0ZKVEZKTUw5YUdwa0pLTlJZSlpqNmM0VHVSMFFtZTlCQ25Ea0d0U0ZlMkdOMTIwVlg1Z05JMG9uQWlXLU1OZVJCZnpfNGpBeWpXam13eVZ2WXNHTE1TdmxmY1FrVkdKZl9mWFRXZXdYYkVHVFc4VDZOdFd4THZsYTlkaU5YbGlSZXgwVUFFc3lkT05pZm0wcmpiRWVsWTBuZWFHcEU2N0M5TVpZYVFzY1lsZmxPNkVZTGRoZTBvMTQ0QVRNZG05M3pJM2tPcmhSWEExVDZjNVhHb2IyN0FOMllTV1RDVG1DSTI0NGVjT0drQUpMRlJJdlBIWlhWeng1YjV5SlVKby1XdmItanhpZVhOOXljZ3hnZFVscjh2a01GTGR5XzlubVBYY0tmZTA1c2RKaWs2X2VxVFhPVkJaRmk5WHM3ZlhsLTVVVWdTTzBHQ1VxZzgtMHZBbFQ5ZG15dmQ5LTllRGM5NzRRV29RU1Zna3FEX1hSVE54X0VVUzVFTUFXc3dOc2FRdHVNd0JCVTJJelZGajBNQ2k3UVpGcF9lT2d2LUE0RlNHcG9vOUZ4RkJ4X2V2NnFEYTlJeVdLdnhiR0Y4dE5sNjVXVXNqWkp6Qks3VEd0NzBpemU4Z3pzakN4Rm44UmE0cXZPZDJJUmQtY05NX2xsT3o3LWI4cU1KZ0ZOZlJSdURqUjRPZHJjMjVoZExTd0dUTDJ1S2c4bmN5OHA3UzBWdjV0Z3ViNVRfWlZUYktyS01wVU16QkZUV3MxY1NlZ1NQdXlIMEZsUUxEZGJtSnlkb2RtcktrSVpEdHNaM0VWZFN4c3c5RWVwZkJkNFFtdmVLTGh5MXMwdm8xem1HRXNVNnpqdjMwR3BVam5jVGZVY1B3VFlScDl0aHZMNUppM19YeXBtY2I0WURKeThlQ19GRUI2bHJqemN0dzVpTnFWUHlzdWJUb0ZSSmNuM2ttY0NTbnU1UF9GSkxmX2V2c3FqcEFLYjVmTkJ3OFo1X0oxVnJEcnVneDRJbWphZ1hDaVB4Y2lxSDFjdTN5SnMwbUh0dzl4dFVtbGE2YW91Nnc5MVlRLS1Uem5SX0VEQTkxY2FYOXU3X3NWNTVieEJpczdlYVVXNml6bGVxanU2OW5hZjRVbUVtdURuRHlZT3JWaDRsMDVMWGdDODJDaDFMVllQUXM1UXZpUWNKaFBHMFVnY0I0U3hNRDZGcXplX3pJczlNd0p5bEVyMG1RSEozVHVrYjV6b1o3aVFoNFQzZkx6U0N2VXk2N1YyM29JWmpLc0dzcmN4UHNmc1hnQzljUTRXY183ZGNVUU9qLUpsSDdXRFlmbUdYNmIyM0pYbGF0aldHVWhpZTU0Vk5QU3Z4N3ZQQ0Y4d3g2OHNOWl9xSkUzZXBVSV9FQWNSZmg5VV9EZVlhaC1wekY3MlhOX2xiS0p3S0VFRVIwcWtrNWVKUWJ6aVFSUGlNOHZ0cVBKMDRyNlVIWkNvanZTLWU5ckFBckZjMEJhSWJHbXlfV19Sb2hfUWV0dUJRTWliQWxOQTBCZkxIUGtwcmRIVDlEVDJOUS1XWmNzS2JCR1dRUFYtblhHUkRHSnFlSXdfSjNYd0N4MzZKY3ZkTnBRbzdRM0tzd01OOVFENUgxbkVobEt3d2JUVVJQUklzYUh1X2hhN1dya3Q1cS1SaTdYR21OYzJNMk4td2JqUExOd0I1NjVnWUhEaG9Lc2pQWno4TkRYbl9Sb1ZnOEp2V1RHYWNLTGtKeUtKNW1BUHJzRXFaNE51clJwdHRRNC1BelFlRWIyZGlyRzMtYUQteWNjcmdjR1g5dXh3YmU2cWltU05lWG9Ld2hvRGlJY1d0MDJaSWtNQjJzY2l2Smt5MXUtODI1SWVBZUNSRWlnTWVSMlA4cnNkN0N0VDJiREJGc2Q2bnozaVZaRGdDMWNtQlEtQUlSc2pvaEFxeFBfWFpKb3cwZ1d3Mmc3bE5NNkc3T1hHMzVwVWs0MFFoMFplVVU5dm0tYnZFQ3BhZ25EUkRyMmpXV210czZCUTBIYTVudHB6LVUzXzA5MjViQjdZQ0RzbDh4VTlTYnlrWWRyZjQ5VWlnT1R0OFktSV96Vjd6Wll4X1FMdW1BWUJkbm1nZDJ5Vm5lZUNHeW5SbnhCRjNSZlZweUE3TGhtTlgxdEVRek5BOVhSMmstWk85bGltcFJBbVd0Q3FTeFFPVDJLaWNZUEFNbWJhUHJiSDFnNWFLc1lvNVI3eE54NDBfdVdXUHo1M2NfT0JpLWs5aFZiUzItQVMzNTZrNW1uZFl5QU5XODJCY1JtcFI0ekRPeXhaSFdERFc2eVJTMXIxUTJiT1Y3QVRQZGtTWHBSNzNYekk3TTJiT0YzaXh4Sm9nWTdYSUwyaUN3aFlQTkpvMjJvQ0NZVF9Xc1E5N1c0NHNSMzd1MHVHQ0JWaThkS3kxeW1uaFdUTGxDQlUxaDdlZU1ybDZPRTFBU2gyR05qSGZRNUNMNjQ4SFQ5RFNFemFla0VuVHlDWHJTck1KSEFscEhFYkdYTFpMVThJZ200a2JhU1FLZFJiQzFsclVPQm9BaTBRNzZPME8weGh6RWhwcm1GdVNLVlQwb3A5d3gyem9EbVZJTFdSVkducEdjVlMtbnc5Qk9rVDQ3X21wODNEX09tVGRLRmdpT2NOZUdoMHhfb09oazVUZFdqNXdjajVablExTEpkMW0xVF8tZ1lOVFdKVm5CLTVsbGlZZEU3YTdiRk5hT2VGN0czdU9EQTZZS0ItNFFCdkhiZTZmT3VIOFcySm8tUnNDX2tjSDMwSXN5S3hlSlJpak84TTAwd0hpNHN2emRIM3kzc1liV0habVhhcHhBZWhBLXlrWjUxenkwRHNqTUtMRjZFSmxBQVZzMy05ZVcyNnlWWF9WangwYWJ5aUhDVGlHQjlLYVpvSF9WU2Y5NXZYcFRBT2lTMm45RnFUUEktdGVXNGs5Z0dRQlB0M2dGeG02bnhrTlJOM2VISjFLUFM4XzYtNnNwalI3bTFWbjFkNnlBaDV6bFNpMWhjN0RqM0xwWTJjbDBpTGEyZXhDX3BXNWhBcDRQc3V0YVhsenFXUWVWcGU5QV94WE03T2MxZTN0alk5ZG1iSHdjMERhcHJlQ3VJcGp1ZEpDQnVmTFoybmpQczBLUEVuNDQ3V2RPNEZaQ055aUhhVlpmaXh1OU5hbUFBUWlnMU1feDBLR2FtNzViQU0yUG14UmJPdHpMbFc2NVVaLWlwcWREWVhERHdHRzBJNzlRUi1QMlhobFNXWm1EVkNSSHdnYmR6YUhGVldrSkdBU0pwem10UXBwS3lzUlpLX2ppWEVNRWJtbjRORzRJVGNlREhmT2dyQTBqSnc5N1p5N0FNVko1ajg5S1g4dlBlZ2ZUdUJQZU83eWctZ3JheEE3cUVaWVJNcjRIamtQN2dHeHRFcmJ3NzdaWVd0VjlGLWpEWEVvV1F5dHVOcUZhVjRWR29neHdnNkZpSmhFMW1vaGthdjV4bjlHS2VRcVViSVVKWUVyOFhHT0xWTHg2M2xlWVZEZS0zb0gwa0ZUdGJSTWdJQ2p0bUdaN0Y2UnlzTm1PNVp4aU42eVlFMmNQNS1ScU4wVTM0azRZRDJ4aTF6LXdwUWZYTEt4ck9aTDYwS1ZycTItaW5pd0ZXV205b3p6YzNwcW9xZTZQX2FFV1F6aVZIejl4YXRCUVNkaV9mZTRZVHd2cWVTX1o3VzI3S2I0TGQwQUpadXd3VXZSMXZwUEE4aUZzdmxVY1RIb1FfUjRfSHVKRTB2MnZaa0VLRXlvaGRIV25rbXdMMmRLMVVQS2c1RUFMNWZMVTh4eG51dHEyS2VOd1NzQWVrNnZwRlR3eWFfcTYwWGk5d2ViT2lEdWlUc1FSOTY1LThoOXF4QkVsODdrOEhJMzBsMFJqTjNDN3VSSzlqcmVnbTh1R1o0WW5UcUtPSWlRSElkdkVXN2xjU2JvN0xOaWhNcmh6OVhQTTVkWUh1ZUNkSll4MGxqQmxyOUQxWUxTLXZvYlNIYlNaU1VjTXZ1ZEpkWDZBME94cEJ3QnpHclJ0VDFUNDZ6QVVucEFKYzVvUUVfb0FmMk92ZkVYV0FoSHNvTS12bFBhbFV2Z0xsYzRQdWdDTWExUGg5alhDWWUxdXVuenczMy1kYXo3dXJsVnhsRlRXWXphR2RXYUtMcGpCWmo4ZkozNHZXTmJwRXNfUVkweWNFY2stOTNmX1N4Mm9KcGpsdnJpYTZxUlJmZXlYT3F5TWhETG5FalBFbk1oNEpmMUZkem10N1JBalBNb05Ud1U3LVNUSmtRRFRhYW9DZkNQM19aTFM0dTlLa0pBSThVRzdQWTlMaTl4a3BUS1NDNnJXRUtWSGtZcnpfNEQxU3lqcU43cFJ4dGk5MHpDaVVCeEduMlR2MURDMDUyTmhnRkd0bVpLM2M5Xy1TTXlKVERnSlJQNTR2Y0Rka1FKbkdQZy1LRjJDUFdsQ19kNXEtYnZrZHh4NVZNV3RYVGNEaUFDSHA1ZFlZLTFsd0ViLURZTWtiQU01MDZxLUpuZDh1T0xRbUY1dUlFaFJpY0V5SDFBTmFEMW1CNVlLZlJhNjg2cEVQa3hXR2t0WkxEODZaSzRCTmZpTWlIQUdnclgzdnd5S1FzV1pmS2I3SFBiWHBtYkZHYjBYTjlLT3NVNmdzQ3d2V1JxeWxFMk1GdWhwVHExQkJjNkVvdk5pTUVXY0VhLXc0WURCRXB1cUFBamYzRWpJU2tFYndUelVQLWZmT3Zrb25yOFRzWEZldk5VM041SDBMOU8tMTJWRS1YdFczb3d3U295aHhyQThCd1RSTDh6OUZVQXFhd3Z0YVU2OWJKcDFkSmItQVhaZkNtcXlaOXAwY3NrOW9kQXB4WEI0U3RFcEV4OUNxMGdxSkhGM1dXdkFsYUVOQVpiVlJrR2hVVUhPQ1NSc25EN3llcV80Wkw2LV9tMVV0c2luSUFFbzhzQW5mdUhQbGkwWUF5UVVXS0RUZ1p1TzhZaFFkMkQtTjFudTBuNU9uSXN3eWJVTThLTjZZRDdBd0dsaHdkT05aeXdHanZsb2dsREsydTNxU0VPLXQtektLOEt6U292RHpnZlhSZUx5R2RuUkNQanNrSk9JOTN4bDFTNGhEb0dldUxYM0s4MTJQTVRNMnJycFh6aGN5TFE5ZmdRRVJndUY3WHNfRjNjTFpyWDZzTUdlTVBJSm95anNHUjZKMU16dTNRdkU4ZnRWOWpSb0hNTnRPZTRENjJCekxlZ2s0UDliWE04akd4UXV2OXNHRjM2OUZ0Sk42YXFYX3pRVVpNVGpxYXYycEVPQ3Nhc3BoTUpROE81cmxRaDRtWmFkUmV1R2JhWWpDaXAyQndtV21SR0o0QVNaalJXbmlJWERuQjNKOVhuOGszMVVLT2tqQXNQeXBDWVhZUjI2ak0wR1VLMjFESmR5bWh3WFBFV3RaWHFaMl9qQWpONW9JY3kxSWZtMVFhMDJCVDBoUGxWTFU2eGJvQWV5dk5QTU54NjZnWXlwOFNFQjJUcmNZV1d4cVRRM3dOR2NDZlE4TTMtV1BiV0NvSHBUTWNGVl83dkVvRm9ILUpqRWVXWms5TFQwd2Z2ZnY5S3kyS2xzeE9rZTQ5QWxkLTQtWE9TTnNzZmJKZW12UmVWbTNEbFZydDYtUFQ5VC1WN21xQUNsVGVMX19QQkplQ0N2NVJ5bG9QOXNMeFIyRl9WTVZyc2N6bEVFVjl1MHVyMTNIR01TRDFrUThtUmE0dTMwQmdfUGEwd2EtU2dyaVZRVjJNLldldVJXdUY3bGRRYzVZU3dTZ29HZHc"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['24944'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [2b3f49da-4ad8-11e7-9323-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/restore?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/6f0c928697c74752ba5d79715f5543ec","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"2T79A4j0k8OUMMSV25jsAjbMLCFXftjKaQc1S1gfgzy8ZvxeaQoIxvV0rGTdSCyCiNXepLbMLzj7Sahj11AG-uF1eEPZV6WhgKcNA15I1RoY8krQE7uk02fVWFuFQhhxK_Yrvv93aRxXKPpdtMS4iddbIE79SmqoOtDf8JKf3imMQG8xJ9xC8N83qhEqep3bcdpDDjUMYDDhVaKmRhJpW9ZGmSY8RGrHSZm-9OrZUHCBVnMk_pMM7b3W2RUvfGAvvcx0lfpV7cw7gorLt4NpsJrbp1_z-EyfRueCH48LyeUmO-qtcadrKDOoJW8L_ZTpY9Ikqt44Iyr973I8UlWY5Q","e":"AQAB"},"attributes":{"enabled":true,"created":1496767794,"updated":1496767794,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['656'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:49:56 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5129ab1b-09c6-47f7-8ff5-04f198928012] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_crud_operations.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_key_crud_operations.yaml deleted file mode 100644 index ade1cae5f4f4..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_crud_operations.yaml +++ /dev/null @@ -1,321 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [9ea6ae64-4ad6-11e7-81bd-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:50 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [6f1a9148-b9a2-48b3-905a-9622dc72efae] - x-ms-ratelimit-remaining-subscription-writes: ['1189'] - x-ms-request-id: [6f1a9148-b9a2-48b3-905a-9622dc72efae] - x-ms-routing-request-id: ['WESTUS2:20170606T163850Z:6f1a9148-b9a2-48b3-905a-9622dc72efae'] - status: {code: 200, message: OK} -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [56030fda-4ad8-11e7-9c95-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:07 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [26561cf4-f927-4037-b77d-81d268eef08e] - x-ms-ratelimit-remaining-subscription-writes: ['1191'] - x-ms-request-id: [26561cf4-f927-4037-b77d-81d268eef08e] - x-ms-routing-request-id: ['WESTUS:20170606T165107Z:26561cf4-f927-4037-b77d-81d268eef08e'] - status: {code: 200, message: OK} -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ceda1b3a-4add-11e7-a693-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:17 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [bb9acab7-24c8-4221-b4f0-73df9fd9f874] - x-ms-ratelimit-remaining-subscription-writes: ['1192'] - x-ms-request-id: [bb9acab7-24c8-4221-b4f0-73df9fd9f874] - x-ms-routing-request-id: ['WESTUS:20170606T173018Z:bb9acab7-24c8-4221-b4f0-73df9fd9f874'] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [cf1e1592-4add-11e7-bae5-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key98b91233/9acd57c81f8f4874a82cb41c2c45bd0c","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"37U8PuZINjfxp1M43jNCRanJvzOqpz5xlN3Ve2uy_xS9pKsta89YBD2xB6OrLhNHe1irUiTrjJRPtTtS0iyZ20jo-CTYvocC3t2S0hKVhaI8aVzI5TqbD68iFjqnkfu7bTMXbGliwnXAb7n-bewgHhXMcerYtBGv_FJIJgA9qhm-ZvNk0fX4u1GQS9S0iMJqzeIPPZLK5-6vOhSPJd-gXQXcrUvqQ_X2eUvOzCTvxS5_lb-wuG57JlGnMWIOS1ohZwG77iTvUr1SqdgGpM_OglAd3qMBCP072od9kA0zrHigLAJc9F_YRxTUZ5zgBKYq26G4wxq_U2vkGKhqi-soLw","e":"AQAB"},"attributes":{"enabled":true,"created":1496770218,"updated":1496770218,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['653'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:18 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [963bb71b-1347-4e2c-80c4-7925023abfee] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [cfd00524-4add-11e7-9856-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key98b91233/9acd57c81f8f4874a82cb41c2c45bd0c","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"37U8PuZINjfxp1M43jNCRanJvzOqpz5xlN3Ve2uy_xS9pKsta89YBD2xB6OrLhNHe1irUiTrjJRPtTtS0iyZ20jo-CTYvocC3t2S0hKVhaI8aVzI5TqbD68iFjqnkfu7bTMXbGliwnXAb7n-bewgHhXMcerYtBGv_FJIJgA9qhm-ZvNk0fX4u1GQS9S0iMJqzeIPPZLK5-6vOhSPJd-gXQXcrUvqQ_X2eUvOzCTvxS5_lb-wuG57JlGnMWIOS1ohZwG77iTvUr1SqdgGpM_OglAd3qMBCP072od9kA0zrHigLAJc9F_YRxTUZ5zgBKYq26G4wxq_U2vkGKhqi-soLw","e":"AQAB"},"attributes":{"enabled":true,"created":1496770218,"updated":1496770218,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['653'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:21 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [8438a912-ec04-4b82-88cb-445fa3224039] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d0a7600c-4add-11e7-8044-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/9acd57c81f8f4874a82cb41c2c45bd0c?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key98b91233/9acd57c81f8f4874a82cb41c2c45bd0c","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"37U8PuZINjfxp1M43jNCRanJvzOqpz5xlN3Ve2uy_xS9pKsta89YBD2xB6OrLhNHe1irUiTrjJRPtTtS0iyZ20jo-CTYvocC3t2S0hKVhaI8aVzI5TqbD68iFjqnkfu7bTMXbGliwnXAb7n-bewgHhXMcerYtBGv_FJIJgA9qhm-ZvNk0fX4u1GQS9S0iMJqzeIPPZLK5-6vOhSPJd-gXQXcrUvqQ_X2eUvOzCTvxS5_lb-wuG57JlGnMWIOS1ohZwG77iTvUr1SqdgGpM_OglAd3qMBCP072od9kA0zrHigLAJc9F_YRxTUZ5zgBKYq26G4wxq_U2vkGKhqi-soLw","e":"AQAB"},"attributes":{"enabled":true,"created":1496770218,"updated":1496770218,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['653'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:20 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [ea4a9ddc-df1c-4681-80d0-687e85fb3d94] - status: {code: 200, message: OK} -- request: - body: '{"key_ops": ["encrypt", "decrypt"], "tags": {"foo": "updated tag"}, "attributes": - {"enabled": true, "exp": 2527401600}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['119'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d126957e-4add-11e7-aed9-5065f34efe31] - method: PATCH - uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key98b91233/9acd57c81f8f4874a82cb41c2c45bd0c","kty":"RSA","key_ops":["encrypt","decrypt"],"n":"37U8PuZINjfxp1M43jNCRanJvzOqpz5xlN3Ve2uy_xS9pKsta89YBD2xB6OrLhNHe1irUiTrjJRPtTtS0iyZ20jo-CTYvocC3t2S0hKVhaI8aVzI5TqbD68iFjqnkfu7bTMXbGliwnXAb7n-bewgHhXMcerYtBGv_FJIJgA9qhm-ZvNk0fX4u1GQS9S0iMJqzeIPPZLK5-6vOhSPJd-gXQXcrUvqQ_X2eUvOzCTvxS5_lb-wuG57JlGnMWIOS1ohZwG77iTvUr1SqdgGpM_OglAd3qMBCP072od9kA0zrHigLAJc9F_YRxTUZ5zgBKYq26G4wxq_U2vkGKhqi-soLw","e":"AQAB"},"attributes":{"enabled":true,"exp":2527401600,"created":1496770218,"updated":1496770222,"recoverylevel":"Purgeable"},"tags":{"foo":"updated - tag"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['661'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:22 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9ee8116d-1558-4872-a834-b75a67653a65] - status: {code: 200, message: OK} -- request: - body: '{"key_ops": ["encrypt", "decrypt"], "tags": {"foo": "updated tag"}, "attributes": - {"enabled": true, "exp": 2527401600}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['119'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d1b3b946-4add-11e7-b0b1-5065f34efe31] - method: PATCH - uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/9acd57c81f8f4874a82cb41c2c45bd0c?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key98b91233/9acd57c81f8f4874a82cb41c2c45bd0c","kty":"RSA","key_ops":["encrypt","decrypt"],"n":"37U8PuZINjfxp1M43jNCRanJvzOqpz5xlN3Ve2uy_xS9pKsta89YBD2xB6OrLhNHe1irUiTrjJRPtTtS0iyZ20jo-CTYvocC3t2S0hKVhaI8aVzI5TqbD68iFjqnkfu7bTMXbGliwnXAb7n-bewgHhXMcerYtBGv_FJIJgA9qhm-ZvNk0fX4u1GQS9S0iMJqzeIPPZLK5-6vOhSPJd-gXQXcrUvqQ_X2eUvOzCTvxS5_lb-wuG57JlGnMWIOS1ohZwG77iTvUr1SqdgGpM_OglAd3qMBCP072od9kA0zrHigLAJc9F_YRxTUZ5zgBKYq26G4wxq_U2vkGKhqi-soLw","e":"AQAB"},"attributes":{"enabled":true,"exp":2527401600,"created":1496770218,"updated":1496770223,"recoverylevel":"Purgeable"},"tags":{"foo":"updated - tag"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['661'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:23 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [51431a05-539b-46e9-af7c-3f431e4387d1] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d2464aee-4add-11e7-aa74-5065f34efe31] - method: DELETE - uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key98b91233/9acd57c81f8f4874a82cb41c2c45bd0c","kty":"RSA","key_ops":["encrypt","decrypt"],"n":"37U8PuZINjfxp1M43jNCRanJvzOqpz5xlN3Ve2uy_xS9pKsta89YBD2xB6OrLhNHe1irUiTrjJRPtTtS0iyZ20jo-CTYvocC3t2S0hKVhaI8aVzI5TqbD68iFjqnkfu7bTMXbGliwnXAb7n-bewgHhXMcerYtBGv_FJIJgA9qhm-ZvNk0fX4u1GQS9S0iMJqzeIPPZLK5-6vOhSPJd-gXQXcrUvqQ_X2eUvOzCTvxS5_lb-wuG57JlGnMWIOS1ohZwG77iTvUr1SqdgGpM_OglAd3qMBCP072od9kA0zrHigLAJc9F_YRxTUZ5zgBKYq26G4wxq_U2vkGKhqi-soLw","e":"AQAB"},"attributes":{"enabled":true,"exp":2527401600,"created":1496770218,"updated":1496770223,"recoverylevel":"Purgeable"},"tags":{"foo":"updated - tag"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['661'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:23 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [186960fe-66d4-48ab-b196-3ab8792c037a] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d2ceebc2-4add-11e7-8f5e-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/?api-version=2016-10-01 - response: - body: {string: '{"error":{"code":"KeyNotFound","message":"Key not found: key98b91233"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['71'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:24 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [0505a1b3-f356-43de-84b0-7be27190a1a1] - status: {code: 404, message: Not Found} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_encrypt_and_decrypt.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_key_encrypt_and_decrypt.yaml deleted file mode 100644 index cef8fc69d2cf..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_encrypt_and_decrypt.yaml +++ /dev/null @@ -1,205 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [a19e3be8-4ad6-11e7-b5ad-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:55 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [493810bb-7c51-4e2b-939f-1fd0481ae985] - x-ms-ratelimit-remaining-subscription-writes: ['1192'] - x-ms-request-id: [493810bb-7c51-4e2b-939f-1fd0481ae985] - x-ms-routing-request-id: ['WESTUS2:20170606T163856Z:493810bb-7c51-4e2b-939f-1fd0481ae985'] - status: {code: 200, message: OK} -- request: - body: '{"key": {"q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3", - "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", - "e": "AQAB", "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", - "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", - "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", - "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", - "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH", - "key_ops": ["encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey"], - "kty": "RSA"}, "Hsm": false}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['1738'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [a21d5650-4ad6-11e7-b0bd-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/0f0acb3587a14de6976c739e5e2cc989","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU","e":"AQAB"},"attributes":{"enabled":true,"created":1496767137,"updated":1496767137,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['659'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:57 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [952a8249-fdff-46e5-b0a0-4b10b95dfa94] - status: {code: 200, message: OK} -- request: - body: '{"value": "NTViMTkzMjZkNTNmZTI3YTA2MGZkMjY5ZGE3NzdmOTMzYmM0ZDJhZjJkYWJhZWVmODQ1ZTg4ODUyZWE2OGNmZjlhOTVhY2MxOTY1ZWRhZTA5N2ZlZGFhMTdkYjgzZmJkNTEyZDk5YmM4YjUyYjRhZDZiOTczOGYwODQ5OWZlZjVmZDE2NDE1Nzg4MGUwNDQ5MzFmNWFlZTNmNzhiNjFhYTM1YmNkMjg4ZWM1NzhkNGViMzUzZDcxNGE1YTVjZTVmYzEzZjRkMzI", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['299'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [a2ec514a-4ad6-11e7-b162-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/encrypt?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/0f0acb3587a14de6976c739e5e2cc989","value":"DaYMDQ_1b3etFugTBXuBV5SEhxBc6eTfqUz5SQQXRpuwHHhSSgL0SUu2WgIJmhacID3fHkvrgW2z4vwCn-hTP7pWtFRGQU2pZsWjc2eP88u8mc7Nun9QUWFDs6ivOIjPcogXcR4AMshkTdbVFTkc1yg_ua6hKdFJzVKgTeouWAX_K5Bqpk3web8a_gJSjX0DXcHPttRRcjLOwdy8vonnZG1T2Wx6VaieQSH0UvNlSxm8ZPBQPvcDDOgB7qacUCdbJcF7EADDF93BHf08eHwvITKnsh1PA_ya2RqH2tNM7-CVypF3_LFmH2JO9FvrxyhbOz7LYURq-WPTw3ouTsAmkQ"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['461'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:57 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [dec3b6d9-0592-4ecd-b70c-88aeb7487a0d] - status: {code: 200, message: OK} -- request: - body: '{"value": "DaYMDQ_1b3etFugTBXuBV5SEhxBc6eTfqUz5SQQXRpuwHHhSSgL0SUu2WgIJmhacID3fHkvrgW2z4vwCn-hTP7pWtFRGQU2pZsWjc2eP88u8mc7Nun9QUWFDs6ivOIjPcogXcR4AMshkTdbVFTkc1yg_ua6hKdFJzVKgTeouWAX_K5Bqpk3web8a_gJSjX0DXcHPttRRcjLOwdy8vonnZG1T2Wx6VaieQSH0UvNlSxm8ZPBQPvcDDOgB7qacUCdbJcF7EADDF93BHf08eHwvITKnsh1PA_ya2RqH2tNM7-CVypF3_LFmH2JO9FvrxyhbOz7LYURq-WPTw3ouTsAmkQ", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['374'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [a36d191c-4ad6-11e7-8465-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/decrypt?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/0f0acb3587a14de6976c739e5e2cc989","value":"NTViMTkzMjZkNTNmZTI3YTA2MGZkMjY5ZGE3NzdmOTMzYmM0ZDJhZjJkYWJhZWVmODQ1ZTg4ODUyZWE2OGNmZjlhOTVhY2MxOTY1ZWRhZTA5N2ZlZGFhMTdkYjgzZmJkNTEyZDk5YmM4YjUyYjRhZDZiOTczOGYwODQ5OWZlZjVmZDE2NDE1Nzg4MGUwNDQ5MzFmNWFlZTNmNzhiNjFhYTM1YmNkMjg4ZWM1NzhkNGViMzUzZDcxNGE1YTVjZTVmYzEzZjRkMzI"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['386'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:57 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9155aef8-0754-4a4e-8fc3-91643ff79632] - status: {code: 200, message: OK} -- request: - body: '{"value": "NTViMTkzMjZkNTNmZTI3YTA2MGZkMjY5ZGE3NzdmOTMzYmM0ZDJhZjJkYWJhZWVmODQ1ZTg4ODUyZWE2OGNmZjlhOTVhY2MxOTY1ZWRhZTA5N2ZlZGFhMTdkYjgzZmJkNTEyZDk5YmM4YjUyYjRhZDZiOTczOGYwODQ5OWZlZjVmZDE2NDE1Nzg4MGUwNDQ5MzFmNWFlZTNmNzhiNjFhYTM1YmNkMjg4ZWM1NzhkNGViMzUzZDcxNGE1YTVjZTVmYzEzZjRkMzI", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['299'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [a3d8c89c-4ad6-11e7-b856-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/0f0acb3587a14de6976c739e5e2cc989/encrypt?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/0f0acb3587a14de6976c739e5e2cc989","value":"OI6D9qg0CAFJIJKvooMkMckoamOsGyLrKkpciW7tjnLbLqpfsclz_ZfH0n059HyfOzstXdLx71eW2d-3WA5JmSime69QfedYDOiGgP8BBSioq7Nbeg7q2-GAzjmzW70iWExl2TpXrDcedBLP-PuvL-7e-Q_QjQmrbIqAodAPFSq4xUqkrhTMGb3vbahb-YvVzSS9adjEOk0G5pwcy0YStT0hUO0HILKQ7lzuVOINFNWyRX6071wVqq6K9Ai4CrBICJfm7N8hXPWX5ptMwfNXB1m1WeofeToOSKrm_l4DPsW03lSg53Tp0J4igMe6Ul3oBmteZd3D-ikMI-Iqer7s1A"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['461'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:38:58 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [13862f88-95ed-41f4-8c1c-950b986b6f45] - status: {code: 200, message: OK} -- request: - body: '{"value": "OI6D9qg0CAFJIJKvooMkMckoamOsGyLrKkpciW7tjnLbLqpfsclz_ZfH0n059HyfOzstXdLx71eW2d-3WA5JmSime69QfedYDOiGgP8BBSioq7Nbeg7q2-GAzjmzW70iWExl2TpXrDcedBLP-PuvL-7e-Q_QjQmrbIqAodAPFSq4xUqkrhTMGb3vbahb-YvVzSS9adjEOk0G5pwcy0YStT0hUO0HILKQ7lzuVOINFNWyRX6071wVqq6K9Ai4CrBICJfm7N8hXPWX5ptMwfNXB1m1WeofeToOSKrm_l4DPsW03lSg53Tp0J4igMe6Ul3oBmteZd3D-ikMI-Iqer7s1A", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['374'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [a4792422-4ad6-11e7-a4d9-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/0f0acb3587a14de6976c739e5e2cc989/decrypt?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/0f0acb3587a14de6976c739e5e2cc989","value":"NTViMTkzMjZkNTNmZTI3YTA2MGZkMjY5ZGE3NzdmOTMzYmM0ZDJhZjJkYWJhZWVmODQ1ZTg4ODUyZWE2OGNmZjlhOTVhY2MxOTY1ZWRhZTA5N2ZlZGFhMTdkYjgzZmJkNTEyZDk5YmM4YjUyYjRhZDZiOTczOGYwODQ5OWZlZjVmZDE2NDE1Nzg4MGUwNDQ5MzFmNWFlZTNmNzhiNjFhYTM1YmNkMjg4ZWM1NzhkNGViMzUzZDcxNGE1YTVjZTVmYzEzZjRkMzI"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['386'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:00 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [3da94b60-1bcd-4d3e-bab4-83ad673f09b7] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_import.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_key_import.yaml deleted file mode 100644 index bd03dbecd835..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_import.yaml +++ /dev/null @@ -1,113 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [a7badb66-4ad6-11e7-a200-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:05 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [e747af22-2738-49e7-a287-b41659553881] - x-ms-ratelimit-remaining-subscription-writes: ['1185'] - x-ms-request-id: [e747af22-2738-49e7-a287-b41659553881] - x-ms-routing-request-id: ['WESTUS2:20170606T163905Z:e747af22-2738-49e7-a287-b41659553881'] - status: {code: 200, message: OK} -- request: - body: '{"key": {"q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3", - "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", - "e": "AQAB", "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", - "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", - "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", - "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", - "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH", - "key_ops": ["encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey"], - "kty": "RSA"}, "Hsm": false}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['1738'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [a7f14e00-4ad6-11e7-ba76-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/keys/keyimp4ae0e7d?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keyimp4ae0e7d/55dea28756a04361a9d0cc529cb0851c","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU","e":"AQAB"},"attributes":{"enabled":true,"created":1496767146,"updated":1496767146,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['656'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:05 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [3d9c6c08-7331-4f26-b45f-12e33cad21b9] - status: {code: 200, message: OK} -- request: - body: '{"key": {"q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3", - "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", - "e": "AQAB", "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", - "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", - "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", - "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", - "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH", - "key_ops": ["encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey"], - "kty": "RSA"}, "Hsm": true}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['1737'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [a87e7b1a-4ad6-11e7-b282-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/keys/keyimp4ae0e7d?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keyimp4ae0e7d/f8c2d5201ec541dfbe60631a48828d63","kty":"RSA-HSM","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU","e":"AQAB"},"attributes":{"enabled":true,"created":1496767147,"updated":1496767147,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['660'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:07 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5a6f8c27-d8ec-4460-b4b0-66fbff2e81eb] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_list.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_key_list.yaml deleted file mode 100644 index 3d9252f68787..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_list.yaml +++ /dev/null @@ -1,314 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ac060cee-4ad6-11e7-bb7d-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:12 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [c7eb1752-5a46-49cb-96b4-ac87bba1110d] - x-ms-ratelimit-remaining-subscription-writes: ['1194'] - x-ms-request-id: [c7eb1752-5a46-49cb-96b4-ac87bba1110d] - x-ms-routing-request-id: ['WESTUS:20170606T163913Z:c7eb1752-5a46-49cb-96b4-ac87bba1110d'] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ac34824a-4ad6-11e7-b4ea-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/key0-e8240d9e/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key0-e8240d9e/5240803cac464b5c852df7180201c600","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"0QiPDeAqBH8QFdbGnyuFIF0Gyxlj1YvIebYLaBX5e_WWFmLffTS7CSKNb2WlnbuWiEGxic78BKR6bVjH8rk3zP0nDrsOzPU8O6qpWIyoF61cWxbr5Dfgoeon1W7k6gIbKKqbERuN_ecrjjfIC8F3kvGhQwz0cIadSuxrbFZok6pCs7GXKkCEzrlWbQWvF6l_xgDlY8xqNMbMMzs84VizWdIw5YjS36RKSN6OEiZwzbrQ7gmV1fEDLsoIVERac4XeWBHqtvY8-a5vnLHBbPtOdpg4eewNVYBkf2NBW34v-t2KGf_dMUpKGi_EtMA8cEkij6lMQoFbu3ekbEfpi03evQ","e":"AQAB"},"attributes":{"enabled":true,"created":1496767154,"updated":1496767154,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['655'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:14 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [4a77ed28-5423-4e11-beb5-f71fe2011d22] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [acce6048-4ad6-11e7-b2db-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/key1-e8240d9e/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key1-e8240d9e/9c8476c08e9f41098a843d58b494eb29","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"uP1ZHfEHPlgdn16odgee5QVQKLIq5tJol9ip5PXQGvLiNlWdhhT_qUxVDmWAfdmRufzOqsKwGFCwXhpI_T45oBTfy2JpkLHF2j85I4CQQiC4g0JHIqGqD8gAcSq-v3H70GYSl3Wa1UjTfowGmx47Aq5bhgEurHKG-OkL7axQiuqc-IQxBoO7h4eGw8ENvz6nD0Q1l8du6SPD2--NiDF_I8pn4YyqaFkl6pJ88-Sb6K50xmDiB6Y7zejdREe8bBuhDfkpafB00MXqTfKF4-fdhhLYqHFkToxKAKoGzc4oh1r-swCsEYMqSmrAwpAwDy8Jrk3BPMCGEjOg81XfV6jbWw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767154,"updated":1496767154,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['655'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:13 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [cae16a33-9c39-488b-87e1-483ad4905569] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ad7bf234-4ad6-11e7-86b1-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/keys?maxresults=2&api-version=2016-10-01 - response: - body: {string: '{"value":[{"kid":"https://pytest-shared-vault.vault.azure.net/keys/cert062c210d8","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767023,"updated":1496767023,"recoverylevel":"Purgeable"},"managed":true},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/cert162c210d8","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767025,"updated":1496767025,"recoverylevel":"Purgeable"},"managed":true}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4MCFNREF3TURFMklXdGxlUzlEUlZKVU16WkVOVEUxTmtRaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['731'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:14 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [b8d680c6-2f3f-4a2d-bcad-05593f9708bb] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ae0d26b0-4ad6-11e7-91c8-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4MCFNREF3TURFMklXdGxlUzlEUlZKVU16WkVOVEUxTmtRaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2 - response: - body: {string: '{"value":[{"kid":"https://pytest-shared-vault.vault.azure.net/keys/certimp85b111b7","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767016,"updated":1496767016,"recoverylevel":"Purgeable"},"managed":true},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/certverd5e14b0","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767045,"updated":1496767045,"recoverylevel":"Purgeable"},"managed":true}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lXdGxlUzlMUlZrd0xVVTRNalF3UkRsRklUQXdNREF5T0NFeU1ERTNMVEEyTFRBMlZERTJPakkxT2pFNUxqZ3pNRFV6TWpCYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['739'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:16 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [8c4a4188-3c20-4a91-a268-e0a5f933d6b8] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [aed1fbe4-4ad6-11e7-bb23-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lXdGxlUzlMUlZrd0xVVTRNalF3UkRsRklUQXdNREF5T0NFeU1ERTNMVEEyTFRBMlZERTJPakkxT2pFNUxqZ3pNRFV6TWpCYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2 - response: - body: {string: '{"value":[{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key0-e8240d9e","attributes":{"enabled":true,"created":1496767154,"updated":1496767154,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key1-e8240d9e","attributes":{"enabled":true,"created":1496767154,"updated":1496767154,"recoverylevel":"Purgeable"}}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4MCFNREF3TURFMUlXdGxlUzlMUlZrM05VSTJNVEUzTmlFd01EQXdNamdoTWpBeE55MHdOaTB3TlZReU16b3hPVG95T0M0Mk56UXhNVGMwV2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['633'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:17 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [a1c0f69b-9172-4849-a9a9-366c6ec4ef82] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [af4d1b10-4ad6-11e7-86d8-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4MCFNREF3TURFMUlXdGxlUzlMUlZrM05VSTJNVEUzTmlFd01EQXdNamdoTWpBeE55MHdOaTB3TlZReU16b3hPVG95T0M0Mk56UXhNVGMwV2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2 - response: - body: {string: '{"value":[{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176","attributes":{"enabled":true,"created":1496766333,"updated":1496766333,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d","attributes":{"enabled":true,"created":1496767121,"updated":1496767121,"recoverylevel":"Purgeable"}}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlMUlZsRFVsbFFWRVUxTWtNeE0wUXpJVEF3TURBeU9DRXlNREUzTFRBMkxUQTFWREl6T2pNeU9qQXlMamMxTmpZek9EaGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['642'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:19 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [529da3fe-98f6-496e-b6ec-40d975cb5679] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [afd8600a-4ad6-11e7-8fb2-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlMUlZsRFVsbFFWRVUxTWtNeE0wUXpJVEF3TURBeU9DRXlNREUzTFRBMkxUQTFWREl6T2pNeU9qQXlMamMxTmpZek9EaGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2 - response: - body: {string: '{"value":[{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3","attributes":{"enabled":true,"created":1496767137,"updated":1496767137,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keyimp4ae0e7d","attributes":{"enabled":true,"created":1496767147,"updated":1496767147,"recoverylevel":"Purgeable"}}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNUlXdGxlUzlMUlZsVFNVZE9PVGRHUkRFeU1Ua2hNREF3TURJNElUSXdNVGN0TURZdE1EVlVNak02TXpJNk1qY3VOREkyTURZeU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['641'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:19 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [44731665-0967-48bd-87dc-2e5702889200] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [b055f09c-4ad6-11e7-986d-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNUlXdGxlUzlMUlZsVFNVZE9PVGRHUkRFeU1Ua2hNREF3TURJNElUSXdNVGN0TURZdE1EVlVNak02TXpJNk1qY3VOREkyTURZeU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2 - response: - body: {string: '{"value":[{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219","attributes":{"enabled":true,"created":1496766400,"updated":1496766400,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a","attributes":{"enabled":true,"created":1496765403,"updated":1496765403,"recoverylevel":"Purgeable"}}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlRVDB4SlExbERSVkpVU1VaSlEwRlVSU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['647'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:19 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [fb2556bd-18fc-42b2-b080-6fc3c7e02302] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [b103eb62-4ad6-11e7-b6d7-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlRVDB4SlExbERSVkpVU1VaSlEwRlVSU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2 - response: - body: {string: '{"value":[{"kid":"https://pytest-shared-vault.vault.azure.net/keys/policyCertificate","attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767062,"updated":1496767062,"recoverylevel":"Purgeable"},"managed":true}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['253'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:21 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [aba252a2-c742-4615-870e-d59522101065] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_list_versions.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_key_list_versions.yaml deleted file mode 100644 index e0d5c75bf73c..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_list_versions.yaml +++ /dev/null @@ -1,128 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [b45ef2ba-4ad6-11e7-8b33-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:26 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [99228de4-7d74-4cff-9574-db6e61ef5683] - x-ms-ratelimit-remaining-subscription-writes: ['1194'] - x-ms-request-id: [99228de4-7d74-4cff-9574-db6e61ef5683] - x-ms-routing-request-id: ['WESTUS:20170606T163927Z:99228de4-7d74-4cff-9574-db6e61ef5683'] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [b4ad6b06-4ad6-11e7-ae7f-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/key75b61176/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/3570ac5e8fdf449580abdc81e3b56934","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"s_mQSLY4A7ja-WN6zuCaOoRHe1U5030vcBDGnb9eI2bujC1SYwje79nJ0y20yAR83ZEsWcRaGcuS0NYu3TKvIMhaYHhk5L7r9jO7YQeYpv63WAbn1_vzOv_j-t_kJKVBuZk-vuZzZtBFqcxHSzaVup66c6cTN_nboEtBJeW8lQYV8bUpchxVZnvwLoZVFLlVOSz-N89o55l37C5Y269iV9B2Mh_Im_981G0-FWiNLrmROO_mI4DR6BtX0R2CEKALI5SkXJ0qqyJtje-GmQQKKlEzAfmYqLOyFzpzN1UiAfa0_ZL770qrES4m6SwbZKLrDt0ZJ6MizM6TeXkRirJo_w","e":"AQAB"},"attributes":{"enabled":true,"created":1496767167,"updated":1496767167,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['653'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:27 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [2bc4d2d4-40bc-43d6-b328-437db238fb50] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [b57d3166-4ad6-11e7-a877-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/key75b61176/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/9b909e13cd084c0f8ee73114fc353d71","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"sIfdVuAP1hAiw__McVw8HM5ViZrP8pDF0fKMCOJwsPN6_bm8n61RtXrclOetM-5oKdEof9eLwaQi4qeoAkaSLnUttI931i28iwlCAkaTrhLWxDPAsENhTe1xlXM7QHRMMJCd7_JKlm4UxpS-mmJpBg48gwy1Cdkrd200OEZjgvugaF2efGS2kIURbNLhWWREyNghxYgPHYCY9YDLhDAjZ_QRlKjSGQs66jEg0hssiZWagI5SKVBRfyDs5LTgXXphllp9AoZbvhznwZp1K3ZBc8O8zzqkWOHKx6wHe9kW_jZsnDf1yylf_0lH048hybMinE1MfTKVe7mXZ43QoK43hQ","e":"AQAB"},"attributes":{"enabled":true,"created":1496767169,"updated":1496767169,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['653'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:29 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [df567c2e-4147-401b-9815-ba4cf77c6c78] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [b625f608-4ad6-11e7-8163-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/keys/key75b61176/versions?api-version=2016-10-01 - response: - body: {string: '{"value":[{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/1e337e593a3b4db29da8d374137f5237","attributes":{"enabled":true,"created":1496705539,"updated":1496705539,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/2e554d6137d94b60be2251bb672b7867","attributes":{"enabled":true,"created":1496765348,"updated":1496765348,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/3570ac5e8fdf449580abdc81e3b56934","attributes":{"enabled":true,"created":1496767167,"updated":1496767167,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/53a59559672d4510a7f3245bdee89709","attributes":{"enabled":true,"created":1496704767,"updated":1496704767,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/82d4a31548174a5c91a82d35ff4cb143","attributes":{"enabled":true,"created":1496766333,"updated":1496766333,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/926f432c84b44e59b122b0dd6299e849","attributes":{"enabled":true,"created":1496704767,"updated":1496704767,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/9b909e13cd084c0f8ee73114fc353d71","attributes":{"enabled":true,"created":1496767169,"updated":1496767169,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/a01e5bfca7b240c79e88ce66d9738432","attributes":{"enabled":true,"created":1496765346,"updated":1496765346,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/c4a13dd0b1f14ff582f49e36f3a6e2a1","attributes":{"enabled":true,"created":1496705540,"updated":1496705540,"recoverylevel":"Purgeable"}},{"kid":"https://pytest-shared-vault.vault.azure.net/keys/key75b61176/d2a17a3b7efa400d88b0efbe1fcee0f5","attributes":{"enabled":true,"created":1496766333,"updated":1496766333,"recoverylevel":"Purgeable"}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['2067'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:29 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [07b6dabf-fcf1-4a41-a125-9a81dfe588af] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_recover_and_purge.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_key_recover_and_purge.yaml deleted file mode 100644 index 833cda495dd5..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_recover_and_purge.yaml +++ /dev/null @@ -1,1116 +0,0 @@ -interactions: -- request: - body: '{"location": "westus", "properties": {"tenantId": "00000000-0000-0000-0000-000000000000", - "enabledForDeployment": true, "enabledForDiskEncryption": true, "enabledForTemplateDeployment": - true, "accessPolicies": [{"tenantId": "00000000-0000-0000-0000-000000000000", - "objectId": "00000000-0000-0000-0000-000000000000", "permissions": {"certificates": - ["get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers", - "listissuers", "setissuers", "deleteissuers", "manageissuers", "recover", "purge"], - "keys": ["encrypt", "decrypt", "wrapKey", "unwrapKey", "sign", "verify", "get", - "list", "create", "update", "import", "delete", "backup", "restore", "recover", - "purge"], "secrets": ["get", "list", "set", "delete", "backup", "restore", "recover", - "purge"], "storage": ["get", "list", "delete", "set", "update", "regeneratekey", - "setsas", "listsas", "getsas", "deletesas"]}}], "sku": {"name": "premium", "family": - "A"}, "enableSoftDelete": true}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['964'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [b9c3e0ba-4ad6-11e7-a231-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_key_recover_and_purgebddb12ec/providers/Microsoft.KeyVault/vaults/vault-bddb12ec?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_key_recover_and_purgebddb12ec/providers/Microsoft.KeyVault/vaults/vault-bddb12ec","name":"vault-bddb12ec","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"secrets":["get","list","set","delete","backup","restore","recover","purge"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"enableSoftDelete":true,"vaultUri":"https://vault-bddb12ec.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:36 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1190'] - x-ms-correlation-request-id: [2c162f6a-3d54-4aac-a9ea-93d1310ddc6c] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1191'] - x-ms-request-id: [2c162f6a-3d54-4aac-a9ea-93d1310ddc6c] - x-ms-routing-request-id: ['WESTUS:20170606T163937Z:2c162f6a-3d54-4aac-a9ea-93d1310ddc6c'] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c10b3408-4ad6-11e7-8683-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec/df43d3ab794d4b3f98ba2895627a525c","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"kr6FUrCBJBnnvL7tE5NCG1l_zXFQqX8T_NzjWWE3mJ7yCXpMHYKDjKceIwUe_HguFuEau_7Y4ijvZ9tPfSUisgUoiwWLu8kdVuyAGbq9awp-AYEdsUzARkBMeltXdey9B6eRwQFnC6zerY1I4YxTjtJePMtyRUKhlaALQjldXlzvJOFHdgqXpttqtfu75dmL9cYuEnAP6ZKslfQS8KhVpwL0oiO4MBoaXINXEzyXyAe9yolRaZ6tMWvy7E3ekckJNKGX-zIxgwAByXNJO23rTnzzEmf16aSUF9GvZ3GYJYooLyFwiRCycujvVskSD7vvlrlINyUD0mUuQj9bEW_HtQ","e":"AQAB"},"attributes":{"enabled":true,"created":1496767189,"updated":1496767189,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:48 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [47eb537b-3c8c-462b-aead-5ed8dc170c5c] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c24163b6-4ad6-11e7-ac5e-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec/5a61b03d065d420eb5d90122f1b13a50","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"85E8OfuP00ECir7AWqn_vB25of4Yvmwnwl7jsxSU-6euyzpXe3Lj1pR86uWYMKxgQ4lFm5aCDCJr21w3vC7dXX0OGhDaEY6FUmtceN1Cyr02eTwjJgxN34LDuCgnev12dd_Q_UtPGu6FS18nc5WPvZb9a8Q_fG0AFxsU4SUIxM-VwWvMhqVteP9lfDBpJ12_IMgBuci3Fp_JSSxeo_FS2tBWL-dwbfAfnedMMu4lAMFhuvp0nYiuff5t_O9ZY9GBiAnC3yISp2IsUW9eU_PBntYAx0kTKX-IKCfWH4fwQzs75pqtDofmo-Bv6AXsTug5tJV53_uimrFUPBSZzyWHMw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767191,"updated":1496767191,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:51 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [c5ffdfdf-7c28-4f20-b4f0-83d02cbebe8e] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c2db0fe6-4ad6-11e7-b08e-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec/aa14f2e92b96499684d7a2acea83c106","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"q-BF8D8ov9v4rUAzKTfONb7FNN5LUQaLSbXP5beEZDNu-DfHDg8if7uMuffE8uWck0GiIjKcat7bw1rpYQ68bdaqimooS5dMPriMW3YqRpe8aHd139Mp9sM9td6s0ZT-7HgA6pRJZghl7em6L8bX4PsAoD0m0r9oZ-HcGLx1ZI-gimkL5mEdLdXzpuUag7odkIx_V9Igl2nrB5ouAMuHKxO8qSw2S4OWOFbm_t9KaIbNJh07gbtgiQYOoZVd0Z-QHih9YD4mmH0KoPWb5iTCaGQ1b2kl0tBYq6eIGG4eu1t5w9wdJO9sWQy8S6BQAdPlVpimskscRPirHGvAvHRlLQ","e":"AQAB"},"attributes":{"enabled":true,"created":1496767191,"updated":1496767191,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:50 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [bb8728dd-f5eb-44b2-b5a0-bfc364513fc1] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c37c9d3a-4ad6-11e7-9872-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec/fdaa26731f294491b9b688dfa000428f","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"5yY29XTr1gPvUOXGOirMxUycELenqrceK6pDFgyCldM2U5RnjZKh5Yljklbn2QDLGHVQGkaX-1oaBojum8f7V4wzdVaSY4tISrCpBmmhNMdRlCIfOQkU0o9D1ZUKrVbyldQQ_-u1DqpGayB-uS1Qsqk9PYXb1YNAgs2PY4j-QeNwtSO2a1LYk270dmxQyvCDDEgy8xHRVGnwI8pjp_Xd6NL4AlONX7TG9LUSZsB-umDygUL1cjAu-ktcBIe2JtfPWwnm8OhwWEsuzTPAu9fy6HxVZDBhm7BsbLunPs4-WA5ByxiNR0F6AelkUh0qKKKsl9s2LwNnRHHRYOzKnx9kLQ","e":"AQAB"},"attributes":{"enabled":true,"created":1496767193,"updated":1496767193,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:53 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9a7b16e2-a6ba-4011-8807-e4a3b9f475a3] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c42aacfa-4ad6-11e7-ab85-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec1bddb12ec","deletedDate":1496767193,"scheduledPurgeDate":1504543193,"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec/5a61b03d065d420eb5d90122f1b13a50","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"85E8OfuP00ECir7AWqn_vB25of4Yvmwnwl7jsxSU-6euyzpXe3Lj1pR86uWYMKxgQ4lFm5aCDCJr21w3vC7dXX0OGhDaEY6FUmtceN1Cyr02eTwjJgxN34LDuCgnev12dd_Q_UtPGu6FS18nc5WPvZb9a8Q_fG0AFxsU4SUIxM-VwWvMhqVteP9lfDBpJ12_IMgBuci3Fp_JSSxeo_FS2tBWL-dwbfAfnedMMu4lAMFhuvp0nYiuff5t_O9ZY9GBiAnC3yISp2IsUW9eU_PBntYAx0kTKX-IKCfWH4fwQzs75pqtDofmo-Bv6AXsTug5tJV53_uimrFUPBSZzyWHMw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767191,"updated":1496767191,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['803'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:53 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [76759e03-0f47-410e-b56a-fb3d7094ef38] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c4c4f190-4ad6-11e7-8292-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec0bddb12ec","deletedDate":1496767195,"scheduledPurgeDate":1504543195,"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec/df43d3ab794d4b3f98ba2895627a525c","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"kr6FUrCBJBnnvL7tE5NCG1l_zXFQqX8T_NzjWWE3mJ7yCXpMHYKDjKceIwUe_HguFuEau_7Y4ijvZ9tPfSUisgUoiwWLu8kdVuyAGbq9awp-AYEdsUzARkBMeltXdey9B6eRwQFnC6zerY1I4YxTjtJePMtyRUKhlaALQjldXlzvJOFHdgqXpttqtfu75dmL9cYuEnAP6ZKslfQS8KhVpwL0oiO4MBoaXINXEzyXyAe9yolRaZ6tMWvy7E3ekckJNKGX-zIxgwAByXNJO23rTnzzEmf16aSUF9GvZ3GYJYooLyFwiRCycujvVskSD7vvlrlINyUD0mUuQj9bEW_HtQ","e":"AQAB"},"attributes":{"enabled":true,"created":1496767189,"updated":1496767189,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['803'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:55 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [ac39e563-b447-4ffe-b900-fbb9e512a6e0] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c5679470-4ad6-11e7-9950-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg1bddb12ec","deletedDate":1496767195,"scheduledPurgeDate":1504543195,"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec/fdaa26731f294491b9b688dfa000428f","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"5yY29XTr1gPvUOXGOirMxUycELenqrceK6pDFgyCldM2U5RnjZKh5Yljklbn2QDLGHVQGkaX-1oaBojum8f7V4wzdVaSY4tISrCpBmmhNMdRlCIfOQkU0o9D1ZUKrVbyldQQ_-u1DqpGayB-uS1Qsqk9PYXb1YNAgs2PY4j-QeNwtSO2a1LYk270dmxQyvCDDEgy8xHRVGnwI8pjp_Xd6NL4AlONX7TG9LUSZsB-umDygUL1cjAu-ktcBIe2JtfPWwnm8OhwWEsuzTPAu9fy6HxVZDBhm7BsbLunPs4-WA5ByxiNR0F6AelkUh0qKKKsl9s2LwNnRHHRYOzKnx9kLQ","e":"AQAB"},"attributes":{"enabled":true,"created":1496767193,"updated":1496767193,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['803'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:55 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5356c335-4439-471f-bbe4-3e4126515282] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c6016410-4ad6-11e7-a2eb-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg0bddb12ec","deletedDate":1496767196,"scheduledPurgeDate":1504543196,"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec/aa14f2e92b96499684d7a2acea83c106","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"q-BF8D8ov9v4rUAzKTfONb7FNN5LUQaLSbXP5beEZDNu-DfHDg8if7uMuffE8uWck0GiIjKcat7bw1rpYQ68bdaqimooS5dMPriMW3YqRpe8aHd139Mp9sM9td6s0ZT-7HgA6pRJZghl7em6L8bX4PsAoD0m0r9oZ-HcGLx1ZI-gimkL5mEdLdXzpuUag7odkIx_V9Igl2nrB5ouAMuHKxO8qSw2S4OWOFbm_t9KaIbNJh07gbtgiQYOoZVd0Z-QHih9YD4mmH0KoPWb5iTCaGQ1b2kl0tBYq6eIGG4eu1t5w9wdJO9sWQy8S6BQAdPlVpimskscRPirHGvAvHRlLQ","e":"AQAB"},"attributes":{"enabled":true,"created":1496767191,"updated":1496767191,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['803'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:39:56 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [0cfb87c8-fa8c-40f3-933c-2373b66afb8d] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d27ff248-4ad6-11e7-bb98-5065f34efe31] - method: GET - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys?api-version=2016-10-01 - response: - body: {string: '{"value":[{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg0bddb12ec","deletedDate":1496767196,"scheduledPurgeDate":1504543196,"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec","attributes":{"enabled":true,"created":1496767191,"updated":1496767191,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg1bddb12ec","deletedDate":1496767195,"scheduledPurgeDate":1504543195,"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec","attributes":{"enabled":true,"created":1496767193,"updated":1496767193,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec0bddb12ec","deletedDate":1496767195,"scheduledPurgeDate":1504543195,"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec","attributes":{"enabled":true,"created":1496767189,"updated":1496767189,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec1bddb12ec","deletedDate":1496767193,"scheduledPurgeDate":1504543193,"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec","attributes":{"enabled":true,"created":1496767191,"updated":1496767191,"recoverylevel":"Recoverable+Purgeable"}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1311'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:18 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [a7c52da0-aebf-4214-97c0-06ee1a7ced84] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d31ed91e-4ad6-11e7-8211-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec1bddb12ec/recover?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec/5a61b03d065d420eb5d90122f1b13a50","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"85E8OfuP00ECir7AWqn_vB25of4Yvmwnwl7jsxSU-6euyzpXe3Lj1pR86uWYMKxgQ4lFm5aCDCJr21w3vC7dXX0OGhDaEY6FUmtceN1Cyr02eTwjJgxN34LDuCgnev12dd_Q_UtPGu6FS18nc5WPvZb9a8Q_fG0AFxsU4SUIxM-VwWvMhqVteP9lfDBpJ12_IMgBuci3Fp_JSSxeo_FS2tBWL-dwbfAfnedMMu4lAMFhuvp0nYiuff5t_O9ZY9GBiAnC3yISp2IsUW9eU_PBntYAx0kTKX-IKCfWH4fwQzs75pqtDofmo-Bv6AXsTug5tJV53_uimrFUPBSZzyWHMw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767191,"updated":1496767191,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:18 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [c4e2ed6d-5cec-44d5-9346-a680ee12866c] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d3c1d7ca-4ad6-11e7-b0f4-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec0bddb12ec/recover?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec/df43d3ab794d4b3f98ba2895627a525c","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"kr6FUrCBJBnnvL7tE5NCG1l_zXFQqX8T_NzjWWE3mJ7yCXpMHYKDjKceIwUe_HguFuEau_7Y4ijvZ9tPfSUisgUoiwWLu8kdVuyAGbq9awp-AYEdsUzARkBMeltXdey9B6eRwQFnC6zerY1I4YxTjtJePMtyRUKhlaALQjldXlzvJOFHdgqXpttqtfu75dmL9cYuEnAP6ZKslfQS8KhVpwL0oiO4MBoaXINXEzyXyAe9yolRaZ6tMWvy7E3ekckJNKGX-zIxgwAByXNJO23rTnzzEmf16aSUF9GvZ3GYJYooLyFwiRCycujvVskSD7vvlrlINyUD0mUuQj9bEW_HtQ","e":"AQAB"},"attributes":{"enabled":true,"created":1496767189,"updated":1496767189,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:20 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [aece63a9-1766-42f0-a572-1e008fdc22b9] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d4832c4c-4ad6-11e7-90b1-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg1bddb12ec?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 16:40:20 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [42a51747-69b6-4ae6-85dc-f85fca6f6a76] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d52d2c98-4ad6-11e7-9914-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg0bddb12ec?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 16:40:21 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [1f6d00b2-fc56-47b2-9594-b517c80dc9ef] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d5bdaade-4ad6-11e7-aa63-5065f34efe31] - method: GET - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys?api-version=2016-10-01 - response: - body: {string: '{"value":[],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:22 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [3f007d14-7697-4aed-b9f1-dfd2c6e9379c] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d63ead2e-4ad6-11e7-a8e5-5065f34efe31] - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_key_recover_and_purgebddb12ec/providers/Microsoft.KeyVault/vaults/vault-bddb12ec?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 16:40:23 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [a44a11b7-8dc0-4a2d-b1e1-c0392761e7bb] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1193'] - x-ms-request-id: [a44a11b7-8dc0-4a2d-b1e1-c0392761e7bb] - x-ms-routing-request-id: ['WESTUS:20170606T164024Z:a44a11b7-8dc0-4a2d-b1e1-c0392761e7bb'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [dcbd1ada-4ad6-11e7-8ccb-5065f34efe31] - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-bddb12ec/purge?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 16:40:34 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0MDM1MjMzNzkyOHxEREQyMkRBQUFFQTA0NDdFQUIwMzg2NDNDQ0QzRDIyNg?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [8aa30ece-5336-4b07-9907-02208f0e88ca] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1194'] - x-ms-request-id: [8aa30ece-5336-4b07-9907-02208f0e88ca] - x-ms-routing-request-id: ['WESTUS:20170606T164034Z:8aa30ece-5336-4b07-9907-02208f0e88ca'] - status: {code: 202, message: Accepted} -- request: - body: '{"location": "westus", "properties": {"enableSoftDelete": true, "sku": - {"family": "A", "name": "premium"}, "enabledForDiskEncryption": true, "accessPolicies": - [{"permissions": {"secrets": ["get", "list", "set", "delete", "backup", "restore", - "recover", "purge"], "keys": ["encrypt", "decrypt", "wrapKey", "unwrapKey", - "sign", "verify", "get", "list", "create", "update", "import", "delete", "backup", - "restore", "recover", "purge"], "storage": ["get", "list", "delete", "set", - "update", "regeneratekey", "setsas", "listsas", "getsas", "deletesas"], "certificates": - ["get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers", - "listissuers", "setissuers", "deleteissuers", "manageissuers", "recover", "purge"]}, - "tenantId": "00000000-0000-0000-0000-000000000000", "objectId": "00000000-0000-0000-0000-000000000000"}], - "enabledForTemplateDeployment": true, "tenantId": "00000000-0000-0000-0000-000000000000", - "enabledForDeployment": true}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['964'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [2e562c64-4ad8-11e7-a0d1-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_key_recover_and_purgebddb12ec/providers/Microsoft.KeyVault/vaults/vault-bddb12ec?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_key_recover_and_purgebddb12ec/providers/Microsoft.KeyVault/vaults/vault-bddb12ec","name":"vault-bddb12ec","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"secrets":["get","list","set","delete","backup","restore","recover","purge"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"enableSoftDelete":true,"vaultUri":"https://vault-bddb12ec.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:01 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1190'] - x-ms-correlation-request-id: [d5284577-05a5-4ee7-a1e5-4405e1397552] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1187'] - x-ms-request-id: [d5284577-05a5-4ee7-a1e5-4405e1397552] - x-ms-routing-request-id: ['WESTUS:20170606T165001Z:d5284577-05a5-4ee7-a1e5-4405e1397552'] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [34e5dfdc-4ad8-11e7-b05b-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec/4856d437d50c4f11b36de8977a918c41","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"3sMCE2qro_XuKpK4K004PN2TWDIwyrk2UX2qZvatzAAI5xnDzTTgZBkbKe5-Ho8gD0XaVcB8QSUOWX0FBYqHO3TvvtGufJ8OWKsyWvjwuLHZ_davbHzo8LVNFi7HHMqDFd2y95O0rzwQ5M2psTXCZGfdCVpibEiG_4VyiZK8ooM1f0V5EN-cLlwFK_R1VPGAIHEItulEKRralHRfX9HRAH_O-_KUFnUvL3aKRbkdbOvf2CJW_KjauOcHG1-6Uosfw3MwJKdNMRYjZLOb8UuIrpg68J15FaEsO2SAzpmGEQ0huno2oZLM7rhm5s8vRyy4KgxoQ6OO6RLjkAZHykXPbw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767813,"updated":1496767813,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:12 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5addfe48-ab78-4099-889b-176eefda9617] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [35d1882c-4ad8-11e7-a8ef-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec/ec89360adabd4b6880bba15e5b9a6b9b","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"vt03tTEp0Nm419gorBSfnwdXIXERNvcSFdNqwv48KzeK0JaMwxF9X1YoTzJemQTw23SjuOz_ZBpNYxwNgQ4GOOvGPFb5zG_SZZQ1QveQ7qd6lzCL8AS3ozz1KmPu8-mxuZ3hJLluzNJLglGaLNP1gZ8oh-aFmGSaPNdmkozLyD7A4drC5lRjDBQzcPTuFUMFwEp0VP_-zaTnGM8-Kp9deUfJZqyE7jZ54g11_zuMEEEQzt27SZFlvHcC19TspxZYElnvq6WAHYxsMw4VbHBMW6ilTITkzjp5cScQW96fYhBW5cnId5P0od93PI4PQwFtQcM2fB6Sfr33al1jjxjdHw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767814,"updated":1496767814,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:14 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [fd97ca89-b158-4708-8344-bb861edbe032] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [36829f5a-4ad8-11e7-b74d-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec/633241f01c434916bb21320dea63ed97","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"yT9cEZx_Kvm7-9qtvslc-zqvK_Af4Iy-1qBi_gL1IVlBLt7JNiFJDvL19F8rUqWdpApKtIIx0kE4Nw1FDNAOuUTb6u4QoHFR-WZKrwywLIglKXKI1K2uZdQOtkdNCLlqMHtiUCsIYNqxiblOn8C7_RRfLj5eTKpLC72wfYucRRMxlLrnixWNa2A9jTiLso4edZCHbcRUct6ylI_wSJU1EPgQyWs1vE9Z3MRqK2ki4Oe9zJl0cbOT6CAhqPLyTibN6YGnqvPtzevEXF3CADokBaoCSKuXOVoyuvQLbNbaAdl9Q8BQroc897lT_ITIERV0UlrQ-QnAyR5-SqjS8s5jhQ","e":"AQAB"},"attributes":{"enabled":true,"created":1496767815,"updated":1496767815,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:15 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [09cda7a3-0c7c-4b3d-9fe8-14c7053a0cbd] - status: {code: 200, message: OK} -- request: - body: '{"kty": "RSA"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [37053a26-4ad8-11e7-b4ff-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec/create?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec/e05aa34296ce4f53aa3ce2c62adc7a99","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"yKZP1bybUVvFQY4iOswB_xYvuK1xNESu9SGkEA_7jwKkIrFJNeDYp1_LjMQsrtYtbWBVGYrwJ7RQK6WHdBzSWvDeWW_jxD8ZYIwLtiA8avpgD5u1q098lemD_gR2TUdoqxwuIG-V9Qf24vY-BghhSyMu3d7bVcyyaKVZW6oI1PS_7iJgseYGJgC7rCLKOZlP-nKBRoVmJvPSuyzZZdhUBTjFHnLt7mjLJDo507bVE0oGE0FIfSSf4Qn2qmPVB0DvQ0-fsGJm88zTVkZ5rdf-5G6g6Cr0j7T2iQkqUS46zii7s-G2eKNzdpEVoosNLJEk4qFD8YJzlMjDBcONiGwTnw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767816,"updated":1496767816,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:16 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [2f16a36c-7554-4164-b36d-2e9a0d6a64e2] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [37a6e164-4ad8-11e7-9b67-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec1bddb12ec","deletedDate":1496767817,"scheduledPurgeDate":1504543817,"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec/ec89360adabd4b6880bba15e5b9a6b9b","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"vt03tTEp0Nm419gorBSfnwdXIXERNvcSFdNqwv48KzeK0JaMwxF9X1YoTzJemQTw23SjuOz_ZBpNYxwNgQ4GOOvGPFb5zG_SZZQ1QveQ7qd6lzCL8AS3ozz1KmPu8-mxuZ3hJLluzNJLglGaLNP1gZ8oh-aFmGSaPNdmkozLyD7A4drC5lRjDBQzcPTuFUMFwEp0VP_-zaTnGM8-Kp9deUfJZqyE7jZ54g11_zuMEEEQzt27SZFlvHcC19TspxZYElnvq6WAHYxsMw4VbHBMW6ilTITkzjp5cScQW96fYhBW5cnId5P0od93PI4PQwFtQcM2fB6Sfr33al1jjxjdHw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767814,"updated":1496767814,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['803'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:16 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [862fca00-61f3-49e5-9fad-a5de86267e6c] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [38350d9c-4ad8-11e7-9a4e-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg0bddb12ec","deletedDate":1496767818,"scheduledPurgeDate":1504543818,"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec/633241f01c434916bb21320dea63ed97","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"yT9cEZx_Kvm7-9qtvslc-zqvK_Af4Iy-1qBi_gL1IVlBLt7JNiFJDvL19F8rUqWdpApKtIIx0kE4Nw1FDNAOuUTb6u4QoHFR-WZKrwywLIglKXKI1K2uZdQOtkdNCLlqMHtiUCsIYNqxiblOn8C7_RRfLj5eTKpLC72wfYucRRMxlLrnixWNa2A9jTiLso4edZCHbcRUct6ylI_wSJU1EPgQyWs1vE9Z3MRqK2ki4Oe9zJl0cbOT6CAhqPLyTibN6YGnqvPtzevEXF3CADokBaoCSKuXOVoyuvQLbNbaAdl9Q8BQroc897lT_ITIERV0UlrQ-QnAyR5-SqjS8s5jhQ","e":"AQAB"},"attributes":{"enabled":true,"created":1496767815,"updated":1496767815,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['803'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:18 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5420d510-d966-41ce-9069-1e13b808e38a] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [38d34578-4ad8-11e7-a2d8-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg1bddb12ec","deletedDate":1496767818,"scheduledPurgeDate":1504543818,"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec/e05aa34296ce4f53aa3ce2c62adc7a99","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"yKZP1bybUVvFQY4iOswB_xYvuK1xNESu9SGkEA_7jwKkIrFJNeDYp1_LjMQsrtYtbWBVGYrwJ7RQK6WHdBzSWvDeWW_jxD8ZYIwLtiA8avpgD5u1q098lemD_gR2TUdoqxwuIG-V9Qf24vY-BghhSyMu3d7bVcyyaKVZW6oI1PS_7iJgseYGJgC7rCLKOZlP-nKBRoVmJvPSuyzZZdhUBTjFHnLt7mjLJDo507bVE0oGE0FIfSSf4Qn2qmPVB0DvQ0-fsGJm88zTVkZ5rdf-5G6g6Cr0j7T2iQkqUS46zii7s-G2eKNzdpEVoosNLJEk4qFD8YJzlMjDBcONiGwTnw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767816,"updated":1496767816,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['803'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:19 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [b39ed8dc-cc2f-4b3c-b02a-b491419844f8] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [39615d24-4ad8-11e7-be9b-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec0bddb12ec","deletedDate":1496767820,"scheduledPurgeDate":1504543820,"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec/4856d437d50c4f11b36de8977a918c41","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"3sMCE2qro_XuKpK4K004PN2TWDIwyrk2UX2qZvatzAAI5xnDzTTgZBkbKe5-Ho8gD0XaVcB8QSUOWX0FBYqHO3TvvtGufJ8OWKsyWvjwuLHZ_davbHzo8LVNFi7HHMqDFd2y95O0rzwQ5M2psTXCZGfdCVpibEiG_4VyiZK8ooM1f0V5EN-cLlwFK_R1VPGAIHEItulEKRralHRfX9HRAH_O-_KUFnUvL3aKRbkdbOvf2CJW_KjauOcHG1-6Uosfw3MwJKdNMRYjZLOb8UuIrpg68J15FaEsO2SAzpmGEQ0huno2oZLM7rhm5s8vRyy4KgxoQ6OO6RLjkAZHykXPbw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767813,"updated":1496767813,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['803'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:20 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [69418e81-e3bc-474c-a883-975ce7427e4c] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [45f4c17a-4ad8-11e7-8231-5065f34efe31] - method: GET - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys?api-version=2016-10-01 - response: - body: {string: '{"value":[{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg0bddb12ec","deletedDate":1496767818,"scheduledPurgeDate":1504543818,"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec","attributes":{"enabled":true,"created":1496767815,"updated":1496767815,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg1bddb12ec","deletedDate":1496767818,"scheduledPurgeDate":1504543818,"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec","attributes":{"enabled":true,"created":1496767816,"updated":1496767816,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec0bddb12ec","deletedDate":1496767820,"scheduledPurgeDate":1504543820,"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec","attributes":{"enabled":true,"created":1496767813,"updated":1496767813,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec1bddb12ec","deletedDate":1496767817,"scheduledPurgeDate":1504543817,"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec","attributes":{"enabled":true,"created":1496767814,"updated":1496767814,"recoverylevel":"Recoverable+Purgeable"}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1311'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:41 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9219b0e2-bb75-4cda-9c0e-f9340542f30a] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4671240c-4ad8-11e7-a644-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec1bddb12ec/recover?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec/ec89360adabd4b6880bba15e5b9a6b9b","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"vt03tTEp0Nm419gorBSfnwdXIXERNvcSFdNqwv48KzeK0JaMwxF9X1YoTzJemQTw23SjuOz_ZBpNYxwNgQ4GOOvGPFb5zG_SZZQ1QveQ7qd6lzCL8AS3ozz1KmPu8-mxuZ3hJLluzNJLglGaLNP1gZ8oh-aFmGSaPNdmkozLyD7A4drC5lRjDBQzcPTuFUMFwEp0VP_-zaTnGM8-Kp9deUfJZqyE7jZ54g11_zuMEEEQzt27SZFlvHcC19TspxZYElnvq6WAHYxsMw4VbHBMW6ilTITkzjp5cScQW96fYhBW5cnId5P0od93PI4PQwFtQcM2fB6Sfr33al1jjxjdHw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767814,"updated":1496767814,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:40 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [e31f7054-939b-4c33-b61a-e1ee746d3614] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4707e880-4ad8-11e7-abb1-5065f34efe31] - method: POST - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec0bddb12ec/recover?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec/4856d437d50c4f11b36de8977a918c41","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"3sMCE2qro_XuKpK4K004PN2TWDIwyrk2UX2qZvatzAAI5xnDzTTgZBkbKe5-Ho8gD0XaVcB8QSUOWX0FBYqHO3TvvtGufJ8OWKsyWvjwuLHZ_davbHzo8LVNFi7HHMqDFd2y95O0rzwQ5M2psTXCZGfdCVpibEiG_4VyiZK8ooM1f0V5EN-cLlwFK_R1VPGAIHEItulEKRralHRfX9HRAH_O-_KUFnUvL3aKRbkdbOvf2CJW_KjauOcHG1-6Uosfw3MwJKdNMRYjZLOb8UuIrpg68J15FaEsO2SAzpmGEQ0huno2oZLM7rhm5s8vRyy4KgxoQ6OO6RLjkAZHykXPbw","e":"AQAB"},"attributes":{"enabled":true,"created":1496767813,"updated":1496767813,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['664'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:41 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [aa5ea1b0-7d1b-477d-9a68-a0455f5a6648] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4796ab58-4ad8-11e7-be3e-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg0bddb12ec?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 16:50:43 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [48aa51c6-7a1d-42ed-b6af-dfcbea14afc5] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4824cb74-4ad8-11e7-8041-5065f34efe31] - method: DELETE - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg1bddb12ec?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 16:50:44 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [cc8c01b5-7307-4bb7-82d0-dd064cfc869f] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [48b398e2-4ad8-11e7-846e-5065f34efe31] - method: GET - uri: https://vault-bddb12ec.vault.azure.net/deletedkeys?api-version=2016-10-01 - response: - body: {string: '{"value":[],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:50:45 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [e268c491-7b70-4e0b-99bf-42317ada62fa] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4951e498-4ad8-11e7-a508-5065f34efe31] - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_key_recover_and_purgebddb12ec/providers/Microsoft.KeyVault/vaults/vault-bddb12ec?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 16:50:46 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [4ed0c901-e32a-40ad-9d5b-83a1d543fef1] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1195'] - x-ms-request-id: [4ed0c901-e32a-40ad-9d5b-83a1d543fef1] - x-ms-routing-request-id: ['WESTUS:20170606T165046Z:4ed0c901-e32a-40ad-9d5b-83a1d543fef1'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4fba3362-4ad8-11e7-b769-5065f34efe31] - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-bddb12ec/purge?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 16:50:56 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [3d2de450-ece9-4c9e-b155-492bbc4533c9] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1191'] - x-ms-request-id: [3d2de450-ece9-4c9e-b155-492bbc4533c9] - x-ms-routing-request-id: ['WESTUS:20170606T165057Z:3d2de450-ece9-4c9e-b155-492bbc4533c9'] - status: {code: 202, message: Accepted} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_sign_and_verify.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_key_sign_and_verify.yaml deleted file mode 100644 index 486332d0b262..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_sign_and_verify.yaml +++ /dev/null @@ -1,203 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [dfed4bb8-4ad6-11e7-8c03-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:39 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [6024338f-aa5f-4abc-8dac-b9260dcc7eee] - x-ms-ratelimit-remaining-subscription-writes: ['1196'] - x-ms-request-id: [6024338f-aa5f-4abc-8dac-b9260dcc7eee] - x-ms-routing-request-id: ['WESTUS:20170606T164040Z:6024338f-aa5f-4abc-8dac-b9260dcc7eee'] - status: {code: 200, message: OK} -- request: - body: '{"key": {"q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3", - "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", - "e": "AQAB", "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", - "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", - "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", - "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", - "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH", - "key_ops": ["encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey"], - "kty": "RSA"}, "Hsm": false}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['1738'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e030d44a-4ad6-11e7-b112-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219/071f815b35a14aaa81ef2555106a4d6c","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU","e":"AQAB"},"attributes":{"enabled":true,"created":1496767240,"updated":1496767240,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['658'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:40 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [69b5fed8-f22a-4dc6-9cd1-b6bd9f3dc9f5] - status: {code: 200, message: OK} -- request: - body: '{"value": "iUoMr9_rsd7nprk-lB1GH2cEqF0WQcv5eTfZfVBdA00", "alg": "RS256"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['72'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e0bd95a4-4ad6-11e7-88c7-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219/sign?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219/071f815b35a14aaa81ef2555106a4d6c","value":"aX9kVFVSMxsJuxvkoQCIsdz_a-JhMawg3NyuUTXJJBWZy_xiTKSS7cUufSjyTDlY-0Xp8yqehys1f-tiE5RmHY5-uxcHDB4OwWB8YhOzLTZfrhWzTj1L4o4cxhUIli8F6DQuQw7ICHR_GIwBJhOCr7L44h-504ECVDo5Af8b2lot9k7OE-IMA0R_0eCI7HAb8jpJplAPOqhWgpipozSc4YJURoQq-jDBgjIwgMZDaCxBDF0hm-2aX5-1sbDuRv_rltfVKESyb1jfFTa-EAm08VfBKlm3Et7PnyW4cQSVnMdZD6PusXmVTCeYJ86IAIh5qG5DMf18RmIofGgY19y7Xg"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['460'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:41 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [760b6f2e-a4a8-4bf0-81e9-3776450547b8] - status: {code: 200, message: OK} -- request: - body: '{"value": "aX9kVFVSMxsJuxvkoQCIsdz_a-JhMawg3NyuUTXJJBWZy_xiTKSS7cUufSjyTDlY-0Xp8yqehys1f-tiE5RmHY5-uxcHDB4OwWB8YhOzLTZfrhWzTj1L4o4cxhUIli8F6DQuQw7ICHR_GIwBJhOCr7L44h-504ECVDo5Af8b2lot9k7OE-IMA0R_0eCI7HAb8jpJplAPOqhWgpipozSc4YJURoQq-jDBgjIwgMZDaCxBDF0hm-2aX5-1sbDuRv_rltfVKESyb1jfFTa-EAm08VfBKlm3Et7PnyW4cQSVnMdZD6PusXmVTCeYJ86IAIh5qG5DMf18RmIofGgY19y7Xg", - "alg": "RS256", "digest": "iUoMr9_rsd7nprk-lB1GH2cEqF0WQcv5eTfZfVBdA00"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['428'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e1373e40-4ad6-11e7-9165-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219/verify?api-version=2016-10-01 - response: - body: {string: '{"value":true}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:42 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [36a006b7-4453-4dcd-bf22-2bd2304f1f8b] - status: {code: 200, message: OK} -- request: - body: '{"value": "iUoMr9_rsd7nprk-lB1GH2cEqF0WQcv5eTfZfVBdA00", "alg": "RS256"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['72'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e1b9296c-4ad6-11e7-900b-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219/sign?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219/071f815b35a14aaa81ef2555106a4d6c","value":"aX9kVFVSMxsJuxvkoQCIsdz_a-JhMawg3NyuUTXJJBWZy_xiTKSS7cUufSjyTDlY-0Xp8yqehys1f-tiE5RmHY5-uxcHDB4OwWB8YhOzLTZfrhWzTj1L4o4cxhUIli8F6DQuQw7ICHR_GIwBJhOCr7L44h-504ECVDo5Af8b2lot9k7OE-IMA0R_0eCI7HAb8jpJplAPOqhWgpipozSc4YJURoQq-jDBgjIwgMZDaCxBDF0hm-2aX5-1sbDuRv_rltfVKESyb1jfFTa-EAm08VfBKlm3Et7PnyW4cQSVnMdZD6PusXmVTCeYJ86IAIh5qG5DMf18RmIofGgY19y7Xg"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['460'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:43 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [522ed97f-354c-416d-b1c0-cdc27756f8c6] - status: {code: 200, message: OK} -- request: - body: '{"value": "aX9kVFVSMxsJuxvkoQCIsdz_a-JhMawg3NyuUTXJJBWZy_xiTKSS7cUufSjyTDlY-0Xp8yqehys1f-tiE5RmHY5-uxcHDB4OwWB8YhOzLTZfrhWzTj1L4o4cxhUIli8F6DQuQw7ICHR_GIwBJhOCr7L44h-504ECVDo5Af8b2lot9k7OE-IMA0R_0eCI7HAb8jpJplAPOqhWgpipozSc4YJURoQq-jDBgjIwgMZDaCxBDF0hm-2aX5-1sbDuRv_rltfVKESyb1jfFTa-EAm08VfBKlm3Et7PnyW4cQSVnMdZD6PusXmVTCeYJ86IAIh5qG5DMf18RmIofGgY19y7Xg", - "alg": "RS256", "digest": "iUoMr9_rsd7nprk-lB1GH2cEqF0WQcv5eTfZfVBdA00"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['428'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e238abe4-4ad6-11e7-a45d-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219/071f815b35a14aaa81ef2555106a4d6c/verify?api-version=2016-10-01 - response: - body: {string: '{"value":true}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['14'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:43 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [6fd91f5e-a524-4fd2-9518-db40758ed05d] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_wrap_and_unwrap.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_key_wrap_and_unwrap.yaml deleted file mode 100644 index 901dc08d6f17..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_key_wrap_and_unwrap.yaml +++ /dev/null @@ -1,556 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e54f81b4-4ad6-11e7-824f-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:48 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [11bf8a4e-89d4-4469-815e-d90739b5351b] - x-ms-ratelimit-remaining-subscription-writes: ['1189'] - x-ms-request-id: [11bf8a4e-89d4-4469-815e-d90739b5351b] - x-ms-routing-request-id: ['WESTUS:20170606T164049Z:11bf8a4e-89d4-4469-815e-d90739b5351b'] - status: {code: 200, message: OK} -- request: - body: '{"key": {"q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3", - "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", - "e": "AQAB", "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", - "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", - "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", - "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", - "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH", - "key_ops": ["encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey"], - "kty": "RSA"}, "Hsm": false}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['1738'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e578e7cc-4ad6-11e7-8da8-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/eb1325e5c5454a1b881ab151d6b083ac","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU","e":"AQAB"},"attributes":{"enabled":true,"created":1496767249,"updated":1496767249,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['658'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:49 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [20fa7181-a104-4c24-bbc2-3073111dbb13] - status: {code: 200, message: OK} -- request: - body: '{"value": "NDFmMDdkM2M3MGYxOWVmMGYyZGY5OTIxMDUxODUyYTVkOTY5MGQyNDNlOWZiYzVkZDQyOGYxODI3OWY5ZDVmODBkMzhiZmVjZjlhNTgwMWQzMTBkZjVkN2Y4NTI5YTFiZDIwYmNmYzNlMGFjZWY2MjhlOGFjNmFmNGZiYjkwMmNkYmVjNjU4Y2UxNDcwMTdkZDQyM2IwODRhYjQ4ODkwNGJiZTNjMDI1MWI1NjU3YmUwY2ZlZTYxMWZiMzc0OTc0Yjg5YzQyMjQ", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['299'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e61dfa5e-4ad6-11e7-8d70-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/wrapkey?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/eb1325e5c5454a1b881ab151d6b083ac","value":"br9yEMudqNTDk2OVzKQ8zAKPuOdDI5f1Qvryvv2g-rPwk8vhKWUl46jbkAkpHGdNmbyKr0jPhayfRJ-OBtcjEA3-EkjD4CTVXdhw6tSPhLgnSE2l5jjRwz47_-nBJa1OXo9KZxe5fNMiDMO-uV8_i_z2TC-MC1G8htDJceyb8KgQ8xpAWBXJpb3i1q_SMaDx0HzwpuInmzsKfUJFAphPUSp4JFS36Y0y9qASF7RAAk-h8f6WMc7f3tdMD4Whx7n3PYWJvwEwa0XJ5ZlLynGsr7XZIsVfO1wlebPNNzTI8qyS8OgJjLoUwhTiSKxouLPPznC8iuk5LbBUavaSBF9VhA"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['460'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:49 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [f7b376fd-3667-47a4-820e-932afc7cbdc2] - status: {code: 200, message: OK} -- request: - body: '{"value": "br9yEMudqNTDk2OVzKQ8zAKPuOdDI5f1Qvryvv2g-rPwk8vhKWUl46jbkAkpHGdNmbyKr0jPhayfRJ-OBtcjEA3-EkjD4CTVXdhw6tSPhLgnSE2l5jjRwz47_-nBJa1OXo9KZxe5fNMiDMO-uV8_i_z2TC-MC1G8htDJceyb8KgQ8xpAWBXJpb3i1q_SMaDx0HzwpuInmzsKfUJFAphPUSp4JFS36Y0y9qASF7RAAk-h8f6WMc7f3tdMD4Whx7n3PYWJvwEwa0XJ5ZlLynGsr7XZIsVfO1wlebPNNzTI8qyS8OgJjLoUwhTiSKxouLPPznC8iuk5LbBUavaSBF9VhA", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['374'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e6a00b3a-4ad6-11e7-a388-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/unwrapkey?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/eb1325e5c5454a1b881ab151d6b083ac","value":"NDFmMDdkM2M3MGYxOWVmMGYyZGY5OTIxMDUxODUyYTVkOTY5MGQyNDNlOWZiYzVkZDQyOGYxODI3OWY5ZDVmODBkMzhiZmVjZjlhNTgwMWQzMTBkZjVkN2Y4NTI5YTFiZDIwYmNmYzNlMGFjZWY2MjhlOGFjNmFmNGZiYjkwMmNkYmVjNjU4Y2UxNDcwMTdkZDQyM2IwODRhYjQ4ODkwNGJiZTNjMDI1MWI1NjU3YmUwY2ZlZTYxMWZiMzc0OTc0Yjg5YzQyMjQ"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['385'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:51 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [8fb231db-488c-4da0-b9b4-e5fd777fac06] - status: {code: 200, message: OK} -- request: - body: '{"value": "NDFmMDdkM2M3MGYxOWVmMGYyZGY5OTIxMDUxODUyYTVkOTY5MGQyNDNlOWZiYzVkZDQyOGYxODI3OWY5ZDVmODBkMzhiZmVjZjlhNTgwMWQzMTBkZjVkN2Y4NTI5YTFiZDIwYmNmYzNlMGFjZWY2MjhlOGFjNmFmNGZiYjkwMmNkYmVjNjU4Y2UxNDcwMTdkZDQyM2IwODRhYjQ4ODkwNGJiZTNjMDI1MWI1NjU3YmUwY2ZlZTYxMWZiMzc0OTc0Yjg5YzQyMjQ", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['299'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e704037e-4ad6-11e7-b1a7-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/eb1325e5c5454a1b881ab151d6b083ac/wrapkey?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/eb1325e5c5454a1b881ab151d6b083ac","value":"bEBlvusbXLETCO-zNLow3OiGTx_gcEAugNSel2R9fuDuaQLumWBNq3ZsPh37Pi0No3YN-2H8O7AmtnJgCHsgw_utAGGrvUdtbTosp7HDOXH40s8dpzHMHeOGkYijBGhec1xpQB9QT8PmrODsX_wyvjh9LpUj02c-rQKRzOLwnzmhYQYYuDV3PpUsK4LKDwqA1RJdtnR1pwRGjIahTYyIAJf6vLxQOQ3SWnIvn0htlTySTnEB1v0UK-9kpY1eAqvJFKQgmYNR2DoF5T2YcayKDnwx9z9Dvk-1RV-2xUgIJ92XzKhhSkI2OSgkBjVuuYQeUsZFx9bHhYC3_9uQJZ2P2Q"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['460'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:52 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [da54849d-522e-4e1c-9972-b97103c25582] - status: {code: 200, message: OK} -- request: - body: '{"value": "bEBlvusbXLETCO-zNLow3OiGTx_gcEAugNSel2R9fuDuaQLumWBNq3ZsPh37Pi0No3YN-2H8O7AmtnJgCHsgw_utAGGrvUdtbTosp7HDOXH40s8dpzHMHeOGkYijBGhec1xpQB9QT8PmrODsX_wyvjh9LpUj02c-rQKRzOLwnzmhYQYYuDV3PpUsK4LKDwqA1RJdtnR1pwRGjIahTYyIAJf6vLxQOQ3SWnIvn0htlTySTnEB1v0UK-9kpY1eAqvJFKQgmYNR2DoF5T2YcayKDnwx9z9Dvk-1RV-2xUgIJ92XzKhhSkI2OSgkBjVuuYQeUsZFx9bHhYC3_9uQJZ2P2Q", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['374'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e787eab4-4ad6-11e7-89d9-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/eb1325e5c5454a1b881ab151d6b083ac/unwrapkey?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/eb1325e5c5454a1b881ab151d6b083ac","value":"NDFmMDdkM2M3MGYxOWVmMGYyZGY5OTIxMDUxODUyYTVkOTY5MGQyNDNlOWZiYzVkZDQyOGYxODI3OWY5ZDVmODBkMzhiZmVjZjlhNTgwMWQzMTBkZjVkN2Y4NTI5YTFiZDIwYmNmYzNlMGFjZWY2MjhlOGFjNmFmNGZiYjkwMmNkYmVjNjU4Y2UxNDcwMTdkZDQyM2IwODRhYjQ4ODkwNGJiZTNjMDI1MWI1NjU3YmUwY2ZlZTYxMWZiMzc0OTc0Yjg5YzQyMjQ"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['385'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:40:52 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [571ae433-aff7-480f-867d-a9e909d6108a] - status: {code: 200, message: OK} -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [528321e2-4ad8-11e7-bb77-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:01 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [18f58352-0a2f-483a-bfbf-9ce321ac66f4] - x-ms-ratelimit-remaining-subscription-writes: ['1188'] - x-ms-request-id: [18f58352-0a2f-483a-bfbf-9ce321ac66f4] - x-ms-routing-request-id: ['WESTUS:20170606T165101Z:18f58352-0a2f-483a-bfbf-9ce321ac66f4'] - status: {code: 200, message: OK} -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c264c724-4add-11e7-917f-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:29:56 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [053bacba-c51d-4dad-92bc-e98fd6e628ba] - x-ms-ratelimit-remaining-subscription-writes: ['1194'] - x-ms-request-id: [053bacba-c51d-4dad-92bc-e98fd6e628ba] - x-ms-routing-request-id: ['WESTUS:20170606T172957Z:053bacba-c51d-4dad-92bc-e98fd6e628ba'] - status: {code: 200, message: OK} -- request: - body: '{"location": "westus", "properties": {"tenantId": "00000000-0000-0000-0000-000000000000", - "enabledForDiskEncryption": true, "enabledForDeployment": true, "sku": {"name": - "premium", "family": "A"}, "accessPolicies": [{"tenantId": "00000000-0000-0000-0000-000000000000", - "permissions": {"storage": ["get", "list", "delete", "set", "update", "regeneratekey", - "setsas", "listsas", "getsas", "deletesas"], "keys": ["encrypt", "decrypt", - "wrapKey", "unwrapKey", "sign", "verify", "get", "list", "create", "update", - "import", "delete", "backup", "restore", "recover", "purge"], "certificates": - ["get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers", - "listissuers", "setissuers", "deleteissuers", "manageissuers", "recover", "purge"], - "secrets": ["get", "list", "set", "delete", "backup", "restore", "recover", - "purge"]}, "objectId": "00000000-0000-0000-0000-000000000000"}], "enabledForTemplateDeployment": - true}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['938'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c2c07c14-4add-11e7-af6e-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest/providers/Microsoft.KeyVault/vaults/pytest-shared-vault?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest/providers/Microsoft.KeyVault/vaults/pytest-shared-vault","name":"pytest-shared-vault","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"],"secrets":["get","list","set","delete","backup","restore","recover","purge"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"vaultUri":"https://pytest-shared-vault.vault.azure.net/"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:29:56 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1139'] - x-ms-correlation-request-id: [c63a0e17-e405-4aab-86c8-e253f34a3d37] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1190'] - x-ms-request-id: [c63a0e17-e405-4aab-86c8-e253f34a3d37] - x-ms-routing-request-id: ['WESTUS:20170606T172957Z:c63a0e17-e405-4aab-86c8-e253f34a3d37'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [bf9fa062-4add-11e7-a7b8-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY2OTkyODkxMjU2Nnw2QUU5Nzg3M0QwREY0RDU5ODhBMzQ5NzcwNjcyREU3OA?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 17:29:51Z","status":"NotStarted"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['64'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:29:57 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY2OTkyODkxMjU2Nnw2QUU5Nzg3M0QwREY0RDU5ODhBMzQ5NzcwNjcyREU3OA?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [aac0ce0e-d22a-4ea9-940c-06e49c68c1aa] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14998'] - x-ms-request-id: [aac0ce0e-d22a-4ea9-940c-06e49c68c1aa] - x-ms-routing-request-id: ['WESTUS:20170606T172958Z:aac0ce0e-d22a-4ea9-940c-06e49c68c1aa'] - status: {code: 202, message: Accepted} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [bf9fa062-4add-11e7-a7b8-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY2OTkyODkxMjU2Nnw2QUU5Nzg3M0QwREY0RDU5ODhBMzQ5NzcwNjcyREU3OA?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 17:29:51Z","status":"NotStarted"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['64'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:02 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY2OTkyODkxMjU2Nnw2QUU5Nzg3M0QwREY0RDU5ODhBMzQ5NzcwNjcyREU3OA?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [cd8767e3-7bc3-45e1-99ed-3e9e8becefd4] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14997'] - x-ms-request-id: [cd8767e3-7bc3-45e1-99ed-3e9e8becefd4] - x-ms-routing-request-id: ['WESTUS:20170606T173003Z:cd8767e3-7bc3-45e1-99ed-3e9e8becefd4'] - status: {code: 202, message: Accepted} -- request: - body: '{"key": {"key_ops": ["encrypt", "decrypt", "sign", "verify", "wrapKey", - "unwrapKey"], "e": "AQAB", "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", - "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH", - "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", - "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", - "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", - "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", - "q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3", - "kty": "RSA"}, "Hsm": false}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['1738'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [c902baba-4add-11e7-82fa-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a?api-version=2016-10-01 - response: - body: {string: '{"key":{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/03acb54ecc5b45148cc7d3161b3da3ad","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU","e":"AQAB"},"attributes":{"enabled":true,"created":1496770210,"updated":1496770210,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['658'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:09 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [d1e0b031-5c8f-43a0-ab91-16651a64a883] - status: {code: 200, message: OK} -- request: - body: '{"value": "MzVhNGMxM2YzYWRhNmI1MDE4MmY3MzdjMzIyZjQ4Njk5OTIwNzUxZmU2NjZkOTY4MTJjYmEwNmM3MzYxZjVkMjZlZGNjYzdiZTc4YTVmYzE0OWMyN2UzNDU4NzM4OWI1MTVjOGU4NGMzMGM5YWViOTJhNTBjY2M0MDNjYWJlZmYwNzQzMWYzZGUxZWU2NDc0MjYwYjVkNGJjMDdiNGZjMzMwZmI5MTkzZjcyMmRiYjgwNDQzYzdkMDUxYjhhZDMwYjQ5MTgzMjE", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['299'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ca4389b8-4add-11e7-9c1b-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/wrapkey?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/03acb54ecc5b45148cc7d3161b3da3ad","value":"gHDXApl0OwLLeDOIL3I1kyTvgov_lVy4DO-w7APZP8-GknLpcfS9_vu-LNdS1JNzPBNzMps3GNouRexWHm03xZTYQHZ1Fcrrd1-Uf6pwIJs5cXSm-JIY0CVFO9fKttB6YG_of2jBfBe2Sr1_xMUO4ZVpLwhlTCXuuqQ8_R-p6KscGk0IrJ0gZmhsYeUAvB_Iey3KeaWIKfzc5WCBf7wY_5_sxVOkq0w4WRgXpfbW_F2c1sFyevT0ONYlNBxU_JJa-Y-TF7LJ_Qbbc4B6oKOfrTttrD6j3DG8F_WDwliYRU2Rj7cT9UVKvVN65VSVjZQ91HdEoEtKFgNPSmTHfYKeFQ"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['460'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:09 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [f6da60d3-d241-445a-a598-9050cc604d76] - status: {code: 200, message: OK} -- request: - body: '{"value": "gHDXApl0OwLLeDOIL3I1kyTvgov_lVy4DO-w7APZP8-GknLpcfS9_vu-LNdS1JNzPBNzMps3GNouRexWHm03xZTYQHZ1Fcrrd1-Uf6pwIJs5cXSm-JIY0CVFO9fKttB6YG_of2jBfBe2Sr1_xMUO4ZVpLwhlTCXuuqQ8_R-p6KscGk0IrJ0gZmhsYeUAvB_Iey3KeaWIKfzc5WCBf7wY_5_sxVOkq0w4WRgXpfbW_F2c1sFyevT0ONYlNBxU_JJa-Y-TF7LJ_Qbbc4B6oKOfrTttrD6j3DG8F_WDwliYRU2Rj7cT9UVKvVN65VSVjZQ91HdEoEtKFgNPSmTHfYKeFQ", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['374'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [cabcb408-4add-11e7-9075-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/unwrapkey?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/03acb54ecc5b45148cc7d3161b3da3ad","value":"MzVhNGMxM2YzYWRhNmI1MDE4MmY3MzdjMzIyZjQ4Njk5OTIwNzUxZmU2NjZkOTY4MTJjYmEwNmM3MzYxZjVkMjZlZGNjYzdiZTc4YTVmYzE0OWMyN2UzNDU4NzM4OWI1MTVjOGU4NGMzMGM5YWViOTJhNTBjY2M0MDNjYWJlZmYwNzQzMWYzZGUxZWU2NDc0MjYwYjVkNGJjMDdiNGZjMzMwZmI5MTkzZjcyMmRiYjgwNDQzYzdkMDUxYjhhZDMwYjQ5MTgzMjE"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['385'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:11 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [30b80c71-800f-4f87-8690-294699b09246] - status: {code: 200, message: OK} -- request: - body: '{"value": "MzVhNGMxM2YzYWRhNmI1MDE4MmY3MzdjMzIyZjQ4Njk5OTIwNzUxZmU2NjZkOTY4MTJjYmEwNmM3MzYxZjVkMjZlZGNjYzdiZTc4YTVmYzE0OWMyN2UzNDU4NzM4OWI1MTVjOGU4NGMzMGM5YWViOTJhNTBjY2M0MDNjYWJlZmYwNzQzMWYzZGUxZWU2NDc0MjYwYjVkNGJjMDdiNGZjMzMwZmI5MTkzZjcyMmRiYjgwNDQzYzdkMDUxYjhhZDMwYjQ5MTgzMjE", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['299'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [cb494bba-4add-11e7-8f8e-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/03acb54ecc5b45148cc7d3161b3da3ad/wrapkey?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/03acb54ecc5b45148cc7d3161b3da3ad","value":"gi_z1id4uHpX5f4IRkcg24NtFXPdUU6gPssU3-JRTUCm6y0YTn5Y1sGILE_Tu0jdEtrdmwvHuJFc68qWUBkdJ1MYuC_lkS9xd4wVcGyTbZVO0K1ker-KDox17Kb_oQHj80xcqRbBMNh6b4xDcq8pMnONRONsSPqo1KPUJmAivp1yVYQ_mldb5WIVUY0ZcudXEz0vf9hI8YZY9TJpShwGU4rF1F3pmx2asOmaN0Z7s2i378vNmHQVxpkat6lLU0T4LpgsDXmRZYjzhxCMdWT7MwnDLBh36ka_EcNlzvCAhkssVHH_QJIXLS8YXTHF64c5Eg_gB0_cYaMdnKXsRED8JA"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['460'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:11 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [7d2865c6-f4c0-4876-9371-bdffd2e85833] - status: {code: 200, message: OK} -- request: - body: '{"value": "gi_z1id4uHpX5f4IRkcg24NtFXPdUU6gPssU3-JRTUCm6y0YTn5Y1sGILE_Tu0jdEtrdmwvHuJFc68qWUBkdJ1MYuC_lkS9xd4wVcGyTbZVO0K1ker-KDox17Kb_oQHj80xcqRbBMNh6b4xDcq8pMnONRONsSPqo1KPUJmAivp1yVYQ_mldb5WIVUY0ZcudXEz0vf9hI8YZY9TJpShwGU4rF1F3pmx2asOmaN0Z7s2i378vNmHQVxpkat6lLU0T4LpgsDXmRZYjzhxCMdWT7MwnDLBh36ka_EcNlzvCAhkssVHH_QJIXLS8YXTHF64c5Eg_gB0_cYaMdnKXsRED8JA", - "alg": "RSA-OAEP"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['374'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [cbcc9e12-4add-11e7-9828-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/03acb54ecc5b45148cc7d3161b3da3ad/unwrapkey?api-version=2016-10-01 - response: - body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/03acb54ecc5b45148cc7d3161b3da3ad","value":"MzVhNGMxM2YzYWRhNmI1MDE4MmY3MzdjMzIyZjQ4Njk5OTIwNzUxZmU2NjZkOTY4MTJjYmEwNmM3MzYxZjVkMjZlZGNjYzdiZTc4YTVmYzE0OWMyN2UzNDU4NzM4OWI1MTVjOGU4NGMzMGM5YWViOTJhNTBjY2M0MDNjYWJlZmYwNzQzMWYzZGUxZWU2NDc0MjYwYjVkNGJjMDdiNGZjMzMwZmI5MTkzZjcyMmRiYjgwNDQzYzdkMDUxYjhhZDMwYjQ5MTgzMjE"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['385'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:13 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [fc639e6e-f4fc-4c47-9b86-dc687cc6edd3] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_backup_and_restore.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_backup_and_restore.yaml deleted file mode 100644 index 07e8eaee113c..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_backup_and_restore.yaml +++ /dev/null @@ -1,161 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ed3be0a6-4ad6-11e7-82e4-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:01 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [1b6faf89-ca0c-4dea-a7eb-d38d085c95d8] - x-ms-ratelimit-remaining-subscription-writes: ['1192'] - x-ms-request-id: [1b6faf89-ca0c-4dea-a7eb-d38d085c95d8] - x-ms-routing-request-id: ['WESTUS:20170606T164102Z:1b6faf89-ca0c-4dea-a7eb-d38d085c95d8'] - status: {code: 200, message: OK} -- request: - body: '{"value": "secValc3d148a"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['26'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ed665ba6-4ad6-11e7-9835-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a?api-version=2016-10-01 - response: - body: {string: '{"value":"secValc3d148a","id":"https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a/16cb31b7265645c3b212804847a35fc3","attributes":{"enabled":true,"created":1496767263,"updated":1496767263,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['231'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:03 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [12e3596e-73bc-4cbf-ac16-5aef03d5de55] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ee122628-4ad6-11e7-b9b6-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a/backup?api-version=2016-10-01 - response: - body: {string: '{"value":"KUF6dXJlS2V5VmF1bHRTZWNyZXRCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLlVzcGF0bGZTaC1PVVhzWHZnTkJPdE91MlEzTm42cjhDRXdzcFZ0bnNSZ25xNTJ3MmZNZ2xPN2VfYkg5Q2FvVGNSUmdMSzR1VmpXY2ZGRnZQMmJOQzZmMVdpVnZKd21HcmJYaXFIbUNGbmhXNFdWY185R1ZqdWNjZWw1a2VKQUZUdmY0SW9teWkyZXhYa1ZqbUgtRWMyM2h4V2hfa2tncVh6X3dhRTdDY2EzaEx5S0JWTGNvdnRRYjBuMjc2VWxqNWRSeXNWaDhQSnk2VWthVzBTNTlWaUV3S2VSSk9DMVI1VkhRNWM3SXQtb3JNcEp2eXFjR2oyTEdMY1dWcUFDWUlfS0kyZk9Ibk0xSkFfV3lDanlpWncxV3k4WmdYeUFOTE9pZ1hYUnFNMUZUUmgtRnBVWm53UFR6ZHVHdldEX29SZUFCLVVETUdidkQ5OFQxaU1RV040US5MVVFjTkR6Ri1QN3ZldU82R09HcXpRLk1CSW5HMmk2ak1IWEdnazlNYUIwUnRvRzlBOGJGRDlxN2pyYmlha0JVWWM5UVBHVzZwdnBHeDZYdzZLSlFNYVhzOThQa0lQRmhVa2NQR2xsbWF1Mm50TUlzVTFrVERMMktTVEhzOXZRQ2Y4TjQ3cVFrQUR5THloSGJydTlFR0pVOTFSVFZiU3h0VjVXSW82SVY1clJsUUxNU3VCTFVJMW5JU0lnNGJjRXM1SnlqZFFnVmp6REUxYmRNWGRhQUFiTHFUYzhOdmlRSV9xSWdOLWxpbVFIa0JjcnAyQ1BMc3lyeEtnQUZyUUNwdEdFeGR2a3RIYURodlQ0MWswWkpsd1NCTWJBUGNCZDZRNmdWWVhfdkxreEszdlVad2xnWTVDSVV1ampYYTE5b3VjVmpOMTdzQWEzcmY1XzBEdWhaa1JrOGhzb1dlY2FsOXVQckVpSmtjSjI2M3FfNFhsTGZXNkZrcVlDaVR0TWhDR3dIdV9MTC1fWWJyQnFnam9CSC1LaFV1aWszQ1h0MzBGUkFibjQ4ZG5JSWZNQk9oQ2R5QXdoZm15U3VOdDAybFpjVzJ0Umh6Y0xlR1ZrSlJYaDVxLTRUd1RqLURvU2hRMzNwYWx0OXZXZUprWUR3YkJNN0NpOGFZOWxOX0ZmbE9vN2QwUU9BNTN1UzlZMlp0NVBvdThva3FFTFp2dWU0djNTM2xSR0o1WDl6S0hmc0xtY1BMaGtEc28xMHJtNFc5OUlDVy00ZGZORVpLdkxiLUhaZXdqTUdMV21OaENsSXVvbHkwa3Y1d3hMckxfanh5QkF2eElSZy03RDdMU2dzR3RLQXdmemg0N0tJOFc3YWFyLS1hM2VLNWVCdXZYdkpNN29selFXVDlCbGN3aGxRRlBPREZRVU1zZHpRODNpRk1WTndTcDF1dnFBTkZnMHdsM1dZRzRUZmlVZFpIbjdwNmFHbEhWT3pOeFJJcjBRcTNSQ19TbjFBZ0FxVVdaRDhCS2hZRDZmZTZMM25tbHlkdjlZTkw2NVU0cXJpSWpuTGpCRnhTZ0ppZGFJTEZkenlKS0lMNmdtd3NkQWN5MmFGaUVMbVUtZmpxdEllTkpubHlMOG1laURQM0VtVnpFdWw5VW95RGpRbnBwRDhkSEt4VjFNQXBxRm15bE1hbHhxeHo3QWYyZ1NkbERVNVZRakdyU3ljVUpqaEdXNTRNNGtPM3Z0MEVoek9LNVBSWmhrRTNHTWdfall6ZkJaX1NCNVRyRUlZQzVQZi1EY0czdmMtMkwzZUZQci1wREUtSWZBS0hIMVhEX1V4Z2ZiR0EzeTlZeHJQd0JvTlRkak50cDJPeUF0d1B6dWhwdXVyNXFCNVJ5YjBuUGZxdEpGQjJWTnVvLWNmOFgyRkJaaDJ2OE9VX0NtSU4xV3NhdlN5bmcyV2xWdUl4RGpUUnVrNUlUSXYzbFM5X1BjU1l5bDFJVEFwUjZxeThZVmpOa2RkbFB4REJHTTUwMG1yZVRwdGF4NWVJeE1jWEtfNllPaFhNMWE5am1NVHJyUWRBcFBqQVJubGhFQ0FSckpnNmRHMlpaUlJFOFJRTUlGQVF6UWdQTWxKSFVqUzhPR29MYWlKdktCLXZSSGNRVmtaNUtxTi12eno1X0Mxam9ha1Rkd3hhcUViZF9vX1dVYWlSallfN3RXRld1NmExWVA4a2l5N3ZiLXlHNV9LVDdtZ1pNRE9FS3VvYWNMNldwbzhMdzVMSmlzTEg5NExpY241V240dWZzc3gxdkx0VUFPV0hVYlNCRnRjTmluWU01R0hpdk5uWUtoY2ZHZGxBN3BHNTNCQ1VGd2NpQ1dHWFFLR3hCREYtMXlVUG9pX18xY0RpMGRTR2g3YnJXRDh5YXFnMGZORDFrcFFkMGpQd0ZpeVVvWGxIaHUxRVNiV3VaNEpKMTNGMjB2NDZ4bTZWekZZN0RqelJUOFRfTlh0Qm1CZFU4NGhsZS1uY3FaVWJtMGZ5UEQtNkxKM2EybU84N0JrOE9VN3lJbko0NFowV2lTajIxSHBKVmlTcVluVWdnV3VmWUo4NkhjWFdmYXE4N01BaldpWU1pck1tOHFYTFd4TERKbDJTWTBucTl3ZjZ0THNIWGV3WENNT2t2NkE4ckYzeS1OWndJNTNVSlphZEZKNVU5ZHVPSDZzVGFUYk0wVDdhWmg5MlM4Q0Rxc2ZVMjU0X2lOUEYtdmprSnpkRDN6dkdMTXEwR3ZJUzlkaEVTeVEwOWI4RkVPb3NSZnNUR2FrVmZuSWZfa0FyakV0LXNEMkdBLVNFQTdFbEZjS29kWjdxUHZEUEVnLTRQV2w2RTB0eTkyWUFFSTl5X181aGNRbDIyUkFMb0JMaVRwZjJraEx6VUdiNEZLVFpBZ1dZeEQ0SGpnVFprWkZlc2JZVFhxX0hmWGxQOTQ2SHlteDl2bHFNbU5rZWlQLWhJRjFKbEdUMVRoSkY0VlJKVURaMGk5cHZVXzlxNkoyOTRSMlZiXzBwZjl3RnVZWmM2cHZWNTQzeFUzOV9lRmRjZjBYQ1pidGNfT215b0FpbGx1eXIxRVRLRHVTVGNJMzZrMHAwaGVEOC1LcXVtakVRRzg4ZEM2OGpOclVOWk9LdklVRG9BbGJNVXpScXFrSTh1U2VRajBSeE9wdVJnc3l2ZkgzbXNWOG1SVjdqeF9lMnQwc1ppTW5nUUJpd2hqRE9xYUFBY2tUem9yZklSQ3o0SENyUVR0Q0pvcmhQZ1Z3bHJpRnk1NVVZVUVlaG5mYWlaVXNmWHJmMm9Lb1J4SFVocWtNcEdJanFpUDhNRElZYkg2VWh6YnVTQ0dlXzBQamRLcGRnSGg4RFNLVF9IclQ2YnRQekhQcmRnZ1ZmY2xWc082TDB3T2p2Ry1mUll1Q21HQko0a0lnMmt3SkRWcVpYSTNFN1BMOFNaY195TGg2NjRWZDEycmY1dF9HeHY1dVh5SVE3RVNNdWV2QnIxRXF3MGtWQ0xGX2FwWE9DOG1IV2w0LTRhY21Jd3hMdXdrZlM1bmpaVklEUHh2bFBLOW5NeVlJX2JBeVRSX2lQNmpRejVCVHMxejlOb3p4Yk9mMU5KVFFrVWxXU0lrUVhzblNneWdpdFV0ZENvMXEteDlIT0M0Z1JodEh3UVNnaHNGQnBTVUVOSmVnaWprdFptc2pGY0Q4d1Bhbm1YdVhtV3dFR3Fmem9DM0o0UWdSS1kwYXdsajJEMXZrRXpka1hSZHluWVhlT1lzUGZFb2JSMkpZVklvcDRmbUFYVVhrZlVhd0RxaXQ5aTI5b0hiQjdLcUFKTEZCWEx6eUhRcFl5bC1SRlV3ZUFUak1pWEdmMmNLZ3owRGdnQktpb1A4VW9HdlBVc0kzVjdJVUgtNU81VHJNakJMMWNSZ2NXVUJfZlNWRWxVU1BNMHNpSV9kZ1pVSUhqWGptdGgxSmxucVpQcTZpTXBJUllDdnlFT0h1UnQzQ2JCRXhxMDE1aEJvMXNldUJSakZLTWI4WldLTTlVbzdZRVZGVGdXZFh5Z21yUVIwaUh1alhCLU02UkpydHZnWHV2X2lmRGI1MVV6RTU3RTR5NXVKdUF6TWFXUXBfZEhvS3ktVjRKWmxuWEJQU1pQU0VTajB1bVBPMDliRllyejNzWEo0U0JBUEFHd3RMbHpncTU0dHp6ZFV4YUNPZkl4bTNsTm5MYmNMZzVkbDJ6dnIzRTFhNExUMTJKUGpQWWtmbHJuS2hJX1kxRjFjZ2l1S2RUbllHRHJCV0xTUG4wcUdGSkFzcUdNN2pjQkVaZ3k5MmtaOUVfRUt2ekRIVkFjNDFJQk1CbEF2ZHprUU9xbzRHZ1NfRFppUWxpalJFd1QtYU51Mjh3QjE0cFUtZ0psRlgxbmtMeDhHeUdFV1MyeGZBaEpYYy1JaUJGNUxaN3AxVTV5cXhyQVcweW1ibk43bm50M3p2Z2VSSFJLd19nUXF5ZTllVGx5NmFFenZJVU1Ca25Id1BfRHFVOWdTa2NmbmRCbnUwNzNuRXNqUUtNM1dIakNWMHJwODdYLVdHWkIxd2p1b0g3RTFMLTdTM0MtUGR3Q3otNVp6QVJ5NXZCWnhjRGoxWmJNQll6dWxsNjk1M0IyUVlIQy1EWjNwaFBONFoybXduVm9TWVRJVTNfNFBKbG5BbHVLQ1lLTDZ0Z2dCSDFaRzJLaS1nWS0zZkNMQUhMS0xwNHlZSWU5RXFqbFI3cUh0YzJLTHRPamVTUTIzUTZpYlFZb2dMV28tT2c3YlU2a2VaeS1sRG54VzlaSEhDdU9FTkxUQWdubTZxNHZ0VVB2b1lPM2MtZWJnN21lang5QnVMeUQ1ZVJkbGtCS21NeTVJQ3Y1QVlCX05GZHVzMm54SnZZUEZEaVBOWERBTWc3aUlXSEo0eEtvWGhLZlZoWlJYUGoyZldoMEE5cHlJYWltdGYtZjk4VzNHVFNrWC1iVkxiYXUyWGlubEc5MFRyLWZVdkpsY1YyS00zM2h1UHJ0aGxreTQ4U29PTEJhOWh2NWlqU3Jrc241UkFNQkhwSlY4ZkpMbnJYT2padnFvMWRfcXk2ZkxUUU5fMHF5YXNnU0k3S1lnVGNaVEREM1pkeUlTTHAydHBzWE5TWXAyZTE3SldkS1M3ampWcWZhU0dKdlFCejFNQlo3ZVNmSFFybnYzbWRwVldJNkN0d3U4MDhIcXJVWXNOcFBpWVhwZEhxaEpMRXcwRzkzVlIwempaaldpTkRXYUt0cXIxOWQ5SmpKOXZvcTE1ZjktNm9ZNlJiY1QtX1lrSUc4cmhLaktQbEFvangxeUtidzJKd3NGOHZodnZKT2ZheUV0LW5EUVUzYUc3ZC1nb1ZLenc0QUNJdS1kbjRsM0ZsSjN6VlNqWDBmOXBFRmR6UFlXX0Z3dHJ4QzRYTnBsdDhVSmhFZkNQckJrek9Qa3JLUFp4RC1ua2dPQkFKYlFPXzgyWjZCcVBTYVRZcUVRakRaUTdKdjJMY2xMaF9JR1ZpVGdERVgxdVN0T3pJY0NmRVN5d0VCbXp5NWp5dHptQjFqV3l1OFN1Smc3a2JLMVBsQjVNWXp1YVVUR09wYko4V3QtYlB3RlEydGxNdDZPQ0tmLV9nQ0FXRHp0MGg0THhfTHNNaHNTOVdoR1Axenl1SzBTS3FlZmhxay1DeThEaXktYVFzMUtNUERCUUp1TkdkbGlmVEF4a2hYNUVvSzI3dnY3UzEwdTBCZDJiaWt5WG01UGx0alpTZlQ3WkZwbEtQbDhnenlRWTZDT3dmaTNZYjRTY2xYS25MQXFPLURlcW5ScjFxdXFtcXhJek5vSG1Pb1dkMXUtSzRYaXNpT21lNlQ4OE9JUVYzR1N0OUIzR2dwbHFEUml1Z2E2WXJwbGJwZ20zaDJaV1lKT0E5TVRJLS1xMy00WnpxSWZhTHhNcmJXUHZQME1ESi1iMk5jQ2RuYnByRHpLMWgwZEgwVTVOcTMxbHR6Rm1LYzN5UW1EUS1Rd2RJU29MQ1FTRnB4bS12OVE4eHhPZ1FKYWsxUXNuMy01NmNtZDl5ODZ2dFcwOWw2OFVETzZ1VmZ5SmZwanY3MEdQZy4xSkI1OTBrNkd1d25rNkQycGlpYWd3"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['6316'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:05 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [aae6cd62-4902-4b55-a8b5-1400525291bc] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [eedfda90-4ad6-11e7-98fc-5065f34efe31] - method: DELETE - uri: https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a/16cb31b7265645c3b212804847a35fc3","attributes":{"enabled":true,"created":1496767263,"updated":1496767263,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['207'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:05 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [ab2f98eb-62b0-44e0-b57e-a6a8d5ab7b76] - status: {code: 200, message: OK} -- request: - body: '{"value": "KUF6dXJlS2V5VmF1bHRTZWNyZXRCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLlVzcGF0bGZTaC1PVVhzWHZnTkJPdE91MlEzTm42cjhDRXdzcFZ0bnNSZ25xNTJ3MmZNZ2xPN2VfYkg5Q2FvVGNSUmdMSzR1VmpXY2ZGRnZQMmJOQzZmMVdpVnZKd21HcmJYaXFIbUNGbmhXNFdWY185R1ZqdWNjZWw1a2VKQUZUdmY0SW9teWkyZXhYa1ZqbUgtRWMyM2h4V2hfa2tncVh6X3dhRTdDY2EzaEx5S0JWTGNvdnRRYjBuMjc2VWxqNWRSeXNWaDhQSnk2VWthVzBTNTlWaUV3S2VSSk9DMVI1VkhRNWM3SXQtb3JNcEp2eXFjR2oyTEdMY1dWcUFDWUlfS0kyZk9Ibk0xSkFfV3lDanlpWncxV3k4WmdYeUFOTE9pZ1hYUnFNMUZUUmgtRnBVWm53UFR6ZHVHdldEX29SZUFCLVVETUdidkQ5OFQxaU1RV040US5MVVFjTkR6Ri1QN3ZldU82R09HcXpRLk1CSW5HMmk2ak1IWEdnazlNYUIwUnRvRzlBOGJGRDlxN2pyYmlha0JVWWM5UVBHVzZwdnBHeDZYdzZLSlFNYVhzOThQa0lQRmhVa2NQR2xsbWF1Mm50TUlzVTFrVERMMktTVEhzOXZRQ2Y4TjQ3cVFrQUR5THloSGJydTlFR0pVOTFSVFZiU3h0VjVXSW82SVY1clJsUUxNU3VCTFVJMW5JU0lnNGJjRXM1SnlqZFFnVmp6REUxYmRNWGRhQUFiTHFUYzhOdmlRSV9xSWdOLWxpbVFIa0JjcnAyQ1BMc3lyeEtnQUZyUUNwdEdFeGR2a3RIYURodlQ0MWswWkpsd1NCTWJBUGNCZDZRNmdWWVhfdkxreEszdlVad2xnWTVDSVV1ampYYTE5b3VjVmpOMTdzQWEzcmY1XzBEdWhaa1JrOGhzb1dlY2FsOXVQckVpSmtjSjI2M3FfNFhsTGZXNkZrcVlDaVR0TWhDR3dIdV9MTC1fWWJyQnFnam9CSC1LaFV1aWszQ1h0MzBGUkFibjQ4ZG5JSWZNQk9oQ2R5QXdoZm15U3VOdDAybFpjVzJ0Umh6Y0xlR1ZrSlJYaDVxLTRUd1RqLURvU2hRMzNwYWx0OXZXZUprWUR3YkJNN0NpOGFZOWxOX0ZmbE9vN2QwUU9BNTN1UzlZMlp0NVBvdThva3FFTFp2dWU0djNTM2xSR0o1WDl6S0hmc0xtY1BMaGtEc28xMHJtNFc5OUlDVy00ZGZORVpLdkxiLUhaZXdqTUdMV21OaENsSXVvbHkwa3Y1d3hMckxfanh5QkF2eElSZy03RDdMU2dzR3RLQXdmemg0N0tJOFc3YWFyLS1hM2VLNWVCdXZYdkpNN29selFXVDlCbGN3aGxRRlBPREZRVU1zZHpRODNpRk1WTndTcDF1dnFBTkZnMHdsM1dZRzRUZmlVZFpIbjdwNmFHbEhWT3pOeFJJcjBRcTNSQ19TbjFBZ0FxVVdaRDhCS2hZRDZmZTZMM25tbHlkdjlZTkw2NVU0cXJpSWpuTGpCRnhTZ0ppZGFJTEZkenlKS0lMNmdtd3NkQWN5MmFGaUVMbVUtZmpxdEllTkpubHlMOG1laURQM0VtVnpFdWw5VW95RGpRbnBwRDhkSEt4VjFNQXBxRm15bE1hbHhxeHo3QWYyZ1NkbERVNVZRakdyU3ljVUpqaEdXNTRNNGtPM3Z0MEVoek9LNVBSWmhrRTNHTWdfall6ZkJaX1NCNVRyRUlZQzVQZi1EY0czdmMtMkwzZUZQci1wREUtSWZBS0hIMVhEX1V4Z2ZiR0EzeTlZeHJQd0JvTlRkak50cDJPeUF0d1B6dWhwdXVyNXFCNVJ5YjBuUGZxdEpGQjJWTnVvLWNmOFgyRkJaaDJ2OE9VX0NtSU4xV3NhdlN5bmcyV2xWdUl4RGpUUnVrNUlUSXYzbFM5X1BjU1l5bDFJVEFwUjZxeThZVmpOa2RkbFB4REJHTTUwMG1yZVRwdGF4NWVJeE1jWEtfNllPaFhNMWE5am1NVHJyUWRBcFBqQVJubGhFQ0FSckpnNmRHMlpaUlJFOFJRTUlGQVF6UWdQTWxKSFVqUzhPR29MYWlKdktCLXZSSGNRVmtaNUtxTi12eno1X0Mxam9ha1Rkd3hhcUViZF9vX1dVYWlSallfN3RXRld1NmExWVA4a2l5N3ZiLXlHNV9LVDdtZ1pNRE9FS3VvYWNMNldwbzhMdzVMSmlzTEg5NExpY241V240dWZzc3gxdkx0VUFPV0hVYlNCRnRjTmluWU01R0hpdk5uWUtoY2ZHZGxBN3BHNTNCQ1VGd2NpQ1dHWFFLR3hCREYtMXlVUG9pX18xY0RpMGRTR2g3YnJXRDh5YXFnMGZORDFrcFFkMGpQd0ZpeVVvWGxIaHUxRVNiV3VaNEpKMTNGMjB2NDZ4bTZWekZZN0RqelJUOFRfTlh0Qm1CZFU4NGhsZS1uY3FaVWJtMGZ5UEQtNkxKM2EybU84N0JrOE9VN3lJbko0NFowV2lTajIxSHBKVmlTcVluVWdnV3VmWUo4NkhjWFdmYXE4N01BaldpWU1pck1tOHFYTFd4TERKbDJTWTBucTl3ZjZ0THNIWGV3WENNT2t2NkE4ckYzeS1OWndJNTNVSlphZEZKNVU5ZHVPSDZzVGFUYk0wVDdhWmg5MlM4Q0Rxc2ZVMjU0X2lOUEYtdmprSnpkRDN6dkdMTXEwR3ZJUzlkaEVTeVEwOWI4RkVPb3NSZnNUR2FrVmZuSWZfa0FyakV0LXNEMkdBLVNFQTdFbEZjS29kWjdxUHZEUEVnLTRQV2w2RTB0eTkyWUFFSTl5X181aGNRbDIyUkFMb0JMaVRwZjJraEx6VUdiNEZLVFpBZ1dZeEQ0SGpnVFprWkZlc2JZVFhxX0hmWGxQOTQ2SHlteDl2bHFNbU5rZWlQLWhJRjFKbEdUMVRoSkY0VlJKVURaMGk5cHZVXzlxNkoyOTRSMlZiXzBwZjl3RnVZWmM2cHZWNTQzeFUzOV9lRmRjZjBYQ1pidGNfT215b0FpbGx1eXIxRVRLRHVTVGNJMzZrMHAwaGVEOC1LcXVtakVRRzg4ZEM2OGpOclVOWk9LdklVRG9BbGJNVXpScXFrSTh1U2VRajBSeE9wdVJnc3l2ZkgzbXNWOG1SVjdqeF9lMnQwc1ppTW5nUUJpd2hqRE9xYUFBY2tUem9yZklSQ3o0SENyUVR0Q0pvcmhQZ1Z3bHJpRnk1NVVZVUVlaG5mYWlaVXNmWHJmMm9Lb1J4SFVocWtNcEdJanFpUDhNRElZYkg2VWh6YnVTQ0dlXzBQamRLcGRnSGg4RFNLVF9IclQ2YnRQekhQcmRnZ1ZmY2xWc082TDB3T2p2Ry1mUll1Q21HQko0a0lnMmt3SkRWcVpYSTNFN1BMOFNaY195TGg2NjRWZDEycmY1dF9HeHY1dVh5SVE3RVNNdWV2QnIxRXF3MGtWQ0xGX2FwWE9DOG1IV2w0LTRhY21Jd3hMdXdrZlM1bmpaVklEUHh2bFBLOW5NeVlJX2JBeVRSX2lQNmpRejVCVHMxejlOb3p4Yk9mMU5KVFFrVWxXU0lrUVhzblNneWdpdFV0ZENvMXEteDlIT0M0Z1JodEh3UVNnaHNGQnBTVUVOSmVnaWprdFptc2pGY0Q4d1Bhbm1YdVhtV3dFR3Fmem9DM0o0UWdSS1kwYXdsajJEMXZrRXpka1hSZHluWVhlT1lzUGZFb2JSMkpZVklvcDRmbUFYVVhrZlVhd0RxaXQ5aTI5b0hiQjdLcUFKTEZCWEx6eUhRcFl5bC1SRlV3ZUFUak1pWEdmMmNLZ3owRGdnQktpb1A4VW9HdlBVc0kzVjdJVUgtNU81VHJNakJMMWNSZ2NXVUJfZlNWRWxVU1BNMHNpSV9kZ1pVSUhqWGptdGgxSmxucVpQcTZpTXBJUllDdnlFT0h1UnQzQ2JCRXhxMDE1aEJvMXNldUJSakZLTWI4WldLTTlVbzdZRVZGVGdXZFh5Z21yUVIwaUh1alhCLU02UkpydHZnWHV2X2lmRGI1MVV6RTU3RTR5NXVKdUF6TWFXUXBfZEhvS3ktVjRKWmxuWEJQU1pQU0VTajB1bVBPMDliRllyejNzWEo0U0JBUEFHd3RMbHpncTU0dHp6ZFV4YUNPZkl4bTNsTm5MYmNMZzVkbDJ6dnIzRTFhNExUMTJKUGpQWWtmbHJuS2hJX1kxRjFjZ2l1S2RUbllHRHJCV0xTUG4wcUdGSkFzcUdNN2pjQkVaZ3k5MmtaOUVfRUt2ekRIVkFjNDFJQk1CbEF2ZHprUU9xbzRHZ1NfRFppUWxpalJFd1QtYU51Mjh3QjE0cFUtZ0psRlgxbmtMeDhHeUdFV1MyeGZBaEpYYy1JaUJGNUxaN3AxVTV5cXhyQVcweW1ibk43bm50M3p2Z2VSSFJLd19nUXF5ZTllVGx5NmFFenZJVU1Ca25Id1BfRHFVOWdTa2NmbmRCbnUwNzNuRXNqUUtNM1dIakNWMHJwODdYLVdHWkIxd2p1b0g3RTFMLTdTM0MtUGR3Q3otNVp6QVJ5NXZCWnhjRGoxWmJNQll6dWxsNjk1M0IyUVlIQy1EWjNwaFBONFoybXduVm9TWVRJVTNfNFBKbG5BbHVLQ1lLTDZ0Z2dCSDFaRzJLaS1nWS0zZkNMQUhMS0xwNHlZSWU5RXFqbFI3cUh0YzJLTHRPamVTUTIzUTZpYlFZb2dMV28tT2c3YlU2a2VaeS1sRG54VzlaSEhDdU9FTkxUQWdubTZxNHZ0VVB2b1lPM2MtZWJnN21lang5QnVMeUQ1ZVJkbGtCS21NeTVJQ3Y1QVlCX05GZHVzMm54SnZZUEZEaVBOWERBTWc3aUlXSEo0eEtvWGhLZlZoWlJYUGoyZldoMEE5cHlJYWltdGYtZjk4VzNHVFNrWC1iVkxiYXUyWGlubEc5MFRyLWZVdkpsY1YyS00zM2h1UHJ0aGxreTQ4U29PTEJhOWh2NWlqU3Jrc241UkFNQkhwSlY4ZkpMbnJYT2padnFvMWRfcXk2ZkxUUU5fMHF5YXNnU0k3S1lnVGNaVEREM1pkeUlTTHAydHBzWE5TWXAyZTE3SldkS1M3ampWcWZhU0dKdlFCejFNQlo3ZVNmSFFybnYzbWRwVldJNkN0d3U4MDhIcXJVWXNOcFBpWVhwZEhxaEpMRXcwRzkzVlIwempaaldpTkRXYUt0cXIxOWQ5SmpKOXZvcTE1ZjktNm9ZNlJiY1QtX1lrSUc4cmhLaktQbEFvangxeUtidzJKd3NGOHZodnZKT2ZheUV0LW5EUVUzYUc3ZC1nb1ZLenc0QUNJdS1kbjRsM0ZsSjN6VlNqWDBmOXBFRmR6UFlXX0Z3dHJ4QzRYTnBsdDhVSmhFZkNQckJrek9Qa3JLUFp4RC1ua2dPQkFKYlFPXzgyWjZCcVBTYVRZcUVRakRaUTdKdjJMY2xMaF9JR1ZpVGdERVgxdVN0T3pJY0NmRVN5d0VCbXp5NWp5dHptQjFqV3l1OFN1Smc3a2JLMVBsQjVNWXp1YVVUR09wYko4V3QtYlB3RlEydGxNdDZPQ0tmLV9nQ0FXRHp0MGg0THhfTHNNaHNTOVdoR1Axenl1SzBTS3FlZmhxay1DeThEaXktYVFzMUtNUERCUUp1TkdkbGlmVEF4a2hYNUVvSzI3dnY3UzEwdTBCZDJiaWt5WG01UGx0alpTZlQ3WkZwbEtQbDhnenlRWTZDT3dmaTNZYjRTY2xYS25MQXFPLURlcW5ScjFxdXFtcXhJek5vSG1Pb1dkMXUtSzRYaXNpT21lNlQ4OE9JUVYzR1N0OUIzR2dwbHFEUml1Z2E2WXJwbGJwZ20zaDJaV1lKT0E5TVRJLS1xMy00WnpxSWZhTHhNcmJXUHZQME1ESi1iMk5jQ2RuYnByRHpLMWgwZEgwVTVOcTMxbHR6Rm1LYzN5UW1EUS1Rd2RJU29MQ1FTRnB4bS12OVE4eHhPZ1FKYWsxUXNuMy01NmNtZDl5ODZ2dFcwOWw2OFVETzZ1VmZ5SmZwanY3MEdQZy4xSkI1OTBrNkd1d25rNkQycGlpYWd3"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['6317'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ef68a18a-4ad6-11e7-8470-5065f34efe31] - method: POST - uri: https://pytest-shared-vault.vault.azure.net/secrets/restore?api-version=2016-10-01 - response: - body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a/16cb31b7265645c3b212804847a35fc3","attributes":{"enabled":true,"created":1496767263,"updated":1496767263,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['207'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:06 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [a7840696-2e5a-4e1f-b786-36670fe5dd99] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_crud_operations.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_crud_operations.yaml deleted file mode 100644 index 25cea6151eb1..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_crud_operations.yaml +++ /dev/null @@ -1,260 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f338cdc0-4ad6-11e7-bfa2-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:12 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [096eda6a-04f6-4dbf-8735-57f0f80776be] - x-ms-ratelimit-remaining-subscription-writes: ['1193'] - x-ms-request-id: [096eda6a-04f6-4dbf-8735-57f0f80776be] - x-ms-routing-request-id: ['WESTUS:20170606T164112Z:096eda6a-04f6-4dbf-8735-57f0f80776be'] - status: {code: 200, message: OK} -- request: - body: '{"value": "secVald17e1370"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['27'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f3616990-4ad6-11e7-a9ee-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370?api-version=2016-10-01 - response: - body: {string: '{"value":"secVald17e1370","id":"https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/402495a3b6794727a581cd997c90a537","attributes":{"enabled":true,"created":1496767273,"updated":1496767273,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['230'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:12 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [d14b01dd-cecc-4608-981f-24b7f056259a] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f3e20c1a-4ad6-11e7-9629-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/?api-version=2016-10-01 - response: - body: {string: '{"value":"secVald17e1370","id":"https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/402495a3b6794727a581cd997c90a537","attributes":{"enabled":true,"created":1496767273,"updated":1496767273,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['230'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:13 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [b63f9d5b-2e6a-40e6-84f9-7bd415a861a3] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f459eeae-4ad6-11e7-8d28-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/402495a3b6794727a581cd997c90a537?api-version=2016-10-01 - response: - body: {string: '{"value":"secVald17e1370","id":"https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/402495a3b6794727a581cd997c90a537","attributes":{"enabled":true,"created":1496767273,"updated":1496767273,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['230'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:14 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9adaa402-dec3-4ec3-80c9-4b4d60396a28] - status: {code: 200, message: OK} -- request: - body: '{"tags": {"foo": "updated tag"}, "attributes": {"exp": 2527401600, "enabled": - true}, "contentType": "text/plain"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['113'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f4d5789e-4ad6-11e7-93b3-5065f34efe31] - method: PATCH - uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/?api-version=2016-10-01 - response: - body: {string: '{"contentType":"text/plain","id":"https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/402495a3b6794727a581cd997c90a537","attributes":{"enabled":true,"exp":2527401600,"created":1496767273,"updated":1496767278,"recoverylevel":"Purgeable"},"tags":{"foo":"updated - tag"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['278'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:19 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9e54c634-a863-4474-a6ca-5c7d60ffad77] - status: {code: 200, message: OK} -- request: - body: '{"tags": {"foo": "updated tag"}, "attributes": {"exp": 2527401600, "enabled": - true}, "contentType": "text/plain"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['113'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f80dde94-4ad6-11e7-9a83-5065f34efe31] - method: PATCH - uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/402495a3b6794727a581cd997c90a537?api-version=2016-10-01 - response: - body: {string: '{"contentType":"text/plain","id":"https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/402495a3b6794727a581cd997c90a537","attributes":{"enabled":true,"exp":2527401600,"created":1496767273,"updated":1496767281,"recoverylevel":"Purgeable"},"tags":{"foo":"updated - tag"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['278'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:21 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [c947aa6c-9a44-4e22-aad0-134d8d071a17] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f8b91648-4ad6-11e7-8743-5065f34efe31] - method: DELETE - uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370?api-version=2016-10-01 - response: - body: {string: '{"contentType":"text/plain","id":"https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/402495a3b6794727a581cd997c90a537","attributes":{"enabled":true,"exp":2527401600,"created":1496767273,"updated":1496767281,"recoverylevel":"Purgeable"},"tags":{"foo":"updated - tag"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['278'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:21 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [13669abb-ddc7-4c64-b109-08b72aa5948c] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f92bf642-4ad6-11e7-b06d-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/?api-version=2016-10-01 - response: - body: {string: '{"error":{"code":"SecretNotFound","message":"Secret not found: - secd17e1370"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['77'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:21 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [77134d9c-fef4-4dc6-a548-77a0d913ab3f] - status: {code: 404, message: Not Found} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_list.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_list.yaml deleted file mode 100644 index 54bd24ce9cf7..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_list.yaml +++ /dev/null @@ -1,252 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [fd06a480-4ad6-11e7-9512-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:29 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [6a2c7597-e86b-49c8-a7cb-be9534d332fe] - x-ms-ratelimit-remaining-subscription-writes: ['1191'] - x-ms-request-id: [6a2c7597-e86b-49c8-a7cb-be9534d332fe] - x-ms-routing-request-id: ['WESTUS2:20170606T164129Z:6a2c7597-e86b-49c8-a7cb-be9534d332fe'] - status: {code: 200, message: OK} -- request: - body: '{"value": "secVal013590edb"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [fd9b2e4a-4ad6-11e7-b163-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/secrets/sec0?api-version=2016-10-01 - response: - body: {string: '{"value":"secVal013590edb","id":"https://pytest-shared-vault.vault.azure.net/secrets/sec0/063958c38d9e44179c28b836a95d4679","attributes":{"enabled":true,"created":1496767289,"updated":1496767289,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['224'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:29 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [17f84557-fbee-4031-a6fc-4bb60291b013] - status: {code: 200, message: OK} -- request: - body: '{"value": "secVal113590edb"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [fe6d1a94-4ad6-11e7-af28-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/secrets/sec1?api-version=2016-10-01 - response: - body: {string: '{"value":"secVal113590edb","id":"https://pytest-shared-vault.vault.azure.net/secrets/sec1/fea75262ccc44c53991adcaafc9f31cc","attributes":{"enabled":true,"created":1496767291,"updated":1496767291,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['224'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:31 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [4b4bface-82ed-4780-a72b-6023ae98fb20] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [feed5b70-4ad6-11e7-aead-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/secrets?maxresults=2&api-version=2016-10-01 - response: - body: {string: '{"value":[{"contentType":"application/x-pkcs12","id":"https://pytest-shared-vault.vault.azure.net/secrets/cert062c210d8","managed":true,"attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767023,"updated":1496767023,"recoverylevel":"Purgeable"}},{"contentType":"application/x-pkcs12","id":"https://pytest-shared-vault.vault.azure.net/secrets/cert162c210d8","managed":true,"attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767025,"updated":1496767025,"recoverylevel":"Purgeable"}}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/secrets?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNUlYTmxZM0psZEM5RFJWSlVNelpFTlRFMU5rUWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['817'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:32 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [fbff86e3-b346-44b5-80dc-2080bd3c5c44] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ff759bdc-4ad6-11e7-945c-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/secrets?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNUlYTmxZM0psZEM5RFJWSlVNelpFTlRFMU5rUWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2 - response: - body: {string: '{"value":[{"contentType":"application/x-pkcs12","id":"https://pytest-shared-vault.vault.azure.net/secrets/certimp85b111b7","managed":true,"attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767016,"updated":1496767016,"recoverylevel":"Purgeable"}},{"contentType":"application/x-pkcs12","id":"https://pytest-shared-vault.vault.azure.net/secrets/certverd5e14b0","managed":true,"attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767045,"updated":1496767045,"recoverylevel":"Purgeable"}}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/secrets?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElYTmxZM0psZEM5UVQweEpRMWxEUlZKVVNVWkpRMEZVUlNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['831'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:32 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [43a8650c-d16f-4c16-9a25-796a8f1e7a63] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [00021924-4ad7-11e7-a2e0-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/secrets?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElYTmxZM0psZEM5UVQweEpRMWxEUlZKVVNVWkpRMEZVUlNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2 - response: - body: {string: '{"value":[{"contentType":"application/x-pkcs12","id":"https://pytest-shared-vault.vault.azure.net/secrets/policyCertificate","managed":true,"attributes":{"enabled":true,"nbf":1430344421,"exp":2208988799,"created":1496767062,"updated":1496767062,"recoverylevel":"Purgeable"}},{"id":"https://pytest-shared-vault.vault.azure.net/secrets/sec0","attributes":{"enabled":true,"created":1496767289,"updated":1496767289,"recoverylevel":"Purgeable"}}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/secrets?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeElYTmxZM0psZEM5VFJVTXhJVEF3TURBeU9DRXlNREUzTFRBMkxUQTJWREUyT2pJM09qRTNMamswTURJMU5qTmFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['715'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:33 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [b3037e73-7bca-429c-a5e5-6d85322c9009] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [00a093b8-4ad7-11e7-b5b9-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/secrets?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeElYTmxZM0psZEM5VFJVTXhJVEF3TURBeU9DRXlNREUzTFRBMkxUQTJWREUyT2pJM09qRTNMamswTURJMU5qTmFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2 - response: - body: {string: '{"value":[{"id":"https://pytest-shared-vault.vault.azure.net/secrets/sec1","attributes":{"enabled":true,"created":1496767291,"updated":1496767291,"recoverylevel":"Purgeable"}},{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3","attributes":{"enabled":true,"created":1496766448,"updated":1496766448,"recoverylevel":"Purgeable"}}],"nextLink":"https://pytest-shared-vault.vault.azure.net:443/secrets?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lYTmxZM0psZEM5VFJVTkNRVXRETTBReE5EaEJJVEF3TURBeU9DRXlNREUzTFRBMkxUQTJWREUyT2pFd09qRTRMalEyTlRVNE9UTmFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['639'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:35 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [2b673bb7-ee04-4aba-9250-ef5ecf0ead76] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [01175f0c-4ad7-11e7-ae19-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/secrets?api-version=2016-10-01&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lYTmxZM0psZEM5VFJVTkNRVXRETTBReE5EaEJJVEF3TURBeU9DRXlNREUzTFRBMkxUQTJWREUyT2pFd09qRTRMalEyTlRVNE9UTmFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2 - response: - body: {string: '{"value":[{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a","attributes":{"enabled":true,"created":1496767263,"updated":1496767263,"recoverylevel":"Purgeable"}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['202'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:35 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [6a3143e2-4592-4485-869f-0cfcbbe54820] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_list_versions.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_list_versions.yaml deleted file mode 100644 index 170cfc4b21e4..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_list_versions.yaml +++ /dev/null @@ -1,128 +0,0 @@ -interactions: -- request: - body: '{"location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['22'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 resourcemanagementclient/1.1.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [04b991ac-4ad7-11e7-a189-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/azkv-pytest?api-version=2017-05-10 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest","name":"azkv-pytest","location":"westus","properties":{"provisioningState":"Succeeded"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:41 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - content-length: ['175'] - x-ms-correlation-request-id: [1b53f327-13dd-4f5d-ad4b-9cde74ab9217] - x-ms-ratelimit-remaining-subscription-writes: ['1187'] - x-ms-request-id: [1b53f327-13dd-4f5d-ad4b-9cde74ab9217] - x-ms-routing-request-id: ['WESTUS2:20170606T164141Z:1b53f327-13dd-4f5d-ad4b-9cde74ab9217'] - status: {code: 200, message: OK} -- request: - body: '{"value": "secValac0112b3"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['27'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [04ffede2-4ad7-11e7-8a2e-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3?api-version=2016-10-01 - response: - body: {string: '{"value":"secValac0112b3","id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/a0e549e2c3aa496fa567840d386ac8ea","attributes":{"enabled":true,"created":1496767303,"updated":1496767303,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['230'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:43 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [2f7c33dc-17f7-43ab-bb73-8d15e2343077] - status: {code: 200, message: OK} -- request: - body: '{"value": "secValac0112b3"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['27'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [05ba89f6-4ad7-11e7-b0a6-5065f34efe31] - method: PUT - uri: https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3?api-version=2016-10-01 - response: - body: {string: '{"value":"secValac0112b3","id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/5792a85405de4737b0147a054a6944b4","attributes":{"enabled":true,"created":1496767303,"updated":1496767303,"recoverylevel":"Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['230'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:43 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [372a6b44-e44f-40ea-aaf8-1cbea2702054] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [06403efe-4ad7-11e7-a19f-5065f34efe31] - method: GET - uri: https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/versions?api-version=2016-10-01 - response: - body: {string: '{"value":[{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/0a6eab55d8634f80ab9d764ab66d9c1a","attributes":{"enabled":true,"created":1496704803,"updated":1496704803,"recoverylevel":"Purgeable"}},{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/1d89633c68a74ac990b79cefcee60808","attributes":{"enabled":true,"created":1496766448,"updated":1496766448,"recoverylevel":"Purgeable"}},{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/5792a85405de4737b0147a054a6944b4","attributes":{"enabled":true,"created":1496767303,"updated":1496767303,"recoverylevel":"Purgeable"}},{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/59cf64ce9fff4fa8975d28d47b85ab49","attributes":{"enabled":true,"created":1496705587,"updated":1496705587,"recoverylevel":"Purgeable"}},{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/9e62ad1203d84813b89f6f361972d997","attributes":{"enabled":true,"created":1496765450,"updated":1496765450,"recoverylevel":"Purgeable"}},{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/a0e549e2c3aa496fa567840d386ac8ea","attributes":{"enabled":true,"created":1496767303,"updated":1496767303,"recoverylevel":"Purgeable"}},{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/a106df4e1885421cb76617aa68aaaaa3","attributes":{"enabled":true,"created":1496705588,"updated":1496705588,"recoverylevel":"Purgeable"}},{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/c8f00370b6294f64b92cc13707ce4888","attributes":{"enabled":true,"created":1496765452,"updated":1496765452,"recoverylevel":"Purgeable"}},{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/d84377e1f80941a59af40cd5af775559","attributes":{"enabled":true,"created":1496704802,"updated":1496704802,"recoverylevel":"Purgeable"}},{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/fa6837078bf04dc59fe9218eeb293f99","attributes":{"enabled":true,"created":1496766448,"updated":1496766448,"recoverylevel":"Purgeable"}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['2087'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:44 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [eb57e751-f6b7-4120-bc55-58a2f06d99f9] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_recover_and_purge.yaml b/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_recover_and_purge.yaml deleted file mode 100644 index dab609de7a48..000000000000 --- a/azure-mgmt/tests/recordings/test_key_vault_data.test_secret_recover_and_purge.yaml +++ /dev/null @@ -1,3096 +0,0 @@ -interactions: -- request: - body: '{"location": "westus", "properties": {"tenantId": "00000000-0000-0000-0000-000000000000", - "enabledForDeployment": true, "enabledForDiskEncryption": true, "enabledForTemplateDeployment": - true, "accessPolicies": [{"tenantId": "00000000-0000-0000-0000-000000000000", - "objectId": "00000000-0000-0000-0000-000000000000", "permissions": {"certificates": - ["get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers", - "listissuers", "setissuers", "deleteissuers", "manageissuers", "recover", "purge"], - "keys": ["encrypt", "decrypt", "wrapKey", "unwrapKey", "sign", "verify", "get", - "list", "create", "update", "import", "delete", "backup", "restore", "recover", - "purge"], "secrets": ["get", "list", "set", "delete", "backup", "restore", "recover", - "purge"], "storage": ["get", "list", "delete", "set", "update", "regeneratekey", - "setsas", "listsas", "getsas", "deletesas"]}}], "sku": {"name": "premium", "family": - "A"}, "enableSoftDelete": true}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['964'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0a71c476-4ad7-11e7-8d4d-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429","name":"vault-f91a1429","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"secrets":["get","list","set","delete","backup","restore","recover","purge"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"enableSoftDelete":true,"vaultUri":"https://vault-f91a1429.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:41:52 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1193'] - x-ms-correlation-request-id: [66b5100a-abd8-4ebf-89a5-86fb943eb383] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1191'] - x-ms-request-id: [66b5100a-abd8-4ebf-89a5-86fb943eb383] - x-ms-routing-request-id: ['WESTUS2:20170606T164153Z:66b5100a-abd8-4ebf-89a5-86fb943eb383'] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval0f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [11ad0f00-4ad7-11e7-9203-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval0f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/bb77f3b66ad44451a9c1623e8d6eb8cd","attributes":{"enabled":true,"created":1496767324,"updated":1496767324,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:04 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9c597552-1ac0-46a6-b2a1-1e59b678296e] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval1f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1265d6a8-4ad7-11e7-b409-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval1f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/5ca575f3cf9b4ff2b159286e89dbe0f4","attributes":{"enabled":true,"created":1496767324,"updated":1496767324,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:04 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5da74bdd-0abb-404e-9fce-e09c398d8988] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval0f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [12f34ea2-4ad7-11e7-bd2f-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval0f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429/5f48282919e94940a0daa2a7c18a4670","attributes":{"enabled":true,"created":1496767326,"updated":1496767326,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:05 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [7b37516c-66b7-406a-8461-a047cd0cdc95] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval1f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [138174a8-4ad7-11e7-836e-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval1f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429/430619ba91a64136899b6d1d6d5d0659","attributes":{"enabled":true,"created":1496767326,"updated":1496767326,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:06 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [24f2672e-c3b6-4505-904a-d16fddc8837f] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [14147fda-4ad7-11e7-91c6-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429","deletedDate":1496767328,"scheduledPurgeDate":1504543328,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429/430619ba91a64136899b6d1d6d5d0659","attributes":{"enabled":true,"created":1496767326,"updated":1496767326,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:07 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9fa6856b-0ea0-4bb8-9901-4f408d62a382] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [14bf95d8-4ad7-11e7-b3da-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429","deletedDate":1496767329,"scheduledPurgeDate":1504543329,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429/5f48282919e94940a0daa2a7c18a4670","attributes":{"enabled":true,"created":1496767326,"updated":1496767326,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:08 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [9657258e-ccf5-4d41-8c2c-5d43f567705a] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1558319a-4ad7-11e7-b28d-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429","deletedDate":1496767330,"scheduledPurgeDate":1504543330,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/5ca575f3cf9b4ff2b159286e89dbe0f4","attributes":{"enabled":true,"created":1496767324,"updated":1496767324,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:10 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [4b25f1a2-3c9e-4841-90cb-19760d03c34d] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1643c82c-4ad7-11e7-a926-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429","deletedDate":1496767331,"scheduledPurgeDate":1504543331,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/bb77f3b66ad44451a9c1623e8d6eb8cd","attributes":{"enabled":true,"created":1496767324,"updated":1496767324,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:11 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [64957efc-3a04-4d1e-ad5f-ca6fdac5d448] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [22bdd16c-4ad7-11e7-8631-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=2016-10-01 - response: - body: {string: '{"value":[{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429","deletedDate":1496767329,"scheduledPurgeDate":1504543329,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429","attributes":{"enabled":true,"created":1496767326,"updated":1496767326,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429","deletedDate":1496767328,"scheduledPurgeDate":1504543328,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429","attributes":{"enabled":true,"created":1496767326,"updated":1496767326,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429","deletedDate":1496767331,"scheduledPurgeDate":1504543331,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429","attributes":{"enabled":true,"created":1496767324,"updated":1496767324,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429","deletedDate":1496767330,"scheduledPurgeDate":1504543330,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429","attributes":{"enabled":true,"created":1496767324,"updated":1496767324,"recoverylevel":"Recoverable+Purgeable"}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1331'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:32 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5626bac1-a6cf-43da-bfae-4acb585f3344] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [2372936e-4ad7-11e7-b79a-5065f34efe31] - method: POST - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/5ca575f3cf9b4ff2b159286e89dbe0f4","attributes":{"enabled":true,"created":1496767324,"updated":1496767324,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['216'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:34 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [6a97f042-efa5-42f9-8c15-08cb0bd5efb9] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [240de886-4ad7-11e7-bc3a-5065f34efe31] - method: POST - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/bb77f3b66ad44451a9c1623e8d6eb8cd","attributes":{"enabled":true,"created":1496767324,"updated":1496767324,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['216'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:34 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [055612ba-f3b0-4ffe-a324-e67e4d441847] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [24c5749c-4ad7-11e7-929b-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 16:42:35 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [ee544e42-6391-4a78-b878-5c5369e37252] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [25b4eed2-4ad7-11e7-a721-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 16:42:36 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [f14b318d-e89a-413e-abb3-5a8338b83126] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [265caaf8-4ad7-11e7-9231-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=2016-10-01 - response: - body: {string: '{"value":[],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:42:39 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [d02be586-7eaa-4ffc-b862-4795bf40b269] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [26f38890-4ad7-11e7-a6f1-5065f34efe31] - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 16:42:39 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [3f1fc988-5dd4-4a3f-8618-df9035b0dd55] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1191'] - x-ms-request-id: [3f1fc988-5dd4-4a3f-8618-df9035b0dd55] - x-ms-routing-request-id: ['WESTUS:20170606T164239Z:3f1fc988-5dd4-4a3f-8618-df9035b0dd55'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [2d716d54-4ad7-11e7-8094-5065f34efe31] - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-f91a1429/purge?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 16:42:49 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0MTcxMzQ1OTEyNHwwNjhFQkRGQUM0M0Y0ODNCODYwQjk0MUQ4Q0Q4MEY0MA?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [a3d1e9a2-4908-4254-bad6-1e3467cb376e] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1196'] - x-ms-request-id: [a3d1e9a2-4908-4254-bad6-1e3467cb376e] - x-ms-routing-request-id: ['WESTUS:20170606T164250Z:a3d1e9a2-4908-4254-bad6-1e3467cb376e'] - status: {code: 202, message: Accepted} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4fba3362-4ad8-11e7-b769-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 16:50:57Z","status":"NotStarted"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['64'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:13 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [f1d662d5-54d3-4823-97c1-43b54e446203] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14998'] - x-ms-request-id: [f1d662d5-54d3-4823-97c1-43b54e446203] - x-ms-routing-request-id: ['WESTUS:20170606T165113Z:f1d662d5-54d3-4823-97c1-43b54e446203'] - status: {code: 202, message: Accepted} -- request: - body: '{"location": "westus", "properties": {"enableSoftDelete": true, "sku": - {"family": "A", "name": "premium"}, "enabledForDiskEncryption": true, "accessPolicies": - [{"permissions": {"secrets": ["get", "list", "set", "delete", "backup", "restore", - "recover", "purge"], "keys": ["encrypt", "decrypt", "wrapKey", "unwrapKey", - "sign", "verify", "get", "list", "create", "update", "import", "delete", "backup", - "restore", "recover", "purge"], "storage": ["get", "list", "delete", "set", - "update", "regeneratekey", "setsas", "listsas", "getsas", "deletesas"], "certificates": - ["get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers", - "listissuers", "setissuers", "deleteissuers", "manageissuers", "recover", "purge"]}, - "tenantId": "00000000-0000-0000-0000-000000000000", "objectId": "00000000-0000-0000-0000-000000000000"}], - "enabledForTemplateDeployment": true, "tenantId": "00000000-0000-0000-0000-000000000000", - "enabledForDeployment": true}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['964'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [595421f8-4ad8-11e7-a65c-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429","name":"vault-f91a1429","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"secrets":["get","list","set","delete","backup","restore","recover","purge"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"enableSoftDelete":true,"vaultUri":"https://vault-f91a1429.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:14 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1193'] - x-ms-correlation-request-id: [02fd9b22-428a-4730-ae21-ab27a34a8491] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1190'] - x-ms-request-id: [02fd9b22-428a-4730-ae21-ab27a34a8491] - x-ms-routing-request-id: ['WESTUS:20170606T165115Z:02fd9b22-428a-4730-ae21-ab27a34a8491'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4fba3362-4ad8-11e7-b769-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 16:50:57Z","status":"NotStarted"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['64'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:18 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [b59be727-5897-476c-8aeb-5b25356f5395] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14999'] - x-ms-request-id: [b59be727-5897-476c-8aeb-5b25356f5395] - x-ms-routing-request-id: ['WESTUS:20170606T165118Z:b59be727-5897-476c-8aeb-5b25356f5395'] - status: {code: 202, message: Accepted} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [4fba3362-4ad8-11e7-b769-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 16:50:57Z","lastActionDateTime":"2017-06-06 - 16:51:21Z","status":"Succeeded"}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:23 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['107'] - x-ms-correlation-request-id: [2e80ce02-1842-4e78-a0c9-dbed15bc6d3a] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14998'] - x-ms-request-id: [2e80ce02-1842-4e78-a0c9-dbed15bc6d3a] - x-ms-routing-request-id: ['WESTUS:20170606T165124Z:2e80ce02-1842-4e78-a0c9-dbed15bc6d3a'] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval0f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [608280e2-4ad8-11e7-a1cc-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval0f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/14587ba85dc447a39b31f6263b37a986","attributes":{"enabled":true,"created":1496767885,"updated":1496767885,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:25 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [26a5e272-bb04-4f1a-947d-325fda9414e7] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval1f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [6130f3a4-4ad8-11e7-8def-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval1f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/7d895920d7084ba291a1aaebb477775b","attributes":{"enabled":true,"created":1496767887,"updated":1496767887,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:27 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [7ab79f1a-258e-490c-9500-36377034cfcb] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval0f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [61afc4e8-4ad8-11e7-961a-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval0f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429/e9d4f88cc8924fffb0e5028a0c7a3ab6","attributes":{"enabled":true,"created":1496767888,"updated":1496767888,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:27 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [46a2a000-d56c-45d2-8f58-c652cdee6f54] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval1f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [623a7b14-4ad8-11e7-89ea-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval1f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429/3a79093d38bb48c69f8d6bfbf5367e18","attributes":{"enabled":true,"created":1496767888,"updated":1496767888,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:28 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [2c7108bd-9740-44c1-819b-c548c99eea84] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [62d5e900-4ad8-11e7-967c-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429","deletedDate":1496767889,"scheduledPurgeDate":1504543889,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429/e9d4f88cc8924fffb0e5028a0c7a3ab6","attributes":{"enabled":true,"created":1496767888,"updated":1496767888,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:30 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [09c0b5b6-bd98-4ab0-a223-b1f9491d9324] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [6371b5ee-4ad8-11e7-b562-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429","deletedDate":1496767890,"scheduledPurgeDate":1504543890,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/14587ba85dc447a39b31f6263b37a986","attributes":{"enabled":true,"created":1496767885,"updated":1496767885,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:29 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [327074d1-276b-4de7-bd3b-8f374ed59454] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [640d799e-4ad8-11e7-9382-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429","deletedDate":1496767892,"scheduledPurgeDate":1504543892,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429/3a79093d38bb48c69f8d6bfbf5367e18","attributes":{"enabled":true,"created":1496767888,"updated":1496767888,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:32 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [1e6414b2-b7e8-4888-9e8d-1e68ffda24cf] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [64b2444c-4ad8-11e7-99ee-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429","deletedDate":1496767892,"scheduledPurgeDate":1504543892,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/7d895920d7084ba291a1aaebb477775b","attributes":{"enabled":true,"created":1496767887,"updated":1496767887,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:32 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [808e7874-a77e-4506-b1bc-1649f36e2b37] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [713a116c-4ad8-11e7-8683-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=2016-10-01 - response: - body: {string: '{"value":[{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429","deletedDate":1496767889,"scheduledPurgeDate":1504543889,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429","attributes":{"enabled":true,"created":1496767888,"updated":1496767888,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429","deletedDate":1496767892,"scheduledPurgeDate":1504543892,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429","attributes":{"enabled":true,"created":1496767888,"updated":1496767888,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429","deletedDate":1496767890,"scheduledPurgeDate":1504543890,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429","attributes":{"enabled":true,"created":1496767885,"updated":1496767885,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429","deletedDate":1496767892,"scheduledPurgeDate":1504543892,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429","attributes":{"enabled":true,"created":1496767887,"updated":1496767887,"recoverylevel":"Recoverable+Purgeable"}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1331'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:53 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [cf9cd3b3-d93e-421b-a27b-04946045f309] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [71dfc35e-4ad8-11e7-a517-5065f34efe31] - method: POST - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/14587ba85dc447a39b31f6263b37a986","attributes":{"enabled":true,"created":1496767885,"updated":1496767885,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['216'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:54 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [7460493e-190d-417c-a5c2-fe02931dc12c] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [72bd6754-4ad8-11e7-8ae9-5065f34efe31] - method: POST - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/7d895920d7084ba291a1aaebb477775b","attributes":{"enabled":true,"created":1496767887,"updated":1496767887,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['216'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:51:56 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [13594e47-bfb5-4e4e-b2f3-d9e1a5e86603] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [7350e764-4ad8-11e7-8b96-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 16:51:56 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [3f4dc714-e662-4c0d-ae59-b3039c926ffd] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [73e90a9c-4ad8-11e7-bfa7-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 16:51:58 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5cbcea66-34c0-4899-802f-88f1571f339a] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [74aed226-4ad8-11e7-8598-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=2016-10-01 - response: - body: {string: '{"value":[],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 16:52:00 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [c0b736e2-c35b-4e33-96ca-6745995f6993] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [7544a39a-4ad8-11e7-a294-5065f34efe31] - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 16:51:59 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [b6b48a4d-04d7-49a4-b9f4-93f6fe22d1f3] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1189'] - x-ms-request-id: [b6b48a4d-04d7-49a4-b9f4-93f6fe22d1f3] - x-ms-routing-request-id: ['WESTUS:20170606T165200Z:b6b48a4d-04d7-49a4-b9f4-93f6fe22d1f3'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [7b9c29a8-4ad8-11e7-b9f5-5065f34efe31] - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-f91a1429/purge?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 16:52:10 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NzMxMzIwOTk0MXxENDMxQUIwMTZDNUE0OTk5QUVEMjA2QkM5RDA0MkFFNA?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [08360d4e-485b-42f6-96fc-10dd9f69d872] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1186'] - x-ms-request-id: [08360d4e-485b-42f6-96fc-10dd9f69d872] - x-ms-routing-request-id: ['WESTUS:20170606T165210Z:08360d4e-485b-42f6-96fc-10dd9f69d872'] - status: {code: 202, message: Accepted} -- request: - body: '{"location": "westus", "properties": {"tenantId": "00000000-0000-0000-0000-000000000000", - "enabledForDiskEncryption": true, "enableSoftDelete": true, "enabledForDeployment": - true, "sku": {"name": "premium", "family": "A"}, "accessPolicies": [{"tenantId": - "00000000-0000-0000-0000-000000000000", "permissions": {"storage": ["get", "list", - "delete", "set", "update", "regeneratekey", "setsas", "listsas", "getsas", "deletesas"], - "keys": ["encrypt", "decrypt", "wrapKey", "unwrapKey", "sign", "verify", "get", - "list", "create", "update", "import", "delete", "backup", "restore", "recover", - "purge"], "certificates": ["get", "list", "delete", "create", "import", "update", - "managecontacts", "getissuers", "listissuers", "setissuers", "deleteissuers", - "manageissuers", "recover", "purge"], "secrets": ["get", "list", "set", "delete", - "backup", "restore", "recover", "purge"]}, "objectId": "00000000-0000-0000-0000-000000000000"}], - "enabledForTemplateDeployment": true}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['964'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [d5fd2cc6-4add-11e7-acb7-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429","name":"vault-f91a1429","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"],"secrets":["get","list","set","delete","backup","restore","recover","purge"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"enableSoftDelete":true,"vaultUri":"https://vault-f91a1429.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:30 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1193'] - x-ms-correlation-request-id: [b17dbacd-e626-4850-8265-7c91012b7a1e] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1195'] - x-ms-request-id: [b17dbacd-e626-4850-8265-7c91012b7a1e] - x-ms-routing-request-id: ['WESTUS:20170606T173031Z:b17dbacd-e626-4850-8265-7c91012b7a1e'] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval0f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [dcf4e6a8-4add-11e7-a820-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval0f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/a6e30ca5fe284266a62d8ff064ec5ae7","attributes":{"enabled":true,"created":1496770242,"updated":1496770242,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:41 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [74dabd1d-68b3-4eb7-bdf1-fa06dcc00c8f] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval1f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ddc2e69c-4add-11e7-a7e8-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval1f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/e9db1592406d4d92a70465bb9d7b9e0a","attributes":{"enabled":true,"created":1496770243,"updated":1496770243,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:43 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [7b93c3df-92c3-42d8-ba81-437beb3044a6] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval0f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [de50f8ac-4add-11e7-8d8e-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval0f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429/8c76e48ac74a42c1a8cebfe742523e02","attributes":{"enabled":true,"created":1496770245,"updated":1496770245,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:44 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5f7c4e5f-900e-4fcb-9e59-e1d3a74d146e] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval1f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [dee27c4a-4add-11e7-8728-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval1f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429/e49719f932d445658705d04316cdd7c6","attributes":{"enabled":true,"created":1496770244,"updated":1496770244,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:45 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [46f7e0a3-7e22-4cf8-8f47-38455e3dd4ed] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [df62d7e8-4add-11e7-ba9a-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429","deletedDate":1496770245,"scheduledPurgeDate":1504546245,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429/8c76e48ac74a42c1a8cebfe742523e02","attributes":{"enabled":true,"created":1496770245,"updated":1496770245,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:45 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [36623358-5aef-4be0-bbb4-1e132ea11df5] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e0137152-4add-11e7-8023-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429","deletedDate":1496770247,"scheduledPurgeDate":1504546247,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/e9db1592406d4d92a70465bb9d7b9e0a","attributes":{"enabled":true,"created":1496770243,"updated":1496770243,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:47 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [dd10d9b9-af2a-40fb-a1cd-1e60e560651c] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e0b2d546-4add-11e7-b4f7-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429","deletedDate":1496770248,"scheduledPurgeDate":1504546248,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429/e49719f932d445658705d04316cdd7c6","attributes":{"enabled":true,"created":1496770244,"updated":1496770244,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:47 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [b21ba4b8-fbaa-4f86-9608-725a9e30b0f6] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [e1645d4a-4add-11e7-b3b0-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429","deletedDate":1496770249,"scheduledPurgeDate":1504546249,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/a6e30ca5fe284266a62d8ff064ec5ae7","attributes":{"enabled":true,"created":1496770242,"updated":1496770242,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:30:49 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [36981464-ca20-4333-a914-80d84918c89a] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ee0e0936-4add-11e7-80cc-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=2016-10-01 - response: - body: {string: '{"value":[{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429","deletedDate":1496770245,"scheduledPurgeDate":1504546245,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429","attributes":{"enabled":true,"created":1496770245,"updated":1496770245,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429","deletedDate":1496770248,"scheduledPurgeDate":1504546248,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429","attributes":{"enabled":true,"created":1496770244,"updated":1496770244,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429","deletedDate":1496770249,"scheduledPurgeDate":1504546249,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429","attributes":{"enabled":true,"created":1496770242,"updated":1496770242,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429","deletedDate":1496770247,"scheduledPurgeDate":1504546247,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429","attributes":{"enabled":true,"created":1496770243,"updated":1496770243,"recoverylevel":"Recoverable+Purgeable"}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1331'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:31:09 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [eb0f100a-e36b-4adb-b6c8-391b82286629] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ee8cc32c-4add-11e7-b54a-5065f34efe31] - method: POST - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/e9db1592406d4d92a70465bb9d7b9e0a","attributes":{"enabled":true,"created":1496770243,"updated":1496770243,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['216'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:31:11 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [c59849b0-3673-49bd-91f3-9848f12d9615] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ef422f54-4add-11e7-a972-5065f34efe31] - method: POST - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/a6e30ca5fe284266a62d8ff064ec5ae7","attributes":{"enabled":true,"created":1496770242,"updated":1496770242,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['216'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:31:11 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [602fe393-b00d-451a-85b4-cd71ff5c277c] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [efce72f4-4add-11e7-a4f1-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 17:31:12 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [7ba0a7b1-8519-4f60-b6e8-5af3d8657e4f] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f0681aa6-4add-11e7-a530-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 17:31:14 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [e774e0b8-193f-4415-8512-6e8573f6d09a] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f10cfd0c-4add-11e7-bf46-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=2016-10-01 - response: - body: {string: '{"value":[],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:31:14 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [d2c4b5e6-d20c-4551-99a4-2a7bb78d1980] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f2215f68-4add-11e7-ad9b-5065f34efe31] - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 17:31:16 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [75e22933-ffc8-4c1b-9ce1-e77aa1cb1fbd] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1194'] - x-ms-request-id: [75e22933-ffc8-4c1b-9ce1-e77aa1cb1fbd] - x-ms-routing-request-id: ['WESTUS2:20170606T173117Z:75e22933-ffc8-4c1b-9ce1-e77aa1cb1fbd'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [f8ca5766-4add-11e7-a684-5065f34efe31] - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-f91a1429/purge?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 17:31:28 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY3MDg5NTIyOTc5NnwxMjc2NzVBRjMzNTU0NzQ2OTZCRTYzQTVGNDdBOEJCRA?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [a5e95656-5876-4931-bc1f-6ae26dd724b2] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1197'] - x-ms-request-id: [a5e95656-5876-4931-bc1f-6ae26dd724b2] - x-ms-routing-request-id: ['WESTUS2:20170606T173128Z:a5e95656-5876-4931-bc1f-6ae26dd724b2'] - status: {code: 202, message: Accepted} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0c9ceb6e-4ae1-11e7-b2e5-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4NDEwNjU1NzQyOXxGQTUxOEU5ODQ2N0I0MTcwOUREMTE1RkJDQkE5MTYxQw?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 17:53:29Z","status":"NotStarted"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['64'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:53:34 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4NDEwNjU1NzQyOXxGQTUxOEU5ODQ2N0I0MTcwOUREMTE1RkJDQkE5MTYxQw?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [0d165b6e-3ffe-42fb-8360-9a24946d917e] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14999'] - x-ms-request-id: [0d165b6e-3ffe-42fb-8360-9a24946d917e] - x-ms-routing-request-id: ['WESTUS:20170606T175335Z:0d165b6e-3ffe-42fb-8360-9a24946d917e'] - status: {code: 202, message: Accepted} -- request: - body: '{"location": "westus", "properties": {"sku": {"name": "premium", "family": - "A"}, "tenantId": "00000000-0000-0000-0000-000000000000", "enabledForDiskEncryption": - true, "enabledForDeployment": true, "accessPolicies": [{"objectId": "00000000-0000-0000-0000-000000000000", - "tenantId": "00000000-0000-0000-0000-000000000000", "permissions": {"secrets": - ["get", "list", "set", "delete", "backup", "restore", "recover", "purge"], "certificates": - ["get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers", - "listissuers", "setissuers", "deleteissuers", "manageissuers", "recover", "purge"], - "storage": ["get", "list", "delete", "set", "update", "regeneratekey", "setsas", - "listsas", "getsas", "deletesas"], "keys": ["encrypt", "decrypt", "wrapKey", - "unwrapKey", "sign", "verify", "get", "list", "create", "update", "import", - "delete", "backup", "restore", "recover", "purge"]}}], "enabledForTemplateDeployment": - true, "enableSoftDelete": true}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['964'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0f863c18-4ae1-11e7-8419-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429","name":"vault-f91a1429","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"secrets":["get","list","set","delete","backup","restore","recover","purge"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"],"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"enableSoftDelete":true,"vaultUri":"https://vault-f91a1429.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:53:34 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1193'] - x-ms-correlation-request-id: [746df69e-1615-4bd2-a483-cb225a123011] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1197'] - x-ms-request-id: [746df69e-1615-4bd2-a483-cb225a123011] - x-ms-routing-request-id: ['WESTUS:20170606T175335Z:746df69e-1615-4bd2-a483-cb225a123011'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0c9ceb6e-4ae1-11e7-b2e5-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4NDEwNjU1NzQyOXxGQTUxOEU5ODQ2N0I0MTcwOUREMTE1RkJDQkE5MTYxQw?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 17:53:29Z","status":"NotStarted"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['64'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:53:40 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4NDEwNjU1NzQyOXxGQTUxOEU5ODQ2N0I0MTcwOUREMTE1RkJDQkE5MTYxQw?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [4302d04d-7b57-4147-8f9c-9e3f52edd4e1] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14999'] - x-ms-request-id: [4302d04d-7b57-4147-8f9c-9e3f52edd4e1] - x-ms-routing-request-id: ['WESTUS:20170606T175341Z:4302d04d-7b57-4147-8f9c-9e3f52edd4e1'] - status: {code: 202, message: Accepted} -- request: - body: '{"value": "secval0f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [163876c6-4ae1-11e7-8a13-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval0f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/bfc9b7f191b442de869938478dd1cc97","attributes":{"enabled":true,"created":1496771626,"updated":1496771626,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:53:46 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [b89af1cb-b6d7-4b58-a19a-27a16a8cd4de] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval1f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [16e70eee-4ae1-11e7-87a3-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval1f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/ae39d9d7e47b40b1ba61d9cf69a00d59","attributes":{"enabled":true,"created":1496771627,"updated":1496771627,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:53:46 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [4a8010d9-5922-46d7-bb96-f145f172c537] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval0f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [176c01b6-4ae1-11e7-a42c-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval0f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429/45e0d19b769a413e812a7ba51dee30c8","attributes":{"enabled":true,"created":1496771628,"updated":1496771628,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:53:47 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [11fe0db4-1694-44c1-b02d-9028887d04e7] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval1f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [17dc39b8-4ae1-11e7-8e49-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval1f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429/0a290cae4980464186057c1575382252","attributes":{"enabled":true,"created":1496771629,"updated":1496771629,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:53:49 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [0728db7d-29fe-4592-84b0-70380d50e9ac] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [18582424-4ae1-11e7-839f-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429","deletedDate":1496771630,"scheduledPurgeDate":1504547630,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429/45e0d19b769a413e812a7ba51dee30c8","attributes":{"enabled":true,"created":1496771628,"updated":1496771628,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:53:49 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [12896296-bbff-42cf-b4db-2feab4076aef] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [18fb12da-4ae1-11e7-9eac-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429","deletedDate":1496771631,"scheduledPurgeDate":1504547631,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/bfc9b7f191b442de869938478dd1cc97","attributes":{"enabled":true,"created":1496771626,"updated":1496771626,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:53:50 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [994b39c3-33be-442d-aa2e-360fa754f755] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [19b5e3b8-4ae1-11e7-b67b-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429","deletedDate":1496771632,"scheduledPurgeDate":1504547632,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429/0a290cae4980464186057c1575382252","attributes":{"enabled":true,"created":1496771629,"updated":1496771629,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:53:53 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [2e98ba06-fcb1-41f9-88a4-f814f722f881] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1a54ee62-4ae1-11e7-93f7-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429","deletedDate":1496771633,"scheduledPurgeDate":1504547633,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/ae39d9d7e47b40b1ba61d9cf69a00d59","attributes":{"enabled":true,"created":1496771627,"updated":1496771627,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:53:53 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [eec15bd9-f1a5-4ec7-b354-d78049a9f24f] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [26d0739a-4ae1-11e7-9969-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=2016-10-01 - response: - body: {string: '{"value":[{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429","deletedDate":1496771630,"scheduledPurgeDate":1504547630,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429","attributes":{"enabled":true,"created":1496771628,"updated":1496771628,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429","deletedDate":1496771632,"scheduledPurgeDate":1504547632,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429","attributes":{"enabled":true,"created":1496771629,"updated":1496771629,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429","deletedDate":1496771631,"scheduledPurgeDate":1504547631,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429","attributes":{"enabled":true,"created":1496771626,"updated":1496771626,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429","deletedDate":1496771633,"scheduledPurgeDate":1504547633,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429","attributes":{"enabled":true,"created":1496771627,"updated":1496771627,"recoverylevel":"Recoverable+Purgeable"}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1331'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:54:14 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [d5c95bc3-c15a-4b2b-bfee-129683815d97] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [275cb94c-4ae1-11e7-a0ba-5065f34efe31] - method: POST - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/bfc9b7f191b442de869938478dd1cc97","attributes":{"enabled":true,"created":1496771626,"updated":1496771626,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['216'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:54:15 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [cf9ba044-0b97-4fbc-bcf1-5671b6ed3823] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [27f7eb4a-4ae1-11e7-9ed1-5065f34efe31] - method: POST - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/ae39d9d7e47b40b1ba61d9cf69a00d59","attributes":{"enabled":true,"created":1496771627,"updated":1496771627,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['216'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:54:17 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [d61a471a-76d5-476d-8272-80d26fe1dd54] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [289478b0-4ae1-11e7-afad-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 17:54:17 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [6630aa41-e298-410a-9673-b106ed020855] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [291ef868-4ae1-11e7-8b03-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 17:54:18 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [68860338-7415-460a-a319-b0c8d86d1d18] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [29e327f8-4ae1-11e7-b3a6-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=2016-10-01 - response: - body: {string: '{"value":[],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 17:54:19 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [4ad5ac7e-4d79-447d-8abe-df85861582cd] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [2b2fe962-4ae1-11e7-b4d7-5065f34efe31] - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 17:54:21 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [4b134e1e-24d6-441a-b433-bffc236659a7] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] - x-ms-request-id: [4b134e1e-24d6-441a-b433-bffc236659a7] - x-ms-routing-request-id: ['WESTUS2:20170606T175422Z:4b134e1e-24d6-441a-b433-bffc236659a7'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [31d72b2e-4ae1-11e7-97e3-5065f34efe31] - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-f91a1429/purge?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 17:54:32 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4NDczODk5MDg5NHw1MzQyOEZBQjI5OUU0QkEyOTlERDM2MjEyOUMyODM1Nw?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [4795a55b-9590-4ca3-bb72-f3a6127ab7e2] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] - x-ms-request-id: [4795a55b-9590-4ca3-bb72-f3a6127ab7e2] - x-ms-routing-request-id: ['WESTUS2:20170606T175432Z:4795a55b-9590-4ca3-bb72-f3a6127ab7e2'] - status: {code: 202, message: Accepted} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ffc5cbda-4ae1-11e7-93e4-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4ODE4NTQyNTE3N3w0M0FCQjk5RkVBRTM0RjVGQTQxQzJEMDI5NzM2NUJCOA?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 18:00:17Z","status":"NotStarted"}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['64'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:00:23 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4ODE4NTQyNTE3N3w0M0FCQjk5RkVBRTM0RjVGQTQxQzJEMDI5NzM2NUJCOA?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [06430dc6-abdf-4d03-a5cb-a5fc8a9acd99] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14999'] - x-ms-request-id: [06430dc6-abdf-4d03-a5cb-a5fc8a9acd99] - x-ms-routing-request-id: ['WESTUS:20170606T180023Z:06430dc6-abdf-4d03-a5cb-a5fc8a9acd99'] - status: {code: 202, message: Accepted} -- request: - body: '{"location": "westus", "properties": {"sku": {"family": "A", "name": "premium"}, - "enabledForDiskEncryption": true, "enableSoftDelete": true, "tenantId": "00000000-0000-0000-0000-000000000000", - "accessPolicies": [{"tenantId": "00000000-0000-0000-0000-000000000000", "objectId": - "00000000-0000-0000-0000-000000000000", "permissions": {"keys": ["encrypt", - "decrypt", "wrapKey", "unwrapKey", "sign", "verify", "get", "list", "create", - "update", "import", "delete", "backup", "restore", "recover", "purge"], "storage": - ["get", "list", "delete", "set", "update", "regeneratekey", "setsas", "listsas", - "getsas", "deletesas"], "certificates": ["get", "list", "delete", "create", - "import", "update", "managecontacts", "getissuers", "listissuers", "setissuers", - "deleteissuers", "manageissuers", "recover", "purge"], "secrets": ["get", "list", - "set", "delete", "backup", "restore", "recover", "purge"]}}], "enabledForDeployment": - true, "enabledForTemplateDeployment": true}}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['964'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [02ff444a-4ae2-11e7-901b-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429","name":"vault-f91a1429","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"premium"},"tenantId":"00000000-0000-0000-0000-000000000000","accessPolicies":[{"tenantId":"00000000-0000-0000-0000-000000000000","objectId":"00000000-0000-0000-0000-000000000000","permissions":{"keys":["encrypt","decrypt","wrapKey","unwrapKey","sign","verify","get","list","create","update","import","delete","backup","restore","recover","purge"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover","purge"],"secrets":["get","list","set","delete","backup","restore","recover","purge"]}}],"enabledForDeployment":true,"enabledForDiskEncryption":true,"enabledForTemplateDeployment":true,"enableSoftDelete":true,"vaultUri":"https://vault-f91a1429.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:00:24 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['1193'] - x-ms-correlation-request-id: [e363c99c-5884-4578-ac59-92a33f06d46b] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1198'] - x-ms-request-id: [e363c99c-5884-4578-ac59-92a33f06d46b] - x-ms-routing-request-id: ['WESTUS:20170606T180025Z:e363c99c-5884-4578-ac59-92a33f06d46b'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [ffc5cbda-4ae1-11e7-93e4-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4ODE4NTQyNTE3N3w0M0FCQjk5RkVBRTM0RjVGQTQxQzJEMDI5NzM2NUJCOA?api-version=2016-10-01 - response: - body: {string: '{"createdDateTime":"2017-06-06 18:00:17Z","lastActionDateTime":"2017-06-06 - 18:00:25Z","status":"Succeeded"}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:00:29 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['107'] - x-ms-correlation-request-id: [56b2d929-0b76-4a88-a459-a596fa2bd901] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-reads: ['14999'] - x-ms-request-id: [56b2d929-0b76-4a88-a459-a596fa2bd901] - x-ms-routing-request-id: ['WESTUS:20170606T180029Z:56b2d929-0b76-4a88-a459-a596fa2bd901'] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval0f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0a2f0530-4ae2-11e7-99e4-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval0f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/9e737724216b453a8c52d09d904617ea","attributes":{"enabled":true,"created":1496772036,"updated":1496772036,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:00:36 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [0ed29899-2dcd-4246-90a9-830e49a7f447] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval1f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0b01704c-4ae2-11e7-b7ff-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval1f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/f23ba9d16fd2454ebdaa28a2140a4d45","attributes":{"enabled":true,"created":1496772037,"updated":1496772037,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:00:37 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [8cce4bb3-7f1a-48cb-8a34-d8616608e429] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval0f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0ba3180a-4ae2-11e7-a173-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval0f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429/e74297c2aafc4a4e850cf2ef85a8fec9","attributes":{"enabled":true,"created":1496772038,"updated":1496772038,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:00:38 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [6be0c100-8fd3-47c6-8244-07bd36c175cf] - status: {code: 200, message: OK} -- request: - body: '{"value": "secval1f91a1429"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0c38f25e-4ae2-11e7-a83f-5065f34efe31] - method: PUT - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"value":"secval1f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429/daf07153661c40209880dd62d598aca6","attributes":{"enabled":true,"created":1496772039,"updated":1496772039,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:00:39 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [f3259894-79d3-4cff-b87b-68b561269c11] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0cb4cf1c-4ae2-11e7-9844-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429","deletedDate":1496772038,"scheduledPurgeDate":1504548038,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429/daf07153661c40209880dd62d598aca6","attributes":{"enabled":true,"created":1496772039,"updated":1496772039,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:00:38 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [04f628b1-1e1c-4ecc-9337-c4e87f419731] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0d414952-4ae2-11e7-a48a-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429","deletedDate":1496772040,"scheduledPurgeDate":1504548040,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429/e74297c2aafc4a4e850cf2ef85a8fec9","attributes":{"enabled":true,"created":1496772038,"updated":1496772038,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:00:40 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [4d23ef58-fcd0-48bb-961e-e2c55fc2d667] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0ddf0b98-4ae2-11e7-b613-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429","deletedDate":1496772041,"scheduledPurgeDate":1504548041,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/9e737724216b453a8c52d09d904617ea","attributes":{"enabled":true,"created":1496772036,"updated":1496772036,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:00:40 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [d8b8e2ff-95d9-404a-8ed8-f657004ae239] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [0e6ca998-4ae2-11e7-8a0e-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=2016-10-01 - response: - body: {string: '{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429","deletedDate":1496772043,"scheduledPurgeDate":1504548043,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/f23ba9d16fd2454ebdaa28a2140a4d45","attributes":{"enabled":true,"created":1496772037,"updated":1496772037,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['358'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:00:42 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [3fefa9d2-f420-4430-afb1-5482ab2d583a] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1af6f0ba-4ae2-11e7-bfc2-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=2016-10-01 - response: - body: {string: '{"value":[{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429","deletedDate":1496772040,"scheduledPurgeDate":1504548040,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429","attributes":{"enabled":true,"created":1496772038,"updated":1496772038,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429","deletedDate":1496772038,"scheduledPurgeDate":1504548038,"id":"https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429","attributes":{"enabled":true,"created":1496772039,"updated":1496772039,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429","deletedDate":1496772041,"scheduledPurgeDate":1504548041,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429","attributes":{"enabled":true,"created":1496772036,"updated":1496772036,"recoverylevel":"Recoverable+Purgeable"}},{"recoveryId":"https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429","deletedDate":1496772043,"scheduledPurgeDate":1504548043,"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429","attributes":{"enabled":true,"created":1496772037,"updated":1496772037,"recoverylevel":"Recoverable+Purgeable"}}],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['1331'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:01:04 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [e3d7cfd3-8898-448a-93c2-faa12fce26bc] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1b92841a-4ae2-11e7-a98c-5065f34efe31] - method: POST - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/9e737724216b453a8c52d09d904617ea","attributes":{"enabled":true,"created":1496772036,"updated":1496772036,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['216'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:01:05 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [3598503e-bc93-4939-8c72-0c404c495d6e] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1c3e48dc-4ae2-11e7-9fe5-5065f34efe31] - method: POST - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429/recover?api-version=2016-10-01 - response: - body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/f23ba9d16fd2454ebdaa28a2140a4d45","attributes":{"enabled":true,"created":1496772037,"updated":1496772037,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['216'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:01:06 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [5d109009-fffb-4cbf-98e1-05da1d66d49f] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1cef75a4-4ae2-11e7-980e-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 18:01:06 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [117b92c5-f130-4d7b-998e-5904816f3d19] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [1da121e2-4ae2-11e7-acb5-5065f34efe31] - method: DELETE - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Date: ['Tue, 06 Jun 2017 18:01:09 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [e26bad66-5bb8-4f44-bca8-d04df2430adb] - status: {code: 204, message: No Content} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [2a2ba84c-4ae2-11e7-b4fe-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=2016-10-01 - response: - body: {string: '{"value":[],"nextLink":null}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['28'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:01:29 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [c7eebed9-c5b4-4c73-883e-8fb01c287e0b] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [2ab9a77e-4ae2-11e7-8a51-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/?api-version=2016-10-01 - response: - body: {string: '{"value":"secval0f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/9e737724216b453a8c52d09d904617ea","attributes":{"enabled":true,"created":1496772036,"updated":1496772036,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:01:29 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [b7f9b2b0-b48f-4e48-a9e8-502cae8a9d4f] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultclient/0.3.4 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [2b45c59a-4ae2-11e7-a33d-5065f34efe31] - method: GET - uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/?api-version=2016-10-01 - response: - body: {string: '{"value":"secval1f91a1429","id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/f23ba9d16fd2454ebdaa28a2140a4d45","attributes":{"enabled":true,"created":1496772037,"updated":1496772037,"recoverylevel":"Recoverable+Purgeable"}}'} - headers: - Cache-Control: [no-cache] - Content-Length: ['242'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 06 Jun 2017 18:01:30 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000;includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-keyvault-region: [westus] - x-ms-keyvault-service-version: [1.0.0.813] - x-ms-request-id: [0d9f9d67-7ea4-403d-b97a-4a07b1469396] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [2bd2fde6-4ae2-11e7-81cd-5065f34efe31] - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_key_vault_data_test_secret_recover_and_purgef91a1429/providers/Microsoft.KeyVault/vaults/vault-f91a1429?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 18:01:31 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [bcc448f5-39c0-4e76-8bd6-162580a2a2fe] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1198'] - x-ms-request-id: [bcc448f5-39c0-4e76-8bd6-162580a2a2fe] - x-ms-routing-request-id: ['WESTUS:20170606T180132Z:bcc448f5-39c0-4e76-8bd6-162580a2a2fe'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.17.3 msrest/0.4.8 - msrest_azure/0.4.8 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [323358b4-4ae2-11e7-acb7-5065f34efe31] - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-f91a1429/purge?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Tue, 06 Jun 2017 18:01:42 GMT'] - Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4OTAzMTA4ODU0Mnw2MTdBQTIzREFDQjY0NUZDQkRBQjRFRDcwRjk4QjYzNg?api-version=2016-10-01'] - Pragma: [no-cache] - Retry-After: ['0'] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [6404bcaa-81b2-4cec-8e32-4037f26475ac] - x-ms-keyvault-service-version: [1.0.0.164] - x-ms-ratelimit-remaining-subscription-writes: ['1198'] - x-ms-request-id: [6404bcaa-81b2-4cec-8e32-4037f26475ac] - x-ms-routing-request-id: ['WESTUS:20170606T180142Z:6404bcaa-81b2-4cec-8e32-4037f26475ac'] - status: {code: 202, message: Accepted} -version: 1 diff --git a/azure-mgmt/tests/recordings/test_mgmt_keyvault.test_vaults_operations.yaml b/azure-mgmt/tests/recordings/test_mgmt_keyvault.test_vaults_operations.yaml deleted file mode 100644 index 2baf89075511..000000000000 --- a/azure-mgmt/tests/recordings/test_mgmt_keyvault.test_vaults_operations.yaml +++ /dev/null @@ -1,206 +0,0 @@ -interactions: -- request: - body: '{"properties": {"sku": {"name": "standard", "family": "A"}, "accessPolicies": - [], "tenantId": "6819f86e-5d41-47b0-9297-334f33d7922d"}, "location": "westus"}' - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['156'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.14.2 msrest/0.4.8 - msrest_azure/0.4.7 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [7a19e2e2-40ce-11e7-a5a5-5065f34efe31] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults/pykv68b91138?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults/pykv68b91138","name":"pykv68b91138","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"6819f86e-5d41-47b0-9297-334f33d7922d","accessPolicies":[],"enabledForDeployment":false,"vaultUri":"https://pykv68b91138.vault.azure.net"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 24 May 2017 22:15:21 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['464'] - x-ms-correlation-request-id: [21e6fbdc-07cd-41b0-8161-77ffe428526c] - x-ms-keyvault-service-version: [1.0.0.157] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] - x-ms-request-id: [21e6fbdc-07cd-41b0-8161-77ffe428526c] - x-ms-routing-request-id: ['WESTUS:20170524T221522Z:21e6fbdc-07cd-41b0-8161-77ffe428526c'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.14.2 msrest/0.4.8 - msrest_azure/0.4.7 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [7aacb802-40ce-11e7-8cea-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults/pykv68b91138?api-version=2016-10-01 - response: - body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults/pykv68b91138","name":"pykv68b91138","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"6819f86e-5d41-47b0-9297-334f33d7922d","accessPolicies":[],"enabledForDeployment":false,"vaultUri":"https://pykv68b91138.vault.azure.net/"}}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 24 May 2017 22:15:21 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['465'] - x-ms-correlation-request-id: [2e978826-bf75-40dd-b01e-a702843129c6] - x-ms-keyvault-service-version: [1.0.0.157] - x-ms-ratelimit-remaining-subscription-reads: ['14998'] - x-ms-request-id: [2e978826-bf75-40dd-b01e-a702843129c6] - x-ms-routing-request-id: ['WESTUS:20170524T221522Z:2e978826-bf75-40dd-b01e-a702843129c6'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.14.2 msrest/0.4.8 - msrest_azure/0.4.7 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [7afdfb88-40ce-11e7-b131-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults?api-version=2016-10-01 - response: - body: {string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults/pykv68b91138","name":"pykv68b91138","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"6819f86e-5d41-47b0-9297-334f33d7922d","accessPolicies":[],"enabledForDeployment":false,"vaultUri":"https://pykv68b91138.vault.azure.net/"}}],"nextLink":"https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults?api-version=2016-10-01&$skiptoken=cHlrdjY4YjkxMTM4"}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 24 May 2017 22:15:22 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['722'] - x-ms-correlation-request-id: [ce8e1de6-e500-4599-8b8a-53e03164d7a5] - x-ms-keyvault-service-version: [1.0.0.157] - x-ms-ratelimit-remaining-subscription-reads: ['14999'] - x-ms-request-id: [ce8e1de6-e500-4599-8b8a-53e03164d7a5] - x-ms-routing-request-id: ['WESTUS:20170524T221523Z:ce8e1de6-e500-4599-8b8a-53e03164d7a5'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.14.2 msrest/0.4.8 - msrest_azure/0.4.7 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [7b39aa64-40ce-11e7-a799-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults?api-version=2016-10-01&$skiptoken=cHlrdjY4YjkxMTM4 - response: - body: {string: '{"value":[]}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 24 May 2017 22:15:22 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - content-length: ['12'] - x-ms-correlation-request-id: [1a528ac7-f765-41dc-9828-fd0ff4e839dd] - x-ms-keyvault-service-version: [1.0.0.157] - x-ms-ratelimit-remaining-subscription-reads: ['14997'] - x-ms-request-id: [1a528ac7-f765-41dc-9828-fd0ff4e839dd] - x-ms-routing-request-id: ['WESTUS:20170524T221523Z:1a528ac7-f765-41dc-9828-fd0ff4e839dd'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.14.2 msrest/0.4.8 - msrest_azure/0.4.7 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [7b68121c-40ce-11e7-b656-5065f34efe31] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?api-version=2015-11-01&$filter=resourceType%20eq%20%27Microsoft.KeyVault%2Fvaults%27 - response: - body: {string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ssrg/providers/Microsoft.KeyVault/vaults/cli-vault","name":"cli-vault","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults/pykv68b91138","name":"pykv68b91138","type":"Microsoft.KeyVault/vaults","location":"westus","tags":{}}]}'} - headers: - Cache-Control: [no-cache] - Content-Type: [application/json; charset=utf-8] - Date: ['Wed, 24 May 2017 22:15:22 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - Vary: [Accept-Encoding] - content-length: ['484'] - x-ms-correlation-request-id: [144bce90-c466-4cbc-a777-4ff54eedb777] - x-ms-ratelimit-remaining-subscription-reads: ['14996'] - x-ms-request-id: [144bce90-c466-4cbc-a777-4ff54eedb777] - x-ms-routing-request-id: ['WESTUS:20170524T221523Z:144bce90-c466-4cbc-a777-4ff54eedb777'] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['0'] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Windows-10-10.0.15063-SP0) requests/2.14.2 msrest/0.4.8 - msrest_azure/0.4.7 keyvaultmanagementclient/0.32.0 Azure-SDK-For-Python] - accept-language: [en-US] - x-ms-client-request-id: [7b984ca4-40ce-11e7-9cfa-5065f34efe31] - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults/pykv68b91138?api-version=2016-10-01 - response: - body: {string: ''} - headers: - Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Wed, 24 May 2017 22:15:24 GMT'] - Expires: ['-1'] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-AspNet-Version: [4.0.30319] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - x-ms-correlation-request-id: [605373a9-6b2f-4f97-be4e-4ffbc202bccf] - x-ms-keyvault-service-version: [1.0.0.157] - x-ms-ratelimit-remaining-subscription-writes: ['1198'] - x-ms-request-id: [605373a9-6b2f-4f97-be4e-4ffbc202bccf] - x-ms-routing-request-id: ['WESTUS:20170524T221524Z:605373a9-6b2f-4f97-be4e-4ffbc202bccf'] - status: {code: 200, message: OK} -version: 1 diff --git a/azure-mgmt/tests/test_key_vault_data.py b/azure-mgmt/tests/test_key_vault_data.py deleted file mode 100644 index 4b7d7325dda3..000000000000 --- a/azure-mgmt/tests/test_key_vault_data.py +++ /dev/null @@ -1,1253 +0,0 @@ -# coding: utf-8 - -#------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -#-------------------------------------------------------------------------- -import binascii -import codecs -import copy -import string - -from dateutil import parser as date_parse -import hashlib -import os -import time -import unittest -import random -try: - from unittest.mock import MagicMock -except ImportError: - from mock import MagicMock - -from azure.keyvault import KeyVaultId -from azure.keyvault import HttpBearerChallenge -from azure.keyvault import HttpBearerChallengeCache -from azure.keyvault.generated.models import \ - (CertificatePolicy, KeyProperties, SecretProperties, IssuerParameters, - X509CertificateProperties, IssuerBundle, IssuerCredentials, OrganizationDetails, - AdministratorDetails, Contact, KeyVaultError, SubjectAlternativeNames, JsonWebKey) - -from testutils.common_recordingtestcase import record -from tests.keyvault_testcase import HttpStatusCode, AzureKeyVaultTestCase, privatevault, sharedvault - - -class KeyVaultCustomLayerTest(unittest.TestCase): - - def _get_expected(self, collection, vault, name, version=None): - return { - 'vault': 'https://{}.vault.azure.net'.format(vault), - 'collection': collection, - 'name': name, - 'version': version or KeyVaultId.version_none - } - - def test_create_object_id(self): - # success scenarios - expected = self._get_expected('keys', 'myvault', 'mykey') - res = KeyVaultId.create_object_id('keys', 'https://myvault.vault.azure.net', ' mykey', None) - self.assertEqual(res.__dict__, expected) - - res = KeyVaultId.create_object_id('keys', 'https://myvault.vault.azure.net', ' mykey', ' ') - self.assertEqual(res.__dict__, expected) - - expected = self._get_expected('keys', 'myvault', 'mykey', 'abc123') - res = KeyVaultId.create_object_id(' keys ', 'https://myvault.vault.azure.net', ' mykey ', ' abc123 ') - self.assertEqual(res.__dict__, expected) - - # failure scenarios - with self.assertRaises(TypeError): - KeyVaultId.create_object_id('keys', 'https://myvault.vault.azure.net', ['stuff'], '') - with self.assertRaises(ValueError): - KeyVaultId.create_object_id('keys', 'https://myvault.vault.azure.net', ' ', '') - with self.assertRaises(ValueError): - KeyVaultId.create_object_id('keys', 'myvault.vault.azure.net', 'mykey', '') - - def test_parse_object_id(self): - # success scenarios - expected = self._get_expected('keys', 'myvault', 'mykey', 'abc123') - res = KeyVaultId.parse_object_id('keys', 'https://myvault.vault.azure.net/keys/mykey/abc123') - self.assertEqual(res.__dict__, expected) - - expected = self._get_expected('keys', 'myvault', 'mykey') - res = KeyVaultId.parse_object_id('keys', 'https://myvault.vault.azure.net/keys/mykey') - self.assertEqual(res.__dict__, expected) - - # failure scenarios - with self.assertRaises(ValueError): - KeyVaultId.parse_object_id('secret', 'https://myvault.vault.azure.net/keys/mykey/abc123') - with self.assertRaises(ValueError): - KeyVaultId.parse_object_id('keys', 'https://myvault.vault.azure.net/keys/mykey/abc123/extra') - with self.assertRaises(ValueError): - KeyVaultId.parse_object_id('keys', 'https://myvault.vault.azure.net') - - def test_create_key_id(self): - expected = self._get_expected('keys', 'myvault', 'mykey') - res = KeyVaultId.create_key_id('https://myvault.vault.azure.net', ' mykey', None) - self.assertEqual(res.__dict__, expected) - - expected = self._get_expected('keys', 'myvault', 'mykey', 'abc123') - res = KeyVaultId.create_key_id('https://myvault.vault.azure.net', ' mykey ', ' abc123 ') - self.assertEqual(res.__dict__, expected) - - def test_parse_key_id(self): - expected = self._get_expected('keys', 'myvault', 'mykey', 'abc123') - res = KeyVaultId.parse_key_id('https://myvault.vault.azure.net/keys/mykey/abc123') - self.assertEqual(res.__dict__, expected) - - expected = self._get_expected('keys', 'myvault', 'mykey') - res = KeyVaultId.parse_key_id('https://myvault.vault.azure.net/keys/mykey') - self.assertEqual(res.__dict__, expected) - - def test_create_secret_id(self): - expected = self._get_expected('secrets', 'myvault', 'mysecret') - res = KeyVaultId.create_secret_id('https://myvault.vault.azure.net', ' mysecret', None) - self.assertEqual(res.__dict__, expected) - - expected = self._get_expected('secrets', 'myvault', 'mysecret', 'abc123') - res = KeyVaultId.create_secret_id('https://myvault.vault.azure.net', ' mysecret ', ' abc123 ') - self.assertEqual(res.__dict__, expected) - - def test_parse_secret_id(self): - expected = self._get_expected('secrets', 'myvault', 'mysecret', 'abc123') - res = KeyVaultId.parse_secret_id('https://myvault.vault.azure.net/secrets/mysecret/abc123') - self.assertEqual(res.__dict__, expected) - - expected = self._get_expected('secrets', 'myvault', 'mysecret') - res = KeyVaultId.parse_secret_id('https://myvault.vault.azure.net/secrets/mysecret') - self.assertEqual(res.__dict__, expected) - - def test_create_certificate_id(self): - expected = self._get_expected('certificates', 'myvault', 'mycert') - res = KeyVaultId.create_certificate_id('https://myvault.vault.azure.net', ' mycert', None) - self.assertEqual(res.__dict__, expected) - - expected = self._get_expected('certificates', 'myvault', 'mycert', 'abc123') - res = KeyVaultId.create_certificate_id('https://myvault.vault.azure.net', 'mycert', ' abc123') - self.assertEqual(res.__dict__, expected) - - def test_parse_certificate_id(self): - expected = self._get_expected('certificates', 'myvault', 'mycert', 'abc123') - res = KeyVaultId.parse_certificate_id('https://myvault.vault.azure.net/certificates/mycert/abc123') - self.assertEqual(res.__dict__, expected) - - expected = self._get_expected('certificates', 'myvault', 'mycert') - res = KeyVaultId.parse_certificate_id('https://myvault.vault.azure.net/certificates/mycert') - self.assertEqual(res.__dict__, expected) - - def test_create_certificate_operation_id(self): - expected = self._get_expected('certificates', 'myvault', 'mycert', 'pending') - res = KeyVaultId.create_certificate_operation_id('https://myvault.vault.azure.net', ' mycert') - self.assertEqual(res.__dict__, expected) - - def test_parse_certificate_operation_id(self): - expected = self._get_expected('certificates', 'myvault', 'mycert', 'pending') - res = KeyVaultId.parse_certificate_operation_id('https://myvault.vault.azure.net/certificates/mycert/pending') - self.assertEqual(res.__dict__, expected) - - def test_create_certificate_issuer_id(self): - expected = self._get_expected('certificates', 'myvault', 'myissuer') - res = KeyVaultId.create_certificate_issuer_id('https://myvault.vault.azure.net', 'myissuer') - self.assertEqual(res.__dict__, expected) - - def test_parse_certificate_issuer_id(self): - expected = self._get_expected('certificates', 'myvault', 'myissuer') - res = KeyVaultId.parse_certificate_issuer_id('https://myvault.vault.azure.net/certificates/issuers/myissuer') - self.assertEqual(res.__dict__, expected) - - def test_bearer_challenge_cache(self): - test_challenges = [] - HttpBearerChallengeCache.clear() - for x in range(0, 3): - challenge = MagicMock() - challenge.source_authority = 'mytest{}.url.com'.format(x) - url = 'https://mytest{}.url.com'.format(x) - test_challenges.append({ - 'url': url, - 'challenge': challenge - }) - HttpBearerChallengeCache.set_challenge_for_url(url, challenge) - - self.assertEqual(len(HttpBearerChallengeCache._cache), 3) - - cached_challenge = HttpBearerChallengeCache.get_challenge_for_url(test_challenges[1]['url']) - self.assertTrue(cached_challenge.source_authority in test_challenges[1]['url']) - - # test remove - HttpBearerChallengeCache.remove_challenge_for_url(test_challenges[0]['url']) - self.assertIsNone(HttpBearerChallengeCache.get_challenge_for_url(test_challenges[0]['url'])) - - # test clear - self.assertEqual(len(HttpBearerChallengeCache._cache), 2) - HttpBearerChallengeCache.clear() - self.assertEqual(len(HttpBearerChallengeCache._cache), 0) - - with self.assertRaises(ValueError): - HttpBearerChallengeCache.set_challenge_for_url('https://diffurl.com', test_challenges[0]['challenge']) - - def test_bearer_challenge(self): - mock_bearer_challenge = ' Bearer authorization="https://login.windows.net/mock-id", resource="https://vault.azure.net"' - - self.assertTrue(HttpBearerChallenge.is_bearer_challenge(mock_bearer_challenge)) - self.assertFalse(HttpBearerChallenge.is_bearer_challenge('Some other string')) - - with self.assertRaises(ValueError): - HttpBearerChallenge('https://test.uri.com', 'Non bearer string') - - with self.assertRaises(ValueError): - HttpBearerChallenge('ftp://test.ftp.com', mock_bearer_challenge) - - challenge = HttpBearerChallenge('https://test.uri.com', mock_bearer_challenge) - self.assertEqual(challenge.get_authorization_server(), 'https://login.windows.net/mock-id') - self.assertEqual(challenge.get_resource(), 'https://vault.azure.net') - self.assertEqual(challenge.get_value('resource'), 'https://vault.azure.net') - self.assertEqual(challenge.get_scope(), '') - - mock_bearer_challenge = ' Bearer authorization_uri="https://login.windows.net/mock-id", resource="https://vault.azure.net"' - challenge = HttpBearerChallenge('https://test.uri.com', mock_bearer_challenge) - self.assertEqual(challenge.get_authorization_server(), 'https://login.windows.net/mock-id') - -class KeyVaultKeyTest(AzureKeyVaultTestCase): - - def setUp(self): - super(KeyVaultKeyTest, self).setUp() - self.standard_vault_only = str(os.environ.get('AZURE_KV_STANDARD_VAULT_ONLY', False)).lower() \ - == 'true' - self.plain_text = binascii.b2a_hex(os.urandom(100)) - self.list_test_size = 2 - - def tearDown(self): - super(KeyVaultKeyTest, self).tearDown() - - def _import_test_key(self, vault, key_id, import_to_hardware=False): - - def _to_bytes(hex): - if len(hex) % 2: - hex = '0{}'.format(hex) - return codecs.decode(hex, 'hex_codec') - - key = JsonWebKey( - kty='RSA', - key_ops= ['encrypt', 'decrypt', 'sign', 'verify', 'wrapKey', 'unwrapKey'], - n=_to_bytes('00a0914d00234ac683b21b4c15d5bed887bdc959c2e57af54ae734e8f00720d775d275e455207e3784ceeb60a50a4655dd72a7a94d271e8ee8f7959a669ca6e775bf0e23badae991b4529d978528b4bd90521d32dd2656796ba82b6bbfc7668c8f5eeb5053747fd199319d29a8440d08f4412d527ff9311eda71825920b47b1c46b11ab3e91d7316407e89c7f340f7b85a34042ce51743b27d4718403d34c7b438af6181be05e4d11eb985d38253d7fe9bf53fc2f1b002d22d2d793fa79a504b6ab42d0492804d7071d727a06cf3a8893aa542b1503f832b296371b6707d4dc6e372f8fe67d8ded1c908fde45ce03bc086a71487fa75e43aa0e0679aa0d20efe35'), - e=_to_bytes('10001'), - d=_to_bytes('627c7d24668148fe2252c7fa649ea8a5a9ed44d75c766cda42b29b660e99404f0e862d4561a6c95af6a83d213e0a2244b03cd28576473215073785fb067f015da19084ade9f475e08b040a9a2c7ba00253bb8125508c9df140b75161d266be347a5e0f6900fe1d8bbf78ccc25eeb37e0c9d188d6e1fc15169ba4fe12276193d77790d2326928bd60d0d01d6ead8d6ac4861abadceec95358fd6689c50a1671a4a936d2376440a41445501da4e74bfb98f823bd19c45b94eb01d98fc0d2f284507f018ebd929b8180dbe6381fdd434bffb7800aaabdd973d55f9eaf9bb88a6ea7b28c2a80231e72de1ad244826d665582c2362761019de2e9f10cb8bcc2625649'), - p=_to_bytes('00d1deac8d68ddd2c1fd52d5999655b2cf1565260de5269e43fd2a85f39280e1708ffff0682166cb6106ee5ea5e9ffd9f98d0becc9ff2cda2febc97259215ad84b9051e563e14a051dce438bc6541a24ac4f014cf9732d36ebfc1e61a00d82cbe412090f7793cfbd4b7605be133dfc3991f7e1bed5786f337de5036fc1e2df4cf3'), - q=_to_bytes('00c3dc66b641a9b73cd833bc439cd34fc6574465ab5b7e8a92d32595a224d56d911e74624225b48c15a670282a51c40d1dad4bc2e9a3c8dab0c76f10052dfb053bc6ed42c65288a8e8bace7a8881184323f94d7db17ea6dfba651218f931a93b8f738f3d8fd3f6ba218d35b96861a0f584b0ab88ddcf446b9815f4d287d83a3237'), - dp=_to_bytes('00c9a159be7265cbbabc9afcc4967eb74fe58a4c4945431902d1142da599b760e03838f8cbd26b64324fea6bdc9338503f459793636e59b5361d1e6951e08ddb089e1b507be952a81fbeaf7e76890ea4f536e25505c3f648b1e88377dfc19b4c304e738dfca07211b792286a392a704d0f444c0a802539110b7f1f121c00cff0a9'), - dq=_to_bytes('00a0bd4c0a3d9f64436a082374b5caf2488bac1568696153a6a5e4cd85d186db31e2f58f024c617d29f37b4e6b54c97a1e25efec59c4d1fd3061ac33509ce8cae5c11f4cd2e83f41a8264f785e78dc0996076ee23dfdfc43d67c463afaa0180c4a718357f9a6f270d542479a0f213870e661fb950abca4a14ca290570ba7983347'), - qi=_to_bytes('009fe7ae42e92bc04fcd5780464bd21d0c8ac0c599f9af020fde6ab0a7e7d1d39902f5d8fb6c614184c4c1b103fb46e94cd10a6c8a40f9991a1f28269f326435b6c50276fda6493353c650a833f724d80c7d522ba16c79f0eb61f672736b68fb8be3243d10943c4ab7028d09e76cfb5892222e38bc4d35585bf35a88cd68c73b07') - ) - imported_key = self.client.import_key(key_id.vault, key_id.name, key, import_to_hardware) - self._validate_rsa_key_bundle(imported_key, vault.properties.vault_uri, key_id.name, - 'RSA-HSM' if import_to_hardware else 'RSA', key.key_ops) - return imported_key - - def _validate_rsa_key_bundle(self, bundle, vault, key_name, kty, key_ops=None): - prefix = '{}keys/{}/'.format(vault, key_name) - key_ops = key_ops or ['encrypt', 'decrypt', 'sign', 'verify', 'wrapKey', 'unwrapKey'] - key = bundle.key - kid = key.kid - self.assertTrue(kid.index(prefix) == 0, - "String should start with '{}', but value is '{}'".format(prefix, kid)) - self.assertEqual(key.kty, kty, "kty should by '{}', but is '{}'".format(key, key.kty)) - self.assertTrue(key.n and key.e, 'Bad RSA public material.') - self.assertEqual(key_ops, key.key_ops, - "keyOps should be '{}', but is '{}'".format(key_ops, key.key_ops)) - self.assertTrue(bundle.attributes.created and bundle.attributes.updated, - 'Missing required date attributes.') - - def _validate_key_list(self, keys, expected): - for key in keys: - if key.kid in expected.keys(): - attributes = expected[key.kid] - self.assertEqual(attributes, key.attributes) - del expected[key.kid] - - @sharedvault - def test_key_crud_operations(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - key_name = self.get_resource_name('key') - - # create key - created_bundle = self.client.create_key(vault_uri, key_name, 'RSA') - self._validate_rsa_key_bundle(created_bundle, vault_uri, key_name, 'RSA') - key_id = KeyVaultId.parse_key_id(created_bundle.key.kid) - - # get key without version - self.assertEqual(created_bundle, self.client.get_key(key_id.vault, key_id.name, '')) - - # get key with version - self.assertEqual(created_bundle, self.client.get_key(key_id.vault, key_id.name, key_id.version)) - - def _update_key(key_uri): - updating_bundle = copy.deepcopy(created_bundle) - updating_bundle.attributes.expires = date_parse.parse('2050-02-02T08:00:00.000Z') - updating_bundle.key.key_ops = ['encrypt', 'decrypt'] - updating_bundle.tags = {'foo': 'updated tag'} - kid = KeyVaultId.parse_key_id(key_uri) - key_bundle = self.client.update_key( - kid.vault, kid.name, kid.version, updating_bundle.key.key_ops, updating_bundle.attributes, updating_bundle.tags) - self.assertEqual(updating_bundle.tags, key_bundle.tags) - self.assertEqual(updating_bundle.key.kid, key_bundle.key.kid) - return key_bundle - - # update key without version - created_bundle = _update_key(key_id.base_id) - - # update key with version - created_bundle = _update_key(key_id.id) - - # delete key - self.client.delete_key(key_id.vault, key_id.name) - - # get key returns not found - try: - self.client.get_key(key_id.vault, key_id.name, '') - self.fail('Get should fail') - except Exception as ex: - if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): - raise ex - - @sharedvault - def test_key_list(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - max_keys = self.list_test_size - expected = {} - - # create many keys - for x in range(0, max_keys): - key_name = self.get_resource_name('key{}-'.format(x)) - key_bundle = None - error_count = 0 - while not key_bundle: - try: - key_bundle = self.client.create_key(vault_uri, key_name, 'RSA') - kid = KeyVaultId.parse_key_id(key_bundle.key.kid).base_id.strip('/') - expected[kid] = key_bundle.attributes - except Exception as ex: - if hasattr(ex, 'message') and 'Throttled' in ex.message: - error_count += 1 - time.sleep(2.5 * error_count) - continue - else: - raise ex - - # list keys - result = list(self.client.get_keys(vault_uri, self.list_test_size)) - self._validate_key_list(result, expected) - - @sharedvault - def test_key_list_versions(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - key_name = self.get_resource_name('key') - - max_keys = self.list_test_size - expected = {} - - # create many key versions - for x in range(0, max_keys): - key_bundle = None - error_count = 0 - while not key_bundle: - try: - key_bundle = self.client.create_key(vault_uri, key_name, 'RSA') - kid = KeyVaultId.parse_key_id(key_bundle.key.kid).id.strip('/') - expected[kid] = key_bundle.attributes - except Exception as ex: - if hasattr(ex, 'message') and 'Throttled' in ex.message: - error_count += 1 - time.sleep(2.5 * error_count) - continue - else: - raise ex - - # list key versions - self._validate_key_list(list(self.client.get_key_versions(vault_uri, key_name)), expected) - - @sharedvault - def test_key_backup_and_restore(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - key_name = self.get_resource_name('keybak') - - # create key - created_bundle = self.client.create_key(vault_uri, key_name, 'RSA') - key_id = KeyVaultId.parse_key_id(created_bundle.key.kid) - - # backup key - key_backup = self.client.backup_key(key_id.vault, key_id.name).value - - # delete key - self.client.delete_key(key_id.vault, key_id.name) - - # restore key - self.assertEqual(created_bundle, self.client.restore_key(vault_uri, key_backup)) - - @privatevault(enable_soft_delete=True) - def test_key_recover_and_purge(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - - keys = {} - - # create keys to recover - for i in range(0, self.list_test_size): - key_name = self.get_resource_name('keyrec{}'.format(str(i))) - keys[key_name] = self.client.create_key(vault_uri, key_name, 'RSA') - - # create keys to purge - for i in range(0, self.list_test_size): - key_name = self.get_resource_name('keyprg{}'.format(str(i))) - keys[key_name] = self.client.create_key(vault_uri, key_name, 'RSA') - - # delete all keys - for key_name in keys.keys(): - self.client.delete_key(vault_uri, key_name) - - if not self.is_playback(): - self.sleep(20) - - # validate all our deleted keys are returned by get_deleted_keys - deleted = [KeyVaultId.parse_key_id(s.kid).name for s in self.client.get_deleted_keys(vault_uri)] - self.assertTrue(all(s in deleted for s in keys.keys())) - - # recover select keys - for key_name in [s for s in keys.keys() if s.startswith('keyrec')]: - self.client.recover_deleted_key(vault_uri, key_name) - - # purge select keys - for key_name in [s for s in keys.keys() if s.startswith('keyprg')]: - self.client.purge_deleted_key(vault_uri, key_name) - - if not self.is_playback(): - self.sleep(20) - - # validate none of our deleted keys are returned by get_deleted_keys - deleted = [KeyVaultId.parse_key_id(s.kid).name for s in self.client.get_deleted_keys(vault_uri)] - self.assertTrue(not any(s in deleted for s in keys.keys())) - - # validate the recovered keys - expected = {k: v for k, v in keys.items() if k.startswith('key-') and k.endswith('-recover')} - actual = {k: self.client.get_key(vault_uri, k) for k in expected.keys()} - self.assertEqual(len(set(expected.keys()) & set(actual.keys())), len(expected)) - - @sharedvault - def test_key_import(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - key_name = self.get_resource_name('keyimp') - - key_id = KeyVaultId.create_key_id(vault_uri, key_name) - - # import to software - self._import_test_key(vault, key_id, False) - - # import to hardware - self._import_test_key(vault, key_id, not self.standard_vault_only) - - @sharedvault - def test_key_encrypt_and_decrypt(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - key_name = self.get_resource_name('keycrypt') - - key_id = KeyVaultId.create_key_id(vault_uri, key_name) - plain_text = self.plain_text - - # import key - imported_key = self._import_test_key(vault, key_id) - key_id = KeyVaultId.parse_key_id(imported_key.key.kid) - - # encrypt without version - result = self.client.encrypt(key_id.vault, key_id.name, '', 'RSA-OAEP', plain_text) - cipher_text = result.result - - # decrypt without version - result = self.client.decrypt(key_id.vault, key_id.name, '', 'RSA-OAEP', cipher_text) - if not self.is_playback(): - self.assertEqual(plain_text, result.result) - - # encrypt with version - result = self.client.encrypt(key_id.vault, key_id.name, key_id.version, 'RSA-OAEP', plain_text) - cipher_text = result.result - - # decrypt with version - result = self.client.decrypt(key_id.vault, key_id.name, key_id.version, 'RSA-OAEP', cipher_text) - if not self.is_playback(): - self.assertEqual(plain_text, result.result) - - @sharedvault - def test_key_wrap_and_unwrap(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - key_name = self.get_resource_name('keywrap') - - key_id = KeyVaultId.create_key_id(vault_uri, key_name) - plain_text = self.plain_text - - # import key - imported_key = self._import_test_key(vault, key_id) - key_id = KeyVaultId.parse_key_id(imported_key.key.kid) - - # wrap without version - result = self.client.wrap_key(key_id.vault, key_id.name, '', 'RSA-OAEP', plain_text) - cipher_text = result.result - - # unwrap without version - result = self.client.unwrap_key(key_id.vault, key_id.name, '', 'RSA-OAEP', cipher_text) - if not self.is_playback(): - self.assertEqual(plain_text, result.result) - - # wrap with version - result = self.client.wrap_key(key_id.vault, key_id.name, key_id.version, 'RSA-OAEP', plain_text) - cipher_text = result.result - - # unwrap with version - result = self.client.unwrap_key(key_id.vault, key_id.name, key_id.version, 'RSA-OAEP', cipher_text) - if not self.is_playback(): - self.assertEqual(plain_text, result.result) - - @sharedvault - def test_key_sign_and_verify(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - key_name = self.get_resource_name('keysign') - - - key_id = KeyVaultId.create_key_id(vault_uri, key_name) - plain_text = self.plain_text - md = hashlib.sha256() - md.update(plain_text); - digest = md.digest(); - - # import key - imported_key = self._import_test_key(vault, key_id) - key_id = KeyVaultId.parse_key_id(imported_key.key.kid) - - # sign without version - signature = self.client.sign(key_id.vault, key_id.name, '', 'RS256', digest).result - - # verify without version - result = self.client.verify(key_id.vault, key_id.name, '', 'RS256', digest, signature) - self.assertTrue(result.value) - - # sign with version - signature = self.client.sign(key_id.vault, key_id.name, '', 'RS256', digest).result - - # verify with version - result = self.client.verify(key_id.vault, key_id.name, key_id.version, 'RS256', digest, signature) - self.assertTrue(result.value) - -class KeyVaultSecretTest(AzureKeyVaultTestCase): - - def setUp(self): - super(KeyVaultSecretTest, self).setUp() - self.list_test_size = 2 - - def tearDown(self): - super(KeyVaultSecretTest, self).tearDown() - - def _validate_secret_bundle(self, bundle, vault, secret_name, secret_value): - prefix = '{}secrets/{}/'.format(vault, secret_name) - id = bundle.id - self.assertTrue(id.index(prefix) == 0, - "String should start with '{}', but value is '{}'".format(prefix, id)) - self.assertEqual(bundle.value, secret_value, "value should be '{}', but is '{}'".format(secret_value, bundle.value)) - self.assertTrue(bundle.attributes.created and bundle.attributes.updated, - 'Missing required date attributes.') - - def _validate_secret_list(self, secrets, expected): - for secret in secrets: - if secret.id in expected.keys(): - attributes = expected[secret.id] - self.assertEqual(attributes, secret.attributes) - del expected[secret.id] - - @sharedvault - def test_secret_crud_operations(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - secret_name = self.get_resource_name('sec') - secret_value = self.get_resource_name('secVal') - - # create secret - secret_bundle = self.client.set_secret(vault_uri, secret_name, secret_value) - self._validate_secret_bundle(secret_bundle, vault_uri, secret_name, secret_value) - created_bundle = secret_bundle - secret_id = KeyVaultId.parse_secret_id(created_bundle.id) - - # get secret without version - self.assertEqual(created_bundle, self.client.get_secret(secret_id.vault, secret_id.name, '')) - - # get secret with version - self.assertEqual(created_bundle, self.client.get_secret(secret_id.vault, secret_id.name, secret_id.version)) - - def _update_secret(secret_uri): - updating_bundle = copy.deepcopy(created_bundle) - updating_bundle.content_type = 'text/plain' - updating_bundle.attributes.expires = date_parse.parse('2050-02-02T08:00:00.000Z') - updating_bundle.tags = {'foo': 'updated tag'} - sid = KeyVaultId.parse_secret_id(secret_uri) - secret_bundle = self.client.update_secret( - sid.vault, sid.name, sid.version, updating_bundle.content_type, updating_bundle.attributes, - updating_bundle.tags) - self.assertEqual(updating_bundle.tags, secret_bundle.tags) - self.assertEqual(updating_bundle.id, secret_bundle.id) - self.assertNotEqual(str(updating_bundle.attributes.updated), str(secret_bundle.attributes.updated)) - return secret_bundle - - # update secret without version - secret_bundle = _update_secret(secret_id.base_id) - - # update secret with version - secret_bundle = _update_secret(secret_id.id) - - # delete secret - self.client.delete_secret(secret_id.vault, secret_id.name) - - # get secret returns not found - try: - self.client.get_secret(secret_id.vault, secret_id.name, '') - except Exception as ex: - if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): - raise ex - - @sharedvault - def test_secret_list(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - - max_secrets = self.list_test_size - expected = {} - - # create many secrets - for x in range(0, max_secrets): - secret_name = 'sec{}'.format(x) - secret_value = self.get_resource_name('secVal{}'.format(x)) - secret_bundle = None - error_count = 0 - while not secret_bundle: - try: - secret_bundle = self.client.set_secret(vault_uri, secret_name, secret_value) - sid = KeyVaultId.parse_secret_id(secret_bundle.id).base_id.strip('/') - expected[sid] = secret_bundle.attributes - except Exception as ex: - if hasattr(ex, 'message') and 'Throttled' in ex.message: - error_count += 1 - time.sleep(2.5 * error_count) - continue - else: - raise ex - - # list secrets - result = list(self.client.get_secrets(vault_uri, self.list_test_size)) - self._validate_secret_list(result, expected) - - @sharedvault - def test_secret_list_versions(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - secret_name = self.get_resource_name('sec') - secret_value = self.get_resource_name('secVal') - - max_secrets = self.list_test_size - expected = {} - - # create many secret versions - for x in range(0, max_secrets): - secret_bundle = None - error_count = 0 - while not secret_bundle: - try: - secret_bundle = self.client.set_secret(vault_uri, secret_name, secret_value) - sid = KeyVaultId.parse_secret_id(secret_bundle.id).id.strip('/') - expected[sid] = secret_bundle.attributes - except Exception as ex: - if hasattr(ex, 'message') and 'Throttled' in ex.message: - error_count += 1 - time.sleep(2.5 * error_count) - continue - else: - raise ex - - # list secret versions - self._validate_secret_list(list(self.client.get_secret_versions(vault_uri, secret_name)), expected) - - @sharedvault - def test_secret_backup_and_restore(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - secret_name = self.get_resource_name('secbak') - secret_value = self.get_resource_name('secVal') - - # create secret - created_bundle = self.client.set_secret(vault_uri, secret_name, secret_value) - secret_id = KeyVaultId.parse_secret_id(created_bundle.id) - - # backup secret - secret_backup = self.client.backup_secret(secret_id.vault, secret_id.name).value - - # delete secret - self.client.delete_secret(secret_id.vault, secret_id.name) - - # restore secret - self.assertEqual(created_bundle.attributes, self.client.restore_secret(vault_uri, secret_backup).attributes) - - @privatevault(enable_soft_delete=True) - def test_secret_recover_and_purge(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - - secrets = {} - - # create secrets to recover - for i in range(0, self.list_test_size): - secret_name = self.get_resource_name('secrec{}'.format(str(i))) - secret_value = self.get_resource_name('secval{}'.format((str(i)))) - secrets[secret_name] = self.client.set_secret(vault_uri, secret_name, secret_value) - - # create secrets to purge - for i in range(0, self.list_test_size): - secret_name = self.get_resource_name('secprg{}'.format(str(i))) - secret_value = self.get_resource_name('secval{}'.format((str(i)))) - secrets[secret_name] = self.client.set_secret(vault_uri, secret_name, secret_value) - - # delete all secrets - for secret_name in secrets.keys(): - self.client.delete_secret(vault_uri, secret_name) - - if not self.is_playback(): - self.sleep(20) - - # validate all our deleted secrets are returned by get_deleted_secrets - deleted = [KeyVaultId.parse_secret_id(s.id).name for s in self.client.get_deleted_secrets(vault_uri)] - self.assertTrue(all(s in deleted for s in secrets.keys())) - - # recover select secrets - for secret_name in [s for s in secrets.keys() if s.startswith('secrec')]: - self.client.recover_deleted_secret(vault_uri, secret_name) - - # purge select secrets - for secret_name in [s for s in secrets.keys() if s.startswith('secprg')]: - self.client.purge_deleted_secret(vault_uri, secret_name) - - if not self.is_playback(): - self.sleep(20) - - # validate none of our deleted secrets are returned by get_deleted_secrets - deleted = [KeyVaultId.parse_secret_id(s.id).name for s in self.client.get_deleted_secrets(vault_uri)] - self.assertTrue(not any(s in deleted for s in secrets.keys())) - - # validate the recovered secrets - expected = {k: v for k, v in secrets.items() if k.startswith('secrec')} - actual = {k: self.client.get_secret(vault_uri, k, KeyVaultId.version_none) for k in expected.keys()} - self.assertEqual(len(set(expected.keys()) & set(actual.keys())), len(expected)) - - -class KeyVaultCertificateTest(AzureKeyVaultTestCase): - - def setUp(self): - super(KeyVaultCertificateTest, self).setUp() - #self.cert_name = 'pythonCertificate' - #self.issuer_name = 'pythonIssuer' - self.list_test_size = 2 - - def tearDown(self): - super(KeyVaultCertificateTest, self).tearDown() - - def _import_common_certificate(self, vault_uri, cert_name): - cert_content = 'MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ' - cert_password = '123' - cert_policy = CertificatePolicy( - KeyProperties(True, 'RSA', 2048, False), - SecretProperties('application/x-pkcs12')) - return ( - self.client.import_certificate(vault_uri, cert_name, cert_content, cert_password, cert_policy), - cert_policy - ) - - def _validate_certificate_operation(self, pending_cert, vault, cert_name, cert_policy): - self.assertIsNotNone(pending_cert) - self.assertIsNotNone(pending_cert.csr) - self.assertEqual(cert_policy.issuer_parameters.name, pending_cert.issuer_parameters.name) - pending_id = KeyVaultId.parse_certificate_operation_id(pending_cert.id) - self.assertEqual(pending_id.vault.strip('/'), vault.strip('/')) - self.assertEqual(pending_id.name, cert_name) - - def _validate_certificate_bundle(self, cert, vault, cert_name, cert_policy): - cert_id = KeyVaultId.parse_certificate_id(cert.id) - self.assertEqual(cert_id.vault.strip('/'), vault.strip('/')) - self.assertEqual(cert_id.name, cert_name) - self.assertIsNotNone(cert) - self.assertIsNotNone(cert.x509_thumbprint) - self.assertIsNotNone(cert.cer) - self.assertIsNotNone(cert.attributes) - self.assertIsNotNone(cert.policy) - self.assertIsNotNone(cert.policy.id) - self.assertIsNotNone(cert.policy.issuer_parameters) - self.assertIsNotNone(cert.policy.lifetime_actions) - self.assertEqual(cert.policy.key_properties, cert_policy.key_properties) - self.assertEqual(cert.policy.secret_properties, cert_policy.secret_properties) - self.assertIsNotNone(cert.policy.x509_certificate_properties) - if cert_policy.x509_certificate_properties: - self.assertEqual(cert.policy.x509_certificate_properties.validity_in_months, - cert_policy.x509_certificate_properties.validity_in_months) - KeyVaultId.parse_secret_id(cert.sid) - KeyVaultId.parse_key_id(cert.kid) - - def _validate_certificate_list(self, certificates, expected): - for cert in certificates: - if cert.id in expected.keys(): - attributes = expected[cert.id] - # To Accomodate tiny change in == semantic in msrest 0.4.20 - attributes.additional_properties = {} - cert.attributes.additional_properties = {} - - self.assertEqual(attributes, cert.attributes) - del expected[cert.id] - - def _validate_issuer_bundle(self, bundle, vault, name, provider, credentials, org_details): - self.assertIsNotNone(bundle) - self.assertIsNotNone(bundle.attributes) - self.assertIsNotNone(bundle.organization_details) - self.assertEqual(bundle.provider, provider) - - issuer_id = KeyVaultId.parse_certificate_issuer_id(bundle.id) - self.assertEqual(issuer_id.vault.strip('/'), vault.strip('/')) - self.assertEqual(issuer_id.name, name) - - if credentials: - self.assertEqual(bundle.credentials.account_id, credentials.account_id) - if org_details: - # To Accomodate tiny change in == semantic in msrest 0.4.20 - org_details.additional_properties = {} - bundle.organization_details.additional_properties = {} - - self.assertEqual(bundle.organization_details, org_details) - - def _validate_certificate_issuer_list(self, issuers, expected): - for issuer in issuers: - KeyVaultId.parse_certificate_issuer_id(issuer.id) - provider = expected[issuer.id] - if provider: - self.assertEqual(provider, issuer.provider) - del expected[issuer.id] - - def _validate_certificate_contacts(self, contacts, vault, expected): - contact_id = '{}certificates/contacts'.format(vault) - self.assertEqual(contact_id, contacts.id) - self.assertEqual(len(contacts.contact_list), len(expected)) - - for contact in contacts.contact_list: - exp_contact = next(x for x in expected if x.email_address == contact.email_address) - self.assertEqual(contact, exp_contact) - - @sharedvault - def test_certificate_crud_operations(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - cert_name = self.get_resource_name('cert') - - cert_policy = CertificatePolicy( - KeyProperties(True, 'RSA', 2048, False), - SecretProperties('application/x-pkcs12'), - issuer_parameters=IssuerParameters('Self'), - x509_certificate_properties=X509CertificateProperties( - subject='CN=*.microsoft.com', - subject_alternative_names=SubjectAlternativeNames( - dns_names=['onedrive.microsoft.com', 'xbox.microsoft.com'] - ), - validity_in_months=24 - )) - - # create certificate - interval_time = 5 if not self.is_playback() else 0 - cert_operation = self.client.create_certificate(vault_uri, cert_name, cert_policy) - while True: - pending_cert = self.client.get_certificate_operation(vault_uri, cert_name) - self._validate_certificate_operation(pending_cert, vault_uri, cert_name, cert_policy) - if pending_cert.status.lower() == 'completed': - cert_id = KeyVaultId.parse_certificate_operation_id(pending_cert.target) - break - elif pending_cert.status.lower() != 'inprogress': - raise Exception('Unknown status code for pending certificate: {}'.format(pending_cert)) - time.sleep(interval_time) - - # get certificate - cert_bundle = self.client.get_certificate(cert_id.vault, cert_id.name, '') - self._validate_certificate_bundle(cert_bundle, vault_uri, cert_name, cert_policy) - - # get certificate as secret - secret_id = KeyVaultId.parse_secret_id(cert_bundle.sid) - secret_bundle = self.client.get_secret(secret_id.vault, secret_id.name, secret_id.version) - - # update certificate - cert_policy.tags = {'tag1': 'value1'} - cert_bundle = self.client.update_certificate(cert_id.vault, cert_id.name, cert_id.version, cert_policy) - self._validate_certificate_bundle(cert_bundle, vault_uri, cert_name, cert_policy) - - # delete certificate - cert_bundle = self.client.delete_certificate(vault_uri, cert_name) - self._validate_certificate_bundle(cert_bundle, vault_uri, cert_name, cert_policy) - - # get certificate returns not found - try: - self.client.get_certificate(cert_id.vault, cert_id.name, '') - self.fail('Get should fail') - except Exception as ex: - if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): - raise ex - - @sharedvault - def test_certificate_import(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - cert_name = self.get_resource_name('certimp') - - # import certificate( - (cert_bundle, cert_policy) = self._import_common_certificate(vault_uri, cert_name) - self._validate_certificate_bundle(cert_bundle, vault_uri, cert_name, cert_policy) - - @sharedvault - def test_certificate_list(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - - max_certificates = self.list_test_size - expected = {} - - # import some certificates - for x in range(0, max_certificates): - cert_name = self.get_resource_name('cert{}'.format(x)) - cert_bundle = None - error_count = 0 - while not cert_bundle: - try: - cert_bundle = self._import_common_certificate(vault_uri, cert_name)[0] - cid = KeyVaultId.parse_certificate_id(cert_bundle.id).base_id.strip('/') - expected[cid] = cert_bundle.attributes - except Exception as ex: - if hasattr(ex, 'message') and 'Throttled' in ex.message: - error_count += 1 - time.sleep(2.5 * error_count) - continue - else: - raise ex - - # list certificates - result = list(self.client.get_certificates(vault_uri, self.list_test_size)) - self._validate_certificate_list(result, expected) - - @sharedvault - def test_certificate_list_versions(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - cert_name = self.get_resource_name('certver') - - max_certificates = self.list_test_size - expected = {} - - # import same certificates as different versions - for x in range(0, max_certificates): - cert_bundle = None - error_count = 0 - while not cert_bundle: - try: - cert_bundle = self._import_common_certificate(vault_uri, cert_name)[0] - cid = KeyVaultId.parse_certificate_id(cert_bundle.id).id.strip('/') - expected[cid] = cert_bundle.attributes - except Exception as ex: - if hasattr(ex, 'message') and 'Throttled' in ex.message: - error_count += 1 - time.sleep(2.5 * error_count) - continue - else: - raise ex - - # list certificate versions - self._validate_certificate_list(list(self.client.get_certificate_versions(vault_uri, cert_name)), expected) - - @sharedvault - def test_certificate_crud_issuer(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - - issuer_name = 'pythonIssuer' - issuer_credentials = IssuerCredentials('keyvaultuser', 'password') - organization_details = OrganizationDetails( - admin_details=[AdministratorDetails('Jane', 'Doe', 'admin@contoso.com', '4256666666')]) - - # create certificate issuer - issuer_bundle = self.client.set_certificate_issuer(vault_uri, issuer_name, 'test', issuer_credentials, organization_details) - self._validate_issuer_bundle(issuer_bundle, vault_uri, issuer_name, 'test', issuer_credentials, organization_details) - - # get certificate issuer - issuer_bundle = self.client.get_certificate_issuer(vault_uri, issuer_name) - self._validate_issuer_bundle(issuer_bundle, vault_uri, issuer_name, 'test', issuer_credentials, organization_details) - - # update certificate issue - new_credentials = IssuerCredentials('xboxuser', 'security') - new_org_details = OrganizationDetails( - admin_details=[AdministratorDetails('Jane II', 'Doe', 'admin@contoso.com', '1111111111')]) - issuer_bundle = self.client.update_certificate_issuer(vault_uri, issuer_name, 'test', new_credentials, new_org_details) - self._validate_issuer_bundle(issuer_bundle, vault_uri, issuer_name, 'test', new_credentials, new_org_details) - - # delete certificate issuer( - self.client.delete_certificate_issuer(vault_uri, issuer_name) - - # get certificate issuer returns not found - try: - self.client.get_certificate_issuer(vault_uri, issuer_name) - self.fail('Get should fail') - except Exception as ex: - if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): - raise ex - - @sharedvault - def test_certificate_list_issuers(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - - max_issuers = self.list_test_size - expected = {} - - # create some certificate issuers( - for x in range(0, max_issuers): - issuer_name = 'pythonIssuer{}'.format(x + 1) - issuer_credentials = IssuerCredentials('keyvaultuser', 'password') - organization_details = OrganizationDetails( - admin_details=[AdministratorDetails('Jane', 'Doe', 'admin@contoso.com', '4256666666')]) - error_count = 0 - issuer_bundle = None - while not issuer_bundle: - try: - issuer_bundle = self.client.set_certificate_issuer(vault_uri, issuer_name, 'test', issuer_credentials, organization_details) - expected[issuer_bundle.id] = issuer_bundle.provider - except Exception as ex: - if hasattr(ex, 'message') and 'Throttled' in ex.message: - error_count += 1 - time.sleep(2.5 * error_count) - continue - else: - raise ex - - # list certificate issuers - result = list(self.client.get_certificate_issuers(vault_uri, self.list_test_size)) - self._validate_certificate_issuer_list(result, expected) - - @sharedvault - def test_certificate_async_request_cancellation_and_deletion(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - - cert_name = 'asyncCanceledDeletedCert' - cert_policy = CertificatePolicy( - KeyProperties(True, 'RSA', 2048, False), - SecretProperties('application/x-pkcs12'), - issuer_parameters=IssuerParameters('Self'), - x509_certificate_properties=X509CertificateProperties( - subject='CN=*.microsoft.com', - subject_alternative_names=SubjectAlternativeNames( - dns_names=['onedrive.microsoft.com', 'xbox.microsoft.com'] - ), - validity_in_months=24 - )) - - # create certificate - self.client.create_certificate(vault_uri, cert_name, cert_policy) - - # cancel certificate operation - cancel_operation = self.client.update_certificate_operation(vault_uri, cert_name, True) - self.assertTrue(hasattr(cancel_operation, 'cancellation_requested')) - self.assertTrue(cancel_operation.cancellation_requested) - self._validate_certificate_operation(cancel_operation, vault_uri, cert_name, cert_policy) - - retrieved_operation = self.client.get_certificate_operation(vault_uri, cert_name) - self.assertTrue(hasattr(retrieved_operation, 'cancellation_requested')) - self.assertTrue(retrieved_operation.cancellation_requested) - self._validate_certificate_operation(retrieved_operation, vault_uri, cert_name, cert_policy) - - # delete certificate operation - deleted_operation = self.client.delete_certificate_operation(vault_uri, cert_name) - self.assertIsNotNone(deleted_operation) - self._validate_certificate_operation(deleted_operation, vault_uri, cert_name, cert_policy) - - try: - self.client.get_certificate_operation(vault_uri, cert_name) - self.fail('Get should fail') - except Exception as ex: - if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): - raise ex - - # delete cancelled certificate operation - self.client.delete_certificate(vault_uri, cert_name) - - @sharedvault - def test_certificate_crud_contacts(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - - contact_list = [ - Contact('admin@contoso.com', 'John Doe', '1111111111'), - Contact('admin2@contoso.com', 'John Doe2', '2222222222') - ] - - # create certificate contacts - contacts = self.client.set_certificate_contacts(vault_uri, contact_list) - self._validate_certificate_contacts(contacts, vault_uri, contact_list) - - # get certificate contacts - contacts = self.client.get_certificate_contacts(vault_uri) - self._validate_certificate_contacts(contacts, vault_uri, contact_list) - - # delete certificate contacts - contacts = self.client.delete_certificate_contacts(vault_uri) - self._validate_certificate_contacts(contacts, vault_uri, contact_list) - - # get certificate contacts returns not found - try: - contacts = self.client.get_certificate_contacts(vault_uri) - self.fail('Get should fail') - except Exception as ex: - if not hasattr(ex, 'message') or 'not found' not in ex.message.lower(): - raise ex - - @sharedvault - def test_certificate_policy(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - - cert_name = 'policyCertificate' - - # get certificate policy - (cert_bundle, cert_policy) = self._import_common_certificate(vault_uri, cert_name) - retrieved_policy = self.client.get_certificate_policy(vault_uri, cert_name) - self.assertIsNotNone(retrieved_policy) - - # update certificate policy - cert_policy = CertificatePolicy( - KeyProperties(True, 'RSA', 2048, False), - SecretProperties('application/x-pkcs12'), - issuer_parameters=IssuerParameters('Self') - ) - - self.client.update_certificate_policy(vault_uri, cert_name, cert_policy) - updated_cert_policy = self.client.get_certificate_policy(vault_uri, cert_name) - self.assertIsNotNone(updated_cert_policy) - - @sharedvault - def test_certificate_manual_enrolled(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - - cert_name = 'unknownIssuerCert' - cert_policy = CertificatePolicy( - KeyProperties(True, 'RSA', 2048, False), - SecretProperties('application/x-pkcs12'), - issuer_parameters=IssuerParameters('Unknown'), - x509_certificate_properties=X509CertificateProperties( - subject='CN=*.microsoft.com', - subject_alternative_names=SubjectAlternativeNames( - dns_names=['onedrive.microsoft.com', 'xbox.microsoft.com'] - ), - validity_in_months=24 - )) - - # get pending certificate signing request - cert_operation = self.client.create_certificate(vault_uri, cert_name, cert_policy) - pending_version_csr = self.client.get_pending_certificate_signing_request(vault_uri, cert_name) - try: - self.assertEqual(cert_operation.csr, pending_version_csr) - except Exception as ex: - pass - finally: - self.client.delete_certificate(vault_uri, cert_name) - - @privatevault(enable_soft_delete=True) - def test_certificate_recover_and_purge(self, vault=None): - self.assertIsNotNone(vault) - vault_uri = vault.properties.vault_uri - - certs = {} - cert_policy = CertificatePolicy( - KeyProperties(True, 'RSA', 2048, False), - SecretProperties('application/x-pkcs12'), - issuer_parameters=IssuerParameters('Self'), - x509_certificate_properties=X509CertificateProperties( - subject='CN=*.microsoft.com', - subject_alternative_names=SubjectAlternativeNames( - dns_names=['onedrive.microsoft.com', 'xbox.microsoft.com'] - ), - validity_in_months=24 - )) - # create certificates to recover - for i in range(0, self.list_test_size): - cert_name = self.get_resource_name('certrec{}'.format(str(i))) - certs[cert_name] = self._import_common_certificate(vault_uri, cert_name) - - # create certificates to purge - for i in range(0, self.list_test_size): - cert_name = self.get_resource_name('certprg{}'.format(str(i))) - certs[cert_name] = self._import_common_certificate(vault_uri, cert_name) - - # delete all certificates - for cert_name in certs.keys(): - delcert = self.client.delete_certificate(vault_uri, cert_name) - print(delcert) - - if not self.is_playback(): - self.sleep(30) - - # validate all our deleted certificates are returned by get_deleted_certificates - deleted = [KeyVaultId.parse_certificate_id(s.id).name for s in self.client.get_deleted_certificates(vault_uri)] - #self.assertTrue(all(s in deleted for s in certs.keys())) - - # recover select secrets - for certificate_name in [s for s in certs.keys() if s.startswith('certrec')]: - self.client.recover_deleted_certificate(vault_uri, certificate_name) - - # purge select secrets - for certificate_name in [s for s in certs.keys() if s.startswith('certprg')]: - self.client.purge_deleted_certificate(vault_uri, certificate_name) - - if not self.is_playback(): - self.sleep(30) - - # validate none of our deleted certificates are returned by get_deleted_certificates - deleted = [KeyVaultId.parse_secret_id(s.id).name for s in self.client.get_deleted_certificates(vault_uri)] - self.assertTrue(not any(s in deleted for s in certs.keys())) - - # validate the recovered certificates - expected = {k: v for k, v in certs.items() if k.startswith('certrec')} - actual = {k: self.client.get_certificate(vault_uri, k, KeyVaultId.version_none) for k in expected.keys()} - self.assertEqual(len(set(expected.keys()) & set(actual.keys())), len(expected)) - - -class KeyVaultMiscTest(AzureKeyVaultTestCase): - - def setUp(self): - super(KeyVaultMiscTest, self).setUp() - - def tearDown(self): - super(KeyVaultMiscTest, self).tearDown() - - @privatevault() - def test_iterate_empty_list_commands(self, vault=None): - - keys = [x for x in self.client.get_keys(vault.properties.vault_uri)] - self.assertEqual(len(keys), 0) - - certs = [x for x in self.client.get_certificates(vault.properties.vault_uri)] - self.assertEqual(len(certs), 0) - - secrets = [x for x in self.client.get_secrets(vault.properties.vault_uri)] - self.assertEqual(len(secrets), 0) -# ------------------------------------------------------------------------------ -if __name__ == '__main__': - unittest.main() - diff --git a/azure-mgmt/tests/test_mgmt_keyvault.py b/azure-mgmt/tests/test_mgmt_keyvault.py deleted file mode 100644 index a4796dfe4e8b..000000000000 --- a/azure-mgmt/tests/test_mgmt_keyvault.py +++ /dev/null @@ -1,72 +0,0 @@ -# coding: utf-8 - -#------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -#-------------------------------------------------------------------------- -import unittest - -from collections import namedtuple - -import azure.mgmt.keyvault.models -from testutils.common_recordingtestcase import record -from tests.mgmt_testcase import HttpStatusCode, AzureMgmtTestCase - - -class MgmtKeyVaultTest(AzureMgmtTestCase): - - def setUp(self): - super(MgmtKeyVaultTest, self).setUp() - self.keyvault_client = self.create_mgmt_client( - azure.mgmt.keyvault.KeyVaultManagementClient - ) - if not self.is_playback(): - self.create_resource_group() - - @record - def test_vaults_operations(self): - account_name = self.get_resource_name('pykv') - - vault = self.keyvault_client.vaults.create_or_update( - self.group_name, - account_name, - { - 'location': self.region, - 'properties': { - 'sku': { - 'name': 'standard' - }, - # Fake random GUID - 'tenant_id': '6819f86e-5d41-47b0-9297-334f33d7922d', - 'access_policies': [] - } - } - ) - self.assertEqual(vault.name, account_name) - - vault = self.keyvault_client.vaults.get( - self.group_name, - account_name - ) - self.assertEqual(vault.name, account_name) - - vaults = list(self.keyvault_client.vaults.list_by_resource_group(self.group_name)) - self.assertEqual(len(vaults), 1) - self.assertIsInstance(vaults[0], azure.mgmt.keyvault.models.Vault) - self.assertEqual(vaults[0].name, account_name) - - vaults = list(self.keyvault_client.vaults.list()) - self.assertGreater(len(vaults), 0) - self.assertTrue(all(isinstance(v, azure.mgmt.keyvault.models.Resource) for v in vaults)) - - self.keyvault_client.vaults.delete( - self.group_name, - account_name - ) - - - -#------------------------------------------------------------------------------ -if __name__ == '__main__': - unittest.main() diff --git a/azure.sln b/azure.sln index 4dcd8618b457..30a724e541c4 100644 --- a/azure.sln +++ b/azure.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26602.0 +VisualStudioVersion = 15.0.27004.2002 MinimumVisualStudioVersion = 10.0.40219.1 Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "azure", "azure.pyproj", "{25B2C65A-0553-4452-8907-8B5B17544E68}" EndProject @@ -33,4 +33,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {D163CF85-8B59-44F9-9FE1-2EF9A3EB26F0} + EndGlobalSection EndGlobal