]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Store the user parameters in the stack table
authorAngus Salkeld <asalkeld@redhat.com>
Wed, 27 Jun 2012 05:20:45 +0000 (15:20 +1000)
committerAngus Salkeld <asalkeld@redhat.com>
Wed, 27 Jun 2012 05:22:59 +0000 (15:22 +1000)
This allows us to use the raw template + the parameters
in place of the parsed_template.
Using the parsed template we lose the dependancy information
that is necessary when deleting the stack.

Change-Id: Icc6ed9ae1617ea9f760a674b44630918669124f9
Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
heat/db/sqlalchemy/migrate_repo/versions/008_user_parameters.py [new file with mode: 0644]
heat/db/sqlalchemy/models.py
heat/engine/manager.py

diff --git a/heat/db/sqlalchemy/migrate_repo/versions/008_user_parameters.py b/heat/db/sqlalchemy/migrate_repo/versions/008_user_parameters.py
new file mode 100644 (file)
index 0000000..6511b14
--- /dev/null
@@ -0,0 +1,16 @@
+from sqlalchemy import *
+from migrate import *
+
+
+def upgrade(migrate_engine):
+    meta = MetaData(bind=migrate_engine)
+
+    stack = Table('stack', meta, autoload=True)
+    Column('parameters', Text()).create(stack)
+
+
+def downgrade(migrate_engine):
+    meta = MetaData(bind=migrate_engine)
+
+    stack = Table('stack', meta, autoload=True)
+    stack.c.parameters.drop()
index 24285526c44a77df3b3fc61439994eb39e21f486..07cf6f1db1fceebc26ea2de679166919ac7c7ff9 100644 (file)
@@ -160,6 +160,7 @@ class Stack(BASE, HeatBase):
     username = Column(String)
     status = Column('status', String)
     status_reason = Column('status_reason', String)
+    parameters = Column('parameters', Json)
     user_creds_id = Column(Integer, ForeignKey('user_creds.id'),
                            nullable=False)
     owner_id = Column(Integer, nullable=True)
index 3108ce8eeb020da6d5bebd967aeacce71e589d4e..11b98973bc664fd849bd0a2d8fad1cac405d8412 100644 (file)
@@ -191,6 +191,7 @@ class EngineManager(manager.Manager):
         s['raw_template_id'] = new_rt.id
         s['user_creds_id'] = new_creds.id
         s['username'] = context.username
+        s['parameters'] = user_params
         new_s = db_api.stack_create(context, s)
         stack.id = new_s.id
 
@@ -267,8 +268,8 @@ class EngineManager(manager.Manager):
         logger.info('deleting stack %s' % stack_name)
 
         ps = parser.Stack(context, st.name,
-                          st.raw_template.parsed_template.template,
-                          st.id, _extract_user_params(params))
+                          st.raw_template.template,
+                          st.id, st.parameters)
         greenpool.spawn_n(ps.delete)
         return None
 
@@ -484,8 +485,8 @@ class EngineManager(manager.Manager):
                     user_creds = db_api.user_creds_get(s.user_creds_id)
                     ctxt = ctxtlib.RequestContext.from_dict(dict(user_creds))
                     ps = parser.Stack(ctxt, s.name,
-                                      s.raw_template.parsed_template.template,
-                                      s.id)
+                                      s.raw_template.template,
+                                      s.id, s.parameters)
                     for a in wr.rule[action_map[new_state]]:
                         greenpool.spawn_n(ps[a].alarm)