示例#1
0
    def setUp(self):
        super(BaseClusterCreateTest, self).setUp()
        self.fixture = fixtures.RancherFixture()
        self.url = factories.ClusterFactory.get_list_url()
        openstack_service_settings = openstack_factories.OpenStackServiceSettingsFactory(
            customer=self.fixture.customer
        )
        self.tenant = openstack_factories.TenantFactory(
            service_settings=openstack_service_settings
        )

        openstack_tenant_factories.FlavorFactory(settings=self.fixture.tenant_settings)
        image = openstack_tenant_factories.ImageFactory(
            settings=self.fixture.tenant_settings
        )
        self.default_security_group = openstack_tenant_factories.SecurityGroupFactory(
            name='default', settings=self.fixture.tenant_settings
        )
        self.fixture.settings.options['base_image_name'] = image.name
        self.fixture.settings.save()

        self.network = openstack_tenant_factories.NetworkFactory(
            settings=self.fixture.tenant_settings
        )
        self.subnet = openstack_tenant_factories.SubNetFactory(
            network=self.network, settings=self.fixture.tenant_settings
        )
        self.flavor = Flavor.objects.get(settings=self.fixture.tenant_settings)
        self.flavor.ram = 1024 * 8
        self.flavor.cores = 2
        self.flavor.save()
        self.fixture.settings.options['base_subnet_name'] = self.subnet.name
        self.fixture.settings.save()
示例#2
0
    def setUp(self):
        super(BaseClusterCreateTest, self).setUp()
        self.fixture = fixtures.RancherFixture()
        self.url = factories.ClusterFactory.get_list_url()
        openstack_service_settings = openstack_factories.OpenStackServiceSettingsFactory(
            customer=self.fixture.customer)
        openstack_service = openstack_factories.OpenStackServiceFactory(
            customer=self.fixture.customer,
            settings=openstack_service_settings)
        openstack_spl = openstack_factories.OpenStackServiceProjectLinkFactory(
            project=self.fixture.project, service=openstack_service)
        self.tenant = openstack_factories.TenantFactory(
            service_project_link=openstack_spl)

        settings = ServiceSettings.objects.get(scope=self.tenant)
        project = self.fixture.project
        instance_spl = OpenStackTenantServiceProjectLink.objects.get(
            project=project, service__settings=settings)

        openstack_tenant_factories.FlavorFactory(
            settings=instance_spl.service.settings)
        image = openstack_tenant_factories.ImageFactory(
            settings=instance_spl.service.settings)
        openstack_tenant_factories.SecurityGroupFactory(
            name='default', settings=instance_spl.service.settings)
        self.fixture.settings.options['base_image_name'] = image.name
        self.fixture.settings.save()

        network = openstack_tenant_factories.NetworkFactory(
            settings=instance_spl.service.settings)
        self.subnet = openstack_tenant_factories.SubNetFactory(
            network=network, settings=instance_spl.service.settings)
        self.fixture.settings.options['base_subnet_name'] = self.subnet.name
        self.fixture.settings.save()
    def setUp(self):
        self.fixture = fixtures.CostPlanningOpenStackPluginFixture()
        self.plan = self.fixture.deployment_plan
        self.url = factories.DeploymentPlanFactory.get_url(self.plan, action='evaluate')
        self.service = self.fixture.spl.service
        self.settings = self.service.settings
        self.flavor_params = [
            {'cores': 1, 'ram': 1 * 1024, 'name': 'flavor-1'},
            {'cores': 2, 'ram': 2 * 1024, 'name': 'flavor-2'},
            {'cores': 2, 'ram': 3 * 1024, 'name': 'flavor-3'},
            {'cores': 4, 'ram': 4 * 1024, 'name': 'flavor-4'},
        ]

        for p in self.flavor_params:
            ot_factories.FlavorFactory(settings=self.settings, **p)
            ct_models.DefaultPriceListItem.objects.update_or_create(
                resource_content_type=ContentType.objects.get_for_model(ot_models.Instance),
                item_type='flavor',
                key=p['name'])

        ct_factories.DefaultPriceListItemFactory(
            resource_content_type=ContentType.objects.get_for_model(ot_models.Volume),
            item_type=ot_cost_tracking.VolumeStrategy.Types.STORAGE,
            key=ot_cost_tracking.VolumeStrategy.Keys.STORAGE,
        )
