def provision_check()

in api-server/tesazure/backends/batch/__init__.py [0:0]


    def provision_check(self, provision_request):
        """Checks a ProvisionRequest object for validity with the Batch backend"""

        try:
            credentials = azcredentials.ServicePrincipalCredentials(
                client_id=provision_request.service_principal.client_id,
                secret=provision_request.service_principal.secret,
                tenant=provision_request.service_principal.tenant
            )

            resource_client = azresource_mgmt.ResourceManagementClient(credentials, provision_request.subscription_id)
            storage_client = azstorage_mgmt.StorageManagementClient(credentials, provision_request.subscription_id)
            batch_client = azbatch_mgmt.BatchManagementClient(credentials, provision_request.subscription_id)

            rg_check_result = resource_client.resource_groups.check_existence(provision_request.resource_group)
            if rg_check_result is True:
                with resource_client.resource_groups.get(provision_request.resource_group) as resource_group:
                    if not resource_group.location == provision_request.location:
                        raise AzCloudError('Resource group exists but in different provision_request.location than provided.')

            storage_check_result = storage_client.storage_accounts.check_name_availability(name=provision_request.storage_account_name)
            if not storage_check_result.name_available:
                if not storage_check_result.reason == 'AlreadyExists':
                    raise tesmodels.CloudError(storage_check_result.message)
                else:
                    storage_client.storage_accounts.get_properties(  # <-- will throw exception if in different RG
                        resource_group_name=provision_request.resource_group,
                        account_name=provision_request.storage_account_name)

            batch_check_result = batch_client.location.check_name_availability(
                location_name=provision_request.location,
                name=provision_request.batch_account_name)
            if not batch_check_result.name_available:
                if not batch_check_result.reason.value == 'AlreadyExists':
                    raise AzCloudError(batch_check_result.message)
                else:
                    batch_client.batch_account.get(  # <-- will throw exception if in different RG
                        resource_group_name=provision_request.resource_group,
                        account_name=provision_request.batch_account_name)
        except AzCloudError as err:
            # Return non-azure specific exception instead
            raise tesmodels.CloudError(err)

        return True