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..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 @@ -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, **_): @@ -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).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/_help.py b/src/azure-cli/azure/cli/command_modules/resource/_help.py index ac224cf8831..f05ebeccfe4 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: Manage permissions for a provider. +""" + +helps['provider permission list'] = """ +type: command +short-summary: List permissions from a provider. +""" + 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 4632ef07040..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,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_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/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..524603011a5 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, None, api_version='2021-04-01') 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_permissions=False, mg=None, wait=False, accept_terms=None): + properties = None + if consent_to_permissions: + 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) 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, None, api_version='2021-04-01') + 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/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 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 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_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/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):