def _instance_data(user, instance=None):
    if instance is None:
        instance = factories.InstanceFactory()
    factories.FloatingIPFactory(settings=instance.service_settings,
                                runtime_state='DOWN')
    image = factories.ImageFactory(settings=instance.service_settings)
    flavor = factories.FlavorFactory(settings=instance.service_settings)
    ssh_public_key = structure_factories.SshPublicKeyFactory(user=user)
    subnet = factories.SubNetFactory(settings=instance.service_settings)
    return {
        'name':
        'test-host',
        'description':
        'test description',
        'flavor':
        factories.FlavorFactory.get_url(flavor),
        'image':
        factories.ImageFactory.get_url(image),
        'service_settings':
        factories.OpenStackTenantServiceSettingsFactory.get_url(
            instance.service_settings),
        'project':
        structure_factories.ProjectFactory.get_url(instance.project),
        'ssh_public_key':
        structure_factories.SshPublicKeyFactory.get_url(ssh_public_key),
        'system_volume_size':
        max(image.min_disk, 1024),
        'internal_ips_set': [{
            'subnet': factories.SubNetFactory.get_url(subnet)
        }],
    }
    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 trigger_instance_creation(self, **kwargs):
        image = openstack_tenant_factories.ImageFactory(
            settings=self.service_settings, min_disk=10240, min_ram=1024)
        flavor = openstack_tenant_factories.FlavorFactory(
            settings=self.service_settings)

        subnet_url = openstack_tenant_factories.SubNetFactory.get_url(
            self.fixture.subnet)
        attributes = {
            'flavor':
            openstack_tenant_factories.FlavorFactory.get_url(flavor),
            'image':
            openstack_tenant_factories.ImageFactory.get_url(image),
            'name':
            'Virtual machine',
            'system_volume_size':
            image.min_disk,
            'internal_ips_set': [{
                'subnet': subnet_url
            }],
            'ssh_public_key':
            structure_factories.SshPublicKeyFactory.get_url(
                structure_factories.SshPublicKeyFactory(
                    user=self.fixture.manager)),
        }
        attributes.update(kwargs)

        offering = marketplace_factories.OfferingFactory(
            type=INSTANCE_TYPE, scope=self.service_settings)
        marketplace_factories.OfferingFactory(type=VOLUME_TYPE,
                                              scope=self.service_settings)
        # Ensure that SPL exists
        self.fixture.spl
        order = marketplace_factories.OrderFactory(
            project=self.fixture.project,
            state=marketplace_models.Order.States.EXECUTING,
        )
        order_item = marketplace_factories.OrderItemFactory(
            offering=offering,
            attributes=attributes,
            order=order,
        )

        serialized_order = core_utils.serialize_instance(order_item.order)
        serialized_user = core_utils.serialize_instance(self.fixture.owner)
        marketplace_tasks.process_order(serialized_order, serialized_user)

        order_item.refresh_from_db()
        return order_item
示例#7
0
    def setUp(self):
        self.fixture = openstack_tenant_fixtures.OpenStackTenantFixture()
        self.patcher = mock.patch(
            'waldur_rancher.backend.RancherBackend.get_cluster_nodes')
        self.mocked_get_cluster_nodes = self.patcher.start()
        self.mocked_get_cluster_nodes.return_value = [{
            'backend_id':
            'node_backend_id',
            'name':
            'name-rancher-node-1'
        }]

        self.patcher_client = mock.patch(
            'waldur_rancher.backend.RancherBackend.client')
        self.mock_client = self.patcher_client.start()
        self.mock_client.get_node.return_value = backend_node_response

        service = rancher_factories.RancherServiceFactory(
            customer=self.fixture.customer)
        spl = rancher_factories.RancherServiceProjectLinkFactory(
            project=self.fixture.project, service=service)
        service_settings = spl.service.settings
        self.offering = marketplace_factories.OfferingFactory(
            type=PLUGIN_NAME, scope=service_settings)
        self.plan = marketplace_factories.PlanFactory(offering=self.offering, )
        self.offering_component = marketplace_factories.OfferingComponentFactory(
            offering=self.offering,
            type='node',
            billing_type=marketplace_models.OfferingComponent.BillingTypes.
            USAGE,
        )
        self.plan_component = marketplace_factories.PlanComponentFactory(
            plan=self.plan,
            component=self.offering_component,
        )
        openstack_tenant_factories.FlavorFactory(
            settings=self.fixture.spl.service.settings, ram=1024 * 8, cores=8)
        image = openstack_tenant_factories.ImageFactory(
            settings=self.fixture.spl.service.settings)
        openstack_tenant_factories.SecurityGroupFactory(
            name='default', settings=self.fixture.spl.service.settings)
        service_settings.options['base_image_name'] = image.name
        service_settings.save()

        self.resource = None
        self.cluster = None
        self.plan_period = None
示例#8
0
    def test_resource_is_created_when_order_item_is_processed(self):
        service = rancher_factories.RancherServiceFactory(
            customer=self.fixture.customer)
        spl = rancher_factories.RancherServiceProjectLinkFactory(
            project=self.fixture.project, service=service)
        service_settings = spl.service.settings
        offering = marketplace_factories.OfferingFactory(
            type=PLUGIN_NAME, scope=service_settings)

        openstack_tenant_factories.FlavorFactory(
            settings=self.fixture.spl.service.settings)
        image = openstack_tenant_factories.ImageFactory(
            settings=self.fixture.spl.service.settings)
        openstack_tenant_factories.SecurityGroupFactory(
            name='default', settings=self.fixture.spl.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)
        order_item = marketplace_factories.OrderItemFactory(
            order=order,
            offering=offering,
            attributes={
                'name':
                'name',
                'nodes': [{
                    'subnet':
                    openstack_tenant_factories.SubNetFactory.get_url(
                        self.fixture.subnet),
                    'storage':
                    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())
示例#9
0
    def setUp(self):
        user = structure_factories.UserFactory(is_staff=True)
        self.client.force_authenticate(user=user)

        self.backup = factories.BackupFactory(state=models.Backup.States.OK)
        ss = self.backup.service_settings
        ss.options = {'external_network_id': uuid.uuid4().hex}
        ss.save()
        self.url = factories.BackupFactory.get_url(self.backup, 'restore')

        system_volume = self.backup.instance.volumes.get(bootable=True)
        self.disk_size = system_volume.size

        self.service_settings = self.backup.instance.service_settings
        self.service_settings.options = {'external_network_id': uuid.uuid4().hex}
        self.service_settings.save()
        self.valid_flavor = factories.FlavorFactory(
            disk=self.disk_size + 10, settings=self.service_settings
        )
        self.subnet = factories.SubNetFactory(settings=self.service_settings)
示例#10
0
 def flavor(self):
     return tenant_factories.FlavorFactory(settings=self.private_settings)