def setUp(self): asset_model = DataCenterAssetModelFactory() self.cloud_provider = CloudProviderFactory(name='openstack') self.cloud_flavor = CloudFlavorFactory.create_batch(3) self.test_model = ComponentModel(name='delete_test') VirtualComponent(model=self.test_model, base_object=self.cloud_flavor[0]) self.cloud_project = CloudProjectFactory(project_id='project_id1') CloudProjectFactory(project_id='project_id2') CloudProjectFactory(project_id='project_os_id1') host = CloudHostFactory(host_id='host_id1', parent=self.cloud_project, cloudflavor=self.cloud_flavor[1]) IPAddress.objects.create(base_object=host, address='2.2.3.4') IPAddress.objects.create(base_object=host, address='1.2.3.4') DataCenterAsset.objects.create( hostname='hypervisor_os1.dcn.net', model=asset_model, ) self.cmd = Command() self.cmd._get_cloud_provider() self.cmd.openstack_projects = OPENSTACK_DATA self.cmd.openstack_flavors = OPENSTACK_FLAVOR self.cmd._get_ralph_data() self.cmd.ironic_serial_number_param = 'serial_number' self.cmd.ralph_serial_number_param = 'sn'
def test_404_sync_disabled(self): cloud_provider = CloudProviderFactory(cloud_sync_enabled=False) url = reverse('cloud-sync-router', args=(cloud_provider.id, )) resp = self.client.post(url, {}, format='json') self.assertEqual(404, resp.status_code)
def setUp(self): asset_model = DataCenterAssetModelFactory() self.cloud_provider = CloudProviderFactory(name='openstack') self.cloud_flavor = CloudFlavorFactory.create_batch(3) self.test_model = ComponentModel(name='delete_test') VirtualComponent(model=self.test_model, base_object=self.cloud_flavor[0]) self.cloud_project_1 = CloudProjectFactory(project_id='project_id1') self.cloud_project_2 = CloudProjectFactory(project_id='project_id2') self.cloud_project_3 = CloudProjectFactory(project_id='project_os_id1') self.host = CloudHostFactory(host_id='host_id1', parent=self.cloud_project_1, cloudflavor=self.cloud_flavor[1]) IPAddress.objects.create(base_object=self.host, address='2.2.3.4') IPAddress.objects.create(base_object=self.host, address='1.2.3.4') DataCenterAsset.objects.create( hostname='hypervisor_os1.dcn.net', model=asset_model, ) self.ironic_serial_number_param = 'serial_number' self.ralph_serial_number_param = 'sn' self.ralph_client = RalphClient('openstack', self.ironic_serial_number_param, self.ralph_serial_number_param) self.openstack_client = RalphOpenStackInfrastructureClient( self.cloud_provider.name)
def test_404_processor_not_set(self): cloud_provider = CloudProviderFactory(cloud_sync_enabled=True, cloud_sync_driver=None) url = reverse('cloud-sync-router', args=(cloud_provider.id, )) resp = self.client.post(url, {}, format='json') self.assertEqual(404, resp.status_code)
def test_501_processor_not_available(self): cloud_provider = CloudProviderFactory( cloud_sync_enabled=True, cloud_sync_driver='CloudSyncProcessorFactory') url = reverse('cloud-sync-router', args=(cloud_provider.id, )) resp = self.client.post(url, {}, format='json') self.assertEqual(501, resp.status_code) self.assertEqual(b'Specified processor is not available', resp.content)
def test_empty_cloud_provider_can_be_deleted(self): # given cloud_provider = CloudProviderFactory(name="test-cloud-provider") # when url = reverse('cloudprovider-detail', args=(cloud_provider.pk, )) resp = self.client.delete(url) # then self.assertEqual(resp.status_code, status.HTTP_204_NO_CONTENT) self.assertRaises(CloudProvider.DoesNotExist, cloud_provider.refresh_from_db)
def setUp(self): super().setUp() self.envs = EnvironmentFactory.create_batch(2) self.services = ServiceFactory.create_batch(2) self.service_env = [] for i in range(0, 2): self.service_env.append(ServiceEnvironment.objects.create( service=self.services[i], environment=self.envs[i] )) self.service_env[0].service.business_owners = [self.user1] self.service_env[0].service.technical_owners = [self.user2] self.service_env[0].save() self.cloud_provider = CloudProviderFactory(name='openstack') self.cloud_flavor = CloudFlavorFactory() self.cloud_project = CloudProjectFactory( service_env=self.service_env[0] ) self.cloud_host = CloudHostFactory( parent=self.cloud_project, cloudflavor=self.cloud_flavor ) self.cloud_host2 = CloudHostFactory() self.test_cpu = ComponentModel.objects.create( name='vcpu1', cores=5, family='vCPU', type=ComponentType.processor, ) self.test_mem = ComponentModel.objects.create( name='2000 MiB vMEM', size='2000', type=ComponentType.memory, ) self.test_disk = ComponentModel.objects.create( name='4 GiB vDISK', size='4096', type=ComponentType.disk, ) VirtualComponent.objects.create( base_object=self.cloud_flavor, model=self.test_cpu, ) VirtualComponent.objects.create( base_object=self.cloud_flavor, model=self.test_mem, ) VirtualComponent.objects.create( base_object=self.cloud_flavor, model=self.test_disk, )
def test_event_routed_correctly(self): processor_name = 'proucessah' cloud_provider = CloudProviderFactory(cloud_sync_enabled=True, cloud_sync_driver=processor_name) cloudsync.CLOUD_SYNC_DRIVERS[processor_name] = Mock() test_data = {'test': True} url = reverse('cloud-sync-router', args=(cloud_provider.id, )) self.client.post(url, test_data, format='json') cloudsync.CLOUD_SYNC_DRIVERS[processor_name].assert_called_once_with( cloud_provider, test_data)
def test_cleanup_doesnt_remove_cloud_projects_with_different_provider(self): CloudProjectFactory( project_id='im_not_here', cloudprovider=CloudProviderFactory() ) self.cmd._get_ralph_data() self.cmd._cleanup() try: CloudProject.objects.get(project_id='im_not_here') except ObjectDoesNotExist: self.fail('Project "im_not_here" was deleted.')
def test_400_bad_json(self): processor_name = 'proucessah' cloud_provider = CloudProviderFactory(cloud_sync_enabled=True, cloud_sync_driver=processor_name) cloudsync.CLOUD_SYNC_DRIVERS[processor_name] = Mock() test_data = None url = reverse('cloud-sync-router', args=(cloud_provider.id, )) resp = self.client.post(url, test_data) self.assertEqual(400, resp.status_code) self.assertEqual( 0, cloudsync.CLOUD_SYNC_DRIVERS[processor_name].call_count)
def test_non_empty_cloud_provider_can_be_deleted_with_force( self, child_type): # given cloud_provider = CloudProviderFactory(name="test-cloud-provider") child_type(cloudprovider=cloud_provider) # when url = reverse('cloudprovider-detail', args=(cloud_provider.pk, )) data = {'force': True} resp = self.client.delete(url, data=data) # then self.assertEqual(resp.status_code, status.HTTP_204_NO_CONTENT) self.assertRaises(CloudProvider.DoesNotExist, cloud_provider.refresh_from_db)
def test_delete_cloud_provider_returns_409_if_has_child_objects( self, child_type): # given cloud_provider = CloudProviderFactory(name="test-cloud-provider") child_type(cloudprovider=cloud_provider) # when url = reverse('cloudprovider-detail', args=(cloud_provider.pk, )) resp = self.client.delete(url) # then self.assertEqual(resp.status_code, status.HTTP_409_CONFLICT) self.assertIn('Cloud provider is in use and hence is not deletable.', resp.data['detail']) self.assertTrue( CloudProvider.objects.filter(pk=cloud_provider.pk).exists())
def setUp(self): self.envs = EnvironmentFactory.create_batch(2) self.services = ServiceFactory.create_batch(2) self.service_env = [] for i in range(0, 2): self.service_env.append( ServiceEnvironment.objects.create(service=self.services[i], environment=self.envs[i])) self.cloud_provider = CloudProviderFactory(name='openstack') self.cloud_flavor = CloudFlavorFactory() self.cloud_project = CloudProjectFactory() self.cloud_host = CloudHostFactory(parent=self.cloud_project) self.test_cpu = ComponentModel.objects.create( name='vcpu1', cores=4, family='vCPU', type=ComponentType.processor, ) self.test_mem = ComponentModel.objects.create( name='1024 MiB vMEM', size='1024', type=ComponentType.memory, ) self.test_disk = ComponentModel.objects.create( name='4 GiB vDISK', size='4096', type=ComponentType.disk, ) VirtualComponent.objects.create( base_object=self.cloud_flavor, model=self.test_cpu, ) VirtualComponent.objects.create( base_object=self.cloud_flavor, model=self.test_mem, ) VirtualComponent.objects.create( base_object=self.cloud_flavor, model=self.test_disk, )
def test_cleanup_doesnt_remove_cloud_projects_with_different_provider( self): CloudProjectFactory( project_id='im_not_here', cloudprovider=CloudProviderFactory(name='some_random_provider')) ralph_projects = self.ralph_client.get_ralph_servers_data( self.ralph_client.get_ralph_projects()) ralph_flavors = self.ralph_client.get_ralph_flavors() servers_to_delete = self.ralph_client.calculate_servers_to_delete( OPENSTACK_DATA, ralph_projects, ) self.ralph_client.perform_delete(OPENSTACK_DATA, OPENSTACK_FLAVORS, ralph_projects, ralph_flavors, servers_to_delete) try: CloudProject.objects.get(project_id='im_not_here') except ObjectDoesNotExist: self.fail('Project "im_not_here" was deleted.')