Beispiel #1
0
    def setUp(self):
        self.provider = marketplace_factories.ServiceProviderFactory()
        self.provider_2 = marketplace_factories.ServiceProviderFactory()

        self.offering = marketplace_factories.OfferingFactory(
            type=PACKAGE_TYPE, customer=self.provider.customer)

        self.offering_component = marketplace_factories.OfferingComponentFactory(
            offering=self.offering)
        self.plan = marketplace_factories.PlanFactory(
            offering=self.offering,
            unit=UnitPriceMixin.Units.PER_DAY,
        )
        self.component = marketplace_factories.PlanComponentFactory(
            component=self.offering_component,
            price=Decimal(5),
            plan=self.plan)

        self.offering_2 = marketplace_factories.OfferingFactory(
            type=PACKAGE_TYPE, customer=self.provider_2.customer)

        self.offering_component_2 = marketplace_factories.OfferingComponentFactory(
            offering=self.offering_2)
        self.plan_2 = marketplace_factories.PlanFactory(
            offering=self.offering_2,
            unit=UnitPriceMixin.Units.PER_DAY,
        )
        self.component_2 = marketplace_factories.PlanComponentFactory(
            component=self.offering_component_2,
            price=Decimal(7),
            plan=self.plan_2)

        self.resource_1 = marketplace_factories.ResourceFactory(
            state=marketplace_models.Resource.States.OK,
            offering=self.offering,
            plan=self.plan,
            limits={'cpu': 1},
        )

        self.resource_2 = marketplace_factories.ResourceFactory(
            state=marketplace_models.Resource.States.OK,
            offering=self.offering,
            project=self.resource_1.project,
            plan=self.plan,
            limits={'cpu': 1},
        )

        self.resource_3 = marketplace_factories.ResourceFactory(
            state=marketplace_models.Resource.States.OK,
            offering=self.offering_2,
            project=self.resource_1.project,
            plan=self.plan_2,
            limits={'cpu': 1},
        )

        self.customer = self.resource_1.project.customer
Beispiel #2
0
    def setUp(self):
        self.fixture1 = structure_fixtures.ServiceFixture()
        self.service_provider1 = self.fixture1.customer
        self.offering1 = factories.OfferingFactory(
            customer=self.service_provider1)
        self.resource1 = factories.ResourceFactory(
            offering=self.offering1, project=self.fixture1.project)

        self.fixture2 = structure_fixtures.ServiceFixture()
        self.service_provider2 = self.fixture2.customer
        factories.OfferingFactory(customer=self.service_provider2)
Beispiel #3
0
    def submit_public_and_private(self, role):
        provider_fixture = fixtures.ProjectFixture()
        consumer_fixture = fixtures.ProjectFixture()
        private_offering = factories.OfferingFactory(
            state=models.Offering.States.ACTIVE,
            shared=False,
            billable=False,
            customer=provider_fixture.customer,
            type='TEST_TYPE',
            scope=self.service_settings,
            project=consumer_fixture.project,
        )
        public_offering = factories.OfferingFactory(
            state=models.Offering.States.ACTIVE,
            shared=True,
            billable=True,
            customer=provider_fixture.customer,
            type='TEST_TYPE',
            scope=self.service_settings,
        )

        self.client.force_authenticate(getattr(consumer_fixture, role))

        self.client.post(
            factories.CartItemFactory.get_list_url(),
            {
                'offering':
                factories.OfferingFactory.get_url(private_offering),
                'project':
                structure_factories.ProjectFactory.get_url(
                    consumer_fixture.project),
                'attributes': {
                    'name': 'test'
                },
            },
        )

        self.client.post(
            factories.CartItemFactory.get_list_url(),
            {
                'offering':
                factories.OfferingFactory.get_url(public_offering),
                'project':
                structure_factories.ProjectFactory.get_url(
                    consumer_fixture.project),
                'attributes': {
                    'name': 'test'
                },
            },
        )

        return self.submit(consumer_fixture.project)
