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_D1_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='16.04-LTS'), node_agent_sku_id='batch.node.ubuntu 16.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, }
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) assert isinstance(response, 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) assert isinstance(response, models.Pool) # Test list pools pools = self.mgmt_batch_client.pool.list_by_batch_account( resource_group.name, batch_account.name) assert len(list(pools)) == 2 # Test Update pool parameters = models.Pool(scale_settings=models.ScaleSettings( auto_scale=models.AutoScaleSettings( # Change this to a value once accounts get default quotas formula='$TargetDedicatedNodes=0'))) if self.is_live: time.sleep(15) response = self.mgmt_batch_client.pool.update(resource_group.name, batch_account.name, iaas_pool, parameters) assert isinstance(response, models.Pool) # Test Get pool pool = self.mgmt_batch_client.pool.get(resource_group.name, batch_account.name, iaas_pool) assert isinstance(pool, models.Pool) assert pool.vm_size == 'STANDARD_A1' assert pool.display_name is not None # This assert should be reintroduced when targetDedidicated nodes can be 1+ # assert pool.allocation_state == models.AllocationState.resizing assert pool.deployment_configuration.virtual_machine_configuration.node_agent_sku_id == 'batch.node.windows amd64' # Test stop resizing # with pytest.raises(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) # assert isinstance(response, models.Pool) # Test delete pool response = self.mgmt_batch_client.pool.begin_delete( resource_group.name, batch_account.name, iaas_pool) assert response.result() is None
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('ENV_VAR', 'env_value') ], user_identity=models.UserIdentity( auto_user=models.AutoUserSpecification( elevation_level=models.ElevationLevel.admin))), user_accounts=[models.UserAccount('UserName', 'p@55wOrd')], 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(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())