Store the stack in the database and return its ID
If self.id is set, we update the existing stack
'''
- new_creds = db_api.user_creds_create(self.context)
s = {
'name': self.name,
'raw_template_id': self.t.store(self.context),
'parameters': self.env.user_env_as_dict(),
'owner_id': self.owner_id,
- 'user_creds_id': new_creds.id,
'username': self.context.username,
'tenant': self.context.tenant_id,
'action': self.action,
if self.id:
db_api.stack_update(self.context, self.id, s)
else:
+ new_creds = db_api.user_creds_create(self.context)
+ s['user_creds_id'] = new_creds.id
new_s = db_api.stack_create(self.context, s)
self.id = new_s.id
db_stack = db_api.stack_get(self.ctx, stack_ownee.id)
self.assertEqual(db_stack.owner_id, self.stack.id)
+ @utils.stack_delete_after
+ def test_store_saves_creds(self):
+ """
+ A user_creds entry is created on first stack store
+ """
+ self.stack = parser.Stack(
+ self.ctx, 'creds_stack', template.Template({}))
+ self.stack.store()
+
+ # The store should've created a user_creds row and set user_creds_id
+ db_stack = db_api.stack_get(self.ctx, self.stack.id)
+ user_creds_id = db_stack.user_creds_id
+ self.assertIsNotNone(user_creds_id)
+
+ # Store again, ID should not change
+ self.stack.store()
+ self.assertEqual(user_creds_id, db_stack.user_creds_id)
+
@utils.stack_delete_after
def test_load_honors_owner(self):
"""