コード例 #1
0
    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)
コード例 #2
0
 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)
コード例 #3
0
    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)
コード例 #4
0
 def get_valid_payload(self):
     return {
         'name':
         'Test-allocation',
         'service_settings':
         SlurmServiceSettingsFactory.get_url(self.fixture.settings),
         'project':
         ProjectFactory.get_url(self.fixture.project),
     }
コード例 #5
0
    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())
コード例 #6
0
 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',
     }
コード例 #7
0
 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
コード例 #8
0
    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)
コード例 #9
0
 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)
コード例 #10
0
 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),
     }
コード例 #11
0
    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'
        )
コード例 #12
0
 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',
     }
コード例 #13
0
    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),
        )
コード例 #14
0
    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)
コード例 #15
0
 def project(self):
     return ProjectFactory()
コード例 #16
0
 def setUp(self):
     self.project = ProjectFactory()
     self.quota = self.project.quotas.get(name='nc_resource_count')
コード例 #17
0
 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)