def test_create_is_enabled_for_owner(self, mock_client): self.client.force_authenticate(self.fixture.staff) catalog = factories.CatalogFactory(settings=self.fixture.settings) project = factories.ProjectFactory( settings=self.fixture.settings, cluster=self.fixture.cluster ) template = factories.TemplateFactory( settings=self.fixture.settings, catalog=catalog ) namespace = factories.NamespaceFactory( settings=self.fixture.settings, project=project ) mock_client.create_application.return_value = {'data': {}} response = self.client.post( '/api/rancher-apps/', { 'service_settings': factories.RancherServiceSettingsFactory.get_url( self.fixture.settings ), 'project': ProjectFactory.get_url(self.fixture.project), 'name': 'Test Catalog', 'template': factories.TemplateFactory.get_url(template), 'rancher_project': factories.ProjectFactory.get_url(project), 'namespace': factories.NamespaceFactory.get_url(namespace), 'version': '1.0', 'answers': {}, }, ) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)
def test_rancher_cluster_is_filtered_out_for_unrelated_user(self): project = ProjectFactory(customer=self.fixture.customer) admin = UserFactory() project.add_user(admin, ProjectRole.ADMINISTRATOR) tenant_spl = openstack_tenant_factories.OpenStackTenantServiceProjectLinkFactory( service=self.fixture.tenant_spl.service, project=project ) vm = openstack_tenant_factories.InstanceFactory( service_project_link=tenant_spl, state=StateMixin.States.OK, ) self.client.force_authenticate(admin) response = self.client.get( openstack_tenant_factories.InstanceFactory.get_url(vm) ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['rancher_cluster'], None)
def test_accounting_is_running_filter_behaves_properly(self): staff = UserFactory(is_staff=True) self.client.force_authenticate(user=staff) response = self.client.get(ProjectFactory.get_list_url()) self.assertEqual(len(response.data), 2) response = self.client.get(ProjectFactory.get_list_url(), { "accounting_is_running": "true", }) self.assertEqual(len(response.data), 1) response = self.client.get(ProjectFactory.get_list_url(), { "accounting_is_running": "false", }) self.assertEqual(len(response.data), 1)
def get_valid_payload(self): return { 'name': 'Test-allocation', 'service_settings': SlurmServiceSettingsFactory.get_url(self.fixture.settings), 'project': ProjectFactory.get_url(self.fixture.project), }
def test_resource_is_created_when_order_item_is_processed(self): service_settings = rancher_factories.RancherServiceSettingsFactory() offering = marketplace_factories.OfferingFactory( type=PLUGIN_NAME, scope=service_settings) openstack_tenant_factories.FlavorFactory( settings=self.fixture.openstack_tenant_service_settings, ram=1024 * 8, cores=8, ) image = openstack_tenant_factories.ImageFactory( settings=self.fixture.openstack_tenant_service_settings) openstack_tenant_factories.SecurityGroupFactory( name='default', settings=self.fixture.openstack_tenant_service_settings) service_settings.options['base_image_name'] = image.name service_settings.save() order = marketplace_factories.OrderFactory( project=self.fixture.project, created_by=self.fixture.owner) ssh_public_key = SshPublicKeyFactory(user=self.fixture.staff) order_item = marketplace_factories.OrderItemFactory( order=order, offering=offering, attributes={ 'name': 'name', 'tenant_settings': openstack_tenant_factories. OpenStackTenantServiceSettingsFactory.get_url( self.fixture.openstack_tenant_service_settings), 'project': ProjectFactory.get_url(self.fixture.project), 'ssh_public_key': SshPublicKeyFactory.get_url(ssh_public_key), 'nodes': [{ 'subnet': openstack_tenant_factories.SubNetFactory.get_url( self.fixture.subnet), 'system_volume_size': 1024, 'memory': 1, 'cpu': 1, 'roles': ['controlplane', 'etcd', 'worker'], }], }, ) serialized_order = core_utils.serialize_instance(order_item.order) serialized_user = core_utils.serialize_instance(self.fixture.staff) marketplace_tasks.process_order(serialized_order, serialized_user) self.assertTrue( marketplace_models.Resource.objects.filter(name='name').exists()) self.assertTrue( rancher_models.Cluster.objects.filter(name='name').exists())
def get_valid_payload(self): return { 'service_settings': openstack_factories.OpenStackServiceSettingsFactory.get_url( self.fixture.openstack_service_settings), 'project': ProjectFactory.get_url(self.fixture.project), 'name': 'test_tenant', }
def get_valid_data(self, **extra): default = { 'service_settings': ServiceSettingsFactory.get_url(self.settings), 'project': ProjectFactory.get_url(self.project), 'region': factories.RegionFactory.get_url(self.region), 'image': factories.ImageFactory.get_url(self.image), 'size': factories.SizeFactory.get_url(self.size), 'name': 'valid-name', } default.update(extra) return default
def create_volume(self, **extra): payload = { 'name': 'Test volume', 'service_settings': ServiceSettingsFactory.get_url(self.settings), 'project': ProjectFactory.get_url(self.fixture.project), 'size': 10240, } payload.update(extra) url = factories.VolumeFactory.get_list_url() return self.client.post(url, payload)
def _create_request_( self, name, disk=1024, memory=1, cpu=2, add_payload=None, install_longhorn=False ): add_payload = add_payload or {} payload = { 'name': name, 'service_settings': ServiceSettingsFactory.get_url(self.fixture.settings), 'project': ProjectFactory.get_url(self.fixture.project), 'tenant_settings': openstack_tenant_factories.OpenStackTenantServiceSettingsFactory.get_url( self.fixture.tenant_settings ), 'nodes': [ { 'subnet': openstack_tenant_factories.SubNetFactory.get_url( self.subnet ), 'system_volume_size': disk, 'memory': memory, 'cpu': cpu, 'roles': ['worker'], }, { 'subnet': openstack_tenant_factories.SubNetFactory.get_url( self.subnet ), 'system_volume_size': disk, 'memory': memory, 'cpu': cpu, 'roles': ['controlplane', 'worker'], }, { 'subnet': openstack_tenant_factories.SubNetFactory.get_url( self.subnet ), 'system_volume_size': disk, 'memory': memory, 'cpu': cpu, 'roles': ['controlplane', 'etcd'], }, { 'subnet': openstack_tenant_factories.SubNetFactory.get_url( self.subnet ), 'system_volume_size': disk, 'memory': memory, 'cpu': cpu, 'roles': ['worker'], }, ], 'install_longhorn': install_longhorn, } payload.update(add_payload) return self.client.post(self.url, payload)
def get_valid_payload(self): return { 'name': 'Test project', 'key': 'TST', 'template': self.fixture.jira_project_template_url, 'service_settings': ServiceSettingsFactory.get_url(self.fixture.service_settings), 'project': ProjectFactory.get_url(self.fixture.project), }
def setUp(self): self.tenant = openstack_factories.TenantFactory() self.fixture = fixtures.ProjectFixture() self.new_project = ProjectFactory() self.project = self.fixture.project self.resource = factories.ResourceFactory(project=self.project) self.resource.scope = self.tenant self.resource.save() self.url = factories.ResourceFactory.get_url( self.resource, action='move_resource' )
def _get_valid_payload(self): return { 'size': factories.SizeFactory.get_url(self.fixture.size), 'image': factories.ImageFactory.get_url(self.fixture.image), 'region': factories.RegionFactory.get_url(self.fixture.region), 'service_settings': ServiceSettingsFactory.get_url(self.fixture.service_settings), 'project': ProjectFactory.get_url(self.fixture.project), 'name': 'aws-instance-name', }
def test_create_instance_with_data_volumes_with_different_names(self): flavor = factories.FlavorFactory(settings=self.settings) flavor_url = factories.FlavorFactory.get_url(flavor) subnet_url = factories.SubNetFactory.get_url(self.fixture.subnet) url = factories.InstanceFactory.get_list_url() payload = { 'name': 'test-instance', 'image': self.image_url, 'service_settings': ServiceSettingsFactory.get_url(self.settings), 'project': ProjectFactory.get_url(self.fixture.project), 'flavor': flavor_url, 'system_volume_size': 20480, 'internal_ips_set': [{ 'subnet': subnet_url }], 'data_volumes': [ { 'size': 1024, 'type': factories.VolumeTypeFactory.get_url(), }, { 'size': 1024 * 3, 'type': factories.VolumeTypeFactory.get_url(), }, ], } response = self.client.post(url, payload) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) data_volumes_names = [ v['name'] for v in response.data['volumes'] if not v['bootable'] ] self.assertEqual( set(['test-instance-data-3', 'test-instance-data-2']), set(data_volumes_names), )
def test_volume_image_name_populated_on_instance_creation(self): flavor = factories.FlavorFactory(settings=self.settings) flavor_url = factories.FlavorFactory.get_url(flavor) subnet_url = factories.SubNetFactory.get_url(self.fixture.subnet) url = factories.InstanceFactory.get_list_url() payload = { 'name': 'test-instance', 'image': self.image_url, 'service_settings': ServiceSettingsFactory.get_url(self.settings), 'project': ProjectFactory.get_url(self.fixture.project), 'flavor': flavor_url, 'system_volume_size': 20480, 'internal_ips_set': [{ 'subnet': subnet_url }], } response = self.client.post(url, payload) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) system_volume = response.data['volumes'][0] self.assertEqual(system_volume['image_name'], self.image.name)
def project(self): return ProjectFactory()
def setUp(self): self.project = ProjectFactory() self.quota = self.project.quotas.get(name='nc_resource_count')
def get_response(self, role): self.client.force_authenticate(role) payload = {'project': {'url': ProjectFactory.get_url(self.new_project)}} return self.client.post(self.url, payload)