Beispiel #1
0
    def test_mgmt_batch_byos_account(self, resource_group, location, keyvault):
        if self.is_live:
            keyvault = keyvault.result()
        batch_account = models.BatchAccountCreateParameters(
                location=location,
                pool_allocation_mode=models.PoolAllocationMode.user_subscription)
        with self.assertRaises(Exception):  # TODO: What exception
            creating = self.mgmt_batch_client.batch_account.create(
                resource_group.name,
                self._get_account_name(),
                batch_account)
            creating.result()

        keyvault_id = "/subscriptions/{}/resourceGroups/{}/providers/Microsoft.KeyVault/vaults/{}".format(
            self.settings.SUBSCRIPTION_ID, resource_group.name, keyvault.name)
        keyvault_url = "https://{}.vault.azure.net/".format(keyvault.name)
        batch_account = models.BatchAccountCreateParameters(
                location=location,
                pool_allocation_mode=models.PoolAllocationMode.user_subscription,
                key_vault_reference={'id': keyvault_id, 'url': keyvault_url})
        creating = self.mgmt_batch_client.batch_account.create(
                resource_group.name,
                self._get_account_name(),
                batch_account)
        creating.result()
 def create_resource(self, name, **kwargs):
     if self.is_live:
         self.client = self.create_mgmt_client(
             azure.mgmt.batch.BatchManagementClient)
         group = self._get_resource_group(**kwargs)
         batch_account = models.BatchAccountCreateParameters(
             location=self.location, )
         storage = self._get_storage_account(**kwargs)
         if storage:
             storage_resource = '/subscriptions/{}/resourceGroups/{}/providers/Microsoft.Storage/storageAccounts/{}'.format(
                 self.test_class_instance.settings.SUBSCRIPTION_ID,
                 group.name, storage.name)
             batch_account.auto_storage = models.AutoStorageBaseProperties(
                 storage_account_id=storage_resource)
         account_setup = self.client.batch_account.create(
             group.name, name, batch_account)
         self.resource = account_setup.result()
         keys = self.client.batch_account.get_keys(group.name, name)
         credentials = SharedKeyCredentials(keys.account_name, keys.primary)
         if storage:
             self._add_app_package(group.name, name)
         self.test_class_instance.scrubber.register_name_pair(
             name, self.resource_moniker)
     else:
         self.resource = FakeAccount(
             name=name,
             account_endpoint="https://{}.{}.batch.azure.com".format(
                 name, self.location))
         credentials = SharedKeyCredentials(name,
                                            'ZmFrZV9hY29jdW50X2tleQ==')
     return {
         self.parameter_name: self.resource,
         self.creds_parameter: credentials
     }
Beispiel #3
0
 def test_mgmt_batch_byos_account(self, resource_group, location):
     # if self.is_live:
     #     keyvault = keyvault.result()
     batch_account = models.BatchAccountCreateParameters(
         location=location,
         pool_allocation_mode=models.PoolAllocationMode.user_subscription)
     with pytest.raises(Exception):  # TODO: What exception
         creating = self.mgmt_batch_client.batch_account.begin_create(
             resource_group.name, self._get_account_name(), batch_account)
         creating.result()