Beispiel #4
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
Beispiel #5
0
 def setUp(self):
     fixture = package_fixtures.OpenStackFixture()
     offering = marketplace_factories.OfferingFactory(
         type=PACKAGE_TYPE, scope=fixture.openstack_service_settings
     )
     create_offering_components(offering)
     for name in 'Basic', 'Advanced':
         plan = marketplace_factories.PlanFactory(offering=offering, name=name)
         prices = {
             CORES_TYPE: 1,
             RAM_TYPE: 0.1,
             STORAGE_TYPE: 0.01,
         }
         for key, value in prices.items():
             component = marketplace_models.OfferingComponent.objects.get(
                 offering=offering, type=key,
             )
             marketplace_models.PlanComponent.objects.create(
                 plan=plan, component=component, price=value,
             )
         resource = marketplace_factories.ResourceFactory(
             offering=offering, plan=plan,
         )
         marketplace_factories.OrderItemFactory(
             offering=offering, plan=plan, resource=resource,
         )
     self.offering = offering
    def setUp(self):
        fixture = structure_fixtures.ProjectFixture()
        service_settings = structure_factories.ServiceSettingsFactory(type='SLURM')
        offering = marketplace_factories.OfferingFactory(type=PLUGIN_NAME, scope=service_settings)
        plan = marketplace_factories.PlanFactory(offering=offering)
        self.allocation = slurm_factories.AllocationFactory()
        self.resource = marketplace_models.Resource.objects.create(
            scope=self.allocation,
            offering=offering,
            plan=plan,
            project=fixture.project,
        )
        self.plan_period = marketplace_models.ResourcePlanPeriod.objects.create(
            resource=self.resource,
            plan=plan,
            start=timezone.make_aware(datetime.datetime.now())
        )
        for component in manager.get_components(PLUGIN_NAME):
            offering_component = marketplace_models.OfferingComponent.objects.create(
                offering=offering,
                type=component.type,
                name=component.name,
                measured_unit=component.measured_unit,
                billing_type=marketplace_models.OfferingComponent.BillingTypes.USAGE,
            )
            marketplace_models.PlanComponent.objects.create(
                component=offering_component,
                plan=plan,
                price=3
            )

        marketplace_models.ResourcePlanPeriod.objects.create(
            start=datetime.date(2017, 1, 1),
            resource=self.resource,
            plan=plan)
    def test_add_backlink_to_order_item_details_into_created_service_desk_ticket(
            self):
        fixture = fixtures.ProjectFixture()
        offering = marketplace_factories.OfferingFactory(type=PLUGIN_NAME,
                                                         options={'order': []})

        order_item = marketplace_factories.OrderItemFactory(offering=offering,
                                                            attributes={
                                                                'name':
                                                                'item_name',
                                                                'description':
                                                                'Description'
                                                            })

        serialized_order = core_utils.serialize_instance(order_item.order)
        serialized_user = core_utils.serialize_instance(fixture.staff)
        marketplace_tasks.process_order(serialized_order, serialized_user)
        self.assertTrue(
            support_models.Offering.objects.filter(name='item_name').exists())
        offering = support_models.Offering.objects.get(name='item_name')
        link_template = settings.WALDUR_MARKETPLACE['ORDER_ITEM_LINK_TEMPLATE']
        order_item_url = link_template.format(
            order_item_uuid=order_item.uuid,
            project_uuid=order_item.order.project.uuid)
        self.assertTrue(order_item_url in offering.issue.description)
