From b6e1c9d0c3b1e2cca37bce8bd46626782455f02a Mon Sep 17 00:00:00 2001 From: Ladislav Smola Date: Mon, 24 Mar 2014 14:21:58 +0100 Subject: [PATCH] Adding swift role back -swift role is now separated in upstream templates, so adding it to scaling -adding swift role back to initial data -merge.py now needs all templates and it decides based on parameters. Otherwise it doesn't work. Tuskar is currently broken because of this change in tripleo templates. So this fixes broken state. Change-Id: Icd62b94447b2d72616597d74fc8191a2d158c15c --- tools/initial_data.py | 4 ++ tuskar/heat/template_tools.py | 46 +++++++++++-------- tuskar/tests/heat/test_template_tools.py | 56 ++++++++++++++++++++++-- 3 files changed, 83 insertions(+), 23 deletions(-) diff --git a/tools/initial_data.py b/tools/initial_data.py index 794da24f..da5b4650 100644 --- a/tools/initial_data.py +++ b/tools/initial_data.py @@ -127,6 +127,10 @@ def generate_data(): name='Block Storage', description='block storage role', image_name='overcloud-cinder-volume') + create_overcloud_role(conn, base_url, + name='Object Storage', + description='object storage role', + image_name='overcloud-swift-storage') if __name__ == '__main__': diff --git a/tuskar/heat/template_tools.py b/tuskar/heat/template_tools.py index 7cd77f51..d7969e42 100644 --- a/tuskar/heat/template_tools.py +++ b/tuskar/heat/template_tools.py @@ -27,17 +27,21 @@ from tripleo_heat_merge import merge OVERCLOUD_CONTROL_ROLE = 'overcloud-control' OVERCLOUD_COMPUTE_ROLE = 'overcloud-compute' OVERCLOUD_VOLUME_ROLE = 'overcloud-cinder-volume' +OVERCLOUD_OBJECT_STORAGE_ROLE = 'overcloud-swift-storage' ROLES = {} -ROLES[OVERCLOUD_CONTROL_ROLE] = {'template_param': 'Control', - 'flavor_param': 'OvercloudControlFlavor', - 'file_name': None} -ROLES[OVERCLOUD_COMPUTE_ROLE] = {'template_param': 'NovaCompute', - 'flavor_param': 'OvercloudComputeFlavor', - 'file_name': 'overcloud-source.yaml'} -ROLES[OVERCLOUD_VOLUME_ROLE] = {'template_param': 'BlockStorage', - 'flavor_param': 'OvercloudBlockStorageFlavor', - 'file_name': 'block-storage.yaml'} +ROLES[OVERCLOUD_CONTROL_ROLE] = { + 'template_param': 'Control', + 'flavor_param': 'OvercloudControlFlavor', } +ROLES[OVERCLOUD_COMPUTE_ROLE] = { + 'template_param': 'NovaCompute', + 'flavor_param': 'OvercloudComputeFlavor', } +ROLES[OVERCLOUD_VOLUME_ROLE] = { + 'template_param': 'BlockStorage', + 'flavor_param': 'OvercloudBlockStorageFlavor', } +ROLES[OVERCLOUD_OBJECT_STORAGE_ROLE] = { + 'template_param': 'SwiftStorage', + 'flavor_param': 'OvercloudSwiftStorageFlavor', } def generate_scaling_params(overcloud_roles): @@ -52,7 +56,8 @@ def generate_scaling_params(overcloud_roles): :rtype: dict """ - scaling = {} + # Default values, merge.py needs also the 0 counts. + scaling = {'NovaCompute0': 0, 'SwiftStorage0': 0, 'BlockStorage0': 0, } for overcloud_role, count in overcloud_roles.items(): overcloud_role = overcloud_role.lower() @@ -82,16 +87,19 @@ def merge_templates(overcloud_roles): # TODO(dmatthews): Add exception handling to catch merge errors scale_params = generate_scaling_params(overcloud_roles) - overcloud_src_path = _join_template_path("overcloud-source.yaml") + overcloud_source = _join_template_path("overcloud-source.yaml") + block_storage = _join_template_path("block-storage.yaml") + swift_source = _join_template_path("swift-source.yaml") + swift_storage_source = _join_template_path("swift-storage-source.yaml") ssl_src_path = _join_template_path("ssl-source.yaml") - swift_src_path = _join_template_path("swift-source.yaml") - merge_paths = [overcloud_src_path, ssl_src_path, swift_src_path] - if OVERCLOUD_VOLUME_ROLE in overcloud_roles: - if overcloud_roles[OVERCLOUD_VOLUME_ROLE] > 0: - block_storage_path = _join_template_path( - ROLES[OVERCLOUD_VOLUME_ROLE]['file_name']) - merge_paths.append(block_storage_path) - template = merge.merge(merge_paths, None, None, + + # Adding all templates like in tripleo-heat-templates Makefile. + # They will be used by merge.py according to scale_params. So the + # decision what template to pick will not be here. + merged_paths = [overcloud_source, block_storage, swift_source, + swift_storage_source, ssl_src_path] + + template = merge.merge(merged_paths, None, None, included_template_dir=cfg.CONF.tht_local_dir, scaling=scale_params) diff --git a/tuskar/tests/heat/test_template_tools.py b/tuskar/tests/heat/test_template_tools.py index 61e6adaf..e1cef833 100644 --- a/tuskar/tests/heat/test_template_tools.py +++ b/tuskar/tests/heat/test_template_tools.py @@ -32,7 +32,7 @@ class TemplateToolsTests(unittest.TestCase): mock_parse_scaling.assert_called_once_with(['NovaCompute=12']) @mock.patch('tripleo_heat_merge.merge.merge') - def test_merge_templates(self, mock_merge): + def test_merge_templates_compute(self, mock_merge): # Setup overcloud_roles = {'controller': 1, 'overcloud-compute': 12} @@ -42,12 +42,60 @@ class TemplateToolsTests(unittest.TestCase): # Verify mock_merge.assert_called_once_with([ '/etc/tuskar/tripleo-heat-templates/overcloud-source.yaml', - '/etc/tuskar/tripleo-heat-templates/ssl-source.yaml', - '/etc/tuskar/tripleo-heat-templates/swift-source.yaml'], + '/etc/tuskar/tripleo-heat-templates/block-storage.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-source.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-storage-source.yaml', + '/etc/tuskar/tripleo-heat-templates/ssl-source.yaml', ], None, None, scaling={ - 'NovaCompute0': 12 + 'NovaCompute0': 12, 'SwiftStorage0': 0, 'BlockStorage0': 0, + }, + included_template_dir='/etc/tuskar/tripleo-heat-templates/' + ) + + @mock.patch('tripleo_heat_merge.merge.merge') + def test_merge_templates_block_storage(self, mock_merge): + # Setup + overcloud_roles = {'controller': 1, 'overcloud-cinder-volume': 12} + + # Test + template_tools.merge_templates(overcloud_roles) + + # Verify + mock_merge.assert_called_once_with([ + '/etc/tuskar/tripleo-heat-templates/overcloud-source.yaml', + '/etc/tuskar/tripleo-heat-templates/block-storage.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-source.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-storage-source.yaml', + '/etc/tuskar/tripleo-heat-templates/ssl-source.yaml', ], + None, + None, + scaling={ + 'NovaCompute0': 0, 'SwiftStorage0': 0, 'BlockStorage0': 12, + }, + included_template_dir='/etc/tuskar/tripleo-heat-templates/' + ) + + @mock.patch('tripleo_heat_merge.merge.merge') + def test_merge_templates_object_storage(self, mock_merge): + # Setup + overcloud_roles = {'controller': 1, 'overcloud-swift-storage': 12} + + # Test + template_tools.merge_templates(overcloud_roles) + + # Verify + mock_merge.assert_called_once_with([ + '/etc/tuskar/tripleo-heat-templates/overcloud-source.yaml', + '/etc/tuskar/tripleo-heat-templates/block-storage.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-source.yaml', + '/etc/tuskar/tripleo-heat-templates/swift-storage-source.yaml', + '/etc/tuskar/tripleo-heat-templates/ssl-source.yaml', ], + None, + None, + scaling={ + 'NovaCompute0': 0, 'SwiftStorage0': 12, 'BlockStorage0': 0, }, included_template_dir='/etc/tuskar/tripleo-heat-templates/' )