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