Beispiel #8
0
    def test_plan_switch_cost_is_added_to_cost_estimate_for_order_item(self):
        # Arrange
        offering = factories.OfferingFactory(type='Support.OfferingTemplate')
        switch_offering_component = factories.OfferingComponentFactory(
            offering=offering,
            billing_type=models.OfferingComponent.BillingTypes.ON_PLAN_SWITCH,
            type='plan_switch',
        )
        usage_offering_component = factories.OfferingComponentFactory(
            offering=offering,
            billing_type=models.OfferingComponent.BillingTypes.USAGE,
            type='cpu',
        )

        plan = factories.PlanFactory()
        factories.PlanComponentFactory(
            plan=plan, component=switch_offering_component, price=50
        )
        factories.PlanComponentFactory(
            plan=plan, component=usage_offering_component, price=10
        )

        order_item = factories.OrderItemFactory(
            offering=offering, plan=plan, type=models.OrderItem.Types.UPDATE,
        )
        order_item.init_cost()
        self.assertEqual(order_item.cost, 50)
 def setUp(self):
     self.fixture = fixtures.ProjectFixture()
     self.project = self.fixture.project
     self.user = self.fixture.admin
     self.offering = marketplace_factories.OfferingFactory(
         type=PLUGIN_NAME,
         attributes={
             'schedules': [
                 {
                     'start': '2018-11-01T00:00:00.000000Z',
                     'end': '2018-11-01T23:59:59.000000Z',
                 },
                 {
                     'start': '2019-01-01T00:00:00.000000Z',
                     'end': '2019-01-01T23:59:59.000000Z',
                 },
                 {
                     'start': '2019-01-02T00:00:00.000000Z',
                     'end': '2019-01-02T23:59:59.000000Z',
                 },
                 {
                     'start': '2019-01-03T00:00:00.000000Z',
                     'end': '2019-01-03T23:59:59.000000Z',
                 },
             ]
         },
         state=marketplace_models.Offering.States.ACTIVE,
     )
    def trigger_resource_creation(self, **kwargs):
        fixture = azure_fixtures.AzureFixture()
        service_settings = fixture.settings

        attributes = {
            'name': 'database-server',
            'location': azure_factories.LocationFactory.get_url(),
        }
        attributes.update(kwargs)

        offering = marketplace_factories.OfferingFactory(
            type=SQL_SERVER_TYPE, scope=service_settings)
        order = marketplace_factories.OrderFactory(
            project=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(fixture.staff)
        marketplace_tasks.process_order(serialized_order, serialized_user)

        order_item.refresh_from_db()
        return order_item
Beispiel #11
0
    def test_when_order_item_is_approved_openstack_tenant_is_created(self):
        # Arrange
        fixture = package_fixtures.PackageFixture()
        offering = marketplace_factories.OfferingFactory(
            scope=fixture.openstack_service_settings, type=PLUGIN_NAME)
        order = marketplace_factories.OrderFactory(
            state=marketplace_models.Order.States.REQUESTED_FOR_APPROVAL,
            project=fixture.project,
        )
        plan = marketplace_factories.PlanFactory(
            scope=fixture.openstack_template)
        attributes = dict(
            name='My first VPC',
            description='Database cluster',
            user_username='******',
        )
        order_item = marketplace_factories.OrderItemFactory(
            order=order, offering=offering, attributes=attributes, plan=plan)

        serialized_order = core_utils.serialize_instance(order)
        serialized_user = core_utils.serialize_instance(fixture.staff)
        marketplace_tasks.process_order(serialized_order, serialized_user)

        # Assert
        order_item.refresh_from_db()
        self.assertTrue(isinstance(order_item.scope, openstack_models.Tenant))
Beispiel #12
0
    def trigger_volume_creation(self, **kwargs):
        image = openstack_tenant_factories.ImageFactory(
            settings=self.service_settings, min_disk=10240, min_ram=1024)

        attributes = {
            'image': openstack_tenant_factories.ImageFactory.get_url(image),
            'name': 'Volume',
            'size': 10 * 1024,
        }
        attributes.update(kwargs)

        offering = marketplace_factories.OfferingFactory(
            type=VOLUME_TYPE, scope=self.service_settings)

        order_item = marketplace_factories.OrderItemFactory(
            offering=offering,
            attributes=attributes,
            order__project=self.fixture.project,
        )
        order_item.order.approve()
        order_item.order.save()

        process_order(order_item.order, self.fixture.staff)

        order_item.refresh_from_db()
        return order_item
Beispiel #13
0
    def test_order_gets_approved_if_all_offerings_are_private(
            self, role, mocked_task):
        fixture = fixtures.ProjectFixture()
        offering = factories.OfferingFactory(
            state=models.Offering.States.ACTIVE,
            shared=False,
            billable=False,
            customer=fixture.customer,
            type='TEST_TYPE',
            scope=self.service_settings,
        )

        self.client.force_authenticate(getattr(fixture, role))

        self.client.post(
            factories.CartItemFactory.get_list_url(),
            {
                'offering':
                factories.OfferingFactory.get_url(offering),
                'project':
                structure_factories.ProjectFactory.get_url(fixture.project),
                'attributes': {
                    'name': 'test'
                },
            },
        )

        response = self.submit(fixture.project)
        self.assertEqual(response.data['state'], 'executing')
        mocked_task.delay.assert_not_called()
Beispiel #14
0
    def test_create_confirmation_comment_if_offering_template_is_defined(self):
        mock.patch.stopall()
        fixture = fixtures.ProjectFixture()
        offering = marketplace_factories.OfferingFactory(
            type=PLUGIN_NAME,
            options={'order': []},
            secret_options={
                'template_confirmation_comment':
                'template_confirmation_comment'
            },
        )

        order_item = marketplace_factories.OrderItemFactory(
            offering=offering,
            attributes={
                'name': 'item_name',
                'description': 'Description'
            },
        )

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

        self.mock_get_active_backend(
        ).create_confirmation_comment.assert_called_once_with(
            mock.ANY, 'template_confirmation_comment')
Beispiel #15
0
    def test_set_creation_ticket_id_as_backend_id_of_resource(self):
        def mock_create_issue(issue):
            issue.backend_id = 'WAL TEST'
            issue.save()

        self.mock_get_active_backend().create_issue = mock_create_issue
        fixture = fixtures.ProjectFixture()
        offering = marketplace_factories.OfferingFactory(type=PLUGIN_NAME,
                                                         options={'order': []})

        order_item = marketplace_factories.OrderItemFactory(
            offering=offering,
            attributes={
                'name': 'item_name',
                'description': 'Description'
            },
        )

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

        resource = marketplace_models.Resource.objects.get(name='item_name')
        issue = support_models.Issue.objects.get(
            resource_object_id=order_item.id)
        self.assertEqual(issue.backend_id, resource.backend_id)
Beispiel #16
0
 def setUp(self):
     self.offering = marketplace_factories.OfferingFactory(
         type=PACKAGE_TYPE)
     self.plan = marketplace_factories.PlanFactory(offering=self.offering)
     self.limits = {
         RAM_TYPE: 1 * 1024,
         CORES_TYPE: 2,
         STORAGE_TYPE: 3 * 1024,
     }
     self.prices = {
         RAM_TYPE: 10,
         CORES_TYPE: 100,
         STORAGE_TYPE: 1,
     }
     for ct in self.prices.keys():
         marketplace_factories.PlanComponentFactory(
             plan=self.plan,
             component=marketplace_factories.OfferingComponentFactory(
                 offering=self.offering,
                 type=ct,
             ),
             price=self.prices[ct],
         )
     self.resource = marketplace_factories.ResourceFactory(
         offering=self.offering,
         plan=self.plan,
         limits=self.limits,
         state=marketplace_models.Resource.States.OK,
     )
Beispiel #17
0
 def test_user_cannot_create_order_if_terms_of_service_have_been_not_accepted(
         self):
     user = self.fixture.admin
     offering = factories.OfferingFactory(
         state=models.Offering.States.ACTIVE)
     offering.terms_of_service = 'Terms of service'
     offering.save()
     add_payload = {
         'items': [
             {
                 'offering': factories.OfferingFactory.get_url(offering),
                 'attributes': {},
             },
         ]
     }
     response = self.create_order(user,
                                  offering=offering,
                                  add_payload=add_payload)
     self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
     self.assertEqual(
         str(response.content, 'utf-8'),
         '{"items":["Terms of service for offering \'%s\' have not been accepted."]}'
         % offering,
     )
     self.assertFalse(models.Order.objects.filter(created_by=user).exists())
Beispiel #18
0
    def test_user_can_not_create_order_with_invalid_limits(self):
        limits = {
            'storage': 1000,
            'ram': 30,
            'cpu_count': 5,
        }

        offering = factories.OfferingFactory(
            state=models.Offering.States.ACTIVE)
        plan = factories.PlanFactory(offering=offering)

        for key in limits.keys():
            models.OfferingComponent.objects.create(
                offering=offering,
                type=key,
                billing_type=models.OfferingComponent.BillingTypes.FIXED,
            )

        add_payload = {
            'items': [
                {
                    'offering': factories.OfferingFactory.get_url(offering),
                    'plan': factories.PlanFactory.get_url(plan),
                    'limits': limits,
                    'attributes': {},
                },
            ]
        }

        response = self.create_order(self.fixture.staff,
                                     offering,
                                     add_payload=add_payload)
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
Beispiel #19
0
 def setUp(self):
     super(VpcExternalFilterTest, self).setUp()
     self.fixture = package_fixtures.OpenStackFixture()
     self.offering = marketplace_factories.OfferingFactory(
         category=self.tenant_category
     )
     self.url = marketplace_factories.OfferingFactory.get_list_url()
Beispiel #20
0
    def trigger_volume_creation(self, **kwargs):
        image = openstack_tenant_factories.ImageFactory(
            settings=self.service_settings, min_disk=10240, min_ram=1024)

        attributes = {
            'image': openstack_tenant_factories.ImageFactory.get_url(image),
            'name': 'Volume',
            'size': 10 * 1024
        }
        attributes.update(kwargs)

        offering = marketplace_factories.OfferingFactory(
            type=VOLUME_TYPE, scope=self.service_settings)

        order_item = marketplace_factories.OrderItemFactory(
            offering=offering, attributes=attributes)
        order_item.order.approve()
        order_item.order.save()

        service = openstack_tenant_models.OpenStackTenantService.objects.create(
            customer=order_item.order.project.customer,
            settings=self.service_settings,
        )

        openstack_tenant_models.OpenStackTenantServiceProjectLink.objects.create(
            project=order_item.order.project,
            service=service,
        )

        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)

        order_item.refresh_from_db()
        return order_item
    def setUp(self):
        fixture = slurm_fixtures.SlurmFixture()
        service_settings = fixture.service.settings
        offering = marketplace_factories.OfferingFactory(
            type=PLUGIN_NAME, scope=service_settings)
        plan = marketplace_factories.PlanFactory(offering=offering)
        order = marketplace_factories.OrderFactory(
            project=fixture.project,
            state=marketplace_models.Order.States.EXECUTING)
        order_item = marketplace_factories.OrderItemFactory(
            order=order,
            offering=offering,
            limits={
                component.type: 10
                for component in manager.get_components(PLUGIN_NAME)
            })
        for component in manager.get_components(PLUGIN_NAME):
            component = marketplace_models.OfferingComponent.objects.create(
                offering=offering,
                type=component.type,
                name=component.name,
                measured_unit=component.measured_unit,
            )
            marketplace_models.PlanComponent.objects.create(
                plan=plan,
                component=component,
            )

        # Create SPL
        fixture.spl
        self.fixture = fixture
        self.order_item = order_item
        self.offering = offering
