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)
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)
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)
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)
def delete_resource(self, resource): callbacks.resource_deletion_succeeded(resource)