From 4f08d19356d7c3a1285989792b771c8e611a2120 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Fri, 22 Sep 2017 10:55:55 -0700 Subject: [PATCH 01/49] updating azure-keyvault version and changelog --- azure-keyvault/HISTORY.rst | 5 +++++ azure-keyvault/azure/keyvault/version.py | 2 +- swagger_to_sdk_config.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/azure-keyvault/HISTORY.rst b/azure-keyvault/HISTORY.rst index 04c1655f822b..7e05f3e7ce42 100644 --- a/azure-keyvault/HISTORY.rst +++ b/azure-keyvault/HISTORY.rst @@ -2,6 +2,11 @@ Release History =============== +0.3.7 (2017-09-22) +++++++++++++++++++ + +* Workaround for Azure Stack ADFS authentication issue https://github.com/Azure/azure-cli/issues/4448 + 0.3.6 (2017-08-16) ++++++++++++++++++ diff --git a/azure-keyvault/azure/keyvault/version.py b/azure-keyvault/azure/keyvault/version.py index fe1356693744..3b613fee836a 100755 --- a/azure-keyvault/azure/keyvault/version.py +++ b/azure-keyvault/azure/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "0.3.6" +VERSION = "0.3.7" diff --git a/swagger_to_sdk_config.json b/swagger_to_sdk_config.json index 9de4664586c7..44d2265adba3 100644 --- a/swagger_to_sdk_config.json +++ b/swagger_to_sdk_config.json @@ -236,7 +236,7 @@ "markdown": "specification/keyvault/data-plane/readme.md", "autorest_options": { "namespace": "azure.keyvault", - "package-version": "0.3.6" + "package-version": "0.3.7" }, "wrapper_filesOrDirs": [ "custom", From d91b01557c12352ceaa3c0b9c3713d492f0b4ac5 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Thu, 12 Oct 2017 13:38:05 -0700 Subject: [PATCH 02/49] adding http_challange to support pop and bearer challanges --- azure-keyvault/azure/keyvault/__init__.py | 2 + .../azure/keyvault/custom/http_challenge.py | 82 +++++++++++++++++++ .../custom/key_vault_authentication.py | 21 +++-- 3 files changed, 97 insertions(+), 8 deletions(-) create mode 100644 azure-keyvault/azure/keyvault/custom/http_challenge.py diff --git a/azure-keyvault/azure/keyvault/__init__.py b/azure-keyvault/azure/keyvault/__init__.py index 04c2e04ae9ee..5a8ae9c5a2d1 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, @@ -34,6 +35,7 @@ 'StorageSasDefinitionId', 'HttpBearerChallengeCache', 'HttpBearerChallenge', + 'HttpChallenge', 'KeyVaultAuthentication', 'KeyVaultAuthBase'] 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..6971c58c77b1 --- /dev/null +++ b/azure-keyvault/azure/keyvault/custom/http_challenge.py @@ -0,0 +1,82 @@ +#--------------------------------------------------------------------------------------------- +# 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): + """ 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(' ', 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') + + 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 _validate_challenge(self, challenge): + """ Verifies that the challenge is a valid auth challenge and returns the key=value pairs. """ + bearer_string = 'Bearer ' + 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/key_vault_authentication.py b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py index faf7b16e052e..881d07777cee 100644 --- a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py +++ b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py @@ -7,7 +7,7 @@ import requests from requests.auth import AuthBase from requests.cookies import extract_cookies_to_jar -from azure.keyvault import HttpBearerChallenge +from azure.keyvault import HttpChallenge from azure.keyvault import HttpBearerChallengeCache as ChallengeCache from msrest.authentication import OAuthTokenAuthentication @@ -75,21 +75,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 + # check if the header + + # parse the challenge + challenge = HttpChallenge(auth_header) + + # if the response auth header is not a bearer challenge do not auth and return response + if challenge.is_bearer_challenge(): + self._thread_local.auth_attempted = False + return response + if self._thread_local.pos is not None: # Rewind the file position indicator of the body to where # it was to resend the request. From 35fdd5c35fb176200202f1955e28988d49220d1b Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Wed, 15 Nov 2017 16:29:26 -0800 Subject: [PATCH 03/49] adding classes for jose object handling --- .../azure/keyvault/custom/http_challenge.py | 22 +++++++++- .../keyvault/custom/http_message_security.py | 25 ++++++++++++ azure-keyvault/azure/keyvault/custom/jose.py | 8 ++++ .../custom/key_vault_authentication.py | 40 ++++++++++--------- 4 files changed, 76 insertions(+), 19 deletions(-) create mode 100644 azure-keyvault/azure/keyvault/custom/http_message_security.py create mode 100644 azure-keyvault/azure/keyvault/custom/jose.py diff --git a/azure-keyvault/azure/keyvault/custom/http_challenge.py b/azure-keyvault/azure/keyvault/custom/http_challenge.py index 6971c58c77b1..5787e86c0b45 100644 --- a/azure-keyvault/azure/keyvault/custom/http_challenge.py +++ b/azure-keyvault/azure/keyvault/custom/http_challenge.py @@ -19,7 +19,7 @@ def __init__(self, request_uri, challenge): # get the scheme of the challenge and remove from the challenge string trimmed_challenge = self._validate_challenge(challenge) - split_challenge = trimmed_challenge(' ', 1) + split_challenge = trimmed_challenge.split(' ', 1) self.scheme = split_challenge[0] trimmed_challenge = split_challenge[1] @@ -58,6 +58,26 @@ def is_pop_challenge(self): 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 _validate_challenge(self, challenge): """ Verifies that the challenge is a valid auth challenge and returns the key=value pairs. """ bearer_string = 'Bearer ' 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..4baf1a8dbbc2 --- /dev/null +++ b/azure-keyvault/azure/keyvault/custom/http_message_security.py @@ -0,0 +1,25 @@ +#--------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +#--------------------------------------------------------------------------------------------- + + +class HttpMessageSecurity(object): + 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): + + # get the original body + return request + + def unprotect_response(self, response): + return response diff --git a/azure-keyvault/azure/keyvault/custom/jose.py b/azure-keyvault/azure/keyvault/custom/jose.py new file mode 100644 index 000000000000..9bee2116a6ee --- /dev/null +++ b/azure-keyvault/azure/keyvault/custom/jose.py @@ -0,0 +1,8 @@ +#--------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +#--------------------------------------------------------------------------------------------- + + +class HttpMessageSecurity(object): + diff --git a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py index 881d07777cee..43fc4a18986b 100644 --- a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py +++ b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py @@ -31,6 +31,7 @@ def __init__(self, authorization_callback): self._thread_local = threading.local() self._thread_local.pos = None self._thread_local.auth_attempted = False + self._thread_local.orig_body = None def __call__(self, request): """ @@ -46,16 +47,22 @@ def __call__(self, request): # if challenge cached, use the authorization_callback to retrieve token and update the request self.set_authorization_header(request, challenge) else: + # 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 # 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 + ## try: + ## self._thread_local.pos = request.body.tell() + ## except AttributeError: + ## self._thread_local.pos = None + - self._thread_local.auth_attempted = False - request.register_hook('response', self.handle_401) - request.register_hook('response', self.handle_redirect) return request @@ -85,23 +92,15 @@ def handle_401(self, response, **kwargs): # Otherwise authenticate and retry the request self._thread_local.auth_attempted = True - # check if the header - # parse the challenge - challenge = HttpChallenge(auth_header) + challenge = HttpChallenge(response.request.url, auth_header) - # if the response auth header is not a bearer challenge do not auth and return response - if challenge.is_bearer_challenge(): + # 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 - 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) - # 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 @@ -111,6 +110,11 @@ 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) From 1cce33cbfbcfb2381362d9fa01fc6dd966e6ecad Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Thu, 30 Nov 2017 18:10:14 -0800 Subject: [PATCH 04/49] message encryption updates from testing --- .../azure/keyvault/custom/http_challenge.py | 14 +- .../keyvault/custom/http_message_security.py | 162 ++++++++++++- .../azure/keyvault/custom/internal.py | 225 ++++++++++++++++++ azure-keyvault/azure/keyvault/custom/jose.py | 86 ++++++- .../custom/key_vault_authentication.py | 108 ++++++--- .../azure/keyvault/custom/rsa_key.py | 188 +++++++++++++++ 6 files changed, 747 insertions(+), 36 deletions(-) create mode 100644 azure-keyvault/azure/keyvault/custom/internal.py create mode 100644 azure-keyvault/azure/keyvault/custom/rsa_key.py diff --git a/azure-keyvault/azure/keyvault/custom/http_challenge.py b/azure-keyvault/azure/keyvault/custom/http_challenge.py index 5787e86c0b45..a3e0eec76b67 100644 --- a/azure-keyvault/azure/keyvault/custom/http_challenge.py +++ b/azure-keyvault/azure/keyvault/custom/http_challenge.py @@ -11,7 +11,7 @@ class HttpChallenge(object): - def __init__(self, request_uri, challenge): + def __init__(self, request_uri, challenge, response_headers): """ Parses an HTTP WWW-Authentication Bearer challenge from a server. """ self.source_authority = self._validate_request_uri(request_uri) self.source_uri = request_uri @@ -42,6 +42,10 @@ def __init__(self, request_uri, challenge): if 'authorization' not in self._parameters and 'authorization_uri' not in self._parameters: raise ValueError('Invalid challenge parameters') + # get the message signing key and message key encryption key from the headers + self.server_signature_key = response_headers.get('x-ms-message-key-encryption-key', None) + self.server_encryption_key = response_headers.get('x-ms-message-key-encryption-key', None) + def is_bearer_challenge(self): """ Tests whether the HttpChallenge a Bearer challenge. rtype: bool """ @@ -78,6 +82,14 @@ 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', None) == 'true' + + def supports_message_protection(self): + """ Returns True if challenge vault supports message protection """ + return True if self.supports_pop() and self.server_encryption_key and self.server_signature_key else False + def _validate_challenge(self, challenge): """ Verifies that the challenge is a valid auth challenge and returns the key=value pairs. """ bearer_string = 'Bearer ' diff --git a/azure-keyvault/azure/keyvault/custom/http_message_security.py b/azure-keyvault/azure/keyvault/custom/http_message_security.py index 4baf1a8dbbc2..0db6cca3f5ec 100644 --- a/azure-keyvault/azure/keyvault/custom/http_message_security.py +++ b/azure-keyvault/azure/keyvault/custom/http_message_security.py @@ -3,6 +3,18 @@ # Licensed under the MIT License. See License.txt in the project root for license information. #--------------------------------------------------------------------------------------------- +import json +import time +import uuid +import os +from .internal import _a128cbc_hs256_encrypt, _a128cbc_hs256_decrypt, JwsHeader, JwsObject, \ + JweHeader, JweObject, _str_to_b64, _b64_to_str, _bstr_to_b64, _b64_to_bstr +from .rsa_key import RsaKey + + +def generate_pop_key(): + return RsaKey.generate() + class HttpMessageSecurity(object): def __init__(self, client_security_token=None, @@ -18,8 +30,154 @@ def __init__(self, client_security_token=None, def protect_request(self, request): - # get the original body + print('\nunprotected request:') + print(request.body) + + # print('request=' + request.body) + # 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'] = self.client_encryption_key.to_jwk().serialize() + plain_text = json.dumps(body_dict).encode() + + # 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_b64(self.client_signature_key.sign(data)) + + request.headers['Content-Type'] = 'application/jose+json' + + request.prepare_body(data=jws.to_flattened_jws(), files=None) + + # print('request=' + request.body) + # return the protected request + print('\nprotected request:') + print(request.body) + return request - def unprotect_response(self, response): + def unprotect_response(self, response, **kwargs): + body = response.content + print('\nprotected response:') + print(body) + # 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) + + print('\nresponse:') + print(body) + response._content = decrypted + response.headers['Content-Type'] = 'application/json' return response + + def supports_protection(self): + 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_b64(iv) + # wrap the cek using the server encryption key + wrapped = _bstr_to_b64(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_b64(ciphertext) + jwe.tag = _bstr_to_b64(tag) + + # flatten and encode the jwe for the final jws payload content + flat = jwe.to_flattened_jwe() + return _str_to_b64(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 encrtyption 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..256aaa2825d2 --- /dev/null +++ b/azure-keyvault/azure/keyvault/custom/internal.py @@ -0,0 +1,225 @@ +#--------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +#--------------------------------------------------------------------------------------------- + +import hmac +import hashlib +import struct +import json +import codecs +from base64 import b64encode, b64decode +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.backends import default_backend + + +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 data so it is a multiple of blocksize + # pkcs7 padding is expected to the pad bytes are the value of the number of pad bytes added + padlen = 16 - len(plaintext) % 16 + padval = _int_to_bytes(padlen) + plaintext += padval * padlen + + # 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 + tag = hmac.new(key=hmac_key, msg=hashdata, digestmod=hashlib.sha256).digest()[: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') + + hmac_key = key[:16] + aes_key = key[16:32] + auth_data_length = _int_to_bigendian_8_bytes(len(authdata) * 8) + + hashdata = authdata + iv + ciphertext + auth_data_length + tag = hmac.new(key=hmac_key, msg=hashdata, digestmod=hashlib.sha256).digest()[:16] + + if 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() + + # remove the pad bytes for pkcs7 the # of pad bytes == the value of the last byte + padlen = plaintext[-1] + plaintext = plaintext[:-1 * padlen] + + return plaintext + + +def _bytes_to_int(b): + 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_b64(bstr, **kwargs): + """Serialize str into base-64 string. + :param str: Object to be serialized. + :rtype: str + """ + encoded = b64encode(bstr).decode() + return encoded.strip('=').replace('+', '-').replace('/', '_') + + +def _str_to_b64(s, **kwargs): + """Serialize str into base-64 string. + :param str: Object to be serialized. + :rtype: str + """ + return _bstr_to_b64(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: bytearray + :raises: TypeError if string format invalid. + """ + return _b64_to_bstr(b64str).decode('utf8') + +def _int_to_bigendian_8_bytes(i): + #return struct.pack('>I', i) + b = _int_to_bytes(i) + + 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_b64(self.serialize()) + +class JoseHeader(JoseObject): + + def __init__(self): + pass + + def to_compact_header(self): + return _str_to_b64(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__) \ No newline at end of file diff --git a/azure-keyvault/azure/keyvault/custom/jose.py b/azure-keyvault/azure/keyvault/custom/jose.py index 9bee2116a6ee..94b969ae7009 100644 --- a/azure-keyvault/azure/keyvault/custom/jose.py +++ b/azure-keyvault/azure/keyvault/custom/jose.py @@ -2,7 +2,91 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. #--------------------------------------------------------------------------------------------- +import codecs +import json +import cryptography +from ..models import JsonWebKey +from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateNumbers, RSAPublicNumbers, \ + generate_private_key, rsa_crt_dmp1, rsa_crt_dmq1, rsa_crt_iqmp +from base64 import b64encode, b64decode +import os +import hmac +import hashlib +def _str_to_b64(str, **kwargs): + """Serialize str into base-64 string. + :param str: Object to be serialized. + :rtype: str + """ + encoded = b64encode(str.encode('ascii')).decode('ascii') + return encoded.strip('=').replace('+', '-').replace('/', '_') -class HttpMessageSecurity(object): + +def _b64_to_str(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).decode('ascii') + + +class JoseHeader(object): + + def __init__(self): + pass + + def to_compact_header(self): + return _str_to_b64(json.dumps(self.__dict__)) + + +class JweHeader(object): + def __init__(self, alg=None, kek_id=None, enc=None): + self.alg = alg + self.kek_id = kek_id + self.enc = enc + + @staticmethod + def from_compact_header(compact): + header = JweHeader() + header.__dict__ = json.loads(_b64_to_str(compact)) + + +class JweObject(object): + 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.') + + json.dumps(self.__dict__) + +class JwsHeader(object): + 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)) + + +class JwsObject(object): + def __init__(self): + self.protected = None + self.payload = None + self.signature = None diff --git a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py index 43fc4a18986b..14b1d3f75d2e 100644 --- a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py +++ b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py @@ -5,11 +5,31 @@ 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 HttpChallenge from azure.keyvault import HttpBearerChallengeCache as ChallengeCache from msrest.authentication import OAuthTokenAuthentication +from .http_message_security import HttpMessageSecurity +from ..models import JsonWebKey +from .rsa_key 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,17 +42,26 @@ 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): """ Called prior to requests being sent. @@ -44,34 +73,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 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) + request.register_hook('response', self._handle_401) + request.register_hook('response', self._handle_redirect) self._thread_local.auth_attempted = False - # 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 - - 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 @@ -93,8 +118,9 @@ def handle_401(self, response, **kwargs): self._thread_local.auth_attempted = True # parse the challenge - challenge = HttpChallenge(response.request.url, auth_header) + 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 @@ -118,25 +144,43 @@ def handle_401(self, response, **kwargs): 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) + + # auth and protect the prepped request message + security.protect_request(prep) - # resend the request with proper authentication + # 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 - # 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]) + # 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' + + # 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 = token.key + 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): @@ -172,12 +216,12 @@ 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 diff --git a/azure-keyvault/azure/keyvault/custom/rsa_key.py b/azure-keyvault/azure/keyvault/custom/rsa_key.py new file mode 100644 index 000000000000..7adc001a25d4 --- /dev/null +++ b/azure-keyvault/azure/keyvault/custom/rsa_key.py @@ -0,0 +1,188 @@ +#--------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +#--------------------------------------------------------------------------------------------- + +import codecs +import json +import cryptography +import uuid +from ..models import JsonWebKey +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 +from cryptography.hazmat.primitives import hashes +from .internal import _int_to_bytes, _bytes_to_int + + +def _default_encryption_padding(): + return padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), label=None) + + +def _default_signature_padding(): + return 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 b(self): + return _int_to_bytes(self._private_key_material().b) 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()) + + # set the appropriate callbacks for retrieving the public and private key material + key._private_key_material = key._rsa_impl.private_numbers + key._public_key_material = key._rsa_impl.public_key().public_numbers + + 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, p=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 contains no private key material and 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 contains no private key material and 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): + self.public_key.public_numbers() + + def _private_key_material(self): + self.private_key.private_numbers() if self.private_key else None + + + + From 86ad403385060319d94bacb96987b717689054e5 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Fri, 8 Dec 2017 11:10:33 -0800 Subject: [PATCH 05/49] removing print statements used for debugging --- .../azure/keyvault/custom/http_message_security.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/azure-keyvault/azure/keyvault/custom/http_message_security.py b/azure-keyvault/azure/keyvault/custom/http_message_security.py index 0db6cca3f5ec..1f79b1c43c2f 100644 --- a/azure-keyvault/azure/keyvault/custom/http_message_security.py +++ b/azure-keyvault/azure/keyvault/custom/http_message_security.py @@ -29,11 +29,6 @@ def __init__(self, client_security_token=None, self.server_encryption_key = server_encryption_key def protect_request(self, request): - - print('\nunprotected request:') - print(request.body) - - # print('request=' + request.body) # 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: @@ -75,17 +70,10 @@ def protect_request(self, request): request.prepare_body(data=jws.to_flattened_jws(), files=None) - # print('request=' + request.body) - # return the protected request - print('\nprotected request:') - print(request.body) - return request def unprotect_response(self, response, **kwargs): body = response.content - print('\nprotected response:') - print(body) # 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: @@ -115,8 +103,6 @@ def unprotect_response(self, response, **kwargs): # get the unprotected response body decrypted = self._unprotect_payload(jws.payload) - print('\nresponse:') - print(body) response._content = decrypted response.headers['Content-Type'] = 'application/json' return response From 75566ef884a7454b6fb11de61a63dcf106d80faa Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Mon, 11 Dec 2017 17:33:03 -0800 Subject: [PATCH 06/49] fixing keyvault test base and adding docstrings --- .../keyvault/custom/http_message_security.py | 24 +++++++++++++++++++ .../azure/keyvault/custom/rsa_key.py | 1 - azure-mgmt/tests/keyvault_testcase.py | 6 ++--- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/azure-keyvault/azure/keyvault/custom/http_message_security.py b/azure-keyvault/azure/keyvault/custom/http_message_security.py index 1f79b1c43c2f..8b89b745e290 100644 --- a/azure-keyvault/azure/keyvault/custom/http_message_security.py +++ b/azure-keyvault/azure/keyvault/custom/http_message_security.py @@ -13,10 +13,20 @@ 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, @@ -29,6 +39,11 @@ def __init__(self, client_security_token=None, 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: @@ -73,6 +88,11 @@ def protect_request(self, request): 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 @@ -108,6 +128,10 @@ def unprotect_response(self, response, **kwargs): 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 \ diff --git a/azure-keyvault/azure/keyvault/custom/rsa_key.py b/azure-keyvault/azure/keyvault/custom/rsa_key.py index 7adc001a25d4..d6fed09de5c6 100644 --- a/azure-keyvault/azure/keyvault/custom/rsa_key.py +++ b/azure-keyvault/azure/keyvault/custom/rsa_key.py @@ -3,7 +3,6 @@ # Licensed under the MIT License. See License.txt in the project root for license information. #--------------------------------------------------------------------------------------------- -import codecs import json import cryptography import uuid diff --git a/azure-mgmt/tests/keyvault_testcase.py b/azure-mgmt/tests/keyvault_testcase.py index 5da788478902..75398f04fcf1 100644 --- a/azure-mgmt/tests/keyvault_testcase.py +++ b/azure-mgmt/tests/keyvault_testcase.py @@ -13,7 +13,7 @@ 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.keyvault import KeyVaultClient, KeyVaultAuthentication, KeyVaultAuthBase, HttpChallenge from azure.common.exceptions import ( CloudError @@ -124,8 +124,8 @@ def setUp(self): 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) + challenge = HttpChallenge(request.url, 'Bearer authorization=fake-url,resource=https://vault.azure.net') + security = self._get_message_security(request, challenge) return request self.fake_settings = fake_settings From 455c66ba224d704bc0790688a7368617336adc7f Mon Sep 17 00:00:00 2001 From: Jeff Simmer Date: Tue, 12 Dec 2017 17:53:45 -0800 Subject: [PATCH 07/49] Updating http challenge headers for message protection --- azure-keyvault/azure/keyvault/custom/http_challenge.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/azure-keyvault/azure/keyvault/custom/http_challenge.py b/azure-keyvault/azure/keyvault/custom/http_challenge.py index a3e0eec76b67..f7fdef9dac97 100644 --- a/azure-keyvault/azure/keyvault/custom/http_challenge.py +++ b/azure-keyvault/azure/keyvault/custom/http_challenge.py @@ -43,8 +43,8 @@ def __init__(self, request_uri, challenge, response_headers): raise ValueError('Invalid challenge parameters') # get the message signing key and message key encryption key from the headers - self.server_signature_key = response_headers.get('x-ms-message-key-encryption-key', None) - self.server_encryption_key = response_headers.get('x-ms-message-key-encryption-key', None) + 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. From d649ff7c1d63c33c1ea25a1d3916b441e7ccc6ea Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Thu, 14 Dec 2017 02:54:54 -0800 Subject: [PATCH 08/49] Add backwards compatible ctor for HttpChallange --- azure-keyvault/azure/keyvault/custom/http_challenge.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/azure-keyvault/azure/keyvault/custom/http_challenge.py b/azure-keyvault/azure/keyvault/custom/http_challenge.py index f7fdef9dac97..238f857570cf 100644 --- a/azure-keyvault/azure/keyvault/custom/http_challenge.py +++ b/azure-keyvault/azure/keyvault/custom/http_challenge.py @@ -11,7 +11,7 @@ class HttpChallenge(object): - def __init__(self, request_uri, challenge, response_headers): + 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 @@ -42,9 +42,11 @@ def __init__(self, request_uri, challenge, response_headers): if 'authorization' not in self._parameters and 'authorization_uri' not in self._parameters: raise ValueError('Invalid challenge parameters') - # 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) + # 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. From 96f4cacb7328483f329b04a5eb3957129724b891 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Thu, 14 Dec 2017 03:58:52 -0800 Subject: [PATCH 09/49] removing custom\jose.py as its contents has been moved to custom\internal.py --- azure-keyvault/azure/keyvault/custom/jose.py | 92 -------------------- 1 file changed, 92 deletions(-) delete mode 100644 azure-keyvault/azure/keyvault/custom/jose.py diff --git a/azure-keyvault/azure/keyvault/custom/jose.py b/azure-keyvault/azure/keyvault/custom/jose.py deleted file mode 100644 index 94b969ae7009..000000000000 --- a/azure-keyvault/azure/keyvault/custom/jose.py +++ /dev/null @@ -1,92 +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 codecs -import json -import cryptography -from ..models import JsonWebKey -from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateNumbers, RSAPublicNumbers, \ - generate_private_key, rsa_crt_dmp1, rsa_crt_dmq1, rsa_crt_iqmp -from base64 import b64encode, b64decode -import os -import hmac -import hashlib - -def _str_to_b64(str, **kwargs): - """Serialize str into base-64 string. - :param str: Object to be serialized. - :rtype: str - """ - encoded = b64encode(str.encode('ascii')).decode('ascii') - return encoded.strip('=').replace('+', '-').replace('/', '_') - - -def _b64_to_str(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).decode('ascii') - - -class JoseHeader(object): - - def __init__(self): - pass - - def to_compact_header(self): - return _str_to_b64(json.dumps(self.__dict__)) - - -class JweHeader(object): - def __init__(self, alg=None, kek_id=None, enc=None): - self.alg = alg - self.kek_id = kek_id - self.enc = enc - - @staticmethod - def from_compact_header(compact): - header = JweHeader() - header.__dict__ = json.loads(_b64_to_str(compact)) - - -class JweObject(object): - 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.') - - json.dumps(self.__dict__) - -class JwsHeader(object): - 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)) - - -class JwsObject(object): - def __init__(self): - self.protected = None - self.payload = None - self.signature = None - From 428f7f0ce4f2ff7605825077edf841089a6c7512 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Thu, 14 Dec 2017 04:48:38 -0800 Subject: [PATCH 10/49] updates for PR feedback --- .../azure/keyvault/custom/http_challenge.py | 5 +-- .../keyvault/custom/http_message_security.py | 20 ++++----- .../azure/keyvault/custom/internal.py | 44 ++++++++++++------- .../azure/keyvault/custom/rsa_key.py | 8 ++-- 4 files changed, 45 insertions(+), 32 deletions(-) diff --git a/azure-keyvault/azure/keyvault/custom/http_challenge.py b/azure-keyvault/azure/keyvault/custom/http_challenge.py index 238f857570cf..ca80f17d01fb 100644 --- a/azure-keyvault/azure/keyvault/custom/http_challenge.py +++ b/azure-keyvault/azure/keyvault/custom/http_challenge.py @@ -86,15 +86,14 @@ def get_scope(self): def supports_pop(self): """ Returns True if challenge supports pop token auth else False """ - return self._parameters.get('supportspop', None) == 'true' + return self._parameters.get('supportspop', None).lower() == 'true' def supports_message_protection(self): """ Returns True if challenge vault supports message protection """ - return True if self.supports_pop() and self.server_encryption_key and self.server_signature_key else False + 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. """ - bearer_string = 'Bearer ' if not challenge: raise ValueError('Challenge cannot be empty') diff --git a/azure-keyvault/azure/keyvault/custom/http_message_security.py b/azure-keyvault/azure/keyvault/custom/http_message_security.py index 8b89b745e290..30a1d45420d5 100644 --- a/azure-keyvault/azure/keyvault/custom/http_message_security.py +++ b/azure-keyvault/azure/keyvault/custom/http_message_security.py @@ -5,16 +5,15 @@ import json import time -import uuid import os from .internal import _a128cbc_hs256_encrypt, _a128cbc_hs256_decrypt, JwsHeader, JwsObject, \ - JweHeader, JweObject, _str_to_b64, _b64_to_str, _bstr_to_b64, _b64_to_bstr + JweHeader, JweObject, _str_to_b64url, _bstr_to_b64url, _b64_to_bstr from .rsa_key import RsaKey def generate_pop_key(): """ - Generates a key which can be used for Proof Of Possession token authentication. + Generates a key which can be used for Proof Of Possession token authentication. :return: """ return RsaKey.generate() @@ -64,7 +63,7 @@ def protect_request(self, request): # need to be revisited when the types of body_dict = json.loads(plain_text) body_dict['rek'] = self.client_encryption_key.to_jwk().serialize() - plain_text = json.dumps(body_dict).encode() + plain_text = json.dumps(body_dict).encode(encoding='utf8') # build the header for the jws body jws_header = JwsHeader() @@ -79,7 +78,7 @@ def protect_request(self, request): 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_b64(self.client_signature_key.sign(data)) + jws.signature = _bstr_to_b64url(self.client_signature_key.sign(data)) request.headers['Content-Type'] = 'application/jose+json' @@ -125,6 +124,7 @@ def unprotect_response(self, response, **kwargs): response._content = decrypted response.headers['Content-Type'] = 'application/json' + return response def supports_protection(self): @@ -152,21 +152,21 @@ def _protect_payload(self, plaintext): # generate the content encryption key and iv cek = os.urandom(32) iv = os.urandom(16) - jwe.iv = _bstr_to_b64(iv) + jwe.iv = _bstr_to_b64url(iv) # wrap the cek using the server encryption key - wrapped = _bstr_to_b64(kek.encrypt(cek)) + 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_b64(ciphertext) - jwe.tag = _bstr_to_b64(tag) + 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_b64(flat) + return _str_to_b64url(flat) def _unprotect_payload(self, payload): # deserialize the payload diff --git a/azure-keyvault/azure/keyvault/custom/internal.py b/azure-keyvault/azure/keyvault/custom/internal.py index 256aaa2825d2..3ac69f9bfb98 100644 --- a/azure-keyvault/azure/keyvault/custom/internal.py +++ b/azure-keyvault/azure/keyvault/custom/internal.py @@ -5,7 +5,6 @@ import hmac import hashlib -import struct import json import codecs from base64 import b64encode, b64decode @@ -13,6 +12,16 @@ from cryptography.hazmat.backends import default_backend +def _const_time_compare(bstr_1, bstr_2): + eq = len(bstr_1) == len(bstr_2) + + for i in range(min(len(bstr_1), len(bstr_2))): + eq &= bstr_1[i] == bstr_2[i] + + return eq + + + 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"') @@ -31,7 +40,7 @@ def _a128cbc_hs256_encrypt(key, iv, plaintext, authdata): auth_data_length = _int_to_bigendian_8_bytes(len(authdata) * 8) # pad the data so it is a multiple of blocksize - # pkcs7 padding is expected to the pad bytes are the value of the number of pad bytes added + # pkcs7 padding dictates the pad bytes are the value of the number of pad bytes added padlen = 16 - len(plaintext) % 16 padval = _int_to_bytes(padlen) plaintext += padval * padlen @@ -62,17 +71,21 @@ def _a128cbc_hs256_decrypt(key, iv, ciphertext, authdata, authtag): 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 tag = hmac.new(key=hmac_key, msg=hashdata, digestmod=hashlib.sha256).digest()[:16] - if tag != authtag: - raise ValueError('"ciphertext" is not authentic.') + if not _const_time_compare(tag, authtag): + raise ValueError('"ciphertext" is not authentic') - cipher = Cipher(algorithms.AES(aes_key), modes.CBC(iv),backend=default_backend()) + cipher = Cipher(algorithms.AES(aes_key), modes.CBC(iv), backend=default_backend()) decryptor = cipher.decryptor() plaintext = decryptor.update(ciphertext) + decryptor.finalize() - # remove the pad bytes for pkcs7 the # of pad bytes == the value of the last byte + # remove the pad bytes (for pkcs7 the # of pad bytes == the value of the last byte) padlen = plaintext[-1] plaintext = plaintext[:-1 * padlen] @@ -96,7 +109,7 @@ def _int_to_bytes(i): return codecs.decode(h, 'hex') -def _bstr_to_b64(bstr, **kwargs): +def _bstr_to_b64url(bstr, **kwargs): """Serialize str into base-64 string. :param str: Object to be serialized. :rtype: str @@ -105,12 +118,12 @@ def _bstr_to_b64(bstr, **kwargs): return encoded.strip('=').replace('+', '-').replace('/', '_') -def _str_to_b64(s, **kwargs): +def _str_to_b64url(s, **kwargs): """Serialize str into base-64 string. :param str: Object to be serialized. :rtype: str """ - return _bstr_to_b64(s.encode(encoding='utf8')) + return _bstr_to_b64url(s.encode(encoding='utf8')) def _b64_to_bstr(b64str): @@ -133,8 +146,8 @@ def _b64_to_str(b64str): """ return _b64_to_bstr(b64str).decode('utf8') + def _int_to_bigendian_8_bytes(i): - #return struct.pack('>I', i) b = _int_to_bytes(i) if len(b) < 8: @@ -142,6 +155,7 @@ def _int_to_bigendian_8_bytes(i): return b + class JoseObject(object): def deserialize(self, s): @@ -157,15 +171,13 @@ def serialize(self): return json.dumps(self.__dict__) def serialize_b64url(self): - return _str_to_b64(self.serialize()) + return _str_to_b64url(self.serialize()) -class JoseHeader(JoseObject): - def __init__(self): - pass +class JoseHeader(JoseObject): def to_compact_header(self): - return _str_to_b64(json.dumps(self.__dict__)) + return _str_to_b64url(json.dumps(self.__dict__)) class JweHeader(JoseHeader): @@ -222,4 +234,4 @@ def to_flattened_jws(self): if not (self.protected, self.payload, self.signature): raise ValueError('JWS is not complete.') - return json.dumps(self.__dict__) \ No newline at end of file + return json.dumps(self.__dict__) diff --git a/azure-keyvault/azure/keyvault/custom/rsa_key.py b/azure-keyvault/azure/keyvault/custom/rsa_key.py index d6fed09de5c6..ea87aac02f99 100644 --- a/azure-keyvault/azure/keyvault/custom/rsa_key.py +++ b/azure-keyvault/azure/keyvault/custom/rsa_key.py @@ -81,7 +81,9 @@ def generate(kid=None, kty='RSA', size=2048, e=65537): 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()) + key._rsa_impl = generate_private_key(public_exponent=e, + key_size=size, + backend=cryptography.hazmat.backends.default_backend()) # set the appropriate callbacks for retrieving the public and private key material key._private_key_material = key._rsa_impl.private_numbers @@ -160,13 +162,13 @@ def encrypt(self, plaintext, padding=_default_encryption_padding()): def decrypt(self, ciphertext, padding=_default_encryption_padding()): if not self.is_private_key(): - raise NotImplementedError('The current RsaKey contains no private key material and does not support decrypt') + 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 contains no private key material and does not support sign') + raise NotImplementedError('The current RsaKey does not support sign') return self.private_key.sign(data, padding, algorithm) From a061befa7f9b558d8a032f168c8876dcd7c75825 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Thu, 14 Dec 2017 09:44:17 -0800 Subject: [PATCH 11/49] moving RsaKey class to internal.py and marking internal classes with _ --- .../keyvault/custom/http_message_security.py | 23 +- .../azure/keyvault/custom/internal.py | 199 +++++++++++++++++- .../custom/key_vault_authentication.py | 7 +- .../azure/keyvault/custom/rsa_key.py | 189 ----------------- 4 files changed, 204 insertions(+), 214 deletions(-) delete mode 100644 azure-keyvault/azure/keyvault/custom/rsa_key.py diff --git a/azure-keyvault/azure/keyvault/custom/http_message_security.py b/azure-keyvault/azure/keyvault/custom/http_message_security.py index 30a1d45420d5..cbf6a9e74a5a 100644 --- a/azure-keyvault/azure/keyvault/custom/http_message_security.py +++ b/azure-keyvault/azure/keyvault/custom/http_message_security.py @@ -6,9 +6,8 @@ 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 -from .rsa_key import RsaKey +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(): @@ -16,7 +15,7 @@ def generate_pop_key(): Generates a key which can be used for Proof Of Possession token authentication. :return: """ - return RsaKey.generate() + return _RsaKey.generate() class HttpMessageSecurity(object): @@ -66,14 +65,14 @@ def protect_request(self, request): plain_text = json.dumps(body_dict).encode(encoding='utf8') # build the header for the jws body - jws_header = JwsHeader() + 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 = _JwsObject() jws.protected = jws_header.to_compact_header() jws.payload = self._protect_payload(plain_text) @@ -103,10 +102,10 @@ def unprotect_response(self, response, **kwargs): raise ValueError('Invalid protected response') # deserialize the response into a JwsObject, using response.text so requests handles the encoding - jws = JwsObject().deserialize(body) + jws = _JwsObject().deserialize(body) # deserialize the protected header - jws_header = JwsHeader.from_compact_header(jws.protected) + 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 @@ -140,13 +139,13 @@ def supports_protection(self): def _protect_payload(self, plaintext): # create the jwe header for the payload kek = self.server_encryption_key - jwe_header = JweHeader() + 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 = _JweObject() jwe.protected = jwe_header.to_compact_header() # generate the content encryption key and iv @@ -170,10 +169,10 @@ def _protect_payload(self, plaintext): def _unprotect_payload(self, payload): # deserialize the payload - jwe = JweObject().deserialize_b64(payload) + jwe = _JweObject().deserialize_b64(payload) # deserialize the payload header - jwe_header = JweHeader.from_compact_header(jwe.protected) + 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 encrtyption enc match the expected diff --git a/azure-keyvault/azure/keyvault/custom/internal.py b/azure-keyvault/azure/keyvault/custom/internal.py index 3ac69f9bfb98..89c513df41b3 100644 --- a/azure-keyvault/azure/keyvault/custom/internal.py +++ b/azure-keyvault/azure/keyvault/custom/internal.py @@ -3,13 +3,21 @@ # Licensed under the MIT License. See License.txt in the project root for license information. #--------------------------------------------------------------------------------------------- +import json +import uuid import hmac import hashlib -import json 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 +from cryptography.hazmat.primitives import hashes + +from ..models import JsonWebKey def _const_time_compare(bstr_1, bstr_2): @@ -156,7 +164,7 @@ def _int_to_bigendian_8_bytes(i): return b -class JoseObject(object): +class _JoseObject(object): def deserialize(self, s): d = json.loads(s) @@ -174,13 +182,13 @@ def serialize_b64url(self): return _str_to_b64url(self.serialize()) -class JoseHeader(JoseObject): +class _JoseHeader(_JoseObject): def to_compact_header(self): return _str_to_b64url(json.dumps(self.__dict__)) -class JweHeader(JoseHeader): +class _JweHeader(_JoseHeader): def __init__(self, alg=None, kid=None, enc=None): self.alg = alg self.kid = kid @@ -188,12 +196,12 @@ def __init__(self, alg=None, kid=None, enc=None): @staticmethod def from_compact_header(compact): - header = JweHeader() + header = _JweHeader() header.__dict__ = json.loads(_b64_to_str(compact)) return header -class JweObject(JoseObject): +class _JweObject(_JoseObject): def __init__(self): self.protected = None self.encrypted_key = None @@ -208,7 +216,7 @@ def to_flattened_jwe(self): return json.dumps(self.__dict__) -class JwsHeader(JoseHeader): +class _JwsHeader(_JoseHeader): def __init__(self): self.alg = None self.kid = None @@ -219,12 +227,12 @@ def __init__(self): @staticmethod def from_compact_header(compact): - header = JwsHeader() + header = _JwsHeader() header.__dict__ = json.loads(_b64_to_str(compact)) return header -class JwsObject(JoseObject): +class _JwsObject(_JoseObject): def __init__(self): self.protected = None self.payload = None @@ -235,3 +243,176 @@ def to_flattened_jws(self): raise ValueError('JWS is not complete.') return json.dumps(self.__dict__) + + + +def _default_encryption_padding(): + return padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), label=None) + + +def _default_signature_padding(): + return 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 b(self): + return _int_to_bytes(self._private_key_material().b) 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()) + + # set the appropriate callbacks for retrieving the public and private key material + key._private_key_material = key._rsa_impl.private_numbers + key._public_key_material = key._rsa_impl.public_key().public_numbers + + 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, p=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): + self.public_key.public_numbers() + + def _private_key_material(self): + 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 14b1d3f75d2e..e53044c22385 100644 --- a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py +++ b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py @@ -13,8 +13,7 @@ from azure.keyvault import HttpBearerChallengeCache as ChallengeCache from msrest.authentication import OAuthTokenAuthentication from .http_message_security import HttpMessageSecurity -from ..models import JsonWebKey -from .rsa_key import RsaKey +from .internal import _RsaKey AccessToken = namedtuple('AccessToken', ['scheme', 'token', 'key']) @@ -177,8 +176,8 @@ def _get_message_security(self, request, challenge): if scheme == 'PoP': security.client_signature_key = token.key security.client_encryption_key = token.key - security.server_encryption_key = RsaKey.from_jwk_str(challenge.server_encryption_key) - security.server_signature_key = RsaKey.from_jwk_str(challenge.server_signature_key) + 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 diff --git a/azure-keyvault/azure/keyvault/custom/rsa_key.py b/azure-keyvault/azure/keyvault/custom/rsa_key.py deleted file mode 100644 index ea87aac02f99..000000000000 --- a/azure-keyvault/azure/keyvault/custom/rsa_key.py +++ /dev/null @@ -1,189 +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 cryptography -import uuid -from ..models import JsonWebKey -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 -from cryptography.hazmat.primitives import hashes -from .internal import _int_to_bytes, _bytes_to_int - - -def _default_encryption_padding(): - return padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), label=None) - - -def _default_signature_padding(): - return 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 b(self): - return _int_to_bytes(self._private_key_material().b) 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()) - - # set the appropriate callbacks for retrieving the public and private key material - key._private_key_material = key._rsa_impl.private_numbers - key._public_key_material = key._rsa_impl.public_key().public_numbers - - 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, p=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): - self.public_key.public_numbers() - - def _private_key_material(self): - self.private_key.private_numbers() if self.private_key else None - - - - From 7f3295b8fd416228a23ec0b6f8ae89cb0656076e Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Thu, 14 Dec 2017 09:47:43 -0800 Subject: [PATCH 12/49] fixing regression introduced with feedback updates --- azure-keyvault/azure/keyvault/custom/http_challenge.py | 2 +- azure.sln | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/azure-keyvault/azure/keyvault/custom/http_challenge.py b/azure-keyvault/azure/keyvault/custom/http_challenge.py index ca80f17d01fb..e6d75f15f158 100644 --- a/azure-keyvault/azure/keyvault/custom/http_challenge.py +++ b/azure-keyvault/azure/keyvault/custom/http_challenge.py @@ -86,7 +86,7 @@ def get_scope(self): def supports_pop(self): """ Returns True if challenge supports pop token auth else False """ - return self._parameters.get('supportspop', None).lower() == 'true' + return self._parameters.get('supportspop', '').lower() == 'true' def supports_message_protection(self): """ Returns True if challenge vault supports message protection """ 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 From d3df142e8819be7956207163ce0b5aed3df8739a Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 9 Jan 2018 18:12:29 -0800 Subject: [PATCH 13/49] updating cek to be regenerated on each encrypted message --- azure-keyvault/azure/keyvault/custom/http_message_security.py | 4 ++-- .../azure/keyvault/custom/key_vault_authentication.py | 2 +- azure-keyvault/azure/keyvault/version.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/azure-keyvault/azure/keyvault/custom/http_message_security.py b/azure-keyvault/azure/keyvault/custom/http_message_security.py index cbf6a9e74a5a..b2f318a25b3b 100644 --- a/azure-keyvault/azure/keyvault/custom/http_message_security.py +++ b/azure-keyvault/azure/keyvault/custom/http_message_security.py @@ -61,7 +61,7 @@ def protect_request(self, request): # 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'] = self.client_encryption_key.to_jwk().serialize() + 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 @@ -175,7 +175,7 @@ def _unprotect_payload(self, payload): 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 encrtyption enc match the expected + # 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': diff --git a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py index e53044c22385..d990036eee4b 100644 --- a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py +++ b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py @@ -175,7 +175,7 @@ def _get_message_security(self, request, challenge): # 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 = 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) diff --git a/azure-keyvault/azure/keyvault/version.py b/azure-keyvault/azure/keyvault/version.py index 3b613fee836a..9cbce5b7994c 100755 --- a/azure-keyvault/azure/keyvault/version.py +++ b/azure-keyvault/azure/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "0.3.7" +VERSION = "0.3.8+dev" From bd0be97a97fa2fd0ba7c9be749e237058f2b399a Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Wed, 24 Jan 2018 13:32:03 -0800 Subject: [PATCH 14/49] adding tests for internals used in message encryption --- azure-keyvault/azure/keyvault/__init__.py | 7 +- .../azure/keyvault/custom/internal.py | 43 ++- azure-keyvault/tests/test_internal.py | 281 ++++++++++++++++++ 3 files changed, 304 insertions(+), 27 deletions(-) create mode 100644 azure-keyvault/tests/test_internal.py diff --git a/azure-keyvault/azure/keyvault/__init__.py b/azure-keyvault/azure/keyvault/__init__.py index 5a8ae9c5a2d1..1b62621a32b1 100644 --- a/azure-keyvault/azure/keyvault/__init__.py +++ b/azure-keyvault/azure/keyvault/__init__.py @@ -21,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', @@ -37,7 +38,9 @@ 'HttpBearerChallenge', 'HttpChallenge', 'KeyVaultAuthentication', - 'KeyVaultAuthBase'] + 'KeyVaultAuthBase', + 'generate_pop_key', + 'AccessToken'] __version__ = VERSION diff --git a/azure-keyvault/azure/keyvault/custom/internal.py b/azure-keyvault/azure/keyvault/custom/internal.py index 89c513df41b3..2f726e9a3888 100644 --- a/azure-keyvault/azure/keyvault/custom/internal.py +++ b/azure-keyvault/azure/keyvault/custom/internal.py @@ -8,6 +8,7 @@ import hmac import hashlib import codecs +import six from base64 import b64encode, b64decode import cryptography from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes @@ -15,21 +16,10 @@ 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 -from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives import hashes, constant_time from ..models import JsonWebKey - -def _const_time_compare(bstr_1, bstr_2): - eq = len(bstr_1) == len(bstr_2) - - for i in range(min(len(bstr_1), len(bstr_2))): - eq &= bstr_1[i] == bstr_2[i] - - return eq - - - 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"') @@ -74,6 +64,8 @@ def _a128cbc_hs256_decrypt(key, iv, ciphertext, authdata, authtag): 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] @@ -86,7 +78,7 @@ def _a128cbc_hs256_decrypt(key, iv, ciphertext, authdata, authtag): hashdata = authdata + iv + ciphertext + auth_data_length tag = hmac.new(key=hmac_key, msg=hashdata, digestmod=hashlib.sha256).digest()[:16] - if not _const_time_compare(tag, authtag): + 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()) @@ -101,6 +93,9 @@ def _a128cbc_hs256_decrypt(key, iv, ciphertext, authdata, authtag): 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) @@ -118,7 +113,7 @@ def _int_to_bytes(i): def _bstr_to_b64url(bstr, **kwargs): - """Serialize str into base-64 string. + """Serialize bytes into base-64 string. :param str: Object to be serialized. :rtype: str """ @@ -149,7 +144,7 @@ def _b64_to_bstr(b64str): def _b64_to_str(b64str): """Deserialize base64 encoded string into string. :param str b64str: response string to be deserialized. - :rtype: bytearray + :rtype: str :raises: TypeError if string format invalid. """ return _b64_to_bstr(b64str).decode('utf8') @@ -158,6 +153,9 @@ def _b64_to_str(b64str): 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 @@ -281,8 +279,8 @@ def q(self): return _int_to_bytes(self._private_key_material().q) if self.is_private_key() else None @property - def b(self): - return _int_to_bytes(self._private_key_material().b) if self.is_private_key() else None + def p(self): + return _int_to_bytes(self._private_key_material().p) if self.is_private_key() else None @property def d(self): @@ -317,11 +315,6 @@ def generate(kid=None, kty='RSA', size=2048, e=65537): key._rsa_impl = generate_private_key(public_exponent=e, key_size=size, backend=cryptography.hazmat.backends.default_backend()) - - # set the appropriate callbacks for retrieving the public and private key material - key._private_key_material = key._rsa_impl.private_numbers - key._public_key_material = key._rsa_impl.public_key().public_numbers - return key @staticmethod @@ -358,7 +351,7 @@ def from_jwk(jwk): # 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, p=q) + 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 @@ -412,7 +405,7 @@ def is_private_key(self): return isinstance(self._rsa_impl, RSAPrivateKey) def _public_key_material(self): - self.public_key.public_numbers() + return self.public_key.public_numbers() def _private_key_material(self): - self.private_key.private_numbers() if self.private_key else None + return self.private_key.private_numbers() if self.private_key else None 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')) From 0d5f0d5797c81aa48321b735514d94287fcef3ca Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Wed, 24 Jan 2018 14:57:26 -0800 Subject: [PATCH 15/49] updating aes_hmac encryption / decryption to use cryptography primitives --- .../azure/keyvault/custom/internal.py | 33 +++++++++---------- azure-keyvault/azure/keyvault/version.py | 2 +- azure-keyvault/setup.py | 2 ++ 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/azure-keyvault/azure/keyvault/custom/internal.py b/azure-keyvault/azure/keyvault/custom/internal.py index 2f726e9a3888..f3992e8bde57 100644 --- a/azure-keyvault/azure/keyvault/custom/internal.py +++ b/azure-keyvault/azure/keyvault/custom/internal.py @@ -5,18 +5,15 @@ import json import uuid -import hmac -import hashlib import codecs -import six 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 -from cryptography.hazmat.primitives import hashes, constant_time +from cryptography.hazmat.primitives.asymmetric import padding as asym_padding +from cryptography.hazmat.primitives import hashes, constant_time, padding, hmac from ..models import JsonWebKey @@ -37,11 +34,9 @@ def _a128cbc_hs256_encrypt(key, iv, plaintext, authdata): # calculate the length of authdata and store as bytes auth_data_length = _int_to_bigendian_8_bytes(len(authdata) * 8) - # pad the data so it is a multiple of blocksize - # pkcs7 padding dictates the pad bytes are the value of the number of pad bytes added - padlen = 16 - len(plaintext) % 16 - padval = _int_to_bytes(padlen) - plaintext += padval * padlen + # 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()) @@ -50,7 +45,9 @@ def _a128cbc_hs256_encrypt(key, iv, plaintext, authdata): # get the data to hash with HMAC, hash the data and take the first 16 bytes hashdata = authdata + iv + ciphertext + auth_data_length - tag = hmac.new(key=hmac_key, msg=hashdata, digestmod=hashlib.sha256).digest()[:16] + hmac_hash = hmac.HMAC(hmac_key, hashes.SHA256(), backend=default_backend()) + hmac_hash.update(hashdata) + tag = hmac_hash.finalize()[:16] return ciphertext, tag @@ -76,7 +73,9 @@ def _a128cbc_hs256_decrypt(key, iv, ciphertext, authdata, authtag): raise ValueError('invalid tag') hashdata = authdata + iv + ciphertext + auth_data_length - tag = hmac.new(key=hmac_key, msg=hashdata, digestmod=hashlib.sha256).digest()[:16] + 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') @@ -85,9 +84,9 @@ def _a128cbc_hs256_decrypt(key, iv, ciphertext, authdata, authtag): decryptor = cipher.decryptor() plaintext = decryptor.update(ciphertext) + decryptor.finalize() - # remove the pad bytes (for pkcs7 the # of pad bytes == the value of the last byte) - padlen = plaintext[-1] - plaintext = plaintext[:-1 * padlen] + # unpad the decrypted plaintext + padder = padding.PKCS7(128).unpadder() + plaintext = padder.update(plaintext) + padder.finalize() return plaintext @@ -245,11 +244,11 @@ def to_flattened_jws(self): def _default_encryption_padding(): - return padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), label=None) + return asym_padding.OAEP(mgf=asym_padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), label=None) def _default_signature_padding(): - return padding.PKCS1v15() + return asym_padding.PKCS1v15() def _default_signature_algorithm(): diff --git a/azure-keyvault/azure/keyvault/version.py b/azure-keyvault/azure/keyvault/version.py index 9cbce5b7994c..7cdcf7599b55 100755 --- a/azure-keyvault/azure/keyvault/version.py +++ b/azure-keyvault/azure/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "0.3.8+dev" +VERSION = "1.0.0a1" diff --git a/azure-keyvault/setup.py b/azure-keyvault/setup.py index 0b7013809d72..9afdf69f6df8 100644 --- a/azure-keyvault/setup.py +++ b/azure-keyvault/setup.py @@ -80,6 +80,8 @@ install_requires=[ 'msrestazure~=0.4.7', 'azure-common~=1.1.5', + 'cryptography>=2.4.1', + 'requests>=2.18.4' ], cmdclass=cmdclass ) From 849f57d3e09c9e7530094407892530f41d918345 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Wed, 24 Jan 2018 15:55:42 -0800 Subject: [PATCH 16/49] fixing cyrptography version requirement in setup.py --- azure-keyvault/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-keyvault/setup.py b/azure-keyvault/setup.py index 02abf35472dc..fe80673dae8b 100644 --- a/azure-keyvault/setup.py +++ b/azure-keyvault/setup.py @@ -81,7 +81,7 @@ 'msrestazure>=0.4.15', 'msrest>=0.4.17' 'azure-common~=1.1.5', - 'cryptography>=2.4.1', + 'cryptography>=2.1.4', 'requests>=2.18.4' ], cmdclass=cmdclass From 51acce622c5ffad3b3a7d03eb8c7a5c3c7d7eef6 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Thu, 25 Jan 2018 10:54:12 -0800 Subject: [PATCH 17/49] updating azure-keyvault HISTORY.rst for 1.0.0a1 release --- azure-keyvault/HISTORY.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/azure-keyvault/HISTORY.rst b/azure-keyvault/HISTORY.rst index 7e05f3e7ce42..b676381c9caf 100644 --- a/azure-keyvault/HISTORY.rst +++ b/azure-keyvault/HISTORY.rst @@ -2,6 +2,10 @@ Release History =============== +1.0.0a1 (2018-01-25) +++++++++++++++++++++ +* Added message encryption support for message encryption enabled vaults + 0.3.7 (2017-09-22) ++++++++++++++++++ From 8ab56c69b74329b45e65c8dc0e20e35604cfff1b Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Thu, 1 Feb 2018 14:32:19 -0800 Subject: [PATCH 18/49] updating autorest generated code from 7.0-preview spec --- .../azure/keyvault/generated/__init__.py | 149 --- .../keyvault/generated/models/__init__.py | 143 --- .../azure/keyvault/key_vault_client.py | 1068 +++++++++-------- .../azure/keyvault/models/__init__.py | 4 + .../azure/keyvault/models/action.py | 4 +- .../keyvault/models/administrator_details.py | 1 + .../azure/keyvault/models/attributes.py | 1 + .../keyvault/models/backup_key_result.py | 1 + .../keyvault/models/backup_secret_result.py | 1 + .../keyvault/models/certificate_attributes.py | 4 +- .../keyvault/models/certificate_bundle.py | 9 +- .../models/certificate_create_parameters.py | 9 +- .../models/certificate_import_parameters.py | 9 +- .../models/certificate_issuer_item.py | 1 + .../models/certificate_issuer_item_paged.py | 2 +- .../certificate_issuer_set_parameters.py | 10 +- .../certificate_issuer_update_parameters.py | 10 +- .../azure/keyvault/models/certificate_item.py | 6 +- .../keyvault/models/certificate_item_paged.py | 2 +- .../models/certificate_merge_parameters.py | 8 +- .../keyvault/models/certificate_operation.py | 6 +- .../certificate_operation_update_parameter.py | 1 + .../keyvault/models/certificate_policy.py | 20 +- .../models/certificate_update_parameters.py | 9 +- .../azure/keyvault/models/contact.py | 1 + .../azure/keyvault/models/contacts.py | 4 +- .../models/deleted_certificate_bundle.py | 8 +- .../models/deleted_certificate_item.py | 5 +- .../models/deleted_certificate_item_paged.py | 2 +- .../keyvault/models/deleted_key_bundle.py | 7 +- .../azure/keyvault/models/deleted_key_item.py | 5 +- .../keyvault/models/deleted_key_item_paged.py | 2 +- .../keyvault/models/deleted_secret_bundle.py | 5 +- .../keyvault/models/deleted_secret_item.py | 5 +- .../models/deleted_secret_item_paged.py | 2 +- azure-keyvault/azure/keyvault/models/error.py | 3 +- .../keyvault/models/issuer_attributes.py | 1 + .../azure/keyvault/models/issuer_bundle.py | 10 +- .../keyvault/models/issuer_credentials.py | 1 + .../keyvault/models/issuer_parameters.py | 1 + .../azure/keyvault/models/json_web_key.py | 29 +- .../azure/keyvault/models/key_attributes.py | 4 +- .../azure/keyvault/models/key_bundle.py | 8 +- .../keyvault/models/key_create_parameters.py | 26 +- .../keyvault/models/key_import_parameters.py | 8 +- .../azure/keyvault/models/key_item.py | 6 +- .../azure/keyvault/models/key_item_paged.py | 2 +- .../keyvault/models/key_operation_result.py | 1 + .../models/key_operations_parameters.py | 5 +- .../azure/keyvault/models/key_properties.py | 1 + .../keyvault/models/key_restore_parameters.py | 1 + .../keyvault/models/key_sign_parameters.py | 7 +- .../keyvault/models/key_update_parameters.py | 9 +- .../keyvault/models/key_vault_client_enums.py | 19 + .../azure/keyvault/models/key_vault_error.py | 3 +- .../keyvault/models/key_verify_parameters.py | 7 +- .../keyvault/models/key_verify_result.py | 1 + .../azure/keyvault/models/lifetime_action.py | 5 +- .../keyvault/models/organization_details.py | 4 +- ...ding_certificate_signing_request_result.py | 1 + .../models/sas_definition_attributes.py | 1 + .../keyvault/models/sas_definition_bundle.py | 31 +- .../sas_definition_create_parameters.py | 34 +- .../keyvault/models/sas_definition_item.py | 6 +- .../models/sas_definition_item_paged.py | 2 +- .../sas_definition_update_parameters.py | 30 +- .../keyvault/models/secret_attributes.py | 4 +- .../azure/keyvault/models/secret_bundle.py | 6 +- .../azure/keyvault/models/secret_item.py | 6 +- .../keyvault/models/secret_item_paged.py | 2 +- .../keyvault/models/secret_properties.py | 1 + .../models/secret_restore_parameters.py | 1 + .../keyvault/models/secret_set_parameters.py | 6 +- .../models/secret_update_parameters.py | 6 +- .../models/storage_account_attributes.py | 1 + .../storage_account_create_parameters.py | 7 +- .../keyvault/models/storage_account_item.py | 6 +- .../models/storage_account_item_paged.py | 2 +- ...torage_account_regenerte_key_parameters.py | 1 + .../storage_account_update_parameters.py | 7 +- .../azure/keyvault/models/storage_bundle.py | 6 +- .../models/subject_alternative_names.py | 7 +- .../azure/keyvault/models/trigger.py | 6 +- .../models/x509_certificate_properties.py | 10 +- 84 files changed, 868 insertions(+), 1008 deletions(-) delete mode 100755 azure-keyvault/azure/keyvault/generated/__init__.py delete mode 100755 azure-keyvault/azure/keyvault/generated/models/__init__.py 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 index 3059e3951aef..2529531971e4 100755 --- a/azure-keyvault/azure/keyvault/key_vault_client.py +++ b/azure-keyvault/azure/keyvault/key_vault_client.py @@ -37,7 +37,7 @@ 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 @@ -61,19 +61,19 @@ def __init__( self._client = ServiceClient(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-preview' 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,41 @@ 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 - ` + :type kty: str or ~azure.keyvault.models.JsonWebKeyType :param key_size: The key size in bytes. For example, 1024 or 2048. :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', 'SECP256K1' + :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' 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 +139,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) @@ -162,7 +162,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,23 +171,22 @@ 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` """ @@ -196,7 +196,7 @@ def import_key( url = '/keys/{key-name}' 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 +220,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) @@ -243,7 +243,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,10 +256,9 @@ 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` """ @@ -286,7 +286,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) @@ -310,7 +310,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,22 +321,20 @@ 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` """ @@ -371,7 +369,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) @@ -393,6 +391,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,9 +406,9 @@ 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` """ @@ -438,7 +437,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) @@ -459,7 +458,7 @@ def get_key_versions( """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 +473,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` """ @@ -512,7 +513,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) @@ -536,9 +537,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 +552,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` """ @@ -588,7 +591,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) @@ -622,7 +625,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,10 +638,9 @@ 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` """ @@ -665,7 +668,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) @@ -697,7 +700,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,9 +714,9 @@ 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` """ @@ -745,7 +749,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) @@ -774,7 +778,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 +790,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,10 +799,9 @@ 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` """ @@ -832,7 +836,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) @@ -858,7 +862,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 +874,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,10 +883,9 @@ 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` """ @@ -916,7 +920,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) @@ -938,7 +942,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 +954,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', 'ECDSA256' + :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,10 +965,9 @@ 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` """ @@ -998,7 +1002,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) @@ -1023,7 +1027,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 +1040,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', 'ECDSA256' + :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,10 +1053,9 @@ 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` """ @@ -1085,7 +1090,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) @@ -1111,7 +1116,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 +1128,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,10 +1137,9 @@ 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` """ @@ -1169,7 +1174,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) @@ -1194,7 +1199,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 +1210,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,10 +1219,9 @@ 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` """ @@ -1252,7 +1256,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) @@ -1270,7 +1274,14 @@ def unwrap_key( 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 +1295,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` """ @@ -1322,7 +1334,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) @@ -1341,23 +1353,26 @@ def internal_paging(next_link=None, raw=False): 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` """ @@ -1385,7 +1400,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) @@ -1403,8 +1418,12 @@ def get_deleted_key( 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,9 +1435,8 @@ 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` """ @@ -1446,7 +1464,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) @@ -1457,22 +1475,28 @@ def purge_deleted_key( 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` """ @@ -1500,7 +1524,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) @@ -1522,7 +1546,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,20 +1557,19 @@ 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` """ @@ -1556,7 +1579,7 @@ def set_secret( url = '/secrets/{secret-name}' 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 +1603,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) @@ -1601,7 +1624,8 @@ def delete_secret( """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,10 +1637,9 @@ 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` """ @@ -1644,7 +1667,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) @@ -1667,7 +1690,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,19 +1703,18 @@ 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` """ @@ -1726,7 +1749,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) @@ -1747,7 +1770,7 @@ def get_secret( """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,9 +1784,9 @@ 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` """ @@ -1792,7 +1815,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) @@ -1812,23 +1835,25 @@ 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` """ @@ -1865,7 +1890,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) @@ -1884,12 +1909,11 @@ def internal_paging(next_link=None, raw=False): 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 +1921,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` """ @@ -1943,7 +1968,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) @@ -1962,7 +1987,10 @@ def internal_paging(next_link=None, raw=False): 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 +2004,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` """ @@ -2014,7 +2043,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) @@ -2033,23 +2062,25 @@ def internal_paging(next_link=None, raw=False): 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` """ @@ -2077,7 +2108,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) @@ -2095,22 +2126,25 @@ def get_deleted_secret( 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` """ @@ -2138,7 +2172,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) @@ -2149,22 +2183,25 @@ def purge_deleted_secret( 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` """ @@ -2192,7 +2229,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) @@ -2210,8 +2247,11 @@ def recover_deleted_secret( 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,10 +2263,9 @@ 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` """ @@ -2254,7 +2293,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) @@ -2272,8 +2311,10 @@ def backup_secret( 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,9 +2327,9 @@ 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` """ @@ -2321,7 +2362,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) @@ -2342,7 +2383,8 @@ def get_certificates( """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. @@ -2355,8 +2397,9 @@ def get_certificates( 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` """ @@ -2393,7 +2436,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) @@ -2416,7 +2459,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,10 +2472,9 @@ 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` """ @@ -2459,7 +2502,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) @@ -2479,23 +2522,22 @@ 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` """ @@ -2528,7 +2570,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) @@ -2549,7 +2591,8 @@ def get_certificate_contacts( """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,9 +2602,9 @@ 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` """ @@ -2588,7 +2631,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) @@ -2609,7 +2652,7 @@ def delete_certificate_contacts( """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,9 +2662,9 @@ 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` """ @@ -2648,7 +2691,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) @@ -2669,7 +2712,8 @@ def get_certificate_issuers( """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 +2726,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` """ @@ -2720,7 +2765,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) @@ -2742,7 +2787,8 @@ def set_certificate_issuer( """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,23 +2798,20 @@ 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` """ @@ -2802,7 +2845,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) @@ -2823,7 +2866,8 @@ def update_certificate_issuer( """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,23 +2877,20 @@ 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` """ @@ -2883,7 +2924,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) @@ -2904,7 +2945,8 @@ def get_certificate_issuer( """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,9 +2958,9 @@ 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` """ @@ -2946,7 +2988,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) @@ -2967,7 +3009,8 @@ def delete_certificate_issuer( """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,9 +3022,9 @@ 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` """ @@ -3009,7 +3052,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) @@ -3027,9 +3070,10 @@ def delete_certificate_issuer( 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,24 +3081,22 @@ 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` """ @@ -3064,7 +3106,7 @@ def create_certificate( url = '/certificates/{certificate-name}/create' 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 +3130,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) @@ -3111,7 +3153,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,24 +3169,22 @@ 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` """ @@ -3153,7 +3194,7 @@ def import_certificate( url = '/certificates/{certificate-name}/import' 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 +3218,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) @@ -3198,7 +3239,8 @@ def get_certificate_versions( """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 +3255,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` """ @@ -3252,7 +3295,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) @@ -3274,7 +3317,8 @@ def get_certificate_policy( """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,10 +3331,9 @@ 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` """ @@ -3318,7 +3361,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) @@ -3339,6 +3382,7 @@ def update_certificate_policy( """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,17 +3391,15 @@ 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` """ @@ -3389,7 +3431,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) @@ -3410,8 +3452,8 @@ def update_certificate( """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,24 +3464,22 @@ 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` """ @@ -3474,7 +3514,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) @@ -3492,7 +3532,9 @@ def update_certificate( 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,10 +3550,9 @@ 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` """ @@ -3540,7 +3581,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) @@ -3558,8 +3599,10 @@ def get_certificate( 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,10 +3617,9 @@ 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` """ @@ -3611,7 +3653,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) @@ -3629,8 +3671,10 @@ def update_certificate_operation( 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,10 +3686,9 @@ 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` """ @@ -3673,7 +3716,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) @@ -3691,8 +3734,11 @@ def get_certificate_operation( 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,10 +3750,9 @@ 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` """ @@ -3735,7 +3780,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) @@ -3758,7 +3803,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,23 +3812,22 @@ 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` """ @@ -3817,7 +3861,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) @@ -3835,12 +3879,14 @@ def merge_certificate( 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 + """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. @@ -3853,8 +3899,9 @@ def get_deleted_certificates( 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` """ @@ -3891,7 +3938,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) @@ -3914,7 +3961,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,10 +3974,9 @@ 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` """ @@ -3957,7 +4004,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) @@ -3980,7 +4027,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,9 +4039,8 @@ 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` """ @@ -4022,7 +4068,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) @@ -4039,7 +4085,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,10 +4098,9 @@ 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` """ @@ -4082,7 +4128,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) @@ -4100,7 +4146,8 @@ def recover_deleted_certificate( 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 +4160,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` """ @@ -4151,7 +4199,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) @@ -4170,7 +4218,8 @@ def internal_paging(next_link=None, raw=False): def delete_storage_account( self, vault_base_url, storage_account_name, custom_headers=None, raw=False, **operation_config): - """Deletes a storage account. + """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. @@ -4182,9 +4231,9 @@ def delete_storage_account( 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` """ @@ -4192,7 +4241,7 @@ def delete_storage_account( url = '/storage/{storage-account-name}' 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) @@ -4212,7 +4261,7 @@ def delete_storage_account( # 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) @@ -4230,7 +4279,8 @@ def delete_storage_account( 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. + """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. @@ -4242,9 +4292,9 @@ def get_storage_account( 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` """ @@ -4252,7 +4302,7 @@ def get_storage_account( url = '/storage/{storage-account-name}' 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) @@ -4272,7 +4322,7 @@ def get_storage_account( # 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) @@ -4290,7 +4340,8 @@ def get_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. + """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. @@ -4309,19 +4360,19 @@ def set_storage_account( :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] :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` """ @@ -4331,7 +4382,7 @@ def set_storage_account( url = '/storage/{storage-account-name}' 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) @@ -4355,7 +4406,7 @@ def set_storage_account( # 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) @@ -4374,7 +4425,7 @@ def set_storage_account( 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. + account. This operation requires the storage/set/update permission. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -4391,19 +4442,19 @@ def update_storage_account( :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] :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` """ @@ -4413,7 +4464,7 @@ def update_storage_account( url = '/storage/{storage-account-name}' 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 +4488,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) @@ -4455,7 +4506,8 @@ def update_storage_account( 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,16 +4515,15 @@ 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` """ @@ -4482,7 +4533,7 @@ def regenerate_storage_account_key( url = '/storage/{storage-account-name}/regeneratekey' 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 +4557,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) @@ -4524,8 +4575,9 @@ def regenerate_storage_account_key( 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 +4591,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` """ @@ -4551,7 +4604,7 @@ def internal_paging(next_link=None, raw=False): url = '/storage/{storage-account-name}/sas' 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 +4631,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) @@ -4597,8 +4650,8 @@ def internal_paging(next_link=None, raw=False): 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. + """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. @@ -4612,10 +4665,9 @@ def delete_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` """ @@ -4623,8 +4675,8 @@ def delete_sas_definition( url = '/storage/{storage-account-name}/sas/{sas-definition-name}' 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) @@ -4644,7 +4696,7 @@ def delete_sas_definition( # 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) @@ -4662,9 +4714,8 @@ def delete_sas_definition( 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,10 +4729,9 @@ 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` """ @@ -4689,8 +4739,8 @@ def get_sas_definition( url = '/storage/{storage-account-name}/sas/{sas-definition-name}' 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 +4760,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) @@ -4727,9 +4777,9 @@ def get_sas_definition( return deserialized 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 +4788,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}' 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 +4842,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) @@ -4808,9 +4864,9 @@ def set_sas_definition( return deserialized 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 +4875,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}' 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 +4929,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) diff --git a/azure-keyvault/azure/keyvault/models/__init__.py b/azure-keyvault/azure/keyvault/models/__init__.py index e404b4bec3ef..f9283c127adb 100755 --- a/azure-keyvault/azure/keyvault/models/__init__.py +++ b/azure-keyvault/azure/keyvault/models/__init__.py @@ -90,12 +90,14 @@ from .sas_definition_item_paged import SasDefinitionItemPaged from .key_vault_client_enums import ( JsonWebKeyType, + JsonWebKeyCurveName, DeletionRecoveryLevel, KeyUsageType, ActionType, JsonWebKeyOperation, JsonWebKeyEncryptionAlgorithm, JsonWebKeySignatureAlgorithm, + SasTokenType, ) __all__ = [ @@ -179,10 +181,12 @@ 'StorageAccountItemPaged', 'SasDefinitionItemPaged', '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 index f11e1373fbd4..12e33735ab84 100755 --- a/azure-keyvault/azure/keyvault/models/action.py +++ b/azure-keyvault/azure/keyvault/models/action.py @@ -17,8 +17,7 @@ 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 = { @@ -26,4 +25,5 @@ class Action(Model): } def __init__(self, action_type=None): + super(Action, self).__init__() 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 index 05b62173448e..1977d2cf71be 100755 --- a/azure-keyvault/azure/keyvault/models/administrator_details.py +++ b/azure-keyvault/azure/keyvault/models/administrator_details.py @@ -33,6 +33,7 @@ class AdministratorDetails(Model): } def __init__(self, first_name=None, last_name=None, email_address=None, phone=None): + super(AdministratorDetails, self).__init__() self.first_name = first_name self.last_name = last_name self.email_address = email_address diff --git a/azure-keyvault/azure/keyvault/models/attributes.py b/azure-keyvault/azure/keyvault/models/attributes.py index 57c9b432d63f..742f12e1e6e7 100755 --- a/azure-keyvault/azure/keyvault/models/attributes.py +++ b/azure-keyvault/azure/keyvault/models/attributes.py @@ -44,6 +44,7 @@ class Attributes(Model): } def __init__(self, enabled=None, not_before=None, expires=None): + super(Attributes, self).__init__() self.enabled = enabled self.not_before = not_before self.expires = expires diff --git a/azure-keyvault/azure/keyvault/models/backup_key_result.py b/azure-keyvault/azure/keyvault/models/backup_key_result.py index 2e977906ae41..95d0e9bfd86f 100755 --- a/azure-keyvault/azure/keyvault/models/backup_key_result.py +++ b/azure-keyvault/azure/keyvault/models/backup_key_result.py @@ -31,4 +31,5 @@ class BackupKeyResult(Model): } def __init__(self): + super(BackupKeyResult, self).__init__() 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 index 5ae53f2f3467..bd8f520a2598 100755 --- a/azure-keyvault/azure/keyvault/models/backup_secret_result.py +++ b/azure-keyvault/azure/keyvault/models/backup_secret_result.py @@ -31,4 +31,5 @@ class BackupSecretResult(Model): } def __init__(self): + super(BackupSecretResult, self).__init__() self.value = None diff --git a/azure-keyvault/azure/keyvault/models/certificate_attributes.py b/azure-keyvault/azure/keyvault/models/certificate_attributes.py index 48162bdfac8c..29f10a4b15ac 100755 --- 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 = { diff --git a/azure-keyvault/azure/keyvault/models/certificate_bundle.py b/azure-keyvault/azure/keyvault/models/certificate_bundle.py index d07959405672..8faaf134b500 100755 --- 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 = { @@ -61,6 +59,7 @@ class CertificateBundle(Model): } def __init__(self, cer=None, content_type=None, attributes=None, tags=None): + super(CertificateBundle, self).__init__() self.id = None self.kid = None self.sid = None diff --git a/azure-keyvault/azure/keyvault/models/certificate_create_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_create_parameters.py index bfbec2edbab8..3565ddd53054 100755 --- 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 = { @@ -33,6 +31,7 @@ class CertificateCreateParameters(Model): } def __init__(self, certificate_policy=None, certificate_attributes=None, tags=None): + super(CertificateCreateParameters, self).__init__() 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 index d0b6136a0397..24d025b0b680 100755 --- a/azure-keyvault/azure/keyvault/models/certificate_import_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_import_parameters.py @@ -23,14 +23,12 @@ class CertificateImportParameters(Model): 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 = { @@ -46,6 +44,7 @@ class CertificateImportParameters(Model): } def __init__(self, base64_encoded_certificate, password=None, certificate_policy=None, certificate_attributes=None, tags=None): + super(CertificateImportParameters, self).__init__() self.base64_encoded_certificate = base64_encoded_certificate self.password = password self.certificate_policy = certificate_policy diff --git a/azure-keyvault/azure/keyvault/models/certificate_issuer_item.py b/azure-keyvault/azure/keyvault/models/certificate_issuer_item.py index 66012dd1173f..75c06f67df49 100755 --- a/azure-keyvault/azure/keyvault/models/certificate_issuer_item.py +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_item.py @@ -27,5 +27,6 @@ class CertificateIssuerItem(Model): } def __init__(self, id=None, provider=None): + super(CertificateIssuerItem, self).__init__() self.id = id self.provider = provider diff --git a/azure-keyvault/azure/keyvault/models/certificate_issuer_item_paged.py b/azure-keyvault/azure/keyvault/models/certificate_issuer_item_paged.py index f13037a9adf7..aea372a5c6a1 100755 --- 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_set_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters.py index 6301f1f82bed..9d16a5bec245 100755 --- a/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters.py @@ -18,15 +18,12 @@ class CertificateIssuerSetParameters(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 = { @@ -41,6 +38,7 @@ class CertificateIssuerSetParameters(Model): } def __init__(self, provider, credentials=None, organization_details=None, attributes=None): + super(CertificateIssuerSetParameters, self).__init__() self.provider = provider self.credentials = credentials self.organization_details = organization_details diff --git a/azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters.py index a5590e044059..22b326974681 100755 --- 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 = { @@ -37,6 +34,7 @@ class CertificateIssuerUpdateParameters(Model): } def __init__(self, provider=None, credentials=None, organization_details=None, attributes=None): + super(CertificateIssuerUpdateParameters, self).__init__() self.provider = provider self.credentials = credentials self.organization_details = organization_details diff --git a/azure-keyvault/azure/keyvault/models/certificate_item.py b/azure-keyvault/azure/keyvault/models/certificate_item.py index 3f8f0c1db218..38161f94b73f 100755 --- 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 """ @@ -34,6 +33,7 @@ class CertificateItem(Model): } def __init__(self, id=None, attributes=None, tags=None, x509_thumbprint=None): + super(CertificateItem, self).__init__() self.id = id self.attributes = attributes self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/certificate_item_paged.py b/azure-keyvault/azure/keyvault/models/certificate_item_paged.py index e560848abcd4..fc6c4609930a 100755 --- 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_merge_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_merge_parameters.py index c83d68be47bd..ebf692df08de 100755 --- a/azure-keyvault/azure/keyvault/models/certificate_merge_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_merge_parameters.py @@ -17,13 +17,12 @@ class CertificateMergeParameters(Model): :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] """ _validation = { @@ -37,6 +36,7 @@ class CertificateMergeParameters(Model): } def __init__(self, x509_certificates, certificate_attributes=None, tags=None): + super(CertificateMergeParameters, self).__init__() 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 index 31389a7abf30..f0bacc90bb2d 100755 --- 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 @@ -60,6 +59,7 @@ class CertificateOperation(Model): } def __init__(self, issuer_parameters=None, csr=None, cancellation_requested=None, status=None, status_details=None, error=None, target=None, request_id=None): + super(CertificateOperation, self).__init__() self.id = None self.issuer_parameters = issuer_parameters self.csr = csr diff --git a/azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter.py b/azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter.py index ec887e9d2313..d318fa3e2d81 100755 --- a/azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter.py +++ b/azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter.py @@ -29,4 +29,5 @@ class CertificateOperationUpdateParameter(Model): } def __init__(self, cancellation_requested): + super(CertificateOperationUpdateParameter, self).__init__() 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 index 684da134dd4e..b91a0a1ea6e0 100755 --- 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 = { @@ -58,6 +53,7 @@ class CertificatePolicy(Model): } def __init__(self, key_properties=None, secret_properties=None, x509_certificate_properties=None, lifetime_actions=None, issuer_parameters=None, attributes=None): + super(CertificatePolicy, self).__init__() self.id = None self.key_properties = key_properties self.secret_properties = secret_properties diff --git a/azure-keyvault/azure/keyvault/models/certificate_update_parameters.py b/azure-keyvault/azure/keyvault/models/certificate_update_parameters.py index 499a22d5ff81..cd0f711d1cad 100755 --- 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 = { @@ -33,6 +31,7 @@ class CertificateUpdateParameters(Model): } def __init__(self, certificate_policy=None, certificate_attributes=None, tags=None): + super(CertificateUpdateParameters, self).__init__() 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 index bdfd1c8b96bb..b82f4b760823 100755 --- a/azure-keyvault/azure/keyvault/models/contact.py +++ b/azure-keyvault/azure/keyvault/models/contact.py @@ -30,6 +30,7 @@ class Contact(Model): } def __init__(self, email_address=None, name=None, phone=None): + super(Contact, self).__init__() 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 index 3ebe54cd89cf..f6f18131c365 100755 --- 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 = { @@ -35,5 +34,6 @@ class Contacts(Model): } def __init__(self, contact_list=None): + super(Contacts, self).__init__() 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 index 518c414f0b2d..1c28a8cf4233 100755 --- 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 diff --git a/azure-keyvault/azure/keyvault/models/deleted_certificate_item.py b/azure-keyvault/azure/keyvault/models/deleted_certificate_item.py index 38fbcc8f2f50..02d21daee438 100755 --- 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 diff --git a/azure-keyvault/azure/keyvault/models/deleted_certificate_item_paged.py b/azure-keyvault/azure/keyvault/models/deleted_certificate_item_paged.py index 879fb74641b4..28328340ba83 100755 --- 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_key_bundle.py b/azure-keyvault/azure/keyvault/models/deleted_key_bundle.py index c2abbaaf2fb5..215e0b7d231d 100755 --- 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 diff --git a/azure-keyvault/azure/keyvault/models/deleted_key_item.py b/azure-keyvault/azure/keyvault/models/deleted_key_item.py index dc37b3b238b9..0542c513baf8 100755 --- 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 diff --git a/azure-keyvault/azure/keyvault/models/deleted_key_item_paged.py b/azure-keyvault/azure/keyvault/models/deleted_key_item_paged.py index efa1ecf696ba..96b80d8961cf 100755 --- 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_secret_bundle.py b/azure-keyvault/azure/keyvault/models/deleted_secret_bundle.py index f948590cc77d..2f85f5c01801 100755 --- 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 diff --git a/azure-keyvault/azure/keyvault/models/deleted_secret_item.py b/azure-keyvault/azure/keyvault/models/deleted_secret_item.py index a5dd1a4fa3f3..68b59f59546e 100755 --- 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 diff --git a/azure-keyvault/azure/keyvault/models/deleted_secret_item_paged.py b/azure-keyvault/azure/keyvault/models/deleted_secret_item_paged.py index bc8a5644c259..723328f86a49 100755 --- 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/error.py b/azure-keyvault/azure/keyvault/models/error.py index edd0fb144070..35c231305790 100755 --- 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 = { @@ -39,6 +39,7 @@ class Error(Model): } def __init__(self): + super(Error, self).__init__() 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 index 4c79186d0155..bcc3fd0d2e2e 100755 --- a/azure-keyvault/azure/keyvault/models/issuer_attributes.py +++ b/azure-keyvault/azure/keyvault/models/issuer_attributes.py @@ -38,6 +38,7 @@ class IssuerAttributes(Model): } def __init__(self, enabled=None): + super(IssuerAttributes, self).__init__() 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 index 895598ec2bc4..4043d7ab89c2 100755 --- 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 = { @@ -47,6 +44,7 @@ class IssuerBundle(Model): } def __init__(self, provider=None, credentials=None, organization_details=None, attributes=None): + super(IssuerBundle, self).__init__() self.id = None self.provider = provider self.credentials = credentials diff --git a/azure-keyvault/azure/keyvault/models/issuer_credentials.py b/azure-keyvault/azure/keyvault/models/issuer_credentials.py index 9908e3a6c19e..fdc0282c534d 100755 --- a/azure-keyvault/azure/keyvault/models/issuer_credentials.py +++ b/azure-keyvault/azure/keyvault/models/issuer_credentials.py @@ -27,5 +27,6 @@ class IssuerCredentials(Model): } def __init__(self, account_id=None, password=None): + super(IssuerCredentials, self).__init__() 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 index 4e8db00262bc..258124c9191c 100755 --- a/azure-keyvault/azure/keyvault/models/issuer_parameters.py +++ b/azure-keyvault/azure/keyvault/models/issuer_parameters.py @@ -29,5 +29,6 @@ class IssuerParameters(Model): } def __init__(self, name=None, certificate_type=None): + super(IssuerParameters, self).__init__() self.name = name self.certificate_type = certificate_type diff --git a/azure-keyvault/azure/keyvault/models/json_web_key.py b/azure-keyvault/azure/keyvault/models/json_web_key.py index 481594a77b40..881f20bf2cc0 100755 --- a/azure-keyvault/azure/keyvault/models/json_web_key.py +++ b/azure-keyvault/azure/keyvault/models/json_web_key.py @@ -17,18 +17,16 @@ 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). 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 +42,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', + 'SECP256K1' + :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,9 +66,13 @@ 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): + 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, crv=None, x=None, y=None): + super(JsonWebKey, self).__init__() self.kid = kid self.kty = kty self.key_ops = key_ops @@ -76,3 +86,6 @@ def __init__(self, kid=None, kty=None, key_ops=None, n=None, e=None, d=None, dp= 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 index 3338efe6189d..2e0e98ac6e36 100755 --- 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 = { diff --git a/azure-keyvault/azure/keyvault/models/key_bundle.py b/azure-keyvault/azure/keyvault/models/key_bundle.py index 3bb9ea90c9c6..4c81811f3fd3 100755 --- 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 @@ -42,6 +41,7 @@ class KeyBundle(Model): } def __init__(self, key=None, attributes=None, tags=None): + super(KeyBundle, self).__init__() self.key = key self.attributes = attributes self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/key_create_parameters.py b/azure-keyvault/azure/keyvault/models/key_create_parameters.py index deb9289ea3f9..0cf298d86ced 100755 --- a/azure-keyvault/azure/keyvault/models/key_create_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_create_parameters.py @@ -15,21 +15,22 @@ 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 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 ~azure.keyvault.models.JsonWebKeyType :param key_size: The key size in bytes. For example, 1024 or 2048. :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', + 'SECP256K1' + :type curve: str or ~azure.keyvault.models.JsonWebKeyCurveName """ _validation = { @@ -42,11 +43,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): + def __init__(self, kty, key_size=None, key_ops=None, key_attributes=None, tags=None, curve=None): + super(KeyCreateParameters, self).__init__() 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 index 6583fbabd4ca..804bbcf5f629 100755 --- a/azure-keyvault/azure/keyvault/models/key_import_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_import_parameters.py @@ -18,12 +18,11 @@ class KeyImportParameters(Model): :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 ` + :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 = { @@ -38,6 +37,7 @@ class KeyImportParameters(Model): } def __init__(self, key, hsm=None, key_attributes=None, tags=None): + super(KeyImportParameters, self).__init__() self.hsm = hsm self.key = key self.key_attributes = key_attributes diff --git a/azure-keyvault/azure/keyvault/models/key_item.py b/azure-keyvault/azure/keyvault/models/key_item.py index 206de5a8f1a7..d6a5bd35dc49 100755 --- 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 @@ -42,6 +41,7 @@ class KeyItem(Model): } def __init__(self, kid=None, attributes=None, tags=None): + super(KeyItem, self).__init__() self.kid = kid self.attributes = attributes self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/key_item_paged.py b/azure-keyvault/azure/keyvault/models/key_item_paged.py index 11ccc8cf2576..8f2c62fbaa44 100755 --- 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_operation_result.py b/azure-keyvault/azure/keyvault/models/key_operation_result.py index 02c121311b9d..d63166298177 100755 --- a/azure-keyvault/azure/keyvault/models/key_operation_result.py +++ b/azure-keyvault/azure/keyvault/models/key_operation_result.py @@ -35,5 +35,6 @@ class KeyOperationResult(Model): } def __init__(self): + super(KeyOperationResult, self).__init__() 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 index 9733161d5326..6b50e0512336 100755 --- a/azure-keyvault/azure/keyvault/models/key_operations_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_operations_parameters.py @@ -17,8 +17,8 @@ class KeyOperationsParameters(Model): :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 """ @@ -34,5 +34,6 @@ class KeyOperationsParameters(Model): } def __init__(self, algorithm, value): + super(KeyOperationsParameters, self).__init__() 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 index 9460e1f6b0ac..e3721bb2162e 100755 --- a/azure-keyvault/azure/keyvault/models/key_properties.py +++ b/azure-keyvault/azure/keyvault/models/key_properties.py @@ -34,6 +34,7 @@ class KeyProperties(Model): } def __init__(self, exportable=None, key_type=None, key_size=None, reuse_key=None): + super(KeyProperties, self).__init__() self.exportable = exportable self.key_type = key_type self.key_size = key_size diff --git a/azure-keyvault/azure/keyvault/models/key_restore_parameters.py b/azure-keyvault/azure/keyvault/models/key_restore_parameters.py index 47224e4f519a..934235cc9db9 100755 --- a/azure-keyvault/azure/keyvault/models/key_restore_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_restore_parameters.py @@ -28,4 +28,5 @@ class KeyRestoreParameters(Model): } def __init__(self, key_bundle_backup): + super(KeyRestoreParameters, self).__init__() 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 index 025351c4d55c..5ae6ef0c5b95 100755 --- a/azure-keyvault/azure/keyvault/models/key_sign_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_sign_parameters.py @@ -18,9 +18,9 @@ class KeySignParameters(Model): :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 - ` + 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' + :type algorithm: str or + ~azure.keyvault.models.JsonWebKeySignatureAlgorithm :param value: :type value: bytes """ @@ -36,5 +36,6 @@ class KeySignParameters(Model): } def __init__(self, algorithm, value): + super(KeySignParameters, self).__init__() 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 index 8383f77b03cf..f4bbcebff988 100755 --- 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 = { @@ -33,6 +31,7 @@ class KeyUpdateParameters(Model): } def __init__(self, key_ops=None, key_attributes=None, tags=None): + super(KeyUpdateParameters, self).__init__() 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 index e19fa1bbc999..7eae18700aac 100755 --- a/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py +++ b/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py @@ -15,11 +15,20 @@ class JsonWebKeyType(Enum): ec = "EC" + ec_hsm = "EC-HSM" rsa = "RSA" rsa_hsm = "RSA-HSM" oct = "oct" +class JsonWebKeyCurveName(Enum): + + p_256 = "P-256" + p_384 = "P-384" + p_521 = "P-521" + secp256_k1 = "SECP256K1" + + class DeletionRecoveryLevel(Enum): purgeable = "Purgeable" @@ -73,3 +82,13 @@ class JsonWebKeySignatureAlgorithm(Enum): rs384 = "RS384" rs512 = "RS512" rsnull = "RSNULL" + es256 = "ES256" + es384 = "ES384" + es512 = "ES512" + ecdsa256 = "ECDSA256" + + +class SasTokenType(Enum): + + 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 index cd38f4a68a90..df445a39f4b5 100755 --- 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 = { @@ -32,6 +32,7 @@ class KeyVaultError(Model): } def __init__(self): + super(KeyVaultError, self).__init__() self.error = None diff --git a/azure-keyvault/azure/keyvault/models/key_verify_parameters.py b/azure-keyvault/azure/keyvault/models/key_verify_parameters.py index 6201ad1a3e5b..5f9d2b4b95e4 100755 --- a/azure-keyvault/azure/keyvault/models/key_verify_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_verify_parameters.py @@ -18,9 +18,9 @@ class KeyVerifyParameters(Model): :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 - ` + 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' + :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. @@ -40,6 +40,7 @@ class KeyVerifyParameters(Model): } def __init__(self, algorithm, digest, signature): + super(KeyVerifyParameters, self).__init__() 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 index 4a6296f65a33..57afe6324211 100755 --- a/azure-keyvault/azure/keyvault/models/key_verify_result.py +++ b/azure-keyvault/azure/keyvault/models/key_verify_result.py @@ -31,4 +31,5 @@ class KeyVerifyResult(Model): } def __init__(self): + super(KeyVerifyResult, self).__init__() self.value = None diff --git a/azure-keyvault/azure/keyvault/models/lifetime_action.py b/azure-keyvault/azure/keyvault/models/lifetime_action.py index 1347cbe13c47..dd2a895d6ab0 100755 --- 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 = { @@ -28,5 +28,6 @@ class LifetimeAction(Model): } def __init__(self, trigger=None, action=None): + super(LifetimeAction, self).__init__() 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 index 3373b26a7653..93c739d31afe 100755 --- 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 = { @@ -28,5 +27,6 @@ class OrganizationDetails(Model): } def __init__(self, id=None, admin_details=None): + super(OrganizationDetails, self).__init__() 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 index a870d85d0257..4a797469c17a 100755 --- a/azure-keyvault/azure/keyvault/models/pending_certificate_signing_request_result.py +++ b/azure-keyvault/azure/keyvault/models/pending_certificate_signing_request_result.py @@ -32,4 +32,5 @@ class PendingCertificateSigningRequestResult(Model): } def __init__(self): + super(PendingCertificateSigningRequestResult, self).__init__() 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 index 46c31d2ed361..c7b36e4b88cd 100755 --- a/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py @@ -38,6 +38,7 @@ class SasDefinitionAttributes(Model): } def __init__(self, enabled=None): + super(SasDefinitionAttributes, self).__init__() self.enabled = enabled self.created = None self.updated = None diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_bundle.py b/azure-keyvault/azure/keyvault/models/sas_definition_bundle.py index 2372dc4f8e11..6040e2b3ac46 100755 --- 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): + super(SasDefinitionBundle, self).__init__() 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_create_parameters.py b/azure-keyvault/azure/keyvault/models/sas_definition_create_parameters.py index a8e6cd3e7b7c..b9b8feb54279 100755 --- 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,41 @@ class SasDefinitionCreateParameters(Model): """The SAS definition create parameters. - :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] """ _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 + def __init__(self, template_uri, sas_type, validity_period, sas_definition_attributes=None, tags=None): + super(SasDefinitionCreateParameters, self).__init__() + 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 index 668c550e8eec..872d25a041a7 100755 --- 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 = { @@ -44,6 +43,7 @@ class SasDefinitionItem(Model): } def __init__(self): + super(SasDefinitionItem, self).__init__() 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 index bac7f70a3c6a..e15f77ecd3d1 100755 --- 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_update_parameters.py b/azure-keyvault/azure/keyvault/models/sas_definition_update_parameters.py index a058d7d5fa1f..16735eade36e 100755 --- 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 + def __init__(self, template_uri=None, sas_type=None, validity_period=None, sas_definition_attributes=None, tags=None): + super(SasDefinitionUpdateParameters, self).__init__() + 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 index f56a8b71f61b..14f1c75049d4 100755 --- 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 = { diff --git a/azure-keyvault/azure/keyvault/models/secret_bundle.py b/azure-keyvault/azure/keyvault/models/secret_bundle.py index 99da33ff8658..4160cbcb01b1 100755 --- 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 @@ -53,6 +52,7 @@ class SecretBundle(Model): } def __init__(self, value=None, id=None, content_type=None, attributes=None, tags=None): + super(SecretBundle, self).__init__() self.value = value self.id = id self.content_type = content_type diff --git a/azure-keyvault/azure/keyvault/models/secret_item.py b/azure-keyvault/azure/keyvault/models/secret_item.py index 9c959957fbaa..260d7d6bc161 100755 --- 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 @@ -45,6 +44,7 @@ class SecretItem(Model): } def __init__(self, id=None, attributes=None, tags=None, content_type=None): + super(SecretItem, self).__init__() self.id = id self.attributes = attributes self.tags = tags diff --git a/azure-keyvault/azure/keyvault/models/secret_item_paged.py b/azure-keyvault/azure/keyvault/models/secret_item_paged.py index ac6f035c3cb0..a558156b2015 100755 --- 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_properties.py b/azure-keyvault/azure/keyvault/models/secret_properties.py index a59b804491e2..b4a722dd25e9 100755 --- a/azure-keyvault/azure/keyvault/models/secret_properties.py +++ b/azure-keyvault/azure/keyvault/models/secret_properties.py @@ -24,4 +24,5 @@ class SecretProperties(Model): } def __init__(self, content_type=None): + super(SecretProperties, self).__init__() 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 index 5994bca6fb2a..59c52a7c66b1 100755 --- a/azure-keyvault/azure/keyvault/models/secret_restore_parameters.py +++ b/azure-keyvault/azure/keyvault/models/secret_restore_parameters.py @@ -29,4 +29,5 @@ class SecretRestoreParameters(Model): } def __init__(self, secret_bundle_backup): + super(SecretRestoreParameters, self).__init__() 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 index cd323afbb597..0f78377e3d67 100755 --- a/azure-keyvault/azure/keyvault/models/secret_set_parameters.py +++ b/azure-keyvault/azure/keyvault/models/secret_set_parameters.py @@ -18,12 +18,11 @@ class SecretSetParameters(Model): :param value: 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 = { @@ -38,6 +37,7 @@ class SecretSetParameters(Model): } def __init__(self, value, tags=None, content_type=None, secret_attributes=None): + super(SecretSetParameters, self).__init__() self.value = value self.tags = tags self.content_type = content_type diff --git a/azure-keyvault/azure/keyvault/models/secret_update_parameters.py b/azure-keyvault/azure/keyvault/models/secret_update_parameters.py index 02729a149336..550c1276aa86 100755 --- 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 = { @@ -31,6 +30,7 @@ class SecretUpdateParameters(Model): } def __init__(self, content_type=None, secret_attributes=None, tags=None): + super(SecretUpdateParameters, self).__init__() 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 index f5a4fda19084..a7e3bac3d613 100755 --- a/azure-keyvault/azure/keyvault/models/storage_account_attributes.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_attributes.py @@ -38,6 +38,7 @@ class StorageAccountAttributes(Model): } def __init__(self, enabled=None): + super(StorageAccountAttributes, self).__init__() self.enabled = enabled self.created = None self.updated = 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 index 9ad8358a8967..e8cd1543fd2b 100755 --- a/azure-keyvault/azure/keyvault/models/storage_account_create_parameters.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_create_parameters.py @@ -26,10 +26,10 @@ class StorageAccountCreateParameters(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] """ _validation = { @@ -48,6 +48,7 @@ class StorageAccountCreateParameters(Model): } def __init__(self, resource_id, active_key_name, auto_regenerate_key, regeneration_period=None, storage_account_attributes=None, tags=None): + super(StorageAccountCreateParameters, self).__init__() self.resource_id = resource_id self.active_key_name = active_key_name self.auto_regenerate_key = auto_regenerate_key diff --git a/azure-keyvault/azure/keyvault/models/storage_account_item.py b/azure-keyvault/azure/keyvault/models/storage_account_item.py index 93d16a6b1159..9191fdc4ed3b 100755 --- 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 = { @@ -44,6 +43,7 @@ class StorageAccountItem(Model): } def __init__(self): + super(StorageAccountItem, self).__init__() 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 index d7754e4f7cab..985cd5a5f610 100755 --- 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_regenerte_key_parameters.py b/azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters.py index 2148624ec1f9..58fdec2c4a41 100755 --- a/azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters.py @@ -28,4 +28,5 @@ class StorageAccountRegenerteKeyParameters(Model): } def __init__(self, key_name): + super(StorageAccountRegenerteKeyParameters, self).__init__() 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 index 2dcbd91da1d0..e592d220b495 100755 --- 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 = { @@ -39,6 +39,7 @@ class StorageAccountUpdateParameters(Model): } def __init__(self, active_key_name=None, auto_regenerate_key=None, regeneration_period=None, storage_account_attributes=None, tags=None): + super(StorageAccountUpdateParameters, self).__init__() self.active_key_name = active_key_name self.auto_regenerate_key = auto_regenerate_key self.regeneration_period = regeneration_period diff --git a/azure-keyvault/azure/keyvault/models/storage_bundle.py b/azure-keyvault/azure/keyvault/models/storage_bundle.py index a455bc23deeb..de4658a99097 100755 --- 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 = { @@ -59,6 +58,7 @@ class StorageBundle(Model): } def __init__(self): + super(StorageBundle, self).__init__() self.id = None self.resource_id = None self.active_key_name = None diff --git a/azure-keyvault/azure/keyvault/models/subject_alternative_names.py b/azure-keyvault/azure/keyvault/models/subject_alternative_names.py index ed6349548668..b803580810b7 100755 --- 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 = { @@ -30,6 +30,7 @@ class SubjectAlternativeNames(Model): } def __init__(self, emails=None, dns_names=None, upns=None): + super(SubjectAlternativeNames, self).__init__() 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 index b60cb21182d5..a6b535df2278 100755 --- 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 """ @@ -32,5 +35,6 @@ class Trigger(Model): } def __init__(self, lifetime_percentage=None, days_before_expiry=None): + super(Trigger, self).__init__() 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 index fa9c3633a230..9e8fcab90460 100755 --- 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 @@ -44,6 +43,7 @@ class X509CertificateProperties(Model): } def __init__(self, subject=None, ekus=None, subject_alternative_names=None, key_usage=None, validity_in_months=None): + super(X509CertificateProperties, self).__init__() self.subject = subject self.ekus = ekus self.subject_alternative_names = subject_alternative_names From 25f05017e23c5af6e7c29af449ad89b3703dac8d Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Thu, 1 Feb 2018 14:49:29 -0800 Subject: [PATCH 19/49] fixing test import --- azure-mgmt/tests/test_key_vault_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-mgmt/tests/test_key_vault_data.py b/azure-mgmt/tests/test_key_vault_data.py index 4b7d7325dda3..45d9683919b2 100644 --- a/azure-mgmt/tests/test_key_vault_data.py +++ b/azure-mgmt/tests/test_key_vault_data.py @@ -24,7 +24,7 @@ from azure.keyvault import KeyVaultId from azure.keyvault import HttpBearerChallenge from azure.keyvault import HttpBearerChallengeCache -from azure.keyvault.generated.models import \ +from azure.keyvault.models import \ (CertificatePolicy, KeyProperties, SecretProperties, IssuerParameters, X509CertificateProperties, IssuerBundle, IssuerCredentials, OrganizationDetails, AdministratorDetails, Contact, KeyVaultError, SubjectAlternativeNames, JsonWebKey) From 5f16fa4e66c8ac00ffc75e40504ff3104c35caa3 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Thu, 1 Feb 2018 16:11:39 -0800 Subject: [PATCH 20/49] updating test_key_vault_data recordings to reflect new api-version --- ...ync_request_cancellation_and_deletion.yaml | 14 +- ...t_data.test_certificate_crud_contacts.yaml | 8 +- ...ult_data.test_certificate_crud_issuer.yaml | 10 +- ...data.test_certificate_crud_operations.yaml | 20 +-- ...ey_vault_data.test_certificate_import.yaml | 2 +- ..._key_vault_data.test_certificate_list.yaml | 14 +- ...lt_data.test_certificate_list_issuers.yaml | 6 +- ...t_data.test_certificate_list_versions.yaml | 6 +- ...data.test_certificate_manual_enrolled.yaml | 8 +- ...ey_vault_data.test_certificate_policy.yaml | 8 +- ...ta.test_certificate_recover_and_purge.yaml | 32 ++-- ...data.test_iterate_empty_list_commands.yaml | 10 +- ...ault_data.test_key_backup_and_restore.yaml | 16 +- ...y_vault_data.test_key_crud_operations.yaml | 14 +- ...ult_data.test_key_encrypt_and_decrypt.yaml | 10 +- .../test_key_vault_data.test_key_import.yaml | 4 +- .../test_key_vault_data.test_key_list.yaml | 30 ++-- ...key_vault_data.test_key_list_versions.yaml | 6 +- ...vault_data.test_key_recover_and_purge.yaml | 56 +++---- ...y_vault_data.test_key_sign_and_verify.yaml | 10 +- ...y_vault_data.test_key_wrap_and_unwrap.yaml | 20 +-- ...t_data.test_secret_backup_and_restore.yaml | 8 +- ...ault_data.test_secret_crud_operations.yaml | 14 +- .../test_key_vault_data.test_secret_list.yaml | 22 +-- ..._vault_data.test_secret_list_versions.yaml | 6 +- ...lt_data.test_secret_recover_and_purge.yaml | 144 +++++++++--------- 26 files changed, 249 insertions(+), 249 deletions(-) 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 index cf4436ad7e4f..71ed66a720a3 100644 --- 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 @@ -94,7 +94,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/create?api-version=7.0-preview 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 @@ -105,7 +105,7 @@ interactions: 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'] + Location: ['https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=7.0-preview&request_id=8e61c0dfe1f049fca58fb07d10174229'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -130,7 +130,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=7.0-preview 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 @@ -163,7 +163,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=7.0-preview 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 @@ -198,7 +198,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=7.0-preview 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 @@ -231,7 +231,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert/pending?api-version=7.0-preview response: body: {string: '{"error":{"code":"PendingCertificateNotFound","message":"Pending certificate not found: asyncCanceledDeletedCert"}}'} @@ -264,7 +264,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/asyncCanceledDeletedCert?api-version=7.0-preview 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: 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 index 8e5f58ab46a9..fb365775fa34 100644 --- 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 @@ -45,7 +45,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/contacts?api-version=7.0-preview 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"}]}'} @@ -77,7 +77,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/contacts?api-version=7.0-preview 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"}]}'} @@ -110,7 +110,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/contacts?api-version=7.0-preview 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"}]}'} @@ -142,7 +142,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/contacts?api-version=7.0-preview response: body: {string: '{"error":{"code":"ContactsNotFound","message":"Contacts not found"}}'} headers: 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 index 582e1371a301..8fa77e50644e 100644 --- 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 @@ -45,7 +45,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer?api-version=7.0-preview 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: @@ -76,7 +76,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer?api-version=7.0-preview 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: @@ -110,7 +110,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer?api-version=7.0-preview 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}}'} @@ -143,7 +143,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer?api-version=7.0-preview 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}}'} @@ -175,7 +175,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer?api-version=7.0-preview response: body: {string: '{"error":{"code":"CertificateIssuerNotFound","message":"Issuer not found"}}'} 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 index 87f24542e771..a8c963d2184a 100644 --- 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 @@ -47,7 +47,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/create?api-version=7.0-preview 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 @@ -58,7 +58,7 @@ interactions: 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'] + Location: ['https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending?api-version=7.0-preview&request_id=a55235da06584df2b0bee49aad82798f'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -82,7 +82,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending?api-version=7.0-preview 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 @@ -116,7 +116,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending?api-version=7.0-preview 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 @@ -150,7 +150,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/pending?api-version=7.0-preview 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: @@ -181,7 +181,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/?api-version=7.0-preview 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: @@ -212,7 +212,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/cert36d5156d/c3cb318fc4a44a50adb9852a8c4b959f?api-version=7.0-preview 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: @@ -248,7 +248,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/?api-version=7.0-preview 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: @@ -280,7 +280,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d?api-version=7.0-preview 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: @@ -311,7 +311,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/cert36d5156d/?api-version=7.0-preview response: body: {string: '{"error":{"code":"CertificateNotFound","message":"Certificate not found: cert36d5156d"}}'} 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 index 43e6b5b33f83..bbdba2bd635b 100644 --- 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 @@ -45,7 +45,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/certimp85b111b7/import?api-version=7.0-preview 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: 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 index 1d89b0db3d9e..ca81d993ea22 100644 --- 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 @@ -45,7 +45,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/cert062c210d8/import?api-version=7.0-preview 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: @@ -79,7 +79,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/cert162c210d8/import?api-version=7.0-preview 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: @@ -110,9 +110,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates?maxresults=2&api-version=7.0-preview 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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElXTmxjblJwWm1sallYUmxMME5GVWxRek5rUTFNVFUyUkNFd01EQXdNamdoTWpBeE55MHdOaTB3TmxReE5qb3dOam96T1M0ME1EZ3lOalF4V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['755'] @@ -141,9 +141,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates?api-version=7.0-preview&$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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXTmxjblJwWm1sallYUmxMME5QVGxSQlExUlRJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['752'] @@ -172,7 +172,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates?api-version=7.0-preview&$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: 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 index 6b809c63358d..84c73f7081c5 100644 --- 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 @@ -45,7 +45,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer1?api-version=7.0-preview 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: @@ -79,7 +79,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers/pythonIssuer2?api-version=7.0-preview 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: @@ -110,7 +110,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/issuers?maxresults=2&api-version=7.0-preview 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: 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 index adaef6597928..c5273ae7f83b 100644 --- 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 @@ -45,7 +45,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/import?api-version=7.0-preview 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: @@ -79,7 +79,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/import?api-version=7.0-preview 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: @@ -110,7 +110,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/certverd5e14b0/versions?api-version=7.0-preview 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: 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 index 6b59844e73ab..5b9a2aba002d 100644 --- 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 @@ -47,7 +47,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert/create?api-version=7.0-preview 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"}'} @@ -57,7 +57,7 @@ interactions: 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'] + Location: ['https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert/pending?api-version=7.0-preview&request_id=ca8e87db3d1e436b90bbfbe835fe77a8'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -81,7 +81,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert/pending?api-version=7.0-preview response: body: {string: MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoOLOXeOE1Ab8iK862F3CTPCVaxFgh8w8Xih7VQtIYTnKjU+QjoBuk8x/Y52BYCLLF+LLbLg524kDuEJ3V3RAURzv9fty+CziHUCn7sgBzuzKDFhkXZvBuMaZjHWRdY8dHbdvQlyQLx1DqzeY2REAjgTHMs7bNIBoS4NXbqMEmt/TspVsm9ZtxZVZSh0sDBEZAKaivH461sHjNSccQYQZ/QBzdRgYnZE1WemCBzyvQz0aQimwO5/X9QIO3Q11qeF3LYVdLF3a205iImMiDnLqUUSXVprWHsrNqZzJSlUb62eCZWv5LADII2DnA0i3knmBx2e7A8NMF31SYqhqSTnHfQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAI1XsDnR6I+0vy9CzcA4U1oHTYmjHVfSgRrNYbMPCVT/CIT1Rq0ToKA4ym3pbfe1S4rkcmUaitkxDeWOWaPu4L96IgKO4n3SB6bfiwPfhSwaBodADFJEoIXPHMS5yzHvee1h9GHiL6P/TgIyZK0QdJvlcPlq04RFITkRHSRRyuRk72f6Ac4QKc1qgPz9WbElxrTSTxlxx8e5dgJYsl0sVx0WjrQnU9nU5mwcYrLygAMStIY980YBBHd8X3JQe9XxcMuthytKKzZYaK3vMSrVx2un+/G/SglO85HBMachUX6Hf/C+zmxHdgqfcAvzXx0aLGJXK4MX2h/qFLz/qB1dZcg=} headers: @@ -114,7 +114,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/unknownIssuerCert?api-version=7.0-preview 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: 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 index 007c60375c4a..61801b5b8e1d 100644 --- 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 @@ -45,7 +45,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/import?api-version=7.0-preview 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: @@ -76,7 +76,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/policy?api-version=7.0-preview 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: @@ -110,7 +110,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/policy?api-version=7.0-preview 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: @@ -141,7 +141,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/certificates/policyCertificate/policy?api-version=7.0-preview 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: 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 index 2d67bf4c1bf7..4b8f45bdeee1 100644 --- 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 @@ -61,7 +61,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/import?api-version=7.0-preview 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: @@ -95,7 +95,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/import?api-version=7.0-preview 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: @@ -129,7 +129,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/certificates/certprg0626b1626/import?api-version=7.0-preview 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: @@ -163,7 +163,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/certificates/certprg1626b1626/import?api-version=7.0-preview 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: @@ -195,7 +195,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/certificates/certprg0626b1626?api-version=7.0-preview 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: @@ -227,7 +227,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626?api-version=7.0-preview 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: @@ -259,7 +259,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/certificates/certprg1626b1626?api-version=7.0-preview 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: @@ -291,7 +291,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626?api-version=7.0-preview 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: @@ -322,7 +322,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/deletedcertificates?api-version=7.0-preview 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: @@ -354,7 +354,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/deletedcertificates/certrec0626b1626/recover?api-version=7.0-preview 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: @@ -386,7 +386,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/deletedcertificates/certrec1626b1626/recover?api-version=7.0-preview 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: @@ -418,7 +418,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/deletedcertificates/certprg0626b1626?api-version=7.0-preview response: body: {string: ''} headers: @@ -448,7 +448,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/deletedcertificates/certprg1626b1626?api-version=7.0-preview response: body: {string: ''} headers: @@ -477,7 +477,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/deletedcertificates?api-version=7.0-preview response: body: {string: '{"value":[],"nextLink":null}'} headers: @@ -508,7 +508,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/certificates/certrec0626b1626/?api-version=7.0-preview 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: @@ -539,7 +539,7 @@ interactions: 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 + uri: https://vault-626b1626.vault.azure.net/certificates/certrec1626b1626/?api-version=7.0-preview 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: 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 index 06b291c31d6c..4ce797e547ba 100644 --- 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 @@ -104,7 +104,7 @@ interactions: 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 + uri: https://vault-397e1582.vault.azure.net/certificates?api-version=7.0-preview response: body: {string: '{"value":null,"nextLink":null}'} headers: @@ -182,7 +182,7 @@ interactions: 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 + uri: https://vault-397e1582.vault.azure.net/keys?api-version=7.0-preview response: body: {string: '{"value":null,"nextLink":null}'} headers: @@ -259,7 +259,7 @@ interactions: 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 + uri: https://vault-397e1582.vault.azure.net/keys?api-version=7.0-preview response: body: {string: '{"value":null,"nextLink":null}'} headers: @@ -290,7 +290,7 @@ interactions: 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 + uri: https://vault-397e1582.vault.azure.net/certificates?api-version=7.0-preview response: body: {string: '{"value":null,"nextLink":null}'} headers: @@ -321,7 +321,7 @@ interactions: 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 + uri: https://vault-397e1582.vault.azure.net/secrets?api-version=7.0-preview response: body: {string: '{"value":null,"nextLink":null}'} headers: 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 index fb7fec479880..06bbedf67487 100644 --- 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 @@ -78,7 +78,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/create?api-version=7.0-preview 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: @@ -110,7 +110,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/backup?api-version=7.0-preview response: body: {string: '{"value":"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLk1rWHJVZlhFNFFxb3psOEZPd1RqdWhpWU02QnA3MzZhamFBMmFycUgwNUthSTU4ZmQ3WEVrbkl4M3BCUVZzTXpyaHYzTVRSTWtEdWtyQ2JoempmR2V2a0dIRmo3NVhTQmU5bUxvaXBuMWRhOFJ0Y0NRTW5hdzV0WEhZLTdhWEtKRlhWSVNodWVTd05YaHZaQkVZN3JlenRWLUpfMFgwVXlUVHB5NklsTzc0N1VCRzl1SjQtU0twczJxaFpwNkQ3WkZ5OEpzY2pGMk1kVlZzOS1oM2VnQWxUN3pmQnZmUzVHblZYSGEzZXV2WjJTOXFnR2UzVDNGdzhKWTQ0WnJmd1dEOF93M1pmaGFPdUpMRzFpQ2ZXZmd2a083a2xtbW14U25Iby1leWIyam1KZXpQS2ZaWkx4NXhKUU9KS2FXQ1pwNVBjQm1SaVp1ZENUUTk4VHoySkIzUS54SGdOVGJ6aEJGcUVXSjZIYm4yZ09RLktXU09XTzFrSVp5WnFfTWV2aEJROTBpMWp3ZmtiUC1PT0ZmN1hhQXZTeFFoN1l1bUh0b1RCakJZVGtBNmV0SzJwRmJaNUczN0JCMTBSR0pDTjBoTjFjcDhLMWJMb2VsQUYxaEF4b0M1Z2NEc0Z3eXlLdUVEWXRiOElMU0tFbEg5VkVnblVVM3h4M2JlMVZVT0hQWTNyY1dOOTVwZVA5dkhGUGdkTmxNdnVLZFVhU09zZTdzYzJSMzlzMmZ6TGJjTTI2QW9LUTJJMVNiM19rVUlPMmV6VDhWMEJ6WVZhcVlScHVHQ21TQ1VjMEQwU1lWWElRNi01M3UzRWlxckJ1WkR5a21MZU5uUG1BSlJUVTJMWS1IZzNCNGM3TGhDcmxyRWt5QmpvRHZ5NjROdjYyY1BOUDNLUGFoNEtwZjlHY2JpdTM2UnJKc0pRUGN3OWJLXzZCUC0yVFVTLXdEUHlUZExHSW5GQW5kRnRaQV9VcjJmWF9WbmNERkhwMmF5aDhyd3I0bU9rMTg4YXNXQWR0ZEhqWUlUVjRUbGFtRW5LSEUzcExUXy1pSDRxZC1vWUhabkd0WEZ2Wkk4TEtpSXR2VlRzbi1Ec2lLZTZGaHYydWM2Ym9YQ1ZrdVZxS0pkZlI2cllzU3NDM3FsQlBITG10dnVGRm5BcFJheGxkVmhPb2JYTWRyZG01UzRoTUZta1hqcjVBU3NvVFRMYzJmZTZTNnVXUmJwYjZ1bnZaWlpNMHM4YXhJZ0hMbGhJRnV0SThQSEx5bXRlMTZmb0NydXB3Z080TXdyUzk4bERHbmg1SlVxU3ZxY1F0OERzQlRTWTRMVzhCclgteU9fb0I4MjB4YVM0S093WUhENW0yVGZfV2xwRlhBOVlzSngxR3dFWUtPWU1jaG0yYXhFcndiVVl5QW5wNjRURGI0cGRtT2hyalN2VTB6M1dPYmJUV3NmV1BWMGhoUU9DQXZ0UHpvMDlxYXJYYzgydDBWN2ItMFBHeDR3VHVtcXE5YXdpY3NCYm5VMWlFQzVQZ0lNeF96OXczeVRicEkweTk2cWFsSGJ4RXd5UlYyUFFWY01ua252by1Qb3hOMVAwTndfSE55V3ljdkhjX0xMVF9rMnJ6dnRRdHYzZFdlNDJteFIwMVRKV1RNLUlJTDg1RjY2WnZOYmdiclVwNmdSTW5mblZuVDZvTFBXLUVITEVBcGZBTUFJU3Y4aFE3blN3bjNjejZJa2JaTmlGQnRpVGNrekM2aFdFNUxnMmV0QnFoSVFhdlpQZW91bzdZYVRaWXdKYldsZ1Q5clIzY0JFR1loN2p3cjg5aExvWGpwZWVpWmV2OFpOMnVXal9oeXpmWm5vN2pPNzFEeUp3LVBxYTRFT1dNemQ3WnJBOE14LVo5eTNNeUJCUk5aazFXN3JRbG5zOVZPaEllMGgxMnVacXJOc09DWEw1UUFZNmVQVk1FWXE5UWNvYWg1bVFZV002NGJoX0k2aEJXNzFMRnVxYjNIU2tMUWpjZ1dWVk81aF9POVg3STJyRUs1VkpyQ2FvSWVNcjIwV19BZGFzc2JOWjhBcHBCMUg1REttVzFTZjYzMVo1Znd2YUE2TFlLZlR3UjdnaXhGYngxSE5BMTgwSHJXUWhqYm5ldzhrYnZXZzFoM2dMMUtDdG0xNnZ6LUhXeWJYQU1JUHBnVUdGVkM0a3ZMZy15WFZ3WVVJQm9PNzFXRjZrZF8zelh3THBiNEFxSl9UYVJ0ZVpiV0RfVkFNWUJBMWp4SllpaFhoeFJQVjIxdVhfYTlRYm1XSHNDMUZ5VFRpdFZ1LVRnZHVsOHBpejllcVZtXy0xRk8xVFNNS04tM0c1QTV1Skt4UHE3OWtNNnV5NlJZbzBvMHVqeENaRE56bDJhNnBxRUZQMkhWcFV6eHV6SGtvTEowc3pDZGlyVXZnTGw2NklHNml5Q1RDc2FBamtkcE5GMURfUVNuY094VFpySl9xSnAtTERnbGF6dWlzYjdzV216cjBWSkV3amZ0ODhXaURZTnFGaDB0Tkw2cDBwTUd0RHZkaE5KcUlFX1pxNG9fUUlSNUNWdERyQTFIczdzbjJPelI3aUI2dGc3eEhJaHFDckZ1OEVjWWV1SHUzX3BibHhvXy1QQUZUQVNzUkRaVGxmZDFGLTZpYlZxbXYyTEVOQXF5aHFXTWxNajBLWjg5OHVKTkIycDNZZEl5TmdFTWRvSF9RY0xuV05HcXNoQm91aU9ldFloeEtwMnduSHpXSVNTWWpmN2NVcDhpNm5icUhzLXo2UXRQZzZySThBejZZSHBFSlQ5RmpucW9nT0hYNkZBbXBYV25qMC03VUVDbDJlc2tvdll2cTE4enhTYnAxaTI1X2NWbE1vRW5IZGs2UFdmTWpuUzgtc21nbEtkREdhT0Jkc2RlSU5iVmFlemlCYl9GRFloa3lVYi0wclJ3TENDOWV0SnRWYlFPbTY1UjNiVkxFVWJOUW5wYk9DZGk5N0cwU1k2Z1IzTjkxbmg5d2xYdGQ2ZV9vTlljOWxwU25SR0ctck5Hb0hfbmRPU2tHNWlRTmR3d3Q4WHM5bE5BT2ZWVm9FazVUREVnWEE4dXV4eVpTdlFlazZ5NTM3T05WcVhmdGZRT2hLWFFLalF3a1kwVEo3ZlRGWmszczk3YmhjbVY5UUZIOHBGczd0UXVsb1NRSVdlLVEtNVdrTjdkZk5KSVRXYkJEU3pSZmxHd2EzM3lQN1ZLTnZBeW5vT2o1NUwwZDBnbFJxTjZhR2FBUk1mUXp6UVlmd1dHNFlRRTFQbnlISmFvbTBla2dHWm5Bd2VPNTByc1lSQldDUm91YnZ0QUh4NFdiTzAxYm9kUlU4ZFpLSGJqQWJkOHlxZkZmYVU4QzJ3dHZQSG5qMW8yUnYwOHBKTTJaZXdRaFEtcVIwRXpDeVp3dmNRLW9COFlEcU8weHE1eWZTeWxWb0ZTVldMMEhyNmg3blJyV3lCN0I5dWV0aFlqZ3dfeWJuS0dLem51QmgzYXI3cTBNd1RHTzlfc0hlaXZqamFtTFg0X1ZwWjZIcEVMaXFKdGhES045S081dlVjYTVZLTVaY05WcGs1UFJvWkVUdVJXVVl1TGZHdWFXbmpMcXIwcFFSbnVRUTlfOEp0Q0VmdEc2dHdvcW1KZS1uSDVSWU5ZM3J2amdrdmpDOGpmQjFSMFBWa21NVkgxdGUtRnNBRDYwOTRBS0dwVmhnbC1oMU1RcEpDTGVxNXVsYVBhVEpkZmVYR01VUjAzMXpablItY1J1ZnZKekVJaVpnUjJGcTc1SU5NaTZyejNtY3kzX3E1YmZQdDRBejROVS1Va0VxV0FwSjh4dF9XeUtBWGRoZklJbUxxZVdVdVdGdzBpTXd5am1fVkdjd09BcGVsOVNsZ21NWkpjX2JIcmI2SEVOS2ZMMHRraHM5S2NhdUVaQWNzOWM5MHBtRFA1S0phQWt4SDhlaVNrY0ZPY25NN1J5OEk4czU4aVBGcUNUSDJOX0ZhRFQ5dU50V0Y2dE95cmNDX1l0Z2xhc1pfZUNfbDdVT3ZVdzc0Z0FEazlnQjV3X1FGbmZSaUxld2NaaHFVVV92VjUteVNmb1FETkg0ZjFlMjVRTXFpeGpHaWEwTFBkV0Nyb1o0Zy1zOExSa21sak9RVzBfZWI4SFJYUmxENmZ2SFBtSm01Z3VBdFlqWlZOOUp5WHZVWXZvZVZhUzFFSlR3OTkxMldKQ3d2VTMwMnhJSjVnRU1VMFNGb0lOM0taQkJTRjIwZXk4MjRiczlXa2tBSko3T01VNTVwR1hKb3JkM1Q4MXFhRFFLNWR0aWxUb3pabk5YWUFjWnhMSFVadEpVU2lvaWlVMGU0ZGtCMzJiR3IzQzk1VXNOakhJMmdudGRSOWZ1V3R2cVlEbWFJcEkyWVIwamNGZl9oTGFxR2dPeTVkQWVkYVBmM3lTcFp6WmNkSjhxNWVGQVNjSXlQaTN5bDNXVlczWlFtaVppbWxlZ0dqX2U3REpFOXdGckFrTU1ZSEpsRzU1QzRIZV83SUhveHkyOURRdzRMNVBrMFJXM1U0OGVoX2l0Y3ZONGYxWkZwaHpJQ0F3UU9iZkVpYVJGWjhiTFZxYmdUdVdBaTduU2tXU2NiN25LOXg3a3hjNkRrbUN2blV3OGRsd2hDazZTYnZFYzluTFRUcUJmTG9YcktoazNnV1JYY2hTcExxZU9wREd6dEpUbF8xWklmSDBaVFFaREduLVhGQzJhaHdXRzJBQVVIWU1PU09CMUlQWTBwZXFRMFd5SFBLdTRQTmJvS0tPeHgxdzZTM2FyM0MtbVdDZXVWZ2hEVkt6VzhValFpY1NsaU81UGNUUElYd3R4QnotN3F0TkZ2cHBGQnYxVTVneXd1VlhxbkExdDdxZjl6X0o2bHFrZml3RzdRSUh6dlRyOXNUSm9jZlhVSWVEbko1QnRFc2djUG1EbWRNTWtKSnBjdzBSZGw2am9xRzF2dXU1T1RQVXdiU0ZUbnNoTmlDQ045bU5SZ1hLNFY0Y05fZzFXUFJLclR6d1N2NWRoSk1yUC1UVHA4NkJfYzRKa3UwRDJlMk5HSkZ1dXFPMUFtRnd3QkxPVE5USmw0SmhnRlBaaDBaU1FKcE82alZxeUhCSTlGMkJVdnBCaGs4ZVE1WklTWFVaNlJhcmlBNnJYdURGeE0tbDZVMFZlelFmamlGek5PRlkyWVhvbXRraGk2ZElYX2NwaGtpNy11M0pBMkRMS1hjOEw5a3F4RUtLWklyR1VvUm1Za1JxcW5oeHh2SlNHV1o5MlN3NjFhTk9rencwQ3pIUm5FUUpIR2hxYV9jT2xycHJMSUE0QkZQU04zeDhXWjgxWWUwN3RWNzBvUWxPUUZWWFlkSkpCZUc3ODh3RWRQWm1odVM5cURLTDFyUFZtb2dWOFBvM3ZpcGFZZkMxQ291d240MHRxbFNockdoRUpyVmpaN1U1V01faDV0bExybFBlT3lZSmxtOFRvN05CQUxpVUtvR3Bva0xvZTR3ZngxcWhueFhEc1Vjb0NlWkF2X25EaG5zUXNtR3dSMEJYeWNGMGhrdUZwYVVQa1dySVRnRkFIMG1SQ3NKNWxvc3pKZC02aDl4VUQ4U0daR2Z4cnBTcmxJQjlqeDV5QlZOcndzMXRTcmpDZ2ZGYm1DeVJkZE1yeFoxQ3RhSlpvdGpQekJjcUMtMnNuX09ia1hYUVo1dnU5MmppSjNUcDR5N1Fhb2EwRFAyTTJRM2hPRDR4MnUxU0cxZVVnNnVDejByQnVCMlVWN1FYVE1nOU1VTld3UjA4TURYczlVNjBZSFVxbjBlNEIyLWRLMVdhZDFSbm1yel95a2ptelEtaHlsSEpaaUZNVldKTFNseWVVU2VkbW96amZ2eGRXSks5cGRGN1FQWE8zLTBINVhHZGpwS201MTRmN2VuZDZ2YkoyNTNlOV9IZlhEQnpJZ3lYS0lmajZtRUFxcktXR1pCekhNcm1QcTJWXzVmMEQ0cGh2MktnYVhlSjBLRmw3bFBvcE03NldYcVM0OXctYkIycHVnQ203X1ZsMUdrRXVwLUhoVDdCMTlsNUpGS1V4d0dGdVJncWhETmNqZWxKc2N3eXJtUW95X2lfVU9pSmM1QkVGelZkR25JSmlPRmp6OGhGQzNOZ2RUZnNSNHFZblUxcVJ2ZDlXcHo4UV9tQXBwVnBpRWg4eUw2V3FjVDhBOVNVbWphRjFGRWFQdy0tZUdRdERPNEs0UnNMVHhBbExjR0s4NlNFeDViQnU4WjBrdTFEM1U4VmJFVDlwT3BPdXBsOF9DYVNxVTVQOTQwTi1ZRFIxUkx4SUQ1ZDF6bl9LQ2RjVHJRMjVmTW0zWkJCdlVsTVdza09ZcG90TjlpN1U0YnZyX2lEQkJsdUtzTTRhV1VSMTlDQk9sNDlXWEprekh6dUxQb3Q3aF9CUDM4ZlBobEJUbkpNanJUeU1tQVBFeWV1NTJXbU5abFg0alNQYlRLZ09lNXlBWWhyY2szb0NXTWE2N2xVekdGVWEwWVNCc3ZveTJ1aTFzN0lJTmZnblZTZTJ0WGE3M2VhSlJTRVRZVTZxMmZzd0p5Q0hlNnhid3JySlF0N21XOUh1TGdGQTV6bWJXWmpjTlcwbTRQQmJBcmRyOFE2Uk15bFhwaFMzemlTcGlsVWxUTDd3R1dJeGlyMkl5eHlpWXJVNHY0QnZSV0w5N2RhejlkTkVFMjMwcEd6VXVwcVpKUnR6WXZvMWF2UzdST2tNRHJmMVppZ1RJUGJMQnIxdmQ1X01mNE1IV2h4bDRwNEFHdVlrUWVXRlpVZ3pNNW1lU3p3Y0tyaUpZdnB2ZHcwSG9tUUF5WHFDRXlxWVNqd1hxelZCd2RjcllXR20zTDFEWFAyU2l2eFBGZ0ppbUM0QTNRckllV2dNdy1Nc05vREhHcVF1VTBTTHFjOHNacm51MjZ2Nkx1UVdoQV84NFRnR1g0YXE4djJFaW9nMXh4eV9ILTFjTGJob2JWQmc2aHplODFTbFRsOGNrVGRDai1PS2gwS19hdk1yNXo4d2tHaXJUcFFnbUdFeDlRNnFJTHJ2NUJaR0dPLXB6RG1mLUxxWmtMWEtfRzRzUzFWZkpvWTBURmRKVGhEWnROYURJR3RDTmdPZWZSRnYzQlVoZlp5Rnc1WGFkMU1jSHoxRlBuQ0J5S2pPcW9UcnVEZm14eVZ1QkhPdFpkMG9qOGZiU3p2LTUxbHhKYnRNM0xxQUEteGJEVG13ZVQ2WGRqdHV3ME5wakRZV3YxVFRhRzBXbXRzMzhVa3J5N1RJWjc5QVZEdElfR1JleEIyZ3dOSGdfRHpTQWdxX1d2UmdJSk12RmcwN2F6QkxiNnZNaEUwSFpLbzE0SldiX2pJZXJTTm10VWNHNk9UT2JJcUdWQzVkRy1BbHZLYVlLWUpoRlJrU3dNbmNYdWpBR3NwUHA2SE5UNWtrbndpdU1DcHkyVUJiVjFuUFBPdUc0Z2hvR3hrOGpxM1RsLTZ4Z09aWWVUUTRKcWg5b2lpLUExX2lpQ2pscFM1U2RBQ0pTY0ZqdHMwLVV6Y0VQa0x1dFBfbi1zTlU3MDBMTUhlTDJ3d1JNMnNlb2JJSU9zejBEcTRiTzlJNmdhT00teTYtWllGUFo5LWxlTnIxTUo1U1lSb3ZzUTZ3UHlZeEs0NC1yLVlpUzBHdzAyZndhbl9KS2JyQ241Q05NbWNPeHB4a3lWcDdWRERyX2pNZjg3ZE1TN0tzaTFUWUl6bXdWVW94YmlfZXl4WUJqTnhxd3VQQnVOMGMxMU9teEpVRmhCSXJIVnpCdkcydFVKTEd0MnNSY0tJX3JkZHRVSnBqc2hEbDVyX2R6YnZNNlJiUG5td0c2aFhXY1dJTkxycWc1RWJqdjFDLW5kZGNJVzFWd25LcDRQbmxVT1FmUmIzYlZ2aXphQW1la00tOTEwYndZMmxuRXlFX3V6NkNPTG51RUUzRnRzUlI5RU5VVHBqenk4a1lIaFl0cUM1UHE4dmkwTGQ4N0l0VGRmbW1sWDAyZ1VfaGJDZXgxQ0k1WE11X0xyZS0tSU9vcHoxUW41aTd2LTRsVk9Sc2J0LVhmMm01MUtjeG5RTTdWMXlsdVlzazhwOXNIek1rX2NOVXV3TEU0ZF9NeGxEWkRPaGNaQUhpLUh4SURaMkJMTXgxN2V3YVZ6OUJ0anhlV0k4THBUcUZlWlYxVDBGZm1qZXFBS3FsUFFBbWd0MEgyR1RsMWJwY01Va1F6MUhteDhFeTVpanpYN1NPa2h0eEt2YmQxVzZKSmxZb0VIMzQyTTk0NnFrTHZnUVo0LVJiLXpXSE1BZ2JvV0JHQV9xVjZZTzVibjctTFZRV05uRnJQUTJKd1pHQVNmUDVWaTBYUWs0VGVrWVV4R2tsd2VzSy1NYlNFU2RBaEJQY3J2N3VBQUIyUThRV21iemNNRV9DdTZZNldPd0tnNW8xc2o4V3hGNnpMZko0M3VZeERISjVYTVNfQXBJM1ozaDI1YlVMQVFkc09IYncyaHZxY2hHNkUwVWdyLTFzNWtrQ0VrVzdYN29ad3NELW1Hd2lreDBqVlVtSmQ0RHpjaU5BMVpmQkZCdmlUeldOWDdKQ3VaQ1A0dDZKLUt3cVRjbmRLaXFzQ181Z21qaE1RRUhRUkxFbGM5ckwtRll2dkpKOEFvWkwtMjd5ZlNaQm1rMFJPMTBiekU0WTNpai1McUo3c3g4SkhESEZvVHRfQ0p3eTJFYVFhendzU1B2N0dBemRPZE9TaTBXSW9neE1HMmFXSnM5SnhaZjZuXy1oT3Bmalk2a0pWbmNEWmtvcGg0a0o5VXBFX0Y4MkZpX3hBeWJLQWtGVC1ya1gxNUlpLXFwZlpuNjd1QV9WOTI4NFhfTkJXVF9JT25rNFpudlFTeEZDVEZ6VUxVaW12elJMVWtBSDdlMTJrQUoyNThVYlJFS21Bc2FZRTRUV19UdTFTSlRSdDlDZEQ1VldtX2ZrNVZZNEh3TnlpU01EeHptSF94YVhsR3JBMDlYZUxSN2VhN2lqalhjSDdXN2szZ2J3OEVzTThWbFhrMjdoZ0h1TWxkS1BnMWJ2d1hLc3UtMXUxNlJWdzhHZFdycG41WEwxbm52MzJPWnk0enFGWnlYS3lPMzlfTVY4eDdFZklvQjh0alpPYWFCSERQemtTdU5SMWxTWmlCSUhFQUtodmpDdy0tUG5OS3dtS0d5QkNiVjlQZXF6S0EzQWQ5SDliQnZxOXA2N1V2ZnZLUnR6OF9lTjdpSEdGS3ZVRk9uVVVPSlhER1hVWk43YlhmSndEU3dCWEV5VEZRU3BSYjExeTVyR1NaZFVBT1VHX1VEb2V4T1l5X2NENjdwdXZuY2xlNThaX3FzRDRvelBfNkloYUY5RUdNMmE2R2xEeUhvOVktOTJ5QlYtTHNjZjYtaUFvZWhVYml0Njd3Uzh3aFUzYjk4b3JMVGs2YjF2MW1SMGFKQTB3NWdoTTF2Y3J2UlJzNGxjdUVpelRfeENldHBWbUZycU5mZVBybTlZUzhLdno5cEppaGhnYlVabTYzZUtvSFBuc3h4dDJKaW81UElXZGEzdnFsaTc2NF96T3NHQzR6Z0k2T282NUoyeTJMSzJOeUQ1TEZVWU9DUndLWGxKTlJhc3NWYl96LWYzN0QtSVdRMEZyZkRReE9ON1lkNE5jSVdsSVpaOG5HcG13ZnQ0MXU4RHc2eWE0Rkx2QzU3WFJOemQtdlN2T3lINHQxaWd3YkZZZEZwazlMRlk5QV9qRFhkVDcwdkppS3dYUW9nRURXVGhNWHYxVkdHczFYWTJoRms3NGhrNDliVG55TXpxV3RBY2xjcVQyQi1ISk12bWpxNXdYTFB5WEo1b2FMWk1PVHg4a0w3NjdtdVBMTWU4SW43cTFZa0JRQnBxa25pNXU1bmlDNUhvRXY3N0MxaVdPX3ZsV3dpWXRtX3F1TjE3ZjFtLUpWOTdJWWdodm1US1VaWFBhZmhDTTV3X0tVQWlrWW0zamg5TzFuM0Q3WEpucFBrWDI2RDhoRmtsYjhnZ1hIeVZKNW01U2tpZzlXNTBPSVhyanVZMHcwRWhYMEQxYmpJbGxpRUl5TGswUlNycm8tZjlFNGVXMU1GaHJGaXpvSGtSV2lZYms2eUNMRTlPZWhlblhITllrU3BaQlAzcXNxa1llZVlMTmNPcGphSC1pMnFXdTRzZHFaZmMxaXJPMEhHZF8yMjRJQlQ2LTA1XzBkZEs2ZnVIWmpuRG01d0pOUm14R296Yy1WS01FNm8xeGZ4VFV0TVZQY2diaDBHMXN0MlhGZEpnb0NEdXRFdE9WRFBicjRVdUxMN3k0RjlYbWhIMGktWDl0SDQ3emFEbTM2Y2MzX3l6blQ3WFBPejVtT3VJRTZTV0NWSjVjYVpIWXJ1Y2M2cGFiTjBaVlVVQTR1eWxPMUdoSFViaXVWNjJjWDhYQU12SU41Um0xendpZEhoSmlzRmlreUd5XzN1UVFycUpYOWFvSm55Q0FHYTlMVnk5elV1bEV0aW80QU5Dd0VEUjhlY3RzR3I2VE1TSE5POVQtQ3dKeHQxcWhxcUN5Z3gtMmsxSXNDTFhIWjhrOUVNSTIydGlXYi1uMnBDMWhjSmtWR1hDRzk2TmhFS0pjdElfajBhQ2hVSDFzSzh1WGN4X1ZLaUpkcUZvdlBueVBWMVFiMXBiQV9mdlpSanBGdVFXUEJxY1Z6QlFJMUFLZ0Y4Nkg3bktEOUlQdnJRZVN1Q2lpY2JLU1lBeFhabXhvY0VGTTAxbzBwenZXcDdZaHNKLTNhbW5aX3hDd3Y4c05WX3h5NEJNVno4SENjNjVPQ1BGeTZ1RHkwS0JlNmhNQ3RYNl9INmFMMHRDbUNKcnVneWp6V2E2LW1FWnNQLXM3c3ZqM29MMVdNM3liMG9hUkFmT0VpN200cGxaSXkxb0kxOGJiQWxRTm1ycmtHUzBUSW0zNFhJVF8zbmlkWVNtUDQtSVJieGVPMjAwdEIwRTdmNWxsREJrUFl3Rks3ZlU3QWhnbVFhRmhHejRxU1NhOEd0b09xOXpqakRDRS1QZWo5czZlcGRIakpqWWdNQ0F3UkNoX0dPV05JNDMzVjdsOUxzLVNkSFJfRzlOQ2NkUFc2VlBEX21jT0JsdGVuNTlVY0QyUlZqN1l6elJ3c2xCWnprRlBLV29HcTYxVTZxRmRpZ2s4ZDRCYUdzOGRSVm95Nzk4bkxGMEZwb2RwaGExTU56OG9PRHJXWXhBSjB2TFhLT3A4cHIzWHByTms0Umt3bzVnMkxLRWNuYnZDOExXczlvQlcwazhtYTdza1lTUWR1WEduYkh6RVRqdENUeHZNZlBFZjM0Q2N5amdNMm1Za29MdlV2clk2U0JvS05mQjlDNHJHdHA1cVhScjNYRWRHOXN5Y2JDVFdCeDlQYU5Qejd1eW1VbzVib245YWdTYXRsSHUtZGJIMXVlVXBhMFhBQXdlQnp3b0s5dXJQTHpYay1rZld4VWpjOEoyNmtXTHVheTY2RWVWVFZaVEZsdXhvNjlVaDRpT3ZuOVhrVXhKeF85X21reUpITmF0VGQ4Qi0tT1dGR1N0SnhnQkJscUJYX3U1WVJKa3VrTXhkdTQzSjRDOTZvT29yd1BMTGE3dVlUVGl1LU1BbjVuOUEwV3BHTTl1Wms5RFdVQnM1WllKM3B1QTJ6NFA2SHMyRmRtUHoyd0NjT181Xy1PQ2ZGYWt1R2pzMVZPdE5mSW1TbVhfWGlaaGVNUWtuSF9pcTIzUm9GeWkyaTREMmZpUTZfX3JWLTIzRVprNUpISUsyeXNsOG5WQkZzUHNZczFNUnBmNDgwdGVBZlBzZFVxMGViOHBndUNlQXR5Y2V6cjdJMnRvNFc1NUw1QWFpdE1CT0paSmhsSURHNW5CTmFWS3dwRVUxTE94VkQ0TU95ODQzZG5FRXhJTEhOLTNTZDZUN1U2NjJfWlRBU2dyUGNfNm1hS1lzeHpSaEMyQ3FjTkVlUTZJUWpJSThyaHViQUZpWmdTUGdGM0o2S2dGQnAzNVNsR21MMlFROTV1TFFlUi1LTGFNT0tQTGZTRnR6NFA2bDhZdExGeUp2cG81aGVtN0tsT0p5UVJoN3FlZVVROTlRUTktelBfMV9zel9BbHpsbDl2RldLbFRNUVV4aUR4eF8yR21ybHZ3QkJuSXpsdHhxWEZMMmp4dTFZcjZhQmp2TThYSHRJU09sd3BCNmwzOG5TdlI0dzE1a2VsSUwyanVBSVdKM3RHTTlud3E5Z2RzWVJoVEFrTjBOS3ZqZ05sSGgyNEFqRkYyeE9mTkFZM2NxLTZoU0NwUjBNS1M4NGh6UUY0TEI0U2hfX0lzSU94RjRoeGVSRWp1VzQ2SklUbDFBWkRHXzdBaWhkZUlHaUtMMzltUGtxQWJTRVI3Tm9WMDFmbkU2bVlyYmlEb1J4U0xoM0J1c2h6S21udXAxRm95OUY5ZFE2dVEwWDhrOThRWXU5QUplTmxsWFYtV3FVZUc3NWhfcnVRZm5jQzFScUc5OWtQY3hZM1NaeEc1RGlHcG96Q3FUTGV5anh0cEFVZkNPQTV3ejlZOVpMWlVLdFFRSUREM2tUNDl0amFUUEU4ZHlFZHpoWG5RTVFSbVBud19tNGZZa2ptdVlJRWxkaUU3bS0ta1hRcVdLR1RCWnJqb0JSdUROWjVoSzRmY0g5VVJOc3VLeFVZRXRvbFI0Tk5iYmN0TjVFY1NLNzgtUE1lUklJX1gyamhtQzFYMW9lUVgwcjlqWFNtUzdTbTM5d0F4b1VFMlZhclJGOXpvS21nOHpocFRGVU1wdTVtaDI3aG9IRE5jYU9tVlhuMVROYXRhSVRvekxDVThBTGMwLXUzM2pNZTN0UVVqTDNrS0gwNW9PMHZrVmhiYl81UTNMQTdEWUlOOThlaWxhRFhtSGJ4X1pnT2UzX3FLdXRzTWNCWEExWHlzaXJFMURBUkx3XzlfY2UwbGthNGJpYmVUM09XV0JCRl92b2JFak5OTkpLcVd5MTBac3hPbEhPM281dEEzUWNPOVF6amY5STZHNHpoYldSTHZIdzRvOHVDeU9MTm1xMVVJVEpuMjhXZWtMM3ZQQnF4TFRZYnFaTnlZZUI0SUF4QzF1eHQ0ZEZGMDd2YlNOZ2o0a3JMcXFpb21lbUF3SkNvblVqWjdXTl9DaVY1MFFLUGdHcjduaU82enQtbjF1SWMwSVplb2VvcGdybzIxa2llZDh3YVQyQVZxR0FBS1NJckZSTktWclpsWHU5emlXTlRPX0xBTE01dmJRMDdPS2l3WThDbG1VSW0wY2xnVEI1bkYtNEtMMHo1bGd1MldwWGJjbFNyRUxXZ3BCZnZSTnRTQ3BwWlZrbENLdG5VVHRDVkNFU1gyVTI2TUJ3N1EyMnRZVXA2MFNsNUZoVGd1YmtQZVFNOHZ2VUpaWFNnSERCSEstS1BseHIzcGJqeDZmYlBMeE5vZmxIQzY2S0dnWGJ5QXpPZGFsZmlNSWY4X3AzOEVKdGFBd3NJUGNHZ3o0T3B1bm5LQ055dmgzay0xRmd1WmtFQm9PQ0Z3clNsWFpTbFdlMV95RWdPeTBrTHBiUXFQdXcyUHFta3JxblFYeDMzeF81aWlzZXRnbVZYdklZd0pTdGtzaWRDam1SRVlxZG9pYUJiVURwajlvenRlcnFSd1JQc3duN2ZXMm1palRhMjQ1SXNFTm9iWGRuU2J1dWdCNXhzXzE5RjNKTXpjTXhwakpkZ3NsT0x1dDdBV3ZvUkdwbmYyZUdZN0ktV1BpMzBLUmRQVVBYbldRRk9UdDMxOFZIVF8xam9vTXVrZjBfN0tPblExV1BqSDh1VU8xS2RZUERoYnpKNm9fNDc5OThuRFZPUkY0dGw1RzczQzlCYXpxazlhR3E2amFPNi1QWFZhUzhYVmhxaXZTR1JfUVhReUdPSExxQ3VrdS0xWVJGUXZVMkRMY2czUVVXdlFIWkh3ZjZQUzNERllzM0ZKT1NZMy1PNG14YThTeUpZenhXRFlUamVISnRJelJkT3EyYVFlNUk2Y3hEN3lWcGlraXNaYlNEbEhOSVlhQ1d5V0s5MVExb2ZhYWlzVVQ1VWhsbzh3Z1lPa1VnVXhQWlpudUIwX0dtLV84NDB5QWFPdUF3eDJXZ3Y0QzJJSFhMTEFLNEQ3Nk5lc1ozLUJCb2l3OGdQUTMycGZ4SUE1N1R1YURDRHlhQ1R6WGRxQlBCTWpEeW8tM1hMamZzdEx3aHcxbjBfVlZoaHNnLWx0al9Hc0g0QV96SFNKWHBfbXNOV3RndGpCcDdPVlNmcjl4cjl0WS13Y2VLOVYyc2xEWGN1eVNRQmtQWDBTR05oSkdIWG1jMi0tVEI1d2ZjT21aSUlJbllXVjlqenluS2pkc1I0ZFJQU0NQQkNqOXBuQ2pUdEJfUGNkMWFpTlY0LXhzdVd3ZUlXWGlHY1BrdFVwZHFYWnhaRGJuY2h1MFVfNXlQeThaUks4U295ellLWC1sNmtzbS13TWtpbm1aTWRlWGdtSXNSelVhZXA5VGF4RzlFMUNhWUE4N2VDd3BtXzJIUzluQjczd0N6ck9SNXEzc3VLZDZOMUVha2o1NVc2dDRKSDM1T2ZsQzdqWjZKZDFrM3JUb1dRUlVrcjVDcEh3V2dtbHJ5d1FiOGphMFotX2gwSk1mSEEtSi00d1FlSDJxVmdmRGxrZFJvRDFUYWdpLWpqUVgtWWRFRXZmWmJZZThkRUJvbnU2aGozSGRPNldxcGZPMjJEZzFrTTBWWmxlRlJEUjdoTmY3Qmhad2FNdzBsdXh0M0w1RGVfWDNlVDNtRnM1bHFfZW9UWUFidFNXOWFDNXFaTkcwUjZsZ0pTcTlub3FfdFpzV1lwYkd0UEEzb19GMEJzZmVFX29pdTRhWGtuYnpMLUpBMzBGUkN3VTVXMUhNNEJIbEJZVWNoWnZreXdFSnIwUE1TdG5ObFZlMmZiNmlZLUMydVJtZmxHRnUyckRqQmM0UndKTTkwOG5nX1BYNUVSbktwQUtlRjRDM3MwZDVKMmVkNk40RW5PRU5TQ2Uwc0dFWkpSM1ZFb2tVVnU4cmlRNFRuMU5KT3kwenhXQ2x2bDU1YXhrb1FJdzZmQlRKc1dhb2gyejBZWk1LUFZmQjRBaXhuSUhYcnBfd3hNb1VEZWpmV1NQRDhSVFBJR3hNZ2pVTWdUQ2ktMjlGMU5WZzhEX2JvZ05fb1JFMXlVckMzUDYyUHRwUzhtV1U3WFJEeFU2cmVzczNqaFJDempyZXVhbWxnU24tU3c2ZGdfb3BNTHRzUDhjZjVUaXFvV295MkZXSWxRd0hZeVJPSEtOY0ZUTGZ2bTc3T0hueGxMQzZpVmhLV0ZLQjI0T0FzQ29tN1R0WFU5bnpJRFRZNWxteGY5NWtiUXQya01QeHhTOFQ2cm5rNHNmSFJPVlBuTG1PV2R6bW44Ujc5YzU1N3hFdG1uSTlmU2hEakdQblU2UTZ1dHBuSmZQbVdHWEhXX2k2dkpjcnhkUXdZakw5V2RVVHh5d3Y5X2NoWFVyc2JGVDl4YVA4NFh6X3ZyTnBtREZ5Xy1zdVBSZDZ6dUNJM004NmZQMUtlbUtSZ0FfYS1zaXZHMmVROXBCVmRGUXNkTjY5WmhUcDhSMlpNeUFIRWpNaVBYaUw0RGlqblo3ZVd0dDUwZHpNQV81MkVLczVORlVSWDE2dS1hdm52cFpwOERQeFdOeHFMdDEwYi04QldQWUd4QjRwZUZGdmM2M0J0dFpudGUxMnlvVEVndlFUZ09nYnJ1MnVjclpWTkRFazZzV3Vic0szd0VicGRBcHNNQy1YUU5tVEktNi12clpNZ282aV9DUmxpYVAweEg0dTNVSGRSZUsxekEwNHpnVHQ4SVZid3BkdVl2eEgtd09tcGc1bHo0eWFPd2dOTjhheklDNEM2Q2Q2Z0g1MERBRl9RRC0ySGQ3WTVLWXZ6VFlxdXhHQU1ER21kMjhOcVRWMXJJbG9ib3pIN04tdm9XYnEyM1FUd0ZrZEFzNjlrbnJsSmUwR2VGdFlVZkhqLUJrSnNIUXhXbnFwT2pab09VclQ4TEo3ME14Z1IzMXBXdmhxWVJJUWlMM3A2OGxwQ3ZjV1VUb0tCZUtyY3pvY0ZLSTUzM0hUdTExemNneTc0a0lLMmxwcmRCS3lCR0RjMmxRcHFiVTYwUG14V0t5Q3VYcUZkaC1HTUJ6eFZkeEo4T296bUJZQnhRaEd4cE54WW53Nmp2ZlpneUx6NWI2UGhZNWozcXVWaTlCX0NGVkpqU25RbWJGb055TzZjMEltNVVWTU1uY1BlazJwRkRzdWtzc0gxME50ZGNsakwxbnREdXlONkFVR2FPNGJDdGcyb3RJUmdtUDZZSnQ5ZUMxSlZlWW5sc2VMZmU0QTBEVk9FUmJqQ0hPX0hXTWt3MVFzN2k4RHZMbEFya3JvSzR3LXNKUGVjMWh2NjRUX0dJWEVtQWhNM1A0V3o5amw2V1B6THFUekJSU29JcUVneS1xdVlqNUltNDVvN202Nk9jeGpQcjVQSG14NmRoUlFFYjlaS0h5ZFQ4SFJBbGttMC1FVzdjVjd6a01UcXhZY0NpaFc4d3RxTE1vZ1lUeTBqTGxrYVE4OERmRDhkNWdLcTZCd09VYmdnMEJlQkFXeVFxZW4xM1pEVEg2cFUxaDVnQnNhd29hVkdoNF8xMnhrTEJGMW1Ga2ZRaUk2cHpnY3RKX2l6d0lLcm1GVlEyYWVoV2czNGUtS2V4NmRIQnllbHQyclJDZmdFbURuc0xPT2tUY19LUmR6dC1QMTQ0TTFSaFA2d2VRUkF4bDVIRXpBOEt0b1h3T0Z5eUhtWWxnTVBmMG1xaTBzQnRjRkM3YWJ1V3hGemNHbkdRTDF2eFBNUG9QRnpqOUswV2RINVlpM2RmVlBhRWNRbHcwQWRGQkZCNklfWXljdENrTVFvYzZDTjRyemdPM3YtcHBNNWdmdXNqSkJNS1dhUzdmUlFzbHA4ek9SYm01TmhDWHBUc2xsMllVWlNPWVNWQi1ZZGs4OVI5b0FCN0Q1WlFxbWE0dEtSMnBQTmVfSkRTUzlPQXBOcnItcTlWQ0V3YXVJRGJNN291ZjZVSHV1Z3c0RkozVUJkVS1xcTNqQ3BRRlQ1UWhaTzFRbE10SXV1SVNYMWl1cUJXdVA4SDQ0WHhET3Rmc3BiQ2NEZnIwV1BwREJFTF9sYW1PV1NyaVRmOWRGOUJRZnEzZ21vNktVUk9CRzIyZDZyM0FwNHdodmhuMVg4VThBQl81TkRFXzZIUHVrbGtrRFJpd3NBbFFndTloQkZqZ3Z5V3pyWERORERSaFowaGtHUGZZWE96YmJwak9POWJTc3RJaXp4cm1kVjJUR3FjNGtlUEQzX3V4eXpRY0pSTGdfUnpfNXJqZDNaTXB3RGo2aWhOSEo2Njcxb1RMNjFSaVptcDlBU3R5cUJPVzdSRXdwN05JMHRuNl8yWkh6UkxZOTdXZWdSWjlYZm5hSXpYb2JRVlI0V3ZERTduSHYzSkF4dkxkX1haQVBmMHFKY0RKYVFlbGZHZEdyOUp0N2pXaTMwX3FzbURSbDRsRFppUjJ0OUVReU01LVEyVUwxU3JmTnVhdUlCQnBzME5qeHhhLWx0QW9sTlRXMlZteUMzakFvNko3eEdhd0RTZUxFbUQ2Qk1iNDJlOGo2d0xkSXVCVGFad0REb0NOODF1OVV0d25qZHdIVzF0TzJFOXl3U2s1RjhRZGE5Wk9abTF6SzJQMEY3eHEyWDF1WWE4S05NOWl4Q3psV3QtbHA2a1ZhT2FvTGhIUF8zdkpzRm1fYTcwd05ZNTF3V2cza3k0UVZab2FQWW0wU2ljWnpFclNMYTF4OUFlNXVFVWJ1ZTJVMUVwSktic1ZkbElubm1fRmdob2p3MTBMX2hWaGdETnpyWEdzamlWbVNBZjlnUWNXVGlCLVVvQUlpdXdpYnhjNEZTLVdYdmdUZjRkNnU2QnJ1aWFjTWM5X3lXNnZZWkpYR0VlakVqb1lDelJHZE5oSm5TNzNjak1pblNTeGl0RW5jeDNvMk9fNHRPM3FkS2VCZ0FaS1hfNFNrNTNHTjFqclNjM1FVSWdwc0c5dmxZUzA1MnlYUGxBR0JpVmFWWFFJOThlbjBpOGNaZC1KdFYtc1UyTVVuZHdHdkJ3bVZabFFHSC1rdTI1U2JTNGRla1o3b2xrX3pqMTE4dF82ODVuTWI2bDJSME1KUDdrbHhxaVFnbnNHcmY1bGg5Ujg4UXQtczlpTXBOX1FEOEZMVzBLU0hqREE2RnlVVl9OLUlMbU1pSTRnd0ZGWXFXN2l6OWNYRGF0UEtLdnVPWG1jX1hidGJ2Qk94NF9GNDNDQndmS1cybUZBMm55Ulp2ZjN1WXY2SWtmaFpTSG16ZjFWLUphUVdLdEZwekZrRkVvd0hGRHdsNUhhSUdVdm5hcjdVZ3RZdjJyRG9jQjVaMjNyT0hOVFVqZ3FQM2NDc01QWlA4ZVBVeEhWOGQ2aXdZd1MyOVdLNmdGYTFfSU5NbUZyUEJLRXRzNXhkcmZhSGpneEFDNEdwNTVXR1liaFJKRXlycVBvNVBJSlZFSFJrY0N4dVdoM0cyZklIM3JUVDdyUmRhcnZFWEJfVlhZTmpxbzF0TXFXb29scURtY3FreFlNYUVUcWFONjBCeWhROWd6RTllMGVmOVhvUTcyM3I2R3dycVQ0NF9HWmxmSUVvZG5sV0VPZFRNdmI4cm1ZVjhmS1pnQmVqTkNnUW5oLWhuMElIUTVrU3BOcUtHellwOXN3Tm9jYTBhV0NtT2xUYXRzRzB6ek0zdEg3Y2FUSW50aTRzaFB6Sk9YdUk0OWtLcG1SZjM2VDJQOWVxbjZPOGF6c196SlFTa0dOYndWQXg2WDdzSkEyOWxvbWVqTTlqZEVhSXh4VTJKaTExR3M1WVhhUVNxNDZIcEl5MXlUY3lYcjlRQndKelNMa1MzOXU2SnhmQmw0UjVMM1NPamJOeEg2RWpsZUpJRVo2NG5ZVGNvTTJaYmVNdjhNcDVwU0tJWWk4RUZMYmgwMEJVb3VaaUNKbFFKU25GUlU5MDltWjlnR2JiNGdxMnR1M01IU21Hd0JSMDBwTEtEd1RoVkFIejJiMlhDZm1ObmtFMnE2c25ra3VYajBoTThyOFFScVhsb1ZHM3g3aVhXeG83M05SS2tJcGJPbTRpRV9RZWxaVUtPcW9NbFc5R3Q4OENpNl9EaG56RFRySXZ0ME9fclEyTVFPUXlOWEZuNC0ycG05OGx4ZXBKTEdwbzIzOXN1c3RBNkYyalBxdVpGQllsVFJNMVpVNGNaRU15WlN2MHN1cW9DSkZ2eTVuWkN4NEZIS3I0VkJ5dGc2WkhKQzRlYmxIaC1BX29QZ25NbXhSRGxiNHJsZFJMVGw0bi1pVG1Mb0htaWlFU2I2emtYVVhaUjYtTjFYSV9nV0F2TjlzNkdEV00tMEV6YkZPc1pVRGRxM09tT3FaS2Z6dFlOdlFSWkY5WW9SODY3MF9rZ2RkTndGT2NacWNta0daOWQ5UUp6RDd5OUlxYmtnWEpHbXdBYi01UFRWLTY3ZDVIbkFNb19ad3VaYi1TUGx6MW5QNUZHQ0dCb1lGMEVsRG56VVRqSTVUYm4wa0JNbHdQY3Y0SVBKQk5KUEh0bTZfclZnbzV5cXJoWHVHaXlXNkQ2Z0UwcGlna2JZQURNTWV4dnFxMnJkSzJFbzZCS0FobkRhc3F6Nkp0Y2lBbGFuWHhFbVFmR1o1czV3cUtkYmZZQk9wSUtEUGxWNThUX2lMS0lfZFZNbGdIZTFFWWs3dGZLeEtyT1Ezc3F5NWR3NTlObTBhWENTV0NqZmJqd0R6ck1uc1lOTGlWR1YzMzcyVVFBSEJYeGxZYU1pTG9RcVE4eGtkZlRqakJJZm11SXpPRXBCY01rYWVXMjNIWmF4cEZoQ0dGRy1XbjJOd09wSThoV3lyU0pvSnZScVZUSmlmdnFfdU41UE80ZXNDbVY2MmVBM1ZOZ0U2YWdIeGFZYkxlSTJrNmJzT3BnMm9rX05obXVxWFhGSGJSenVFQ2xlWXprVVBuWjQyWmk0MFFDZE44UFdqUFlKb0JYV0czbFFCd2dGQ1hIZGp6eXVjQXpzSk5FYnpqd250TjdRRWE2Y0VhZHB1OVpmekJubHBRWG91UU5rVWRJYUVlRW5vX0FsVXo0WGp5WV9QS0lYelFOOUtraGYtdXRnUDJfUnVnTi11M0h0cWlrMlcyOVlUanlYTXVnMXN3VDlsRHQwOFhydnlFeXJ1WEQ0bDd4Zl9kZF9aTWRLa2FhUll6Tm5Xa2J5WjVEcDdSU1MxeUFEVDdpcWNqbXBZVkVXQW5VUlk2OHE1Z0ZMX0UzWlVwUXc3dEItSUkxV2s2Y1I3X1NCR2dPRXNSYWhNTW54YWhraTVpaGpmQ1ExVm5BU3FDbV9OMVZOU3E1LS1aWS1aSFEtalBhVVprdjZ6WWRrSDQ4YmIyclBwNWpvRmZ6NkhPRnFnb0FSeGp4VnJfWmpFaEduTzY3Uk9WalpUUHFRQXJzM3BkemU3bEdXdklqNTRPM1hRTUFXODBhTTFvVTA3cEl2cVVoYl9iRGM1SmtYVE9nR3l0LTh1ZXA5cGJ4OWlpa09fbkJtdkJaRHZ6LTJaR3VNM0tLekVDdkZJWG9ZZjFqX0tqSVRtSE9WVTd0ZnZnZlU0bHgtdGhJc1pfSl9RZ2M0Y1ZpUUNDY0RsSFZZbWIzSVQtb1dWYlN2ekVYQkwzdEtLU1FRV0pVMENwS3k5U00zS1NuT3VzeHNOVGhnUGhSNWFQQnJ6OTlLdWlXWmF5OUg4U2hjMFVuc1hWalJscEpqRm05bVFOdjZXUWV3VkNjX1pQSFotcVljT0RZMWMzTlNzNUdHcWJkbmpDSlo5M3NrX1RlV3dnVC1ENjkwWVprLWdPdHRrUUhVTUE5Z20yd2dLVGZLZExIbHVyVmoxSXBFcnpySG9tai1qZ2I1Tm9fejNMY19yekRWa3dtRllsZkVKbU5RWVl3ZUZ3S29RbExsalBYOHdCeUFtSTVWYkhmMVV0dF9VY0hDRjduUExxUTlLTkdyLWZDUjVwblViQTRlTVhUM0xpUDFHQjRtR2pVbmQ2c2tzMmpRYWlPNXByWE04dFNhNHRacV9VOUlZY0tmVFRRMC0yWkRfYXR0THQ0bXl4dHR4ajRIX1VIV1VLdllQRG5ZSUkwMFlWcXhtOGFZb2o1V05PdXR4bkV6UDV0SklBNWxBcWtab0ZiN29KY1NLdHJnUHVhenhuMU81OTN0NGtUY1NFYzFnbnp2T1dNLWVydncta282YjhmOTBNUVpMU0p6ZWNaU2EtbmFibG9NVXVPWjN6d2VDcmFqdE9SUWpObElOQkN6VUh5VWZFa2hNTTd0ZVVpTldETmJ5WjE0YUc1bVV1ZlJSekd4enByUzUzYkZTSEd0MC14NFVveEp3U0tqYXJfaGlTdDR2dWRiOS11QWxLbVRCOVktOGxIb1pkOE9CU2piNHpYVDFPWEhxcFdkaHIzX0MzVHZUUGJGYnA5M2x6WFVjeFRDbjhXampKRm5tcnIzQWZNU0o0N3ZqMnVyNUowYTJWV0NmTERFdXdnNUlIZVVERVdyWGNGdGVYelpBbG9nc19JV3ZVUS55d1BjV1F2SkVIN2kwOGlOZzFPRWJR"}'} headers: @@ -142,7 +142,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d?api-version=7.0-preview 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: @@ -174,7 +174,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/restore?api-version=7.0-preview 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: @@ -355,7 +355,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/create?api-version=7.0-preview 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: @@ -387,7 +387,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d/backup?api-version=7.0-preview response: body: {string: '{"value":"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLkZrRFJjTGUzdjB3bGNKeXVCXzJQWU5JcGRlaW1XTkxTNnQ1RTNsSnQwd3pnOWF4cjl1REdMSjRPZW9SS3p3RkxBUVdiVXVlQmpSSHZyX2lDNjVVVjJKRWRtTlEzbEtyUFFzS0Z6bnZEUEVvRHZJTnhyWTMtQUEzLWRoODAxblhWNW1IRWM4cUh3R243M1Q2RXI5YmhOc0tqUUs5RW0yZHRuXzNINm9XRmkyNUJHOWVsTjhlQ0xjUzY0UGJsRnJGTXZOOVRJMi1OTmp4VUZJcF90ZnluZlZMQUdmQk1wLTZvM3h0Sm5jbTREeDQtRmJJbWpkbjQxdHRneVBfcmlkLW5NbUVHYUwwWUppRlJfLVVKVXRoei1LWVFCaXJtWTh1dHRaNEVlU1kzR1l4QzRXUEFVUE9yc2hSc2pxaWJCNG5QaVRueGMybHJXdXhwV3FCbnAxWUlzQS5kaEpqZFFkVlNhWTVxMUpRdnFIWEdBLnJiQl9vSUJucFJhekRUNVlaQkxBSDN0SThTQTE0LUtqdnRMMHlYWU0ya1g5Q2doTGc4alA1S2otUzlBLWZhZ1REdGtvcUloUVBzeDNvSF9xOGswNkxDSHNWR1ZyenRvWkN2QlBrYkhCOGQtTVJRbE9CcEhlQk9ENUdMV29VbmRERHh2VkNCRUpQZndZcHZLalhtWloxSFNTOEpsc1RtSks5ejJmemV4dTlvZGttVE5pRHN6U01kWkR4RVFCVlVtaWNNWWxONWlFdzR2LUN0MER2eXdtRThGYlJLUmo1cEUtREU2cEIycHRWRU5SS3N4NzhkU1BuR2xDNUhnaHVkUDZhOFRxYXZvUVV6OUROaTdKOWhaZGQ0QmhwSlJhTUR6TjBfdEFXcWtfcHU0eGgtZVNVYWRPbFQzcE5kclhadXF2RnNaOW9BN2hhbkdWVjYxUXZRdEhmdTJYZUZ5MmVEaTY5Zl9IWm4yTDZpblcxa0RIb2NYVUtQSkNhV2RPQnd5R1dNQ1BESVd3SHVsWTAxemRqSlR2Ry0yYlpSaFRzbW9kbWdQQy1qOXJjbWpOcDJzSWdLaXVsb2pBb1VNUE91ekExT3Y5MEJYT3djeGd3UHUtMmdmZ3RWLTJNQ2pvZkdoR2gxeHpvbmZqb0lJdDUxcEFyOVl0TkN0SndGcW5hT0JITXZxWkVqM3ppZUZGbGtYOW5wWUdXUndUdEtfWk12VXpaWHBWbkJxNi1aWXAwMTR6aWY0MWxTTWlhMmhYRTZKOWFycFNUb3l3SGxJTkNxV1QxTUwyOFBoM2R5cDJTdF9HTEJWem5KNF9Pb3VPSGpnVlh5c0FGdDctakVQRGxQTUJQeF85cHRIdE1CU2R0THJWcnNvY2F5ZU5uOHBFekdGTDRRcVBhMVExYlVQS3RicUZLbm01M2JuSXUxT0tDRUhfTE41S3lRdWl5Qm04WThuUV9HWTRYS2x0bE5HY3M4QUtwV05yWE9IdG5OV2lRYy1tWmFTd0hYVFlJdXhlUHh0eEZXUDFhVGNsRU9QSFZxYU1zdURLa2RFSlVGakg4T1I4S2s3OU85ZGh2bkJyZF8zWE1vZXczYU4ySEpaLV9WRkRqdXI4Vy12NzBoTDFHS2I4ME1JdW95cU9RTVlsQUE2emNxVm5DekNyVHhTcVlwTlNYR0lZQlRxb1pKWXRrMGlWcE5uUGR3RjhaUUZHcUJUM2gwOVFiaHpPeGxtV2Y5SU5kWDNBdHJaV3RhV0NMYmpieEw0ZEhjc2pINk04alJIaDFlcEEyWVZ6SV85aTgyZmx0ZW54NUxTUHd0OWJ5bFlFVlpwZjllcVozNGcyMW82eUtReXNJcUt6eEZzM1ItdW9leXZ1MHZzT3R6RFBjaS13Ml9IekU1LTAtUzhWLWVsWXZoXzRCMHo1VDBiaWl6blBWYWhCdjNvWmNFLXNBNElLUF84S1VyZWozdVpTTy1fbzkxSkhhRXE4RjloTXA4cjZVelRqMjJjVUs5X0JlbTdOd3RHT2htNWd4dVlnS2o2N3dZeXE0ZkNyLUh5OFFSVTJzbjBiazVlWVZ4NGNGRVN6REtxWDFhNHJwdThMY3l1cWZ1R1NiTFgxaVZmUlhRVVB2b0pFWHdYM1hreVluN0RGN2JVcTRFd2ZlNkkzYkNNcXJQaXdjOHd1Q1o4X0k5dnppX1BqeGI4MEJ6T2JGU3JsVnZUV3VWWW9OdG1vRGtqeEltMFpvemFaY0pBalhveTBxWExCdHNVWTdnODdNdmUyZXNTTXVNUmF3UDh3cXRmRXJ6Rm0tZWFHbDV3SDBOUXVwYUtyTE1GZU9IdGo5ZFloNmZjQ1RlOHZaTnZjVUNvcFlwTWljcFE4dnh1NjZQRUJPeUxOY2Uxd2JlZkpteUR5M3hUSGR0MU1NYzdWejNDM0s5MUEtX2RhZjJnVWdOUU1OMFVhUjRLeWZvSUYtUGNsNUlOWHU0YTNNUHJXdjNwTEIxN0I1eEpVNzczS2J6Z0wtd0NZTXFNc3Q3WUpvLXhiNDEzSkhXVnBjOTVGRktUWHNCUzlxV04tTjZhaHJoZWdnSjlOaUstQnEwNm1kZ1BlRHFzRWJYbk56U2x3M1pMWVFWT1VZVmpKS0xpWFpqbHo2Mkk1N002OFp3VkRSTHRkUkRFdjEwdkZnRURVVS1rWm9fOGhWUERoUVNCMWoxMjdHMC05dnUwOFc0elcyakl2SFd4OTJRUzZja0tHMHE0VEh1TnlST3VfZXRyYWFTV2t5MEM4X05TeW9uS2w3ZW9tUWl0ZUUtcUg1eThpZ2ppRmp1Q2wtS19iQTc5YmY1S2Z4VUtOMW9FSUdMQldJVEVJU1UxalEydFRkVE92aUxtVnlyb3ZxbkZuUGZSdTZIb1NQMjltOHFVYWFRYmE0VTMwaHVoVWFNWnFLb1hoeExCdEdrQW9RX0hrckpDenppM0JVRFRYUEg4NFZUdW1sSm9SWnBGc0huSzFGVGtfdzNGVXd5REhEZ1J6RmdBNDhHY0NMLVFSRE5zcEtrM1VpY1FqNHpwYTR3V0dKZmpkLW94ZXpiU3pPaW8zU2g1YXoySExLNEM5TmZmRmRYcmZKTGpIYnpJTXVIZ3MxaWdmODh5UGJMMUNqbjF1TkdTNUZ4N09QdlNfOEZUa2U1QTlhbTFON3AxOU9KQWdxUDZFckEwOU5ULU1GUlJ3NHBCcU10Q21xQk1VRjJQMnNIQ0dNTUR5NHcySjNIbzZsSm5XUzJNMVVEU2o1dkRFRDRXbjNPdE1PR3FINkh1YjczWWduSDNqdlFMZHcwa2lJd3cxeElYeFZvM3g2bFVYTXRuZkRGNGgzR25DenZscHRQSDc4WDNucU9UNk95SkFHQjNDdmJ0TTJRb0k2MGhaaVNPaWxJQ2ItQ25CRUJmUTk2SG1YQzBsbFJZNTBSSDY4XzRXNGxic21YalZMS1c4YWJSdWhOYmRESXU3QmVUNzdjRThFdHVYVjhGX1FzY3RsV0ZfVW91bjNqLVp6M042ZVV4SXlXT1hLNDlIRDZlZ3o4bEp3VUlDc2xDYjZpTTA5YkswYmR4NVpRYTZZZWpEcGN3TUVhNnRqcjBkYWZIeDB0OGptd1lHRjNQNnRRYkczQ0djTHZuVlZ2aHdPdkpTbVZ3ZGcteHRwLW5FVGhCbzk0VEJiZVlKOFo1MUlacG1OemF1eHU3Nkh4dGRPSU5RU281R25lTHZEdU10X2ZGY0hxMXJrcFgxWWlQOW56Y2Y3Z2pJR0twdE9KUVE4U2NiRUJQLU9Gc0dwN2k5TTRWaXRfZVAyNTRHWFQtS0JoQTBraEl0RGIxbWhweWRzT0Z3Y0pZQkJwUS05enl5WHRqT2dIZmVKWlZtOFRwUXlncWxfdnYzdkxDRUNBNnJlSDMwWlVUeFBTSXVZNy1xSkJxZHdEVjdkN1hSMzlaS3gtcUdtdHBSaXpRSkFDamt5aTNIazNDcmxEZkNIMzE1R2E0bGNNU3Y1MVdZbXlHQU9heVowenl0TXlYUG1Xa2FVY215RXB1ZGFxUlNWUllJX0l2UUhaYWpTdnN3TjhKeEhjSU9XUXN1TjlBc2h0dzlfaFZxbk5aaVN6SENFZ0xUVlBFRVFzUXFlTEpvMzlTbWZ6Z0paaFNHNHFiZUlNS2FlOFlpNUR1MEU5VjlTZ1hHN2ZiNW5XQzNZXy1oa0E2WGg3ZHJGQkROX0xWMjN2ekZVc1JFQmZXd3VzYjg0Y0RydTFGOVR4ZVd1VFNWSnhtVkUwV1RkdnJHSG0tdmktWGc5bXVzQ1dHYWJCYkx6eGR4Y3Q2Q2JvYnAxLWw1VXRFUVZsSTFfTzZObVFHRFVXZkkwRndUblhELUtFTUtiZXkzVVZjNUNTTUlBbE5TZXB0RUROc1NuZzFTOXR1X1lHdVZabXpCVzNiZndEcHdOM0VpdklQXzNfOHJYMHAxN05aWk5FOVpEdXh3LXVDT3llN2RjeVktSldWMWMtY281NmZXdWZFSzVvY1Uwc3c5Vy1XcEx2T19lS3REMkpieGxJU3NmbUFhV0xGZTBCU21MLVh4MG15UGdEQVVNLVRweldlT1JFeGZ4Wkw0am9YZXBncFFsYjFLUjd4Y3MzZWJDSDBTc0RjTjU4S3hWVkJHVmFBanFEVXpnSnhoVkNLZE02QlZlM0VsVHdsZkRVR19nSGFaeHpkWERwbnZBZkF0NDZXdUtKLWhJYUhVaUpEM2hnWHlFZHpzWnBKWGR1aVRNSzBrNFdfRS1mcXNLRWptQ2JFNG9rcHVwdXppaTVuRjVmRHJQcDdvMHpLSl9hVUFCaVVNaW9GS1FfQmZ0dkdaSTJNajg2RjlsZ3dXWjFmUmNJVzNTdWRUMFdzbXRENDd3SVhOeWZWWEtaQ042ZnBlakdJTURhUDNTR1BmdkxYeWFIaTlNRDNpcWtfUnlnNml6MnpNa2ZEc3N3R2Q3bmUtbjNFeDZSMWw3MTRwWklwYUk4Q2J2Z3hiSGItc09qNGRWbHhpQnNfdnVMamZhQjdqTjBvQUN2ZzBqb0RPN2VSUGE1emJ1eW14NkNGalRZdnZpanRobEViYTVKZndxbm93UDRXSDlSQUVtb3Z6S2RMcnhTclZzeE40dXFSMlFsdEdwRmQxTEJoRHIzVkRJQl9XOGRKTnBwQVNrUUpwRnRPSk1EcGJycmFUTkFubERfTEM0SS1zdG1udlZtTVJ4N193OHN3d2Q3MkpQbU1qeUVLSFloSzc3Mk1wcUpXSjNRTGY5T2ZDMUt6UkhyUWY2anZxWmttbHRvU1F3OEl5MVlpV193eVQxbTZnVGdnd1dNd1I4SlBhSlQ5N1NOdW5FV25mVVdQU21XMHVnclh3SFdEMkxpdnllVnNTZ240RnpINzBZNjV6VTVTeHMtbnNLOXRBbkFTdldFN2pOVTA3TlZjLXd3YjVpRkw1ZVphdVkzQlAwd2NGU3RCWVdtQm5temtxNWhYcmZlenJhNzZvMWRKa3djTTVmS1pSUUhVdjE2Y3RGRmlheXJzbEdFQThwSVlvMS1wdUpweDlhb0o0ZDNIM0p6cmZNWWo4b2thWWNXZ1U1RWlFV2stSU9kYzhtTTJtWG80S21iNldlVTktdkpnQXNqZ3J2aFpaYV94MnNxa2kzMzFNc3h3M3hON1lHc0pNS3c1R2QyeHhmcDFqMlVZMWxkTG9uM2o5Nk12b1NKUWtTM3U4dDVHaXZyY0E3MHZ1X2Nla1o4dkFYZEFFNjFTR1Z0bFRZamotYjJybF9Xa2E0LXJyT1JOMzBEa09uU3h0S3lfVGduR2VibEpOcUU0cDZQblBMSTMwb0hwUy14bHRFTThzaW5zMkdYaUtNWXhhT2poenNNcGpCNUlPVEhuRm1tSDg4Nlo2d1lnYlc1M21MeHVWWVNTZlJMYWtMYjQtS2Y4c0FTbFpsSFJyMjJRLTJlNEM4OU9scDMtZXc2Uk9KWXJfYkotU01LSE4xVVZta3hiTnpqV0Fia1Q0TGVZX0dUUE1keVNfb2FaY3Rqem5JWmFpbzFkR0trWXptc2VGcHY3MnNBQ0FaZF9YZWt0ME8wVHNTalZ0X19sOWpEYU1JcWtBeXJoVnJBeWFhaUR1bWx6UjZ2cVJpbWpZU0NGd0s2aDVxWTdEdVBTN1NjdFc4WWlMZVZkNDNkRVcwQUZYb3BTUUY2RVpNRXkwWmR6c3NlOVJyVldJckpfUjNOUjhOLXBKRjVqX0tocVNyNUlNQTdvNmV4S1pTSFZYcGVJWENlQ3M0NWI1bDJXS2xCQTVZN3BPN0pIdm9rTGFabTBUdXM0VXRPZlVPSVMyNHc0bjlTeDFJd0FZbXRUa0gtWDE3ZFpKT2pGN1FfdWV5RVh1TGFiRGNhUmw5dnExc1QzYjdBOGJwVF9xejJhcW9jVDYyYUl4Vkg1Q0FCUjVOVGtFOVZYbEpTc1FZdl9lNFU3RXFFa2loN1ZYNTczYzRFSWxrNXFvRkJ6dlhHVXJSaVp0SV9iVi1BUjZYM2dyN0NOY1JQZmNfa0h3c1NhZGptd1dTVGJrQTFfY1ljTW14dDlCV0NqbktFU3FDQ0N5VFNJTGp2OHlrS2puUVFRTzZLcG85MzZuamltRVBBSFNSV2p1OFVWMHc3V084dDJHQUlrZkx4cXU3R0VuT19PaDZLbzJBdjhta1BkMVBXTkNuTFVWMWpTOVdLYVNHU2lrd1VDbEIybnV2cmp3MnNnNUpqSVhodmRkZUptdFNVejBRMXN5RE9LZktsZFZ5dUx6ZllCUElUMnJaUWxDaTUzUVp1U0UzWmV3MXktZ3ByOGoxTmo1OHJiUHpGLTlwMC1NZkR6ZmE1VTBiNk5NcE5ZU2dPM0RYcDBsdTdNaHJZM1FOWkJVMTd6V09UdGdIdHlxVERqeFMwV2hsYUJjMVlsenRqQ2daakt0U2JBR01QX2RqdXpWTGhjcXAxYWxQS09WRDItZzNQOEp1M2tJdkNtTTc0eGtxazBGaDNvRkFfYnNMdFV1MEhSMThucy11SEo4SjZzVElMM3V6UW1lN1ZBSW9YNVNDWTVHR0xpQ05Wa3RLb3BnQl9WQ19KaTVBblpiaXhLRWNmMTNTRWFhN0xVUGtyZ0xXOTJKamQ5YjM5REtYNEtNV21Ec1p5MjZYR0VuTzFGeHB1cHJWeWhObnRiSnlibUZLX0xEc0lYemx2RlR5ZE0xdlpWcEFQQjBrWHhoaGVSTzNhMFZUbV9IUDdMdGlIeEFKeEtuNFh1UW1CdERlSGdvVG45d0d1VmNpR3QwaHhfc05YWS1hOFgyLUJVb29BeXBOdjlxZmFleExJRGh0OWFRRFJqTkhmcEJQRzl4ZU1PSmpBUlNPaWhKR0xxYlFqblZRN0FRTmFVUkdUa05DeGQtWndPdVJCbkZBcHluSHVCMmotQVNPVy1kLVNpUWZPYzl6czBVdlpvUmxVS01XUWRGZEtwYXludWRFMUM1U3Q0dHhHRmV3S3psTzM0YTdwal9Vc3o1QkUyMlBENG1xcVZkVWJJbXVaYWlBblBaUlBmaHBiYnh1U2lsRXh2b25xVlU4VTRuRUo3aW9JbVhMTUJqZ0lBNW5TMms2QTZHcC1icjRCQk1DclFObFliSURtX0pyaVRNVk13Nzl2UUoyX1dKQURRdzNxMEpjVXhISjBnUEdBQzhYWGdIY2dxTFU3V3VObXloTGVPNEFHWGFTd0N6UWE2Z3FCa0hJeW05TkRJSGlZN1BUSk5uUHdOQXBPaUlpTlBfTlV2bU53U3QxWXlMcnhxZ192dkRrSFRmN1YtSEFGc2M3RC1BVkdua1Zhc01OMlhYTDhIRmtUZVFEMi1uLTRUUWVlZjgxa1hkT25FbXlGbG9lZ25qNFBBdzU0d1ZnLS1qT0lMOXZKa25QTTVmRTlsYTZYOUJkeGFCa2NqbVFrUUZzNmZQaFJ5V2hoa05YdWF3eW1lU0NITWN6VlZEVEpxbktwMmRTd2pzVlBpYWwxYUV1OHJ5a1NZdnhJUUgzc2s4c1AtT1BkMWFhWlg5SjlGUUYyeVhhYVp2bmtjRk5XQjFnSnRBYlZGVDF3M0xxQlZoUVJkUG1fcDhvZEV3RXFJM1Fmc1B0YXhZM2FhUDAtamQwUTQtX1doNXUwdTB4RmJLWDRUbjNIaXg4MWxFWFNtSENfSldDWTR0Q3NxSC1OUjFGc3pKVk9XS2pPLXkxYTZLdWYtVWdVVVlLeUpRV3RtSEFnMEZFSDhIamVFM2lDNGNRM1dOdm8wWHZHOUpwUGVRQVBFa1Rfb0ZuT25uQ2hKVzlTak1NaGN0UzREVzNBUVJnRzFHQzhHLXo5NU90YlBZbzM0aUhLVUZNMmhOZVBfVXBRYl9lSVRDZUtTRzR6UGx6Z3Vyd1lCWkpFZzZxYW5MQ3VDYkc3R1M2U0VpWmNCX0N1UUtEaU5hNmJSTktoN3NxYm95LTE4NVp4WTQxWjB1OXdjOFFnYzZjOWtyNTZ4a3RRRWo5SGlpazVSOHQ1cW9HaXgwR05VQlRrU2kyMUI5SGNhWVE3TktLS2puVXlsdWtBYk1HOFdGdDZJVXRHdXpfak51dTJmQTZOUjJLSW1jUzRWOXRoR2xlcGRVakl2c3ZLOUVNX3ZIemh1Q1lZUU5ScWQ0dG5nU1BFUzhpX295b3ZjS19UaF9EeFh1blYwaWs5UV91a1VqWDhOU3IwMWpRT1VETzdHNkZSWjVhS04yMVNrV0x3Q3hxN1I0U2pFOXpVejBEZU9kN3I0UWdGaHNqRllwUTdwcDdkTS12S1pTNlplZHBoX3lDSWpCaHhNY3N6Y1NwUXppa3UtRFRJejdSODkyVThBSFo2SjduMEFaN0x4Xy1uMk54UHNfWEg1R284TGp2TTl3QngtdFNyallxSS04RzhILXhrWmRSSW93TGstSUZNekx2NU1sU1FpemYzN0V6X1VvRnc4cWs3VnpQUUZPVkJ4bllwWlFpSzhMa1BLbHRpNllfb3pESWR5ZTdTTmJjN2UyTkNVbFdHMmpKY29teXoyU0NjTjYxblUwUjVsWE9tMWFJMjVYcmZhaHZZUVd1VGJpZ3drdWZTemxIRlFtSlJoZnV6Zy16MXJPcE93SEwzTWJDQ0tYNFRXa0FtR2MxWlpzdzllYmNzOFpad3VPVWYyTHNyYlBBZVN0MndMWkJjR3VQczFFdDZaUXZLOU1RRTZ6MU9Ua0RnR1VNUzRTWnZSWkl3ZGFMazRRTGtDUV9Ec29QbEt2NFUxbHNPWUsxTHpKNGkxS0xhd0lMODZfT3lIS0ZqRHFXVGZfMW4xUnVlV1BpZDA4S3AtWDdiRF9rNUpjZHcteVAzdmZzc3p6TVEtTm1XZUNWQVRrRUdoVU1kb2lfQTY4bnFfUHRBbklaNE9HNlpiWW5jWVRWcWpTZjNYVHA2N2FWLUZSbTJwdDkwLVNnZjNnYlBmOElfZ3hpV1JHUkpnNXhBTnJ0ZENSMlBuX0xTMHV0S1pzMVNkbm45MlVXQktWTl93SFNJZC1tVVBiNGVyalozTGJoSDEtNlBkcnd0dTQ2QnpCRW5sdEN0YkNVWEZsWkhoUExFeF9INi12VWdkRHlNWnBvblN3VGFfYU16bm1VUTlxZVVvZnR6Z3VmWlVTaWtwbnZYcHN5dXQxaWFlSXE4QzdGTjVFblNlazRfWWJ0NGp1Mmc2TEJ4MmhORUE4ckpMTjFSZFI3UnVsNkxkQUkySXUwUXBGSVNYdGt2aURTSGpfY1RHTXdIQjFBZVJrdXdlOVB2a2NUVWgxMkZ4dHdNQUEyUEdhUnRmU3hfUlFoZWxnZERMOUdPaXRqOFdhR3ZOeV84ZjVNWEdpeXV2anFfMW43Q2swVG9VUVQ1cFNDVkJvUk9UaGJOZng5bG9FR3RrSEk3dnJlQ3RGb2Zyc2JHd1l5WUFRUVQ5X2RRT0YxRC1IRzM0dFI1bThnSXNwSzVFQ1BYdXowUzNqMjFMeXA3NHR5M1BhcXhxNWpwelcxRHFqZkY4UGxxcFIxWm1nMGJodkNfSUJ5TDZtZGJKZjNVWG0zcEVQckxuVHFvTjdMa3lqSnBZVDdLemhaYi1qdVRuVVFnYm9UaXV2TGMxMEdXSGV1V2xVaUVtYzFyOTYtQnlFcGRHc1EwMHBxWUFZankxa3gxVnVmb1VxNG0tS1hVNnBTcGJEM3lWTXE3WlBubkp3amxaS0dYUlM0emZ6MFRNTEpreFJFcFlpSV9yN29kWXFtbTF3akRkSlI4alZITEltT1Q0VDNzM3YxTnBha2RSR0NPSkdhUlkyTUdnTHBFdFUwVFRpc1NKbmJSUTVTbTJld0RVYnZBek5QOXl6SldjanQxSVFFY3BJZkRjX3F5Q3BNaGFtSDlDU2FubXFFanJpdzhDSjM0bnBHWWRmOElZZ2RGZmhGNDN0a2VJYjgwUm0yNTJTbnI4TEpIaHEwTWxZbm5ia2ZwSTZMemFYaFJ1NUdUR2RSWjV5Um1PR1lod0QxMUQzRkgtOEl2dGkzZklfQkxNZTJMV3VLNU1paENwUnl5aWhETS16MFpUMWhDeTVtN3FHdF8za09SVURkcXBSaEI5RGsxbWxfemsxNDR2bWJyUHZIcGVJVmctNGItMVREdXdxWEpXU2txTTNUVWY4TXBoN1YwQ1hDV0l4azk3MVlqTXRzdmM2TFlZNVg5cm5lNzlMNFZBMGtlT29EcFotNGJBNUxtSVUwY04ySy15c3hXZFNqLV9ycWNLTXFLMWVDNG1VUmI3SmZzUDd0a05SUFMxT3RoN015ZVlRMUtaUHg1X3FxclFxY2JSb0J4N2ZucmFnV3djTHIxUURfZHJIM2VlNUdDbWZldHJ5d0JxNFV2Z2dtZmVHWm5oOElFck1kZkRmTDFLMEhpblJFQUpPSjlrdkZvaVd5X1hoRF9objdFYXVtT1ZWUzN3YjRueHFYS0c0bnRNODJ1ZmFHMUFJQlpfaHJRMjhOOHdJM1BxeHRURWRROVlZS1R0NG1kcEl5Tk9UOEpCQTVnaEN3cmtXWnBXYm5QV1J1UXlZcU5xNHhjQUFxZWdSSVVZdWxRVFRuYWo2SjFIbkM2LTUxUGN3LUFDZ3FnUWQ3dUFOZ2FTUUFZSk56WnBOa0pzbW5wbmd1TElLZXp1V0kxTUFMVllldFotOEFBeGItbnA2RkhaWVdCM2NXblNrY2lIN1Z0cmVjRzNmVndpeXdqZFh2NWNnV19DYm9HQktOclQ4bXlJTUp1Y3JkRmVKdjlYdFdXVFVZS3lPYzRNa1A2bW1TZWFpekFxMXJMYmFxSkw3TElPeVlaYlRsQlZna0MzcmFEaTVjZEhkQkxKWFBUdWpHWHY5bjNVblpfNEwtV190NUY3QVBPLVpVMzJPcUFMTUdKMlRHWV9HTmJ3U2RFeWhtVHM1WWUtVEtxS3Q3aUxScV8yZnhna0dDOHdad0dmOWlrSUpwb0Y3RldoaUZrRF9hbkhxN3h5QzFaZHRyQmJoTjc0R0xxMnhDUGlHai1DV2lJSWRBTXl0c3g4eEcxWDVUcFYtWXExMHkzWUJVMEJNbUdxb0padDdCd2QzbzN1V3JVUGlZMTFHUHRHc1RaVTBxelc2aDdFVkY3UGlSd1N5Qi1Wemw4N05NN0NNNHRvYWp5UkNhci12TE43TEw1dkRXeXByYTUxM2VqX3Y1WUlDdWhMNVNldFJ2TGxmc2pZNE44VVdkNXozdzdCa2txd1BsTW5SQThzY2JORGozbWk4dmpwN0x4M2RpNFdRYUxwZG45TTBuUXVvZktWZ0VlaEdJMWI2SWlXTHdhSUpjbTFPdEd5aVJOSWQxQ0hmR2V4NURYaExNT2dGd2pfYnNCN09LbXMwQ1YycWZORVhEeWNNRkdOOHdqbVBIY3NvaGJqMC10UG9CTmtOckpJVkpFYkdaMW56allwTnhSNWQwOGtrSlJMdGdHWHlNbzVqaTRUNXJEQndVaXhfMTYwZFhXRm1rb05uZnFfaUVjSEd2bDVKQ2F0ZHBxTUlaZ0doaDc4SlR2LTNzaU11VFFKWkZGSzFuOE53WC1QRVZZSXBIdExncy1EZUhmdnBjYU5pSXMtaWM0WnVJa1oyenhFRndFemduY3ZiYXk4WEZpN01STld3UWFHbVVIdzBOR2hCbE9DS1BjN3FBbXFYd2ZjY3NvV2pNQkNoSFRmNU5MMDF6ZUFXUWxDbWZibmVoUEZNU0t0Wk11R21uYU5SNlNkMjZQX1p5NTFCUEhMNV91dlBhaWNQd010cEVvdEtNOURCbFBkRTE4SV9GVFZPc3FrZ0JVTDJoaHdQNFo0QWtJRU1RVTVZaUQwdFZwUDhyaGYwNnhEaG9YcmVnM1NHTHlYS2xxTmQ5aElGVEJsYmdKMUVJVjhVSnctU1A2b29RUmlSZGRDTU9jaGo3cl8wYlByQ3FyTXdaQ3g5V1RLWFlEeXhDcnNIODRlTHBtMFJlQ3MtSkc0amwwaWctQThEMmk0Skk2OTYwS2s2ZUJwcllDbkVPSWV5aWdrMXM3WE83WGZFT0JFSzc3ci1uVFVlT2ROaWFxVlZDMFpUMTlQeXhKbURmS21VNWY2dW81ZjAzM1B4dFBrREFITUZtZW5TcXM1MjRPSmJHNmpYeERJb0xLWERKWW5iVWNuSVkwcFh4VHd5eFF0SGZWc284X0dYMmhyNzFtandHdXlIQjZEYkhOVkN4Ujg3TTdQN1JvcmtXczRXMG9UeGNpRkVhcmkyWjlfNkV1bzFrWTYzNDB2X2FlTVZLVzk5aWVQUW1JOXpSclhxLXZPZHlJcE41V19LZGZQbzZyX1lFNTJuTV9DVi1pR1NVQlFsZ21idUI3VWV5UVJPbDcxRVlFaE1yUlladVFzaU13eXl6aXFRRUh5NExXbWt1dm1oNFpCWGRzT2sta2tzb0dxa1BZVjlTN0VRZ2ZBeEhvZlUzd0ozV19mN1puN3I2OG9iTFVKbl9XNC1WYVIydHFablJ5OVlZMXJNd3MtOTI0Ml85S1NncWhabGUyWlNRRlg5MGp1QTBPMW1MRGhpRXVHRXl2THRWZ1BUNWpHQ05NcmhGdmMtN3N0cllvMEFPbWRUWW11RVdyR24xeFJXeVZLcE5Jdms4ZGd2SjhMUTJ0cEx5NEJyVHlaZWNPSmNiUFl2S0xKdTQyd2ZULS1RMFRadHRtSGRzd25UR3BXOHRWd0xfdW9jNUhjeFViTnpBMzIwc25JTzEtenR2QWZlWk5kVzJFeWFIMVFLbDdXLS1odHNXcUJFM2RwYUU5WnFUYy1OM25rN1JGOHkta1hzTXA2Yk1wU0JvVzVXd0dJa0NGaWtkMWQtZ3lfNmdXWkJ4ZHlEbGlzSi1RZnJiOTEySUxEZ3gxcDJ0clRmNjYwTUhfZl9rNEZGM2FVdjBYYlJiT2ZIREtCR21YLWhWeW1abmZUR1AwbWl2S1F3bEwyOVlTcEpMUW9TSFE4WHFiTUtnbkh1QnNRaTB0clNPYV91RG43TzZ0djZ0RFZ0OUV2R2JiOTB0WkhwMGxWSmlfREhOWlRwTjF2THVMVlpLTTVlcXRnaHdRSjI5MktwU3hZZnd3clJBd1NuUHdaRHBZdHctMDRjWUV5bnlWMzRvSGlTelhDdXdhQUREYkh0UXJRNDZtWnZ5eFF2TTFtUm1iQ0lCMWNfODdIaXdtaWZoTGVqRW5ZZndIMVM2SXlEd2QteFl6U3ppcTVMZHVlaEhDbkZLQ1JPYWdsWjdaN2JocEliZUI5T2tBUE5LYTVkdUJBTFBpamZzaE9wMi1mQ3BWNnc4eEEwa3JZS3Q5SnhwQzZtYm9iX1QwaFAtc2lFMC1na3lxeTFEZXVaUTRRMzB6RlA5S2s4MEhVbEQySHoxTFl1UEQxZHdCOV9BdnZUTmsxNmFlT1lSQWJUaWJJRzBic0xxUG01Z3VMTWU1RExDTVIyMVJBYjZNUmFpRFY4M0llUTZEMzhpR05sWVQxY1Yxal95cWRUaWJ4ZUIyUmJqUktpTGY5UXpuU2Y0WTJWcG5DWWQzenVyRWIzTnFVRU1kYTJYbFZYaWtIek9LeFpHSC13VVVyOENCSzNWN1NtYkVMWlVjS1hHMHZlMFpkWGhkUGpvaGhzU3ZMYmRWNEIzWmlSVnRkSml3bHkwQWFoME82eTRUNzloQ0ZpajhqdEJOR2doSWppTDVjZ042MlNnREdvc1J1VU9aR0JqbHJhYWNTTktBemFGWHJjdUlsSndNZkdzRkdHd1dfUmNvc0s2MHNMSlNmdzdPVUxWaUtGYVZUNWNheUpqdkVtMklsWDRCbDI0cUVDeFZiTlBRdW5hR1VwSGdwYzNoYVVxM0lPcnJBazBPbnZRSERUaG9nc2d2Tk40bVhtM01zWnRBS1NkcGJPXzRST0xFMHNodEp0dlgtZEJOM0p6REdqd1BvUGQ0eE5mODRiRkNXVC1fb0ZrR2tWdE1Wa0loNUdhYjcxTUpjNUlscGhaaGx1QnRxRVpJMnVod0Z5WjQycFBYNU1sVF8zTXFnb2xNTnRBQnc4WThNMFlRRmIxOU1NUTVlRmFmOS0zMmhQUmZQbVZXWHE4WEhRV0FsNGtJeEswREd1QnBmMUpBMWo0dmRTOVRzWjBRS0t2Wi15VnJoQ1BoYXNvWXZ3M1NSQ1FfazBhc3FtcXE5RnpGSGNxeGFEY3NWTl9fZndsQnN2cERvN2pkSElOWDdWWnNPNmxGT1VaaGJ3X0w2X0x6Nno3NF9aUG1tTEQ0bnIwcXAyWDFyZy1UWkZnYkstNEx5NGpoVzFjQkhvbU45OHpHdWRwWkFrM3VERGFjTFFEUFFhUzFWUWxsR2ktc013eFlONGRxM21BeDdid1g3QUItRkZJWGJDSnp6bkZtRXI2b1AwQ1M2aUltQkZESzVGbEZ5UDBSY2VlNDJLb0VQZE4zeTBVdlVSaE1wNXpabVpKUFV4VXFGSFJHS2x1bk50QU5NekE1UGJ5T0tSSVpCdlhVaHBJQWdMMmZCMVdHSzdWd2w1Z21IY202LUtNMTAxQ0VaVFg3UXlkcFVZTDVuYWd2Mk5ZSjZNaXl2cFQ5UXd0NDYyN0JmRDh6SGRSdWtLYzhSLVR5ZzItVEN2UUxiRDBsUXo0SFI5STAyS1o5a1c5eU0wNlpMTlVEQkc4Mjkxa0YtQk0zclhTZ0FId2NGM2pOWmRicFVPZVRSamN3ejdQN25iRWRJUEJJdUMwZkVFRHpjam9rcWFhTHdRS0FiUDNlUzE4UGR2b0pwdFJta0ZTOHBmaVU1cnhJUmdOeEsweDJTYkhqeFJIdHE3cFFQNmwtTnV6bzRkcjZna1FzLUZmTDUzeThJcTlZM2NJYmx0WlNDeFk4bHphdFdJSU55VFBpOWRxWmg2SC1VcXVNekZzTGtmRWxDS0E2dEl2VkpnUlNnOEdCd2RMa1o3YlZad1JFQUVQRWNQRDJjalpCWjJYV3RtWTd3Rk5SODFoUlFzSnFtb3JsUkdjdnNkbGxqdXNzcnRRc3JTdUdlQXRxSGc5dzRpY1djSVdLRHRNY1NYY2hvLUNoejZJM2tpVm14dmt0TXFOU3JGZXhSUjhXSHpGdC1mSUtMQ25yckZCSHZmbVoxVjFMNFVuZ3ZUdXd5RHk1dDAwSVRGU0FyQ2xVR21oS2tWaUlzZGs5UWhSX1NhNDNhZmlOdG5rblIyaUIyNWlxel9WMWl5VjBoUzUzRnZ3R2dKZm5nc2ktV3gzS1AzQzFsM3doYUxBXzJxOE10TGJTUjU0czRmN01jWGxUdUxvUnh2ajdqMEZGWkp2Ni05S0JjSTR4a1lJRUw2eU5SNDFxLTdKTE5uUUJNUjBBSHZuWVpyNk1CREQ3Zkw3Z3VpQlRJQ1M2TGVGTzVUaUh3amUtbzhTSjhERGJNTWlYWmhERm02NWp2QlIxUmU3QktxdnRfMGJBNXExa1Q2a1Zxcm5NSVNCNXlscTlNcEpZVzM4SExRbE1xMW5aZHB2NTF5a09INzJoUk11R0FOM2VDTk9fbDF3Y0JTd3FQRzU2SUhkZWIwb0FzZkc1T0RuRllVUl9NeVVBZ2E1RW96QVZjY1lMZkFQa2pVekx1c1dfQVhYSE5ZY2l2cGJrRVFEVDVqUDh6OFhtSXFSSGZWMW5NMzVGZ0dRMUdRRWZYNkJ3TmVPdHpuUjNWVHdzeHQwWVhtdnJYMm9EUXBGMFhfUk1BdW9lc0pSVTdDVGZLYzlDNXgzOVdXckFhSnhEMkNWVnRfQWxkeWNfUXhWYXdFQmJ6dllZUkFRVVhlTE5KdGNpcmJvZlFnZmx0ZGhyZjl4cnRzcUVxdzFfVkQtbXlObVhYQ0RuUXdPTHlnUktKekVXU2ZSQ3hGNjBCZ0ZNR3lQdmlHeXdxNGRJdXNTaHctWENlUGRzR2tuYTVMZ05yRTVETU5zc1pmWkxsWTRwcHd2MnBGeFF3eV95NWd6RnhGQm1QbGtxekNLRFdMaHdPemlaYzNYZk5DZFJiUFpudVhKRWtzY2ctQlNQdFR6VDRzNXRUcmFHRE9xMlFiZFhHMTR6UGhlSjhuUFlqcnMyXzlReXZWZFhvcXd3OXFvdkRLWXNlMVA4cHJHb0hhal93ejlLaWZpaTVSU1lVRGhHWXRhd0tJOUNWWkFTTWtPM0NhR2dSdXE2d0FLZU9aOWcwUGpUaVBlR19Uc3lSSEtjVXFnVk1xOU1PLU9CTmw0U3lfZm43OFdJTEttdWtuLUZYdm9vT21wTVlPY2FNdmM1Znd5RXhITTJ2dWdnTkNycUNqQS13bTdrYXROREo0T1NNQUtfV3BCaFNhT1R1MHVhR3FvTHdNbnpQa3pITHJKNDl5d0ZQYWRrNkdaYzVWREdXZlN1VmRzWkNOdURCZWhOSE1CRlJzYzZWZEtHbzdCUmhrRTBRbmFYMkxBNnF4WDJWWTlJdnFrRElkZ2xndnBnVkRkRll3YTE5cEI0NHpJZFo2TnRCa3ZWaDU5WE4teGppRzR0Y3MwalFSV0ptS3plWTJCNG5fRUc3anRlczBrakVlcFJULTNZd2hUWUtEVEw4QWs0c3pDeEpmX3BUblZSbUlHUUFZVE40amlUWlVsNlpRRHdPSHdudHBsYTJpMUlFQVUtQjhuVGlPNjRTX2FHcEpCUm96UERWM0NlcThDZjhCNlJKdE1xaHVhNFFjcm84cDJ4LUxUSnJVTkFnVlFjbGN2aHNQQXVTcXNEdWM2VEphc1N4OU9QUlQ2M0x0UVRGTWNIX1dhaHloVmJxTG5oTjJRNTAyQ1VvYXlacXlzaDJVSFBDWFdiMFkyOFJibUI1OW9uZi1fb1BOZExXOEh1YnM2UnlmOXMxMGhFZ18tNl9WVVd5Nkc0SnVITzdpaEdiRktqNlNvZ0RsOWVYc2k3QlJaVy1paWszcnRrRUhBZDNpN3BXNWNoZWd3RFVvMkQ3QjlFZzVSMXU1YnhEMVhvajBFaWtHVU5iWTZXbG9MYXpYLTRTbEdhQ3UyMmc1S0JOYnlxM0ppWkpSaFE0RTNqb0R5Y3RDUnhlaWJ6Sk0zTzM0ZHZLb2JRRzJKMTVtRmJna19oM3V2UDhYdWRIYzRmLW83Z3pBaXd4elptR1ZxOXo1bWdMcVRnRGxSc0JidGdfTm93ZXNWdXpWd2U2WnlCWUwxOHdzbG5fb1U3WmVlWWdLU3FTNjB1ZGpheFpBWmFPc293c3RWeEtXUS1PZGl6RXhtQzFmMlMxclpnUnFleUEycmF1eThjc3JRU2ZmS2kwV2RBMHJuYTVSVG51bEVJdWl3d2JUdkNiaW9zQ1hRREN3UUMyS2xhVmxTdW4xQzNINnJkaTZ3N2FuNDRmY2hKeEluUG44aEN3TlYwZWJMS2dybFlpYkxrVHFqU2pFa3Zid2x6NVhfRHRQVmFUSGZJSXFyQnJONVhhZk5ubGw4cmFwd0ZCbHY1bkkyM2NKM1NLRGs3MWFEMWhrVEE2WVJqSll1dVY2RW5GNGw2dlVyVlVlTW1fMkMteW1qNEJQNTJScHd3MkQ2bmlPYjlXcE50SEVnUi1fRUh3ZlVVcGlObUtJLVFhNnJpTXRWQWJHejZQUFhTOVJ4Q2UtSmE4Yk1nZHdIMEFUN19zalRsZFlKeWdtQVdLUk9wOGFMRTFyMEI2bDRONnlBc1M5dVFCc252QXlNQTNTUWctY3pLemkxblRTdWZiOXlXOHFWOUFHX0J6TFJtcU9qaU5ZT2JYS2VtNmxSc0tLY2V2VDdyUzNrUkJoQ3ZWYXdxVlZQakJZLUdFTlc4bi1pdnE3UGFMSXNUblZobEExY1VheXozbEhKOGh2T2ZYalp6T2NVNmZoSXIwNXN0WTIzbGlGX3EzRFZBc2E3Y0xPNmVyMVdkUUZFVWZSSVpydnNXbXZKam5ydzAya3F4Y0lHUmZFREZYa3hwNDZDMlBqMmJvLThhQ3p4aEdTU1A5bHpDVmd0ZDNmRTJfYVJNYTVxZ0N0SXRDeDNBWkJMX01yazZXMTlmQ3k1YzNsekNRNl83SW80R1NHTkRvWTR5cUkxVTRBM01OYUlPVUQ1aXNFQ21henIwSTRTbzVGSG5DNHZLZ0hsZDlDVW1RT3UxeUVaLVJ3Q1psNGhHOFpoUzM5cnRlMzM0eWRGd1o0Qk5xWmNTSFpTQjIwTVVLX2kyX0xKMHY2b2FrMnI1WmlPazNPRkxYXy12VHYyY2FaeFF4a1lUdjQwbjd0dTZobzVJMXRsS2Y5d1VEQmdKOUlSYTlfT2tVN2I4RkoyVDgzbk54X1ZKcGhnWjhhdTd5aWFtaUtrZ19wRjNucEI2TnVPZXB5NHJ5UVJ4NU84cldhSTVuTmZPLUk1cktyNW9PMVJBVGhBUURBSWVzWVlaemxNQ3JoQWo2TTZfc3lmamRWdDB4MXhNODhMRkszRWhlN0RmeHNYc0ZKVEZKTUw5YUdwa0pLTlJZSlpqNmM0VHVSMFFtZTlCQ25Ea0d0U0ZlMkdOMTIwVlg1Z05JMG9uQWlXLU1OZVJCZnpfNGpBeWpXam13eVZ2WXNHTE1TdmxmY1FrVkdKZl9mWFRXZXdYYkVHVFc4VDZOdFd4THZsYTlkaU5YbGlSZXgwVUFFc3lkT05pZm0wcmpiRWVsWTBuZWFHcEU2N0M5TVpZYVFzY1lsZmxPNkVZTGRoZTBvMTQ0QVRNZG05M3pJM2tPcmhSWEExVDZjNVhHb2IyN0FOMllTV1RDVG1DSTI0NGVjT0drQUpMRlJJdlBIWlhWeng1YjV5SlVKby1XdmItanhpZVhOOXljZ3hnZFVscjh2a01GTGR5XzlubVBYY0tmZTA1c2RKaWs2X2VxVFhPVkJaRmk5WHM3ZlhsLTVVVWdTTzBHQ1VxZzgtMHZBbFQ5ZG15dmQ5LTllRGM5NzRRV29RU1Zna3FEX1hSVE54X0VVUzVFTUFXc3dOc2FRdHVNd0JCVTJJelZGajBNQ2k3UVpGcF9lT2d2LUE0RlNHcG9vOUZ4RkJ4X2V2NnFEYTlJeVdLdnhiR0Y4dE5sNjVXVXNqWkp6Qks3VEd0NzBpemU4Z3pzakN4Rm44UmE0cXZPZDJJUmQtY05NX2xsT3o3LWI4cU1KZ0ZOZlJSdURqUjRPZHJjMjVoZExTd0dUTDJ1S2c4bmN5OHA3UzBWdjV0Z3ViNVRfWlZUYktyS01wVU16QkZUV3MxY1NlZ1NQdXlIMEZsUUxEZGJtSnlkb2RtcktrSVpEdHNaM0VWZFN4c3c5RWVwZkJkNFFtdmVLTGh5MXMwdm8xem1HRXNVNnpqdjMwR3BVam5jVGZVY1B3VFlScDl0aHZMNUppM19YeXBtY2I0WURKeThlQ19GRUI2bHJqemN0dzVpTnFWUHlzdWJUb0ZSSmNuM2ttY0NTbnU1UF9GSkxmX2V2c3FqcEFLYjVmTkJ3OFo1X0oxVnJEcnVneDRJbWphZ1hDaVB4Y2lxSDFjdTN5SnMwbUh0dzl4dFVtbGE2YW91Nnc5MVlRLS1Uem5SX0VEQTkxY2FYOXU3X3NWNTVieEJpczdlYVVXNml6bGVxanU2OW5hZjRVbUVtdURuRHlZT3JWaDRsMDVMWGdDODJDaDFMVllQUXM1UXZpUWNKaFBHMFVnY0I0U3hNRDZGcXplX3pJczlNd0p5bEVyMG1RSEozVHVrYjV6b1o3aVFoNFQzZkx6U0N2VXk2N1YyM29JWmpLc0dzcmN4UHNmc1hnQzljUTRXY183ZGNVUU9qLUpsSDdXRFlmbUdYNmIyM0pYbGF0aldHVWhpZTU0Vk5QU3Z4N3ZQQ0Y4d3g2OHNOWl9xSkUzZXBVSV9FQWNSZmg5VV9EZVlhaC1wekY3MlhOX2xiS0p3S0VFRVIwcWtrNWVKUWJ6aVFSUGlNOHZ0cVBKMDRyNlVIWkNvanZTLWU5ckFBckZjMEJhSWJHbXlfV19Sb2hfUWV0dUJRTWliQWxOQTBCZkxIUGtwcmRIVDlEVDJOUS1XWmNzS2JCR1dRUFYtblhHUkRHSnFlSXdfSjNYd0N4MzZKY3ZkTnBRbzdRM0tzd01OOVFENUgxbkVobEt3d2JUVVJQUklzYUh1X2hhN1dya3Q1cS1SaTdYR21OYzJNMk4td2JqUExOd0I1NjVnWUhEaG9Lc2pQWno4TkRYbl9Sb1ZnOEp2V1RHYWNLTGtKeUtKNW1BUHJzRXFaNE51clJwdHRRNC1BelFlRWIyZGlyRzMtYUQteWNjcmdjR1g5dXh3YmU2cWltU05lWG9Ld2hvRGlJY1d0MDJaSWtNQjJzY2l2Smt5MXUtODI1SWVBZUNSRWlnTWVSMlA4cnNkN0N0VDJiREJGc2Q2bnozaVZaRGdDMWNtQlEtQUlSc2pvaEFxeFBfWFpKb3cwZ1d3Mmc3bE5NNkc3T1hHMzVwVWs0MFFoMFplVVU5dm0tYnZFQ3BhZ25EUkRyMmpXV210czZCUTBIYTVudHB6LVUzXzA5MjViQjdZQ0RzbDh4VTlTYnlrWWRyZjQ5VWlnT1R0OFktSV96Vjd6Wll4X1FMdW1BWUJkbm1nZDJ5Vm5lZUNHeW5SbnhCRjNSZlZweUE3TGhtTlgxdEVRek5BOVhSMmstWk85bGltcFJBbVd0Q3FTeFFPVDJLaWNZUEFNbWJhUHJiSDFnNWFLc1lvNVI3eE54NDBfdVdXUHo1M2NfT0JpLWs5aFZiUzItQVMzNTZrNW1uZFl5QU5XODJCY1JtcFI0ekRPeXhaSFdERFc2eVJTMXIxUTJiT1Y3QVRQZGtTWHBSNzNYekk3TTJiT0YzaXh4Sm9nWTdYSUwyaUN3aFlQTkpvMjJvQ0NZVF9Xc1E5N1c0NHNSMzd1MHVHQ0JWaThkS3kxeW1uaFdUTGxDQlUxaDdlZU1ybDZPRTFBU2gyR05qSGZRNUNMNjQ4SFQ5RFNFemFla0VuVHlDWHJTck1KSEFscEhFYkdYTFpMVThJZ200a2JhU1FLZFJiQzFsclVPQm9BaTBRNzZPME8weGh6RWhwcm1GdVNLVlQwb3A5d3gyem9EbVZJTFdSVkducEdjVlMtbnc5Qk9rVDQ3X21wODNEX09tVGRLRmdpT2NOZUdoMHhfb09oazVUZFdqNXdjajVablExTEpkMW0xVF8tZ1lOVFdKVm5CLTVsbGlZZEU3YTdiRk5hT2VGN0czdU9EQTZZS0ItNFFCdkhiZTZmT3VIOFcySm8tUnNDX2tjSDMwSXN5S3hlSlJpak84TTAwd0hpNHN2emRIM3kzc1liV0habVhhcHhBZWhBLXlrWjUxenkwRHNqTUtMRjZFSmxBQVZzMy05ZVcyNnlWWF9WangwYWJ5aUhDVGlHQjlLYVpvSF9WU2Y5NXZYcFRBT2lTMm45RnFUUEktdGVXNGs5Z0dRQlB0M2dGeG02bnhrTlJOM2VISjFLUFM4XzYtNnNwalI3bTFWbjFkNnlBaDV6bFNpMWhjN0RqM0xwWTJjbDBpTGEyZXhDX3BXNWhBcDRQc3V0YVhsenFXUWVWcGU5QV94WE03T2MxZTN0alk5ZG1iSHdjMERhcHJlQ3VJcGp1ZEpDQnVmTFoybmpQczBLUEVuNDQ3V2RPNEZaQ055aUhhVlpmaXh1OU5hbUFBUWlnMU1feDBLR2FtNzViQU0yUG14UmJPdHpMbFc2NVVaLWlwcWREWVhERHdHRzBJNzlRUi1QMlhobFNXWm1EVkNSSHdnYmR6YUhGVldrSkdBU0pwem10UXBwS3lzUlpLX2ppWEVNRWJtbjRORzRJVGNlREhmT2dyQTBqSnc5N1p5N0FNVko1ajg5S1g4dlBlZ2ZUdUJQZU83eWctZ3JheEE3cUVaWVJNcjRIamtQN2dHeHRFcmJ3NzdaWVd0VjlGLWpEWEVvV1F5dHVOcUZhVjRWR29neHdnNkZpSmhFMW1vaGthdjV4bjlHS2VRcVViSVVKWUVyOFhHT0xWTHg2M2xlWVZEZS0zb0gwa0ZUdGJSTWdJQ2p0bUdaN0Y2UnlzTm1PNVp4aU42eVlFMmNQNS1ScU4wVTM0azRZRDJ4aTF6LXdwUWZYTEt4ck9aTDYwS1ZycTItaW5pd0ZXV205b3p6YzNwcW9xZTZQX2FFV1F6aVZIejl4YXRCUVNkaV9mZTRZVHd2cWVTX1o3VzI3S2I0TGQwQUpadXd3VXZSMXZwUEE4aUZzdmxVY1RIb1FfUjRfSHVKRTB2MnZaa0VLRXlvaGRIV25rbXdMMmRLMVVQS2c1RUFMNWZMVTh4eG51dHEyS2VOd1NzQWVrNnZwRlR3eWFfcTYwWGk5d2ViT2lEdWlUc1FSOTY1LThoOXF4QkVsODdrOEhJMzBsMFJqTjNDN3VSSzlqcmVnbTh1R1o0WW5UcUtPSWlRSElkdkVXN2xjU2JvN0xOaWhNcmh6OVhQTTVkWUh1ZUNkSll4MGxqQmxyOUQxWUxTLXZvYlNIYlNaU1VjTXZ1ZEpkWDZBME94cEJ3QnpHclJ0VDFUNDZ6QVVucEFKYzVvUUVfb0FmMk92ZkVYV0FoSHNvTS12bFBhbFV2Z0xsYzRQdWdDTWExUGg5alhDWWUxdXVuenczMy1kYXo3dXJsVnhsRlRXWXphR2RXYUtMcGpCWmo4ZkozNHZXTmJwRXNfUVkweWNFY2stOTNmX1N4Mm9KcGpsdnJpYTZxUlJmZXlYT3F5TWhETG5FalBFbk1oNEpmMUZkem10N1JBalBNb05Ud1U3LVNUSmtRRFRhYW9DZkNQM19aTFM0dTlLa0pBSThVRzdQWTlMaTl4a3BUS1NDNnJXRUtWSGtZcnpfNEQxU3lqcU43cFJ4dGk5MHpDaVVCeEduMlR2MURDMDUyTmhnRkd0bVpLM2M5Xy1TTXlKVERnSlJQNTR2Y0Rka1FKbkdQZy1LRjJDUFdsQ19kNXEtYnZrZHh4NVZNV3RYVGNEaUFDSHA1ZFlZLTFsd0ViLURZTWtiQU01MDZxLUpuZDh1T0xRbUY1dUlFaFJpY0V5SDFBTmFEMW1CNVlLZlJhNjg2cEVQa3hXR2t0WkxEODZaSzRCTmZpTWlIQUdnclgzdnd5S1FzV1pmS2I3SFBiWHBtYkZHYjBYTjlLT3NVNmdzQ3d2V1JxeWxFMk1GdWhwVHExQkJjNkVvdk5pTUVXY0VhLXc0WURCRXB1cUFBamYzRWpJU2tFYndUelVQLWZmT3Zrb25yOFRzWEZldk5VM041SDBMOU8tMTJWRS1YdFczb3d3U295aHhyQThCd1RSTDh6OUZVQXFhd3Z0YVU2OWJKcDFkSmItQVhaZkNtcXlaOXAwY3NrOW9kQXB4WEI0U3RFcEV4OUNxMGdxSkhGM1dXdkFsYUVOQVpiVlJrR2hVVUhPQ1NSc25EN3llcV80Wkw2LV9tMVV0c2luSUFFbzhzQW5mdUhQbGkwWUF5UVVXS0RUZ1p1TzhZaFFkMkQtTjFudTBuNU9uSXN3eWJVTThLTjZZRDdBd0dsaHdkT05aeXdHanZsb2dsREsydTNxU0VPLXQtektLOEt6U292RHpnZlhSZUx5R2RuUkNQanNrSk9JOTN4bDFTNGhEb0dldUxYM0s4MTJQTVRNMnJycFh6aGN5TFE5ZmdRRVJndUY3WHNfRjNjTFpyWDZzTUdlTVBJSm95anNHUjZKMU16dTNRdkU4ZnRWOWpSb0hNTnRPZTRENjJCekxlZ2s0UDliWE04akd4UXV2OXNHRjM2OUZ0Sk42YXFYX3pRVVpNVGpxYXYycEVPQ3Nhc3BoTUpROE81cmxRaDRtWmFkUmV1R2JhWWpDaXAyQndtV21SR0o0QVNaalJXbmlJWERuQjNKOVhuOGszMVVLT2tqQXNQeXBDWVhZUjI2ak0wR1VLMjFESmR5bWh3WFBFV3RaWHFaMl9qQWpONW9JY3kxSWZtMVFhMDJCVDBoUGxWTFU2eGJvQWV5dk5QTU54NjZnWXlwOFNFQjJUcmNZV1d4cVRRM3dOR2NDZlE4TTMtV1BiV0NvSHBUTWNGVl83dkVvRm9ILUpqRWVXWms5TFQwd2Z2ZnY5S3kyS2xzeE9rZTQ5QWxkLTQtWE9TTnNzZmJKZW12UmVWbTNEbFZydDYtUFQ5VC1WN21xQUNsVGVMX19QQkplQ0N2NVJ5bG9QOXNMeFIyRl9WTVZyc2N6bEVFVjl1MHVyMTNIR01TRDFrUThtUmE0dTMwQmdfUGEwd2EtU2dyaVZRVjJNLldldVJXdUY3bGRRYzVZU3dTZ29HZHc"}'} headers: @@ -419,7 +419,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keybakcfb2134d?api-version=7.0-preview 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: @@ -451,7 +451,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/restore?api-version=7.0-preview 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: 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 index ade1cae5f4f4..6ee680e69f18 100644 --- 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 @@ -105,7 +105,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/create?api-version=7.0-preview 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: @@ -136,7 +136,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/?api-version=7.0-preview 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: @@ -167,7 +167,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/9acd57c81f8f4874a82cb41c2c45bd0c?api-version=7.0-preview 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: @@ -200,7 +200,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/?api-version=7.0-preview 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"}}'} @@ -234,7 +234,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/9acd57c81f8f4874a82cb41c2c45bd0c?api-version=7.0-preview 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"}}'} @@ -267,7 +267,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233?api-version=7.0-preview 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"}}'} @@ -299,7 +299,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key98b91233/?api-version=7.0-preview response: body: {string: '{"error":{"code":"KeyNotFound","message":"Key not found: key98b91233"}}'} headers: 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 index cef8fc69d2cf..a0e465881f09 100644 --- 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 @@ -51,7 +51,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3?api-version=7.0-preview 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: @@ -84,7 +84,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/encrypt?api-version=7.0-preview 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: @@ -117,7 +117,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/decrypt?api-version=7.0-preview response: body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/0f0acb3587a14de6976c739e5e2cc989","value":"NTViMTkzMjZkNTNmZTI3YTA2MGZkMjY5ZGE3NzdmOTMzYmM0ZDJhZjJkYWJhZWVmODQ1ZTg4ODUyZWE2OGNmZjlhOTVhY2MxOTY1ZWRhZTA5N2ZlZGFhMTdkYjgzZmJkNTEyZDk5YmM4YjUyYjRhZDZiOTczOGYwODQ5OWZlZjVmZDE2NDE1Nzg4MGUwNDQ5MzFmNWFlZTNmNzhiNjFhYTM1YmNkMjg4ZWM1NzhkNGViMzUzZDcxNGE1YTVjZTVmYzEzZjRkMzI"}'} headers: @@ -150,7 +150,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/0f0acb3587a14de6976c739e5e2cc989/encrypt?api-version=7.0-preview 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: @@ -183,7 +183,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/0f0acb3587a14de6976c739e5e2cc989/decrypt?api-version=7.0-preview response: body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keycrypte52c13d3/0f0acb3587a14de6976c739e5e2cc989","value":"NTViMTkzMjZkNTNmZTI3YTA2MGZkMjY5ZGE3NzdmOTMzYmM0ZDJhZjJkYWJhZWVmODQ1ZTg4ODUyZWE2OGNmZjlhOTVhY2MxOTY1ZWRhZTA5N2ZlZGFhMTdkYjgzZmJkNTEyZDk5YmM4YjUyYjRhZDZiOTczOGYwODQ5OWZlZjVmZDE2NDE1Nzg4MGUwNDQ5MzFmNWFlZTNmNzhiNjFhYTM1YmNkMjg4ZWM1NzhkNGViMzUzZDcxNGE1YTVjZTVmYzEzZjRkMzI"}'} headers: 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 index bd03dbecd835..d80c5e1e2fd1 100644 --- 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 @@ -51,7 +51,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keyimp4ae0e7d?api-version=7.0-preview 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: @@ -91,7 +91,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keyimp4ae0e7d?api-version=7.0-preview 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: 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 index 3d9252f68787..6b814b5c3522 100644 --- 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 @@ -43,7 +43,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key0-e8240d9e/create?api-version=7.0-preview 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: @@ -75,7 +75,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key1-e8240d9e/create?api-version=7.0-preview 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: @@ -106,9 +106,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys?maxresults=2&api-version=7.0-preview 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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4MCFNREF3TURFMklXdGxlUzlEUlZKVU16WkVOVEUxTmtRaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['731'] @@ -137,9 +137,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=7.0-preview&$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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lXdGxlUzlMUlZrd0xVVTRNalF3UkRsRklUQXdNREF5T0NFeU1ERTNMVEEyTFRBMlZERTJPakkxT2pFNUxqZ3pNRFV6TWpCYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['739'] @@ -168,9 +168,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=7.0-preview&$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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4MCFNREF3TURFMUlXdGxlUzlMUlZrM05VSTJNVEUzTmlFd01EQXdNamdoTWpBeE55MHdOaTB3TlZReU16b3hPVG95T0M0Mk56UXhNVGMwV2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['633'] @@ -199,9 +199,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=7.0-preview&$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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlMUlZsRFVsbFFWRVUxTWtNeE0wUXpJVEF3TURBeU9DRXlNREUzTFRBMkxUQTFWREl6T2pNeU9qQXlMamMxTmpZek9EaGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['642'] @@ -230,9 +230,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=7.0-preview&$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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNUlXdGxlUzlMUlZsVFNVZE9PVGRHUkRFeU1Ua2hNREF3TURJNElUSXdNVGN0TURZdE1EVlVNak02TXpJNk1qY3VOREkyTURZeU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['641'] @@ -261,9 +261,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=7.0-preview&$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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlRVDB4SlExbERSVkpVU1VaSlEwRlVSU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['647'] @@ -292,7 +292,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys?api-version=7.0-preview&$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: 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 index e0d5c75bf73c..f06584ebc232 100644 --- 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 @@ -43,7 +43,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key75b61176/create?api-version=7.0-preview 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: @@ -75,7 +75,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key75b61176/create?api-version=7.0-preview 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: @@ -106,7 +106,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/key75b61176/versions?api-version=7.0-preview 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: 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 index 833cda495dd5..d43263fa28e5 100644 --- 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 @@ -59,7 +59,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec/create?api-version=7.0-preview 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: @@ -91,7 +91,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec/create?api-version=7.0-preview 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: @@ -123,7 +123,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec/create?api-version=7.0-preview 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: @@ -155,7 +155,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec/create?api-version=7.0-preview 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: @@ -187,7 +187,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec?api-version=7.0-preview 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: @@ -219,7 +219,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec?api-version=7.0-preview 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: @@ -251,7 +251,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec?api-version=7.0-preview 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: @@ -283,7 +283,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec?api-version=7.0-preview 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: @@ -314,7 +314,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys?api-version=7.0-preview 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: @@ -346,7 +346,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec1bddb12ec/recover?api-version=7.0-preview 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: @@ -378,7 +378,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec0bddb12ec/recover?api-version=7.0-preview 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: @@ -410,7 +410,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg1bddb12ec?api-version=7.0-preview response: body: {string: ''} headers: @@ -440,7 +440,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg0bddb12ec?api-version=7.0-preview response: body: {string: ''} headers: @@ -469,7 +469,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys?api-version=7.0-preview response: body: {string: '{"value":[],"nextLink":null}'} headers: @@ -616,7 +616,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec/create?api-version=7.0-preview 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: @@ -648,7 +648,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec/create?api-version=7.0-preview 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: @@ -680,7 +680,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec/create?api-version=7.0-preview 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: @@ -712,7 +712,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec/create?api-version=7.0-preview 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: @@ -744,7 +744,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec1bddb12ec?api-version=7.0-preview 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: @@ -776,7 +776,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg0bddb12ec?api-version=7.0-preview 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: @@ -808,7 +808,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyprg1bddb12ec?api-version=7.0-preview 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: @@ -840,7 +840,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/keys/keyrec0bddb12ec?api-version=7.0-preview 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: @@ -871,7 +871,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys?api-version=7.0-preview 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: @@ -903,7 +903,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec1bddb12ec/recover?api-version=7.0-preview 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: @@ -935,7 +935,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyrec0bddb12ec/recover?api-version=7.0-preview 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: @@ -967,7 +967,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg0bddb12ec?api-version=7.0-preview response: body: {string: ''} headers: @@ -997,7 +997,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys/keyprg1bddb12ec?api-version=7.0-preview response: body: {string: ''} headers: @@ -1026,7 +1026,7 @@ interactions: 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 + uri: https://vault-bddb12ec.vault.azure.net/deletedkeys?api-version=7.0-preview response: body: {string: '{"value":[],"nextLink":null}'} headers: 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 index 486332d0b262..d54c886c75fc 100644 --- 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 @@ -51,7 +51,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219?api-version=7.0-preview 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: @@ -83,7 +83,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219/sign?api-version=7.0-preview 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: @@ -116,7 +116,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219/verify?api-version=7.0-preview response: body: {string: '{"value":true}'} headers: @@ -148,7 +148,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219/sign?api-version=7.0-preview 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: @@ -181,7 +181,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keysign97fd1219/071f815b35a14aaa81ef2555106a4d6c/verify?api-version=7.0-preview response: body: {string: '{"value":true}'} headers: 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 index 901dc08d6f17..c7508326b925 100644 --- 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 @@ -51,7 +51,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a?api-version=7.0-preview 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: @@ -84,7 +84,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/wrapkey?api-version=7.0-preview 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: @@ -117,7 +117,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/unwrapkey?api-version=7.0-preview response: body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/eb1325e5c5454a1b881ab151d6b083ac","value":"NDFmMDdkM2M3MGYxOWVmMGYyZGY5OTIxMDUxODUyYTVkOTY5MGQyNDNlOWZiYzVkZDQyOGYxODI3OWY5ZDVmODBkMzhiZmVjZjlhNTgwMWQzMTBkZjVkN2Y4NTI5YTFiZDIwYmNmYzNlMGFjZWY2MjhlOGFjNmFmNGZiYjkwMmNkYmVjNjU4Y2UxNDcwMTdkZDQyM2IwODRhYjQ4ODkwNGJiZTNjMDI1MWI1NjU3YmUwY2ZlZTYxMWZiMzc0OTc0Yjg5YzQyMjQ"}'} headers: @@ -150,7 +150,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/eb1325e5c5454a1b881ab151d6b083ac/wrapkey?api-version=7.0-preview 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: @@ -183,7 +183,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/eb1325e5c5454a1b881ab151d6b083ac/unwrapkey?api-version=7.0-preview response: body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/eb1325e5c5454a1b881ab151d6b083ac","value":"NDFmMDdkM2M3MGYxOWVmMGYyZGY5OTIxMDUxODUyYTVkOTY5MGQyNDNlOWZiYzVkZDQyOGYxODI3OWY5ZDVmODBkMzhiZmVjZjlhNTgwMWQzMTBkZjVkN2Y4NTI5YTFiZDIwYmNmYzNlMGFjZWY2MjhlOGFjNmFmNGZiYjkwMmNkYmVjNjU4Y2UxNDcwMTdkZDQyM2IwODRhYjQ4ODkwNGJiZTNjMDI1MWI1NjU3YmUwY2ZlZTYxMWZiMzc0OTc0Yjg5YzQyMjQ"}'} headers: @@ -402,7 +402,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a?api-version=7.0-preview 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: @@ -435,7 +435,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/wrapkey?api-version=7.0-preview 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: @@ -468,7 +468,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/unwrapkey?api-version=7.0-preview response: body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/03acb54ecc5b45148cc7d3161b3da3ad","value":"MzVhNGMxM2YzYWRhNmI1MDE4MmY3MzdjMzIyZjQ4Njk5OTIwNzUxZmU2NjZkOTY4MTJjYmEwNmM3MzYxZjVkMjZlZGNjYzdiZTc4YTVmYzE0OWMyN2UzNDU4NzM4OWI1MTVjOGU4NGMzMGM5YWViOTJhNTBjY2M0MDNjYWJlZmYwNzQzMWYzZGUxZWU2NDc0MjYwYjVkNGJjMDdiNGZjMzMwZmI5MTkzZjcyMmRiYjgwNDQzYzdkMDUxYjhhZDMwYjQ5MTgzMjE"}'} headers: @@ -501,7 +501,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/03acb54ecc5b45148cc7d3161b3da3ad/wrapkey?api-version=7.0-preview 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: @@ -534,7 +534,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/03acb54ecc5b45148cc7d3161b3da3ad/unwrapkey?api-version=7.0-preview response: body: {string: '{"kid":"https://pytest-shared-vault.vault.azure.net/keys/keywrap98c4122a/03acb54ecc5b45148cc7d3161b3da3ad","value":"MzVhNGMxM2YzYWRhNmI1MDE4MmY3MzdjMzIyZjQ4Njk5OTIwNzUxZmU2NjZkOTY4MTJjYmEwNmM3MzYxZjVkMjZlZGNjYzdiZTc4YTVmYzE0OWMyN2UzNDU4NzM4OWI1MTVjOGU4NGMzMGM5YWViOTJhNTBjY2M0MDNjYWJlZmYwNzQzMWYzZGUxZWU2NDc0MjYwYjVkNGJjMDdiNGZjMzMwZmI5MTkzZjcyMmRiYjgwNDQzYzdkMDUxYjhhZDMwYjQ5MTgzMjE"}'} headers: 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 index 07e8eaee113c..5efb0edcb9df 100644 --- 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 @@ -43,7 +43,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a?api-version=7.0-preview 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: @@ -75,7 +75,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a/backup?api-version=7.0-preview response: body: {string: '{"value":"KUF6dXJlS2V5VmF1bHRTZWNyZXRCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLlVzcGF0bGZTaC1PVVhzWHZnTkJPdE91MlEzTm42cjhDRXdzcFZ0bnNSZ25xNTJ3MmZNZ2xPN2VfYkg5Q2FvVGNSUmdMSzR1VmpXY2ZGRnZQMmJOQzZmMVdpVnZKd21HcmJYaXFIbUNGbmhXNFdWY185R1ZqdWNjZWw1a2VKQUZUdmY0SW9teWkyZXhYa1ZqbUgtRWMyM2h4V2hfa2tncVh6X3dhRTdDY2EzaEx5S0JWTGNvdnRRYjBuMjc2VWxqNWRSeXNWaDhQSnk2VWthVzBTNTlWaUV3S2VSSk9DMVI1VkhRNWM3SXQtb3JNcEp2eXFjR2oyTEdMY1dWcUFDWUlfS0kyZk9Ibk0xSkFfV3lDanlpWncxV3k4WmdYeUFOTE9pZ1hYUnFNMUZUUmgtRnBVWm53UFR6ZHVHdldEX29SZUFCLVVETUdidkQ5OFQxaU1RV040US5MVVFjTkR6Ri1QN3ZldU82R09HcXpRLk1CSW5HMmk2ak1IWEdnazlNYUIwUnRvRzlBOGJGRDlxN2pyYmlha0JVWWM5UVBHVzZwdnBHeDZYdzZLSlFNYVhzOThQa0lQRmhVa2NQR2xsbWF1Mm50TUlzVTFrVERMMktTVEhzOXZRQ2Y4TjQ3cVFrQUR5THloSGJydTlFR0pVOTFSVFZiU3h0VjVXSW82SVY1clJsUUxNU3VCTFVJMW5JU0lnNGJjRXM1SnlqZFFnVmp6REUxYmRNWGRhQUFiTHFUYzhOdmlRSV9xSWdOLWxpbVFIa0JjcnAyQ1BMc3lyeEtnQUZyUUNwdEdFeGR2a3RIYURodlQ0MWswWkpsd1NCTWJBUGNCZDZRNmdWWVhfdkxreEszdlVad2xnWTVDSVV1ampYYTE5b3VjVmpOMTdzQWEzcmY1XzBEdWhaa1JrOGhzb1dlY2FsOXVQckVpSmtjSjI2M3FfNFhsTGZXNkZrcVlDaVR0TWhDR3dIdV9MTC1fWWJyQnFnam9CSC1LaFV1aWszQ1h0MzBGUkFibjQ4ZG5JSWZNQk9oQ2R5QXdoZm15U3VOdDAybFpjVzJ0Umh6Y0xlR1ZrSlJYaDVxLTRUd1RqLURvU2hRMzNwYWx0OXZXZUprWUR3YkJNN0NpOGFZOWxOX0ZmbE9vN2QwUU9BNTN1UzlZMlp0NVBvdThva3FFTFp2dWU0djNTM2xSR0o1WDl6S0hmc0xtY1BMaGtEc28xMHJtNFc5OUlDVy00ZGZORVpLdkxiLUhaZXdqTUdMV21OaENsSXVvbHkwa3Y1d3hMckxfanh5QkF2eElSZy03RDdMU2dzR3RLQXdmemg0N0tJOFc3YWFyLS1hM2VLNWVCdXZYdkpNN29selFXVDlCbGN3aGxRRlBPREZRVU1zZHpRODNpRk1WTndTcDF1dnFBTkZnMHdsM1dZRzRUZmlVZFpIbjdwNmFHbEhWT3pOeFJJcjBRcTNSQ19TbjFBZ0FxVVdaRDhCS2hZRDZmZTZMM25tbHlkdjlZTkw2NVU0cXJpSWpuTGpCRnhTZ0ppZGFJTEZkenlKS0lMNmdtd3NkQWN5MmFGaUVMbVUtZmpxdEllTkpubHlMOG1laURQM0VtVnpFdWw5VW95RGpRbnBwRDhkSEt4VjFNQXBxRm15bE1hbHhxeHo3QWYyZ1NkbERVNVZRakdyU3ljVUpqaEdXNTRNNGtPM3Z0MEVoek9LNVBSWmhrRTNHTWdfall6ZkJaX1NCNVRyRUlZQzVQZi1EY0czdmMtMkwzZUZQci1wREUtSWZBS0hIMVhEX1V4Z2ZiR0EzeTlZeHJQd0JvTlRkak50cDJPeUF0d1B6dWhwdXVyNXFCNVJ5YjBuUGZxdEpGQjJWTnVvLWNmOFgyRkJaaDJ2OE9VX0NtSU4xV3NhdlN5bmcyV2xWdUl4RGpUUnVrNUlUSXYzbFM5X1BjU1l5bDFJVEFwUjZxeThZVmpOa2RkbFB4REJHTTUwMG1yZVRwdGF4NWVJeE1jWEtfNllPaFhNMWE5am1NVHJyUWRBcFBqQVJubGhFQ0FSckpnNmRHMlpaUlJFOFJRTUlGQVF6UWdQTWxKSFVqUzhPR29MYWlKdktCLXZSSGNRVmtaNUtxTi12eno1X0Mxam9ha1Rkd3hhcUViZF9vX1dVYWlSallfN3RXRld1NmExWVA4a2l5N3ZiLXlHNV9LVDdtZ1pNRE9FS3VvYWNMNldwbzhMdzVMSmlzTEg5NExpY241V240dWZzc3gxdkx0VUFPV0hVYlNCRnRjTmluWU01R0hpdk5uWUtoY2ZHZGxBN3BHNTNCQ1VGd2NpQ1dHWFFLR3hCREYtMXlVUG9pX18xY0RpMGRTR2g3YnJXRDh5YXFnMGZORDFrcFFkMGpQd0ZpeVVvWGxIaHUxRVNiV3VaNEpKMTNGMjB2NDZ4bTZWekZZN0RqelJUOFRfTlh0Qm1CZFU4NGhsZS1uY3FaVWJtMGZ5UEQtNkxKM2EybU84N0JrOE9VN3lJbko0NFowV2lTajIxSHBKVmlTcVluVWdnV3VmWUo4NkhjWFdmYXE4N01BaldpWU1pck1tOHFYTFd4TERKbDJTWTBucTl3ZjZ0THNIWGV3WENNT2t2NkE4ckYzeS1OWndJNTNVSlphZEZKNVU5ZHVPSDZzVGFUYk0wVDdhWmg5MlM4Q0Rxc2ZVMjU0X2lOUEYtdmprSnpkRDN6dkdMTXEwR3ZJUzlkaEVTeVEwOWI4RkVPb3NSZnNUR2FrVmZuSWZfa0FyakV0LXNEMkdBLVNFQTdFbEZjS29kWjdxUHZEUEVnLTRQV2w2RTB0eTkyWUFFSTl5X181aGNRbDIyUkFMb0JMaVRwZjJraEx6VUdiNEZLVFpBZ1dZeEQ0SGpnVFprWkZlc2JZVFhxX0hmWGxQOTQ2SHlteDl2bHFNbU5rZWlQLWhJRjFKbEdUMVRoSkY0VlJKVURaMGk5cHZVXzlxNkoyOTRSMlZiXzBwZjl3RnVZWmM2cHZWNTQzeFUzOV9lRmRjZjBYQ1pidGNfT215b0FpbGx1eXIxRVRLRHVTVGNJMzZrMHAwaGVEOC1LcXVtakVRRzg4ZEM2OGpOclVOWk9LdklVRG9BbGJNVXpScXFrSTh1U2VRajBSeE9wdVJnc3l2ZkgzbXNWOG1SVjdqeF9lMnQwc1ppTW5nUUJpd2hqRE9xYUFBY2tUem9yZklSQ3o0SENyUVR0Q0pvcmhQZ1Z3bHJpRnk1NVVZVUVlaG5mYWlaVXNmWHJmMm9Lb1J4SFVocWtNcEdJanFpUDhNRElZYkg2VWh6YnVTQ0dlXzBQamRLcGRnSGg4RFNLVF9IclQ2YnRQekhQcmRnZ1ZmY2xWc082TDB3T2p2Ry1mUll1Q21HQko0a0lnMmt3SkRWcVpYSTNFN1BMOFNaY195TGg2NjRWZDEycmY1dF9HeHY1dVh5SVE3RVNNdWV2QnIxRXF3MGtWQ0xGX2FwWE9DOG1IV2w0LTRhY21Jd3hMdXdrZlM1bmpaVklEUHh2bFBLOW5NeVlJX2JBeVRSX2lQNmpRejVCVHMxejlOb3p4Yk9mMU5KVFFrVWxXU0lrUVhzblNneWdpdFV0ZENvMXEteDlIT0M0Z1JodEh3UVNnaHNGQnBTVUVOSmVnaWprdFptc2pGY0Q4d1Bhbm1YdVhtV3dFR3Fmem9DM0o0UWdSS1kwYXdsajJEMXZrRXpka1hSZHluWVhlT1lzUGZFb2JSMkpZVklvcDRmbUFYVVhrZlVhd0RxaXQ5aTI5b0hiQjdLcUFKTEZCWEx6eUhRcFl5bC1SRlV3ZUFUak1pWEdmMmNLZ3owRGdnQktpb1A4VW9HdlBVc0kzVjdJVUgtNU81VHJNakJMMWNSZ2NXVUJfZlNWRWxVU1BNMHNpSV9kZ1pVSUhqWGptdGgxSmxucVpQcTZpTXBJUllDdnlFT0h1UnQzQ2JCRXhxMDE1aEJvMXNldUJSakZLTWI4WldLTTlVbzdZRVZGVGdXZFh5Z21yUVIwaUh1alhCLU02UkpydHZnWHV2X2lmRGI1MVV6RTU3RTR5NXVKdUF6TWFXUXBfZEhvS3ktVjRKWmxuWEJQU1pQU0VTajB1bVBPMDliRllyejNzWEo0U0JBUEFHd3RMbHpncTU0dHp6ZFV4YUNPZkl4bTNsTm5MYmNMZzVkbDJ6dnIzRTFhNExUMTJKUGpQWWtmbHJuS2hJX1kxRjFjZ2l1S2RUbllHRHJCV0xTUG4wcUdGSkFzcUdNN2pjQkVaZ3k5MmtaOUVfRUt2ekRIVkFjNDFJQk1CbEF2ZHprUU9xbzRHZ1NfRFppUWxpalJFd1QtYU51Mjh3QjE0cFUtZ0psRlgxbmtMeDhHeUdFV1MyeGZBaEpYYy1JaUJGNUxaN3AxVTV5cXhyQVcweW1ibk43bm50M3p2Z2VSSFJLd19nUXF5ZTllVGx5NmFFenZJVU1Ca25Id1BfRHFVOWdTa2NmbmRCbnUwNzNuRXNqUUtNM1dIakNWMHJwODdYLVdHWkIxd2p1b0g3RTFMLTdTM0MtUGR3Q3otNVp6QVJ5NXZCWnhjRGoxWmJNQll6dWxsNjk1M0IyUVlIQy1EWjNwaFBONFoybXduVm9TWVRJVTNfNFBKbG5BbHVLQ1lLTDZ0Z2dCSDFaRzJLaS1nWS0zZkNMQUhMS0xwNHlZSWU5RXFqbFI3cUh0YzJLTHRPamVTUTIzUTZpYlFZb2dMV28tT2c3YlU2a2VaeS1sRG54VzlaSEhDdU9FTkxUQWdubTZxNHZ0VVB2b1lPM2MtZWJnN21lang5QnVMeUQ1ZVJkbGtCS21NeTVJQ3Y1QVlCX05GZHVzMm54SnZZUEZEaVBOWERBTWc3aUlXSEo0eEtvWGhLZlZoWlJYUGoyZldoMEE5cHlJYWltdGYtZjk4VzNHVFNrWC1iVkxiYXUyWGlubEc5MFRyLWZVdkpsY1YyS00zM2h1UHJ0aGxreTQ4U29PTEJhOWh2NWlqU3Jrc241UkFNQkhwSlY4ZkpMbnJYT2padnFvMWRfcXk2ZkxUUU5fMHF5YXNnU0k3S1lnVGNaVEREM1pkeUlTTHAydHBzWE5TWXAyZTE3SldkS1M3ampWcWZhU0dKdlFCejFNQlo3ZVNmSFFybnYzbWRwVldJNkN0d3U4MDhIcXJVWXNOcFBpWVhwZEhxaEpMRXcwRzkzVlIwempaaldpTkRXYUt0cXIxOWQ5SmpKOXZvcTE1ZjktNm9ZNlJiY1QtX1lrSUc4cmhLaktQbEFvangxeUtidzJKd3NGOHZodnZKT2ZheUV0LW5EUVUzYUc3ZC1nb1ZLenc0QUNJdS1kbjRsM0ZsSjN6VlNqWDBmOXBFRmR6UFlXX0Z3dHJ4QzRYTnBsdDhVSmhFZkNQckJrek9Qa3JLUFp4RC1ua2dPQkFKYlFPXzgyWjZCcVBTYVRZcUVRakRaUTdKdjJMY2xMaF9JR1ZpVGdERVgxdVN0T3pJY0NmRVN5d0VCbXp5NWp5dHptQjFqV3l1OFN1Smc3a2JLMVBsQjVNWXp1YVVUR09wYko4V3QtYlB3RlEydGxNdDZPQ0tmLV9nQ0FXRHp0MGg0THhfTHNNaHNTOVdoR1Axenl1SzBTS3FlZmhxay1DeThEaXktYVFzMUtNUERCUUp1TkdkbGlmVEF4a2hYNUVvSzI3dnY3UzEwdTBCZDJiaWt5WG01UGx0alpTZlQ3WkZwbEtQbDhnenlRWTZDT3dmaTNZYjRTY2xYS25MQXFPLURlcW5ScjFxdXFtcXhJek5vSG1Pb1dkMXUtSzRYaXNpT21lNlQ4OE9JUVYzR1N0OUIzR2dwbHFEUml1Z2E2WXJwbGJwZ20zaDJaV1lKT0E5TVRJLS1xMy00WnpxSWZhTHhNcmJXUHZQME1ESi1iMk5jQ2RuYnByRHpLMWgwZEgwVTVOcTMxbHR6Rm1LYzN5UW1EUS1Rd2RJU29MQ1FTRnB4bS12OVE4eHhPZ1FKYWsxUXNuMy01NmNtZDl5ODZ2dFcwOWw2OFVETzZ1VmZ5SmZwanY3MEdQZy4xSkI1OTBrNkd1d25rNkQycGlpYWd3"}'} headers: @@ -107,7 +107,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a?api-version=7.0-preview response: body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a/16cb31b7265645c3b212804847a35fc3","attributes":{"enabled":true,"created":1496767263,"updated":1496767263,"recoverylevel":"Purgeable"}}'} headers: @@ -139,7 +139,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/restore?api-version=7.0-preview response: body: {string: '{"id":"https://pytest-shared-vault.vault.azure.net/secrets/secbakc3d148a/16cb31b7265645c3b212804847a35fc3","attributes":{"enabled":true,"created":1496767263,"updated":1496767263,"recoverylevel":"Purgeable"}}'} headers: 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 index 25cea6151eb1..d29340d86f88 100644 --- 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 @@ -43,7 +43,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370?api-version=7.0-preview 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: @@ -74,7 +74,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/?api-version=7.0-preview 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: @@ -105,7 +105,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/402495a3b6794727a581cd997c90a537?api-version=7.0-preview 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: @@ -138,7 +138,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/?api-version=7.0-preview 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"}}'} @@ -172,7 +172,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/402495a3b6794727a581cd997c90a537?api-version=7.0-preview 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"}}'} @@ -205,7 +205,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370?api-version=7.0-preview 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"}}'} @@ -237,7 +237,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secd17e1370/?api-version=7.0-preview response: body: {string: '{"error":{"code":"SecretNotFound","message":"Secret not found: secd17e1370"}}'} 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 index 54bd24ce9cf7..9a2f5291ab15 100644 --- 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 @@ -43,7 +43,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/sec0?api-version=7.0-preview 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: @@ -75,7 +75,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/sec1?api-version=7.0-preview 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: @@ -106,9 +106,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets?maxresults=2&api-version=7.0-preview 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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNUlYTmxZM0psZEM5RFJWSlVNelpFTlRFMU5rUWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['817'] @@ -137,9 +137,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets?api-version=7.0-preview&$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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElYTmxZM0psZEM5UVQweEpRMWxEUlZKVVNVWkpRMEZVUlNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['831'] @@ -168,9 +168,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets?api-version=7.0-preview&$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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeElYTmxZM0psZEM5VFJVTXhJVEF3TURBeU9DRXlNREUzTFRBMkxUQTJWREUyT2pJM09qRTNMamswTURJMU5qTmFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['715'] @@ -199,9 +199,9 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets?api-version=7.0-preview&$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"}'} + 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=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lYTmxZM0psZEM5VFJVTkNRVXRETTBReE5EaEJJVEF3TURBeU9DRXlNREUzTFRBMkxUQTJWREUyT2pFd09qRTRMalEyTlRVNE9UTmFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2"}'} headers: Cache-Control: [no-cache] Content-Length: ['639'] @@ -230,7 +230,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets?api-version=7.0-preview&$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: 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 index 170cfc4b21e4..b330979c44d6 100644 --- 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 @@ -43,7 +43,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3?api-version=7.0-preview 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: @@ -75,7 +75,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3?api-version=7.0-preview 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: @@ -106,7 +106,7 @@ interactions: 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 + uri: https://pytest-shared-vault.vault.azure.net/secrets/secac0112b3/versions?api-version=7.0-preview 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: 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 index dab609de7a48..11d546a59a1d 100644 --- 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 @@ -59,7 +59,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=7.0-preview 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: @@ -91,7 +91,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=7.0-preview 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: @@ -123,7 +123,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=7.0-preview 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: @@ -155,7 +155,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=7.0-preview 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: @@ -187,7 +187,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=7.0-preview 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: @@ -219,7 +219,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=7.0-preview 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: @@ -251,7 +251,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=7.0-preview 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: @@ -283,7 +283,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=7.0-preview 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: @@ -314,7 +314,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=7.0-preview 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: @@ -346,7 +346,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429/recover?api-version=7.0-preview response: body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/5ca575f3cf9b4ff2b159286e89dbe0f4","attributes":{"enabled":true,"created":1496767324,"updated":1496767324,"recoverylevel":"Recoverable+Purgeable"}}'} headers: @@ -378,7 +378,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429/recover?api-version=7.0-preview response: body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/bb77f3b66ad44451a9c1623e8d6eb8cd","attributes":{"enabled":true,"created":1496767324,"updated":1496767324,"recoverylevel":"Recoverable+Purgeable"}}'} headers: @@ -410,7 +410,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429?api-version=7.0-preview response: body: {string: ''} headers: @@ -440,7 +440,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429?api-version=7.0-preview response: body: {string: ''} headers: @@ -469,7 +469,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=7.0-preview response: body: {string: '{"value":[],"nextLink":null}'} headers: @@ -722,7 +722,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=7.0-preview 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: @@ -754,7 +754,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=7.0-preview 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: @@ -786,7 +786,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=7.0-preview 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: @@ -818,7 +818,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=7.0-preview 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: @@ -850,7 +850,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=7.0-preview 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: @@ -882,7 +882,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=7.0-preview 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: @@ -914,7 +914,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=7.0-preview 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: @@ -946,7 +946,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=7.0-preview 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: @@ -977,7 +977,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=7.0-preview 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: @@ -1009,7 +1009,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429/recover?api-version=7.0-preview response: body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/14587ba85dc447a39b31f6263b37a986","attributes":{"enabled":true,"created":1496767885,"updated":1496767885,"recoverylevel":"Recoverable+Purgeable"}}'} headers: @@ -1041,7 +1041,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429/recover?api-version=7.0-preview response: body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/7d895920d7084ba291a1aaebb477775b","attributes":{"enabled":true,"created":1496767887,"updated":1496767887,"recoverylevel":"Recoverable+Purgeable"}}'} headers: @@ -1073,7 +1073,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429?api-version=7.0-preview response: body: {string: ''} headers: @@ -1103,7 +1103,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429?api-version=7.0-preview response: body: {string: ''} headers: @@ -1132,7 +1132,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=7.0-preview response: body: {string: '{"value":[],"nextLink":null}'} headers: @@ -1279,7 +1279,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=7.0-preview 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: @@ -1311,7 +1311,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=7.0-preview 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: @@ -1343,7 +1343,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=7.0-preview 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: @@ -1375,7 +1375,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=7.0-preview 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: @@ -1407,7 +1407,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=7.0-preview 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: @@ -1439,7 +1439,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=7.0-preview 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: @@ -1471,7 +1471,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=7.0-preview 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: @@ -1503,7 +1503,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=7.0-preview 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: @@ -1534,7 +1534,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=7.0-preview 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: @@ -1566,7 +1566,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429/recover?api-version=7.0-preview response: body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/e9db1592406d4d92a70465bb9d7b9e0a","attributes":{"enabled":true,"created":1496770243,"updated":1496770243,"recoverylevel":"Recoverable+Purgeable"}}'} headers: @@ -1598,7 +1598,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429/recover?api-version=7.0-preview response: body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/a6e30ca5fe284266a62d8ff064ec5ae7","attributes":{"enabled":true,"created":1496770242,"updated":1496770242,"recoverylevel":"Recoverable+Purgeable"}}'} headers: @@ -1630,7 +1630,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429?api-version=7.0-preview response: body: {string: ''} headers: @@ -1660,7 +1660,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429?api-version=7.0-preview response: body: {string: ''} headers: @@ -1689,7 +1689,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=7.0-preview response: body: {string: '{"value":[],"nextLink":null}'} headers: @@ -1906,7 +1906,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=7.0-preview 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: @@ -1938,7 +1938,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=7.0-preview 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: @@ -1970,7 +1970,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=7.0-preview 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: @@ -2002,7 +2002,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=7.0-preview 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: @@ -2034,7 +2034,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=7.0-preview 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: @@ -2066,7 +2066,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=7.0-preview 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: @@ -2098,7 +2098,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=7.0-preview 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: @@ -2130,7 +2130,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=7.0-preview 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: @@ -2161,7 +2161,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=7.0-preview 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: @@ -2193,7 +2193,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429/recover?api-version=7.0-preview response: body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/bfc9b7f191b442de869938478dd1cc97","attributes":{"enabled":true,"created":1496771626,"updated":1496771626,"recoverylevel":"Recoverable+Purgeable"}}'} headers: @@ -2225,7 +2225,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429/recover?api-version=7.0-preview response: body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/ae39d9d7e47b40b1ba61d9cf69a00d59","attributes":{"enabled":true,"created":1496771627,"updated":1496771627,"recoverylevel":"Recoverable+Purgeable"}}'} headers: @@ -2257,7 +2257,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429?api-version=7.0-preview response: body: {string: ''} headers: @@ -2287,7 +2287,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429?api-version=7.0-preview response: body: {string: ''} headers: @@ -2316,7 +2316,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=7.0-preview response: body: {string: '{"value":[],"nextLink":null}'} headers: @@ -2534,7 +2534,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=7.0-preview 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: @@ -2566,7 +2566,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=7.0-preview 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: @@ -2598,7 +2598,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=7.0-preview 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: @@ -2630,7 +2630,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=7.0-preview 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: @@ -2662,7 +2662,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg1f91a1429?api-version=7.0-preview 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: @@ -2694,7 +2694,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secprg0f91a1429?api-version=7.0-preview 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: @@ -2726,7 +2726,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429?api-version=7.0-preview 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: @@ -2758,7 +2758,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429?api-version=7.0-preview 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: @@ -2789,7 +2789,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=7.0-preview 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: @@ -2821,7 +2821,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec0f91a1429/recover?api-version=7.0-preview response: body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/9e737724216b453a8c52d09d904617ea","attributes":{"enabled":true,"created":1496772036,"updated":1496772036,"recoverylevel":"Recoverable+Purgeable"}}'} headers: @@ -2853,7 +2853,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secrec1f91a1429/recover?api-version=7.0-preview response: body: {string: '{"id":"https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/f23ba9d16fd2454ebdaa28a2140a4d45","attributes":{"enabled":true,"created":1496772037,"updated":1496772037,"recoverylevel":"Recoverable+Purgeable"}}'} headers: @@ -2885,7 +2885,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg1f91a1429?api-version=7.0-preview response: body: {string: ''} headers: @@ -2915,7 +2915,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets/secprg0f91a1429?api-version=7.0-preview response: body: {string: ''} headers: @@ -2944,7 +2944,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/deletedsecrets?api-version=7.0-preview response: body: {string: '{"value":[],"nextLink":null}'} headers: @@ -2975,7 +2975,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec0f91a1429/?api-version=7.0-preview 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: @@ -3006,7 +3006,7 @@ interactions: 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 + uri: https://vault-f91a1429.vault.azure.net/secrets/secrec1f91a1429/?api-version=7.0-preview 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: From cebbdd8b01c956f887201a6d62ec2bc7c8dcf62a Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 27 Feb 2018 14:19:09 -0800 Subject: [PATCH 21/49] rebasing autorest generated changes from 7.0-preview to keyvault_1.0_preview --- .../azure/keyvault/key_vault_client.py | 1117 +++++++++++++---- .../azure/keyvault/models/__init__.py | 16 + .../keyvault/models/backup_storage_result.py | 35 + .../models/deleted_sas_definition_bundle.py | 79 ++ .../models/deleted_sas_definition_item.py | 63 + .../deleted_sas_definition_item_paged.py | 27 + .../models/deleted_storage_account_item.py | 63 + .../deleted_storage_account_item_paged.py | 27 + .../keyvault/models/deleted_storage_bundle.py | 77 ++ .../models/sas_definition_attributes.py | 12 + .../models/storage_account_attributes.py | 12 + .../models/storage_restore_parameters.py | 33 + .../models/x509_certificate_properties.py | 7 +- azure-keyvault/azure/keyvault/version.py | 2 +- 14 files changed, 1355 insertions(+), 215 deletions(-) create mode 100644 azure-keyvault/azure/keyvault/models/backup_storage_result.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_sas_definition_item.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_paged.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_storage_account_item.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_storage_account_item_paged.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_storage_bundle.py create mode 100644 azure-keyvault/azure/keyvault/models/storage_restore_parameters.py diff --git a/azure-keyvault/azure/keyvault/key_vault_client.py b/azure-keyvault/azure/keyvault/key_vault_client.py index 2529531971e4..53d415b8dc3d 100755 --- a/azure-keyvault/azure/keyvault/key_vault_client.py +++ b/azure-keyvault/azure/keyvault/key_vault_client.py @@ -37,7 +37,7 @@ def __init__( super(KeyVaultClientConfiguration, self).__init__(base_url) - self.add_user_agent('azure-keyvault/{}'.format(VERSION)) + self.add_user_agent('azure-keyvault,/{}'.format(VERSION)) self.add_user_agent('Azure-SDK-For-Python') self.credentials = credentials @@ -112,7 +112,7 @@ def create_key( 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=r'^[0-9a-zA-Z-]+$') @@ -154,6 +154,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): @@ -193,7 +194,7 @@ def import_key( 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=r'^[0-9a-zA-Z-]+$') @@ -235,6 +236,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): @@ -263,7 +265,7 @@ def delete_key( :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') @@ -301,6 +303,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): @@ -341,7 +344,7 @@ def update_key( 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'), @@ -384,6 +387,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): @@ -413,7 +417,7 @@ def get_key( :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'), @@ -452,6 +456,7 @@ 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): @@ -483,7 +488,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') @@ -529,6 +534,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): @@ -562,7 +568,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) } @@ -607,6 +613,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): @@ -645,7 +652,7 @@ def backup_key( :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') @@ -683,6 +690,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): @@ -723,7 +731,7 @@ def restore_key( 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) } @@ -764,6 +772,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): @@ -808,7 +817,7 @@ def encrypt( 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'), @@ -851,6 +860,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): @@ -892,7 +902,7 @@ def decrypt( 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'), @@ -935,6 +945,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): @@ -974,7 +985,7 @@ def sign( 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'), @@ -1017,6 +1028,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): @@ -1062,7 +1074,7 @@ def verify( 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'), @@ -1105,6 +1117,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): @@ -1146,7 +1159,7 @@ def wrap_key( 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'), @@ -1189,6 +1202,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): @@ -1228,7 +1242,7 @@ def unwrap_key( 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'), @@ -1271,6 +1285,7 @@ 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): @@ -1305,7 +1320,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) } @@ -1350,6 +1365,7 @@ 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): @@ -1377,7 +1393,7 @@ def get_deleted_key( :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') @@ -1415,6 +1431,7 @@ 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): @@ -1441,7 +1458,7 @@ def purge_deleted_key( :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') @@ -1472,6 +1489,7 @@ 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): @@ -1501,7 +1519,7 @@ def recover_deleted_key( :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') @@ -1539,6 +1557,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): @@ -1576,7 +1595,7 @@ def set_secret( 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=r'^[0-9a-zA-Z-]+$') @@ -1618,6 +1637,7 @@ 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): @@ -1644,7 +1664,7 @@ def delete_secret( :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') @@ -1682,6 +1702,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): @@ -1721,7 +1742,7 @@ def update_secret( 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'), @@ -1764,6 +1785,7 @@ 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): @@ -1791,7 +1813,7 @@ def get_secret( :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'), @@ -1830,6 +1852,7 @@ 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): @@ -1861,7 +1884,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) } @@ -1906,6 +1929,7 @@ 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): @@ -1938,7 +1962,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') @@ -1984,6 +2008,7 @@ 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): @@ -2014,7 +2039,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) } @@ -2059,6 +2084,7 @@ 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): @@ -2085,7 +2111,7 @@ def get_deleted_secret( :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') @@ -2123,6 +2149,7 @@ 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): @@ -2149,7 +2176,7 @@ def purge_deleted_secret( :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') @@ -2180,6 +2207,7 @@ 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): @@ -2206,7 +2234,7 @@ def recover_deleted_secret( :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') @@ -2244,6 +2272,7 @@ 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): @@ -2270,7 +2299,7 @@ def backup_secret( :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') @@ -2308,6 +2337,7 @@ 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): @@ -2336,7 +2366,7 @@ def restore_secret( 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) } @@ -2377,9 +2407,10 @@ 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 @@ -2392,6 +2423,9 @@ 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 @@ -2407,7 +2441,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) } @@ -2417,6 +2451,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: @@ -2452,6 +2488,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): @@ -2479,7 +2516,7 @@ def delete_certificate( :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') @@ -2517,6 +2554,7 @@ 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): @@ -2544,7 +2582,7 @@ def set_certificate_contacts( 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) } @@ -2585,6 +2623,7 @@ 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): @@ -2609,7 +2648,7 @@ def get_certificate_contacts( :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) } @@ -2646,6 +2685,7 @@ 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): @@ -2669,7 +2709,7 @@ def delete_certificate_contacts( :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) } @@ -2706,6 +2746,7 @@ 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): @@ -2736,7 +2777,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) } @@ -2781,6 +2822,7 @@ 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): @@ -2818,7 +2860,7 @@ def set_certificate_issuer( 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') @@ -2860,6 +2902,7 @@ 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): @@ -2897,7 +2940,7 @@ def update_certificate_issuer( 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') @@ -2939,6 +2982,7 @@ 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): @@ -2965,7 +3009,7 @@ def get_certificate_issuer( :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') @@ -3003,6 +3047,7 @@ 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): @@ -3029,7 +3074,7 @@ def delete_certificate_issuer( :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') @@ -3067,6 +3112,7 @@ 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): @@ -3103,7 +3149,7 @@ def create_certificate( 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=r'^[0-9a-zA-Z-]+$') @@ -3145,6 +3191,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): @@ -3191,7 +3238,7 @@ def import_certificate( 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=r'^[0-9a-zA-Z-]+$') @@ -3233,6 +3280,7 @@ 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): @@ -3265,7 +3313,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') @@ -3311,6 +3359,7 @@ 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): @@ -3338,7 +3387,7 @@ def get_certificate_policy( :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') @@ -3376,6 +3425,7 @@ 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): @@ -3404,7 +3454,7 @@ def update_certificate_policy( :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') @@ -3446,6 +3496,7 @@ 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): @@ -3486,7 +3537,7 @@ def update_certificate( 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'), @@ -3529,6 +3580,7 @@ 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): @@ -3557,7 +3609,7 @@ def get_certificate( :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'), @@ -3596,6 +3648,7 @@ 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): @@ -3626,7 +3679,7 @@ def update_certificate_operation( 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') @@ -3668,6 +3721,7 @@ 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): @@ -3693,7 +3747,7 @@ def get_certificate_operation( :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') @@ -3731,6 +3785,7 @@ 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): @@ -3757,7 +3812,7 @@ def delete_certificate_operation( :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') @@ -3795,6 +3850,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): @@ -3834,7 +3890,7 @@ def merge_certificate( 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') @@ -3876,9 +3932,10 @@ def merge_certificate( return client_raw_response return deserialized + merge_certificate.metadata = {'url': '/certificates/{certificate-name}/pending/merge'} def get_deleted_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): """Lists the deleted certificates in the specified vault currently available for recovery. @@ -3894,6 +3951,9 @@ 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 @@ -3909,7 +3969,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) } @@ -3919,6 +3979,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: @@ -3954,6 +4016,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): @@ -3981,7 +4044,7 @@ def get_deleted_certificate( :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') @@ -4019,6 +4082,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): @@ -4045,7 +4109,7 @@ def purge_deleted_certificate( :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') @@ -4076,6 +4140,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): @@ -4105,7 +4170,7 @@ def recover_deleted_certificate( :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') @@ -4143,6 +4208,7 @@ 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): @@ -4170,7 +4236,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) } @@ -4215,11 +4281,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. This operation requires the storage/delete - permission. + """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. @@ -4231,14 +4377,14 @@ def delete_storage_account( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :return: StorageBundle or ClientRawResponse if raw=true - :rtype: ~azure.keyvault.models.StorageBundle or + :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=r'^[0-9a-zA-Z]+$') @@ -4260,7 +4406,7 @@ 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) + 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]: @@ -4269,18 +4415,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_storge_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. + """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. @@ -4292,14 +4443,13 @@ def get_storage_account( 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 + :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_storge_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]+$') @@ -4321,50 +4471,30 @@ 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) + 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_storge_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. This operation requires the - storage/set permission. + 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: - ~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 @@ -4376,10 +4506,8 @@ def set_storage_account( :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=r'^[0-9a-zA-Z]+$') @@ -4400,13 +4528,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, stream=False, **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) @@ -4421,50 +4545,36 @@ 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. This operation requires the storage/set/update permission. + 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: - ~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 + :return: BackupStorageResult or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.BackupStorageResult 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.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', pattern=r'^[0-9a-zA-Z]+$') + 'storage-account-name': self._serialize.url("storage_account_name", storage_account_name, 'str') } url = self._client.format_url(url, **path_format_arguments) @@ -4482,13 +4592,9 @@ def update_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, 'StorageAccountUpdateParameters') - # Construct and send request - request = self._client.patch(url, query_parameters) - response = self._client.send( - request, header_parameters, body_content, stream=False, **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) @@ -4496,26 +4602,28 @@ def update_storage_account( deserialized = None if response.status_code == 200: - deserialized = self._deserialize('StorageBundle', response) + 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 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. This - operation requires the storage/regeneratekey permission. + 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_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 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 @@ -4527,13 +4635,12 @@ def regenerate_storage_account_key( :raises: :class:`KeyVaultErrorException` """ - parameters = models.StorageAccountRegenerteKeyParameters(key_name=key_name) + parameters = models.StorageRestoreParameters(storage_bundle_backup=storage_bundle_backup) # Construct URL - url = '/storage/{storage-account-name}/regeneratekey' + url = self.restore_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]+$') + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True) } url = self._client.format_url(url, **path_format_arguments) @@ -4552,7 +4659,7 @@ def regenerate_storage_account_key( header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str') # Construct body - body_content = self._serialize.body(parameters, 'StorageAccountRegenerteKeyParameters') + body_content = self._serialize.body(parameters, 'StorageRestoreParameters') # Construct and send request request = self._client.post(url, query_parameters) @@ -4572,74 +4679,437 @@ def regenerate_storage_account_key( return client_raw_response return deserialized + restore_storage_account.metadata = {'url': '/storage/restore'} - 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. This - operation requires the storage/listsas permission. + 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 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 SasDefinitionItem - :rtype: - ~azure.keyvault.models.SasDefinitionItemPaged[~azure.keyvault.models.SasDefinitionItem] + :return: DeletedStorageBundle or ClientRawResponse if raw=true + :rtype: ~azure.keyvault.models.DeletedStorageBundle or + ~msrest.pipeline.ClientRawResponse :raises: :class:`KeyVaultErrorException` """ - def internal_paging(next_link=None, raw=False): - - if not next_link: - # Construct URL - url = '/storage/{storage-account-name}/sas' - 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') + # 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) - else: - url = next_link - query_parameters = {} + # 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 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) + # 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) + if response.status_code not in [200]: + raise models.KeyVaultErrorException(self._deserialize, response) - return response + deserialized = None - # Deserialize response - deserialized = models.SasDefinitionItemPaged(internal_paging, self._deserialize.dependencies) + 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[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.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 = 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=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, 'StorageAccountUpdateParameters') + + # Construct and send request + request = self._client.patch(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 + 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. This + operation requires the storage/regeneratekey 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 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`. + :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 = 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=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, 'StorageAccountRegenerteKeyParameters') + + # 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 + 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. 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 SasDefinitionItem + :rtype: + ~azure.keyvault.models.SasDefinitionItemPaged[~azure.keyvault.models.SasDefinitionItem] + :raises: + :class:`KeyVaultErrorException` + """ + def internal_paging(next_link=None, raw=False): + + if not next_link: + # Construct URL + 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=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.SasDefinitionItemPaged(internal_paging, self._deserialize.dependencies) if raw: header_dict = {} @@ -4647,6 +5117,223 @@ 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 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. + + 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. + :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.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=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.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) + + deserialized = None + + if response.status_code == 200: + deserialized = self._deserialize('SasDefinitionBundle', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + recover_deleted_sas_definition.metadata = {'url': '/deletedstorage/{storage-account-name}/sas/{sas-definition-name}/recover'} def delete_sas_definition( self, vault_base_url, storage_account_name, sas_definition_name, custom_headers=None, raw=False, **operation_config): @@ -4665,14 +5352,14 @@ def delete_sas_definition( deserialized response :param operation_config: :ref:`Operation configuration overrides`. - :return: SasDefinitionBundle or ClientRawResponse if raw=true - :rtype: ~azure.keyvault.models.SasDefinitionBundle or + :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.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]+$'), @@ -4704,13 +5391,14 @@ def delete_sas_definition( deserialized = None if response.status_code == 200: - deserialized = self._deserialize('SasDefinitionBundle', response) + 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): @@ -4736,7 +5424,7 @@ def get_sas_definition( :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=r'^[0-9a-zA-Z]+$'), @@ -4775,6 +5463,7 @@ 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, template_uri, sas_type, validity_period, sas_definition_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): @@ -4819,7 +5508,7 @@ def set_sas_definition( 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=r'^[0-9a-zA-Z]+$'), @@ -4862,6 +5551,7 @@ 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, template_uri=None, sas_type=None, validity_period=None, sas_definition_attributes=None, tags=None, custom_headers=None, raw=False, **operation_config): @@ -4906,7 +5596,7 @@ def update_sas_definition( 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=r'^[0-9a-zA-Z]+$'), @@ -4949,3 +5639,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 index f9283c127adb..8488560f2b83 100755 --- a/azure-keyvault/azure/keyvault/models/__init__.py +++ b/azure-keyvault/azure/keyvault/models/__init__.py @@ -22,6 +22,7 @@ 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 @@ -66,16 +67,21 @@ 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 @@ -87,7 +93,9 @@ 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, @@ -114,6 +122,7 @@ 'DeletedSecretBundle', 'DeletedSecretItem', 'SecretRestoreParameters', + 'StorageRestoreParameters', 'CertificateAttributes', 'CertificateItem', 'CertificateIssuerItem', @@ -158,16 +167,21 @@ 'KeyVerifyResult', 'BackupKeyResult', 'BackupSecretResult', + 'BackupStorageResult', 'PendingCertificateSigningRequestResult', 'StorageAccountAttributes', 'StorageBundle', + 'DeletedStorageBundle', 'StorageAccountCreateParameters', 'StorageAccountUpdateParameters', 'StorageAccountRegenerteKeyParameters', 'StorageAccountItem', + 'DeletedStorageAccountItem', 'SasDefinitionAttributes', 'SasDefinitionBundle', + 'DeletedSasDefinitionBundle', 'SasDefinitionItem', + 'DeletedSasDefinitionItem', 'SasDefinitionCreateParameters', 'SasDefinitionUpdateParameters', 'KeyVaultError', 'KeyVaultErrorException', @@ -179,7 +193,9 @@ 'CertificateIssuerItemPaged', 'DeletedCertificateItemPaged', 'StorageAccountItemPaged', + 'DeletedStorageAccountItemPaged', 'SasDefinitionItemPaged', + 'DeletedSasDefinitionItemPaged', 'JsonWebKeyType', 'JsonWebKeyCurveName', 'DeletionRecoveryLevel', 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..d6145e6632ce --- /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): + super(BackupStorageResult, self).__init__() + self.value = 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..6a3707f7d5c0 --- /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, recovery_id=None): + super(DeletedSasDefinitionBundle, self).__init__() + 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..754c376b3ec5 --- /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, recovery_id=None): + super(DeletedSasDefinitionItem, self).__init__() + 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_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_storage_account_item.py b/azure-keyvault/azure/keyvault/models/deleted_storage_account_item.py new file mode 100644 index 000000000000..52ec98c77aec --- /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, recovery_id=None): + super(DeletedStorageAccountItem, self).__init__() + 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_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_bundle.py b/azure-keyvault/azure/keyvault/models/deleted_storage_bundle.py new file mode 100644 index 000000000000..aa3fe67ecb71 --- /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, recovery_id=None): + super(DeletedStorageBundle, self).__init__() + self.recovery_id = recovery_id + self.scheduled_purge_date = None + self.deleted_date = None diff --git a/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py b/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py index c7b36e4b88cd..5f1a07235068 100755 --- a/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py @@ -24,17 +24,28 @@ 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): @@ -42,3 +53,4 @@ def __init__(self, enabled=None): self.enabled = enabled self.created = None self.updated = None + self.recovery_level = None diff --git a/azure-keyvault/azure/keyvault/models/storage_account_attributes.py b/azure-keyvault/azure/keyvault/models/storage_account_attributes.py index a7e3bac3d613..bfaf2f5ef738 100755 --- a/azure-keyvault/azure/keyvault/models/storage_account_attributes.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_attributes.py @@ -24,17 +24,28 @@ 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): @@ -42,3 +53,4 @@ def __init__(self, enabled=None): self.enabled = enabled self.created = None self.updated = None + self.recovery_level = 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..cf60aaaa785a --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/storage_restore_parameters.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 StorageRestoreParameters(Model): + """The secret restore parameters. + + :param storage_bundle_backup: 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): + super(StorageRestoreParameters, self).__init__() + self.storage_bundle_backup = storage_bundle_backup diff --git a/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py b/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py index 9e8fcab90460..f6ca67ff08e6 100755 --- a/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py +++ b/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py @@ -28,6 +28,9 @@ class X509CertificateProperties(Model): :param validity_in_months: The duration that the ceritifcate is valid in months. :type validity_in_months: int + :param certificate_transparency: Indicates if the certificates generated + under this policy should be published to certificate transparency logs. + :type certificate_transparency: bool """ _validation = { @@ -40,12 +43,14 @@ class X509CertificateProperties(Model): 'subject_alternative_names': {'key': 'sans', 'type': 'SubjectAlternativeNames'}, 'key_usage': {'key': 'key_usage', 'type': '[str]'}, 'validity_in_months': {'key': 'validity_months', 'type': 'int'}, + 'certificate_transparency': {'key': 'cert_transparency', 'type': 'bool'}, } - def __init__(self, subject=None, ekus=None, subject_alternative_names=None, key_usage=None, validity_in_months=None): + def __init__(self, subject=None, ekus=None, subject_alternative_names=None, key_usage=None, validity_in_months=None, certificate_transparency=None): super(X509CertificateProperties, self).__init__() 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 + self.certificate_transparency = certificate_transparency diff --git a/azure-keyvault/azure/keyvault/version.py b/azure-keyvault/azure/keyvault/version.py index 7cdcf7599b55..132b1eeebbf3 100755 --- a/azure-keyvault/azure/keyvault/version.py +++ b/azure-keyvault/azure/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "1.0.0a1" +VERSION = "1.0.0a2," From 128b24c353650a66a0af4bf95d034afb11a586bd Mon Sep 17 00:00:00 2001 From: Azure SDK for Python bot Date: Fri, 2 Mar 2018 01:36:21 +0000 Subject: [PATCH 22/49] Generated from b3108e892b610f91257f1fe99d114ab171191a08 adding nodejs.readme for PR automation (#2569) --- .../azure/keyvault/key_vault_client.py | 0 .../azure/keyvault/models/__init__.py | 0 .../azure/keyvault/models/action.py | 0 .../keyvault/models/administrator_details.py | 0 .../azure/keyvault/models/attributes.py | 0 .../keyvault/models/backup_key_result.py | 0 .../keyvault/models/backup_secret_result.py | 0 .../keyvault/models/certificate_attributes.py | 0 .../keyvault/models/certificate_bundle.py | 0 .../models/certificate_create_parameters.py | 0 .../models/certificate_import_parameters.py | 0 .../models/certificate_issuer_item.py | 0 .../models/certificate_issuer_item_paged.py | 0 .../certificate_issuer_set_parameters.py | 0 .../certificate_issuer_update_parameters.py | 0 .../azure/keyvault/models/certificate_item.py | 0 .../keyvault/models/certificate_item_paged.py | 0 .../models/certificate_merge_parameters.py | 0 .../keyvault/models/certificate_operation.py | 0 .../certificate_operation_update_parameter.py | 0 .../keyvault/models/certificate_policy.py | 0 .../models/certificate_update_parameters.py | 0 .../azure/keyvault/models/contact.py | 0 .../azure/keyvault/models/contacts.py | 0 .../models/deleted_certificate_bundle.py | 0 .../models/deleted_certificate_item.py | 0 .../models/deleted_certificate_item_paged.py | 0 .../keyvault/models/deleted_key_bundle.py | 0 .../azure/keyvault/models/deleted_key_item.py | 0 .../keyvault/models/deleted_key_item_paged.py | 0 .../keyvault/models/deleted_secret_bundle.py | 0 .../keyvault/models/deleted_secret_item.py | 0 .../models/deleted_secret_item_paged.py | 0 azure-keyvault/azure/keyvault/models/error.py | 0 .../keyvault/models/issuer_attributes.py | 0 .../azure/keyvault/models/issuer_bundle.py | 0 .../keyvault/models/issuer_credentials.py | 0 .../keyvault/models/issuer_parameters.py | 0 .../azure/keyvault/models/json_web_key.py | 0 .../azure/keyvault/models/key_attributes.py | 0 .../azure/keyvault/models/key_bundle.py | 0 .../keyvault/models/key_create_parameters.py | 0 .../keyvault/models/key_import_parameters.py | 0 .../azure/keyvault/models/key_item.py | 0 .../azure/keyvault/models/key_item_paged.py | 0 .../keyvault/models/key_operation_result.py | 0 .../models/key_operations_parameters.py | 0 .../azure/keyvault/models/key_properties.py | 0 .../keyvault/models/key_restore_parameters.py | 0 .../keyvault/models/key_sign_parameters.py | 0 .../keyvault/models/key_update_parameters.py | 0 .../keyvault/models/key_vault_client_enums.py | 0 .../azure/keyvault/models/key_vault_error.py | 0 .../keyvault/models/key_verify_parameters.py | 0 .../keyvault/models/key_verify_result.py | 0 .../azure/keyvault/models/lifetime_action.py | 0 .../keyvault/models/organization_details.py | 0 ...ding_certificate_signing_request_result.py | 0 .../models/sas_definition_attributes.py | 0 .../keyvault/models/sas_definition_bundle.py | 0 .../sas_definition_create_parameters.py | 0 .../keyvault/models/sas_definition_item.py | 0 .../models/sas_definition_item_paged.py | 0 .../sas_definition_update_parameters.py | 0 .../keyvault/models/secret_attributes.py | 0 .../azure/keyvault/models/secret_bundle.py | 0 .../azure/keyvault/models/secret_item.py | 0 .../keyvault/models/secret_item_paged.py | 0 .../keyvault/models/secret_properties.py | 0 .../models/secret_restore_parameters.py | 0 .../keyvault/models/secret_set_parameters.py | 0 .../models/secret_update_parameters.py | 0 .../models/storage_account_attributes.py | 0 .../storage_account_create_parameters.py | 0 .../keyvault/models/storage_account_item.py | 0 .../models/storage_account_item_paged.py | 0 ...torage_account_regenerte_key_parameters.py | 0 .../storage_account_update_parameters.py | 0 .../azure/keyvault/models/storage_bundle.py | 0 .../models/subject_alternative_names.py | 0 .../azure/keyvault/models/trigger.py | 0 .../models/x509_certificate_properties.py | 0 azure-keyvault/azure/keyvault/version.py | 0 azure-keyvault/build.json | 755 +++++++++++++++++- 84 files changed, 752 insertions(+), 3 deletions(-) mode change 100755 => 100644 azure-keyvault/azure/keyvault/key_vault_client.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/__init__.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/action.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/administrator_details.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/attributes.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/backup_key_result.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/backup_secret_result.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_attributes.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_bundle.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_create_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_import_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_issuer_item.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_issuer_item_paged.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_item.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_item_paged.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_merge_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_operation.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_policy.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/certificate_update_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/contact.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/contacts.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/deleted_certificate_bundle.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/deleted_certificate_item.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/deleted_certificate_item_paged.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/deleted_key_bundle.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/deleted_key_item.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/deleted_key_item_paged.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/deleted_secret_bundle.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/deleted_secret_item.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/deleted_secret_item_paged.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/error.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/issuer_attributes.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/issuer_bundle.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/issuer_credentials.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/issuer_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/json_web_key.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_attributes.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_bundle.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_create_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_import_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_item.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_item_paged.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_operation_result.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_operations_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_properties.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_restore_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_sign_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_update_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_vault_client_enums.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_vault_error.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_verify_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/key_verify_result.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/lifetime_action.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/organization_details.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/pending_certificate_signing_request_result.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/sas_definition_attributes.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/sas_definition_bundle.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/sas_definition_create_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/sas_definition_item.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/sas_definition_item_paged.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/sas_definition_update_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/secret_attributes.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/secret_bundle.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/secret_item.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/secret_item_paged.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/secret_properties.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/secret_restore_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/secret_set_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/secret_update_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/storage_account_attributes.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/storage_account_create_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/storage_account_item.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/storage_account_item_paged.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/storage_account_update_parameters.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/storage_bundle.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/subject_alternative_names.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/trigger.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/models/x509_certificate_properties.py mode change 100755 => 100644 azure-keyvault/azure/keyvault/version.py 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 diff --git a/azure-keyvault/azure/keyvault/models/__init__.py b/azure-keyvault/azure/keyvault/models/__init__.py old mode 100755 new mode 100644 diff --git a/azure-keyvault/azure/keyvault/models/action.py b/azure-keyvault/azure/keyvault/models/action.py old mode 100755 new mode 100644 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 diff --git a/azure-keyvault/azure/keyvault/models/attributes.py b/azure-keyvault/azure/keyvault/models/attributes.py old mode 100755 new mode 100644 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 diff --git a/azure-keyvault/azure/keyvault/models/contact.py b/azure-keyvault/azure/keyvault/models/contact.py old mode 100755 new mode 100644 diff --git a/azure-keyvault/azure/keyvault/models/contacts.py b/azure-keyvault/azure/keyvault/models/contacts.py old mode 100755 new mode 100644 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 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 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 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 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 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 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 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 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 diff --git a/azure-keyvault/azure/keyvault/models/error.py b/azure-keyvault/azure/keyvault/models/error.py old mode 100755 new mode 100644 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 diff --git a/azure-keyvault/azure/keyvault/models/trigger.py b/azure-keyvault/azure/keyvault/models/trigger.py old mode 100755 new mode 100644 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 diff --git a/azure-keyvault/azure/keyvault/version.py b/azure-keyvault/azure/keyvault/version.py old mode 100755 new mode 100644 diff --git a/azure-keyvault/build.json b/azure-keyvault/build.json index d978484e0944..801b4569ba59 100644 --- a/azure-keyvault/build.json +++ b/azure-keyvault/build.json @@ -1,5 +1,754 @@ { - "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.4251", + "engines": { + "node": ">=7.10.0" + }, + "dependencies": {}, + "optionalDependencies": {}, + "devDependencies": { + "@types/commonmark": "^0.27.0", + "@types/js-yaml": "^3.10.0", + "@types/jsonpath": "^0.1.29", + "@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": "^4.0.1", + "mocha-typescript": "^1.1.7", + "shx": "0.2.2", + "static-link": "^0.2.3", + "vscode-jsonrpc": "^3.3.1" + }, + "bundleDependencies": false, + "peerDependencies": {}, + "deprecated": false, + "_resolved": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", + "_integrity": null, + "_shasum": "09bef8c85929eb24b35771f6c8e7ae7a59b5e761", + "_shrinkwrap": null, + "bin": { + "autorest-core": "./dist/app.js", + "autorest-language-service": "dist/language-service/language-service.js" + }, + "_id": "@microsoft.azure/autorest-core@2.0.4251", + "_from": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", + "_requested": { + "type": "directory", + "where": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", + "raw": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", + "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", + "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", + "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core" + }, + "_spec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", + "_where": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core" + }, + "extensionManager": { + "installationPath": "/tmp/.autorest", + "sharedLock": { + "name": "/tmp/.autorest", + "exclusiveLock": { + "name": "_tmp_.autorest.exclusive-lock", + "options": { + "port": 5245, + "host": "2130716018", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + }, + "busyLock": { + "name": "_tmp_.autorest.busy-lock", + "options": { + "port": 46071, + "host": "2130735832", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + }, + "personalLock": { + "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "options": { + "port": 45556, + "host": "2130737852", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + }, + "file": "/tmp/_tmp_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/tmp/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/autorest-core", + "version": "2.0.4254", + "engines": { + "node": ">=7.10.0" + }, + "dependencies": {}, + "optionalDependencies": {}, + "devDependencies": { + "@types/commonmark": "^0.27.0", + "@types/js-yaml": "^3.10.0", + "@types/jsonpath": "^0.1.29", + "@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": "^4.0.1", + "mocha-typescript": "^1.1.7", + "shx": "0.2.2", + "static-link": "^0.2.3", + "vscode-jsonrpc": "^3.3.1" + }, + "bundleDependencies": false, + "peerDependencies": {}, + "deprecated": false, + "_resolved": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", + "_integrity": null, + "_shasum": "415f00de881e2377be59ae87eb91f9aa3ad47e27", + "_shrinkwrap": null, + "bin": { + "autorest-core": "./dist/app.js", + "autorest-language-service": "dist/language-service/language-service.js" + }, + "_id": "@microsoft.azure/autorest-core@2.0.4254", + "_from": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", + "_requested": { + "type": "directory", + "where": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", + "raw": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", + "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", + "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", + "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core" + }, + "_spec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", + "_where": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core" + }, + "extensionManager": { + "installationPath": "/tmp/.autorest", + "sharedLock": { + "name": "/tmp/.autorest", + "exclusiveLock": { + "name": "_tmp_.autorest.exclusive-lock", + "options": { + "port": 5245, + "host": "2130716018", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + }, + "busyLock": { + "name": "_tmp_.autorest.busy-lock", + "options": { + "port": 46071, + "host": "2130735832", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + }, + "personalLock": { + "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "options": { + "port": 45556, + "host": "2130737852", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + }, + "file": "/tmp/_tmp_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/tmp/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/autorest-core", + "version": "2.0.4255", + "engines": { + "node": ">=7.10.0" + }, + "dependencies": {}, + "optionalDependencies": {}, + "devDependencies": { + "@types/commonmark": "^0.27.0", + "@types/js-yaml": "^3.10.0", + "@types/jsonpath": "^0.1.29", + "@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": "^4.0.1", + "mocha-typescript": "^1.1.7", + "shx": "0.2.2", + "static-link": "^0.2.3", + "vscode-jsonrpc": "^3.3.1" + }, + "bundleDependencies": false, + "peerDependencies": {}, + "deprecated": false, + "_resolved": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", + "_integrity": null, + "_shasum": "fefc7a80d07418f6feb6e686932021d0615e5033", + "_shrinkwrap": null, + "bin": { + "autorest-core": "./dist/app.js", + "autorest-language-service": "dist/language-service/language-service.js" + }, + "_id": "@microsoft.azure/autorest-core@2.0.4255", + "_from": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", + "_requested": { + "type": "directory", + "where": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", + "raw": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", + "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", + "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", + "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core" + }, + "_spec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", + "_where": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core" + }, + "extensionManager": { + "installationPath": "/tmp/.autorest", + "sharedLock": { + "name": "/tmp/.autorest", + "exclusiveLock": { + "name": "_tmp_.autorest.exclusive-lock", + "options": { + "port": 5245, + "host": "2130716018", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + }, + "busyLock": { + "name": "_tmp_.autorest.busy-lock", + "options": { + "port": 46071, + "host": "2130735832", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + }, + "personalLock": { + "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "options": { + "port": 45556, + "host": "2130737852", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + }, + "file": "/tmp/_tmp_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/tmp/.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": "/tmp/.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:/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "_requested": { + "type": "directory", + "where": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "raw": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler" + }, + "_spec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "_where": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler" + }, + "extensionManager": { + "installationPath": "/tmp/.autorest", + "sharedLock": { + "name": "/tmp/.autorest", + "exclusiveLock": { + "name": "_tmp_.autorest.exclusive-lock", + "options": { + "port": 5245, + "host": "2130716018", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + }, + "busyLock": { + "name": "_tmp_.autorest.busy-lock", + "options": { + "port": 46071, + "host": "2130735832", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + }, + "personalLock": { + "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "options": { + "port": 45556, + "host": "2130737852", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + }, + "file": "/tmp/_tmp_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/tmp/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/autorest.modeler", + "version": "2.3.38", + "dependencies": { + "dotnet-2.0.0": "^1.4.4" + }, + "optionalDependencies": {}, + "devDependencies": { + "@microsoft.azure/autorest.testserver": "2.3.1", + "autorest": "^2.0.4201", + "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": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", + "_integrity": null, + "_shasum": "903bb77932e4ed1b8bc3b25cc39b167143494f6c", + "_shrinkwrap": null, + "bin": null, + "_id": "@microsoft.azure/autorest.modeler@2.3.38", + "_from": "file:/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", + "_requested": { + "type": "directory", + "where": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", + "raw": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", + "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", + "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", + "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler" + }, + "_spec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", + "_where": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler" + }, + "extensionManager": { + "installationPath": "/tmp/.autorest", + "sharedLock": { + "name": "/tmp/.autorest", + "exclusiveLock": { + "name": "_tmp_.autorest.exclusive-lock", + "options": { + "port": 5245, + "host": "2130716018", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + }, + "busyLock": { + "name": "_tmp_.autorest.busy-lock", + "options": { + "port": 46071, + "host": "2130735832", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + }, + "personalLock": { + "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "options": { + "port": 45556, + "host": "2130737852", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + }, + "file": "/tmp/_tmp_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/tmp/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/autorest.python", + "version": "2.1.38", + "dependencies": { + "dotnet-2.0.0": "^1.4.4" + }, + "optionalDependencies": {}, + "devDependencies": { + "@microsoft.azure/autorest.testserver": "^2.3.13", + "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": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", + "_integrity": null, + "_shasum": "efedbbb4c508ff08b3c83a5e9e2020598cae97b4", + "_shrinkwrap": null, + "bin": null, + "_id": "@microsoft.azure/autorest.python@2.1.38", + "_from": "file:/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", + "_requested": { + "type": "directory", + "where": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", + "raw": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", + "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", + "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", + "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python" + }, + "_spec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", + "_where": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python" + }, + "extensionManager": { + "installationPath": "/tmp/.autorest", + "sharedLock": { + "name": "/tmp/.autorest", + "exclusiveLock": { + "name": "_tmp_.autorest.exclusive-lock", + "options": { + "port": 5245, + "host": "2130716018", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + }, + "busyLock": { + "name": "_tmp_.autorest.busy-lock", + "options": { + "port": 46071, + "host": "2130735832", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + }, + "personalLock": { + "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "options": { + "port": 45556, + "host": "2130737852", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + }, + "file": "/tmp/_tmp_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/tmp/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/autorest.python", + "version": "2.1.39", + "dependencies": { + "dotnet-2.0.0": "^1.4.4" + }, + "optionalDependencies": {}, + "devDependencies": { + "@microsoft.azure/autorest.testserver": "2.3.25", + "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": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", + "_integrity": null, + "_shasum": "44036c8f89647897798cea05f5502d1b75b5b949", + "_shrinkwrap": null, + "bin": null, + "_id": "@microsoft.azure/autorest.python@2.1.39", + "_from": "file:/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", + "_requested": { + "type": "directory", + "where": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", + "raw": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", + "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", + "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", + "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python" + }, + "_spec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", + "_where": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python" + }, + "extensionManager": { + "installationPath": "/tmp/.autorest", + "sharedLock": { + "name": "/tmp/.autorest", + "exclusiveLock": { + "name": "_tmp_.autorest.exclusive-lock", + "options": { + "port": 5245, + "host": "2130716018", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + }, + "busyLock": { + "name": "_tmp_.autorest.busy-lock", + "options": { + "port": 46071, + "host": "2130735832", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + }, + "personalLock": { + "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "options": { + "port": 45556, + "host": "2130737852", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + }, + "file": "/tmp/_tmp_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/tmp/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/classic-openapi-validator", + "version": "1.0.9", + "dependencies": { + "dotnet-2.0.0": "^1.1.0" + }, + "optionalDependencies": {}, + "devDependencies": { + "dotnet-sdk-2.0.0": "^1.1.1" + }, + "bundleDependencies": false, + "peerDependencies": {}, + "deprecated": false, + "_resolved": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", + "_integrity": null, + "_shasum": "554be1db3e054b0a0e4e51c842ff5b7c6a60784c", + "_shrinkwrap": null, + "bin": null, + "_id": "@microsoft.azure/classic-openapi-validator@1.0.9", + "_from": "file:/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", + "_requested": { + "type": "directory", + "where": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", + "raw": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", + "rawSpec": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", + "saveSpec": "file:/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", + "fetchSpec": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator" + }, + "_spec": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", + "_where": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator" + }, + "extensionManager": { + "installationPath": "/tmp/.autorest", + "sharedLock": { + "name": "/tmp/.autorest", + "exclusiveLock": { + "name": "_tmp_.autorest.exclusive-lock", + "options": { + "port": 5245, + "host": "2130716018", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + }, + "busyLock": { + "name": "_tmp_.autorest.busy-lock", + "options": { + "port": 46071, + "host": "2130735832", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + }, + "personalLock": { + "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "options": { + "port": 45556, + "host": "2130737852", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + }, + "file": "/tmp/_tmp_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/tmp/.autorest" + }, + { + "resolvedInfo": null, + "packageMetadata": { + "name": "@microsoft.azure/openapi-validator", + "version": "1.0.2", + "dependencies": { + "fs": "^0.0.1-security", + "js-yaml": "^3.8.4", + "jsonpath": "^0.2.11", + "vscode-jsonrpc": "^3.2.0" + }, + "optionalDependencies": {}, + "devDependencies": { + "@types/js-yaml": "^3.5.30", + "@types/jsonpath": "^0.1.29", + "@types/node": "^7.0.18", + "gulp": "3.9.1", + "gulp-clean": "0.3.2", + "gulp-dotnet-cli": "0.4.0", + "gulp-mocha": "4.3.1", + "gulp-run": "1.7.1", + "mocha": "3.2.0", + "mocha-typescript": "1.0.22", + "typescript": "2.3.3" + }, + "bundleDependencies": false, + "peerDependencies": {}, + "deprecated": false, + "_resolved": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", + "_integrity": null, + "_shasum": "352190e6dbb4a1d16587b39e589b9615d6e4aaaf", + "_shrinkwrap": null, + "bin": null, + "_id": "@microsoft.azure/openapi-validator@1.0.2", + "_from": "file:/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", + "_requested": { + "type": "directory", + "where": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", + "raw": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", + "rawSpec": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", + "saveSpec": "file:/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", + "fetchSpec": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator" + }, + "_spec": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", + "_where": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator" + }, + "extensionManager": { + "installationPath": "/tmp/.autorest", + "sharedLock": { + "name": "/tmp/.autorest", + "exclusiveLock": { + "name": "_tmp_.autorest.exclusive-lock", + "options": { + "port": 5245, + "host": "2130716018", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + }, + "busyLock": { + "name": "_tmp_.autorest.busy-lock", + "options": { + "port": 46071, + "host": "2130735832", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + }, + "personalLock": { + "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "options": { + "port": 45556, + "host": "2130737852", + "exclusive": true + }, + "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + }, + "file": "/tmp/_tmp_.autorest.lock" + }, + "dotnetPath": "/root/.dotnet" + }, + "installationPath": "/tmp/.autorest" + } + ], + "autorest_bootstrap": {} } \ No newline at end of file From 5c7f14053361a583a83a4766599945b5d0e2ee86 Mon Sep 17 00:00:00 2001 From: Azure SDK for Python bot Date: Tue, 6 Mar 2018 22:29:23 +0000 Subject: [PATCH 23/49] Generated from 026ea6558477ce3f27bc8b53f41ddae57ded7f30 [KeyVault] adding version 2018-02-14-preview with Network ACLs (#2538) * creating rest version 2018-02-14-preview from 2016-10-01 * adding network acls feature * updating readme.md with version 2018-02-14-preview * changing default version in the resource manager readme --- .../azure/mgmt/keyvault/__init__.py | 0 .../keyvault/key_vault_management_client.py | 23 +- .../azure/mgmt/keyvault/models/__init__.py | 36 ++ .../keyvault/models/access_policy_entry.py | 4 +- .../models/check_name_availability_result.py | 50 ++ .../mgmt/keyvault/models/deleted_vault.py | 4 +- .../keyvault/models/deleted_vault_paged.py | 2 +- .../models/deleted_vault_properties.py | 3 +- .../azure/mgmt/keyvault/models/ip_rule.py | 35 ++ .../key_vault_management_client_enums.py | 29 + .../mgmt/keyvault/models/log_specification.py | 36 ++ .../mgmt/keyvault/models/network_rule_set.py | 45 ++ .../azure/mgmt/keyvault/models/operation.py | 42 ++ .../mgmt/keyvault/models/operation_display.py | 40 ++ .../mgmt/keyvault/models/operation_paged.py | 27 + .../azure/mgmt/keyvault/models/permissions.py | 14 +- .../azure/mgmt/keyvault/models/resource.py | 13 +- .../mgmt/keyvault/models/resource_paged.py | 2 +- .../keyvault/models/service_specification.py | 29 + .../azure/mgmt/keyvault/models/sku.py | 3 +- .../azure/mgmt/keyvault/models/vault.py | 15 +- .../models/vault_access_policy_parameters.py | 55 ++ .../models/vault_access_policy_properties.py | 34 ++ ...ault_check_name_availability_parameters.py | 42 ++ .../vault_create_or_update_parameters.py | 6 +- .../azure/mgmt/keyvault/models/vault_paged.py | 2 +- .../keyvault/models/vault_patch_parameters.py | 32 ++ .../keyvault/models/vault_patch_properties.py | 82 +++ .../mgmt/keyvault/models/vault_properties.py | 37 +- .../keyvault/models/virtual_network_rule.py | 34 ++ .../mgmt/keyvault/operations/__init__.py | 2 + .../mgmt/keyvault/operations/operations.py | 99 ++++ .../keyvault/operations/vaults_operations.py | 532 +++++++++++++++--- .../azure/mgmt/keyvault/version.py | 3 +- 34 files changed, 1280 insertions(+), 132 deletions(-) mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/__init__.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/key_vault_management_client.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/__init__.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/access_policy_entry.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/check_name_availability_result.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_paged.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/ip_rule.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/key_vault_management_client_enums.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/network_rule_set.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_display.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_paged.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource_paged.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/service_specification.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_parameters.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_properties.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_check_name_availability_parameters.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_create_or_update_parameters.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_paged.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_parameters.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_properties.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/operations/__init__.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/operations/operations.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py mode change 100755 => 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/version.py 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..24cca05abd1a --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/key_vault_management_client.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/key_vault_management_client.py @@ -14,6 +14,7 @@ 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,14 +40,12 @@ 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 @@ -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 """ @@ -79,9 +80,11 @@ def __init__( self._client = ServiceClient(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-preview' 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..58dac299a951 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/__init__.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/__init__.py @@ -12,15 +12,29 @@ 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 +42,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..2b4ccd6fb4cb --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/access_policy_entry.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/access_policy_entry.py @@ -28,8 +28,7 @@ class AccessPolicyEntry(Model): :type application_id: str :param permissions: Permissions the identity has for keys, secrets and certificates. - :type permissions: :class:`Permissions - ` + :type permissions: ~azure.mgmt.keyvault.models.Permissions """ _validation = { @@ -46,6 +45,7 @@ class AccessPolicyEntry(Model): } def __init__(self, tenant_id, object_id, permissions, application_id=None): + super(AccessPolicyEntry, self).__init__() self.tenant_id = tenant_id self.object_id = object_id self.application_id = application_id 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..6e8d8b5a2a9b --- /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): + super(CheckNameAvailabilityResult, self).__init__() + 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..7b49d29ed836 --- 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 = { @@ -43,6 +42,7 @@ class DeletedVault(Model): } def __init__(self, properties=None): + super(DeletedVault, self).__init__() self.id = None self.name = None self.type = 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..3247a439d946 --- 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 = { @@ -47,6 +47,7 @@ class DeletedVaultProperties(Model): } def __init__(self): + super(DeletedVaultProperties, self).__init__() self.vault_id = None self.location = None self.deletion_date = None 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..4e8dd1fdfc34 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/ip_rule.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 IPRule(Model): + """A rule governing the accesibility of a vault from a specific ip address or + ip range. + + :param value: 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): + super(IPRule, self).__init__() + 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..871b034f2215 --- 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 @@ -76,6 +76,10 @@ class StoragePermissions(Enum): set = "set" update = "update" regeneratekey = "regeneratekey" + recover = "recover" + purge = "purge" + backup = "backup" + restore = "restore" setsas = "setsas" listsas = "listsas" getsas = "getsas" @@ -86,3 +90,28 @@ class CreateMode(Enum): recover = "recover" default = "default" + + +class NetworkRuleBypassOptions(Enum): + + azure_services = "AzureServices" + none = "None" + + +class NetworkRuleAction(Enum): + + allow = "Allow" + deny = "Deny" + + +class Reason(Enum): + + account_name_invalid = "AccountNameInvalid" + already_exists = "AlreadyExists" + + +class AccessPolicyUpdateKind(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..1c4e46d69fbd --- /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, name=None, display_name=None, blob_duration=None): + super(LogSpecification, self).__init__() + 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..ff6a68c37bc0 --- /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, bypass=None, default_action=None, ip_rules=None, virtual_network_rules=None): + super(NetworkRuleSet, self).__init__() + 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..27e52fdb7f54 --- /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, name=None, display=None, origin=None, service_specification=None): + super(Operation, self).__init__() + self.name = name + self.display = display + self.origin = origin + self.service_specification = service_specification 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..ccb8d7adee3a --- /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, provider=None, resource=None, operation=None, description=None): + super(OperationDisplay, self).__init__() + 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/permissions.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions.py old mode 100755 new mode 100644 index 1990a3986c85..25d73401a680 --- 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 = { @@ -37,6 +34,7 @@ class Permissions(Model): } def __init__(self, keys=None, secrets=None, certificates=None, storage=None): + super(Permissions, self).__init__() self.keys = keys self.secrets = secrets self.certificates = certificates 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..9d91463bfeee --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource.py @@ -20,20 +20,20 @@ class Resource(Model): :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. :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 +46,10 @@ class Resource(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, name, location, tags=None): + def __init__(self, location, tags=None): + super(Resource, self).__init__() self.id = None - self.name = name + self.name = None self.type = None self.location = location self.tags = tags 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/service_specification.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/service_specification.py new file mode 100644 index 000000000000..a4fa109f9243 --- /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, log_specifications=None): + super(ServiceSpecification, self).__init__() + 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..69a4758e155f --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku.py @@ -22,7 +22,7 @@ class Sku(Model): :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 ` + :type name: str or ~azure.mgmt.keyvault.models.SkuName """ _validation = { @@ -38,4 +38,5 @@ class Sku(Model): family = "A" def __init__(self, name): + super(Sku, self).__init__() 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..c47e0d8b68e0 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault.py @@ -20,23 +20,22 @@ class Vault(Resource): :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. :type location: str :param tags: The tags that will be assigned to the key vault. - :type tags: dict + :type tags: dict[str, str] :param properties: Properties of the vault - :type properties: :class:`VaultProperties - ` + :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 +50,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) + def __init__(self, location, properties, tags=None): + super(Vault, self).__init__(location=location, tags=tags) self.properties = properties 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..65667c484b09 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_parameters.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 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. + + :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: 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): + super(VaultAccessPolicyParameters, self).__init__() + 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..2c93c6b466aa --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_properties.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 VaultAccessPolicyProperties(Model): + """Properties of the vault access policy. + + :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] + """ + + _validation = { + 'access_policies': {'required': True}, + } + + _attribute_map = { + 'access_policies': {'key': 'accessPolicies', 'type': '[AccessPolicyEntry]'}, + } + + def __init__(self, access_policies): + super(VaultAccessPolicyProperties, self).__init__() + 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..ff2b7e738674 --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_check_name_availability_parameters.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 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. + + :param name: The vault name. + :type name: str + :ivar type: 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): + super(VaultCheckNameAvailabilityParameters, self).__init__() + 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..8e5a87895bf7 --- 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 @@ -19,10 +19,9 @@ class VaultCreateOrUpdateParameters(Model): 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] :param properties: Properties of the vault - :type properties: :class:`VaultProperties - ` + :type properties: ~azure.mgmt.keyvault.models.VaultProperties """ _validation = { @@ -37,6 +36,7 @@ class VaultCreateOrUpdateParameters(Model): } def __init__(self, location, properties, tags=None): + super(VaultCreateOrUpdateParameters, self).__init__() 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..ada3e9a9c58d --- /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, tags=None, properties=None): + super(VaultPatchParameters, self).__init__() + 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..22d3a0b8c88b --- /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, tenant_id=None, sku=None, access_policies=None, enabled_for_deployment=None, enabled_for_disk_encryption=None, enabled_for_template_deployment=None, enable_soft_delete=None, create_mode=None, enable_purge_protection=None, network_acls=None): + super(VaultPatchProperties, self).__init__() + 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..485014e41ac5 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py @@ -15,19 +15,21 @@ class VaultProperties(Model): """Properties of the vault. + Variables are only populated by the server, and will be ignored when + sending a request. + :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: :class:`Sku ` + :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 - ` - :param vault_uri: The URI of the vault for performing operations on keys + :type access_policies: list[~azure.mgmt.keyvault.models.AccessPolicyEntry] + :ivar vault_uri: The URI of the vault for performing operations on keys and secrets. - :type vault_uri: str + :vartype 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. @@ -45,14 +47,24 @@ 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}, + 'vault_uri': {'readonly': True}, } _attribute_map = { @@ -65,15 +77,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): + def __init__(self, tenant_id, sku, access_policies=None, enabled_for_deployment=None, enabled_for_disk_encryption=None, enabled_for_template_deployment=None, enable_soft_delete=None, create_mode=None, enable_purge_protection=None, network_acls=None): + super(VaultProperties, self).__init__() self.tenant_id = tenant_id self.sku = sku self.access_policies = access_policies - self.vault_uri = vault_uri + self.vault_uri = None 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/virtual_network_rule.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule.py new file mode 100644 index 000000000000..f99d02ada8fd --- /dev/null +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule.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 VirtualNetworkRule(Model): + """A rule governing the accesibility of a vault from a specific virtual + network. + + :param id: 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): + super(VirtualNetworkRule, self).__init__() + 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..69c98653aba2 --- /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-preview". + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self.api_version = "2018-02-14-preview" + + 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..e13133a7f284 --- 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 msrest.exceptions import DeserializationError from msrestazure.azure_operation import AzureOperationPoller -import uuid 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,6 +39,60 @@ def __init__(self, client, config, serializer, deserializer): self.config = config + + def _create_or_update_initial( + self, resource_group_name, vault_name, parameters, custom_headers=None, raw=False, **operation_config): + api_version = "2018-02-14-preview" + + # 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, **operation_config): """Create or update a key vault in the specified subscription. @@ -46,25 +103,98 @@ 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: returns the direct response alongside the + deserialized response + :return: An instance of AzureOperationPoller that returns Vault or + ClientRawResponse if raw=true + :rtype: + ~msrestazure.azure_operation.AzureOperationPoller[~azure.mgmt.keyvault.models.Vault] + or ~msrest.pipeline.ClientRawResponse + :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 + ) + if raw: + return raw_result + + # Construct and send request + def long_running_send(): + return raw_result.response + + def get_long_running_status(status_link, headers=None): + + request = self._client.get(status_link) + if headers: + request.headers.update(headers) + header_parameters = {} + header_parameters['x-ms-client-request-id'] = raw_result.response.request.headers['x-ms-client-request-id'] + return self._client.send( + request, header_parameters, stream=False, **operation_config) + + def get_long_running_output(response): + + if response.status_code not in [200, 201]: + exp = CloudError(response) + exp.request_id = response.headers.get('x-ms-request-id') + raise exp + + deserialized = self._deserialize('Vault', response) + + if raw: + client_raw_response = ClientRawResponse(deserialized, response) + return client_raw_response + + return deserialized + + long_running_operation_timeout = 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) + 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-preview" # 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 +214,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 +254,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-preview" # 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 +285,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 +295,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 +311,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-preview" # 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 +343,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 +360,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-preview" + + # 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 +458,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-preview" 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 +499,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-preview" + + 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 +589,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 +600,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-preview" 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 +638,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 +656,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 +671,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-preview" # 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 +703,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 +720,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-preview" # 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,18 +751,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) + if response.status_code not in [200, 202]: + exp = CloudError(response) + exp.request_id = response.headers.get('x-ms-request-id') + raise exp + + if raw: + client_raw_response = ClientRawResponse(None, response) + return client_raw_response + + 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 + :return: An instance of AzureOperationPoller that returns None or + ClientRawResponse if raw=true + :rtype: ~msrestazure.azure_operation.AzureOperationPoller[None] or + ~msrest.pipeline.ClientRawResponse + :raises: :class:`CloudError` + """ + raw_result = self._purge_deleted_initial( + vault_name=vault_name, + location=location, + custom_headers=custom_headers, + raw=True, + **operation_config + ) + if raw: + return raw_result + + # Construct and send request + def long_running_send(): + return raw_result.response def get_long_running_status(status_link, headers=None): request = self._client.get(status_link) if headers: request.headers.update(headers) + header_parameters = {} + header_parameters['x-ms-client-request-id'] = raw_result.response.request.headers['x-ms-client-request-id'] return self._client.send( - request, header_parameters, **operation_config) + request, header_parameters, stream=False, **operation_config) def get_long_running_output(response): @@ -501,16 +816,13 @@ def get_long_running_output(response): 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( '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) + 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 +836,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 +847,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 +877,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 +895,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-preview" + + # 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..87c0945cd98a --- 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 = "2018-02-14-preview" From 505ef8c7a64643400dd33fc9064e5bb4701e22f6 Mon Sep 17 00:00:00 2001 From: Azure SDK for Python bot Date: Tue, 6 Mar 2018 23:31:46 +0000 Subject: [PATCH 24/49] Generated from 4a9da431e52626982de1ba1f52e997f7e1989967 updating python lib version in rm readme.md --- .../azure/mgmt/keyvault/models/vault_properties.py | 12 ++++-------- azure-mgmt-keyvault/azure/mgmt/keyvault/version.py | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py index 485014e41ac5..d903a7d93145 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py @@ -15,9 +15,6 @@ class VaultProperties(Model): """Properties of the vault. - Variables are only populated by the server, and will be ignored when - sending a request. - :param tenant_id: The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. :type tenant_id: str @@ -27,9 +24,9 @@ class VaultProperties(Model): 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] - :ivar vault_uri: The URI of the vault for performing operations on keys + :param vault_uri: The URI of the vault for performing operations on keys and secrets. - :vartype vault_uri: str + :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. @@ -64,7 +61,6 @@ class VaultProperties(Model): _validation = { 'tenant_id': {'required': True}, 'sku': {'required': True}, - 'vault_uri': {'readonly': True}, } _attribute_map = { @@ -81,12 +77,12 @@ class VaultProperties(Model): 'network_acls': {'key': 'networkAcls', 'type': 'NetworkRuleSet'}, } - def __init__(self, tenant_id, sku, access_policies=None, enabled_for_deployment=None, enabled_for_disk_encryption=None, enabled_for_template_deployment=None, enable_soft_delete=None, create_mode=None, enable_purge_protection=None, network_acls=None): + 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, enable_purge_protection=None, network_acls=None): super(VaultProperties, self).__init__() self.tenant_id = tenant_id self.sku = sku self.access_policies = access_policies - self.vault_uri = None + 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 diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py index 87c0945cd98a..7cc8dceb7a1e 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "2018-02-14-preview" +VERSION = "1.0.0a2" From 6bbd6c05344bac8d5135f045ba88304aeb96ed6b Mon Sep 17 00:00:00 2001 From: Azure SDK for Python bot Date: Wed, 7 Mar 2018 00:40:10 +0000 Subject: [PATCH 25/49] Generated from 85da3965e190f9c0d14e1a55faec3eb763adfd30 Mgmt swagger fixes (#2603) * removing errantly added readonly property * updating python lib version in rm readme.md --- .../azure/mgmt/keyvault/models/vault_properties.py | 12 ++++-------- azure-mgmt-keyvault/azure/mgmt/keyvault/version.py | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py index 485014e41ac5..d903a7d93145 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py @@ -15,9 +15,6 @@ class VaultProperties(Model): """Properties of the vault. - Variables are only populated by the server, and will be ignored when - sending a request. - :param tenant_id: The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. :type tenant_id: str @@ -27,9 +24,9 @@ class VaultProperties(Model): 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] - :ivar vault_uri: The URI of the vault for performing operations on keys + :param vault_uri: The URI of the vault for performing operations on keys and secrets. - :vartype vault_uri: str + :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. @@ -64,7 +61,6 @@ class VaultProperties(Model): _validation = { 'tenant_id': {'required': True}, 'sku': {'required': True}, - 'vault_uri': {'readonly': True}, } _attribute_map = { @@ -81,12 +77,12 @@ class VaultProperties(Model): 'network_acls': {'key': 'networkAcls', 'type': 'NetworkRuleSet'}, } - def __init__(self, tenant_id, sku, access_policies=None, enabled_for_deployment=None, enabled_for_disk_encryption=None, enabled_for_template_deployment=None, enable_soft_delete=None, create_mode=None, enable_purge_protection=None, network_acls=None): + 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, enable_purge_protection=None, network_acls=None): super(VaultProperties, self).__init__() self.tenant_id = tenant_id self.sku = sku self.access_policies = access_policies - self.vault_uri = None + 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 diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py index 87c0945cd98a..7cc8dceb7a1e 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "2018-02-14-preview" +VERSION = "1.0.0a2" From 694eec61926f73e5ce2549ef622d7f97fac50b1b Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 6 Mar 2018 16:43:14 -0800 Subject: [PATCH 26/49] updating tests and recordings for api version changes --- azure-mgmt/tests/keyvault_testcase.py | 5 +- ...ync_request_cancellation_and_deletion.yaml | 2 +- ...ta.test_certificate_recover_and_purge.yaml | 8 +-- ...data.test_iterate_empty_list_commands.yaml | 8 +-- ...ault_data.test_key_backup_and_restore.yaml | 12 ++-- ...vault_data.test_key_recover_and_purge.yaml | 16 ++--- ...y_vault_data.test_key_wrap_and_unwrap.yaml | 10 +-- ...lt_data.test_secret_recover_and_purge.yaml | 64 +++++++++---------- azure-mgmt/tests/test_mgmt_keyvault.py | 2 +- 9 files changed, 62 insertions(+), 65 deletions(-) diff --git a/azure-mgmt/tests/keyvault_testcase.py b/azure-mgmt/tests/keyvault_testcase.py index 75398f04fcf1..2c8e18b32464 100644 --- a/azure-mgmt/tests/keyvault_testcase.py +++ b/azure-mgmt/tests/keyvault_testcase.py @@ -199,10 +199,7 @@ def create_vault(self, group_name, vault_name, permissions=None, enabled_for_dep 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) + vault = self.mgmt_client.vaults.create_or_update(group_name, vault_name, parameters).result() return vault 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 index 71ed66a720a3..74b17f3a9031 100644 --- 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 @@ -54,7 +54,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest/providers/Microsoft.KeyVault/vaults/pytest-shared-vault?api-version=2018-02-14-preview 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: 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 index 4b8f45bdeee1..13d7e76b2fb7 100644 --- 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 @@ -23,7 +23,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -571,7 +571,7 @@ interactions: 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 + 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=2018-02-14-preview response: body: {string: ''} headers: @@ -604,7 +604,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-626b1626/purge?api-version=2018-02-14-preview response: body: {string: ''} headers: @@ -612,7 +612,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzc5NjA3NTQwNDczMXw3MUI4NDEwM0IxNDU0QTNDOUFGMDdDRUQ2OEIyNkU4RQ?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] 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 index 4ce797e547ba..144f72df4560 100644 --- 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 @@ -22,7 +22,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -69,7 +69,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -147,7 +147,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -224,7 +224,7 @@ interactions: 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 + 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=2018-02-14-preview 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: 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 index 06bbedf67487..3ea4aee7d617 100644 --- 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 @@ -42,7 +42,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzYzOTA5ODgyMjU3MXw1MTg1MTdEOTQ4Mzk0MUFBQjc2NzVFRTAzNDM1OTc3OQ?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 16:38:28Z","status":"NotStarted"}'} headers: @@ -51,7 +51,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzYzOTA5ODgyMjU3MXw1MTg1MTdEOTQ4Mzk0MUFBQjc2NzVFRTAzNDM1OTc3OQ?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -248,7 +248,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest/providers/Microsoft.KeyVault/vaults/pytest-shared-vault?api-version=2018-02-14-preview 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: @@ -283,7 +283,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NTc1MDE2MjQ2NnwwRTAxREE2Q0JGQkQ0MzFDODFGNUU3NkJDOEExRjFDNw?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 16:49:34Z","status":"NotStarted"}'} headers: @@ -292,7 +292,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NTc1MDE2MjQ2NnwwRTAxREE2Q0JGQkQ0MzFDODFGNUU3NkJDOEExRjFDNw?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -318,7 +318,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NTc1MDE2MjQ2NnwwRTAxREE2Q0JGQkQ0MzFDODFGNUU3NkJDOEExRjFDNw?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 16:49:34Z","lastActionDateTime":"2017-06-06 16:49:46Z","status":"Succeeded"}'} 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 index d43263fa28e5..bf26122f1bcb 100644 --- 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 @@ -23,7 +23,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -501,7 +501,7 @@ interactions: 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 + 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=2018-02-14-preview response: body: {string: ''} headers: @@ -534,7 +534,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-bddb12ec/purge?api-version=2018-02-14-preview response: body: {string: ''} headers: @@ -542,7 +542,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0MDM1MjMzNzkyOHxEREQyMkRBQUFFQTA0NDdFQUIwMzg2NDNDQ0QzRDIyNg?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -580,7 +580,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -1058,7 +1058,7 @@ interactions: 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 + 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=2018-02-14-preview response: body: {string: ''} headers: @@ -1091,7 +1091,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-bddb12ec/purge?api-version=2018-02-14-preview response: body: {string: ''} headers: @@ -1099,7 +1099,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] 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 index c7508326b925..c6ee341e13dd 100644 --- 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 @@ -288,7 +288,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azkv-pytest/providers/Microsoft.KeyVault/vaults/pytest-shared-vault?api-version=2018-02-14-preview 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: @@ -323,7 +323,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY2OTkyODkxMjU2Nnw2QUU5Nzg3M0QwREY0RDU5ODhBMzQ5NzcwNjcyREU3OA?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 17:29:51Z","status":"NotStarted"}'} headers: @@ -332,7 +332,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY2OTkyODkxMjU2Nnw2QUU5Nzg3M0QwREY0RDU5ODhBMzQ5NzcwNjcyREU3OA?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -358,7 +358,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY2OTkyODkxMjU2Nnw2QUU5Nzg3M0QwREY0RDU5ODhBMzQ5NzcwNjcyREU3OA?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 17:29:51Z","status":"NotStarted"}'} headers: @@ -367,7 +367,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY2OTkyODkxMjU2Nnw2QUU5Nzg3M0QwREY0RDU5ODhBMzQ5NzcwNjcyREU3OA?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] 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 index 11d546a59a1d..e3635409a6eb 100644 --- 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 @@ -23,7 +23,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -501,7 +501,7 @@ interactions: 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 + 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=2018-02-14-preview response: body: {string: ''} headers: @@ -534,7 +534,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-f91a1429/purge?api-version=2018-02-14-preview response: body: {string: ''} headers: @@ -542,7 +542,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0MTcxMzQ1OTEyNHwwNjhFQkRGQUM0M0Y0ODNCODYwQjk0MUQ4Q0Q4MEY0MA?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -568,7 +568,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 16:50:57Z","status":"NotStarted"}'} headers: @@ -577,7 +577,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -615,7 +615,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -650,7 +650,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 16:50:57Z","status":"NotStarted"}'} headers: @@ -659,7 +659,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -685,7 +685,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NjU4MzMyOTc3NnxEQjExRDdBRTc0MUU0MDFDOTZFNENGRTg0QkNGNjlBNw?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 16:50:57Z","lastActionDateTime":"2017-06-06 16:51:21Z","status":"Succeeded"}'} @@ -1164,7 +1164,7 @@ interactions: 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 + 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=2018-02-14-preview response: body: {string: ''} headers: @@ -1197,7 +1197,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-f91a1429/purge?api-version=2018-02-14-preview response: body: {string: ''} headers: @@ -1205,7 +1205,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY0NzMxMzIwOTk0MXxENDMxQUIwMTZDNUE0OTk5QUVEMjA2QkM5RDA0MkFFNA?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -1243,7 +1243,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -1721,7 +1721,7 @@ interactions: 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 + 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=2018-02-14-preview response: body: {string: ''} headers: @@ -1754,7 +1754,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-f91a1429/purge?api-version=2018-02-14-preview response: body: {string: ''} headers: @@ -1762,7 +1762,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY3MDg5NTIyOTc5NnwxMjc2NzVBRjMzNTU0NzQ2OTZCRTYzQTVGNDdBOEJCRA?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -1788,7 +1788,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4NDEwNjU1NzQyOXxGQTUxOEU5ODQ2N0I0MTcwOUREMTE1RkJDQkE5MTYxQw?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 17:53:29Z","status":"NotStarted"}'} headers: @@ -1797,7 +1797,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4NDEwNjU1NzQyOXxGQTUxOEU5ODQ2N0I0MTcwOUREMTE1RkJDQkE5MTYxQw?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -1835,7 +1835,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -1870,7 +1870,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4NDEwNjU1NzQyOXxGQTUxOEU5ODQ2N0I0MTcwOUREMTE1RkJDQkE5MTYxQw?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 17:53:29Z","status":"NotStarted"}'} headers: @@ -1879,7 +1879,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4NDEwNjU1NzQyOXxGQTUxOEU5ODQ2N0I0MTcwOUREMTE1RkJDQkE5MTYxQw?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -2348,7 +2348,7 @@ interactions: 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 + 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=2018-02-14-preview response: body: {string: ''} headers: @@ -2381,7 +2381,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-f91a1429/purge?api-version=2018-02-14-preview response: body: {string: ''} headers: @@ -2389,7 +2389,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4NDczODk5MDg5NHw1MzQyOEZBQjI5OUU0QkEyOTlERDM2MjEyOUMyODM1Nw?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -2415,7 +2415,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4ODE4NTQyNTE3N3w0M0FCQjk5RkVBRTM0RjVGQTQxQzJEMDI5NzM2NUJCOA?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 18:00:17Z","status":"NotStarted"}'} headers: @@ -2424,7 +2424,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4ODE4NTQyNTE3N3w0M0FCQjk5RkVBRTM0RjVGQTQxQzJEMDI5NzM2NUJCOA?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] @@ -2462,7 +2462,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -2497,7 +2497,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4ODE4NTQyNTE3N3w0M0FCQjk5RkVBRTM0RjVGQTQxQzJEMDI5NzM2NUJCOA?api-version=2018-02-14-preview response: body: {string: '{"createdDateTime":"2017-06-06 18:00:17Z","lastActionDateTime":"2017-06-06 18:00:25Z","status":"Succeeded"}'} @@ -3038,7 +3038,7 @@ interactions: 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 + 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=2018-02-14-preview response: body: {string: ''} headers: @@ -3071,7 +3071,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/deletedVaults/vault-f91a1429/purge?api-version=2018-02-14-preview response: body: {string: ''} headers: @@ -3079,7 +3079,7 @@ interactions: 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'] + Location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault/locations/westus/operationResults/VVR8MDYzNjMyMzY4OTAzMTA4ODU0Mnw2MTdBQTIzREFDQjY0NUZDQkRBQjRFRDcwRjk4QjYzNg?api-version=2018-02-14-preview'] Pragma: [no-cache] Retry-After: ['0'] Server: [Microsoft-IIS/8.5] diff --git a/azure-mgmt/tests/test_mgmt_keyvault.py b/azure-mgmt/tests/test_mgmt_keyvault.py index a4796dfe4e8b..d1603589f92d 100644 --- a/azure-mgmt/tests/test_mgmt_keyvault.py +++ b/azure-mgmt/tests/test_mgmt_keyvault.py @@ -42,7 +42,7 @@ def test_vaults_operations(self): 'access_policies': [] } } - ) + ).result() self.assertEqual(vault.name, account_name) vault = self.keyvault_client.vaults.get( From 70aa6b03c3460d3b074f599a4741c7d0f5346bb6 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 6 Mar 2018 18:15:52 -0800 Subject: [PATCH 27/49] updating vault mgmt test recordings for new api version --- .../test_mgmt_keyvault.test_vaults_operations.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 index 2baf89075511..7fad5db8dc10 100644 --- a/azure-mgmt/tests/recordings/test_mgmt_keyvault.test_vaults_operations.yaml +++ b/azure-mgmt/tests/recordings/test_mgmt_keyvault.test_vaults_operations.yaml @@ -13,7 +13,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -48,7 +48,7 @@ interactions: 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 + 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=2018-02-14-preview 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: @@ -83,9 +83,9 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults?api-version=2018-02-14-preview 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"}'} + 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=2018-02-14-preview&$skiptoken=cHlrdjY4YjkxMTM4"}'} headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] @@ -118,7 +118,7 @@ interactions: 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 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_mgmt_keyvault_test_vaults_operations68b91138/providers/Microsoft.KeyVault/vaults?api-version=2018-02-14-preview&$skiptoken=cHlrdjY4YjkxMTM4 response: body: {string: '{"value":[]}'} headers: @@ -183,7 +183,7 @@ interactions: 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 + 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=2018-02-14-preview response: body: {string: ''} headers: From ba92c742352a44c1c76af38e3e2d75b8b9365709 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 27 Mar 2018 16:49:30 -0700 Subject: [PATCH 28/49] regenerated from 7.0-preview swagger --- .../azure/keyvault/key_vault_client.py | 141 +++++++++++++++++- .../azure/keyvault/models/__init__.py | 4 + .../models/backup_certificate_result.py | 35 +++++ .../models/certificate_restore_parameters.py | 33 ++++ .../keyvault/models/issuer_parameters.py | 7 +- .../models/x509_certificate_properties.py | 7 +- 6 files changed, 217 insertions(+), 10 deletions(-) create mode 100644 azure-keyvault/azure/keyvault/models/backup_certificate_result.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_restore_parameters.py diff --git a/azure-keyvault/azure/keyvault/key_vault_client.py b/azure-keyvault/azure/keyvault/key_vault_client.py index 53d415b8dc3d..0afc065344bd 100644 --- a/azure-keyvault/azure/keyvault/key_vault_client.py +++ b/azure-keyvault/azure/keyvault/key_vault_client.py @@ -3934,6 +3934,141 @@ def merge_certificate( 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, include_pending=None, custom_headers=None, raw=False, **operation_config): """Lists the deleted certificates in the specified vault currently @@ -4424,7 +4559,7 @@ def get_deleted_storage_account( return deserialized get_deleted_storage_account.metadata = {'url': '/deletedstorage/{storage-account-name}'} - def purge_deleted_storge_account( + def purge_deleted_storage_account( self, vault_base_url, storage_account_name, custom_headers=None, raw=False, **operation_config): """Permanently deletes the specified storage account. @@ -4449,7 +4584,7 @@ def purge_deleted_storge_account( :class:`KeyVaultErrorException` """ # Construct URL - url = self.purge_deleted_storge_account.metadata['url'] + 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=r'^[0-9a-zA-Z]+$') @@ -4480,7 +4615,7 @@ def purge_deleted_storge_account( if raw: client_raw_response = ClientRawResponse(None, response) return client_raw_response - purge_deleted_storge_account.metadata = {'url': '/deletedstorage/{storage-account-name}'} + purge_deleted_storage_account.metadata = {'url': '/deletedstorage/{storage-account-name}'} def recover_deleted_storage_account( self, vault_base_url, storage_account_name, custom_headers=None, raw=False, **operation_config): diff --git a/azure-keyvault/azure/keyvault/models/__init__.py b/azure-keyvault/azure/keyvault/models/__init__.py index 8488560f2b83..ee5dd1f6c81e 100644 --- a/azure-keyvault/azure/keyvault/models/__init__.py +++ b/azure-keyvault/azure/keyvault/models/__init__.py @@ -85,6 +85,8 @@ 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 @@ -185,6 +187,8 @@ 'SasDefinitionCreateParameters', 'SasDefinitionUpdateParameters', 'KeyVaultError', 'KeyVaultErrorException', + 'CertificateRestoreParameters', + 'BackupCertificateResult', 'KeyItemPaged', 'DeletedKeyItemPaged', 'SecretItemPaged', 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..8ff266e58914 --- /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): + super(BackupCertificateResult, self).__init__() + self.value = None 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..48acf190dab5 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/certificate_restore_parameters.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 CertificateRestoreParameters(Model): + """The certificate restore parameters. + + :param certificate_bundle_backup: 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): + super(CertificateRestoreParameters, self).__init__() + self.certificate_bundle_backup = certificate_bundle_backup diff --git a/azure-keyvault/azure/keyvault/models/issuer_parameters.py b/azure-keyvault/azure/keyvault/models/issuer_parameters.py index 258124c9191c..2fd60fa78888 100644 --- a/azure-keyvault/azure/keyvault/models/issuer_parameters.py +++ b/azure-keyvault/azure/keyvault/models/issuer_parameters.py @@ -21,14 +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): + def __init__(self, name=None, certificate_type=None, certificate_transparency=None): super(IssuerParameters, self).__init__() self.name = name self.certificate_type = certificate_type + self.certificate_transparency = certificate_transparency diff --git a/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py b/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py index f6ca67ff08e6..9e8fcab90460 100644 --- a/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py +++ b/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py @@ -28,9 +28,6 @@ class X509CertificateProperties(Model): :param validity_in_months: The duration that the ceritifcate is valid in months. :type validity_in_months: int - :param certificate_transparency: Indicates if the certificates generated - under this policy should be published to certificate transparency logs. - :type certificate_transparency: bool """ _validation = { @@ -43,14 +40,12 @@ class X509CertificateProperties(Model): 'subject_alternative_names': {'key': 'sans', 'type': 'SubjectAlternativeNames'}, 'key_usage': {'key': 'key_usage', 'type': '[str]'}, 'validity_in_months': {'key': 'validity_months', 'type': 'int'}, - 'certificate_transparency': {'key': 'cert_transparency', 'type': 'bool'}, } - def __init__(self, subject=None, ekus=None, subject_alternative_names=None, key_usage=None, validity_in_months=None, certificate_transparency=None): + def __init__(self, subject=None, ekus=None, subject_alternative_names=None, key_usage=None, validity_in_months=None): super(X509CertificateProperties, self).__init__() 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 - self.certificate_transparency = certificate_transparency From d6a9282fba4a6cb3713c291f0b5fba9fb64d76a7 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Wed, 28 Mar 2018 09:41:09 -0700 Subject: [PATCH 29/49] updating release notes for alpha 2 release --- azure-keyvault/HISTORY.rst | 9 +++++++++ azure-mgmt-keyvault/HISTORY.rst | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/azure-keyvault/HISTORY.rst b/azure-keyvault/HISTORY.rst index b676381c9caf..4bb356ab85c3 100644 --- a/azure-keyvault/HISTORY.rst +++ b/azure-keyvault/HISTORY.rst @@ -2,6 +2,15 @@ Release History =============== +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 diff --git a/azure-mgmt-keyvault/HISTORY.rst b/azure-mgmt-keyvault/HISTORY.rst index 95350e6fa938..67ffffcd78a1 100644 --- a/azure-mgmt-keyvault/HISTORY.rst +++ b/azure-mgmt-keyvault/HISTORY.rst @@ -2,6 +2,12 @@ Release History =============== +1.0.0a2 (2018-03-28) +++++++++++++++++++++ +* Upgrading to API version 2018-02-14-preview +* 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) +++++++++++++++++++ From 1cc7ea2147ad72da9f0666c4c135d05dcf2dee41 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Wed, 28 Mar 2018 14:12:34 -0700 Subject: [PATCH 30/49] fixing azure-keyvault version formatting --- azure-keyvault/azure/keyvault/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-keyvault/azure/keyvault/version.py b/azure-keyvault/azure/keyvault/version.py index 132b1eeebbf3..7cc8dceb7a1e 100644 --- a/azure-keyvault/azure/keyvault/version.py +++ b/azure-keyvault/azure/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "1.0.0a2," +VERSION = "1.0.0a2" From 710c1224c22fe965890d78f1f5f7a84bfa4a6cbe Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 3 Apr 2018 14:53:17 -0700 Subject: [PATCH 31/49] regen data-plane SDK with autorest.python 3.0 --- .../azure/keyvault/key_vault_client.py | 2 +- .../azure/keyvault/models/__init__.py | 236 ++++++++++++------ .../azure/keyvault/models/action.py | 6 +- .../azure/keyvault/models/action_py3.py | 29 +++ .../keyvault/models/administrator_details.py | 12 +- .../models/administrator_details_py3.py | 40 +++ .../azure/keyvault/models/attributes.py | 10 +- .../azure/keyvault/models/attributes_py3.py | 52 ++++ .../models/backup_certificate_result.py | 4 +- .../models/backup_certificate_result_py3.py | 35 +++ .../keyvault/models/backup_key_result.py | 4 +- .../keyvault/models/backup_key_result_py3.py | 35 +++ .../keyvault/models/backup_secret_result.py | 4 +- .../models/backup_secret_result_py3.py | 35 +++ .../keyvault/models/backup_storage_result.py | 4 +- .../models/backup_storage_result_py3.py | 35 +++ .../keyvault/models/certificate_attributes.py | 4 +- .../models/certificate_attributes_py3.py | 59 +++++ .../keyvault/models/certificate_bundle.py | 12 +- .../keyvault/models/certificate_bundle_py3.py | 71 ++++++ .../models/certificate_create_parameters.py | 10 +- .../certificate_create_parameters_py3.py | 37 +++ .../models/certificate_import_parameters.py | 20 +- .../certificate_import_parameters_py3.py | 54 ++++ .../models/certificate_issuer_item.py | 8 +- .../models/certificate_issuer_item_py3.py | 32 +++ .../certificate_issuer_set_parameters.py | 16 +- .../certificate_issuer_set_parameters_py3.py | 47 ++++ .../certificate_issuer_update_parameters.py | 12 +- ...ertificate_issuer_update_parameters_py3.py | 41 +++ .../azure/keyvault/models/certificate_item.py | 12 +- .../keyvault/models/certificate_item_py3.py | 40 +++ .../models/certificate_merge_parameters.py | 16 +- .../certificate_merge_parameters_py3.py | 44 ++++ .../keyvault/models/certificate_operation.py | 20 +- .../models/certificate_operation_py3.py | 71 ++++++ .../certificate_operation_update_parameter.py | 12 +- ...tificate_operation_update_parameter_py3.py | 35 +++ .../keyvault/models/certificate_policy.py | 16 +- .../keyvault/models/certificate_policy_py3.py | 63 +++++ .../models/certificate_restore_parameters.py | 12 +- .../certificate_restore_parameters_py3.py | 35 +++ .../models/certificate_update_parameters.py | 10 +- .../certificate_update_parameters_py3.py | 37 +++ .../azure/keyvault/models/contact.py | 10 +- .../azure/keyvault/models/contact_py3.py | 36 +++ .../azure/keyvault/models/contacts.py | 6 +- .../azure/keyvault/models/contacts_py3.py | 39 +++ .../models/deleted_certificate_bundle.py | 6 +- .../models/deleted_certificate_bundle_py3.py | 79 ++++++ .../models/deleted_certificate_item.py | 6 +- .../models/deleted_certificate_item_py3.py | 59 +++++ .../keyvault/models/deleted_key_bundle.py | 6 +- .../keyvault/models/deleted_key_bundle_py3.py | 61 +++++ .../azure/keyvault/models/deleted_key_item.py | 6 +- .../keyvault/models/deleted_key_item_py3.py | 61 +++++ .../models/deleted_sas_definition_bundle.py | 6 +- .../deleted_sas_definition_bundle_py3.py | 79 ++++++ .../models/deleted_sas_definition_item.py | 6 +- .../models/deleted_sas_definition_item_py3.py | 63 +++++ .../keyvault/models/deleted_secret_bundle.py | 6 +- .../models/deleted_secret_bundle_py3.py | 72 ++++++ .../keyvault/models/deleted_secret_item.py | 6 +- .../models/deleted_secret_item_py3.py | 63 +++++ .../models/deleted_storage_account_item.py | 6 +- .../deleted_storage_account_item_py3.py | 63 +++++ .../keyvault/models/deleted_storage_bundle.py | 6 +- .../models/deleted_storage_bundle_py3.py | 77 ++++++ azure-keyvault/azure/keyvault/models/error.py | 4 +- .../azure/keyvault/models/error_py3.py | 45 ++++ .../keyvault/models/issuer_attributes.py | 6 +- .../keyvault/models/issuer_attributes_py3.py | 44 ++++ .../azure/keyvault/models/issuer_bundle.py | 12 +- .../keyvault/models/issuer_bundle_py3.py | 52 ++++ .../keyvault/models/issuer_credentials.py | 8 +- .../keyvault/models/issuer_credentials_py3.py | 32 +++ .../keyvault/models/issuer_parameters.py | 10 +- .../keyvault/models/issuer_parameters_py3.py | 39 +++ .../azure/keyvault/models/json_web_key.py | 36 +-- .../azure/keyvault/models/json_web_key_py3.py | 91 +++++++ .../azure/keyvault/models/key_attributes.py | 4 +- .../keyvault/models/key_attributes_py3.py | 58 +++++ .../azure/keyvault/models/key_bundle.py | 10 +- .../azure/keyvault/models/key_bundle_py3.py | 48 ++++ .../keyvault/models/key_create_parameters.py | 20 +- .../models/key_create_parameters_py3.py | 58 +++++ .../keyvault/models/key_import_parameters.py | 16 +- .../models/key_import_parameters_py3.py | 46 ++++ .../azure/keyvault/models/key_item.py | 10 +- .../azure/keyvault/models/key_item_py3.py | 48 ++++ .../keyvault/models/key_operation_result.py | 4 +- .../models/key_operation_result_py3.py | 40 +++ .../models/key_operations_parameters.py | 14 +- .../models/key_operations_parameters_py3.py | 41 +++ .../azure/keyvault/models/key_properties.py | 12 +- .../keyvault/models/key_properties_py3.py | 41 +++ .../keyvault/models/key_restore_parameters.py | 11 +- .../models/key_restore_parameters_py3.py | 35 +++ .../keyvault/models/key_sign_parameters.py | 21 +- .../models/key_sign_parameters_py3.py | 44 ++++ .../keyvault/models/key_update_parameters.py | 10 +- .../models/key_update_parameters_py3.py | 37 +++ .../keyvault/models/key_vault_client_enums.py | 18 +- .../azure/keyvault/models/key_vault_error.py | 4 +- .../keyvault/models/key_vault_error_py3.py | 48 ++++ .../keyvault/models/key_verify_parameters.py | 24 +- .../models/key_verify_parameters_py3.py | 48 ++++ .../keyvault/models/key_verify_result.py | 4 +- .../keyvault/models/key_verify_result_py3.py | 35 +++ .../azure/keyvault/models/lifetime_action.py | 8 +- .../keyvault/models/lifetime_action_py3.py | 33 +++ .../keyvault/models/organization_details.py | 8 +- .../models/organization_details_py3.py | 32 +++ ...ding_certificate_signing_request_result.py | 4 +- ..._certificate_signing_request_result_py3.py | 36 +++ .../models/sas_definition_attributes.py | 6 +- .../models/sas_definition_attributes_py3.py | 56 +++++ .../keyvault/models/sas_definition_bundle.py | 4 +- .../models/sas_definition_bundle_py3.py | 70 ++++++ .../sas_definition_create_parameters.py | 30 +-- .../sas_definition_create_parameters_py3.py | 57 +++++ .../keyvault/models/sas_definition_item.py | 4 +- .../models/sas_definition_item_py3.py | 50 ++++ .../sas_definition_update_parameters.py | 14 +- .../sas_definition_update_parameters_py3.py | 49 ++++ .../keyvault/models/secret_attributes.py | 4 +- .../keyvault/models/secret_attributes_py3.py | 58 +++++ .../azure/keyvault/models/secret_bundle.py | 14 +- .../keyvault/models/secret_bundle_py3.py | 62 +++++ .../azure/keyvault/models/secret_item.py | 12 +- .../azure/keyvault/models/secret_item_py3.py | 52 ++++ .../keyvault/models/secret_properties.py | 6 +- .../keyvault/models/secret_properties_py3.py | 28 +++ .../models/secret_restore_parameters.py | 12 +- .../models/secret_restore_parameters_py3.py | 35 +++ .../keyvault/models/secret_set_parameters.py | 16 +- .../models/secret_set_parameters_py3.py | 46 ++++ .../models/secret_update_parameters.py | 10 +- .../models/secret_update_parameters_py3.py | 36 +++ .../models/storage_account_attributes.py | 6 +- .../models/storage_account_attributes_py3.py | 56 +++++ .../storage_account_create_parameters.py | 26 +- .../storage_account_create_parameters_py3.py | 59 +++++ .../keyvault/models/storage_account_item.py | 4 +- .../models/storage_account_item_py3.py | 50 ++++ ...torage_account_regenerte_key_parameters.py | 10 +- ...ge_account_regenerte_key_parameters_py3.py | 34 +++ .../storage_account_update_parameters.py | 14 +- .../storage_account_update_parameters_py3.py | 47 ++++ .../azure/keyvault/models/storage_bundle.py | 4 +- .../keyvault/models/storage_bundle_py3.py | 68 +++++ .../models/storage_restore_parameters.py | 12 +- .../models/storage_restore_parameters_py3.py | 35 +++ .../models/subject_alternative_names.py | 10 +- .../models/subject_alternative_names_py3.py | 36 +++ .../azure/keyvault/models/trigger.py | 8 +- .../azure/keyvault/models/trigger_py3.py | 40 +++ .../models/x509_certificate_properties.py | 14 +- .../models/x509_certificate_properties_py3.py | 51 ++++ azure-keyvault/azure/keyvault/version.py | 2 +- 160 files changed, 4372 insertions(+), 471 deletions(-) create mode 100644 azure-keyvault/azure/keyvault/models/action_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/administrator_details_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/attributes_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/backup_certificate_result_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/backup_key_result_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/backup_secret_result_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/backup_storage_result_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_attributes_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_bundle_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_create_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_import_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_issuer_item_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_item_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_merge_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_operation_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_operation_update_parameter_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_policy_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_restore_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/certificate_update_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/contact_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/contacts_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_certificate_bundle_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_certificate_item_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_key_bundle_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_key_item_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_secret_bundle_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_secret_item_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_storage_account_item_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/deleted_storage_bundle_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/error_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/issuer_attributes_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/issuer_bundle_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/issuer_credentials_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/issuer_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/json_web_key_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_attributes_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_bundle_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_create_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_import_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_item_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_operation_result_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_operations_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_properties_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_restore_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_sign_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_update_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_vault_error_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_verify_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/key_verify_result_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/lifetime_action_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/organization_details_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/pending_certificate_signing_request_result_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/sas_definition_attributes_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/sas_definition_bundle_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/sas_definition_create_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/sas_definition_item_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/sas_definition_update_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/secret_attributes_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/secret_bundle_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/secret_item_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/secret_properties_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/secret_restore_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/secret_set_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/secret_update_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/storage_account_attributes_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/storage_account_create_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/storage_account_item_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/storage_account_regenerte_key_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/storage_account_update_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/storage_bundle_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/storage_restore_parameters_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/subject_alternative_names_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/trigger_py3.py create mode 100644 azure-keyvault/azure/keyvault/models/x509_certificate_properties_py3.py diff --git a/azure-keyvault/azure/keyvault/key_vault_client.py b/azure-keyvault/azure/keyvault/key_vault_client.py index 0afc065344bd..b9e81f4cb7c7 100644 --- a/azure-keyvault/azure/keyvault/key_vault_client.py +++ b/azure-keyvault/azure/keyvault/key_vault_client.py @@ -37,7 +37,7 @@ def __init__( super(KeyVaultClientConfiguration, self).__init__(base_url) - self.add_user_agent('azure-keyvault,/{}'.format(VERSION)) + self.add_user_agent('azure-keyvault/{}'.format(VERSION)) self.add_user_agent('Azure-SDK-For-Python') self.credentials = credentials diff --git a/azure-keyvault/azure/keyvault/models/__init__.py b/azure-keyvault/azure/keyvault/models/__init__.py index ee5dd1f6c81e..70233748f308 100644 --- a/azure-keyvault/azure/keyvault/models/__init__.py +++ b/azure-keyvault/azure/keyvault/models/__init__.py @@ -9,84 +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 .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 +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 diff --git a/azure-keyvault/azure/keyvault/models/action.py b/azure-keyvault/azure/keyvault/models/action.py index 12e33735ab84..23a4a13670db 100644 --- a/azure-keyvault/azure/keyvault/models/action.py +++ b/azure-keyvault/azure/keyvault/models/action.py @@ -24,6 +24,6 @@ class Action(Model): 'action_type': {'key': 'action_type', 'type': 'ActionType'}, } - def __init__(self, action_type=None): - super(Action, self).__init__() - 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 index 1977d2cf71be..4026a83a5da4 100644 --- a/azure-keyvault/azure/keyvault/models/administrator_details.py +++ b/azure-keyvault/azure/keyvault/models/administrator_details.py @@ -32,9 +32,9 @@ class AdministratorDetails(Model): 'phone': {'key': 'phone', 'type': 'str'}, } - def __init__(self, first_name=None, last_name=None, email_address=None, phone=None): - super(AdministratorDetails, self).__init__() - 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 index 742f12e1e6e7..5c89678b313f 100644 --- a/azure-keyvault/azure/keyvault/models/attributes.py +++ b/azure-keyvault/azure/keyvault/models/attributes.py @@ -43,10 +43,10 @@ class Attributes(Model): 'updated': {'key': 'updated', 'type': 'unix-time'}, } - def __init__(self, enabled=None, not_before=None, expires=None): - super(Attributes, self).__init__() - 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 index 8ff266e58914..670034f28a2a 100644 --- a/azure-keyvault/azure/keyvault/models/backup_certificate_result.py +++ b/azure-keyvault/azure/keyvault/models/backup_certificate_result.py @@ -30,6 +30,6 @@ class BackupCertificateResult(Model): 'value': {'key': 'value', 'type': 'base64'}, } - def __init__(self): - super(BackupCertificateResult, self).__init__() + 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 index 95d0e9bfd86f..4aaa5fc2ebe8 100644 --- a/azure-keyvault/azure/keyvault/models/backup_key_result.py +++ b/azure-keyvault/azure/keyvault/models/backup_key_result.py @@ -30,6 +30,6 @@ class BackupKeyResult(Model): 'value': {'key': 'value', 'type': 'base64'}, } - def __init__(self): - super(BackupKeyResult, self).__init__() + 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 index bd8f520a2598..4f803fc0cefe 100644 --- a/azure-keyvault/azure/keyvault/models/backup_secret_result.py +++ b/azure-keyvault/azure/keyvault/models/backup_secret_result.py @@ -30,6 +30,6 @@ class BackupSecretResult(Model): 'value': {'key': 'value', 'type': 'base64'}, } - def __init__(self): - super(BackupSecretResult, self).__init__() + 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 index d6145e6632ce..0847f47dd5c1 100644 --- a/azure-keyvault/azure/keyvault/models/backup_storage_result.py +++ b/azure-keyvault/azure/keyvault/models/backup_storage_result.py @@ -30,6 +30,6 @@ class BackupStorageResult(Model): 'value': {'key': 'value', 'type': 'base64'}, } - def __init__(self): - super(BackupStorageResult, self).__init__() + 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 index 29f10a4b15ac..a372c204ff0e 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_attributes.py +++ b/azure-keyvault/azure/keyvault/models/certificate_attributes.py @@ -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..028ab5095fbd --- /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 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 index 8faaf134b500..7e06eccada5d 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_bundle.py +++ b/azure-keyvault/azure/keyvault/models/certificate_bundle.py @@ -58,14 +58,14 @@ class CertificateBundle(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, cer=None, content_type=None, attributes=None, tags=None): - super(CertificateBundle, self).__init__() + 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 index 3565ddd53054..67b72b43f738 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_create_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_create_parameters.py @@ -30,8 +30,8 @@ class CertificateCreateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, certificate_policy=None, certificate_attributes=None, tags=None): - super(CertificateCreateParameters, self).__init__() - 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 index 24d025b0b680..635afbd1361d 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_import_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_import_parameters.py @@ -15,8 +15,10 @@ 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 @@ -43,10 +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): - super(CertificateImportParameters, self).__init__() - 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 index 75c06f67df49..98713b2ab4c1 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_issuer_item.py +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_item.py @@ -26,7 +26,7 @@ class CertificateIssuerItem(Model): 'provider': {'key': 'provider', 'type': 'str'}, } - def __init__(self, id=None, provider=None): - super(CertificateIssuerItem, self).__init__() - 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_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 index 9d16a5bec245..733740938202 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_set_parameters.py @@ -15,7 +15,9 @@ 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: ~azure.keyvault.models.IssuerCredentials @@ -37,9 +39,9 @@ class CertificateIssuerSetParameters(Model): 'attributes': {'key': 'attributes', 'type': 'IssuerAttributes'}, } - def __init__(self, provider, credentials=None, organization_details=None, attributes=None): - super(CertificateIssuerSetParameters, self).__init__() - 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 index 22b326974681..44347583ed42 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_issuer_update_parameters.py @@ -33,9 +33,9 @@ class CertificateIssuerUpdateParameters(Model): 'attributes': {'key': 'attributes', 'type': 'IssuerAttributes'}, } - def __init__(self, provider=None, credentials=None, organization_details=None, attributes=None): - super(CertificateIssuerUpdateParameters, self).__init__() - 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 index 38161f94b73f..405cc71751a5 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_item.py +++ b/azure-keyvault/azure/keyvault/models/certificate_item.py @@ -32,9 +32,9 @@ class CertificateItem(Model): 'x509_thumbprint': {'key': 'x5t', 'type': 'base64'}, } - def __init__(self, id=None, attributes=None, tags=None, x509_thumbprint=None): - super(CertificateItem, self).__init__() - 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_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 index ebf692df08de..cb4226161fab 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_merge_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_merge_parameters.py @@ -15,8 +15,10 @@ class CertificateMergeParameters(Model): """The certificate merge parameters. - :param x509_certificates: The certificate or the certificate chain to - merge. + 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). @@ -35,8 +37,8 @@ class CertificateMergeParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, x509_certificates, certificate_attributes=None, tags=None): - super(CertificateMergeParameters, self).__init__() - 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 index f0bacc90bb2d..d9976856dd6e 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_operation.py +++ b/azure-keyvault/azure/keyvault/models/certificate_operation.py @@ -58,14 +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): - super(CertificateOperation, self).__init__() + 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 index d318fa3e2d81..fadc2e3ea734 100644 --- 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,6 +30,6 @@ class CertificateOperationUpdateParameter(Model): 'cancellation_requested': {'key': 'cancellation_requested', 'type': 'bool'}, } - def __init__(self, cancellation_requested): - super(CertificateOperationUpdateParameter, self).__init__() - 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 index b91a0a1ea6e0..cbf8823076ea 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_policy.py +++ b/azure-keyvault/azure/keyvault/models/certificate_policy.py @@ -52,12 +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): - super(CertificatePolicy, self).__init__() + 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 index 48acf190dab5..2a03516d6356 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_restore_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_restore_parameters.py @@ -15,8 +15,10 @@ class CertificateRestoreParameters(Model): """The certificate restore parameters. - :param certificate_bundle_backup: The backup blob associated with a - certificate bundle. + 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 """ @@ -28,6 +30,6 @@ class CertificateRestoreParameters(Model): 'certificate_bundle_backup': {'key': 'value', 'type': 'base64'}, } - def __init__(self, certificate_bundle_backup): - super(CertificateRestoreParameters, self).__init__() - self.certificate_bundle_backup = certificate_bundle_backup + 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 index cd0f711d1cad..9407d23b28ec 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/certificate_update_parameters.py @@ -30,8 +30,8 @@ class CertificateUpdateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, certificate_policy=None, certificate_attributes=None, tags=None): - super(CertificateUpdateParameters, self).__init__() - 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 index b82f4b760823..217a04fb85d0 100644 --- a/azure-keyvault/azure/keyvault/models/contact.py +++ b/azure-keyvault/azure/keyvault/models/contact.py @@ -29,8 +29,8 @@ class Contact(Model): 'phone': {'key': 'phone', 'type': 'str'}, } - def __init__(self, email_address=None, name=None, phone=None): - super(Contact, self).__init__() - 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 index f6f18131c365..4efc32f9b5be 100644 --- a/azure-keyvault/azure/keyvault/models/contacts.py +++ b/azure-keyvault/azure/keyvault/models/contacts.py @@ -33,7 +33,7 @@ class Contacts(Model): 'contact_list': {'key': 'contacts', 'type': '[Contact]'}, } - def __init__(self, contact_list=None): - super(Contacts, self).__init__() + 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 index 1c28a8cf4233..b3fac86a9805 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle.py +++ b/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle.py @@ -72,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..3e199a665260 --- /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 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 index 02d21daee438..e6fa2963cc09 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_certificate_item.py +++ b/azure-keyvault/azure/keyvault/models/deleted_certificate_item.py @@ -52,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_py3.py b/azure-keyvault/azure/keyvault/models/deleted_certificate_item_py3.py new file mode 100644 index 000000000000..1a599db43416 --- /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 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 index 215e0b7d231d..4da00938813b 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_key_bundle.py +++ b/azure-keyvault/azure/keyvault/models/deleted_key_bundle.py @@ -54,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..c3d97f46dd66 --- /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 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 index 0542c513baf8..a3ed56f9a99e 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_key_item.py +++ b/azure-keyvault/azure/keyvault/models/deleted_key_item.py @@ -54,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_py3.py b/azure-keyvault/azure/keyvault/models/deleted_key_item_py3.py new file mode 100644 index 000000000000..990b024f9c58 --- /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 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 index 6a3707f7d5c0..7400534281f5 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle.py +++ b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle.py @@ -72,8 +72,8 @@ class DeletedSasDefinitionBundle(SasDefinitionBundle): 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, } - def __init__(self, recovery_id=None): - super(DeletedSasDefinitionBundle, self).__init__() - self.recovery_id = recovery_id + 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..61396569f5c4 --- /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 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 index 754c376b3ec5..dd50187b3752 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item.py +++ b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item.py @@ -56,8 +56,8 @@ class DeletedSasDefinitionItem(SasDefinitionItem): 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, } - def __init__(self, recovery_id=None): - super(DeletedSasDefinitionItem, self).__init__() - self.recovery_id = recovery_id + 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_py3.py b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_py3.py new file mode 100644 index 000000000000..ec86dbaab5b1 --- /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 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 index 2f85f5c01801..f88eb1fb02c2 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_secret_bundle.py +++ b/azure-keyvault/azure/keyvault/models/deleted_secret_bundle.py @@ -65,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..43f1cdc34217 --- /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 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 index 68b59f59546e..6faa18b080df 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_secret_item.py +++ b/azure-keyvault/azure/keyvault/models/deleted_secret_item.py @@ -56,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_py3.py b/azure-keyvault/azure/keyvault/models/deleted_secret_item_py3.py new file mode 100644 index 000000000000..cc8bab098049 --- /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 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 index 52ec98c77aec..15d0f15bef06 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_storage_account_item.py +++ b/azure-keyvault/azure/keyvault/models/deleted_storage_account_item.py @@ -56,8 +56,8 @@ class DeletedStorageAccountItem(StorageAccountItem): 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, } - def __init__(self, recovery_id=None): - super(DeletedStorageAccountItem, self).__init__() - self.recovery_id = recovery_id + 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_py3.py b/azure-keyvault/azure/keyvault/models/deleted_storage_account_item_py3.py new file mode 100644 index 000000000000..48f52ab0eaed --- /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 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 index aa3fe67ecb71..f9281dc9b3dd 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_storage_bundle.py +++ b/azure-keyvault/azure/keyvault/models/deleted_storage_bundle.py @@ -70,8 +70,8 @@ class DeletedStorageBundle(StorageBundle): 'deleted_date': {'key': 'deletedDate', 'type': 'unix-time'}, } - def __init__(self, recovery_id=None): - super(DeletedStorageBundle, self).__init__() - self.recovery_id = recovery_id + 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..d2fe6c09c267 --- /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 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 index 35c231305790..9dbe09fa48fc 100644 --- a/azure-keyvault/azure/keyvault/models/error.py +++ b/azure-keyvault/azure/keyvault/models/error.py @@ -38,8 +38,8 @@ class Error(Model): 'inner_error': {'key': 'innererror', 'type': 'Error'}, } - def __init__(self): - super(Error, self).__init__() + 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 index bcc3fd0d2e2e..c10a16642899 100644 --- a/azure-keyvault/azure/keyvault/models/issuer_attributes.py +++ b/azure-keyvault/azure/keyvault/models/issuer_attributes.py @@ -37,8 +37,8 @@ class IssuerAttributes(Model): 'updated': {'key': 'updated', 'type': 'unix-time'}, } - def __init__(self, enabled=None): - super(IssuerAttributes, self).__init__() - 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 index 4043d7ab89c2..778b64ada702 100644 --- a/azure-keyvault/azure/keyvault/models/issuer_bundle.py +++ b/azure-keyvault/azure/keyvault/models/issuer_bundle.py @@ -43,10 +43,10 @@ class IssuerBundle(Model): 'attributes': {'key': 'attributes', 'type': 'IssuerAttributes'}, } - def __init__(self, provider=None, credentials=None, organization_details=None, attributes=None): - super(IssuerBundle, self).__init__() + 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 index fdc0282c534d..2f86d863239d 100644 --- a/azure-keyvault/azure/keyvault/models/issuer_credentials.py +++ b/azure-keyvault/azure/keyvault/models/issuer_credentials.py @@ -26,7 +26,7 @@ class IssuerCredentials(Model): 'password': {'key': 'pwd', 'type': 'str'}, } - def __init__(self, account_id=None, password=None): - super(IssuerCredentials, self).__init__() - 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 index 2fd60fa78888..36f15dae7887 100644 --- a/azure-keyvault/azure/keyvault/models/issuer_parameters.py +++ b/azure-keyvault/azure/keyvault/models/issuer_parameters.py @@ -32,8 +32,8 @@ class IssuerParameters(Model): 'certificate_transparency': {'key': 'cert_transparency', 'type': 'bool'}, } - def __init__(self, name=None, certificate_type=None, certificate_transparency=None): - super(IssuerParameters, self).__init__() - self.name = name - self.certificate_type = certificate_type - self.certificate_transparency = certificate_transparency + 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 index 881f20bf2cc0..033416b2b1d3 100644 --- a/azure-keyvault/azure/keyvault/models/json_web_key.py +++ b/azure-keyvault/azure/keyvault/models/json_web_key.py @@ -71,21 +71,21 @@ class JsonWebKey(Model): '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, crv=None, x=None, y=None): - super(JsonWebKey, self).__init__() - 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 + 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..c5e1252f9783 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/json_web_key_py3.py @@ -0,0 +1,91 @@ +# 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). 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', + 'SECP256K1' + :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 index 2e0e98ac6e36..d1fb33f64a64 100644 --- a/azure-keyvault/azure/keyvault/models/key_attributes.py +++ b/azure-keyvault/azure/keyvault/models/key_attributes.py @@ -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..8689ce17e65a --- /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 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 index 4c81811f3fd3..0dd494c6de1d 100644 --- a/azure-keyvault/azure/keyvault/models/key_bundle.py +++ b/azure-keyvault/azure/keyvault/models/key_bundle.py @@ -40,9 +40,9 @@ class KeyBundle(Model): 'managed': {'key': 'managed', 'type': 'bool'}, } - def __init__(self, key=None, attributes=None, tags=None): - super(KeyBundle, self).__init__() - 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 index 0cf298d86ced..9f34a95f0d41 100644 --- a/azure-keyvault/azure/keyvault/models/key_create_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_create_parameters.py @@ -15,7 +15,9 @@ class KeyCreateParameters(Model): """The key create parameters. - :param kty: The type of key to create. For valid values, see + 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 @@ -46,11 +48,11 @@ class KeyCreateParameters(Model): 'curve': {'key': 'crv', 'type': 'str'}, } - def __init__(self, kty, key_size=None, key_ops=None, key_attributes=None, tags=None, curve=None): - super(KeyCreateParameters, self).__init__() - self.kty = kty - self.key_size = key_size - self.key_ops = key_ops - self.key_attributes = key_attributes - self.tags = tags - self.curve = curve + 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..a9d0fc5357d1 --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_create_parameters_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 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 bytes. For example, 1024 or 2048. + :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', + 'SECP256K1' + :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 index 804bbcf5f629..f309aad29ea8 100644 --- a/azure-keyvault/azure/keyvault/models/key_import_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_import_parameters.py @@ -15,9 +15,11 @@ 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 + :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 @@ -36,9 +38,9 @@ class KeyImportParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, key, hsm=None, key_attributes=None, tags=None): - super(KeyImportParameters, self).__init__() - 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 index d6a5bd35dc49..6a4697b9a54d 100644 --- a/azure-keyvault/azure/keyvault/models/key_item.py +++ b/azure-keyvault/azure/keyvault/models/key_item.py @@ -40,9 +40,9 @@ class KeyItem(Model): 'managed': {'key': 'managed', 'type': 'bool'}, } - def __init__(self, kid=None, attributes=None, tags=None): - super(KeyItem, self).__init__() - 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_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 index d63166298177..577326dcf54c 100644 --- a/azure-keyvault/azure/keyvault/models/key_operation_result.py +++ b/azure-keyvault/azure/keyvault/models/key_operation_result.py @@ -34,7 +34,7 @@ class KeyOperationResult(Model): 'result': {'key': 'value', 'type': 'base64'}, } - def __init__(self): - super(KeyOperationResult, self).__init__() + 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 index 6b50e0512336..76c19c93e69c 100644 --- 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 ~azure.keyvault.models.JsonWebKeyEncryptionAlgorithm - :param value: + :param value: Required. :type value: bytes """ @@ -33,7 +35,7 @@ class KeyOperationsParameters(Model): 'value': {'key': 'value', 'type': 'base64'}, } - def __init__(self, algorithm, value): - super(KeyOperationsParameters, self).__init__() - 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 index e3721bb2162e..8f1158d011f9 100644 --- a/azure-keyvault/azure/keyvault/models/key_properties.py +++ b/azure-keyvault/azure/keyvault/models/key_properties.py @@ -33,9 +33,9 @@ class KeyProperties(Model): 'reuse_key': {'key': 'reuse_key', 'type': 'bool'}, } - def __init__(self, exportable=None, key_type=None, key_size=None, reuse_key=None): - super(KeyProperties, self).__init__() - 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) 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..6f8d8cb780db --- /dev/null +++ b/azure-keyvault/azure/keyvault/models/key_properties_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 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 key type. + :type key_type: str + :param key_size: The key size in bytes. For example; 1024 or 2048. + :type key_size: int + :param reuse_key: Indicates if the same key pair will be used on + certificate renewal. + :type reuse_key: bool + """ + + _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'}, + } + + def __init__(self, *, exportable: bool=None, key_type: str=None, key_size: int=None, reuse_key: bool=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 diff --git a/azure-keyvault/azure/keyvault/models/key_restore_parameters.py b/azure-keyvault/azure/keyvault/models/key_restore_parameters.py index 934235cc9db9..7594a7af2833 100644 --- 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,6 +30,6 @@ class KeyRestoreParameters(Model): 'key_bundle_backup': {'key': 'value', 'type': 'base64'}, } - def __init__(self, key_bundle_backup): - super(KeyRestoreParameters, self).__init__() - 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 index 5ae6ef0c5b95..2bb4c401dd10 100644 --- 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', 'ES256', 'ES384', 'ES512', 'ECDSA256' + 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', + 'ECDSA256' :type algorithm: str or ~azure.keyvault.models.JsonWebKeySignatureAlgorithm - :param value: + :param value: Required. :type value: bytes """ @@ -35,7 +38,7 @@ class KeySignParameters(Model): 'value': {'key': 'value', 'type': 'base64'}, } - def __init__(self, algorithm, value): - super(KeySignParameters, self).__init__() - 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..9287a24a6d09 --- /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', + 'ECDSA256' + :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 index f4bbcebff988..976411447e50 100644 --- a/azure-keyvault/azure/keyvault/models/key_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_update_parameters.py @@ -30,8 +30,8 @@ class KeyUpdateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, key_ops=None, key_attributes=None, tags=None): - super(KeyUpdateParameters, self).__init__() - 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 index 7eae18700aac..2c2dd32621be 100644 --- a/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py +++ b/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py @@ -12,7 +12,7 @@ from enum import Enum -class JsonWebKeyType(Enum): +class JsonWebKeyType(str, Enum): ec = "EC" ec_hsm = "EC-HSM" @@ -21,7 +21,7 @@ class JsonWebKeyType(Enum): oct = "oct" -class JsonWebKeyCurveName(Enum): +class JsonWebKeyCurveName(str, Enum): p_256 = "P-256" p_384 = "P-384" @@ -29,7 +29,7 @@ class JsonWebKeyCurveName(Enum): secp256_k1 = "SECP256K1" -class DeletionRecoveryLevel(Enum): +class DeletionRecoveryLevel(str, Enum): purgeable = "Purgeable" recoverable_purgeable = "Recoverable+Purgeable" @@ -37,7 +37,7 @@ class DeletionRecoveryLevel(Enum): recoverable_protected_subscription = "Recoverable+ProtectedSubscription" -class KeyUsageType(Enum): +class KeyUsageType(str, Enum): digital_signature = "digitalSignature" non_repudiation = "nonRepudiation" @@ -50,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" @@ -66,14 +66,14 @@ 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" ps384 = "PS384" @@ -88,7 +88,7 @@ class JsonWebKeySignatureAlgorithm(Enum): ecdsa256 = "ECDSA256" -class SasTokenType(Enum): +class SasTokenType(str, Enum): 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 index df445a39f4b5..91500f293c84 100644 --- a/azure-keyvault/azure/keyvault/models/key_vault_error.py +++ b/azure-keyvault/azure/keyvault/models/key_vault_error.py @@ -31,8 +31,8 @@ class KeyVaultError(Model): 'error': {'key': 'error', 'type': 'Error'}, } - def __init__(self): - super(KeyVaultError, self).__init__() + 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 index 5f9d2b4b95e4..524c6be9f9cb 100644 --- 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', 'ES256', 'ES384', 'ES512', 'ECDSA256' + 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', 'ECDSA256' :type algorithm: str or ~azure.keyvault.models.JsonWebKeySignatureAlgorithm - :param digest: The digest used for signing. + :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,8 +41,8 @@ class KeyVerifyParameters(Model): 'signature': {'key': 'value', 'type': 'base64'}, } - def __init__(self, algorithm, digest, signature): - super(KeyVerifyParameters, self).__init__() - 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..c5dd9819f053 --- /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', 'ECDSA256' + :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 index 57afe6324211..baffb85589cc 100644 --- a/azure-keyvault/azure/keyvault/models/key_verify_result.py +++ b/azure-keyvault/azure/keyvault/models/key_verify_result.py @@ -30,6 +30,6 @@ class KeyVerifyResult(Model): 'value': {'key': 'value', 'type': 'bool'}, } - def __init__(self): - super(KeyVerifyResult, self).__init__() + 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 index dd2a895d6ab0..c7470e260f30 100644 --- a/azure-keyvault/azure/keyvault/models/lifetime_action.py +++ b/azure-keyvault/azure/keyvault/models/lifetime_action.py @@ -27,7 +27,7 @@ class LifetimeAction(Model): 'action': {'key': 'action', 'type': 'Action'}, } - def __init__(self, trigger=None, action=None): - super(LifetimeAction, self).__init__() - 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 index 93c739d31afe..c9275d5e9727 100644 --- a/azure-keyvault/azure/keyvault/models/organization_details.py +++ b/azure-keyvault/azure/keyvault/models/organization_details.py @@ -26,7 +26,7 @@ class OrganizationDetails(Model): 'admin_details': {'key': 'admin_details', 'type': '[AdministratorDetails]'}, } - def __init__(self, id=None, admin_details=None): - super(OrganizationDetails, self).__init__() - 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 index 4a797469c17a..2bea9bfcdd61 100644 --- 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,6 +31,6 @@ class PendingCertificateSigningRequestResult(Model): 'value': {'key': 'value', 'type': 'str'}, } - def __init__(self): - super(PendingCertificateSigningRequestResult, self).__init__() + 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 index 5f1a07235068..6e7b1edb21c0 100644 --- a/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_attributes.py @@ -48,9 +48,9 @@ class SasDefinitionAttributes(Model): 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, } - def __init__(self, enabled=None): - super(SasDefinitionAttributes, self).__init__() - 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 index 6040e2b3ac46..0d346a2dc449 100644 --- a/azure-keyvault/azure/keyvault/models/sas_definition_bundle.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_bundle.py @@ -59,8 +59,8 @@ class SasDefinitionBundle(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self): - super(SasDefinitionBundle, self).__init__() + def __init__(self, **kwargs): + super(SasDefinitionBundle, self).__init__(**kwargs) self.id = None self.secret_id = None self.template_uri = 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 index b9b8feb54279..667ab8f59fa3 100644 --- a/azure-keyvault/azure/keyvault/models/sas_definition_create_parameters.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_create_parameters.py @@ -15,15 +15,17 @@ class SasDefinitionCreateParameters(Model): """The SAS definition create 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. + 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: The type of SAS token the SAS definition will create. - Possible values include: 'account', 'service' + :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: The validity period of SAS tokens created - according to the SAS definition. + :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: @@ -46,10 +48,10 @@ class SasDefinitionCreateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, template_uri, sas_type, validity_period, sas_definition_attributes=None, tags=None): - super(SasDefinitionCreateParameters, self).__init__() - 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 + 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 index 872d25a041a7..ad3715ad18dd 100644 --- a/azure-keyvault/azure/keyvault/models/sas_definition_item.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_item.py @@ -42,8 +42,8 @@ class SasDefinitionItem(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self): - super(SasDefinitionItem, self).__init__() + 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_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 index 16735eade36e..5e7c058e9ebf 100644 --- a/azure-keyvault/azure/keyvault/models/sas_definition_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/sas_definition_update_parameters.py @@ -40,10 +40,10 @@ class SasDefinitionUpdateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, template_uri=None, sas_type=None, validity_period=None, sas_definition_attributes=None, tags=None): - super(SasDefinitionUpdateParameters, self).__init__() - 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 + 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 index 14f1c75049d4..58d6325b81b0 100644 --- a/azure-keyvault/azure/keyvault/models/secret_attributes.py +++ b/azure-keyvault/azure/keyvault/models/secret_attributes.py @@ -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..d9166f634160 --- /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 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 index 4160cbcb01b1..53125d49292f 100644 --- a/azure-keyvault/azure/keyvault/models/secret_bundle.py +++ b/azure-keyvault/azure/keyvault/models/secret_bundle.py @@ -51,12 +51,12 @@ class SecretBundle(Model): 'managed': {'key': 'managed', 'type': 'bool'}, } - def __init__(self, value=None, id=None, content_type=None, attributes=None, tags=None): - super(SecretBundle, self).__init__() - 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 index 260d7d6bc161..941d1690b793 100644 --- a/azure-keyvault/azure/keyvault/models/secret_item.py +++ b/azure-keyvault/azure/keyvault/models/secret_item.py @@ -43,10 +43,10 @@ class SecretItem(Model): 'managed': {'key': 'managed', 'type': 'bool'}, } - def __init__(self, id=None, attributes=None, tags=None, content_type=None): - super(SecretItem, self).__init__() - 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_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 index b4a722dd25e9..03794579e47c 100644 --- a/azure-keyvault/azure/keyvault/models/secret_properties.py +++ b/azure-keyvault/azure/keyvault/models/secret_properties.py @@ -23,6 +23,6 @@ class SecretProperties(Model): 'content_type': {'key': 'contentType', 'type': 'str'}, } - def __init__(self, content_type=None): - super(SecretProperties, self).__init__() - 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 index 59c52a7c66b1..9e34c4259edc 100644 --- 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,6 +30,6 @@ class SecretRestoreParameters(Model): 'secret_bundle_backup': {'key': 'value', 'type': 'base64'}, } - def __init__(self, secret_bundle_backup): - super(SecretRestoreParameters, self).__init__() - 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 index 0f78377e3d67..39ae435e2bd5 100644 --- a/azure-keyvault/azure/keyvault/models/secret_set_parameters.py +++ b/azure-keyvault/azure/keyvault/models/secret_set_parameters.py @@ -15,7 +15,9 @@ 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[str, str] @@ -36,9 +38,9 @@ class SecretSetParameters(Model): 'secret_attributes': {'key': 'attributes', 'type': 'SecretAttributes'}, } - def __init__(self, value, tags=None, content_type=None, secret_attributes=None): - super(SecretSetParameters, self).__init__() - 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 index 550c1276aa86..c4935f4899ea 100644 --- a/azure-keyvault/azure/keyvault/models/secret_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/secret_update_parameters.py @@ -29,8 +29,8 @@ class SecretUpdateParameters(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, content_type=None, secret_attributes=None, tags=None): - super(SecretUpdateParameters, self).__init__() - 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 index bfaf2f5ef738..f8ba9114a0ef 100644 --- a/azure-keyvault/azure/keyvault/models/storage_account_attributes.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_attributes.py @@ -48,9 +48,9 @@ class StorageAccountAttributes(Model): 'recovery_level': {'key': 'recoveryLevel', 'type': 'str'}, } - def __init__(self, enabled=None): - super(StorageAccountAttributes, self).__init__() - 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 index e8cd1543fd2b..bed4c83a744a 100644 --- a/azure-keyvault/azure/keyvault/models/storage_account_create_parameters.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_create_parameters.py @@ -15,12 +15,14 @@ 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. @@ -47,11 +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): - super(StorageAccountCreateParameters, self).__init__() - 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 index 9191fdc4ed3b..1a3057e7bf17 100644 --- a/azure-keyvault/azure/keyvault/models/storage_account_item.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_item.py @@ -42,8 +42,8 @@ class StorageAccountItem(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self): - super(StorageAccountItem, self).__init__() + 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_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 index 58fdec2c4a41..459103c575aa 100644 --- 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,6 +29,6 @@ class StorageAccountRegenerteKeyParameters(Model): 'key_name': {'key': 'keyName', 'type': 'str'}, } - def __init__(self, key_name): - super(StorageAccountRegenerteKeyParameters, self).__init__() - 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 index e592d220b495..8b9b5ecb907f 100644 --- a/azure-keyvault/azure/keyvault/models/storage_account_update_parameters.py +++ b/azure-keyvault/azure/keyvault/models/storage_account_update_parameters.py @@ -38,10 +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): - super(StorageAccountUpdateParameters, self).__init__() - 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 index de4658a99097..cf5d645ba4a8 100644 --- a/azure-keyvault/azure/keyvault/models/storage_bundle.py +++ b/azure-keyvault/azure/keyvault/models/storage_bundle.py @@ -57,8 +57,8 @@ class StorageBundle(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self): - super(StorageBundle, self).__init__() + 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 index cf60aaaa785a..add6f3cd22fd 100644 --- a/azure-keyvault/azure/keyvault/models/storage_restore_parameters.py +++ b/azure-keyvault/azure/keyvault/models/storage_restore_parameters.py @@ -15,8 +15,10 @@ class StorageRestoreParameters(Model): """The secret restore parameters. - :param storage_bundle_backup: The backup blob associated with a storage - account. + 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 """ @@ -28,6 +30,6 @@ class StorageRestoreParameters(Model): 'storage_bundle_backup': {'key': 'value', 'type': 'base64'}, } - def __init__(self, storage_bundle_backup): - super(StorageRestoreParameters, self).__init__() - self.storage_bundle_backup = storage_bundle_backup + 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 index b803580810b7..0ff2911550df 100644 --- a/azure-keyvault/azure/keyvault/models/subject_alternative_names.py +++ b/azure-keyvault/azure/keyvault/models/subject_alternative_names.py @@ -29,8 +29,8 @@ class SubjectAlternativeNames(Model): 'upns': {'key': 'upns', 'type': '[str]'}, } - def __init__(self, emails=None, dns_names=None, upns=None): - super(SubjectAlternativeNames, self).__init__() - 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 index a6b535df2278..a68686f8303e 100644 --- a/azure-keyvault/azure/keyvault/models/trigger.py +++ b/azure-keyvault/azure/keyvault/models/trigger.py @@ -34,7 +34,7 @@ class Trigger(Model): 'days_before_expiry': {'key': 'days_before_expiry', 'type': 'int'}, } - def __init__(self, lifetime_percentage=None, days_before_expiry=None): - super(Trigger, self).__init__() - 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 index 9e8fcab90460..c8370d3817f0 100644 --- a/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py +++ b/azure-keyvault/azure/keyvault/models/x509_certificate_properties.py @@ -42,10 +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): - super(X509CertificateProperties, self).__init__() - 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 index 7cc8dceb7a1e..affaef0c987e 100644 --- a/azure-keyvault/azure/keyvault/version.py +++ b/azure-keyvault/azure/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "1.0.0a2" +VERSION = "1.0.0b1" From 1764f600ee2863d9cce7c42b2a1c723e9b90f7bf Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 3 Apr 2018 14:55:11 -0700 Subject: [PATCH 32/49] regen resource-manager SDK with autorest.python 3.0 --- .../azure/mgmt/keyvault/models/__init__.py | 68 ++++++++----- .../keyvault/models/access_policy_entry.py | 28 +++--- .../models/access_policy_entry_py3.py | 54 +++++++++++ .../models/check_name_availability_result.py | 4 +- .../check_name_availability_result_py3.py | 50 ++++++++++ .../mgmt/keyvault/models/deleted_vault.py | 6 +- .../models/deleted_vault_properties.py | 4 +- .../models/deleted_vault_properties_py3.py | 55 +++++++++++ .../mgmt/keyvault/models/deleted_vault_py3.py | 49 ++++++++++ .../azure/mgmt/keyvault/models/ip_rule.py | 10 +- .../azure/mgmt/keyvault/models/ip_rule_py3.py | 37 ++++++++ .../key_vault_management_client_enums.py | 22 +++-- .../mgmt/keyvault/models/log_specification.py | 10 +- .../keyvault/models/log_specification_py3.py | 36 +++++++ .../mgmt/keyvault/models/network_rule_set.py | 12 +-- .../keyvault/models/network_rule_set_py3.py | 45 +++++++++ .../azure/mgmt/keyvault/models/operation.py | 12 +-- .../mgmt/keyvault/models/operation_display.py | 12 +-- .../keyvault/models/operation_display_py3.py | 40 ++++++++ .../mgmt/keyvault/models/operation_py3.py | 42 ++++++++ .../azure/mgmt/keyvault/models/permissions.py | 12 +-- .../mgmt/keyvault/models/permissions_py3.py | 41 ++++++++ .../azure/mgmt/keyvault/models/resource.py | 14 +-- .../mgmt/keyvault/models/resource_py3.py | 57 +++++++++++ .../keyvault/models/service_specification.py | 6 +- .../models/service_specification_py3.py | 29 ++++++ .../azure/mgmt/keyvault/models/sku.py | 15 +-- .../azure/mgmt/keyvault/models/sku_py3.py | 45 +++++++++ .../azure/mgmt/keyvault/models/vault.py | 14 +-- .../models/vault_access_policy_parameters.py | 10 +- .../vault_access_policy_parameters_py3.py | 57 +++++++++++ .../models/vault_access_policy_properties.py | 14 +-- .../vault_access_policy_properties_py3.py | 36 +++++++ ...ault_check_name_availability_parameters.py | 14 +-- ..._check_name_availability_parameters_py3.py | 44 +++++++++ .../vault_create_or_update_parameters.py | 18 ++-- .../vault_create_or_update_parameters_py3.py | 44 +++++++++ .../keyvault/models/vault_patch_parameters.py | 8 +- .../models/vault_patch_parameters_py3.py | 32 +++++++ .../keyvault/models/vault_patch_properties.py | 24 ++--- .../models/vault_patch_properties_py3.py | 82 ++++++++++++++++ .../mgmt/keyvault/models/vault_properties.py | 34 +++---- .../keyvault/models/vault_properties_py3.py | 94 ++++++++++++++++++ .../azure/mgmt/keyvault/models/vault_py3.py | 57 +++++++++++ .../keyvault/models/virtual_network_rule.py | 10 +- .../models/virtual_network_rule_py3.py | 36 +++++++ .../keyvault/operations/vaults_operations.py | 95 ++++++------------- .../azure/mgmt/keyvault/version.py | 2 +- 48 files changed, 1307 insertions(+), 233 deletions(-) create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/access_policy_entry_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/check_name_availability_result_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/ip_rule_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/network_rule_set_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_display_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/service_specification_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_parameters_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_access_policy_properties_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_check_name_availability_parameters_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_create_or_update_parameters_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_parameters_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_properties_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_py3.py create mode 100644 azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule_py3.py diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/__init__.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/__init__.py index 58dac299a951..e561ff7983d0 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/__init__.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/__init__.py @@ -9,28 +9,52 @@ # regenerated. # -------------------------------------------------------------------------- -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 +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 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 index 2b4ccd6fb4cb..532fd4ad3cc4 100644 --- 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,18 +16,20 @@ 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. + :param permissions: Required. Permissions the identity has for keys, + secrets and certificates. :type permissions: ~azure.mgmt.keyvault.models.Permissions """ @@ -44,9 +46,9 @@ class AccessPolicyEntry(Model): 'permissions': {'key': 'permissions', 'type': 'Permissions'}, } - def __init__(self, tenant_id, object_id, permissions, application_id=None): - super(AccessPolicyEntry, self).__init__() - 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 index 6e8d8b5a2a9b..eb924fe2ecd6 100644 --- 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 @@ -43,8 +43,8 @@ class CheckNameAvailabilityResult(Model): 'message': {'key': 'message', 'type': 'str'}, } - def __init__(self): - super(CheckNameAvailabilityResult, self).__init__() + 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 index 7b49d29ed836..fde8fff07353 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault.py @@ -41,9 +41,9 @@ class DeletedVault(Model): 'properties': {'key': 'properties', 'type': 'DeletedVaultProperties'}, } - def __init__(self, properties=None): - super(DeletedVault, self).__init__() + 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_properties.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties.py index 3247a439d946..76fa9d43de1f 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/deleted_vault_properties.py @@ -46,8 +46,8 @@ class DeletedVaultProperties(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self): - super(DeletedVaultProperties, self).__init__() + 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 index 4e8dd1fdfc34..8dc2808dd197 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/ip_rule.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/ip_rule.py @@ -16,7 +16,9 @@ class IPRule(Model): """A rule governing the accesibility of a vault from a specific ip address or ip range. - :param value: An IPv4 address range in CIDR notation, such as + 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 @@ -30,6 +32,6 @@ class IPRule(Model): 'value': {'key': 'value', 'type': 'str'}, } - def __init__(self, value): - super(IPRule, self).__init__() - self.value = value + 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 index 871b034f2215..e31e5b8e5c8f 100644 --- 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" @@ -86,31 +88,31 @@ class StoragePermissions(Enum): deletesas = "deletesas" -class CreateMode(Enum): +class CreateMode(str, Enum): recover = "recover" default = "default" -class NetworkRuleBypassOptions(Enum): +class NetworkRuleBypassOptions(str, Enum): azure_services = "AzureServices" none = "None" -class NetworkRuleAction(Enum): +class NetworkRuleAction(str, Enum): allow = "Allow" deny = "Deny" -class Reason(Enum): +class Reason(str, Enum): account_name_invalid = "AccountNameInvalid" already_exists = "AlreadyExists" -class AccessPolicyUpdateKind(Enum): +class AccessPolicyUpdateKind(str, Enum): add = "add" replace = "replace" diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification.py index 1c4e46d69fbd..092f8d7039b9 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/log_specification.py @@ -29,8 +29,8 @@ class LogSpecification(Model): 'blob_duration': {'key': 'blobDuration', 'type': 'str'}, } - def __init__(self, name=None, display_name=None, blob_duration=None): - super(LogSpecification, self).__init__() - self.name = name - self.display_name = display_name - self.blob_duration = blob_duration + 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 index ff6a68c37bc0..59ccba80617a 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/network_rule_set.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/network_rule_set.py @@ -37,9 +37,9 @@ class NetworkRuleSet(Model): 'virtual_network_rules': {'key': 'virtualNetworkRules', 'type': '[VirtualNetworkRule]'}, } - def __init__(self, bypass=None, default_action=None, ip_rules=None, virtual_network_rules=None): - super(NetworkRuleSet, self).__init__() - self.bypass = bypass - self.default_action = default_action - self.ip_rules = ip_rules - self.virtual_network_rules = virtual_network_rules + 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 index 27e52fdb7f54..201a18369a5d 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation.py @@ -34,9 +34,9 @@ class Operation(Model): 'service_specification': {'key': 'properties.serviceSpecification', 'type': 'ServiceSpecification'}, } - def __init__(self, name=None, display=None, origin=None, service_specification=None): - super(Operation, self).__init__() - self.name = name - self.display = display - self.origin = origin - self.service_specification = service_specification + 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 index ccb8d7adee3a..6aaa72c83818 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_display.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/operation_display.py @@ -32,9 +32,9 @@ class OperationDisplay(Model): 'description': {'key': 'description', 'type': 'str'}, } - def __init__(self, provider=None, resource=None, operation=None, description=None): - super(OperationDisplay, self).__init__() - self.provider = provider - self.resource = resource - self.operation = operation - self.description = description + 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_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 index 25d73401a680..cd774ee7763f 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/permissions.py @@ -33,9 +33,9 @@ class Permissions(Model): 'storage': {'key': 'storage', 'type': '[str]'}, } - def __init__(self, keys=None, secrets=None, certificates=None, storage=None): - super(Permissions, self).__init__() - 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 index 9d91463bfeee..0c30e1ffcb16 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/resource.py @@ -18,14 +18,16 @@ 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 :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[str, str] @@ -46,10 +48,10 @@ class Resource(Model): 'tags': {'key': 'tags', 'type': '{str}'}, } - def __init__(self, location, tags=None): - super(Resource, self).__init__() + def __init__(self, **kwargs): + super(Resource, self).__init__(**kwargs) self.id = None 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_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 index a4fa109f9243..e049692e09c0 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/service_specification.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/service_specification.py @@ -24,6 +24,6 @@ class ServiceSpecification(Model): 'log_specifications': {'key': 'logSpecifications', 'type': '[LogSpecification]'}, } - def __init__(self, log_specifications=None): - super(ServiceSpecification, self).__init__() - self.log_specifications = log_specifications + 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 index 69a4758e155f..821f817256a4 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/sku.py @@ -18,10 +18,13 @@ 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' + :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 """ @@ -37,6 +40,6 @@ class Sku(Model): family = "A" - def __init__(self, name): - super(Sku, self).__init__() - 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 index c47e0d8b68e0..6ec3c66c53e1 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault.py @@ -18,18 +18,20 @@ 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 :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[str, str] - :param properties: Properties of the vault + :param properties: Required. Properties of the vault :type properties: ~azure.mgmt.keyvault.models.VaultProperties """ @@ -50,6 +52,6 @@ class Vault(Resource): 'properties': {'key': 'properties', 'type': 'VaultProperties'}, } - def __init__(self, location, properties, tags=None): - super(Vault, self).__init__(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 index 65667c484b09..a2a6e5db234e 100644 --- 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 @@ -18,6 +18,8 @@ class VaultAccessPolicyParameters(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 resource id of the access policy. :vartype id: str :ivar name: The resource name of the access policy. @@ -26,7 +28,7 @@ class VaultAccessPolicyParameters(Model): :vartype type: str :ivar location: The resource type of the the access policy. :vartype location: str - :param properties: Properties of the access policy + :param properties: Required. Properties of the access policy :type properties: ~azure.mgmt.keyvault.models.VaultAccessPolicyProperties """ @@ -46,10 +48,10 @@ class VaultAccessPolicyParameters(Model): 'properties': {'key': 'properties', 'type': 'VaultAccessPolicyProperties'}, } - def __init__(self, properties): - super(VaultAccessPolicyParameters, self).__init__() + def __init__(self, **kwargs): + super(VaultAccessPolicyParameters, self).__init__(**kwargs) self.id = None self.name = None self.type = None self.location = None - self.properties = properties + 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 index 2c93c6b466aa..cf906d226126 100644 --- 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 @@ -15,9 +15,11 @@ class VaultAccessPolicyProperties(Model): """Properties of the vault access policy. - :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. + 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] """ @@ -29,6 +31,6 @@ class VaultAccessPolicyProperties(Model): 'access_policies': {'key': 'accessPolicies', 'type': '[AccessPolicyEntry]'}, } - def __init__(self, access_policies): - super(VaultAccessPolicyProperties, self).__init__() - self.access_policies = access_policies + 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 index ff2b7e738674..b49bc5dbb513 100644 --- 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 @@ -18,10 +18,12 @@ class VaultCheckNameAvailabilityParameters(Model): Variables are only populated by the server, and will be ignored when sending a request. - :param name: The vault name. + All required parameters must be populated in order to send to Azure. + + :param name: Required. The vault name. :type name: str - :ivar type: The type of resource, Microsoft.KeyVault/vaults. Default - value: "Microsoft.KeyVault/vaults" . + :ivar type: Required. The type of resource, Microsoft.KeyVault/vaults. + Default value: "Microsoft.KeyVault/vaults" . :vartype type: str """ @@ -37,6 +39,6 @@ class VaultCheckNameAvailabilityParameters(Model): type = "Microsoft.KeyVault/vaults" - def __init__(self, name): - super(VaultCheckNameAvailabilityParameters, self).__init__() - self.name = name + 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 index 8e5a87895bf7..17d358af45c4 100644 --- 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,12 +15,14 @@ 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[str, str] - :param properties: Properties of the vault + :param properties: Required. Properties of the vault :type properties: ~azure.mgmt.keyvault.models.VaultProperties """ @@ -35,8 +37,8 @@ class VaultCreateOrUpdateParameters(Model): 'properties': {'key': 'properties', 'type': 'VaultProperties'}, } - def __init__(self, location, properties, tags=None): - super(VaultCreateOrUpdateParameters, self).__init__() - 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_patch_parameters.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_parameters.py index ada3e9a9c58d..b38fcc1b32df 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_parameters.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_parameters.py @@ -26,7 +26,7 @@ class VaultPatchParameters(Model): 'properties': {'key': 'properties', 'type': 'VaultPatchProperties'}, } - def __init__(self, tags=None, properties=None): - super(VaultPatchParameters, self).__init__() - self.tags = tags - self.properties = properties + 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 index 22d3a0b8c88b..e1e4b1b5b89d 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_properties.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_patch_properties.py @@ -68,15 +68,15 @@ class VaultPatchProperties(Model): 'network_acls': {'key': 'networkAcls', 'type': 'NetworkRuleSet'}, } - def __init__(self, tenant_id=None, sku=None, access_policies=None, enabled_for_deployment=None, enabled_for_disk_encryption=None, enabled_for_template_deployment=None, enable_soft_delete=None, create_mode=None, enable_purge_protection=None, network_acls=None): - super(VaultPatchProperties, self).__init__() - 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 + 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 index d903a7d93145..a09d68c304b0 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_properties.py @@ -15,10 +15,12 @@ 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 + :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 @@ -77,16 +79,16 @@ class VaultProperties(Model): '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, enable_purge_protection=None, network_acls=None): - super(VaultProperties, self).__init__() - 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 + 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..bcbb18be36d5 --- /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 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 index f99d02ada8fd..638060696e8e 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/virtual_network_rule.py @@ -16,7 +16,9 @@ class VirtualNetworkRule(Model): """A rule governing the accesibility of a vault from a specific virtual network. - :param id: Full resource id of a vnet subnet, such as + 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 """ @@ -29,6 +31,6 @@ class VirtualNetworkRule(Model): 'id': {'key': 'id', 'type': 'str'}, } - def __init__(self, id): - super(VirtualNetworkRule, self).__init__() - self.id = id + 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/vaults_operations.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py index e13133a7f284..22e2537ac076 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py @@ -12,8 +12,8 @@ import uuid from msrest.pipeline import ClientRawResponse from msrestazure.azure_exceptions import CloudError -from msrest.exceptions import DeserializationError -from msrestazure.azure_operation import AzureOperationPoller +from msrest.polling import LROPoller, NoPolling +from msrestazure.polling.arm_polling import ARMPolling from .. import models @@ -94,7 +94,7 @@ def _create_or_update_initial( return deserialized def create_or_update( - self, resource_group_name, vault_name, parameters, custom_headers=None, raw=False, **operation_config): + 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 @@ -106,13 +106,16 @@ def create_or_update( :type parameters: ~azure.mgmt.keyvault.models.VaultCreateOrUpdateParameters :param dict custom_headers: headers that will be added to the request - :param bool raw: returns the direct response alongside the - deserialized response - :return: An instance of AzureOperationPoller that returns Vault or - ClientRawResponse if raw=true + :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 ~msrest.pipeline.ClientRawResponse + or + ~msrestazure.azure_operation.AzureOperationPoller[~msrest.pipeline.ClientRawResponse[~azure.mgmt.keyvault.models.Vault]] :raises: :class:`CloudError` """ raw_result = self._create_or_update_initial( @@ -123,30 +126,8 @@ def create_or_update( raw=True, **operation_config ) - if raw: - return raw_result - - # Construct and send request - def long_running_send(): - return raw_result.response - - def get_long_running_status(status_link, headers=None): - - request = self._client.get(status_link) - if headers: - request.headers.update(headers) - header_parameters = {} - header_parameters['x-ms-client-request-id'] = raw_result.response.request.headers['x-ms-client-request-id'] - return self._client.send( - request, header_parameters, stream=False, **operation_config) def get_long_running_output(response): - - if response.status_code not in [200, 201]: - exp = CloudError(response) - exp.request_id = response.headers.get('x-ms-request-id') - raise exp - deserialized = self._deserialize('Vault', response) if raw: @@ -155,12 +136,13 @@ def get_long_running_output(response): return deserialized - 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) create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}'} def update( @@ -764,7 +746,7 @@ def _purge_deleted_initial( return client_raw_response def purge_deleted( - self, vault_name, location, custom_headers=None, raw=False, **operation_config): + 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. @@ -773,12 +755,14 @@ def purge_deleted( :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 - :return: An instance of AzureOperationPoller that returns None or - ClientRawResponse if raw=true + :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 - ~msrest.pipeline.ClientRawResponse + ~msrestazure.azure_operation.AzureOperationPoller[~msrest.pipeline.ClientRawResponse[None]] :raises: :class:`CloudError` """ raw_result = self._purge_deleted_initial( @@ -788,40 +772,19 @@ def purge_deleted( raw=True, **operation_config ) - if raw: - return raw_result - - # Construct and send request - def long_running_send(): - return raw_result.response - - def get_long_running_status(status_link, headers=None): - - request = self._client.get(status_link) - if headers: - request.headers.update(headers) - header_parameters = {} - header_parameters['x-ms-client-request-id'] = raw_result.response.request.headers['x-ms-client-request-id'] - return self._client.send( - request, header_parameters, stream=False, **operation_config) def get_long_running_output(response): - - if response.status_code not in [200, 202]: - exp = CloudError(response) - exp.request_id = response.headers.get('x-ms-request-id') - raise exp - if raw: client_raw_response = ClientRawResponse(None, response) return client_raw_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( diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py index 7cc8dceb7a1e..affaef0c987e 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "1.0.0a2" +VERSION = "1.0.0b1" From af11e2b0fa6771fb6164703f00e85f42e5d0621a Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 3 Apr 2018 15:34:59 -0700 Subject: [PATCH 33/49] updating tests for backwards breaking changes in models --- azure-mgmt/tests/keyvault_testcase.py | 2 +- azure-mgmt/tests/test_key_vault_data.py | 143 ++++++++++++++---------- 2 files changed, 85 insertions(+), 60 deletions(-) diff --git a/azure-mgmt/tests/keyvault_testcase.py b/azure-mgmt/tests/keyvault_testcase.py index 2c8e18b32464..832de0ac103e 100644 --- a/azure-mgmt/tests/keyvault_testcase.py +++ b/azure-mgmt/tests/keyvault_testcase.py @@ -189,7 +189,7 @@ def create_vault(self, group_name, vault_name, permissions=None, enabled_for_dep 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), + sku=Sku(name=sku or SkuName.premium.value), access_policies=access_policies, vault_uri=None, enabled_for_deployment=enabled_for_deployment, diff --git a/azure-mgmt/tests/test_key_vault_data.py b/azure-mgmt/tests/test_key_vault_data.py index 45d9683919b2..bccbe2555231 100644 --- a/azure-mgmt/tests/test_key_vault_data.py +++ b/azure-mgmt/tests/test_key_vault_data.py @@ -763,9 +763,11 @@ def tearDown(self): 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')) + 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 @@ -853,17 +855,19 @@ def test_certificate_crud_operations(self, vault=None): 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 - )) + 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 @@ -978,9 +982,12 @@ def test_certificate_crud_issuer(self, vault=None): vault_uri = vault.properties.vault_uri issuer_name = 'pythonIssuer' - issuer_credentials = IssuerCredentials('keyvaultuser', 'password') + issuer_credentials = IssuerCredentials(account_id='keyvaultuser', password='password') organization_details = OrganizationDetails( - admin_details=[AdministratorDetails('Jane', 'Doe', 'admin@contoso.com', '4256666666')]) + 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) @@ -991,9 +998,12 @@ def test_certificate_crud_issuer(self, vault=None): self._validate_issuer_bundle(issuer_bundle, vault_uri, issuer_name, 'test', issuer_credentials, organization_details) # update certificate issue - new_credentials = IssuerCredentials('xboxuser', 'security') + new_credentials = IssuerCredentials(account_id='xboxuser', password='security') new_org_details = OrganizationDetails( - admin_details=[AdministratorDetails('Jane II', 'Doe', 'admin@contoso.com', '1111111111')]) + 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) @@ -1019,9 +1029,12 @@ def test_certificate_list_issuers(self, vault=None): # create some certificate issuers( for x in range(0, max_issuers): issuer_name = 'pythonIssuer{}'.format(x + 1) - issuer_credentials = IssuerCredentials('keyvaultuser', 'password') + issuer_credentials = IssuerCredentials(account_id='keyvaultuser', password='password') organization_details = OrganizationDetails( - admin_details=[AdministratorDetails('Jane', 'Doe', 'admin@contoso.com', '4256666666')]) + 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: @@ -1046,17 +1059,19 @@ def test_certificate_async_request_cancellation_and_deletion(self, vault=None): 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 - )) + 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) @@ -1093,8 +1108,12 @@ def test_certificate_crud_contacts(self, vault=None): vault_uri = vault.properties.vault_uri contact_list = [ - Contact('admin@contoso.com', 'John Doe', '1111111111'), - Contact('admin2@contoso.com', 'John Doe2', '2222222222') + 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 @@ -1130,10 +1149,12 @@ def test_certificate_policy(self, vault=None): self.assertIsNotNone(retrieved_policy) # update certificate policy - cert_policy = CertificatePolicy( - KeyProperties(True, 'RSA', 2048, False), - SecretProperties('application/x-pkcs12'), - issuer_parameters=IssuerParameters('Self') + 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) @@ -1146,17 +1167,19 @@ def test_certificate_manual_enrolled(self, vault=None): 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 - )) + 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) @@ -1174,17 +1197,19 @@ def test_certificate_recover_and_purge(self, vault=None): 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 - )) + 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))) From 6b2606a96b829251e750db665f921a87005fcf96 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 3 Apr 2018 16:53:41 -0700 Subject: [PATCH 34/49] updating KeyVaultAuthentication to support reused sessions --- .../azure/keyvault/custom/key_vault_authentication.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py index d990036eee4b..8a5471339b0f 100644 --- a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py +++ b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py @@ -227,8 +227,8 @@ def auth_callback(server, resource, scope, scheme): 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 super(KeyVaultAuthentication, self).signed_session() session.auth = self.auth return session From 2976ad9e1aa605521182a42a05066cbf8f57c78c Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 3 Apr 2018 16:54:32 -0700 Subject: [PATCH 35/49] setup.py fixes --- azure-keyvault/setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/azure-keyvault/setup.py b/azure-keyvault/setup.py index acefe13ffc03..432dbfcbc4e2 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', @@ -80,7 +80,7 @@ install_requires=[ 'msrestazure>=0.4.15', 'msrest>=0.4.17', - 'azure-common~=1.1.5', + 'azure-common~=1.1', 'cryptography>=2.1.4', 'requests>=2.18.4' ], From 33b3ffd92cc690005135d9bfca60d4fac174c36c Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 3 Apr 2018 17:10:09 -0700 Subject: [PATCH 36/49] update from PR feedback --- .../azure/keyvault/custom/key_vault_authentication.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py index 8a5471339b0f..a852040f0b55 100644 --- a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py +++ b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py @@ -228,7 +228,7 @@ def auth_callback(server, resource, scope, scheme): self._callback = authorization_callback def signed_session(self, session=None): - session = session or super(KeyVaultAuthentication, self).signed_session() + session = session or requests.Session() session.auth = self.auth return session From bc883a67b8599ed69dd6ecaf6ef35676a55756ad Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 10 Apr 2018 14:21:35 -0700 Subject: [PATCH 37/49] updating custom imports to import relatively instead of from namespace --- .../azure/keyvault/custom/key_vault_authentication.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py index a852040f0b55..3dd29ab89e3c 100644 --- a/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py +++ b/azure-keyvault/azure/keyvault/custom/key_vault_authentication.py @@ -9,8 +9,8 @@ from collections import namedtuple from requests.auth import AuthBase from requests.cookies import extract_cookies_to_jar -from azure.keyvault import HttpChallenge -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 From fa15fb217821d54687fede5499365c999dc29a3a Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 10 Apr 2018 17:02:25 -0700 Subject: [PATCH 38/49] updating release notes for beta 1 release --- azure-keyvault/HISTORY.rst | 8 ++++++++ azure-mgmt-keyvault/HISTORY.rst | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/azure-keyvault/HISTORY.rst b/azure-keyvault/HISTORY.rst index 4bb356ab85c3..fbf06610698e 100644 --- a/azure-keyvault/HISTORY.rst +++ b/azure-keyvault/HISTORY.rst @@ -2,8 +2,16 @@ 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 diff --git a/azure-mgmt-keyvault/HISTORY.rst b/azure-mgmt-keyvault/HISTORY.rst index 67ffffcd78a1..b779330e83c7 100644 --- a/azure-mgmt-keyvault/HISTORY.rst +++ b/azure-mgmt-keyvault/HISTORY.rst @@ -2,9 +2,19 @@ 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 From af6753148b266e85b8047d192dc8a70450035b80 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Tue, 10 Apr 2018 17:40:37 -0700 Subject: [PATCH 39/49] fixing markup error in HISTORY.rst --- azure-keyvault/HISTORY.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-keyvault/HISTORY.rst b/azure-keyvault/HISTORY.rst index fbf06610698e..95c7587c4258 100644 --- a/azure-keyvault/HISTORY.rst +++ b/azure-keyvault/HISTORY.rst @@ -3,7 +3,7 @@ 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 From 3350b8cf0ce74ca5232de312c8902752cee8a7e5 Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Fri, 18 May 2018 17:27:14 -0700 Subject: [PATCH 40/49] migrating tests to azure-keyvault\tests and removing legacy tests --- azure-keyvault/tests/keyvault_preparer.py | 104 ++ azure-keyvault/tests/keyvault_testcase.py | 21 + ...ync_request_cancellation_and_deletion.yaml | 231 +++ .../test_certificates.test_crud_contacts.yaml | 161 +++ .../test_certificates.test_crud_issuer.yaml | 194 +++ ...est_certificates.test_crud_operations.yaml | 353 +++++ .../test_certificates.test_import.yaml | 67 + .../test_certificates.test_list.yaml | 130 ++ .../test_certificates.test_list_issuers.yaml | 130 ++ .../test_certificates.test_list_versions.yaml | 130 ++ ...est_certificates.test_manual_enrolled.yaml | 131 ++ .../test_certificates.test_policy.yaml | 160 +++ ...t_certificates.test_recover_and_purge.yaml | 530 +++++++ ...test_keys.test_key_backup_and_restore.yaml | 158 ++ .../test_keys.test_key_crud_operations.yaml | 253 ++++ ...est_keys.test_key_encrypt_and_decrypt.yaml | 196 +++ .../recordings/test_keys.test_key_import.yaml | 110 ++ .../recordings/test_keys.test_key_list.yaml | 126 ++ .../test_keys.test_key_list_versions.yaml | 126 ++ .../test_keys.test_key_recover_and_purge.yaml | 462 ++++++ .../test_keys.test_key_sign_and_verify.yaml | 198 +++ .../test_keys.test_key_wrap_and_unwrap.yaml | 196 +++ .../test_secrets.test_backup_restore.yaml | 96 ++ .../test_secrets.test_list_versions.yaml | 126 ++ .../test_secrets.test_recover_purge.yaml | 522 +++++++ ...t_secrets.test_secret_crud_operations.yaml | 254 ++++ .../test_secrets.test_secret_list.yaml | 126 ++ ...est_secrets.test_secret_list_versions.yaml | 126 ++ .../recordings/test_storage.test_e2e.yaml | 568 ++++++++ azure-keyvault/tests/test_certificates.py | 515 +++++++ azure-keyvault/tests/test_custom.py | 180 +++ azure-keyvault/tests/test_keys.py | 355 +++++ azure-keyvault/tests/test_secrets.py | 216 +++ azure-keyvault/tests/test_storage.py | 192 +++ azure-mgmt/tests/keyvault_testcase.py | 239 --- azure-mgmt/tests/test_key_vault_data.py | 1278 ----------------- azure-mgmt/tests/test_mgmt_keyvault.py | 72 - 37 files changed, 7443 insertions(+), 1589 deletions(-) create mode 100644 azure-keyvault/tests/keyvault_preparer.py create mode 100644 azure-keyvault/tests/keyvault_testcase.py create mode 100644 azure-keyvault/tests/recordings/test_certificates.test_async_request_cancellation_and_deletion.yaml create mode 100644 azure-keyvault/tests/recordings/test_certificates.test_crud_contacts.yaml create mode 100644 azure-keyvault/tests/recordings/test_certificates.test_crud_issuer.yaml create mode 100644 azure-keyvault/tests/recordings/test_certificates.test_crud_operations.yaml create mode 100644 azure-keyvault/tests/recordings/test_certificates.test_import.yaml create mode 100644 azure-keyvault/tests/recordings/test_certificates.test_list.yaml create mode 100644 azure-keyvault/tests/recordings/test_certificates.test_list_issuers.yaml create mode 100644 azure-keyvault/tests/recordings/test_certificates.test_list_versions.yaml create mode 100644 azure-keyvault/tests/recordings/test_certificates.test_manual_enrolled.yaml create mode 100644 azure-keyvault/tests/recordings/test_certificates.test_policy.yaml create mode 100644 azure-keyvault/tests/recordings/test_certificates.test_recover_and_purge.yaml create mode 100644 azure-keyvault/tests/recordings/test_keys.test_key_backup_and_restore.yaml create mode 100644 azure-keyvault/tests/recordings/test_keys.test_key_crud_operations.yaml create mode 100644 azure-keyvault/tests/recordings/test_keys.test_key_encrypt_and_decrypt.yaml create mode 100644 azure-keyvault/tests/recordings/test_keys.test_key_import.yaml create mode 100644 azure-keyvault/tests/recordings/test_keys.test_key_list.yaml create mode 100644 azure-keyvault/tests/recordings/test_keys.test_key_list_versions.yaml create mode 100644 azure-keyvault/tests/recordings/test_keys.test_key_recover_and_purge.yaml create mode 100644 azure-keyvault/tests/recordings/test_keys.test_key_sign_and_verify.yaml create mode 100644 azure-keyvault/tests/recordings/test_keys.test_key_wrap_and_unwrap.yaml create mode 100644 azure-keyvault/tests/recordings/test_secrets.test_backup_restore.yaml create mode 100644 azure-keyvault/tests/recordings/test_secrets.test_list_versions.yaml create mode 100644 azure-keyvault/tests/recordings/test_secrets.test_recover_purge.yaml create mode 100644 azure-keyvault/tests/recordings/test_secrets.test_secret_crud_operations.yaml create mode 100644 azure-keyvault/tests/recordings/test_secrets.test_secret_list.yaml create mode 100644 azure-keyvault/tests/recordings/test_secrets.test_secret_list_versions.yaml create mode 100644 azure-keyvault/tests/recordings/test_storage.test_e2e.yaml create mode 100644 azure-keyvault/tests/test_certificates.py create mode 100644 azure-keyvault/tests/test_custom.py create mode 100644 azure-keyvault/tests/test_keys.py create mode 100644 azure-keyvault/tests/test_secrets.py create mode 100644 azure-keyvault/tests/test_storage.py delete mode 100644 azure-mgmt/tests/keyvault_testcase.py delete mode 100644 azure-mgmt/tests/test_key_vault_data.py delete mode 100644 azure-mgmt/tests/test_mgmt_keyvault.py 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_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/tests/keyvault_testcase.py b/azure-mgmt/tests/keyvault_testcase.py deleted file mode 100644 index 832de0ac103e..000000000000 --- a/azure-mgmt/tests/keyvault_testcase.py +++ /dev/null @@ -1,239 +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, HttpChallenge - -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 = HttpChallenge(request.url, 'Bearer authorization=fake-url,resource=https://vault.azure.net') - security = self._get_message_security(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(name=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).result() - - 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/test_key_vault_data.py b/azure-mgmt/tests/test_key_vault_data.py deleted file mode 100644 index bccbe2555231..000000000000 --- a/azure-mgmt/tests/test_key_vault_data.py +++ /dev/null @@ -1,1278 +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.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(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(): - 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(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 - - @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(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 - - @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(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) - - @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(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) - - @sharedvault - def test_certificate_crud_contacts(self, vault=None): - 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 - - @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(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) - - @sharedvault - def test_certificate_manual_enrolled(self, vault=None): - 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) - - @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(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(): - 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 d1603589f92d..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': [] - } - } - ).result() - 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() From 3e50c5c713968b16205cd87739e051990b011f1e Mon Sep 17 00:00:00 2001 From: Scott Schaab Date: Mon, 21 May 2018 18:22:05 -0700 Subject: [PATCH 41/49] removing legacy tests and service tests __init__.py files to fix loading errors --- .gitignore | 1 + azure-mgmt-batchai/tests/__init__.py | 0 azure-mgmt-batchai/tests/helpers.py | 8 +- .../tests/test_mgmt_batchai_clusters.py | 87 +- .../tests/test_mgmt_batchai_file_servers.py | 57 +- .../tests/test_mgmt_batchai_jobs.py | 242 +- .../test_mgmt_batchai_quota_and_usage.py | 6 +- azure-mgmt-botservice/tests/__init__.py | 0 azure-mgmt-compute/tests/__init__.py | 0 azure-mgmt-compute/tests/test_mgmt_msi.py | 2 +- .../tests/__init__.py | 0 .../tests/__init__.py | 0 .../tests/__init__.py | 1 - azure-mgmt-media/tests/__init__.py | 0 azure-mgmt-recoveryservices/tests/__init__.py | 0 .../tests/test_mgmt_recoveryservices.py | 2 +- azure-mgmt-reservations/tests/__init__.py | 1 - azure-mgmt-storage/tests/__init__.py | 0 azure-mgmt/tests/__init__.py | 1 - azure-mgmt/tests/mgmt_settings_fake.py | 36 - azure-mgmt/tests/mgmt_testcase.py | 147 - ...ync_request_cancellation_and_deletion.yaml | 286 -- ...t_data.test_certificate_crud_contacts.yaml | 164 - ...ult_data.test_certificate_crud_issuer.yaml | 198 -- ...data.test_certificate_crud_operations.yaml | 334 -- ...ey_vault_data.test_certificate_import.yaml | 67 - ..._key_vault_data.test_certificate_list.yaml | 194 -- ...lt_data.test_certificate_list_issuers.yaml | 132 - ...t_data.test_certificate_list_versions.yaml | 132 - ...data.test_certificate_manual_enrolled.yaml | 136 - ...ey_vault_data.test_certificate_policy.yaml | 163 - ...ta.test_certificate_recover_and_purge.yaml | 629 ---- ...data.test_iterate_empty_list_commands.yaml | 343 -- ...ault_data.test_key_backup_and_restore.yaml | 473 --- ...y_vault_data.test_key_crud_operations.yaml | 321 -- ...ult_data.test_key_encrypt_and_decrypt.yaml | 205 -- .../test_key_vault_data.test_key_import.yaml | 113 - .../test_key_vault_data.test_key_list.yaml | 314 -- ...key_vault_data.test_key_list_versions.yaml | 128 - ...vault_data.test_key_recover_and_purge.yaml | 1116 ------ ...y_vault_data.test_key_sign_and_verify.yaml | 203 -- ...y_vault_data.test_key_wrap_and_unwrap.yaml | 556 --- ...t_data.test_secret_backup_and_restore.yaml | 161 - ...ault_data.test_secret_crud_operations.yaml | 260 -- .../test_key_vault_data.test_secret_list.yaml | 252 -- ..._vault_data.test_secret_list_versions.yaml | 128 - ...lt_data.test_secret_recover_and_purge.yaml | 3096 ----------------- ..._mgmt_keyvault.test_vaults_operations.yaml | 206 -- 48 files changed, 212 insertions(+), 10689 deletions(-) delete mode 100644 azure-mgmt-batchai/tests/__init__.py delete mode 100644 azure-mgmt-botservice/tests/__init__.py delete mode 100644 azure-mgmt-compute/tests/__init__.py delete mode 100644 azure-mgmt-containerinstance/tests/__init__.py delete mode 100644 azure-mgmt-machinelearningcompute/tests/__init__.py delete mode 100644 azure-mgmt-managementpartner/tests/__init__.py delete mode 100644 azure-mgmt-media/tests/__init__.py delete mode 100644 azure-mgmt-recoveryservices/tests/__init__.py delete mode 100644 azure-mgmt-reservations/tests/__init__.py delete mode 100644 azure-mgmt-storage/tests/__init__.py delete mode 100644 azure-mgmt/tests/__init__.py delete mode 100644 azure-mgmt/tests/mgmt_settings_fake.py delete mode 100644 azure-mgmt/tests/mgmt_testcase.py delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_async_request_cancellation_and_deletion.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_contacts.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_issuer.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_crud_operations.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_import.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list_issuers.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_list_versions.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_manual_enrolled.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_policy.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_certificate_recover_and_purge.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_iterate_empty_list_commands.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_key_backup_and_restore.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_key_crud_operations.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_key_encrypt_and_decrypt.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_key_import.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_key_list.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_key_list_versions.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_key_recover_and_purge.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_key_sign_and_verify.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_key_wrap_and_unwrap.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_secret_backup_and_restore.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_secret_crud_operations.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_secret_list.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_secret_list_versions.yaml delete mode 100644 azure-mgmt/tests/recordings/test_key_vault_data.test_secret_recover_and_purge.yaml delete mode 100644 azure-mgmt/tests/recordings/test_mgmt_keyvault.test_vaults_operations.yaml diff --git a/.gitignore b/.gitignore index c554e3bf2d96..aeac92c5b51b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Python cache __pycache__/ *.pyc +.pytest_cache # Virtual environment env*/ diff --git a/azure-mgmt-batchai/tests/__init__.py b/azure-mgmt-batchai/tests/__init__.py deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/azure-mgmt-batchai/tests/helpers.py b/azure-mgmt-batchai/tests/helpers.py index a70bce5c5cb6..fd103e64fe43 100644 --- a/azure-mgmt-batchai/tests/helpers.py +++ b/azure-mgmt-batchai/tests/helpers.py @@ -522,10 +522,10 @@ def create_batchai_client(preparer): :returns BatchAIManagementClient: an instance of Batch AI management client """ try: - from . import custom_client + from custom_client import create as create_custom_client except ImportError: - custom_client = None - if custom_client is not None: - return custom_client.create() + create_custom_client = None + if create_custom_client is not None: + return create_custom_client() else: return preparer.create_mgmt_client(BatchAIManagementClient) diff --git a/azure-mgmt-batchai/tests/test_mgmt_batchai_clusters.py b/azure-mgmt-batchai/tests/test_mgmt_batchai_clusters.py index 2afd734761d8..0e78ab749c9c 100644 --- a/azure-mgmt-batchai/tests/test_mgmt_batchai_clusters.py +++ b/azure-mgmt-batchai/tests/test_mgmt_batchai_clusters.py @@ -12,17 +12,22 @@ from devtools_testutils import ResourceGroupPreparer from devtools_testutils import StorageAccountPreparer -from . import helpers +from helpers import ( + create_batchai_client, create_cluster, assert_existing_clusters_are, wait_for_nodes, + assert_remote_login_info_reported_for_nodes, assert_existing_clusters_are, get_node_ids, assert_file_in_file_share, + create_custom_job,wait_for_job_completion, assert_job_files_are, LOCATION, FAKE_STORAGE, NODE_STARTUP_TIMEOUT_SEC, + AUTO_SCALE_TIMEOUT_SEC, STANDARD_OUTPUT_DIRECTORY_ID, MINUTE +) class ClusterTestCase(AzureMgmtTestCase): def setUp(self): super(ClusterTestCase, self).setUp() - self.client = helpers.create_batchai_client(self) # type: BatchAIManagementClient + self.client = create_batchai_client(self) # type: BatchAIManagementClient self.cluster_name = self.get_resource_name('cluster') - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) def test_creation_and_deletion(self, resource_group, location, storage_account, storage_account_key): """Tests basic use-case scenario. @@ -31,7 +36,7 @@ def test_creation_and_deletion(self, resource_group, location, storage_account, 3. Execute a task in a docker container 4. Delete cluster """ - cluster = helpers.create_cluster( + cluster = create_cluster( self.client, location, resource_group.name, self.cluster_name, 'STANDARD_D1', 1, storage_account.name, storage_account_key) @@ -40,13 +45,13 @@ def test_creation_and_deletion(self, resource_group, location, storage_account, self.assertEqual(cluster.vm_size, 'STANDARD_D1') # Verify that the cluster is reported in the list of clusters - helpers.assert_existing_clusters_are(self, self.client, resource_group.name, [self.cluster_name]) + assert_existing_clusters_are(self, self.client, resource_group.name, [self.cluster_name]) # Verify that one node is allocated and become available self.assertEqual( - helpers.wait_for_nodes(self.is_live, self.client, resource_group.name, self.cluster_name, 1, - helpers.NODE_STARTUP_TIMEOUT_SEC), 1) - helpers.assert_remote_login_info_reported_for_nodes(self, self.client, resource_group.name, + wait_for_nodes(self.is_live, self.client, resource_group.name, self.cluster_name, 1, + NODE_STARTUP_TIMEOUT_SEC), 1) + assert_remote_login_info_reported_for_nodes(self, self.client, resource_group.name, self.cluster_name, 1) # Verify that the cluster able to run tasks. @@ -55,14 +60,14 @@ def test_creation_and_deletion(self, resource_group, location, storage_account, # Test cluster deletion self.client.clusters.delete(resource_group.name, self.cluster_name).result() - helpers.assert_existing_clusters_are(self, self.client, resource_group.name, []) + assert_existing_clusters_are(self, self.client, resource_group.name, []) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) def test_setup_task_execution(self, resource_group, location, storage_account, storage_account_key): """Tests setup task execution. """ - cluster = helpers.create_cluster( + cluster = create_cluster( self.client, location, resource_group.name, self.cluster_name, 'STANDARD_D1', 1, storage_account.name, storage_account_key, setup_task_cmd='echo $GREETING $SECRET_GREETING', @@ -70,12 +75,12 @@ def test_setup_task_execution(self, resource_group, location, storage_account, s setup_task_secrets={'SECRET_GREETING': 'has a secret'}) # type: models.Cluster # Verify that the cluster is reported in the list of clusters - helpers.assert_existing_clusters_are(self, self.client, resource_group.name, [self.cluster_name]) + assert_existing_clusters_are(self, self.client, resource_group.name, [self.cluster_name]) # Verify that one node is allocated and become available self.assertEqual( - helpers.wait_for_nodes(self.is_live, self.client, resource_group.name, self.cluster_name, 1, - helpers.NODE_STARTUP_TIMEOUT_SEC), 1) + wait_for_nodes(self.is_live, self.client, resource_group.name, self.cluster_name, 1, + NODE_STARTUP_TIMEOUT_SEC), 1) # Check that server doesn't return values for secrets self.assertEqual(len(cluster.node_setup.setup_task.secrets), 1) @@ -84,30 +89,30 @@ def test_setup_task_execution(self, resource_group, location, storage_account, s # Verify that the setup task is completed by checking generated output. BatchAI reports a path which was auto- # generated for storing setup output logs. setup_task_output_path = cluster.node_setup.setup_task.std_out_err_path_suffix - nodes = helpers.get_node_ids(self.client, resource_group.name, self.cluster_name) + nodes = get_node_ids(self.client, resource_group.name, self.cluster_name) self.assertEqual(len(nodes), 1) node_id = nodes[0] - helpers.assert_file_in_file_share(self, storage_account.name, storage_account_key, + assert_file_in_file_share(self, storage_account.name, storage_account_key, setup_task_output_path, 'stdout-{0}.txt'.format(node_id), u'setup task has a secret\n') - helpers.assert_file_in_file_share(self, storage_account.name, storage_account_key, + assert_file_in_file_share(self, storage_account.name, storage_account_key, setup_task_output_path, 'stderr-{0}.txt'.format(node_id), u'') self.client.clusters.delete(resource_group.name, self.cluster_name).result() - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) def test_cluster_resizing(self, resource_group, location, storage_account, storage_account_key): """Tests manual cluster resizing""" - cluster = helpers.create_cluster( + cluster = create_cluster( self.client, location, resource_group.name, self.cluster_name, 'STANDARD_D1', 1, storage_account.name, storage_account_key) # Verify that one node is allocated and become available self.assertEqual( - helpers.wait_for_nodes(self.is_live, self.client, resource_group.name, self.cluster_name, 1, - helpers.NODE_STARTUP_TIMEOUT_SEC), 1) - helpers.assert_remote_login_info_reported_for_nodes(self, self.client, resource_group.name, + wait_for_nodes(self.is_live, self.client, resource_group.name, self.cluster_name, 1, + NODE_STARTUP_TIMEOUT_SEC), 1) + assert_remote_login_info_reported_for_nodes(self, self.client, resource_group.name, self.cluster_name, 1) self.assertCanResizeCluster(resource_group, 0) @@ -117,12 +122,12 @@ def test_cluster_resizing(self, resource_group, location, storage_account, stora self.assertCanRunJobOnHost(resource_group, location, cluster.id) self.client.clusters.delete(resource_group.name, self.cluster_name).result() - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) def test_auto_scaling(self, resource_group, location, storage_account, storage_account_key): """Tests auto-scaling""" # Create the cluster with no nodes. - cluster = helpers.create_cluster( + cluster = create_cluster( self.client, location, resource_group.name, self.cluster_name, 'STANDARD_D1', 0, storage_account.name, storage_account_key) @@ -134,44 +139,44 @@ def test_auto_scaling(self, resource_group, location, storage_account, storage_a maximum_node_count=1))) # Submit a task. BatchAI must increase the number of nodes to execute the task. - self.assertCanRunJobOnHost(resource_group, location, cluster.id, timeout_sec=helpers.AUTO_SCALE_TIMEOUT_SEC) + self.assertCanRunJobOnHost(resource_group, location, cluster.id, timeout_sec=AUTO_SCALE_TIMEOUT_SEC) # Verify that cluster downsized to zero since there are no more jobs for it self.assertEqual( - helpers.wait_for_nodes(self.is_live, self.client, resource_group.name, self.cluster_name, 0, - helpers.NODE_STARTUP_TIMEOUT_SEC), 0) + wait_for_nodes(self.is_live, self.client, resource_group.name, self.cluster_name, 0, + NODE_STARTUP_TIMEOUT_SEC), 0) self.client.clusters.delete(resource_group.name, self.cluster_name).result() - def assertCanRunJobInContainer(self, resource_group, location, cluster_id, timeout_sec=helpers.MINUTE): + def assertCanRunJobInContainer(self, resource_group, location, cluster_id, timeout_sec=MINUTE): self.assertCanRunJob(resource_group, location, cluster_id, 'container_job', models.ContainerSettings(image_source_registry=models.ImageSourceRegistry(image="ubuntu")), timeout_sec) - def assertCanRunJobOnHost(self, resource_group, location, cluster_id, timeout_sec=helpers.MINUTE): + def assertCanRunJobOnHost(self, resource_group, location, cluster_id, timeout_sec=MINUTE): self.assertCanRunJob(resource_group, location, cluster_id, 'host_job', None, timeout_sec) def assertCanRunJob(self, resource_group, location, cluster_id, job_name, container_settings, timeout_sec): - helpers.create_custom_job(self.client, resource_group.name, location, cluster_id, job_name, 1, + create_custom_job(self.client, resource_group.name, location, cluster_id, job_name, 1, 'echo hello | tee $AZ_BATCHAI_OUTPUT_OUTPUTS/hi.txt', container=container_settings) # Verify if the job finishes reasonably fast. self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job_name, timeout_sec), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job_name, timeout_sec), models.ExecutionState.succeeded) # Verify if output files and standard output files are available and contain expected greeting. - helpers.assert_job_files_are(self, self.client, resource_group.name, job_name, 'OUTPUTS', + assert_job_files_are(self, self.client, resource_group.name, job_name, 'OUTPUTS', {u'hi.txt': u'hello\n'}) - helpers.assert_job_files_are(self, self.client, resource_group.name, job_name, - helpers.STANDARD_OUTPUT_DIRECTORY_ID, + assert_job_files_are(self, self.client, resource_group.name, job_name, + STANDARD_OUTPUT_DIRECTORY_ID, {u'stdout.txt': u'hello\n', u'stderr.txt': ''}) def assertCanResizeCluster(self, resource_group, target): self.client.clusters.update(resource_group.name, self.cluster_name, scale_settings=models.ScaleSettings( manual=models.ManualScaleSettings(target_node_count=target))) self.assertEqual( - helpers.wait_for_nodes(self.is_live, self.client, resource_group.name, self.cluster_name, target, - helpers.NODE_STARTUP_TIMEOUT_SEC), + wait_for_nodes(self.is_live, self.client, resource_group.name, self.cluster_name, target, + NODE_STARTUP_TIMEOUT_SEC), target) - helpers.assert_remote_login_info_reported_for_nodes(self, self.client, resource_group.name, + assert_remote_login_info_reported_for_nodes(self, self.client, resource_group.name, self.cluster_name, target) diff --git a/azure-mgmt-batchai/tests/test_mgmt_batchai_file_servers.py b/azure-mgmt-batchai/tests/test_mgmt_batchai_file_servers.py index d504983de4c5..e7876a394d7f 100644 --- a/azure-mgmt-batchai/tests/test_mgmt_batchai_file_servers.py +++ b/azure-mgmt-batchai/tests/test_mgmt_batchai_file_servers.py @@ -11,19 +11,24 @@ from devtools_testutils import AzureMgmtTestCase from devtools_testutils import ResourceGroupPreparer from devtools_testutils import StorageAccountPreparer -from . import helpers - -_FILE_SERVER_CREATION_TIMEOUT_SEC = helpers.MINUTE * 10 +from helpers import ( + create_batchai_client, create_cluster, assert_existing_clusters_are, wait_for_nodes, + assert_remote_login_info_reported_for_nodes, assert_existing_clusters_are, get_node_ids, assert_file_in_file_share, + create_file_server, assert_existing_file_servers_are, wait_for_file_server, + create_custom_job,wait_for_job_completion, assert_job_files_are, LOCATION, FAKE_STORAGE, NODE_STARTUP_TIMEOUT_SEC, + AUTO_SCALE_TIMEOUT_SEC, STANDARD_OUTPUT_DIRECTORY_ID, MINUTE, RE_ID_ADDRESS +) +_FILE_SERVER_CREATION_TIMEOUT_SEC = MINUTE * 10 class FileServerTestCase(AzureMgmtTestCase): def setUp(self): super(FileServerTestCase, self).setUp() - self.client = helpers.create_batchai_client(self) # type: BatchAIManagementClient + self.client = create_batchai_client(self) # type: BatchAIManagementClient self.file_server_name = self.get_resource_name('fileserver') - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) def test_file_server(self, resource_group, location, storage_account, storage_account_key): """Tests file server functionality @@ -33,17 +38,17 @@ def test_file_server(self, resource_group, location, storage_account, storage_ac a. submit tasks (one from host and another from container) on the first cluster to write data to nfs b. submit a task on the second cluster to read the data from nfs """ - server = helpers.create_file_server(self.client, location, resource_group.name, + server = create_file_server(self.client, location, resource_group.name, self.file_server_name) # type: models.FileServer - cluster1 = helpers.create_cluster(self.client, location, resource_group.name, 'cluster1', + cluster1 = create_cluster(self.client, location, resource_group.name, 'cluster1', 'STANDARD_D1', 1, storage_account.name, storage_account_key, file_servers=[models.FileServerReference( file_server=models.ResourceId(id=server.id), relative_mount_path='nfs', mount_options="rw")]) - cluster2 = helpers.create_cluster(self.client, location, resource_group.name, 'cluster2', + cluster2 = create_cluster(self.client, location, resource_group.name, 'cluster2', 'STANDARD_D1', 1, storage_account.name, storage_account_key, file_servers=[models.FileServerReference( @@ -51,53 +56,53 @@ def test_file_server(self, resource_group, location, storage_account, storage_ac relative_mount_path='nfs', mount_options="rw")]) # Verify the file server is reported. - helpers.assert_existing_file_servers_are(self, self.client, resource_group.name, [self.file_server_name]) + assert_existing_file_servers_are(self, self.client, resource_group.name, [self.file_server_name]) # Verify the file server become available in a reasonable time self.assertTrue( - helpers.wait_for_file_server(self.is_live, self.client, resource_group.name, self.file_server_name, + wait_for_file_server(self.is_live, self.client, resource_group.name, self.file_server_name, _FILE_SERVER_CREATION_TIMEOUT_SEC)) # Verify the remote login information and private ip are reported server = self.client.file_servers.get(resource_group.name, self.file_server_name) # type: models.FileServer - self.assertRegexpMatches(server.mount_settings.file_server_public_ip, helpers.RE_ID_ADDRESS) - self.assertRegexpMatches(server.mount_settings.file_server_internal_ip, helpers.RE_ID_ADDRESS) + self.assertRegexpMatches(server.mount_settings.file_server_public_ip, RE_ID_ADDRESS) + self.assertRegexpMatches(server.mount_settings.file_server_internal_ip, RE_ID_ADDRESS) # Verify the clusters allocated nodes successfully self.assertEqual( - helpers.wait_for_nodes(self.is_live, self.client, resource_group.name, 'cluster1', 1, - helpers.NODE_STARTUP_TIMEOUT_SEC), 1) + wait_for_nodes(self.is_live, self.client, resource_group.name, 'cluster1', 1, + NODE_STARTUP_TIMEOUT_SEC), 1) self.assertEqual( - helpers.wait_for_nodes(self.is_live, self.client, resource_group.name, 'cluster2', 1, - helpers.NODE_STARTUP_TIMEOUT_SEC), 1) + wait_for_nodes(self.is_live, self.client, resource_group.name, 'cluster2', 1, + NODE_STARTUP_TIMEOUT_SEC), 1) # Execute publishing tasks on the first cluster - job1 = helpers.create_custom_job(self.client, resource_group.name, location, cluster1.id, + job1 = create_custom_job(self.client, resource_group.name, location, cluster1.id, 'host_publisher', 1, 'echo hi from host > $AZ_BATCHAI_MOUNT_ROOT/nfs/host.txt') self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job1.name, helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job1.name, MINUTE), models.ExecutionState.succeeded) - job2 = helpers.create_custom_job(self.client, resource_group.name, location, cluster1.id, + job2 = create_custom_job(self.client, resource_group.name, location, cluster1.id, 'container_publisher', 1, 'echo hi from container >> $AZ_BATCHAI_MOUNT_ROOT/nfs/container.txt', container=models.ContainerSettings( image_source_registry=models.ImageSourceRegistry(image="ubuntu"))) self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job2.name, helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job2.name, MINUTE), models.ExecutionState.succeeded) # Execute consumer task on the second cluster - job3 = helpers.create_custom_job(self.client, resource_group.name, location, cluster2.id, 'consumer', 1, + job3 = create_custom_job(self.client, resource_group.name, location, cluster2.id, 'consumer', 1, 'cat $AZ_BATCHAI_MOUNT_ROOT/nfs/host.txt; ' 'cat $AZ_BATCHAI_MOUNT_ROOT/nfs/container.txt') self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job3.name, helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job3.name, MINUTE), models.ExecutionState.succeeded) # Verify the data - helpers.assert_job_files_are(self, self.client, resource_group.name, job3.name, - helpers.STANDARD_OUTPUT_DIRECTORY_ID, + assert_job_files_are(self, self.client, resource_group.name, job3.name, + STANDARD_OUTPUT_DIRECTORY_ID, {u'stdout.txt': u'hi from host\nhi from container\n', u'stderr.txt': ''}) # Delete clusters @@ -106,4 +111,4 @@ def test_file_server(self, resource_group, location, storage_account, storage_ac # Test deletion self.client.file_servers.delete(resource_group.name, self.file_server_name).result() - helpers.assert_existing_file_servers_are(self, self.client, resource_group.name, []) + assert_existing_file_servers_are(self, self.client, resource_group.name, []) diff --git a/azure-mgmt-batchai/tests/test_mgmt_batchai_jobs.py b/azure-mgmt-batchai/tests/test_mgmt_batchai_jobs.py index b40b1558a9aa..64df156ca5e3 100644 --- a/azure-mgmt-batchai/tests/test_mgmt_batchai_jobs.py +++ b/azure-mgmt-batchai/tests/test_mgmt_batchai_jobs.py @@ -15,119 +15,127 @@ import azure.mgmt.batchai.models as models from azure.mgmt.batchai import BatchAIManagementClient -from . import helpers +from helpers import ( + create_batchai_client, create_cluster, assert_existing_clusters_are, wait_for_nodes, + assert_remote_login_info_reported_for_nodes, assert_existing_clusters_are, get_node_ids, assert_file_in_file_share, + create_file_server, assert_existing_file_servers_are, wait_for_file_server, wait_for_job_start_running, + create_custom_job,wait_for_job_completion, assert_job_files_are, LOCATION, FAKE_STORAGE, NODE_STARTUP_TIMEOUT_SEC, + AUTO_SCALE_TIMEOUT_SEC, STANDARD_OUTPUT_DIRECTORY_ID, MINUTE, ClusterPreparer, assert_job_files_in_path_are, + JOB_OUTPUT_DIRECTORY_PATH_ENV, STDOUTERR_FOLDER_NAME, AZURE_FILES_MOUNTING_PATH, JOB_OUTPUT_DIRECTORY_ID, + OUTPUT_DIRECTORIES_FOLDER_NAME +) class JobTestCase(AzureMgmtTestCase): def setUp(self): super(JobTestCase, self).setUp() - self.client = helpers.create_batchai_client(self) # type: BatchAIManagementClient + self.client = create_batchai_client(self) # type: BatchAIManagementClient - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer() + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer() def test_job_creation_and_deletion(self, resource_group, location, cluster, storage_account, storage_account_key): """Tests simple scenario for a job - submit, check results, delete.""" - job = helpers.create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, - 'echo hi | tee {0}/hi.txt'.format(helpers.JOB_OUTPUT_DIRECTORY_PATH_ENV), + job = create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, + 'echo hi | tee {0}/hi.txt'.format(JOB_OUTPUT_DIRECTORY_PATH_ENV), container=models.ContainerSettings( image_source_registry=models.ImageSourceRegistry(image='ubuntu')) ) # type: models.Job self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, MINUTE), models.ExecutionState.succeeded) # Check standard job output - helpers.assert_job_files_are(self, self.client, resource_group.name, job.name, - helpers.STANDARD_OUTPUT_DIRECTORY_ID, + assert_job_files_are(self, self.client, resource_group.name, job.name, + STANDARD_OUTPUT_DIRECTORY_ID, {u'stdout.txt': u'hi\n', u'stderr.txt': u''}) # Check job's output - helpers.assert_job_files_are(self, self.client, resource_group.name, job.name, - helpers.JOB_OUTPUT_DIRECTORY_ID, + assert_job_files_are(self, self.client, resource_group.name, job.name, + JOB_OUTPUT_DIRECTORY_ID, {u'hi.txt': u'hi\n'}) # Check that we can access the output files directly in storage using path segment returned by the server - helpers.assert_file_in_file_share(self, storage_account.name, storage_account_key, - job.job_output_directory_path_segment + '/' + helpers.STDOUTERR_FOLDER_NAME, + assert_file_in_file_share(self, storage_account.name, storage_account_key, + job.job_output_directory_path_segment + '/' + STDOUTERR_FOLDER_NAME, 'stdout.txt', u'hi\n') self.client.jobs.delete(resource_group.name, job.name).result() self.assertRaises(CloudError, lambda: self.client.jobs.get(resource_group.name, job.name)) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer() + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer() def test_running_job_deletion(self, resource_group, location, cluster): """Tests deletion of a running job.""" - job = helpers.create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, + job = create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, 'sleep 600') self.assertEqual( - helpers.wait_for_job_start_running(self.is_live, self.client, resource_group.name, job.name, - helpers.MINUTE), + wait_for_job_start_running(self.is_live, self.client, resource_group.name, job.name, + MINUTE), models.ExecutionState.running) self.client.jobs.delete(resource_group.name, job.name).result() self.assertRaises(CloudError, lambda: self.client.jobs.get(resource_group.name, job.name)) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer() + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer() def test_running_job_termination(self, resource_group, location, cluster): """Tests termination of a running job.""" - job = helpers.create_custom_job(self.client, resource_group.name, location, cluster.id, 'longrunning', 1, + job = create_custom_job(self.client, resource_group.name, location, cluster.id, 'longrunning', 1, 'sleep 600') self.assertEqual( - helpers.wait_for_job_start_running(self.is_live, self.client, resource_group.name, job.name, - helpers.MINUTE), + wait_for_job_start_running(self.is_live, self.client, resource_group.name, job.name, + MINUTE), models.ExecutionState.running) self.client.jobs.terminate(resource_group.name, job.name).result() self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, MINUTE), models.ExecutionState.failed) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer(target_nodes=0, wait=False) + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer(target_nodes=0, wait=False) def test_queued_job_termination(self, resource_group, location, cluster): """Tests termination of a job in queued state.""" # Create a job which will be in queued state because the cluster has no compute nodes. - job = helpers.create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, 'true') + job = create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, 'true') self.client.jobs.terminate(resource_group.name, job.name).result() self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, MINUTE), models.ExecutionState.failed) self.client.jobs.delete(resource_group.name, job.name).result() self.assertRaises(CloudError, lambda: self.client.jobs.get(resource_group.name, job.name)) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer() + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer() def test_completed_job_termination(self, resource_group, location, cluster): """Tests termination of completed job.""" - job = helpers.create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, 'true') + job = create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, 'true') self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, MINUTE), models.ExecutionState.succeeded) # termination of completed job is NOP and must not change the execution state. self.client.jobs.terminate(resource_group.name, job.name).result() self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, MINUTE), models.ExecutionState.succeeded) self.client.jobs.delete(resource_group.name, job.name).result() self.assertRaises(CloudError, lambda: self.client.jobs.get(resource_group.name, job.name)) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer() + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer() def test_failed_job_reporting(self, resource_group, location, cluster): """Tests if job failure is reported correctly.""" - job = helpers.create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, + job = create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, 'false') self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, - helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, + MINUTE), models.ExecutionState.failed) job = self.client.jobs.get(resource_group.name, job.name) @@ -137,23 +145,23 @@ def test_failed_job_reporting(self, resource_group, location, cluster): self.client.jobs.delete(resource_group.name, job.name).result() self.assertRaises(CloudError, lambda: self.client.jobs.get(resource_group.name, job.name)) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer() + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer() def test_job_preparation_host(self, resource_group, location, cluster): """Tests job preparation execution for a job running on a host.""" # create a job with job preparation which populates input data in $AZ_BATCHAI_INPUT_INPUT/hi.txt - job = helpers.create_custom_job( + job = create_custom_job( self.client, resource_group.name, location, cluster.id, 'job', 1, 'cat $AZ_BATCHAI_INPUT_INPUT/hi.txt', 'mkdir -p $AZ_BATCHAI_INPUT_INPUT && echo hello | tee $AZ_BATCHAI_INPUT_INPUT/hi.txt') self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, - helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, + MINUTE), models.ExecutionState.succeeded) - helpers.assert_job_files_are(self, self.client, resource_group.name, job.name, - helpers.STANDARD_OUTPUT_DIRECTORY_ID, + assert_job_files_are(self, self.client, resource_group.name, job.name, + STANDARD_OUTPUT_DIRECTORY_ID, {u'stdout.txt': u'hello\n', u'stderr.txt': u'', u'stdout-job_prep.txt': u'hello\n', @@ -161,25 +169,25 @@ def test_job_preparation_host(self, resource_group, location, cluster): self.client.jobs.delete(resource_group.name, job.name).result() self.assertRaises(CloudError, lambda: self.client.jobs.get(resource_group.name, job.name)) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer() + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer() def test_job_preparation_container(self, resource_group, location, cluster): """Tests job preparation execution for a job running in a container.""" # create a job with job preparation which populates input data in $AZ_BATCHAI_INPUT_INPUT/hi.txt - job = helpers.create_custom_job( + job = create_custom_job( self.client, resource_group.name, location, cluster.id, 'job', 1, 'cat $AZ_BATCHAI_INPUT_INPUT/hi.txt', 'mkdir -p $AZ_BATCHAI_INPUT_INPUT && echo hello | tee $AZ_BATCHAI_INPUT_INPUT/hi.txt', container=models.ContainerSettings( image_source_registry=models.ImageSourceRegistry(image='ubuntu'))) self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, - helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, + MINUTE), models.ExecutionState.succeeded) - helpers.assert_job_files_are(self, self.client, resource_group.name, job.name, - helpers.STANDARD_OUTPUT_DIRECTORY_ID, + assert_job_files_are(self, self.client, resource_group.name, job.name, + STANDARD_OUTPUT_DIRECTORY_ID, {u'stdout.txt': u'hello\n', u'stderr.txt': u'', u'stdout-job_prep.txt': u'hello\n', @@ -187,17 +195,17 @@ def test_job_preparation_container(self, resource_group, location, cluster): self.client.jobs.delete(resource_group.name, job.name).result() self.assertRaises(CloudError, lambda: self.client.jobs.get(resource_group.name, job.name)) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer() + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer() def test_job_host_preparation_failure_reporting(self, resource_group, location, cluster): """Tests if job preparation failure is reported correctly.""" # create a job with failing job preparation - job = helpers.create_custom_job( + job = create_custom_job( self.client, resource_group.name, location, cluster.id, 'job', 1, 'true', 'false') self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, - helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, + MINUTE), models.ExecutionState.failed) job = self.client.jobs.get(resource_group.name, job.name) @@ -208,19 +216,19 @@ def test_job_host_preparation_failure_reporting(self, resource_group, location, self.client.jobs.delete(resource_group.name, job.name).result() self.assertRaises(CloudError, lambda: self.client.jobs.get(resource_group.name, job.name)) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer() + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer() def test_job_container_preparation_failure_reporting(self, resource_group, location, cluster): """Tests if job preparation failure is reported correctly.""" # create a job with failing job preparation - job = helpers.create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, 'true', + job = create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 1, 'true', 'false', container=models.ContainerSettings( image_source_registry=models.ImageSourceRegistry(image='ubuntu'))) self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, - helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, + MINUTE), models.ExecutionState.failed) job = self.client.jobs.get(resource_group.name, job.name) @@ -230,58 +238,58 @@ def test_job_container_preparation_failure_reporting(self, resource_group, locat self.client.jobs.delete(resource_group.name, job.name).result() self.assertRaises(CloudError, lambda: self.client.jobs.get(resource_group.name, job.name)) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer(target_nodes=2) + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer(target_nodes=2) def test_password_less_ssh(self, resource_group, location, cluster): """Tests if password-less ssh is configured on hosts.""" - job = helpers.create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 2, + job = create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 2, 'ssh 10.0.0.4 echo done && ssh 10.0.0.5 echo done') self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, - helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, + MINUTE), models.ExecutionState.succeeded) job = self.client.jobs.get(resource_group.name, job.name) - helpers.assert_job_files_are(self, self.client, resource_group.name, job.name, - helpers.STANDARD_OUTPUT_DIRECTORY_ID, + assert_job_files_are(self, self.client, resource_group.name, job.name, + STANDARD_OUTPUT_DIRECTORY_ID, {u'stdout.txt': u'done\ndone\n', u'stderr.txt': re.compile('Permanently added.*')}) self.client.jobs.delete(resource_group.name, job.name).result() self.assertRaises(CloudError, lambda: self.client.jobs.get(resource_group.name, job.name)) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer(target_nodes=2) + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer(target_nodes=2) def test_password_less_ssh_in_container(self, resource_group, location, cluster): """Tests if password-less ssh is configured in containers.""" - job = helpers.create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 2, + job = create_custom_job(self.client, resource_group.name, location, cluster.id, 'job', 2, 'ssh 10.0.0.5 echo done && ssh 10.0.0.5 echo done', container=models.ContainerSettings( image_source_registry=models.ImageSourceRegistry(image='ubuntu'))) self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, - helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, + MINUTE), models.ExecutionState.succeeded) job = self.client.jobs.get(resource_group.name, job.name) - helpers.assert_job_files_are(self, self.client, resource_group.name, job.name, - helpers.STANDARD_OUTPUT_DIRECTORY_ID, + assert_job_files_are(self, self.client, resource_group.name, job.name, + STANDARD_OUTPUT_DIRECTORY_ID, {u'stdout.txt': u'done\ndone\n', u'stderr.txt': re.compile('Permanently added.*')}) self.client.jobs.delete(resource_group.name, job.name).result() self.assertRaises(CloudError, lambda: self.client.jobs.get(resource_group.name, job.name)) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer(target_nodes=1) + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer(target_nodes=1) def test_job_level_mounting(self, resource_group, location, cluster, storage_account, storage_account_key): """Tests if it's possible to mount external file systems for a job.""" job_name = 'job' # Create file share and container to mount on the job level - if storage_account.name != helpers.FAKE_STORAGE.name: + if storage_account.name != FAKE_STORAGE.name: files = FileService(storage_account.name, storage_account_key) files.create_share('jobshare', fail_on_exist=False) blobs = BlockBlobService(storage_account.name, storage_account_key) @@ -318,7 +326,7 @@ def test_job_level_mounting(self, resource_group, location, cluster, storage_acc ] ), # Put standard output on cluster level AFS to check that the job has access to it. - std_out_err_path_prefix='$AZ_BATCHAI_MOUNT_ROOT/{0}'.format(helpers.AZURE_FILES_MOUNTING_PATH), + std_out_err_path_prefix='$AZ_BATCHAI_MOUNT_ROOT/{0}'.format(AZURE_FILES_MOUNTING_PATH), # Create two output directories on job level AFS and blobfuse. output_directories=[ models.OutputDirectory(id='OUTPUT1', path_prefix='$AZ_BATCHAI_JOB_MOUNT_ROOT/job_afs'), @@ -343,39 +351,39 @@ def test_job_level_mounting(self, resource_group, location, cluster, storage_acc ) ).result() self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, - helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, + MINUTE), models.ExecutionState.succeeded) job = self.client.jobs.get(resource_group.name, job.name) # Assert job and job prep standard output is populated on cluster level filesystem - helpers.assert_job_files_are(self, self.client, resource_group.name, job.name, - helpers.STANDARD_OUTPUT_DIRECTORY_ID, + assert_job_files_are(self, self.client, resource_group.name, job.name, + STANDARD_OUTPUT_DIRECTORY_ID, {u'stdout.txt': u'done\n', u'stderr.txt': u'', u'stdout-job_prep.txt': u'done\n', u'stderr-job_prep.txt': u''}) # Assert files are generated on job level AFS - helpers.assert_job_files_are(self, self.client, resource_group.name, job.name, 'OUTPUT1', + assert_job_files_are(self, self.client, resource_group.name, job.name, 'OUTPUT1', {u'job_afs.txt': u'afs\n', u'prep_afs.txt': u'afs\n', u'afs': None}) # Assert files are generated on job level blobfuse - helpers.assert_job_files_are(self, self.client, resource_group.name, job.name, 'OUTPUT2', + assert_job_files_are(self, self.client, resource_group.name, job.name, 'OUTPUT2', {u'job_bfs.txt': u'bfs\n', u'prep_bfs.txt': u'bfs\n', u'bfs': None}) # Assert subfolders are available via API - helpers.assert_job_files_in_path_are(self, self.client, resource_group.name, job.name, 'OUTPUT1', + assert_job_files_in_path_are(self, self.client, resource_group.name, job.name, 'OUTPUT1', 'afs', {u'job_afs.txt': u'afs\n'}) - helpers.assert_job_files_in_path_are(self, self.client, resource_group.name, job.name, 'OUTPUT2', + assert_job_files_in_path_are(self, self.client, resource_group.name, job.name, 'OUTPUT2', 'bfs', {u'job_bfs.txt': u'bfs\n'}) # Assert that we can access the output files created on job level mount volumes directly in storage using path # segment returned by the server. - if storage_account.name != helpers.FAKE_STORAGE.name: + if storage_account.name != FAKE_STORAGE.name: files = FileService(storage_account.name, storage_account_key) self.assertTrue( files.exists('jobshare', job.job_output_directory_path_segment + - '/' + helpers.OUTPUT_DIRECTORIES_FOLDER_NAME, 'job_afs.txt')) + '/' + OUTPUT_DIRECTORIES_FOLDER_NAME, 'job_afs.txt')) blobs = BlockBlobService(storage_account.name, storage_account_key) self.assertTrue( blobs.exists('jobcontainer', job.job_output_directory_path_segment + - '/' + helpers.OUTPUT_DIRECTORIES_FOLDER_NAME + '/job_bfs.txt')) + '/' + OUTPUT_DIRECTORIES_FOLDER_NAME + '/job_bfs.txt')) # After the job is done the filesystems should be unmounted automatically, check this by submitting a new job. checker = self.client.jobs.create( resource_group.name, @@ -384,7 +392,7 @@ def test_job_level_mounting(self, resource_group, location, cluster, storage_acc location=location, cluster=models.ResourceId(id=cluster.id), node_count=1, - std_out_err_path_prefix='$AZ_BATCHAI_MOUNT_ROOT/{0}'.format(helpers.AZURE_FILES_MOUNTING_PATH), + std_out_err_path_prefix='$AZ_BATCHAI_MOUNT_ROOT/{0}'.format(AZURE_FILES_MOUNTING_PATH), custom_toolkit_settings=models.CustomToolkitSettings( command_line='echo job; df | grep -E "job_bfs|job_afs"' ) @@ -392,17 +400,17 @@ def test_job_level_mounting(self, resource_group, location, cluster, storage_acc ).result() # Check the job failed because there are not job level mount volumes anymore self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, checker.name, - helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, checker.name, + MINUTE), models.ExecutionState.failed) # Check that the cluster level AFS was still mounted - helpers.assert_job_files_are(self, self.client, resource_group.name, checker.name, - helpers.STANDARD_OUTPUT_DIRECTORY_ID, + assert_job_files_are(self, self.client, resource_group.name, checker.name, + STANDARD_OUTPUT_DIRECTORY_ID, {u'stdout.txt': u'job\n', u'stderr.txt': u''}) - @ResourceGroupPreparer(location=helpers.LOCATION) - @StorageAccountPreparer(name_prefix='psdk', location=helpers.LOCATION, playback_fake_resource=helpers.FAKE_STORAGE) - @helpers.ClusterPreparer(target_nodes=1) + @ResourceGroupPreparer(location=LOCATION) + @StorageAccountPreparer(name_prefix='psdk', location=LOCATION, playback_fake_resource=FAKE_STORAGE) + @ClusterPreparer(target_nodes=1) def test_job_environment_variables_and_secrets(self, resource_group, location, cluster): """Tests if it's possible to mount external file systems for a job.""" job_name = 'job' @@ -413,7 +421,7 @@ def test_job_environment_variables_and_secrets(self, resource_group, location, c location=location, cluster=models.ResourceId(id=cluster.id), node_count=1, - std_out_err_path_prefix='$AZ_BATCHAI_MOUNT_ROOT/{0}'.format(helpers.AZURE_FILES_MOUNTING_PATH), + std_out_err_path_prefix='$AZ_BATCHAI_MOUNT_ROOT/{0}'.format(AZURE_FILES_MOUNTING_PATH), environment_variables=[ models.EnvironmentVariable(name='VARIABLE', value='VALUE') ], @@ -431,8 +439,8 @@ def test_job_environment_variables_and_secrets(self, resource_group, location, c ) ).result() # type: models.Job self.assertEqual( - helpers.wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, - helpers.MINUTE), + wait_for_job_completion(self.is_live, self.client, resource_group.name, job.name, + MINUTE), models.ExecutionState.succeeded) # Check that environment variables are reported by the server. self.assertEqual(len(job.environment_variables), 1) @@ -443,7 +451,7 @@ def test_job_environment_variables_and_secrets(self, resource_group, location, c self.assertEqual(job.secrets[0].name, 'SECRET_VARIABLE') self.assertIsNone(job.secrets[0].value) # Check that job and job prep had access to the env variables and secrets. - helpers.assert_job_files_are(self, self.client, resource_group.name, job.name, - helpers.STANDARD_OUTPUT_DIRECTORY_ID, + assert_job_files_are(self, self.client, resource_group.name, job.name, + STANDARD_OUTPUT_DIRECTORY_ID, {u'stdout.txt': u'VALUE SECRET\n', u'stderr.txt': u'', u'stdout-job_prep.txt': u'VALUE SECRET\n', u'stderr-job_prep.txt': u''}) diff --git a/azure-mgmt-batchai/tests/test_mgmt_batchai_quota_and_usage.py b/azure-mgmt-batchai/tests/test_mgmt_batchai_quota_and_usage.py index 9b5b949585e5..2112f0628d0f 100644 --- a/azure-mgmt-batchai/tests/test_mgmt_batchai_quota_and_usage.py +++ b/azure-mgmt-batchai/tests/test_mgmt_batchai_quota_and_usage.py @@ -9,16 +9,16 @@ from azure.mgmt.batchai import BatchAIManagementClient from devtools_testutils import AzureMgmtTestCase -from . import helpers +from helpers import create_batchai_client, LOCATION class JobTestCase(AzureMgmtTestCase): def setUp(self): super(JobTestCase, self).setUp() - self.client = helpers.create_batchai_client(self) # type: BatchAIManagementClient + self.client = create_batchai_client(self) # type: BatchAIManagementClient def test_quota_and_usage(self): - usages = list(self.client.usage.list(helpers.LOCATION)) + usages = list(self.client.usage.list(LOCATION)) self.assertGreater(len(usages), 0) for u in usages: self.assertIsNotNone(u.name) diff --git a/azure-mgmt-botservice/tests/__init__.py b/azure-mgmt-botservice/tests/__init__.py deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/azure-mgmt-compute/tests/__init__.py b/azure-mgmt-compute/tests/__init__.py deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/azure-mgmt-compute/tests/test_mgmt_msi.py b/azure-mgmt-compute/tests/test_mgmt_msi.py index 0fcbcf57e954..97e866184296 100644 --- a/azure-mgmt-compute/tests/test_mgmt_msi.py +++ b/azure-mgmt-compute/tests/test_mgmt_msi.py @@ -19,7 +19,7 @@ ResourceGroupPreparer, ) -from .test_mgmt_compute import ComputeResourceNames +from test_mgmt_compute import ComputeResourceNames class MgmtMSIComputeTest(AzureMgmtTestCase): diff --git a/azure-mgmt-containerinstance/tests/__init__.py b/azure-mgmt-containerinstance/tests/__init__.py deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/azure-mgmt-machinelearningcompute/tests/__init__.py b/azure-mgmt-machinelearningcompute/tests/__init__.py deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/azure-mgmt-managementpartner/tests/__init__.py b/azure-mgmt-managementpartner/tests/__init__.py deleted file mode 100644 index 8b137891791f..000000000000 --- a/azure-mgmt-managementpartner/tests/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/azure-mgmt-media/tests/__init__.py b/azure-mgmt-media/tests/__init__.py deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/azure-mgmt-recoveryservices/tests/__init__.py b/azure-mgmt-recoveryservices/tests/__init__.py deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/azure-mgmt-recoveryservices/tests/test_mgmt_recoveryservices.py b/azure-mgmt-recoveryservices/tests/test_mgmt_recoveryservices.py index ed4566d6b919..19dd1966e5e0 100644 --- a/azure-mgmt-recoveryservices/tests/test_mgmt_recoveryservices.py +++ b/azure-mgmt-recoveryservices/tests/test_mgmt_recoveryservices.py @@ -15,7 +15,7 @@ StorageModelType ) from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer -from .recoveryservices_testcase import MgmtRecoveryServicesTestDefinition, MgmtRecoveryServicesTestHelper +from recoveryservices_testcase import MgmtRecoveryServicesTestDefinition, MgmtRecoveryServicesTestHelper class MgmtRecoveryServicesTests(AzureMgmtTestCase): diff --git a/azure-mgmt-reservations/tests/__init__.py b/azure-mgmt-reservations/tests/__init__.py deleted file mode 100644 index 8b137891791f..000000000000 --- a/azure-mgmt-reservations/tests/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/azure-mgmt-storage/tests/__init__.py b/azure-mgmt-storage/tests/__init__.py deleted file mode 100644 index e69de29bb2d1..000000000000 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/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 74b17f3a9031..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=2018-02-14-preview - 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=7.0-preview - 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=7.0-preview&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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=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: ['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=7.0-preview - 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 fb365775fa34..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=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: ['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 8fa77e50644e..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=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: ['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 a8c963d2184a..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=7.0-preview - 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=7.0-preview&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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 bbdba2bd635b..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=7.0-preview - 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 ca81d993ea22..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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 84c73f7081c5..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 c5273ae7f83b..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 5b9a2aba002d..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=7.0-preview - 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=7.0-preview&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=7.0-preview - 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=7.0-preview - 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 61801b5b8e1d..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 13d7e76b2fb7..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=2018-02-14-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=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: ['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=7.0-preview - 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=7.0-preview - 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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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 144f72df4560..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=2018-02-14-preview - 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=2018-02-14-preview - 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=7.0-preview - 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=2018-02-14-preview - 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=7.0-preview - 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=2018-02-14-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 3ea4aee7d617..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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=2018-02-14-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 6ee680e69f18..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 a0e465881f09..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 d80c5e1e2fd1..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=7.0-preview - 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=7.0-preview - 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 6b814b5c3522..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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 f06584ebc232..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 bf26122f1bcb..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=2018-02-14-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=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: ['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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=2018-02-14-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=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: ['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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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 d54c886c75fc..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 c6ee341e13dd..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 5efb0edcb9df..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 d29340d86f88..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 9a2f5291ab15..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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=7.0-preview&$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 b330979c44d6..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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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 e3635409a6eb..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=2018-02-14-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=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: ['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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=2018-02-14-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=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: ['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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=2018-02-14-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=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: ['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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=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: ['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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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=2018-02-14-preview - 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=2018-02-14-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=7.0-preview - 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=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: ['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=7.0-preview - 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=7.0-preview - 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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview'] - 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 7fad5db8dc10..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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview - 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=2018-02-14-preview&$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=2018-02-14-preview&$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=2018-02-14-preview - 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 From f01d40f73cfb42e4d922d704bc5ebc65408fe436 Mon Sep 17 00:00:00 2001 From: Laurent Mazuel Date: Tue, 29 May 2018 12:31:13 -0700 Subject: [PATCH 42/49] KV Mgmt auto packaging --- azure-mgmt-keyvault/README.rst | 10 +++---- azure-mgmt-keyvault/sdk_packaging.toml | 5 ++++ azure-mgmt-keyvault/setup.cfg | 2 +- azure-mgmt-keyvault/setup.py | 39 ++++++++++++++------------ 4 files changed, 32 insertions(+), 24 deletions(-) create mode 100644 azure-mgmt-keyvault/sdk_packaging.toml 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/sdk_packaging.toml b/azure-mgmt-keyvault/sdk_packaging.toml new file mode 100644 index 000000000000..0cbb94e77c09 --- /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 = true 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..6e3baba0f470 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,37 +55,30 @@ 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='azpysdkhelp@microsoft.com', url='https://github.com/Azure/azure-sdk-for-python', classifiers=[ - 'Development Status :: 4 - Beta', + 'Development Status :: 5 - Production/Stable', 'Programming Language :: Python', '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 ) From d45b72cd55aa54d1b68bc6fc461a7e6cc1a43331 Mon Sep 17 00:00:00 2001 From: Laurent Mazuel Date: Tue, 29 May 2018 12:32:59 -0700 Subject: [PATCH 43/49] KV Data auto packaging --- azure-keyvault/README.rst | 12 +++--------- azure-keyvault/sdk_packaging.toml | 5 +++++ azure-keyvault/setup.py | 10 ++++------ 3 files changed, 12 insertions(+), 15 deletions(-) create mode 100644 azure-keyvault/sdk_packaging.toml 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/sdk_packaging.toml b/azure-keyvault/sdk_packaging.toml new file mode 100644 index 000000000000..06248ae62562 --- /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 = true diff --git a/azure-keyvault/setup.py b/azure-keyvault/setup.py index 432dbfcbc4e2..a3a21fe99fe5 100644 --- a/azure-keyvault/setup.py +++ b/azure-keyvault/setup.py @@ -61,25 +61,23 @@ long_description=readme + '\n\n' + history, license='MIT License', author='Microsoft Corporation', - author_email='azurekeyvault@microsoft.com', + author_email='azpysdkhelp@microsoft.com', url='https://github.com/Azure/azure-sdk-for-python', classifiers=[ - 'Development Status :: 4 - Beta', + 'Development Status :: 5 - Production/Stable', 'Programming Language :: Python', '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', + 'msrestazure>=0.4.27,<2.0.0', 'azure-common~=1.1', 'cryptography>=2.1.4', 'requests>=2.18.4' From 928ccf5af3d43523abcedb56b82c44e3ca8a350a Mon Sep 17 00:00:00 2001 From: Laurent Mazuel Date: Tue, 29 May 2018 12:37:22 -0700 Subject: [PATCH 44/49] Restore KV emails --- azure-keyvault/setup.py | 2 +- azure-mgmt-keyvault/setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/azure-keyvault/setup.py b/azure-keyvault/setup.py index a3a21fe99fe5..13e923a001bf 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='azpysdkhelp@microsoft.com', + author_email='azurekeyvault@microsoft.com', url='https://github.com/Azure/azure-sdk-for-python', classifiers=[ 'Development Status :: 5 - Production/Stable', diff --git a/azure-mgmt-keyvault/setup.py b/azure-mgmt-keyvault/setup.py index 6e3baba0f470..f19db0eaa6c3 100644 --- a/azure-mgmt-keyvault/setup.py +++ b/azure-mgmt-keyvault/setup.py @@ -61,7 +61,7 @@ long_description=readme + '\n\n' + history, license='MIT License', author='Microsoft Corporation', - author_email='azpysdkhelp@microsoft.com', + author_email='azurekeyvault@microsoft.com', url='https://github.com/Azure/azure-sdk-for-python', classifiers=[ 'Development Status :: 5 - Production/Stable', From 0b888fca0c5b9856d4ebd7cc7163b8c73633d448 Mon Sep 17 00:00:00 2001 From: Laurent Mazuel Date: Tue, 29 May 2018 14:02:22 -0700 Subject: [PATCH 45/49] KV still beta --- azure-keyvault/sdk_packaging.toml | 2 +- azure-keyvault/setup.py | 2 +- azure-mgmt-keyvault/sdk_packaging.toml | 2 +- azure-mgmt-keyvault/setup.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/azure-keyvault/sdk_packaging.toml b/azure-keyvault/sdk_packaging.toml index 06248ae62562..5c2041749c30 100644 --- a/azure-keyvault/sdk_packaging.toml +++ b/azure-keyvault/sdk_packaging.toml @@ -2,4 +2,4 @@ package_name = "azure-keyvault" package_pprint_name = "Key Vault" package_doc_id = "key-vault" -is_stable = true +is_stable = false diff --git a/azure-keyvault/setup.py b/azure-keyvault/setup.py index 13e923a001bf..389f8d1575a6 100644 --- a/azure-keyvault/setup.py +++ b/azure-keyvault/setup.py @@ -64,7 +64,7 @@ author_email='azurekeyvault@microsoft.com', url='https://github.com/Azure/azure-sdk-for-python', classifiers=[ - 'Development Status :: 5 - Production/Stable', + 'Development Status :: 4 - Beta', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', diff --git a/azure-mgmt-keyvault/sdk_packaging.toml b/azure-mgmt-keyvault/sdk_packaging.toml index 0cbb94e77c09..6d33bc0f26af 100644 --- a/azure-mgmt-keyvault/sdk_packaging.toml +++ b/azure-mgmt-keyvault/sdk_packaging.toml @@ -2,4 +2,4 @@ package_name = "azure-mgmt-keyvault" package_pprint_name = "Key Vault Management" package_doc_id = "key-vault" -is_stable = true +is_stable = false diff --git a/azure-mgmt-keyvault/setup.py b/azure-mgmt-keyvault/setup.py index f19db0eaa6c3..82f1c1dfb1f2 100644 --- a/azure-mgmt-keyvault/setup.py +++ b/azure-mgmt-keyvault/setup.py @@ -64,7 +64,7 @@ author_email='azurekeyvault@microsoft.com', url='https://github.com/Azure/azure-sdk-for-python', classifiers=[ - 'Development Status :: 5 - Production/Stable', + 'Development Status :: 4 - Beta', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', From 1035cf25485817460998c7743fc277eec04e87a6 Mon Sep 17 00:00:00 2001 From: Azure SDK for Python bot Date: Fri, 22 Jun 2018 15:25:59 +0000 Subject: [PATCH 46/49] Generated from 57fd9306b5ab91393d9b60f05ccc6c0d311e21fa Moving 2018-02-14 from preview to stable (#3281) * Moving 2018-02-14 from preview to stable * fixing path to stable 2018-02-14 swagger files * updating csharp.md to remove multiapi changes --- .../azure/keyvault/key_vault_client.py | 17 +- .../models/certificate_attributes_py3.py | 2 +- .../models/deleted_certificate_bundle_py3.py | 2 +- .../models/deleted_certificate_item_py3.py | 2 +- .../keyvault/models/deleted_key_bundle_py3.py | 2 +- .../keyvault/models/deleted_key_item_py3.py | 2 +- .../deleted_sas_definition_bundle_py3.py | 4 +- .../models/deleted_sas_definition_item_py3.py | 4 +- .../models/deleted_secret_bundle_py3.py | 2 +- .../models/deleted_secret_item_py3.py | 2 +- .../deleted_storage_account_item_py3.py | 4 +- .../models/deleted_storage_bundle_py3.py | 4 +- .../azure/keyvault/models/json_web_key.py | 7 +- .../azure/keyvault/models/json_web_key_py3.py | 7 +- .../keyvault/models/key_attributes_py3.py | 2 +- .../keyvault/models/key_create_parameters.py | 5 +- .../models/key_create_parameters_py3.py | 5 +- .../azure/keyvault/models/key_properties.py | 18 +- .../keyvault/models/key_properties_py3.py | 20 +- .../keyvault/models/key_sign_parameters.py | 2 +- .../models/key_sign_parameters_py3.py | 2 +- .../keyvault/models/key_vault_client_enums.py | 40 +- .../keyvault/models/key_verify_parameters.py | 2 +- .../models/key_verify_parameters_py3.py | 2 +- .../keyvault/models/secret_attributes_py3.py | 2 +- azure-keyvault/azure/keyvault/version.py | 2 +- azure-keyvault/build.json | 625 +++++------------- .../keyvault/key_vault_management_client.py | 8 +- .../azure/mgmt/keyvault/models/vault_py3.py | 2 +- .../mgmt/keyvault/operations/operations.py | 4 +- .../keyvault/operations/vaults_operations.py | 22 +- .../azure/mgmt/keyvault/version.py | 2 +- 32 files changed, 262 insertions(+), 564 deletions(-) diff --git a/azure-keyvault/azure/keyvault/key_vault_client.py b/azure-keyvault/azure/keyvault/key_vault_client.py index b9e81f4cb7c7..3266084f2145 100644 --- 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 @@ -43,7 +43,7 @@ def __init__( 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,10 +58,10 @@ 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 = '7.0-preview' + self.api_version = '7.0' self._serialize = Serializer(client_models) self._deserialize = Deserializer(client_models) @@ -85,7 +85,8 @@ def create_key( 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 bytes. For example, 1024 or 2048. + :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] @@ -96,7 +97,7 @@ def create_key( :type tags: dict[str, str] :param curve: Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', - 'P-521', 'SECP256K1' + '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 @@ -966,7 +967,7 @@ def sign( more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', - 'ES384', 'ES512', 'ECDSA256' + 'ES384', 'ES512', 'ES256K' :type algorithm: str or ~azure.keyvault.models.JsonWebKeySignatureAlgorithm :param value: @@ -1053,7 +1054,7 @@ def verify( information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', - 'ES384', 'ES512', 'ECDSA256' + 'ES384', 'ES512', 'ES256K' :type algorithm: str or ~azure.keyvault.models.JsonWebKeySignatureAlgorithm :param digest: The digest used for signing. diff --git a/azure-keyvault/azure/keyvault/models/certificate_attributes_py3.py b/azure-keyvault/azure/keyvault/models/certificate_attributes_py3.py index 028ab5095fbd..0a977c07a8b0 100644 --- a/azure-keyvault/azure/keyvault/models/certificate_attributes_py3.py +++ b/azure-keyvault/azure/keyvault/models/certificate_attributes_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .attributes import Attributes +from .attributes_py3 import Attributes class CertificateAttributes(Attributes): diff --git a/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle_py3.py b/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle_py3.py index 3e199a665260..c028d1db6740 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle_py3.py +++ b/azure-keyvault/azure/keyvault/models/deleted_certificate_bundle_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .certificate_bundle import CertificateBundle +from .certificate_bundle_py3 import CertificateBundle class DeletedCertificateBundle(CertificateBundle): diff --git a/azure-keyvault/azure/keyvault/models/deleted_certificate_item_py3.py b/azure-keyvault/azure/keyvault/models/deleted_certificate_item_py3.py index 1a599db43416..eb9c4c941c7c 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_certificate_item_py3.py +++ b/azure-keyvault/azure/keyvault/models/deleted_certificate_item_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .certificate_item import CertificateItem +from .certificate_item_py3 import CertificateItem class DeletedCertificateItem(CertificateItem): diff --git a/azure-keyvault/azure/keyvault/models/deleted_key_bundle_py3.py b/azure-keyvault/azure/keyvault/models/deleted_key_bundle_py3.py index c3d97f46dd66..f36d9a0028b1 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_key_bundle_py3.py +++ b/azure-keyvault/azure/keyvault/models/deleted_key_bundle_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .key_bundle import KeyBundle +from .key_bundle_py3 import KeyBundle class DeletedKeyBundle(KeyBundle): diff --git a/azure-keyvault/azure/keyvault/models/deleted_key_item_py3.py b/azure-keyvault/azure/keyvault/models/deleted_key_item_py3.py index 990b024f9c58..f891deac56a0 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_key_item_py3.py +++ b/azure-keyvault/azure/keyvault/models/deleted_key_item_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .key_item import KeyItem +from .key_item_py3 import KeyItem class DeletedKeyItem(KeyItem): 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 index 61396569f5c4..ae5d90cd389a 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle_py3.py +++ b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_bundle_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .sas_definition_bundle import SasDefinitionBundle +from .sas_definition_bundle_py3 import SasDefinitionBundle class DeletedSasDefinitionBundle(SasDefinitionBundle): @@ -73,7 +73,7 @@ class DeletedSasDefinitionBundle(SasDefinitionBundle): } def __init__(self, *, recovery_id: str=None, **kwargs) -> None: - super(DeletedSasDefinitionBundle, self).__init__(, **kwargs) + 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_py3.py b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_py3.py index ec86dbaab5b1..9b689c4a7949 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_py3.py +++ b/azure-keyvault/azure/keyvault/models/deleted_sas_definition_item_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .sas_definition_item import SasDefinitionItem +from .sas_definition_item_py3 import SasDefinitionItem class DeletedSasDefinitionItem(SasDefinitionItem): @@ -57,7 +57,7 @@ class DeletedSasDefinitionItem(SasDefinitionItem): } def __init__(self, *, recovery_id: str=None, **kwargs) -> None: - super(DeletedSasDefinitionItem, self).__init__(, **kwargs) + 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_py3.py b/azure-keyvault/azure/keyvault/models/deleted_secret_bundle_py3.py index 43f1cdc34217..d6f4032cd614 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_secret_bundle_py3.py +++ b/azure-keyvault/azure/keyvault/models/deleted_secret_bundle_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .secret_bundle import SecretBundle +from .secret_bundle_py3 import SecretBundle class DeletedSecretBundle(SecretBundle): diff --git a/azure-keyvault/azure/keyvault/models/deleted_secret_item_py3.py b/azure-keyvault/azure/keyvault/models/deleted_secret_item_py3.py index cc8bab098049..45a05db4b63e 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_secret_item_py3.py +++ b/azure-keyvault/azure/keyvault/models/deleted_secret_item_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .secret_item import SecretItem +from .secret_item_py3 import SecretItem class DeletedSecretItem(SecretItem): 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 index 48f52ab0eaed..cc0ed4ab734d 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_storage_account_item_py3.py +++ b/azure-keyvault/azure/keyvault/models/deleted_storage_account_item_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .storage_account_item import StorageAccountItem +from .storage_account_item_py3 import StorageAccountItem class DeletedStorageAccountItem(StorageAccountItem): @@ -57,7 +57,7 @@ class DeletedStorageAccountItem(StorageAccountItem): } def __init__(self, *, recovery_id: str=None, **kwargs) -> None: - super(DeletedStorageAccountItem, self).__init__(, **kwargs) + 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_py3.py b/azure-keyvault/azure/keyvault/models/deleted_storage_bundle_py3.py index d2fe6c09c267..1e94dca3fc1d 100644 --- a/azure-keyvault/azure/keyvault/models/deleted_storage_bundle_py3.py +++ b/azure-keyvault/azure/keyvault/models/deleted_storage_bundle_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .storage_bundle import StorageBundle +from .storage_bundle_py3 import StorageBundle class DeletedStorageBundle(StorageBundle): @@ -71,7 +71,7 @@ class DeletedStorageBundle(StorageBundle): } def __init__(self, *, recovery_id: str=None, **kwargs) -> None: - super(DeletedStorageBundle, self).__init__(, **kwargs) + 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/json_web_key.py b/azure-keyvault/azure/keyvault/models/json_web_key.py index 033416b2b1d3..eae162cf0873 100644 --- a/azure-keyvault/azure/keyvault/models/json_web_key.py +++ b/azure-keyvault/azure/keyvault/models/json_web_key.py @@ -17,8 +17,9 @@ class JsonWebKey(Model): :param kid: Key identifier. :type kid: str - :param kty: JsonWebKey key type (kty). Possible values include: 'EC', - 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + :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] @@ -44,7 +45,7 @@ class JsonWebKey(Model): :type t: bytes :param crv: Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', - 'SECP256K1' + 'P-256K' :type crv: str or ~azure.keyvault.models.JsonWebKeyCurveName :param x: X component of an EC public key. :type x: bytes diff --git a/azure-keyvault/azure/keyvault/models/json_web_key_py3.py b/azure-keyvault/azure/keyvault/models/json_web_key_py3.py index c5e1252f9783..686a4731a6cd 100644 --- a/azure-keyvault/azure/keyvault/models/json_web_key_py3.py +++ b/azure-keyvault/azure/keyvault/models/json_web_key_py3.py @@ -17,8 +17,9 @@ class JsonWebKey(Model): :param kid: Key identifier. :type kid: str - :param kty: JsonWebKey key type (kty). Possible values include: 'EC', - 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + :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] @@ -44,7 +45,7 @@ class JsonWebKey(Model): :type t: bytes :param crv: Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', - 'SECP256K1' + 'P-256K' :type crv: str or ~azure.keyvault.models.JsonWebKeyCurveName :param x: X component of an EC public key. :type x: bytes diff --git a/azure-keyvault/azure/keyvault/models/key_attributes_py3.py b/azure-keyvault/azure/keyvault/models/key_attributes_py3.py index 8689ce17e65a..ee606fe0f5f4 100644 --- a/azure-keyvault/azure/keyvault/models/key_attributes_py3.py +++ b/azure-keyvault/azure/keyvault/models/key_attributes_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .attributes import Attributes +from .attributes_py3 import Attributes class KeyAttributes(Attributes): diff --git a/azure-keyvault/azure/keyvault/models/key_create_parameters.py b/azure-keyvault/azure/keyvault/models/key_create_parameters.py index 9f34a95f0d41..9db5bfb65d1c 100644 --- a/azure-keyvault/azure/keyvault/models/key_create_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_create_parameters.py @@ -21,7 +21,8 @@ class KeyCreateParameters(Model): 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 bytes. For example, 1024 or 2048. + :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] @@ -31,7 +32,7 @@ class KeyCreateParameters(Model): :type tags: dict[str, str] :param curve: Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', - 'SECP256K1' + 'P-256K' :type curve: str or ~azure.keyvault.models.JsonWebKeyCurveName """ diff --git a/azure-keyvault/azure/keyvault/models/key_create_parameters_py3.py b/azure-keyvault/azure/keyvault/models/key_create_parameters_py3.py index a9d0fc5357d1..04c8556245bf 100644 --- a/azure-keyvault/azure/keyvault/models/key_create_parameters_py3.py +++ b/azure-keyvault/azure/keyvault/models/key_create_parameters_py3.py @@ -21,7 +21,8 @@ class KeyCreateParameters(Model): 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 bytes. For example, 1024 or 2048. + :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] @@ -31,7 +32,7 @@ class KeyCreateParameters(Model): :type tags: dict[str, str] :param curve: Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', - 'SECP256K1' + 'P-256K' :type curve: str or ~azure.keyvault.models.JsonWebKeyCurveName """ diff --git a/azure-keyvault/azure/keyvault/models/key_properties.py b/azure-keyvault/azure/keyvault/models/key_properties.py index 8f1158d011f9..e463a899f1f2 100644 --- a/azure-keyvault/azure/keyvault/models/key_properties.py +++ b/azure-keyvault/azure/keyvault/models/key_properties.py @@ -17,25 +17,33 @@ 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 kty: The type of key pair to be used for the certificate. 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 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'}, + 'kty': {'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, **kwargs): super(KeyProperties, self).__init__(**kwargs) self.exportable = kwargs.get('exportable', None) - self.key_type = kwargs.get('key_type', None) + self.kty = kwargs.get('kty', 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 index 6f8d8cb780db..c9cd8c5458a3 100644 --- a/azure-keyvault/azure/keyvault/models/key_properties_py3.py +++ b/azure-keyvault/azure/keyvault/models/key_properties_py3.py @@ -17,25 +17,33 @@ 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 kty: The type of key pair to be used for the certificate. 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 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'}, + 'kty': {'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: str=None, key_size: int=None, reuse_key: bool=None, **kwargs) -> None: + def __init__(self, *, exportable: bool=None, kty=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.kty = kty self.key_size = key_size self.reuse_key = reuse_key + self.curve = curve diff --git a/azure-keyvault/azure/keyvault/models/key_sign_parameters.py b/azure-keyvault/azure/keyvault/models/key_sign_parameters.py index 2bb4c401dd10..fb510184d659 100644 --- a/azure-keyvault/azure/keyvault/models/key_sign_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_sign_parameters.py @@ -21,7 +21,7 @@ class KeySignParameters(Model): For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', - 'ECDSA256' + 'ES256K' :type algorithm: str or ~azure.keyvault.models.JsonWebKeySignatureAlgorithm :param value: Required. diff --git a/azure-keyvault/azure/keyvault/models/key_sign_parameters_py3.py b/azure-keyvault/azure/keyvault/models/key_sign_parameters_py3.py index 9287a24a6d09..bd791cc7e9cf 100644 --- a/azure-keyvault/azure/keyvault/models/key_sign_parameters_py3.py +++ b/azure-keyvault/azure/keyvault/models/key_sign_parameters_py3.py @@ -21,7 +21,7 @@ class KeySignParameters(Model): For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', - 'ECDSA256' + 'ES256K' :type algorithm: str or ~azure.keyvault.models.JsonWebKeySignatureAlgorithm :param value: Required. diff --git a/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py b/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py index 2c2dd32621be..046a304e990a 100644 --- a/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py +++ b/azure-keyvault/azure/keyvault/models/key_vault_client_enums.py @@ -14,19 +14,19 @@ class JsonWebKeyType(str, Enum): - ec = "EC" - ec_hsm = "EC-HSM" - 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 JsonWebKeyCurveName(str, Enum): - p_256 = "P-256" - p_384 = "P-384" - p_521 = "P-521" - secp256_k1 = "SECP256K1" + 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): @@ -75,17 +75,17 @@ class JsonWebKeyEncryptionAlgorithm(str, Enum): class JsonWebKeySignatureAlgorithm(str, Enum): - ps256 = "PS256" - ps384 = "PS384" - ps512 = "PS512" - rs256 = "RS256" - rs384 = "RS384" - rs512 = "RS512" - rsnull = "RSNULL" - es256 = "ES256" - es384 = "ES384" - es512 = "ES512" - ecdsa256 = "ECDSA256" + 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): diff --git a/azure-keyvault/azure/keyvault/models/key_verify_parameters.py b/azure-keyvault/azure/keyvault/models/key_verify_parameters.py index 524c6be9f9cb..c2c4d31531c2 100644 --- a/azure-keyvault/azure/keyvault/models/key_verify_parameters.py +++ b/azure-keyvault/azure/keyvault/models/key_verify_parameters.py @@ -20,7 +20,7 @@ class KeyVerifyParameters(Model): :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', 'ECDSA256' + 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' :type algorithm: str or ~azure.keyvault.models.JsonWebKeySignatureAlgorithm :param digest: Required. The digest used for signing. diff --git a/azure-keyvault/azure/keyvault/models/key_verify_parameters_py3.py b/azure-keyvault/azure/keyvault/models/key_verify_parameters_py3.py index c5dd9819f053..da00a773acb3 100644 --- a/azure-keyvault/azure/keyvault/models/key_verify_parameters_py3.py +++ b/azure-keyvault/azure/keyvault/models/key_verify_parameters_py3.py @@ -20,7 +20,7 @@ class KeyVerifyParameters(Model): :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', 'ECDSA256' + 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' :type algorithm: str or ~azure.keyvault.models.JsonWebKeySignatureAlgorithm :param digest: Required. The digest used for signing. diff --git a/azure-keyvault/azure/keyvault/models/secret_attributes_py3.py b/azure-keyvault/azure/keyvault/models/secret_attributes_py3.py index d9166f634160..4c81c14e83c6 100644 --- a/azure-keyvault/azure/keyvault/models/secret_attributes_py3.py +++ b/azure-keyvault/azure/keyvault/models/secret_attributes_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .attributes import Attributes +from .attributes_py3 import Attributes class SecretAttributes(Attributes): diff --git a/azure-keyvault/azure/keyvault/version.py b/azure-keyvault/azure/keyvault/version.py index affaef0c987e..a39916c162ce 100644 --- a/azure-keyvault/azure/keyvault/version.py +++ b/azure-keyvault/azure/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "1.0.0b1" +VERSION = "1.0.0" diff --git a/azure-keyvault/build.json b/azure-keyvault/build.json index 801b4569ba59..69195f43152f 100644 --- a/azure-keyvault/build.json +++ b/azure-keyvault/build.json @@ -4,195 +4,25 @@ "resolvedInfo": null, "packageMetadata": { "name": "@microsoft.azure/autorest-core", - "version": "2.0.4251", + "version": "2.0.4280", "engines": { "node": ">=7.10.0" }, - "dependencies": {}, - "optionalDependencies": {}, - "devDependencies": { - "@types/commonmark": "^0.27.0", - "@types/js-yaml": "^3.10.0", - "@types/jsonpath": "^0.1.29", - "@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": "^4.0.1", - "mocha-typescript": "^1.1.7", - "shx": "0.2.2", - "static-link": "^0.2.3", - "vscode-jsonrpc": "^3.3.1" - }, - "bundleDependencies": false, - "peerDependencies": {}, - "deprecated": false, - "_resolved": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", - "_integrity": null, - "_shasum": "09bef8c85929eb24b35771f6c8e7ae7a59b5e761", - "_shrinkwrap": null, - "bin": { - "autorest-core": "./dist/app.js", - "autorest-language-service": "dist/language-service/language-service.js" - }, - "_id": "@microsoft.azure/autorest-core@2.0.4251", - "_from": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", - "_requested": { - "type": "directory", - "where": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", - "raw": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", - "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", - "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", - "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core" - }, - "_spec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core", - "_where": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4251/node_modules/@microsoft.azure/autorest-core" - }, - "extensionManager": { - "installationPath": "/tmp/.autorest", - "sharedLock": { - "name": "/tmp/.autorest", - "exclusiveLock": { - "name": "_tmp_.autorest.exclusive-lock", - "options": { - "port": 5245, - "host": "2130716018", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" - }, - "busyLock": { - "name": "_tmp_.autorest.busy-lock", - "options": { - "port": 46071, - "host": "2130735832", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" - }, - "personalLock": { - "name": "_tmp_.autorest.4023.0923679230714.personal-lock", - "options": { - "port": 45556, - "host": "2130737852", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" - }, - "file": "/tmp/_tmp_.autorest.lock" - }, - "dotnetPath": "/root/.dotnet" - }, - "installationPath": "/tmp/.autorest" - }, - { - "resolvedInfo": null, - "packageMetadata": { - "name": "@microsoft.azure/autorest-core", - "version": "2.0.4254", - "engines": { - "node": ">=7.10.0" - }, - "dependencies": {}, - "optionalDependencies": {}, - "devDependencies": { - "@types/commonmark": "^0.27.0", - "@types/js-yaml": "^3.10.0", - "@types/jsonpath": "^0.1.29", - "@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": "^4.0.1", - "mocha-typescript": "^1.1.7", - "shx": "0.2.2", - "static-link": "^0.2.3", - "vscode-jsonrpc": "^3.3.1" - }, - "bundleDependencies": false, - "peerDependencies": {}, - "deprecated": false, - "_resolved": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", - "_integrity": null, - "_shasum": "415f00de881e2377be59ae87eb91f9aa3ad47e27", - "_shrinkwrap": null, - "bin": { - "autorest-core": "./dist/app.js", - "autorest-language-service": "dist/language-service/language-service.js" - }, - "_id": "@microsoft.azure/autorest-core@2.0.4254", - "_from": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", - "_requested": { - "type": "directory", - "where": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", - "raw": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", - "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", - "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", - "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core" - }, - "_spec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core", - "_where": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4254/node_modules/@microsoft.azure/autorest-core" - }, - "extensionManager": { - "installationPath": "/tmp/.autorest", - "sharedLock": { - "name": "/tmp/.autorest", - "exclusiveLock": { - "name": "_tmp_.autorest.exclusive-lock", - "options": { - "port": 5245, - "host": "2130716018", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" - }, - "busyLock": { - "name": "_tmp_.autorest.busy-lock", - "options": { - "port": 46071, - "host": "2130735832", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" - }, - "personalLock": { - "name": "_tmp_.autorest.4023.0923679230714.personal-lock", - "options": { - "port": 45556, - "host": "2130737852", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" - }, - "file": "/tmp/_tmp_.autorest.lock" - }, - "dotnetPath": "/root/.dotnet" - }, - "installationPath": "/tmp/.autorest" - }, - { - "resolvedInfo": null, - "packageMetadata": { - "name": "@microsoft.azure/autorest-core", - "version": "2.0.4255", - "engines": { - "node": ">=7.10.0" + "dependencies": { + "typescript": "2.6.2" }, - "dependencies": {}, "optionalDependencies": {}, "devDependencies": { "@types/commonmark": "^0.27.0", - "@types/js-yaml": "^3.10.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": "^4.0.1", - "mocha-typescript": "^1.1.7", + "mocha": "5.2.0", + "mocha-typescript": "1.1.14", "shx": "0.2.2", "static-link": "^0.2.3", "vscode-jsonrpc": "^3.3.1" @@ -200,63 +30,63 @@ "bundleDependencies": false, "peerDependencies": {}, "deprecated": false, - "_resolved": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", + "_resolved": "/root/.autorest/@microsoft.azure_autorest-core@2.0.4280/node_modules/@microsoft.azure/autorest-core", "_integrity": null, - "_shasum": "fefc7a80d07418f6feb6e686932021d0615e5033", + "_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.4255", - "_from": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", + "_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": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", - "raw": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", - "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", - "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", - "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core" - }, - "_spec": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core", - "_where": "/tmp/.autorest/@microsoft.azure_autorest-core@2.0.4255/node_modules/@microsoft.azure/autorest-core" + "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": "/tmp/.autorest", + "installationPath": "/root/.autorest", "sharedLock": { - "name": "/tmp/.autorest", + "name": "/root/.autorest", "exclusiveLock": { - "name": "_tmp_.autorest.exclusive-lock", + "name": "_root_.autorest.exclusive-lock", "options": { - "port": 5245, - "host": "2130716018", + "port": 45234, + "host": "2130706813", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + "pipe": "/tmp/pipe__root_.autorest.exclusive-lock:45234" }, "busyLock": { - "name": "_tmp_.autorest.busy-lock", + "name": "_root_.autorest.busy-lock", "options": { - "port": 46071, - "host": "2130735832", + "port": 37199, + "host": "2130756895", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "name": "_root_.autorest.351.8338006616628.personal-lock", "options": { - "port": 45556, - "host": "2130737852", + "port": 14240, + "host": "2130712190", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + "pipe": "/tmp/pipe__root_.autorest.351.8338006616628.personal-lock:14240" }, - "file": "/tmp/_tmp_.autorest.lock" + "file": "/tmp/_root_.autorest.lock" }, "dotnetPath": "/root/.dotnet" }, - "installationPath": "/tmp/.autorest" + "installationPath": "/root/.autorest" }, { "resolvedInfo": null, @@ -286,73 +116,73 @@ "bundleDependencies": false, "peerDependencies": {}, "deprecated": false, - "_resolved": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "_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:/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", + "_from": "file:/root/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", "_requested": { "type": "directory", - "where": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", - "raw": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", - "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", - "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", - "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler" - }, - "_spec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.0.21/node_modules/@microsoft.azure/autorest.modeler", - "_where": "/tmp/.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", + "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": "/tmp/.autorest", + "installationPath": "/root/.autorest", "sharedLock": { - "name": "/tmp/.autorest", + "name": "/root/.autorest", "exclusiveLock": { - "name": "_tmp_.autorest.exclusive-lock", + "name": "_root_.autorest.exclusive-lock", "options": { - "port": 5245, - "host": "2130716018", + "port": 45234, + "host": "2130706813", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + "pipe": "/tmp/pipe__root_.autorest.exclusive-lock:45234" }, "busyLock": { - "name": "_tmp_.autorest.busy-lock", + "name": "_root_.autorest.busy-lock", "options": { - "port": 46071, - "host": "2130735832", + "port": 37199, + "host": "2130756895", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "name": "_root_.autorest.351.8338006616628.personal-lock", "options": { - "port": 45556, - "host": "2130737852", + "port": 14240, + "host": "2130712190", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + "pipe": "/tmp/pipe__root_.autorest.351.8338006616628.personal-lock:14240" }, - "file": "/tmp/_tmp_.autorest.lock" + "file": "/tmp/_root_.autorest.lock" }, "dotnetPath": "/root/.dotnet" }, - "installationPath": "/tmp/.autorest" + "installationPath": "/root/.autorest" }, { "resolvedInfo": null, "packageMetadata": { "name": "@microsoft.azure/autorest.modeler", - "version": "2.3.38", + "version": "2.3.44", "dependencies": { "dotnet-2.0.0": "^1.4.4" }, "optionalDependencies": {}, "devDependencies": { - "@microsoft.azure/autorest.testserver": "2.3.1", - "autorest": "^2.0.4201", + "@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", @@ -371,72 +201,72 @@ "bundleDependencies": false, "peerDependencies": {}, "deprecated": false, - "_resolved": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", + "_resolved": "/root/.autorest/@microsoft.azure_autorest.modeler@2.3.44/node_modules/@microsoft.azure/autorest.modeler", "_integrity": null, - "_shasum": "903bb77932e4ed1b8bc3b25cc39b167143494f6c", + "_shasum": "9b5a880a77467be33a77f002f03230d3ccc21266", "_shrinkwrap": null, "bin": null, - "_id": "@microsoft.azure/autorest.modeler@2.3.38", - "_from": "file:/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", + "_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": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", - "raw": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", - "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", - "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", - "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler" - }, - "_spec": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler", - "_where": "/tmp/.autorest/@microsoft.azure_autorest.modeler@2.3.38/node_modules/@microsoft.azure/autorest.modeler" + "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": "/tmp/.autorest", + "installationPath": "/root/.autorest", "sharedLock": { - "name": "/tmp/.autorest", + "name": "/root/.autorest", "exclusiveLock": { - "name": "_tmp_.autorest.exclusive-lock", + "name": "_root_.autorest.exclusive-lock", "options": { - "port": 5245, - "host": "2130716018", + "port": 45234, + "host": "2130706813", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + "pipe": "/tmp/pipe__root_.autorest.exclusive-lock:45234" }, "busyLock": { - "name": "_tmp_.autorest.busy-lock", + "name": "_root_.autorest.busy-lock", "options": { - "port": 46071, - "host": "2130735832", + "port": 37199, + "host": "2130756895", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "name": "_root_.autorest.351.8338006616628.personal-lock", "options": { - "port": 45556, - "host": "2130737852", + "port": 14240, + "host": "2130712190", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + "pipe": "/tmp/pipe__root_.autorest.351.8338006616628.personal-lock:14240" }, - "file": "/tmp/_tmp_.autorest.lock" + "file": "/tmp/_root_.autorest.lock" }, "dotnetPath": "/root/.dotnet" }, - "installationPath": "/tmp/.autorest" + "installationPath": "/root/.autorest" }, { "resolvedInfo": null, "packageMetadata": { "name": "@microsoft.azure/autorest.python", - "version": "2.1.38", + "version": "2.1.40", "dependencies": { "dotnet-2.0.0": "^1.4.4" }, "optionalDependencies": {}, "devDependencies": { - "@microsoft.azure/autorest.testserver": "^2.3.13", + "@microsoft.azure/autorest.testserver": "^2.4.0", "autorest": "^2.0.4203", "coffee-script": "^1.11.1", "dotnet-sdk-2.0.0": "^1.4.4", @@ -456,72 +286,72 @@ "bundleDependencies": false, "peerDependencies": {}, "deprecated": false, - "_resolved": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", + "_resolved": "/root/.autorest/@microsoft.azure_autorest.python@2.1.40/node_modules/@microsoft.azure/autorest.python", "_integrity": null, - "_shasum": "efedbbb4c508ff08b3c83a5e9e2020598cae97b4", + "_shasum": "9b3f08c892d725ac571b3a7dc8f781d76da64397", "_shrinkwrap": null, "bin": null, - "_id": "@microsoft.azure/autorest.python@2.1.38", - "_from": "file:/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", + "_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": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", - "raw": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", - "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", - "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", - "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python" - }, - "_spec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python", - "_where": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.38/node_modules/@microsoft.azure/autorest.python" + "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": "/tmp/.autorest", + "installationPath": "/root/.autorest", "sharedLock": { - "name": "/tmp/.autorest", + "name": "/root/.autorest", "exclusiveLock": { - "name": "_tmp_.autorest.exclusive-lock", + "name": "_root_.autorest.exclusive-lock", "options": { - "port": 5245, - "host": "2130716018", + "port": 45234, + "host": "2130706813", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + "pipe": "/tmp/pipe__root_.autorest.exclusive-lock:45234" }, "busyLock": { - "name": "_tmp_.autorest.busy-lock", + "name": "_root_.autorest.busy-lock", "options": { - "port": 46071, - "host": "2130735832", + "port": 37199, + "host": "2130756895", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "name": "_root_.autorest.351.8338006616628.personal-lock", "options": { - "port": 45556, - "host": "2130737852", + "port": 14240, + "host": "2130712190", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + "pipe": "/tmp/pipe__root_.autorest.351.8338006616628.personal-lock:14240" }, - "file": "/tmp/_tmp_.autorest.lock" + "file": "/tmp/_root_.autorest.lock" }, "dotnetPath": "/root/.dotnet" }, - "installationPath": "/tmp/.autorest" + "installationPath": "/root/.autorest" }, { "resolvedInfo": null, "packageMetadata": { "name": "@microsoft.azure/autorest.python", - "version": "2.1.39", + "version": "3.0.52", "dependencies": { "dotnet-2.0.0": "^1.4.4" }, "optionalDependencies": {}, "devDependencies": { - "@microsoft.azure/autorest.testserver": "2.3.25", + "@microsoft.azure/autorest.testserver": "^2.5.6", "autorest": "^2.0.4203", "coffee-script": "^1.11.1", "dotnet-sdk-2.0.0": "^1.4.4", @@ -541,213 +371,60 @@ "bundleDependencies": false, "peerDependencies": {}, "deprecated": false, - "_resolved": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", - "_integrity": null, - "_shasum": "44036c8f89647897798cea05f5502d1b75b5b949", - "_shrinkwrap": null, - "bin": null, - "_id": "@microsoft.azure/autorest.python@2.1.39", - "_from": "file:/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", - "_requested": { - "type": "directory", - "where": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", - "raw": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", - "rawSpec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", - "saveSpec": "file:/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", - "fetchSpec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python" - }, - "_spec": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python", - "_where": "/tmp/.autorest/@microsoft.azure_autorest.python@2.1.39/node_modules/@microsoft.azure/autorest.python" - }, - "extensionManager": { - "installationPath": "/tmp/.autorest", - "sharedLock": { - "name": "/tmp/.autorest", - "exclusiveLock": { - "name": "_tmp_.autorest.exclusive-lock", - "options": { - "port": 5245, - "host": "2130716018", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" - }, - "busyLock": { - "name": "_tmp_.autorest.busy-lock", - "options": { - "port": 46071, - "host": "2130735832", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" - }, - "personalLock": { - "name": "_tmp_.autorest.4023.0923679230714.personal-lock", - "options": { - "port": 45556, - "host": "2130737852", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" - }, - "file": "/tmp/_tmp_.autorest.lock" - }, - "dotnetPath": "/root/.dotnet" - }, - "installationPath": "/tmp/.autorest" - }, - { - "resolvedInfo": null, - "packageMetadata": { - "name": "@microsoft.azure/classic-openapi-validator", - "version": "1.0.9", - "dependencies": { - "dotnet-2.0.0": "^1.1.0" - }, - "optionalDependencies": {}, - "devDependencies": { - "dotnet-sdk-2.0.0": "^1.1.1" - }, - "bundleDependencies": false, - "peerDependencies": {}, - "deprecated": false, - "_resolved": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", - "_integrity": null, - "_shasum": "554be1db3e054b0a0e4e51c842ff5b7c6a60784c", - "_shrinkwrap": null, - "bin": null, - "_id": "@microsoft.azure/classic-openapi-validator@1.0.9", - "_from": "file:/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", - "_requested": { - "type": "directory", - "where": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", - "raw": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", - "rawSpec": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", - "saveSpec": "file:/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", - "fetchSpec": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator" - }, - "_spec": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator", - "_where": "/tmp/.autorest/@microsoft.azure_classic-openapi-validator@1.0.9/node_modules/@microsoft.azure/classic-openapi-validator" - }, - "extensionManager": { - "installationPath": "/tmp/.autorest", - "sharedLock": { - "name": "/tmp/.autorest", - "exclusiveLock": { - "name": "_tmp_.autorest.exclusive-lock", - "options": { - "port": 5245, - "host": "2130716018", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" - }, - "busyLock": { - "name": "_tmp_.autorest.busy-lock", - "options": { - "port": 46071, - "host": "2130735832", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" - }, - "personalLock": { - "name": "_tmp_.autorest.4023.0923679230714.personal-lock", - "options": { - "port": 45556, - "host": "2130737852", - "exclusive": true - }, - "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" - }, - "file": "/tmp/_tmp_.autorest.lock" - }, - "dotnetPath": "/root/.dotnet" - }, - "installationPath": "/tmp/.autorest" - }, - { - "resolvedInfo": null, - "packageMetadata": { - "name": "@microsoft.azure/openapi-validator", - "version": "1.0.2", - "dependencies": { - "fs": "^0.0.1-security", - "js-yaml": "^3.8.4", - "jsonpath": "^0.2.11", - "vscode-jsonrpc": "^3.2.0" - }, - "optionalDependencies": {}, - "devDependencies": { - "@types/js-yaml": "^3.5.30", - "@types/jsonpath": "^0.1.29", - "@types/node": "^7.0.18", - "gulp": "3.9.1", - "gulp-clean": "0.3.2", - "gulp-dotnet-cli": "0.4.0", - "gulp-mocha": "4.3.1", - "gulp-run": "1.7.1", - "mocha": "3.2.0", - "mocha-typescript": "1.0.22", - "typescript": "2.3.3" - }, - "bundleDependencies": false, - "peerDependencies": {}, - "deprecated": false, - "_resolved": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", + "_resolved": "/root/.autorest/@microsoft.azure_autorest.python@3.0.52/node_modules/@microsoft.azure/autorest.python", "_integrity": null, - "_shasum": "352190e6dbb4a1d16587b39e589b9615d6e4aaaf", + "_shasum": "9b2d9412ad86807f8186297e0d8f4ac19b7a1f2e", "_shrinkwrap": null, "bin": null, - "_id": "@microsoft.azure/openapi-validator@1.0.2", - "_from": "file:/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", + "_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": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", - "raw": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", - "rawSpec": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", - "saveSpec": "file:/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", - "fetchSpec": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator" - }, - "_spec": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator", - "_where": "/tmp/.autorest/@microsoft.azure_openapi-validator@1.0.2/node_modules/@microsoft.azure/openapi-validator" + "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": "/tmp/.autorest", + "installationPath": "/root/.autorest", "sharedLock": { - "name": "/tmp/.autorest", + "name": "/root/.autorest", "exclusiveLock": { - "name": "_tmp_.autorest.exclusive-lock", + "name": "_root_.autorest.exclusive-lock", "options": { - "port": 5245, - "host": "2130716018", + "port": 45234, + "host": "2130706813", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.exclusive-lock:5245" + "pipe": "/tmp/pipe__root_.autorest.exclusive-lock:45234" }, "busyLock": { - "name": "_tmp_.autorest.busy-lock", + "name": "_root_.autorest.busy-lock", "options": { - "port": 46071, - "host": "2130735832", + "port": 37199, + "host": "2130756895", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.busy-lock:46071" + "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_tmp_.autorest.4023.0923679230714.personal-lock", + "name": "_root_.autorest.351.8338006616628.personal-lock", "options": { - "port": 45556, - "host": "2130737852", + "port": 14240, + "host": "2130712190", "exclusive": true }, - "pipe": "/tmp/pipe__tmp_.autorest.4023.0923679230714.personal-lock:45556" + "pipe": "/tmp/pipe__root_.autorest.351.8338006616628.personal-lock:14240" }, - "file": "/tmp/_tmp_.autorest.lock" + "file": "/tmp/_root_.autorest.lock" }, "dotnetPath": "/root/.dotnet" }, - "installationPath": "/tmp/.autorest" + "installationPath": "/root/.autorest" } ], "autorest_bootstrap": {} 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 index 24cca05abd1a..469d32def90e 100644 --- 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,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 @@ -52,7 +52,7 @@ def __init__( 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. @@ -77,10 +77,10 @@ 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 = '2018-02-14-preview' + self.api_version = '2018-02-14' self._serialize = Serializer(client_models) self._deserialize = Deserializer(client_models) diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_py3.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_py3.py index bcbb18be36d5..50f96583598a 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_py3.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/models/vault_py3.py @@ -9,7 +9,7 @@ # regenerated. # -------------------------------------------------------------------------- -from .resource import Resource +from .resource_py3 import Resource class Vault(Resource): diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/operations.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/operations.py index 69c98653aba2..911cde2fcd34 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/operations.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/operations.py @@ -23,7 +23,7 @@ class Operations(object): :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-preview". + :ivar api_version: Client Api Version. Constant value: "2018-02-14". """ models = models @@ -33,7 +33,7 @@ def __init__(self, client, config, serializer, deserializer): self._client = client self._serialize = serializer self._deserialize = deserializer - self.api_version = "2018-02-14-preview" + self.api_version = "2018-02-14" self.config = config diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py index 22e2537ac076..cc8675b21b99 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/operations/vaults_operations.py @@ -42,7 +42,7 @@ def __init__(self, client, config, serializer, deserializer): def _create_or_update_initial( self, resource_group_name, vault_name, parameters, custom_headers=None, raw=False, **operation_config): - api_version = "2018-02-14-preview" + api_version = "2018-02-14" # Construct URL url = self.create_or_update.metadata['url'] @@ -170,7 +170,7 @@ def update( """ parameters = models.VaultPatchParameters(tags=tags, properties=properties) - api_version = "2018-02-14-preview" + api_version = "2018-02-14" # Construct URL url = self.update.metadata['url'] @@ -240,7 +240,7 @@ def delete( :rtype: None or ~msrest.pipeline.ClientRawResponse :raises: :class:`CloudError` """ - api_version = "2018-02-14-preview" + api_version = "2018-02-14" # Construct URL url = self.delete.metadata['url'] @@ -298,7 +298,7 @@ def get( ~msrest.pipeline.ClientRawResponse :raises: :class:`CloudError` """ - api_version = "2018-02-14-preview" + api_version = "2018-02-14" # Construct URL url = self.get.metadata['url'] @@ -372,7 +372,7 @@ def update_access_policy( """ parameters = models.VaultAccessPolicyParameters(properties=properties) - api_version = "2018-02-14-preview" + api_version = "2018-02-14" # Construct URL url = self.update_access_policy.metadata['url'] @@ -445,7 +445,7 @@ def list_by_resource_group( ~azure.mgmt.keyvault.models.VaultPaged[~azure.mgmt.keyvault.models.Vault] :raises: :class:`CloudError` """ - api_version = "2018-02-14-preview" + api_version = "2018-02-14" def internal_paging(next_link=None, raw=False): @@ -518,7 +518,7 @@ def list_by_subscription( ~azure.mgmt.keyvault.models.VaultPaged[~azure.mgmt.keyvault.models.Vault] :raises: :class:`CloudError` """ - api_version = "2018-02-14-preview" + api_version = "2018-02-14" def internal_paging(next_link=None, raw=False): @@ -587,7 +587,7 @@ def list_deleted( ~azure.mgmt.keyvault.models.DeletedVaultPaged[~azure.mgmt.keyvault.models.DeletedVault] :raises: :class:`CloudError` """ - api_version = "2018-02-14-preview" + api_version = "2018-02-14" def internal_paging(next_link=None, raw=False): @@ -658,7 +658,7 @@ def get_deleted( ~msrest.pipeline.ClientRawResponse :raises: :class:`CloudError` """ - api_version = "2018-02-14-preview" + api_version = "2018-02-14" # Construct URL url = self.get_deleted.metadata['url'] @@ -707,7 +707,7 @@ def get_deleted( def _purge_deleted_initial( self, vault_name, location, custom_headers=None, raw=False, **operation_config): - api_version = "2018-02-14-preview" + api_version = "2018-02-14" # Construct URL url = self.purge_deleted.metadata['url'] @@ -878,7 +878,7 @@ def check_name_availability( """ vault_name = models.VaultCheckNameAvailabilityParameters(name=name) - api_version = "2018-02-14-preview" + api_version = "2018-02-14" # Construct URL url = self.check_name_availability.metadata['url'] diff --git a/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py b/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py index affaef0c987e..a39916c162ce 100644 --- a/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py +++ b/azure-mgmt-keyvault/azure/mgmt/keyvault/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "1.0.0b1" +VERSION = "1.0.0" From e6a98a14680b07fe65e146a7dd46ed0aa3d56b2e Mon Sep 17 00:00:00 2001 From: Azure SDK for Python bot Date: Fri, 22 Jun 2018 17:39:45 +0000 Subject: [PATCH 47/49] Generated from e560fd1b8e44a9e90f7f7f19aa9880736a5e3b7b Restoring the x-ms-client-name property accidently stripped from kty on KeyProperties (#3288) --- .../azure/keyvault/models/key_properties.py | 10 +- .../keyvault/models/key_properties_py3.py | 12 +- azure-keyvault/build.json | 125 +++++++++++++++--- 3 files changed, 116 insertions(+), 31 deletions(-) diff --git a/azure-keyvault/azure/keyvault/models/key_properties.py b/azure-keyvault/azure/keyvault/models/key_properties.py index e463a899f1f2..0e5833f15189 100644 --- a/azure-keyvault/azure/keyvault/models/key_properties.py +++ b/azure-keyvault/azure/keyvault/models/key_properties.py @@ -17,9 +17,9 @@ class KeyProperties(Model): :param exportable: Indicates if the private key can be exported. :type exportable: bool - :param kty: The type of key pair to be used for the certificate. Possible - values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - :type kty: str or ~azure.keyvault.models.JsonWebKeyType + :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 @@ -34,7 +34,7 @@ class KeyProperties(Model): _attribute_map = { 'exportable': {'key': 'exportable', 'type': 'bool'}, - 'kty': {'key': 'kty', 'type': 'str'}, + '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'}, @@ -43,7 +43,7 @@ class KeyProperties(Model): def __init__(self, **kwargs): super(KeyProperties, self).__init__(**kwargs) self.exportable = kwargs.get('exportable', None) - self.kty = kwargs.get('kty', 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 index c9cd8c5458a3..0361f75985c4 100644 --- a/azure-keyvault/azure/keyvault/models/key_properties_py3.py +++ b/azure-keyvault/azure/keyvault/models/key_properties_py3.py @@ -17,9 +17,9 @@ class KeyProperties(Model): :param exportable: Indicates if the private key can be exported. :type exportable: bool - :param kty: The type of key pair to be used for the certificate. Possible - values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - :type kty: str or ~azure.keyvault.models.JsonWebKeyType + :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 @@ -34,16 +34,16 @@ class KeyProperties(Model): _attribute_map = { 'exportable': {'key': 'exportable', 'type': 'bool'}, - 'kty': {'key': 'kty', 'type': 'str'}, + '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, kty=None, key_size: int=None, reuse_key: bool=None, curve=None, **kwargs) -> None: + 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.kty = kty + self.key_type = key_type self.key_size = key_size self.reuse_key = reuse_key self.curve = curve diff --git a/azure-keyvault/build.json b/azure-keyvault/build.json index 69195f43152f..919a006aa3bb 100644 --- a/azure-keyvault/build.json +++ b/azure-keyvault/build.json @@ -74,13 +74,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.351.8338006616628.personal-lock", + "name": "_root_.autorest.3335.798957817633.personal-lock", "options": { - "port": 14240, - "host": "2130712190", + "port": 12974, + "host": "2130760604", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.351.8338006616628.personal-lock:14240" + "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" }, "file": "/tmp/_root_.autorest.lock" }, @@ -157,13 +157,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.351.8338006616628.personal-lock", + "name": "_root_.autorest.3335.798957817633.personal-lock", "options": { - "port": 14240, - "host": "2130712190", + "port": 12974, + "host": "2130760604", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.351.8338006616628.personal-lock:14240" + "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" }, "file": "/tmp/_root_.autorest.lock" }, @@ -242,13 +242,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.351.8338006616628.personal-lock", + "name": "_root_.autorest.3335.798957817633.personal-lock", "options": { - "port": 14240, - "host": "2130712190", + "port": 12974, + "host": "2130760604", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.351.8338006616628.personal-lock:14240" + "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" }, "file": "/tmp/_root_.autorest.lock" }, @@ -327,13 +327,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.351.8338006616628.personal-lock", + "name": "_root_.autorest.3335.798957817633.personal-lock", "options": { - "port": 14240, - "host": "2130712190", + "port": 12974, + "host": "2130760604", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.351.8338006616628.personal-lock:14240" + "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" }, "file": "/tmp/_root_.autorest.lock" }, @@ -412,13 +412,98 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.351.8338006616628.personal-lock", + "name": "_root_.autorest.3335.798957817633.personal-lock", "options": { - "port": 14240, - "host": "2130712190", + "port": 12974, + "host": "2130760604", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.351.8338006616628.personal-lock:14240" + "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" + }, + "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.3335.798957817633.personal-lock", + "options": { + "port": 12974, + "host": "2130760604", + "exclusive": true + }, + "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" }, "file": "/tmp/_root_.autorest.lock" }, From 922107732794687861d30eb370e4ca5bcaa34ae0 Mon Sep 17 00:00:00 2001 From: Azure SDK for Python bot Date: Mon, 25 Jun 2018 19:33:20 +0000 Subject: [PATCH 48/49] Generated from e560fd1b8e44a9e90f7f7f19aa9880736a5e3b7b Restoring the x-ms-client-name property accidently stripped from kty on KeyProperties (#3288) --- azure-keyvault/build.json | 48 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/azure-keyvault/build.json b/azure-keyvault/build.json index 919a006aa3bb..826e5cafe872 100644 --- a/azure-keyvault/build.json +++ b/azure-keyvault/build.json @@ -74,13 +74,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.3335.798957817633.personal-lock", + "name": "_root_.autorest.1296.0983509839407.personal-lock", "options": { - "port": 12974, - "host": "2130760604", + "port": 54678, + "host": "2130709972", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" + "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" }, "file": "/tmp/_root_.autorest.lock" }, @@ -157,13 +157,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.3335.798957817633.personal-lock", + "name": "_root_.autorest.1296.0983509839407.personal-lock", "options": { - "port": 12974, - "host": "2130760604", + "port": 54678, + "host": "2130709972", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" + "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" }, "file": "/tmp/_root_.autorest.lock" }, @@ -242,13 +242,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.3335.798957817633.personal-lock", + "name": "_root_.autorest.1296.0983509839407.personal-lock", "options": { - "port": 12974, - "host": "2130760604", + "port": 54678, + "host": "2130709972", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" + "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" }, "file": "/tmp/_root_.autorest.lock" }, @@ -327,13 +327,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.3335.798957817633.personal-lock", + "name": "_root_.autorest.1296.0983509839407.personal-lock", "options": { - "port": 12974, - "host": "2130760604", + "port": 54678, + "host": "2130709972", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" + "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" }, "file": "/tmp/_root_.autorest.lock" }, @@ -412,13 +412,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.3335.798957817633.personal-lock", + "name": "_root_.autorest.1296.0983509839407.personal-lock", "options": { - "port": 12974, - "host": "2130760604", + "port": 54678, + "host": "2130709972", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" + "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" }, "file": "/tmp/_root_.autorest.lock" }, @@ -497,13 +497,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.3335.798957817633.personal-lock", + "name": "_root_.autorest.1296.0983509839407.personal-lock", "options": { - "port": 12974, - "host": "2130760604", + "port": 54678, + "host": "2130709972", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.3335.798957817633.personal-lock:12974" + "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" }, "file": "/tmp/_root_.autorest.lock" }, From 50a7d8417d4a56150d29e0f6bce214ddce85fafe Mon Sep 17 00:00:00 2001 From: Azure SDK for Python bot Date: Tue, 26 Jun 2018 20:50:32 +0000 Subject: [PATCH 49/49] Generated from e560fd1b8e44a9e90f7f7f19aa9880736a5e3b7b Restoring the x-ms-client-name property accidently stripped from kty on KeyProperties (#3288) --- azure-keyvault/build.json | 48 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/azure-keyvault/build.json b/azure-keyvault/build.json index 826e5cafe872..8312dc405596 100644 --- a/azure-keyvault/build.json +++ b/azure-keyvault/build.json @@ -74,13 +74,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.1296.0983509839407.personal-lock", + "name": "_root_.autorest.7463.089005969417.personal-lock", "options": { - "port": 54678, - "host": "2130709972", + "port": 14970, + "host": "2130768351", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" }, "file": "/tmp/_root_.autorest.lock" }, @@ -157,13 +157,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.1296.0983509839407.personal-lock", + "name": "_root_.autorest.7463.089005969417.personal-lock", "options": { - "port": 54678, - "host": "2130709972", + "port": 14970, + "host": "2130768351", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" }, "file": "/tmp/_root_.autorest.lock" }, @@ -242,13 +242,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.1296.0983509839407.personal-lock", + "name": "_root_.autorest.7463.089005969417.personal-lock", "options": { - "port": 54678, - "host": "2130709972", + "port": 14970, + "host": "2130768351", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" }, "file": "/tmp/_root_.autorest.lock" }, @@ -327,13 +327,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.1296.0983509839407.personal-lock", + "name": "_root_.autorest.7463.089005969417.personal-lock", "options": { - "port": 54678, - "host": "2130709972", + "port": 14970, + "host": "2130768351", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" }, "file": "/tmp/_root_.autorest.lock" }, @@ -412,13 +412,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.1296.0983509839407.personal-lock", + "name": "_root_.autorest.7463.089005969417.personal-lock", "options": { - "port": 54678, - "host": "2130709972", + "port": 14970, + "host": "2130768351", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" }, "file": "/tmp/_root_.autorest.lock" }, @@ -497,13 +497,13 @@ "pipe": "/tmp/pipe__root_.autorest.busy-lock:37199" }, "personalLock": { - "name": "_root_.autorest.1296.0983509839407.personal-lock", + "name": "_root_.autorest.7463.089005969417.personal-lock", "options": { - "port": 54678, - "host": "2130709972", + "port": 14970, + "host": "2130768351", "exclusive": true }, - "pipe": "/tmp/pipe__root_.autorest.1296.0983509839407.personal-lock:54678" + "pipe": "/tmp/pipe__root_.autorest.7463.089005969417.personal-lock:14970" }, "file": "/tmp/_root_.autorest.lock" },