Beispiel #4
0
    def test_mgmt_batch_account(self, resource_group, location):
        batch_account = models.BatchAccountCreateParameters(
            location=location, )
        account_name = self._get_account_name()
        account_setup = self.mgmt_batch_client.batch_account.begin_create(
            resource_group.name, account_name, batch_account)
        account_setup.result()

        # Test Get Account
        account = self.mgmt_batch_client.batch_account.get(
            resource_group.name, account_name)
        self.assertEqual(account.dedicated_core_quota,
                         EXPECTED_DEDICATED_CORE_QUOTA)
        self.assertEqual(account.low_priority_core_quota,
                         EXPECTED_LOW_PRIO_CORE_QUOTA)
        self.assertEqual(account.pool_quota, EXPECTED_POOL_QUOTA)
        self.assertEqual(account.pool_allocation_mode, 'BatchService')

        # Test List Accounts by Resource Group
        accounts = self.mgmt_batch_client.batch_account.list_by_resource_group(
            resource_group.name)
        self.assertEqual(len(list(accounts)), 1)

        # Test List Account Keys
        keys = self.mgmt_batch_client.batch_account.get_keys(
            resource_group.name, account_name)
        self.assertIsInstance(keys, models.BatchAccountKeys)
        self.assertEqual(keys.account_name, account_name)
        secondary = keys.secondary

        # Test Regenerate Account Key
        keys = self.mgmt_batch_client.batch_account.regenerate_key(
            resource_group.name, account_name, {"key_name": 'Secondary'})
        self.assertIsInstance(keys, models.BatchAccountKeys)
        self.assertFalse(keys.secondary == secondary)

        # Test Update Account
        update_tags = {'Name': 'tagName', 'Value': 'tagValue'}
        updated = self.mgmt_batch_client.batch_account.update(
            resource_group.name, account_name,
            models.BatchAccountUpdateParameters(tags=update_tags))
        self.assertIsInstance(updated, models.BatchAccount)
        self.assertEqual(updated.tags['Name'], 'tagName')
        self.assertEqual(updated.tags['Value'], 'tagValue')

        # Test Delete Account
        response = self.mgmt_batch_client.batch_account.begin_delete(
            resource_group.name, account_name)
        self.assertIsNone(response.result())
Beispiel #5
0
    def test_mgmt_batch_account_advanced(self, resource_group, location):
        batch_account_name = self.get_resource_name('batchpendpoint')
        vnet_name = self.get_resource_name('vnet')
        subnet_name = self.get_resource_name('subnet')
        subnet_id = "/subscriptions/{}/resourceGroups/{}/providers/Microsoft.Network/virtualNetworks/{}/subnets/{}".format(
            self.get_settings_value("SUBSCRIPTION_ID"), resource_group.name,
            vnet_name, subnet_name)
        private_endpoint_name = self.get_resource_name('pe')
        private_connection_name = self.get_resource_name('pec')
        private_link_service_id = '/subscriptions/{}/resourceGroups/{}/providers/Microsoft.Batch/batchAccounts/{}'.format(
            self.get_settings_value("SUBSCRIPTION_ID"), resource_group.name,
            batch_account_name)
        batch_account = models.BatchAccountCreateParameters(
            location=location,
            public_network_access='Disabled',
            identity=models.BatchAccountIdentity(type='SystemAssigned'))
        self.mgmt_batch_client.batch_account.begin_create(
            resource_group_name=resource_group.name,
            account_name=batch_account_name,
            parameters=batch_account).result()
        if self.is_live:
            self.mgmt_network.virtual_networks.begin_create_or_update(
                resource_group_name=resource_group.name,
                virtual_network_name=vnet_name,
                parameters=self.mgmt_network.models().VirtualNetwork(
                    address_space=self.mgmt_network.models().AddressSpace(
                        address_prefixes=['10.0.0.0/16']),
                    location=location,
                    subnets=[
                        self.mgmt_network.models().Subnet(
                            address_prefix='10.0.0.0/24',
                            name=subnet_name,
                            private_endpoint_network_policies='Disabled')
                    ])).result()
            self.mgmt_network.private_endpoints.begin_create_or_update(
                resource_group_name=resource_group.name,
                private_endpoint_name=private_endpoint_name,
                parameters=self.mgmt_network.models().PrivateEndpoint(
                    location=location,
                    subnet=self.mgmt_network.models().Subnet(id=subnet_id),
                    manual_private_link_service_connections=[
                        self.mgmt_network.models().
                        PrivateLinkServiceConnection(
                            private_link_service_id=private_link_service_id,
                            group_ids=['batchAccount'],
                            name=private_connection_name)
                    ])).result()
        private_links = self.mgmt_batch_client.private_link_resource.list_by_batch_account(
            resource_group_name=resource_group.name,
            account_name=batch_account_name)
        private_link = private_links.__next__()
        self.mgmt_batch_client.private_link_resource.get(
            resource_group_name=resource_group.name,
            account_name=batch_account_name,
            private_link_resource_name=private_link.name)
        private_endpoints = self.mgmt_batch_client.private_endpoint_connection.list_by_batch_account(
            resource_group_name=resource_group.name,
            account_name=batch_account_name)

        private_endpoint = private_endpoints.__next__()
        self.mgmt_batch_client.private_endpoint_connection.get(
            resource_group_name=resource_group.name,
            account_name=batch_account_name,
            private_endpoint_connection_name=private_endpoint.name)
        self.mgmt_batch_client.private_endpoint_connection.begin_update(
            resource_group_name=resource_group.name,
            account_name=batch_account_name,
            private_endpoint_connection_name=private_endpoint.name,
            parameters={
                "private_link_service_connection_state": {
                    "status": "Approved",
                    "description": "Approved for test"
                }
            }).result()
