When rolling back a stack update, we will need to swap the current and
previous (backup) resources so that the former moves to the backup stack
while the latter returns to the current stack. This API allows us to effect
the switch using a database transaction (thus avoiding having to create a
*third* stack).
Change-Id: I2b7247e384e3914778179260e198e5ae5c701525
return IMPL.resource_create(context, values)
+def resource_exchange_stacks(context, resource_id1, resource_id2):
+ return IMPL.resource_exchange_stacks(context, resource_id1, resource_id2)
+
+
def resource_get_all_by_stack(context, stack_id):
return IMPL.resource_get_all_by_stack(context, stack_id)
return current
+def resource_exchange_stacks(context, resource_id1, resource_id2):
+ query = model_query(context, models.Resource)
+ session = query.session
+ session.begin()
+
+ res1 = query.get(resource_id1)
+ res2 = query.get(resource_id2)
+
+ res1.stack, res2.stack = res2.stack, res1.stack
+
+ session.commit()
+
+
def resource_data_delete(resource, key):
result = resource_data_get_by_key(resource.context, resource.id, key)
result.delete()