]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Use new Parameters class for validation
authorZane Bitter <zbitter@redhat.com>
Wed, 31 Oct 2012 19:18:43 +0000 (20:18 +0100)
committerZane Bitter <zbitter@redhat.com>
Wed, 31 Oct 2012 19:18:43 +0000 (20:18 +0100)
The Stack.validate() method is no longer used for the validate_template
feature (since it requires the parameter values in order to parse the whole
template), so move the code for outputting parameter metadata to where it
is actually used.

Change-Id: Ibf2ad7cb485bff75953c952f34ea4a597ea5e2f8
Signed-off-by: Zane Bitter <zbitter@redhat.com>
heat/engine/manager.py
heat/engine/parser.py
heat/tests/test_engine_manager.py

index a34f692de63af9756074d7bfa46c020d7063096c..3189a4d01ef8f84169c88218f0cffcf9553146d3 100644 (file)
@@ -160,8 +160,8 @@ class EngineManager(manager.Manager):
                              **common_params)
 
         response = stack.validate()
-        if response['Description'] != 'Successfully validated':
-            return response
+        if response:
+            return {'Description': response}
 
         stack_id = stack.store()
 
@@ -203,8 +203,8 @@ class EngineManager(manager.Manager):
                                      template_params, **common_params)
 
         response = updated_stack.validate()
-        if response['Description'] != 'Successfully validated':
-            return response
+        if response:
+            return {'Description': response}
 
         # Spawn a greenthread to do the update, and register a
         # callback to remove the thread from stack_threads when done
@@ -239,17 +239,20 @@ class EngineManager(manager.Manager):
                 return {'Error':
                         'Every Resources object must contain a Type member.'}
 
-        parameters = []
-        for param_key, param in template.get('Parameters', {}).items():
-            parameters.append({
-                'NoEcho': param.get('NoEcho', 'false'),
-                'ParameterKey': param_key,
-                'Description': param.get('Description', '')
-            })
+        def describe_param(p):
+            description = {'NoEcho': 'false',
+                           'ParameterKey': p.name,
+                           'Description': p.description()}
+            if p.has_default():
+                description['DefaultValue'] = p.default()
+
+            return description
+
+        params = parser.Parameters(None, tmpl).map(describe_param)
 
         result = {
             'Description': template.get('Description', ''),
-            'Parameters': parameters,
+            'Parameters': params.values(),
         }
         return result
 
index dbefdc8397544dbe053ddd604153265181b394be..ecde0ea5fa567ae69cdff455ad2ed84e25d40d3f 100644 (file)
@@ -191,23 +191,7 @@ class Stack(object):
                 result = str(ex)
 
             if result:
-                err_str = 'Malformed Query Response %s' % result
-                response = {'Description': err_str,
-                            'Parameters': []}
-                return response
-
-        def describe_param(p):
-            return {'NoEcho': 'false',
-                    'ParameterKey': p.name,
-                    'Description': p.description(),
-                    'DefaultValue': p.default()}
-
-        params = self.parameters.map(describe_param)
-
-        response = {'Description': 'Successfully validated',
-                    'Parameters': params.values()}
-
-        return response
+                return 'Malformed Query Response %s' % result
 
     def state_set(self, new_status, reason):
         '''Update the stack state in the database'''
index cdb33afdd2f665294f67ef800fd6b11388d7617c..a095192c87cabd64c1e78d37975b10a50d3f9b3e 100644 (file)
@@ -162,7 +162,7 @@ class stackManagerCreateUpdateDeleteTest(unittest.TestCase):
                      stack.t, stack.parameters).AndReturn(stack)
 
         self.m.StubOutWithMock(stack, 'validate')
-        stack.validate().AndReturn({'Description': 'Successfully validated'})
+        stack.validate().AndReturn(None)
 
         self.m.StubOutWithMock(manager.greenpool, 'spawn')
         manager.greenpool.spawn(stack.create).AndReturn(DummyGreenThread())
@@ -195,7 +195,7 @@ class stackManagerCreateUpdateDeleteTest(unittest.TestCase):
                      stack.t, stack.parameters).AndReturn(stack)
 
         self.m.StubOutWithMock(stack, 'validate')
-        error = {'Description': 'fubar'}
+        error = 'fubar'
         stack.validate().AndReturn(error)
 
         self.m.StubOutWithMock(manager.greenpool, 'spawn')
@@ -204,7 +204,7 @@ class stackManagerCreateUpdateDeleteTest(unittest.TestCase):
 
         result = self.man.create_stack(self.ctx, stack_name,
                                        template, params, {})
-        self.assertEqual(result, error)
+        self.assertEqual(result, {'Description': error})
         self.m.VerifyAll()
 
     def test_stack_delete(self):
@@ -260,7 +260,7 @@ class stackManagerCreateUpdateDeleteTest(unittest.TestCase):
                      stack.t, stack.parameters).AndReturn(stack)
 
         self.m.StubOutWithMock(stack, 'validate')
-        stack.validate().AndReturn({'Description': 'Successfully validated'})
+        stack.validate().AndReturn(None)
 
         self.m.StubOutWithMock(manager.greenpool, 'spawn')
         manager.greenpool.spawn(old_stack.update, stack).AndReturn(
@@ -300,7 +300,7 @@ class stackManagerCreateUpdateDeleteTest(unittest.TestCase):
                      stack.t, stack.parameters).AndReturn(stack)
 
         self.m.StubOutWithMock(stack, 'validate')
-        error = {'Description': 'fubar'}
+        error = 'fubar'
         stack.validate().AndReturn(error)
 
         self.m.StubOutWithMock(manager.greenpool, 'spawn')
@@ -309,7 +309,7 @@ class stackManagerCreateUpdateDeleteTest(unittest.TestCase):
 
         result = self.man.update_stack(self.ctx, old_stack.identifier(),
                                        template, params, {})
-        self.assertEqual(result, error)
+        self.assertEqual(result, {'Description': error})
         self.m.VerifyAll()
 
     def test_stack_update_nonexist(self):