Beispiel #6
0
    def test_mgmt_batch_applications(self, resource_group, location,
                                     storage_account, storage_account_key):
        # Test Create Account with Auto-Storage
        storage_resource = '/subscriptions/{}/resourceGroups/{}/providers/Microsoft.Storage/storageAccounts/{}'.format(
            self.get_settings_value("SUBSCRIPTION_ID"), resource_group.name,
            storage_account.name)
        batch_account = models.BatchAccountCreateParameters(
            location=location,
            auto_storage=models.AutoStorageBaseProperties(
                storage_account_id=storage_resource))
        # account_name = self._get_account_name()
        account_name = "batch11"
        account_setup = self.mgmt_batch_client.batch_account.begin_create(
            resource_group.name, account_name, batch_account)
        account_setup.result()

        # Test Sync AutoStorage Keys
        response = self.mgmt_batch_client.batch_account.synchronize_auto_storage_keys(
            resource_group.name, account_name)
        assert response is None

        # Test Add Application
        application_id = 'my_application_id'
        application_name = 'my_application_name'
        application_ver = 'v1.0'
        application_properties = models.Application(
            display_name=application_name, allow_updates=True)
        application = self.mgmt_batch_client.application.create(
            resource_group.name,
            account_name,
            application_id,
            parameters=application_properties)
        assert isinstance(application, models.Application)
        assert application_id in application.id
        assert application_name in application.display_name
        assert application.allow_updates

        # Test Mgmt Get Application
        application = self.mgmt_batch_client.application.get(
            resource_group.name, account_name, application_id)
        assert isinstance(application, models.Application)
        assert application_id in application.id
        assert application_name in application.display_name
        assert application.allow_updates

        # Test Mgmt List Applications
        applications = self.mgmt_batch_client.application.list(
            resource_group.name, account_name)
        assert len(list(applications)) > 0

        # Test Add Application Package
        package_ref = self.mgmt_batch_client.application_package.create(
            resource_group.name, account_name, application_id, application_ver)
        assert isinstance(package_ref, models.ApplicationPackage)
        with io.BytesIO(b'Hello World') as f:
            headers = {'x-ms-blob-type': 'BlockBlob'}
            upload = requests.put(package_ref.storage_url,
                                  headers=headers,
                                  data=f.read())
            if not upload:
                raise ValueError('Upload failed: {!r}'.format(upload))

        # Test Activate Application Package
        response = self.mgmt_batch_client.application_package.activate(
            resource_group.name, account_name, application_id, application_ver,
            {"format": 'zip'})
        assert response.state == models.PackageState.active

        # Test Update Application
        params = models.Application(allow_updates=False,
                                    display_name='my_updated_name',
                                    default_version=application_ver)
        response = self.mgmt_batch_client.application.update(
            resource_group.name, account_name, application_id, params)
        assert application_ver in response.default_version
        assert 'my_updated_name' in response.display_name
        assert not response.allow_updates

        # Test Get Application Package
        package_ref = self.mgmt_batch_client.application_package.get(
            resource_group.name, account_name, application_id, application_ver)
        assert isinstance(package_ref, models.ApplicationPackage)
        assert application_id in package_ref.id
        assert package_ref.format == 'zip'
        assert package_ref.state == models.PackageState.active

        # Test Delete Application Package
        response = self.mgmt_batch_client.application_package.delete(
            resource_group.name, account_name, application_id, application_ver)
        assert response is None

        # Test Delete Application
        response = self.mgmt_batch_client.application.delete(
            resource_group.name, account_name, application_id)
        assert response is None

        # Test Delete Account
        response = self.mgmt_batch_client.batch_account.begin_delete(
            resource_group.name, account_name)
        assert response.result() is None