Exemplo n.º 1
0
def change_order_item_state(sender, instance, created=False, **kwargs):
    if created:
        return

    if not instance.tracker.has_changed('state'):
        return

    try:
        resource = marketplace_models.Resource.objects.get(scope=instance)
    except ObjectDoesNotExist:
        logger.warning(
            'Skipping support offering state synchronization '
            'because related order item is not found. Offering ID: %s',
            instance.id,
        )
        return

    if instance.state == support_models.Offering.States.OK:
        callbacks.resource_creation_succeeded(resource)
    elif instance.state == support_models.Offering.States.TERMINATED:
        if (instance.tracker.previous('state') ==
                support_models.Offering.States.REQUESTED):
            callbacks.resource_creation_failed(resource)
        if instance.tracker.previous(
                'state') == support_models.Offering.States.OK:
            callbacks.resource_deletion_succeeded(resource)
Exemplo n.º 2
0
    def test_when_resource_is_terminated_old_period_is_closed(self):
        # Arrange
        start = parse_datetime('2018-10-01')
        end = parse_datetime('2018-11-01')

        plan = factories.PlanFactory()
        resource = factories.ResourceFactory(plan=plan)

        period = models.ResourcePlanPeriod.objects.create(resource=resource,
                                                          plan=plan,
                                                          start=start,
                                                          end=None)
        order_item = factories.OrderItemFactory(
            state=models.OrderItem.States.EXECUTING,
            type=models.OrderItem.Types.TERMINATE,
            resource=resource,
            plan=plan,
        )

        # Act
        callbacks.resource_deletion_succeeded(resource)

        # Assert
        order_item.refresh_from_db()
        self.assertEqual(order_item.state, models.OrderItem.States.DONE)

        period.refresh_from_db()
        self.assertEqual(period.end, end)
Exemplo n.º 3
0
def terminate_resource(sender, instance, **kwargs):
    try:
        resource = marketplace_models.Resource.objects.get(scope=instance)
    except ObjectDoesNotExist:
        logger.debug(
            'Skipping resource terminate for OpenStack resource'
            'because marketplace resource does not exist. '
            'Resource ID: %s', instance.id)
    else:
        callbacks.resource_deletion_succeeded(resource)
Exemplo n.º 4
0
def terminate_resource(sender, instance, **kwargs):
    try:
        resource = marketplace_models.Resource.objects.get(scope=instance)
    except django_exceptions.ObjectDoesNotExist:
        logger.debug(
            'Skipping resource terminate for SLURM allocation '
            'because related resource does not exist. '
            'Allocation ID: %s', instance.id)
    else:
        callbacks.resource_deletion_succeeded(resource)
Exemplo n.º 5
0
 def delete_resource(self, resource):
     callbacks.resource_deletion_succeeded(resource)