Exemple #1
0
    def create_resource(self, name, **kwargs):
        if self.is_live:
            self.client = self.create_mgmt_client(
                azure.mgmt.batch.BatchManagementClient,
                base_url=AZURE_ARM_ENDPOINT)
            group = self._get_resource_group(**kwargs)
            batch_account = self._get_batch_account(**kwargs)
            user = models.UserAccount(name='task-user', password='******', elevation_level=models.ElevationLevel.admin)
            vm_size = 'standard_d2_v2'

            if self.config == 'paas':
                vm_size = 'small'
                deployment = models.DeploymentConfiguration(
                    cloud_service_configuration=models.CloudServiceConfiguration(
                        os_family='5'))
            elif self.os == 'Windows':
                deployment = models.DeploymentConfiguration(
                    virtual_machine_configuration=models.VirtualMachineConfiguration(
                        image_reference=models.ImageReference(
                            publisher='MicrosoftWindowsServer',
                            offer='WindowsServer',
                            sku='2016-Datacenter-smalldisk'
                        ),
                        node_agent_sku_id='batch.node.windows amd64'))
            else:
                deployment = models.DeploymentConfiguration(
                    virtual_machine_configuration=models.VirtualMachineConfiguration(
                        image_reference=models.ImageReference(
                            publisher='Canonical',
                            offer='UbuntuServer',
                            sku='18.04-LTS'
                        ),
                        node_agent_sku_id='batch.node.ubuntu 18.04'))
            parameters = models.Pool(
                display_name="test_pool",
                vm_size=vm_size,
                user_accounts=[user],
                deployment_configuration=deployment,
                scale_settings=models.ScaleSettings(
                    fixed_scale=models.FixedScaleSettings(
                        target_dedicated_nodes=self.size
                    )
                )
            )

            self.resource = self.client.pool.create(
                group.name, batch_account.name, name, parameters)
            while (self.resource.allocation_state != models.AllocationState.steady 
                    and self.resource.current_dedicated_nodes < self.size):
                time.sleep(10)
                self.resource = self.client.pool.get(group.name, batch_account.name, name)
        else:
            self.resource = FakeResource(name=name, id=name)
        return {
            self.parameter_name: self.resource,
        }
Exemple #2
0
    def test_mgmt_batch_pools(self, resource_group, location, batch_account):
        # Test create PAAS pool
        paas_pool = "test_paas_pool"
        parameters = models.Pool(
            display_name="test_pool",
            vm_size='small',
            deployment_configuration=models.DeploymentConfiguration(
                cloud_service_configuration=models.CloudServiceConfiguration(os_family='5')
            ),
            start_task=models.StartTask(
                command_line="cmd.exe /c \"echo hello world\"",
                resource_files=[models.ResourceFile(http_url='https://blobsource.com', file_path='filename.txt')],
                environment_settings=[models.EnvironmentSetting(name='ENV_VAR', value='env_value')],
                user_identity=models.UserIdentity(
                    auto_user=models.AutoUserSpecification(
                        elevation_level=models.ElevationLevel.admin
                    )
                )
            ),
            user_accounts=[models.UserAccount(name='UserName', password='******')],
            scale_settings=models.ScaleSettings(
                fixed_scale=models.FixedScaleSettings(
                    target_dedicated_nodes=0,
                    target_low_priority_nodes=0
                )
            )
        )
        response = self.mgmt_batch_client.pool.create(
            resource_group.name, batch_account.name, paas_pool, parameters)
        self.assertIsInstance(response.result(), models.Pool)

        # Test create IAAS pool
        iaas_pool = "test_iaas_pool"
        parameters = models.Pool(
            display_name="test_pool",
            vm_size='Standard_A1',
            deployment_configuration=models.DeploymentConfiguration(
                virtual_machine_configuration=models.VirtualMachineConfiguration(
                    image_reference=models.ImageReference(
                        publisher='MicrosoftWindowsServer',
                        offer='WindowsServer',
                        sku='2016-Datacenter-smalldisk'
                    ),
                    node_agent_sku_id='batch.node.windows amd64',
                    windows_configuration=models.WindowsConfiguration(enable_automatic_updates=True)
                )
            ),
            scale_settings=models.ScaleSettings(
                fixed_scale=models.FixedScaleSettings(
                    target_dedicated_nodes=0,
                    target_low_priority_nodes=0
                )
            )
        )

        response = self.mgmt_batch_client.pool.create(
            resource_group.name, batch_account.name, iaas_pool, parameters)
        self.assertIsInstance(response.result(), models.Pool)

        # Test list pools
        pools = self.mgmt_batch_client.pool.list_by_batch_account(resource_group.name, batch_account.name)
        self.assertEqual(len(list(pools)), 2)

        # Test Update pool
        parameters = models.Pool(
            scale_settings=models.ScaleSettings(
                auto_scale=models.AutoScaleSettings(
                    formula='$TargetDedicatedNodes=1'
                )
            )
        )
        response = self.mgmt_batch_client.pool.update(
            resource_group.name, batch_account.name, iaas_pool, parameters)
        self.assertIsInstance(response, models.Pool)

        # Test Get pool
        pool = self.mgmt_batch_client.pool.get(
            resource_group.name, batch_account.name, iaas_pool)
        self.assertIsInstance(pool, models.Pool)
        self.assertEqual(pool.vm_size, 'STANDARD_A1'),
        self.assertIsNone(pool.display_name),
        self.assertEqual(pool.allocation_state, models.AllocationState.resizing)
        self.assertEqual(
            pool.deployment_configuration.virtual_machine_configuration.node_agent_sku_id,
            'batch.node.windows amd64')

        # Test stop resizing
        with self.assertRaises(CloudError):
            self.mgmt_batch_client.pool.stop_resize(resource_group.name, batch_account.name, iaas_pool)
        if self.is_live:
            time.sleep(300)
        # Test disable auto-scale
        response = self.mgmt_batch_client.pool.disable_auto_scale(
            resource_group.name, batch_account.name, iaas_pool)
        self.assertIsInstance(response, models.Pool)

        # Test delete pool
        response = self.mgmt_batch_client.pool.delete(
            resource_group.name, batch_account.name, iaas_pool)
        self.assertIsNone(response.result())