From 2d83615c5608fc05d3dd579548255d51fcafb902 Mon Sep 17 00:00:00 2001 From: 00Kai0 Date: Thu, 10 Jun 2021 16:59:01 +0800 Subject: [PATCH 1/9] feature permission list --- .../resource/_client_factory.py | 10 +- .../cli/command_modules/resource/_params.py | 1 + .../cli/command_modules/resource/commands.py | 1 + .../cli/command_modules/resource/custom.py | 28 +- .../test_provider_registration.yaml | 4 +- .../test_provider_registration_mg.yaml | 2 +- .../test_provider_registration_rpaas.yaml | 18 +- .../latest/recordings/test_register.yaml | 242 ++++++++++++++++++ .../resource/tests/latest/test_provider.py | 15 ++ 9 files changed, 295 insertions(+), 26 deletions(-) create mode 100644 src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register.yaml create mode 100644 src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py diff --git a/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py b/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py index 62941d43854..7ca2a2282a8 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py @@ -4,10 +4,10 @@ # -------------------------------------------------------------------------------------------- -def _resource_client_factory(cli_ctx, **_): +def _resource_client_factory(cli_ctx, api_version=None, **_): from azure.cli.core.commands.client_factory import get_mgmt_service_client from azure.cli.core.profiles import ResourceType - return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_RESOURCE_RESOURCES) + return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_RESOURCE_RESOURCES, api_version=api_version) def _resource_feature_client_factory(cli_ctx, **_): @@ -68,12 +68,12 @@ def cf_resource_groups(cli_ctx, _): return _resource_client_factory(cli_ctx).resource_groups -def cf_resources(cli_ctx, _): +def cf_resources(cli_ctx, **_): return _resource_client_factory(cli_ctx).resources -def cf_providers(cli_ctx, _): - return _resource_client_factory(cli_ctx).providers +def cf_providers(cli_ctx, *_): + return _resource_client_factory(cli_ctx, api_version="2021-04-01").providers def cf_tags(cli_ctx, _): diff --git a/src/azure-cli/azure/cli/command_modules/resource/_params.py b/src/azure-cli/azure/cli/command_modules/resource/_params.py index 4632ef07040..01eece6ac26 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_params.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_params.py @@ -145,6 +145,7 @@ def load_arguments(self, _): c.argument('mg', help="The management group id to register.", options_list=['--management-group-id', '-m']) c.argument('accept_terms', action='store_true', is_preview=True, help="Accept market place terms and RP terms for RPaaS. Required when registering RPs from RPaaS, such as 'Microsoft.Confluent' and 'Microsoft.Datadog'.") c.argument('wait', action='store_true', help='wait for the registration to finish') + c.argument('consent_to_authorization', action='store_true', help='A value indicating whether authorization is consented or not.') with self.argument_context('provider unregister') as c: c.argument('wait', action='store_true', help='wait for unregistration to finish') diff --git a/src/azure-cli/azure/cli/command_modules/resource/commands.py b/src/azure-cli/azure/cli/command_modules/resource/commands.py index 3a2a09c27a3..644e9f0484c 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/commands.py +++ b/src/azure-cli/azure/cli/command_modules/resource/commands.py @@ -221,6 +221,7 @@ def load_command_table(self, _): g.custom_command('register', 'register_provider') g.custom_command('unregister', 'unregister_provider') g.custom_command('operation list', 'list_provider_operations') + g.custom_command('permission list', 'list_provider_permissions') g.custom_show_command('operation show', 'show_provider_operations') # Resource feature commands diff --git a/src/azure-cli/azure/cli/command_modules/resource/custom.py b/src/azure-cli/azure/cli/command_modules/resource/custom.py index ac631560266..7fd526ca1f6 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/custom.py +++ b/src/azure-cli/azure/cli/command_modules/resource/custom.py @@ -33,7 +33,8 @@ from azure.cli.command_modules.resource._client_factory import ( _resource_client_factory, _resource_policy_client_factory, _resource_lock_client_factory, - _resource_links_client_factory, _resource_deploymentscripts_client_factory, _authorization_management_client, _resource_managedapps_client_factory, _resource_templatespecs_client_factory) + _resource_links_client_factory, _resource_deploymentscripts_client_factory, _authorization_management_client, _resource_managedapps_client_factory, _resource_templatespecs_client_factory, + cf_providers) from azure.cli.command_modules.resource._validators import _parse_lock_id from azure.core.pipeline.policies import SansIOHTTPPolicy @@ -1019,23 +1020,23 @@ def _get_auth_provider_latest_api_version(cli_ctx): return api_version -def _update_provider(cli_ctx, namespace, registering, wait, mg_id=None, accept_terms=None): +def _update_provider(cli_ctx, namespace, registering, wait, properties=None, mg_id=None, accept_terms=None): import time target_state = 'Registered' if registering else 'Unregistered' - rcf = _resource_client_factory(cli_ctx) + client = cf_providers(cli_ctx) is_rpaas = namespace.lower() in RPAAS_APIS if mg_id is None and registering: if is_rpaas: if not accept_terms: raise RequiredArgumentMissingError("--accept-terms must be specified when registering the {} RP from RPaaS.".format(namespace)) wait = True - r = rcf.providers.register(namespace) + r = client.register(namespace, properties=properties) elif mg_id and registering: - r = rcf.providers.register_at_management_group_scope(namespace, mg_id) + r = client.register_at_management_group_scope(namespace, mg_id) if r is None: return else: - r = rcf.providers.unregister(namespace) + r = client.unregister(namespace) if r.registration_state == target_state: return @@ -1043,7 +1044,7 @@ def _update_provider(cli_ctx, namespace, registering, wait, mg_id=None, accept_t if wait: while True: time.sleep(10) - rp_info = rcf.providers.get(namespace) + rp_info = client.get(namespace) if rp_info.registration_state == target_state: break if is_rpaas and registering and mg_id is None: @@ -2036,8 +2037,12 @@ def list_resources(cmd, resource_group_name=None, return list(resources) -def register_provider(cmd, resource_provider_namespace, mg=None, wait=False, accept_terms=None): - _update_provider(cmd.cli_ctx, resource_provider_namespace, registering=True, wait=wait, mg_id=mg, accept_terms=accept_terms) +def register_provider(cmd, resource_provider_namespace, consent_to_authorization=False, mg=None, wait=False, accept_terms=None): + properties=None + if consent_to_authorization: + from azure.mgmt.resource.resources.models import ProviderRegistrationRequest, ProviderConsentDefinition + properties = ProviderRegistrationRequest(third_party_provider_consent=ProviderConsentDefinition(consent_to_authorization=consent_to_authorization)) + _update_provider(cmd.cli_ctx, resource_provider_namespace, registering=True, wait=wait, properties=properties, mg_id=mg, accept_terms=accept_terms) def unregister_provider(cmd, resource_provider_namespace, wait=False): @@ -2049,6 +2054,11 @@ def list_provider_operations(cmd): return auth_client.provider_operations_metadata.list() +def list_provider_permissions(cmd, resource_provider_namespace): + client = cf_providers(cmd.cli_ctx) + return client.provider_permissions(resource_provider_namespace) + + def show_provider_operations(cmd, resource_provider_namespace): version = getattr(get_api_version(cmd.cli_ctx, ResourceType.MGMT_AUTHORIZATION), 'provider_operations_metadata') auth_client = _authorization_management_client(cmd.cli_ctx) diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration.yaml b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration.yaml index 5af64a82a66..052fd08bb66 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration.yaml +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration.yaml @@ -68,7 +68,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/register?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/register?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate","namespace":"Microsoft.ClassicInfrastructureMigrate","authorization":{"applicationId":"5e5abe2b-83cd-4786-826a-a05653ebb103","roleDefinitionId":"766c4d9b-ef83-4f73-8352-1450a506a69b"},"resourceTypes":[{"resourceType":"classicInfrastructureResources","locations":["East @@ -176,7 +176,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/unregister?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/unregister?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate","namespace":"Microsoft.ClassicInfrastructureMigrate","authorization":{"applicationId":"5e5abe2b-83cd-4786-826a-a05653ebb103","roleDefinitionId":"766c4d9b-ef83-4f73-8352-1450a506a69b"},"resourceTypes":[{"resourceType":"classicInfrastructureResources","locations":["East diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration_mg.yaml b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration_mg.yaml index d77b274d76d..5b663b71c14 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration_mg.yaml +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration_mg.yaml @@ -20,7 +20,7 @@ interactions: accept-language: - en-US method: POST - uri: https://management.azure.com/providers/Microsoft.Management/managementGroups/testmg/providers/Microsoft.ClassicInfrastructureMigrate/register?api-version=2020-10-01 + uri: https://management.azure.com/providers/Microsoft.Management/managementGroups/testmg/providers/Microsoft.ClassicInfrastructureMigrate/register?api-version=2021-04-01 response: body: string: '' diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration_rpaas.yaml b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration_rpaas.yaml index f0886117b90..d6332ae538a 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration_rpaas.yaml +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_provider_registration_rpaas.yaml @@ -66,7 +66,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent/register?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent/register?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent","namespace":"Microsoft.Confluent","authorizations":[{"applicationId":"1448fd13-7e74-41f4-b6e3-17e485d8ac2e","roleDefinitionId":"4db34280-b0be-4827-aa5b-418391409cee"}],"resourceTypes":[{"resourceType":"operations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations/OperationStatuses","locations":["West @@ -119,7 +119,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent","namespace":"Microsoft.Confluent","authorizations":[{"applicationId":"1448fd13-7e74-41f4-b6e3-17e485d8ac2e","roleDefinitionId":"4db34280-b0be-4827-aa5b-418391409cee"}],"resourceTypes":[{"resourceType":"operations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations/OperationStatuses","locations":["West @@ -168,7 +168,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent","namespace":"Microsoft.Confluent","authorizations":[{"applicationId":"1448fd13-7e74-41f4-b6e3-17e485d8ac2e","roleDefinitionId":"4db34280-b0be-4827-aa5b-418391409cee"}],"resourceTypes":[{"resourceType":"operations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations/OperationStatuses","locations":["West @@ -217,7 +217,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent","namespace":"Microsoft.Confluent","authorizations":[{"applicationId":"1448fd13-7e74-41f4-b6e3-17e485d8ac2e","roleDefinitionId":"4db34280-b0be-4827-aa5b-418391409cee"}],"resourceTypes":[{"resourceType":"operations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations/OperationStatuses","locations":["West @@ -266,7 +266,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent","namespace":"Microsoft.Confluent","authorizations":[{"applicationId":"1448fd13-7e74-41f4-b6e3-17e485d8ac2e","roleDefinitionId":"4db34280-b0be-4827-aa5b-418391409cee"}],"resourceTypes":[{"resourceType":"operations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations/OperationStatuses","locations":["West @@ -315,7 +315,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent","namespace":"Microsoft.Confluent","authorizations":[{"applicationId":"1448fd13-7e74-41f4-b6e3-17e485d8ac2e","roleDefinitionId":"4db34280-b0be-4827-aa5b-418391409cee"}],"resourceTypes":[{"resourceType":"operations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations/OperationStatuses","locations":["West @@ -364,7 +364,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent","namespace":"Microsoft.Confluent","authorizations":[{"applicationId":"1448fd13-7e74-41f4-b6e3-17e485d8ac2e","roleDefinitionId":"4db34280-b0be-4827-aa5b-418391409cee"}],"resourceTypes":[{"resourceType":"operations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations/OperationStatuses","locations":["West @@ -413,7 +413,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent","namespace":"Microsoft.Confluent","authorizations":[{"applicationId":"1448fd13-7e74-41f4-b6e3-17e485d8ac2e","roleDefinitionId":"4db34280-b0be-4827-aa5b-418391409cee"}],"resourceTypes":[{"resourceType":"operations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations/OperationStatuses","locations":["West @@ -565,7 +565,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent/unregister?api-version=2020-10-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent/unregister?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Confluent","namespace":"Microsoft.Confluent","authorizations":[{"applicationId":"1448fd13-7e74-41f4-b6e3-17e485d8ac2e","roleDefinitionId":"4db34280-b0be-4827-aa5b-418391409cee"}],"resourceTypes":[{"resourceType":"operations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations","locations":[],"apiVersions":["2020-03-01-preview","2020-03-01"],"capabilities":"None"},{"resourceType":"locations/OperationStatuses","locations":["West diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register.yaml b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register.yaml new file mode 100644 index 00000000000..575b783506f --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register.yaml @@ -0,0 +1,242 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - provider unregister + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n + User-Agent: + - AZURECLI/2.24.0 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights/unregister?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights","namespace":"Microsoft.PolicyInsights","authorizations":[{"applicationId":"1d78a85d-813d-46f0-b496-dd72f50a3ec0","roleDefinitionId":"63d2b225-4c34-4641-8768-21a1f7c68ce8"},{"applicationId":"8cae6e77-e04e-42ce-b5cb-50d82bce26b1","roleDefinitionId":"4a2d3d6b-a6ea-45e2-9882-c9ba3e726ed7"}],"resourceTypes":[{"resourceType":"policyEvents","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyStates","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"operations","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"None"},{"resourceType":"asyncOperationResults","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview"],"capabilities":"None"},{"resourceType":"remediations","locations":[],"apiVersions":["2019-07-01","2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"eventGridFilters","locations":[],"apiVersions":["2020-10-01"],"capabilities":"SupportsExtension"},{"resourceType":"checkPolicyRestrictions","locations":[],"apiVersions":["2020-07-01-preview","2020-07-01"],"capabilities":"None"},{"resourceType":"policyTrackedResources","locations":[],"apiVersions":["2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyMetadata","locations":[],"apiVersions":["2019-10-01"],"capabilities":"None"}],"registrationState":"Unregistering","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '1824' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 10 Jun 2021 06:15:10 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: '{"thirdPartyProviderConsent": {"consentToAuthorization": true}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - provider register + Connection: + - keep-alive + Content-Length: + - '63' + Content-Type: + - application/json + ParameterSetName: + - -n --consent-to-authorization + User-Agent: + - AZURECLI/2.24.0 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights/register?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights","namespace":"Microsoft.PolicyInsights","authorizations":[{"applicationId":"1d78a85d-813d-46f0-b496-dd72f50a3ec0","roleDefinitionId":"63d2b225-4c34-4641-8768-21a1f7c68ce8"},{"applicationId":"8cae6e77-e04e-42ce-b5cb-50d82bce26b1","roleDefinitionId":"4a2d3d6b-a6ea-45e2-9882-c9ba3e726ed7"}],"resourceTypes":[{"resourceType":"policyEvents","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyStates","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"operations","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"None"},{"resourceType":"asyncOperationResults","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview"],"capabilities":"None"},{"resourceType":"remediations","locations":[],"apiVersions":["2019-07-01","2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"eventGridFilters","locations":[],"apiVersions":["2020-10-01"],"capabilities":"SupportsExtension"},{"resourceType":"checkPolicyRestrictions","locations":[],"apiVersions":["2020-07-01-preview","2020-07-01"],"capabilities":"None"},{"resourceType":"policyTrackedResources","locations":[],"apiVersions":["2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyMetadata","locations":[],"apiVersions":["2019-10-01"],"capabilities":"None"}],"registrationState":"Registering","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '1822' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 10 Jun 2021 06:15:15 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - provider permission list + Connection: + - keep-alive + ParameterSetName: + - -n + User-Agent: + - AZURECLI/2.24.0 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights/providerPermissions?api-version=2021-04-01 + response: + body: + string: '{"value":[{"applicationId":"1d78a85d-813d-46f0-b496-dd72f50a3ec0","roleDefinition":{"idAsGuid":"63d2b225-4c34-4641-8768-21a1f7c68ce8","id":"63d2b2254c344641876821a1f7c68ce8","name":"Policy + Insights Resource Provider Service Role","isServiceRole":true,"permissions":[{"actions":["*/read","Microsoft.Authorization/checkAccess/action","Microsoft.Authorization/checkAccess/read","Microsoft.Resources/deployments/cancel/action"],"notActions":[],"dataActions":[],"notDataActions":[]}],"scopes":["/"]}},{"applicationId":"8cae6e77-e04e-42ce-b5cb-50d82bce26b1","roleDefinition":{"idAsGuid":"4a2d3d6b-a6ea-45e2-9882-c9ba3e726ed7","id":"4a2d3d6ba6ea45e29882c9ba3e726ed7","name":"Policy + Insights Provider Data Plane Service Role","isServiceRole":true,"permissions":[{"actions":["Microsoft.Resources/subscriptions/read","Microsoft.Authorization/checkAccess/action","Microsoft.Authorization/checkAccess/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.Authorization/policyassignments/read","Microsoft.KeyVault/vaults/read","Microsoft.ContainerService/managedClusters/read","Microsoft.CustomerLockbox/requests/read","Microsoft.Kubernetes/connectedClusters/read","Microsoft.Network/virtualNetworks/read"],"notActions":[],"dataActions":[],"notDataActions":[]}],"scopes":["/"]}}]}' + headers: + cache-control: + - no-cache + content-length: + - '1286' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 10 Jun 2021 06:15:18 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - provider unregister + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n + User-Agent: + - AZURECLI/2.24.0 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights/unregister?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights","namespace":"Microsoft.PolicyInsights","authorizations":[{"applicationId":"1d78a85d-813d-46f0-b496-dd72f50a3ec0","roleDefinitionId":"63d2b225-4c34-4641-8768-21a1f7c68ce8"},{"applicationId":"8cae6e77-e04e-42ce-b5cb-50d82bce26b1","roleDefinitionId":"4a2d3d6b-a6ea-45e2-9882-c9ba3e726ed7"}],"resourceTypes":[{"resourceType":"policyEvents","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyStates","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"operations","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"None"},{"resourceType":"asyncOperationResults","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview"],"capabilities":"None"},{"resourceType":"remediations","locations":[],"apiVersions":["2019-07-01","2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"eventGridFilters","locations":[],"apiVersions":["2020-10-01"],"capabilities":"SupportsExtension"},{"resourceType":"checkPolicyRestrictions","locations":[],"apiVersions":["2020-07-01-preview","2020-07-01"],"capabilities":"None"},{"resourceType":"policyTrackedResources","locations":[],"apiVersions":["2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyMetadata","locations":[],"apiVersions":["2019-10-01"],"capabilities":"None"}],"registrationState":"Unregistering","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '1824' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 10 Jun 2021 06:15:22 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - provider register + Connection: + - keep-alive + Content-Length: + - '0' + Content-Type: + - application/json + ParameterSetName: + - -n + User-Agent: + - AZURECLI/2.24.0 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights/register?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights","namespace":"Microsoft.PolicyInsights","authorizations":[{"applicationId":"1d78a85d-813d-46f0-b496-dd72f50a3ec0","roleDefinitionId":"63d2b225-4c34-4641-8768-21a1f7c68ce8"},{"applicationId":"8cae6e77-e04e-42ce-b5cb-50d82bce26b1","roleDefinitionId":"4a2d3d6b-a6ea-45e2-9882-c9ba3e726ed7"}],"resourceTypes":[{"resourceType":"policyEvents","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyStates","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"operations","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"None"},{"resourceType":"asyncOperationResults","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview"],"capabilities":"None"},{"resourceType":"remediations","locations":[],"apiVersions":["2019-07-01","2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"eventGridFilters","locations":[],"apiVersions":["2020-10-01"],"capabilities":"SupportsExtension"},{"resourceType":"checkPolicyRestrictions","locations":[],"apiVersions":["2020-07-01-preview","2020-07-01"],"capabilities":"None"},{"resourceType":"policyTrackedResources","locations":[],"apiVersions":["2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyMetadata","locations":[],"apiVersions":["2019-10-01"],"capabilities":"None"}],"registrationState":"Registering","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '1822' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 10 Jun 2021 06:15:28 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +version: 1 diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py new file mode 100644 index 00000000000..f258e900ae3 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py @@ -0,0 +1,15 @@ +from azure.cli.testsdk import ScenarioTest + +class ProviderTests(ScenarioTest): + + def test_register(self): + + self.kwargs = { + 'namespace': "Microsoft.PolicyInsights" + } + + self.cmd('provider unregister -n {namespace}') + self.cmd('provider register -n {namespace} --consent-to-authorization') + self.cmd('provider permission list -n {namespace}') + self.cmd('provider unregister -n {namespace}') + self.cmd('provider register -n {namespace}') From e72447f1ddfafec5e675da5e3b32fde40ed5ce98 Mon Sep 17 00:00:00 2001 From: 00Kai0 Date: Thu, 10 Jun 2021 17:17:08 +0800 Subject: [PATCH 2/9] fix --- .../cli/command_modules/resource/_client_factory.py | 4 ++-- .../azure/cli/command_modules/resource/_help.py | 10 ++++++++++ .../azure/cli/command_modules/resource/_params.py | 2 +- .../recordings/test_provider_registration.yaml | 4 ++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py b/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py index 7ca2a2282a8..d395b52957e 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py @@ -68,11 +68,11 @@ def cf_resource_groups(cli_ctx, _): return _resource_client_factory(cli_ctx).resource_groups -def cf_resources(cli_ctx, **_): +def cf_resources(cli_ctx, _): return _resource_client_factory(cli_ctx).resources -def cf_providers(cli_ctx, *_): +def cf_providers(cli_ctx, **_): return _resource_client_factory(cli_ctx, api_version="2021-04-01").providers diff --git a/src/azure-cli/azure/cli/command_modules/resource/_help.py b/src/azure-cli/azure/cli/command_modules/resource/_help.py index ac224cf8831..7c675948a18 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_help.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_help.py @@ -1846,6 +1846,16 @@ az provider list --query [?namespace=='Microsoft.Network'].resourceTypes[].resourceType """ +helps['provider permission'] = """ +type: group +short-summary: Get provider permissions. +""" + +helps['provider permission list'] = """ +type: command +short-summary: Get permissions from providers. +""" + helps['provider operation'] = """ type: group short-summary: Get provider operations metadatas. diff --git a/src/azure-cli/azure/cli/command_modules/resource/_params.py b/src/azure-cli/azure/cli/command_modules/resource/_params.py index 01eece6ac26..05c7f15e20d 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_params.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_params.py @@ -145,7 +145,7 @@ def load_arguments(self, _): c.argument('mg', help="The management group id to register.", options_list=['--management-group-id', '-m']) c.argument('accept_terms', action='store_true', is_preview=True, help="Accept market place terms and RP terms for RPaaS. Required when registering RPs from RPaaS, such as 'Microsoft.Confluent' and 'Microsoft.Datadog'.") c.argument('wait', action='store_true', help='wait for the registration to finish') - c.argument('consent_to_authorization', action='store_true', help='A value indicating whether authorization is consented or not.') + c.argument('consent_to_authorization', options_list=['--consent-to-authorization', '-c'], action='store_true', help='A value indicating whether authorization is consented or not.') with self.argument_context('provider unregister') as c: c.argument('wait', action='store_true', help='wait for unregistration to finish') diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/recordings/test_provider_registration.yaml b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/recordings/test_provider_registration.yaml index 555daa5045a..a7bc07b1cdc 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/recordings/test_provider_registration.yaml +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/recordings/test_provider_registration.yaml @@ -68,7 +68,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/register?api-version=2018-02-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/register?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate","namespace":"Microsoft.ClassicInfrastructureMigrate","authorization":{"applicationId":"5e5abe2b-83cd-4786-826a-a05653ebb103","roleDefinitionId":"766c4d9b-ef83-4f73-8352-1450a506a69b"},"resourceTypes":[{"resourceType":"classicInfrastructureResources","locations":["East @@ -176,7 +176,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/unregister?api-version=2018-02-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/unregister?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate","namespace":"Microsoft.ClassicInfrastructureMigrate","authorization":{"applicationId":"5e5abe2b-83cd-4786-826a-a05653ebb103","roleDefinitionId":"766c4d9b-ef83-4f73-8352-1450a506a69b"},"resourceTypes":[{"resourceType":"classicInfrastructureResources","locations":["East From 2136995d0afce0df33c8973dd20d721d3cb308b3 Mon Sep 17 00:00:00 2001 From: 00Kai0 Date: Thu, 10 Jun 2021 17:32:42 +0800 Subject: [PATCH 3/9] fix --- .../recordings/test_provider_registration.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/recordings/test_provider_registration.yaml b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/recordings/test_provider_registration.yaml index 901ef44a405..2ad0dbff06f 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/recordings/test_provider_registration.yaml +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/recordings/test_provider_registration.yaml @@ -68,7 +68,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/register?api-version=2018-05-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/register?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate","namespace":"Microsoft.ClassicInfrastructureMigrate","authorization":{"applicationId":"5e5abe2b-83cd-4786-826a-a05653ebb103","roleDefinitionId":"766c4d9b-ef83-4f73-8352-1450a506a69b"},"resourceTypes":[{"resourceType":"classicInfrastructureResources","locations":["East @@ -176,7 +176,7 @@ interactions: User-Agent: - AZURECLI/2.21.0 azsdk-python-azure-mgmt-resource/16.0.0 Python/3.8.0 (Windows-10-10.0.19041-SP0) method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/unregister?api-version=2018-05-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/unregister?api-version=2021-04-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate","namespace":"Microsoft.ClassicInfrastructureMigrate","authorization":{"applicationId":"5e5abe2b-83cd-4786-826a-a05653ebb103","roleDefinitionId":"766c4d9b-ef83-4f73-8352-1450a506a69b"},"resourceTypes":[{"resourceType":"classicInfrastructureResources","locations":["East From 0c5b73b38958c485ae6e2a702717f5737c84ea36 Mon Sep 17 00:00:00 2001 From: 00Kai0 Date: Thu, 10 Jun 2021 17:33:48 +0800 Subject: [PATCH 4/9] fix --- src/azure-cli/azure/cli/command_modules/resource/custom.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/azure-cli/azure/cli/command_modules/resource/custom.py b/src/azure-cli/azure/cli/command_modules/resource/custom.py index 7fd526ca1f6..0168669ebe4 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/custom.py +++ b/src/azure-cli/azure/cli/command_modules/resource/custom.py @@ -2038,7 +2038,7 @@ def list_resources(cmd, resource_group_name=None, def register_provider(cmd, resource_provider_namespace, consent_to_authorization=False, mg=None, wait=False, accept_terms=None): - properties=None + properties = None if consent_to_authorization: from azure.mgmt.resource.resources.models import ProviderRegistrationRequest, ProviderConsentDefinition properties = ProviderRegistrationRequest(third_party_provider_consent=ProviderConsentDefinition(consent_to_authorization=consent_to_authorization)) From aa2315c0fcd35edd385e42ec50f871a8bdc8efbd Mon Sep 17 00:00:00 2001 From: 00Kai0 Date: Thu, 10 Jun 2021 17:35:30 +0800 Subject: [PATCH 5/9] fix --- .../command_modules/resource/tests/latest/test_provider.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py index f258e900ae3..ac39932f106 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py @@ -1,3 +1,8 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + from azure.cli.testsdk import ScenarioTest class ProviderTests(ScenarioTest): From ca6b89b729592193dca7f97a02a865b588df30e2 Mon Sep 17 00:00:00 2001 From: 00Kai0 Date: Fri, 11 Jun 2021 11:02:22 +0800 Subject: [PATCH 6/9] fix --- src/azure-cli/azure/cli/command_modules/resource/_params.py | 2 +- src/azure-cli/azure/cli/command_modules/resource/custom.py | 6 +++--- .../tests/latest/sample_policy_set_exemption_test.json | 2 +- .../command_modules/resource/tests/latest/test_provider.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/resource/_params.py b/src/azure-cli/azure/cli/command_modules/resource/_params.py index 05c7f15e20d..7a0d4970d5e 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_params.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_params.py @@ -145,7 +145,7 @@ def load_arguments(self, _): c.argument('mg', help="The management group id to register.", options_list=['--management-group-id', '-m']) c.argument('accept_terms', action='store_true', is_preview=True, help="Accept market place terms and RP terms for RPaaS. Required when registering RPs from RPaaS, such as 'Microsoft.Confluent' and 'Microsoft.Datadog'.") c.argument('wait', action='store_true', help='wait for the registration to finish') - c.argument('consent_to_authorization', options_list=['--consent-to-authorization', '-c'], action='store_true', help='A value indicating whether authorization is consented or not.') + c.argument('consent_to_permissions', options_list=['--consent-to-permissions', '-c'], action='store_true', help='A value indicating whether authorization is consented or not.') with self.argument_context('provider unregister') as c: c.argument('wait', action='store_true', help='wait for unregistration to finish') diff --git a/src/azure-cli/azure/cli/command_modules/resource/custom.py b/src/azure-cli/azure/cli/command_modules/resource/custom.py index 0168669ebe4..cf852c07509 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/custom.py +++ b/src/azure-cli/azure/cli/command_modules/resource/custom.py @@ -2037,11 +2037,11 @@ def list_resources(cmd, resource_group_name=None, return list(resources) -def register_provider(cmd, resource_provider_namespace, consent_to_authorization=False, mg=None, wait=False, accept_terms=None): +def register_provider(cmd, resource_provider_namespace, consent_to_permissions=False, mg=None, wait=False, accept_terms=None): properties = None - if consent_to_authorization: + if consent_to_permissions: from azure.mgmt.resource.resources.models import ProviderRegistrationRequest, ProviderConsentDefinition - properties = ProviderRegistrationRequest(third_party_provider_consent=ProviderConsentDefinition(consent_to_authorization=consent_to_authorization)) + properties = ProviderRegistrationRequest(third_party_provider_consent=ProviderConsentDefinition(consent_to_authorization=consent_to_permissions)) _update_provider(cmd.cli_ctx, resource_provider_namespace, registering=True, wait=wait, properties=properties, mg_id=mg, accept_terms=accept_terms) diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/sample_policy_set_exemption_test.json b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/sample_policy_set_exemption_test.json index 09c466f53cd..adc41402ffa 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/sample_policy_set_exemption_test.json +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/sample_policy_set_exemption_test.json @@ -1 +1 @@ -[{"policyDefinitionId": "/providers/Microsoft.Management/managementGroups/cli-test-mgmt-group000002/providers/Microsoft.Authorization/policyDefinitions/clitest000003", "parameters": {"allowedLocations": {"value": ["australiaeast", "eastus", "japaneast", "westus"]}}}, {"policyDefinitionId": "/providers/Microsoft.Management/managementGroups/cli-test-mgmt-group000002/providers/Microsoft.Authorization/policyDefinitions/clitest-dp000005"}] \ No newline at end of file +[{"policyDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/policyDefinitions/clitest000002", "parameters": {"allowedLocations": {"value": ["australiaeast", "eastus", "japaneast", "westus"]}}}, {"policyDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/policyDefinitions/clitest-dp000004"}] \ No newline at end of file diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py index ac39932f106..95e3045eb60 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py @@ -14,7 +14,7 @@ def test_register(self): } self.cmd('provider unregister -n {namespace}') - self.cmd('provider register -n {namespace} --consent-to-authorization') + self.cmd('provider register -n {namespace} --consent-to-permissions') self.cmd('provider permission list -n {namespace}') self.cmd('provider unregister -n {namespace}') self.cmd('provider register -n {namespace}') From 64c33aae25f7779c4fe19146619c2d8b4a0da1d0 Mon Sep 17 00:00:00 2001 From: Yu Chen Date: Wed, 16 Jun 2021 10:56:49 +0800 Subject: [PATCH 7/9] Apply suggestions from code review --- src/azure-cli/azure/cli/command_modules/resource/_help.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/resource/_help.py b/src/azure-cli/azure/cli/command_modules/resource/_help.py index 7c675948a18..f05ebeccfe4 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_help.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_help.py @@ -1848,12 +1848,12 @@ helps['provider permission'] = """ type: group -short-summary: Get provider permissions. +short-summary: Manage permissions for a provider. """ helps['provider permission list'] = """ type: command -short-summary: Get permissions from providers. +short-summary: List permissions from a provider. """ helps['provider operation'] = """ From 714c6747a6012dba5d50df6f3cde248ae3d70845 Mon Sep 17 00:00:00 2001 From: 00Kai0 Date: Wed, 16 Jun 2021 14:24:56 +0800 Subject: [PATCH 8/9] fix test and help info --- .../cli/command_modules/resource/_help.py | 4 +- .../latest/recordings/test_register.yaml | 242 ----------------- .../test_register_consent_to_permissions.yaml | 251 ++++++++++++++++++ .../sample_policy_set_exemption_test.json | 2 +- .../resource/tests/latest/test_provider.py | 20 -- .../resource/tests/latest/test_resource.py | 22 ++ 6 files changed, 276 insertions(+), 265 deletions(-) delete mode 100644 src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register.yaml create mode 100644 src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register_consent_to_permissions.yaml delete mode 100644 src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py diff --git a/src/azure-cli/azure/cli/command_modules/resource/_help.py b/src/azure-cli/azure/cli/command_modules/resource/_help.py index 7c675948a18..f05ebeccfe4 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_help.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_help.py @@ -1848,12 +1848,12 @@ helps['provider permission'] = """ type: group -short-summary: Get provider permissions. +short-summary: Manage permissions for a provider. """ helps['provider permission list'] = """ type: command -short-summary: Get permissions from providers. +short-summary: List permissions from a provider. """ helps['provider operation'] = """ diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register.yaml b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register.yaml deleted file mode 100644 index 575b783506f..00000000000 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register.yaml +++ /dev/null @@ -1,242 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - provider unregister - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -n - User-Agent: - - AZURECLI/2.24.0 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights/unregister?api-version=2021-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights","namespace":"Microsoft.PolicyInsights","authorizations":[{"applicationId":"1d78a85d-813d-46f0-b496-dd72f50a3ec0","roleDefinitionId":"63d2b225-4c34-4641-8768-21a1f7c68ce8"},{"applicationId":"8cae6e77-e04e-42ce-b5cb-50d82bce26b1","roleDefinitionId":"4a2d3d6b-a6ea-45e2-9882-c9ba3e726ed7"}],"resourceTypes":[{"resourceType":"policyEvents","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyStates","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"operations","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"None"},{"resourceType":"asyncOperationResults","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview"],"capabilities":"None"},{"resourceType":"remediations","locations":[],"apiVersions":["2019-07-01","2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"eventGridFilters","locations":[],"apiVersions":["2020-10-01"],"capabilities":"SupportsExtension"},{"resourceType":"checkPolicyRestrictions","locations":[],"apiVersions":["2020-07-01-preview","2020-07-01"],"capabilities":"None"},{"resourceType":"policyTrackedResources","locations":[],"apiVersions":["2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyMetadata","locations":[],"apiVersions":["2019-10-01"],"capabilities":"None"}],"registrationState":"Unregistering","registrationPolicy":"RegistrationRequired"}' - headers: - cache-control: - - no-cache - content-length: - - '1824' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 10 Jun 2021 06:15:10 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 200 - message: OK -- request: - body: '{"thirdPartyProviderConsent": {"consentToAuthorization": true}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - provider register - Connection: - - keep-alive - Content-Length: - - '63' - Content-Type: - - application/json - ParameterSetName: - - -n --consent-to-authorization - User-Agent: - - AZURECLI/2.24.0 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights/register?api-version=2021-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights","namespace":"Microsoft.PolicyInsights","authorizations":[{"applicationId":"1d78a85d-813d-46f0-b496-dd72f50a3ec0","roleDefinitionId":"63d2b225-4c34-4641-8768-21a1f7c68ce8"},{"applicationId":"8cae6e77-e04e-42ce-b5cb-50d82bce26b1","roleDefinitionId":"4a2d3d6b-a6ea-45e2-9882-c9ba3e726ed7"}],"resourceTypes":[{"resourceType":"policyEvents","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyStates","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"operations","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"None"},{"resourceType":"asyncOperationResults","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview"],"capabilities":"None"},{"resourceType":"remediations","locations":[],"apiVersions":["2019-07-01","2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"eventGridFilters","locations":[],"apiVersions":["2020-10-01"],"capabilities":"SupportsExtension"},{"resourceType":"checkPolicyRestrictions","locations":[],"apiVersions":["2020-07-01-preview","2020-07-01"],"capabilities":"None"},{"resourceType":"policyTrackedResources","locations":[],"apiVersions":["2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyMetadata","locations":[],"apiVersions":["2019-10-01"],"capabilities":"None"}],"registrationState":"Registering","registrationPolicy":"RegistrationRequired"}' - headers: - cache-control: - - no-cache - content-length: - - '1822' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 10 Jun 2021 06:15:15 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - provider permission list - Connection: - - keep-alive - ParameterSetName: - - -n - User-Agent: - - AZURECLI/2.24.0 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights/providerPermissions?api-version=2021-04-01 - response: - body: - string: '{"value":[{"applicationId":"1d78a85d-813d-46f0-b496-dd72f50a3ec0","roleDefinition":{"idAsGuid":"63d2b225-4c34-4641-8768-21a1f7c68ce8","id":"63d2b2254c344641876821a1f7c68ce8","name":"Policy - Insights Resource Provider Service Role","isServiceRole":true,"permissions":[{"actions":["*/read","Microsoft.Authorization/checkAccess/action","Microsoft.Authorization/checkAccess/read","Microsoft.Resources/deployments/cancel/action"],"notActions":[],"dataActions":[],"notDataActions":[]}],"scopes":["/"]}},{"applicationId":"8cae6e77-e04e-42ce-b5cb-50d82bce26b1","roleDefinition":{"idAsGuid":"4a2d3d6b-a6ea-45e2-9882-c9ba3e726ed7","id":"4a2d3d6ba6ea45e29882c9ba3e726ed7","name":"Policy - Insights Provider Data Plane Service Role","isServiceRole":true,"permissions":[{"actions":["Microsoft.Resources/subscriptions/read","Microsoft.Authorization/checkAccess/action","Microsoft.Authorization/checkAccess/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.Authorization/policyassignments/read","Microsoft.KeyVault/vaults/read","Microsoft.ContainerService/managedClusters/read","Microsoft.CustomerLockbox/requests/read","Microsoft.Kubernetes/connectedClusters/read","Microsoft.Network/virtualNetworks/read"],"notActions":[],"dataActions":[],"notDataActions":[]}],"scopes":["/"]}}]}' - headers: - cache-control: - - no-cache - content-length: - - '1286' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 10 Jun 2021 06:15:18 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - provider unregister - Connection: - - keep-alive - Content-Length: - - '0' - ParameterSetName: - - -n - User-Agent: - - AZURECLI/2.24.0 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights/unregister?api-version=2021-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights","namespace":"Microsoft.PolicyInsights","authorizations":[{"applicationId":"1d78a85d-813d-46f0-b496-dd72f50a3ec0","roleDefinitionId":"63d2b225-4c34-4641-8768-21a1f7c68ce8"},{"applicationId":"8cae6e77-e04e-42ce-b5cb-50d82bce26b1","roleDefinitionId":"4a2d3d6b-a6ea-45e2-9882-c9ba3e726ed7"}],"resourceTypes":[{"resourceType":"policyEvents","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyStates","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"operations","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"None"},{"resourceType":"asyncOperationResults","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview"],"capabilities":"None"},{"resourceType":"remediations","locations":[],"apiVersions":["2019-07-01","2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"eventGridFilters","locations":[],"apiVersions":["2020-10-01"],"capabilities":"SupportsExtension"},{"resourceType":"checkPolicyRestrictions","locations":[],"apiVersions":["2020-07-01-preview","2020-07-01"],"capabilities":"None"},{"resourceType":"policyTrackedResources","locations":[],"apiVersions":["2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyMetadata","locations":[],"apiVersions":["2019-10-01"],"capabilities":"None"}],"registrationState":"Unregistering","registrationPolicy":"RegistrationRequired"}' - headers: - cache-control: - - no-cache - content-length: - - '1824' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 10 Jun 2021 06:15:22 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - CommandName: - - provider register - Connection: - - keep-alive - Content-Length: - - '0' - Content-Type: - - application/json - ParameterSetName: - - -n - User-Agent: - - AZURECLI/2.24.0 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) - method: POST - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights/register?api-version=2021-04-01 - response: - body: - string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.PolicyInsights","namespace":"Microsoft.PolicyInsights","authorizations":[{"applicationId":"1d78a85d-813d-46f0-b496-dd72f50a3ec0","roleDefinitionId":"63d2b225-4c34-4641-8768-21a1f7c68ce8"},{"applicationId":"8cae6e77-e04e-42ce-b5cb-50d82bce26b1","roleDefinitionId":"4a2d3d6b-a6ea-45e2-9882-c9ba3e726ed7"}],"resourceTypes":[{"resourceType":"policyEvents","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyStates","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"SupportsExtension"},{"resourceType":"operations","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview","2018-04-04","2017-12-12-preview","2017-10-17-preview","2017-08-09-preview"],"capabilities":"None"},{"resourceType":"asyncOperationResults","locations":[],"apiVersions":["2019-10-01","2018-07-01-preview"],"capabilities":"None"},{"resourceType":"remediations","locations":[],"apiVersions":["2019-07-01","2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"eventGridFilters","locations":[],"apiVersions":["2020-10-01"],"capabilities":"SupportsExtension"},{"resourceType":"checkPolicyRestrictions","locations":[],"apiVersions":["2020-07-01-preview","2020-07-01"],"capabilities":"None"},{"resourceType":"policyTrackedResources","locations":[],"apiVersions":["2018-07-01-preview"],"capabilities":"SupportsExtension"},{"resourceType":"policyMetadata","locations":[],"apiVersions":["2019-10-01"],"capabilities":"None"}],"registrationState":"Registering","registrationPolicy":"RegistrationRequired"}' - headers: - cache-control: - - no-cache - content-length: - - '1822' - content-type: - - application/json; charset=utf-8 - date: - - Thu, 10 Jun 2021 06:15:28 GMT - expires: - - '-1' - pragma: - - no-cache - strict-transport-security: - - max-age=31536000; includeSubDomains - transfer-encoding: - - chunked - vary: - - Accept-Encoding - x-content-type-options: - - nosniff - x-ms-ratelimit-remaining-subscription-writes: - - '1199' - status: - code: 200 - message: OK -version: 1 diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register_consent_to_permissions.yaml b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register_consent_to_permissions.yaml new file mode 100644 index 00000000000..b5487483db9 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/recordings/test_register_consent_to_permissions.yaml @@ -0,0 +1,251 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - provider show + Connection: + - keep-alive + ParameterSetName: + - -n + User-Agent: + - AZURECLI/2.24.2 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate?api-version=2020-10-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate","namespace":"Microsoft.ClassicInfrastructureMigrate","authorization":{"applicationId":"5e5abe2b-83cd-4786-826a-a05653ebb103","roleDefinitionId":"766c4d9b-ef83-4f73-8352-1450a506a69b"},"resourceTypes":[],"registrationState":"Unregistered","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '391' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 16 Jun 2021 06:24:18 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"thirdPartyProviderConsent": {"consentToAuthorization": true}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - provider register + Connection: + - keep-alive + Content-Length: + - '63' + Content-Type: + - application/json + ParameterSetName: + - -n --consent-to-permissions + User-Agent: + - AZURECLI/2.24.2 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/register?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate","namespace":"Microsoft.ClassicInfrastructureMigrate","authorization":{"applicationId":"5e5abe2b-83cd-4786-826a-a05653ebb103","roleDefinitionId":"766c4d9b-ef83-4f73-8352-1450a506a69b"},"resourceTypes":[{"resourceType":"classicInfrastructureResources","locations":["East + Asia","Southeast Asia","East US","East US 2","West US","North Central US","South + Central US","Central US","North Europe","West Europe","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","West + India","South India","Canada Central","Canada East","West US 2","West Central + US","UK South","UK West","Korea Central","Korea South","France Central","France + South","Australia Central","Australia Central 2","Germany North","Germany + West Central","Norway East","Norway West","South Africa North","South Africa + West","Switzerland North","Switzerland West","UAE Central","UAE North"],"apiVersions":["2015-06-15"],"capabilities":"None"}],"registrationState":"Registering","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '1127' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 16 Jun 2021 06:24:23 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - provider show + Connection: + - keep-alive + ParameterSetName: + - -n + User-Agent: + - AZURECLI/2.24.2 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate?api-version=2020-10-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate","namespace":"Microsoft.ClassicInfrastructureMigrate","authorization":{"applicationId":"5e5abe2b-83cd-4786-826a-a05653ebb103","roleDefinitionId":"766c4d9b-ef83-4f73-8352-1450a506a69b"},"resourceTypes":[{"resourceType":"classicInfrastructureResources","locations":["East + Asia","Southeast Asia","East US","East US 2","West US","North Central US","South + Central US","Central US","North Europe","West Europe","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","West + India","South India","Canada Central","Canada East","West US 2","West Central + US","UK South","UK West","Korea Central","Korea South","France Central","France + South","Australia Central","Australia Central 2","Germany North","Germany + West Central","Norway East","Norway West","South Africa North","South Africa + West","Switzerland North","Switzerland West","UAE Central","UAE North"],"apiVersions":["2015-06-15"],"capabilities":"None"}],"registrationState":"Registering","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '1127' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 16 Jun 2021 06:24:25 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - provider permission list + Connection: + - keep-alive + ParameterSetName: + - -n + User-Agent: + - AZURECLI/2.24.2 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/providerPermissions?api-version=2021-04-01 + response: + body: + string: '{"value":[{"applicationId":"5e5abe2b-83cd-4786-826a-a05653ebb103","roleDefinition":{"idAsGuid":"766c4d9b-ef83-4f73-8352-1450a506a69b","id":"766c4d9bef834f7383521450a506a69b","name":"Classic + Resource Migration Service Role","isServiceRole":true,"permissions":[{"actions":["Microsoft.Authorization/locks/*","Microsoft.Compute/availabilitySets/*","Microsoft.Compute/locations/*","Microsoft.Compute/register/*","Microsoft.Compute/virtualMachines/*","Microsoft.Compute/virtualMachines/extensions/*","Microsoft.Compute/virtualMachineScaleSets/*","Microsoft.Compute/cloudServices/read","Microsoft.Compute/cloudServices/write","Microsoft.Compute/cloudServices/delete","Microsoft.Features/providers/features/register/action","Microsoft.KeyVault/register/*","Microsoft.KeyVault/vaults/*","Microsoft.Network/applicationGateways/*","Microsoft.Network/connections/*","Microsoft.Network/loadBalancers/*","Microsoft.Network/localNetworkGateways/*","Microsoft.Network/locations/*","Microsoft.Network/networkInterfaces/*","Microsoft.Network/networkSecurityGroups/*","Microsoft.Network/publicIPAddresses/*","Microsoft.Network/register/*","Microsoft.Network/routeTables/*","Microsoft.Network/virtualNetworkGateways/*","Microsoft.Network/virtualNetworks/*","Microsoft.Resources/deployments/*","Microsoft.Resources/subscriptions/resourceGroups/*","Microsoft.Storage/register/*","Microsoft.Storage/storageAccounts/*"],"notActions":["Microsoft.Storage/storageAccounts/blobServices/containers/blobs/*","Microsoft.Storage/storageAccounts/queueServices/queues/messages/*"],"dataActions":[],"notDataActions":[]}],"scopes":["/"]}}]}' + headers: + cache-control: + - no-cache + content-length: + - '1604' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 16 Jun 2021 06:24:27 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - provider unregister + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n + User-Agent: + - AZURECLI/2.24.2 azsdk-python-azure-mgmt-resource/18.0.0 Python/3.8.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate/unregister?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ClassicInfrastructureMigrate","namespace":"Microsoft.ClassicInfrastructureMigrate","authorization":{"applicationId":"5e5abe2b-83cd-4786-826a-a05653ebb103","roleDefinitionId":"766c4d9b-ef83-4f73-8352-1450a506a69b"},"resourceTypes":[{"resourceType":"classicInfrastructureResources","locations":["East + Asia","Southeast Asia","East US","East US 2","West US","North Central US","South + Central US","Central US","North Europe","West Europe","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","West + India","South India","Canada Central","Canada East","West US 2","West Central + US","UK South","UK West","Korea Central","Korea South","France Central","France + South","Australia Central","Australia Central 2","Germany North","Germany + West Central","Norway East","Norway West","South Africa North","South Africa + West","Switzerland North","Switzerland West","UAE Central","UAE North"],"apiVersions":["2015-06-15"],"capabilities":"None"}],"registrationState":"Unregistering","registrationPolicy":"RegistrationRequired"}' + headers: + cache-control: + - no-cache + content-length: + - '1129' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 16 Jun 2021 06:24:31 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 200 + message: OK +version: 1 diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/sample_policy_set_exemption_test.json b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/sample_policy_set_exemption_test.json index adc41402ffa..09c466f53cd 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/sample_policy_set_exemption_test.json +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/sample_policy_set_exemption_test.json @@ -1 +1 @@ -[{"policyDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/policyDefinitions/clitest000002", "parameters": {"allowedLocations": {"value": ["australiaeast", "eastus", "japaneast", "westus"]}}}, {"policyDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/policyDefinitions/clitest-dp000004"}] \ No newline at end of file +[{"policyDefinitionId": "/providers/Microsoft.Management/managementGroups/cli-test-mgmt-group000002/providers/Microsoft.Authorization/policyDefinitions/clitest000003", "parameters": {"allowedLocations": {"value": ["australiaeast", "eastus", "japaneast", "westus"]}}}, {"policyDefinitionId": "/providers/Microsoft.Management/managementGroups/cli-test-mgmt-group000002/providers/Microsoft.Authorization/policyDefinitions/clitest-dp000005"}] \ No newline at end of file diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py deleted file mode 100644 index 95e3045eb60..00000000000 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_provider.py +++ /dev/null @@ -1,20 +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.cli.testsdk import ScenarioTest - -class ProviderTests(ScenarioTest): - - def test_register(self): - - self.kwargs = { - 'namespace': "Microsoft.PolicyInsights" - } - - self.cmd('provider unregister -n {namespace}') - self.cmd('provider register -n {namespace} --consent-to-permissions') - self.cmd('provider permission list -n {namespace}') - self.cmd('provider unregister -n {namespace}') - self.cmd('provider register -n {namespace}') diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource.py b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource.py index 3e94bc60fe1..592a6b6217b 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource.py +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource.py @@ -673,6 +673,28 @@ def test_provider_registration_mg(self): result = self.cmd('provider register -n {prov} --m testmg') self.assertTrue(result, None) + def test_register_consent_to_permissions(self): + + self.kwargs = { + 'prov': "Microsoft.ClassicInfrastructureMigrate" + } + + result = self.cmd('provider show -n {prov}').get_output_in_json() + if result['registrationState'] == 'Unregistered': + self.cmd('provider register -n {prov} --consent-to-permissions') + result = self.cmd('provider show -n {prov}').get_output_in_json() + self.assertTrue(result['registrationState'], 'Registered') + result = self.cmd('provider permission list -n {prov}').get_output_in_json() + self.assertGreaterEqual(len(result['value']), 1) + self.cmd('provider unregister -n {prov}') + else: + self.cmd('provider unregister -n {prov}') + self.cmd('provider register -n {prov} --consent-to-permissions') + result = self.cmd('provider show -n {prov}').get_output_in_json() + self.assertTrue(result['registrationState'], 'Registered') + result = self.cmd('provider permission list -n {prov}').get_output_in_json() + self.assertGreaterEqual(len(result['value']), 1) + class ProviderOperationTest(ScenarioTest): From f00008782157588140a9854426a7a95b36f1104a Mon Sep 17 00:00:00 2001 From: 00Kai0 Date: Wed, 16 Jun 2021 16:11:12 +0800 Subject: [PATCH 9/9] fix --- .../azure/cli/command_modules/resource/_client_factory.py | 4 ++-- src/azure-cli/azure/cli/command_modules/resource/custom.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py b/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py index d395b52957e..1b6af2e2cde 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_client_factory.py @@ -72,8 +72,8 @@ def cf_resources(cli_ctx, _): return _resource_client_factory(cli_ctx).resources -def cf_providers(cli_ctx, **_): - return _resource_client_factory(cli_ctx, api_version="2021-04-01").providers +def cf_providers(cli_ctx, _, api_version=None): + return _resource_client_factory(cli_ctx, api_version=api_version).providers def cf_tags(cli_ctx, _): diff --git a/src/azure-cli/azure/cli/command_modules/resource/custom.py b/src/azure-cli/azure/cli/command_modules/resource/custom.py index cf852c07509..524603011a5 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/custom.py +++ b/src/azure-cli/azure/cli/command_modules/resource/custom.py @@ -1023,7 +1023,7 @@ def _get_auth_provider_latest_api_version(cli_ctx): def _update_provider(cli_ctx, namespace, registering, wait, properties=None, mg_id=None, accept_terms=None): import time target_state = 'Registered' if registering else 'Unregistered' - client = cf_providers(cli_ctx) + client = cf_providers(cli_ctx, None, api_version='2021-04-01') is_rpaas = namespace.lower() in RPAAS_APIS if mg_id is None and registering: if is_rpaas: @@ -2040,7 +2040,7 @@ def list_resources(cmd, resource_group_name=None, def register_provider(cmd, resource_provider_namespace, consent_to_permissions=False, mg=None, wait=False, accept_terms=None): properties = None if consent_to_permissions: - from azure.mgmt.resource.resources.models import ProviderRegistrationRequest, ProviderConsentDefinition + from azure.mgmt.resource.resources.v2021_04_01.models import ProviderRegistrationRequest, ProviderConsentDefinition properties = ProviderRegistrationRequest(third_party_provider_consent=ProviderConsentDefinition(consent_to_authorization=consent_to_permissions)) _update_provider(cmd.cli_ctx, resource_provider_namespace, registering=True, wait=wait, properties=properties, mg_id=mg, accept_terms=accept_terms) @@ -2055,7 +2055,7 @@ def list_provider_operations(cmd): def list_provider_permissions(cmd, resource_provider_namespace): - client = cf_providers(cmd.cli_ctx) + client = cf_providers(cmd.cli_ctx, None, api_version='2021-04-01') return client.provider_permissions(resource_provider_namespace)