Update the format of flame generate-stack-data
The heat client now requires the stack data and the stack template to be passed through the same file. This change affects the output of flameclient.Client.generate and replaces flameclient.Client.heat_template and flameclient.Client.stack_data_template by a single method : heat_template_and_data. Change-Id: I14f703cb09e9dc81c5fa89d60ed10c53c61ce004
This commit is contained in:
parent
73e1f7795e
commit
96aa0a2b14
|
@ -41,9 +41,4 @@ class Client(object):
|
|||
generate_stack_data
|
||||
)
|
||||
self.template_generator.extract_data()
|
||||
heat_template = self.template_generator.heat_template()
|
||||
if generate_stack_data:
|
||||
stack_data = self.template_generator.stack_data_template()
|
||||
else:
|
||||
stack_data = None
|
||||
return (heat_template, stack_data)
|
||||
return self.template_generator.heat_template_and_data()
|
||||
|
|
|
@ -95,7 +95,4 @@ def main(args=None):
|
|||
args.generate_stack_data)
|
||||
template.extract_data()
|
||||
print("### Heat Template ###")
|
||||
print(template.heat_template())
|
||||
if args.generate_stack_data:
|
||||
print("### Stack Data ###")
|
||||
print(template.stack_data_template())
|
||||
print(template.heat_template_and_data())
|
||||
|
|
|
@ -565,8 +565,13 @@ class TemplateGenerator(object):
|
|||
if self.generate_data:
|
||||
self.stack_data['resources'].update(resource.stack_resource)
|
||||
|
||||
def heat_template(self):
|
||||
return self.format_template(self.template)
|
||||
def heat_template_and_data(self):
|
||||
if self.generate_data:
|
||||
out = self.stack_data.copy()
|
||||
out['template'] = self.template
|
||||
out['environment'] = {"parameter_defaults": {},
|
||||
"parameters": {}}
|
||||
|
||||
def stack_data_template(self):
|
||||
return self.format_template(self.stack_data)
|
||||
return self.format_template(out)
|
||||
else:
|
||||
return self.format_template(self.template)
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
# SOFTWARE.
|
||||
|
||||
import mock
|
||||
import yaml
|
||||
|
||||
from flameclient import client as flame_client
|
||||
from flameclient import flame
|
||||
|
@ -290,6 +291,29 @@ class BaseTestCase(base.TestCase):
|
|||
self.assertEqual(expected_parameters, merged_parameters)
|
||||
|
||||
|
||||
class TemplateGenerationTest(BaseTestCase):
|
||||
def test_heat_template_and_data_with_data(self):
|
||||
generator = self.get_generator(False, False, False, True)
|
||||
generator.extract_data()
|
||||
out = yaml.load(generator.heat_template_and_data())
|
||||
mandatory_keys = set(('environment', 'template', 'resources',
|
||||
'action', 'status'))
|
||||
self.assertEqual(mandatory_keys, set(out.keys()))
|
||||
self.assertEqual(generator.template, out['template'])
|
||||
del out['environment']
|
||||
del out['template']
|
||||
self.assertEqual(generator.stack_data, out)
|
||||
|
||||
def test_heat_template_and_data_without_data(self):
|
||||
generator = self.get_generator(False, False, False, False)
|
||||
generator.extract_data()
|
||||
out = yaml.load(generator.heat_template_and_data())
|
||||
mandatory_keys = {'heat_template_version', 'resources', 'description',
|
||||
'parameters'}
|
||||
self.assertEqual(mandatory_keys, set(out.keys()))
|
||||
self.assertEqual(generator.template, out)
|
||||
|
||||
|
||||
class ClientTest(BaseTestCase):
|
||||
def setUp(self):
|
||||
super(ClientTest, self).setUp()
|
||||
|
@ -298,22 +322,20 @@ class ClientTest(BaseTestCase):
|
|||
|
||||
def test_generate(self):
|
||||
out = self.c.generate(False, False, False, True)
|
||||
self.assertIsInstance(out, tuple)
|
||||
self.assertIsNotNone(out[1])
|
||||
parsed_out = yaml.load(out)
|
||||
self.assertIsInstance(parsed_out, dict)
|
||||
|
||||
def test_generate_no_stack_data(self):
|
||||
out = self.c.generate(False, False, False, False)
|
||||
self.assertIsInstance(out, tuple)
|
||||
self.assertIsNotNone(out[0])
|
||||
self.assertIsNone(out[1])
|
||||
parsed_out = yaml.load(out)
|
||||
self.assertIsInstance(parsed_out, dict)
|
||||
self.assertNotIn('template', parsed_out.keys())
|
||||
|
||||
def test_generate_contains_extract(self):
|
||||
generator = self.get_generator(False, False, False, True)
|
||||
out = self.c.generate(False, False, False, True)
|
||||
generator.extract_data()
|
||||
stack_data = generator.stack_data_template()
|
||||
heat_template = generator.heat_template()
|
||||
self.assertEqual(out, (heat_template, stack_data))
|
||||
parsed_out = yaml.load(out)
|
||||
self.assertIsInstance(parsed_out, dict)
|
||||
self.assertIn('template', parsed_out.keys())
|
||||
|
||||
|
||||
class StackDataTests(BaseTestCase):
|
||||
|
|
Loading…
Reference in New Issue