Beispiel #22
0
    def setUp(self):
        self.fixture = structure_fixtures.ProjectFixture()
        self.service_provider = factories.ServiceProviderFactory()
        self.secret_code = self.service_provider.api_secret_code
        self.offering = factories.OfferingFactory(
            customer=self.fixture.customer)
        self.plan = factories.PlanFactory(unit=UnitPriceMixin.Units.PER_DAY,
                                          offering=self.offering)
        self.offering_component = factories.OfferingComponentFactory(
            offering=self.offering,
            billing_type=models.OfferingComponent.BillingTypes.USAGE,
        )
        self.component = factories.PlanComponentFactory(
            plan=self.plan, component=self.offering_component)
        self.resource = models.Resource.objects.create(
            offering=self.offering,
            plan=self.plan,
            project=self.fixture.project,
        )

        factories.OrderItemFactory(
            resource=self.resource,
            type=models.RequestTypeMixin.Types.CREATE,
            state=models.OrderItem.States.EXECUTING,
            plan=self.plan,
        )
        callbacks.resource_creation_succeeded(self.resource)
        self.plan_period = models.ResourcePlanPeriod.objects.get(
            resource=self.resource)
    def trigger_virtual_machine_creation(self, **kwargs):
        fixture = azure_fixtures.AzureFixture()
        service_settings = fixture.settings

        azure_models.SizeAvailabilityZone.objects.create(
            size=fixture.size, location=fixture.location, zone=1)

        attributes = {
            'size': azure_factories.SizeFactory.get_url(fixture.size),
            'image': azure_factories.ImageFactory.get_url(fixture.image),
            'name': 'virtual-machine',
            'location':
            azure_factories.LocationFactory.get_url(fixture.location),
        }
        attributes.update(kwargs)

        offering = marketplace_factories.OfferingFactory(
            type=VIRTUAL_MACHINE_TYPE, scope=service_settings)
        order = marketplace_factories.OrderFactory(
            project=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(fixture.staff)
        marketplace_tasks.process_order(serialized_order, serialized_user)

        order_item.refresh_from_db()
        return order_item
 def setUp(self):
     self.fixture = structure_fixtures.ProjectFixture()
     self.project = self.fixture.project
     self.manager = self.fixture.manager
     self.order = factories.OrderFactory(project=self.project,
                                         created_by=self.manager)
     self.offering = factories.OfferingFactory()
Beispiel #25
0
    def setUp(self):
        fixture = structure_fixtures.ProjectFixture()
        offering = marketplace_factories.OfferingFactory(type=PLUGIN_NAME)

        self.order_item = marketplace_factories.OrderItemFactory(
            offering=offering,
            attributes={
                'schedules': [
                    {
                        'start': '2019-01-03T00:00:00.000000Z',
                        'end': '2019-01-05T23:59:59.000000Z',
                    },
                ],
                'name':
                'booking',
            },
        )

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

        self.resource = marketplace_models.Resource.objects.get(name='booking')
        self.resource.state = marketplace_models.Resource.States.OK
        self.resource.save()
Beispiel #26
0
    def test_initialization_cost_is_added_to_cost_estimate_for_creation_request(self):
        # Arrange
        offering = factories.OfferingFactory(type='Support.OfferingTemplate')
        one_time_offering_component = factories.OfferingComponentFactory(
            offering=offering,
            billing_type=models.OfferingComponent.BillingTypes.ONE_TIME,
            type='signup',
        )
        usage_offering_component = factories.OfferingComponentFactory(
            offering=offering,
            billing_type=models.OfferingComponent.BillingTypes.USAGE,
            type='cpu',
        )

        plan = factories.PlanFactory()
        factories.PlanComponentFactory(
            plan=plan, component=one_time_offering_component, price=100
        )
        factories.PlanComponentFactory(
            plan=plan, component=usage_offering_component, price=10
        )

        order_item = factories.OrderItemFactory(offering=offering, plan=plan,)
        order_item.init_cost()
        self.assertEqual(order_item.cost, 100)
Beispiel #27
0
 def setUp(self):
     self.fixture = openstack_tenant_fixtures.OpenStackTenantFixture()
     self.offering = marketplace_factories.OfferingFactory(
         type=PACKAGE_TYPE)
     self.plan = marketplace_factories.PlanFactory(offering=self.offering)
     self.resource = marketplace_factories.ResourceFactory(
         offering=self.offering,
         project=self.fixture.project,
         plan=self.plan,
         state=marketplace_models.Resource.States.OK)
     tenant = self.fixture.tenant
     self.mock_get_backend = mock.MagicMock()
     tenant.get_backend = self.mock_get_backend
     self.resource.scope = tenant
     self.resource.save()
     self.quotas = {
         'network_count': 100,
         'cores': 4,
         'ram': 1024,
         'storage': 1024,
         'snapshots': 50,
         'instances': 30,
         'floating_ip_count': 50,
         'subnet_count': 100,
         'volumes': 50,
         'security_group_rule_count': 100,
         'security_group_count': 100
     }
    def test_resource_is_created_when_order_item_is_processed(self):
        fixture = fixtures.ProjectFixture()
        offering = marketplace_factories.OfferingFactory(type=PLUGIN_NAME)

        order_item = marketplace_factories.OrderItemFactory(
            offering=offering,
            attributes={
                'name':
                'item_name',
                'description':
                'Description',
                'schedules': [{
                    'start': '2021-02-05T10:00:00.000000+00:00',
                    'end': '2021-02-05T15:00:00.000000+00:00',
                }],
            },
        )

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

        self.assertTrue(
            marketplace_models.Resource.objects.filter(
                name='item_name').exists())
        resource = marketplace_models.Resource.objects.get(name='item_name')
        self.assertEqual(resource.state,
                         marketplace_models.Resource.States.CREATING)
    def test_request_is_created_when_order_item_is_processed(self):
        fixture = fixtures.ProjectFixture()
        offering = marketplace_factories.OfferingFactory(type=PLUGIN_NAME,
                                                         options={'order': []})

        order_item = marketplace_factories.OrderItemFactory(
            offering=offering,
            attributes={
                'name': 'item_name',
                'description': 'Description'
            },
        )

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

        self.assertTrue(
            support_models.Offering.objects.filter(name='item_name').exists())
        support_offering = support_models.Offering.objects.get(
            name='item_name')
        resource = marketplace_models.Resource.objects.get(
            scope=support_offering)
        order_item = marketplace_models.OrderItem.objects.get(
            resource=resource)
        self.assertTrue(
            support_models.Issue.objects.filter(
                resource_object_id=order_item.id).exists())
Beispiel #30
0
 def setUp(self):
     self.offering = marketplace_factories.OfferingFactory(
         type=PLUGIN_NAME, options={'order': []}
     )
     self.service_provider = marketplace_factories.ServiceProviderFactory(
         customer=self.offering.customer, lead_email='*****@*****.**'
     )