diff options
Diffstat (limited to 'apex/tests/test_apex_overcloud_deploy.py')
-rw-r--r-- | apex/tests/test_apex_overcloud_deploy.py | 417 |
1 files changed, 325 insertions, 92 deletions
diff --git a/apex/tests/test_apex_overcloud_deploy.py b/apex/tests/test_apex_overcloud_deploy.py index f1db91ad..79dbf54b 100644 --- a/apex/tests/test_apex_overcloud_deploy.py +++ b/apex/tests/test_apex_overcloud_deploy.py @@ -7,6 +7,7 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +import mock import os import sys import unittest @@ -29,7 +30,7 @@ from apex.overcloud.deploy import prep_sriov_env from apex.overcloud.deploy import external_network_cmds from apex.overcloud.deploy import create_congress_cmds from apex.overcloud.deploy import SDN_FILE_MAP -from apex.overcloud.deploy import get_docker_sdn_file +from apex.overcloud.deploy import get_docker_sdn_files from nose.tools import ( assert_regexp_matches, @@ -104,7 +105,8 @@ class TestOvercloudDeploy(unittest.TestCase): 'containers': False, 'barometer': True, 'ceph': False, - 'sriov': False + 'sriov': False, + 'vim': 'openstack' }, 'global_params': MagicMock()} @@ -132,10 +134,12 @@ class TestOvercloudDeploy(unittest.TestCase): 'tacker': False, 'containers': True, 'barometer': False, + 'vpn': False, 'ceph': True, 'sdn_controller': 'opendaylight', 'sriov': False, - 'os_version': 'queens' + 'os_version': 'queens', + 'vim': 'openstack' }, 'global_params': MagicMock()} @@ -152,13 +156,12 @@ class TestOvercloudDeploy(unittest.TestCase): assert_in('--control-scale 3', result_cmd) assert_in('--compute-scale 2', result_cmd) assert_in('docker-images.yaml', result_cmd) - assert_in('sdn-images.yaml', result_cmd) assert_in('/usr/share/openstack-tripleo-heat-templates/environments' '/docker.yaml', result_cmd) assert_in('/usr/share/openstack-tripleo-heat-templates/environments/' 'storage-environment.yaml', result_cmd) assert_in('/usr/share/openstack-tripleo-heat-templates/environments' - '/services-docker/neutron-opendaylight.yaml', result_cmd) + '/services/neutron-opendaylight.yaml', result_cmd) ds['deploy_options']['os_version'] = 'master' result_cmd = create_deploy_cmd(ds, ns, inv, '/tmp', virt) assert_in('/usr/share/openstack-tripleo-heat-templates/environments' @@ -190,31 +193,18 @@ class TestOvercloudDeploy(unittest.TestCase): assert_not_in('enable_congress.yaml', result_cmd) assert_not_in('enable_barometer.yaml', result_cmd) - @patch('apex.overcloud.deploy.prep_sriov_env') - @patch('apex.overcloud.deploy.prep_storage_env') - @patch('apex.overcloud.deploy.build_sdn_env_list') - def test_create_deploy_cmd_raises(self, mock_sdn_list, mock_prep_storage, - mock_prep_sriov): - mock_sdn_list.return_value = [] - ds = {'deploy_options': MagicMock(), - 'global_params': MagicMock()} - ds['deploy_options'].__getitem__.side_effect = \ - lambda i: 'master' if i == 'os_version' else MagicMock() - ns = {} - inv = MagicMock() - inv.get_node_counts.return_value = (0, 0) - virt = False - assert_raises(ApexDeployException, create_deploy_cmd, - ds, ns, inv, '/tmp', virt) - + @patch('apex.builders.overcloud_builder.inject_opendaylight') @patch('apex.overcloud.deploy.virt_utils') @patch('apex.overcloud.deploy.shutil') - @patch('apex.overcloud.deploy.os.path') + @patch('apex.overcloud.deploy.os.path.isfile') @patch('builtins.open', mock_open()) - def test_prep_image(self, mock_os_path, mock_shutil, mock_virt_utils): + def test_prep_image(self, mock_is_file, mock_shutil, mock_virt_utils, + mock_inject_odl): + mock_is_file.return_value = True ds_opts = {'dataplane': 'fdio', 'sdn_controller': 'opendaylight', 'odl_version': 'master', + 'vpn': False, 'sriov': False} ds = {'deploy_options': MagicMock(), 'global_params': MagicMock()} @@ -223,14 +213,17 @@ class TestOvercloudDeploy(unittest.TestCase): ns = MagicMock() prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test') mock_virt_utils.virt_customize.assert_called() + mock_inject_odl.assert_called() @patch('apex.overcloud.deploy.virt_utils') @patch('apex.overcloud.deploy.shutil') - @patch('apex.overcloud.deploy.os.path') + @patch('apex.overcloud.deploy.os.path.isfile') @patch('builtins.open', mock_open()) - def test_prep_image_sdn_false(self, mock_os_path, mock_shutil, + def test_prep_image_sdn_false(self, mock_is_file, mock_shutil, mock_virt_utils): + mock_is_file.return_value = True ds_opts = {'dataplane': 'fdio', + 'vpn': False, 'sdn_controller': False} ds = {'deploy_options': MagicMock(), 'global_params': MagicMock()} @@ -240,14 +233,21 @@ class TestOvercloudDeploy(unittest.TestCase): prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test') mock_virt_utils.virt_customize.assert_called() + @patch('apex.builders.overcloud_builder.inject_ovs_nsh') + @patch('apex.overcloud.deploy.utils.fetch_upstream_and_unpack') + @patch('apex.builders.overcloud_builder.inject_opendaylight') @patch('apex.overcloud.deploy.virt_utils') @patch('apex.overcloud.deploy.shutil') - @patch('apex.overcloud.deploy.os.path') + @patch('apex.overcloud.deploy.os.path.isfile') @patch('builtins.open', mock_open()) - def test_prep_image_sdn_odl(self, mock_os_path, mock_shutil, - mock_virt_utils): + def test_prep_image_sdn_odl(self, mock_is_file, mock_shutil, + mock_virt_utils, mock_inject_odl, + mock_fetch, mock_ovs_nsh): + mock_is_file.return_value = True ds_opts = {'dataplane': 'ovs', 'sdn_controller': 'opendaylight', + 'vpn': False, + 'sfc': False, 'odl_version': con.DEFAULT_ODL_VERSION, 'odl_vpp_netvirt': True} ds = {'deploy_options': MagicMock(), @@ -259,16 +259,19 @@ class TestOvercloudDeploy(unittest.TestCase): ns = MagicMock() prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test') mock_virt_utils.virt_customize.assert_called() + mock_inject_odl.assert_called() + # mock_ovs_nsh.assert_called() @patch('apex.overcloud.deploy.c_builder') @patch('apex.overcloud.deploy.oc_builder') @patch('apex.overcloud.deploy.virt_utils') @patch('apex.overcloud.deploy.shutil') - @patch('apex.overcloud.deploy.os.path') + @patch('apex.overcloud.deploy.os.path.isfile') @patch('builtins.open', mock_open()) def test_prep_image_sdn_odl_upstream_containers_patches( - self, mock_os_path, mock_shutil, mock_virt_utils, + self, mock_is_file, mock_shutil, mock_virt_utils, mock_oc_builder, mock_c_builder): + mock_is_file.return_value = True ds_opts = {'dataplane': 'ovs', 'sdn_controller': 'opendaylight', 'odl_version': con.DEFAULT_ODL_VERSION, @@ -283,18 +286,50 @@ class TestOvercloudDeploy(unittest.TestCase): mock_c_builder.add_upstream_patches.return_value = ['nova-api'] patches = ['dummy_nova_patch'] rv = prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test', - docker_tag='latest', patches=patches, upstream=True) - mock_oc_builder.inject_opendaylight.assert_called + docker_tag='latest', patches=patches) + mock_oc_builder.inject_opendaylight.assert_called() mock_virt_utils.virt_customize.assert_called() - mock_c_builder.add_upstream_patches.assert_called + mock_c_builder.add_upstream_patches.assert_called() self.assertListEqual(sorted(rv), ['nova-api', 'opendaylight']) + @patch('apex.overcloud.deploy.c_builder') + @patch('apex.overcloud.deploy.oc_builder') + @patch('apex.overcloud.deploy.virt_utils') + @patch('apex.overcloud.deploy.shutil') + @patch('apex.overcloud.deploy.os.path.isfile') + @patch('builtins.open', mock_open()) + def test_prep_image_nosdn_upstream_containers_patches( + self, mock_is_file, mock_shutil, mock_virt_utils, + mock_oc_builder, mock_c_builder): + mock_is_file.return_value = True + ds_opts = {'dataplane': 'ovs', + 'sdn_controller': False, + 'odl_version': con.DEFAULT_ODL_VERSION, + 'odl_vpp_netvirt': False} + ds = {'deploy_options': MagicMock(), + 'global_params': MagicMock()} + ds['deploy_options'].__getitem__.side_effect = \ + lambda i: ds_opts.get(i, MagicMock()) + ds['deploy_options'].__contains__.side_effect = \ + lambda i: True if i in ds_opts else MagicMock() + ns = MagicMock() + mock_c_builder.add_upstream_patches.return_value = ['nova-api'] + patches = ['dummy_nova_patch'] + rv = prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test', + docker_tag='latest', patches=patches) + mock_virt_utils.virt_customize.assert_called() + mock_c_builder.add_upstream_patches.assert_called() + self.assertListEqual(sorted(rv), ['nova-api']) + + @patch('apex.overcloud.deploy.oc_builder') @patch('apex.overcloud.deploy.virt_utils') @patch('apex.overcloud.deploy.shutil') - @patch('apex.overcloud.deploy.os.path') + @patch('apex.overcloud.deploy.os.path.isfile') @patch('builtins.open', mock_open()) - def test_prep_image_sdn_odl_not_def(self, mock_os_path, - mock_shutil, mock_virt_utils): + def test_prep_image_sdn_odl_not_def(self, mock_is_file, + mock_shutil, mock_virt_utils, + mock_oc_builder): + mock_is_file.return_value = True ds_opts = {'dataplane': 'ovs', 'sdn_controller': 'opendaylight', 'odl_version': 'uncommon'} @@ -305,14 +340,19 @@ class TestOvercloudDeploy(unittest.TestCase): ns = MagicMock() prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test') mock_virt_utils.virt_customize.assert_called() + mock_oc_builder.inject_opendaylight.assert_called() + @patch('apex.builders.overcloud_builder.inject_ovs_nsh') @patch('apex.overcloud.deploy.virt_utils') @patch('apex.overcloud.deploy.shutil') - @patch('apex.overcloud.deploy.os.path') + @patch('apex.overcloud.deploy.os.path.isfile') @patch('builtins.open', mock_open()) - def test_prep_image_sdn_ovn(self, mock_os_path, mock_shutil, - mock_virt_utils): + def test_prep_image_sdn_ovn(self, mock_is_file, mock_shutil, + mock_virt_utils, mock_ovs_nsh): + mock_is_file.return_value = True ds_opts = {'dataplane': 'ovs', + 'vpn': False, + 'sfc': False, 'sdn_controller': 'ovn'} ds = {'deploy_options': MagicMock(), 'global_params': MagicMock()} @@ -321,6 +361,67 @@ class TestOvercloudDeploy(unittest.TestCase): ns = MagicMock() prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test') mock_virt_utils.virt_customize.assert_called() + # mock_ovs_nsh.assert_called() + + @patch('apex.builders.overcloud_builder.inject_ovs_nsh') + @patch('apex.overcloud.deploy.utils.fetch_upstream_and_unpack') + @patch('apex.builders.overcloud_builder.inject_quagga') + @patch('apex.builders.overcloud_builder.inject_opendaylight') + @patch('apex.overcloud.deploy.virt_utils') + @patch('apex.overcloud.deploy.shutil') + @patch('apex.overcloud.deploy.os.path.isfile') + @patch('builtins.open', mock_open()) + def test_prep_image_sdn_odl_vpn(self, mock_is_file, mock_shutil, + mock_virt_utils, mock_inject_odl, + mock_inject_quagga, mock_fetch, + mock_ovs_nsh): + mock_is_file.return_value = True + ds_opts = {'dataplane': 'ovs', + 'sdn_controller': 'opendaylight', + 'vpn': True, + 'sfc': False, + 'odl_version': con.DEFAULT_ODL_VERSION, + 'odl_vpp_netvirt': True} + ds = {'deploy_options': MagicMock(), + 'global_params': MagicMock()} + ds['deploy_options'].__getitem__.side_effect = \ + lambda i: ds_opts.get(i, MagicMock()) + ds['deploy_options'].__contains__.side_effect = \ + lambda i: True if i in ds_opts else MagicMock() + ns = MagicMock() + prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test') + mock_virt_utils.virt_customize.assert_called() + mock_inject_odl.assert_called() + mock_inject_quagga.assert_called() + # mock_ovs_nsh.assert_called() + + @patch('apex.builders.overcloud_builder.inject_ovs_nsh') + @patch('apex.builders.overcloud_builder.inject_opendaylight') + @patch('apex.overcloud.deploy.virt_utils') + @patch('apex.overcloud.deploy.shutil') + @patch('apex.overcloud.deploy.os.path.isfile') + @patch('builtins.open', mock_open()) + def test_prep_image_sdn_odl_sfc(self, mock_is_file, mock_shutil, + mock_virt_utils, mock_inject_odl, + mock_inject_ovs_nsh): + mock_is_file.return_value = True + ds_opts = {'dataplane': 'ovs', + 'sdn_controller': 'opendaylight', + 'vpn': False, + 'sfc': True, + 'odl_version': con.DEFAULT_ODL_VERSION, + 'odl_vpp_netvirt': True} + ds = {'deploy_options': MagicMock(), + 'global_params': MagicMock()} + ds['deploy_options'].__getitem__.side_effect = \ + lambda i: ds_opts.get(i, MagicMock()) + ds['deploy_options'].__contains__.side_effect = \ + lambda i: True if i in ds_opts else MagicMock() + ns = MagicMock() + prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test') + mock_virt_utils.virt_customize.assert_called() + mock_inject_odl.assert_called() + # mock_inject_ovs_nsh.assert_called() @patch('apex.overcloud.deploy.os.path.isfile') def test_prep_image_no_image(self, mock_isfile): @@ -333,16 +434,24 @@ class TestOvercloudDeploy(unittest.TestCase): assert_in('-----BEGIN PRIVATE KEY-----', priv) assert_in('ssh-rsa', pub) + @patch('apex.overcloud.deploy.yaml') @patch('apex.overcloud.deploy.fileinput') @patch('apex.overcloud.deploy.shutil') - def test_prep_env(self, mock_shutil, mock_fileinput): + @patch('builtins.open', mock_open()) + def test_prep_env(self, mock_shutil, mock_fileinput, mock_yaml): mock_fileinput.input.return_value = \ ['CloudDomain', 'replace_private_key', 'replace_public_key', 'opendaylight::vpp_routing_node', 'ControllerExtraConfig', 'NovaComputeExtraConfig', 'ComputeKernelArgs', 'HostCpusList', 'ComputeExtraConfigPre', 'resource_registry', 'NovaSchedulerDefaultFilters'] - ds = {'deploy_options': + mock_yaml.safe_load.return_value = { + 'parameter_defaults': { + 'ControllerServices': [1, 2, 3], + 'ComputeServices': [3, 4, 5] + }} + ds = {'global_params': {'ha_enabled': False}, + 'deploy_options': {'sdn_controller': 'opendaylight', 'odl_vpp_routing_node': 'test', 'dataplane': 'ovs_dpdk', @@ -352,24 +461,28 @@ class TestOvercloudDeploy(unittest.TestCase): 'ovs': {'dpdk_cores': 'test'}, 'kernel': {'test': 'test'}}, 'Controller': {'vpp': 'test'}}}} - ns = {'domain_name': 'test.domain', - 'networks': - {'tenant': - {'nic_mapping': {'controller': - {'members': ['tenant_nic']}, - 'compute': - {'members': ['tenant_nic']}}}, - 'external': - [{'nic_mapping': {'controller': - {'members': ['ext_nic']}, - 'compute': - {'members': ['ext_nic']}}}]}} - inv = None + ns_dict = {'domain_name': 'test.domain', + 'networks': + {'tenant': + {'nic_mapping': {'controller': + {'members': ['tenant_nic']}, + 'compute': + {'members': ['tenant_nic']}}}, + 'external': + [{'nic_mapping': {'controller': + {'members': ['ext_nic']}, + 'compute': + {'members': ['ext_nic']}}}]}} + inv = MagicMock() + inv.get_node_counts.return_value = (1, 0) try: # Swap stdout saved_stdout = sys.stdout out = StringIO() sys.stdout = out + ns = MagicMock() + ns.enabled_network_list = ['external', 'tenant'] + ns.__getitem__.side_effect = lambda i: ns_dict.get(i, MagicMock()) # run test prep_env(ds, ns, inv, 'opnfv-env.yml', '/net-env.yml', '/tmp') output = out.getvalue().strip() @@ -377,39 +490,51 @@ class TestOvercloudDeploy(unittest.TestCase): assert_in('ssh-rsa', output) assert_in('ComputeKernelArgs: \'test=test \'', output) assert_in('fdio::vpp_cpu_main_core: \'test\'', output) + mock_yaml.safe_dump.assert_called_with( + {'parameter_defaults': { + 'ControllerServices': [1, 2, 3, 4, 5], + }}, + mock.ANY, default_flow_style=False + ) finally: # put stdout back sys.stdout = saved_stdout @patch('apex.overcloud.deploy.fileinput') @patch('apex.overcloud.deploy.shutil') + @patch('builtins.open', mock_open()) def test_prep_env_round_two(self, mock_shutil, mock_fileinput): mock_fileinput.input.return_value = \ ['NeutronVPPAgentPhysnets'] - ds = {'deploy_options': + ds = {'global_params': {'ha_enabled': False}, + 'deploy_options': {'sdn_controller': False, 'dataplane': 'fdio', 'sriov': 'xxx', 'performance': {'Compute': {}, 'Controller': {}}}} - ns = {'domain_name': 'test.domain', - 'networks': - {'tenant': - {'nic_mapping': {'controller': - {'members': ['tenant_nic']}, - 'compute': - {'members': ['tenant_nic']}}}, - 'external': - [{'nic_mapping': {'controller': - {'members': ['ext_nic']}, - 'compute': - {'members': ['ext_nic']}}}]}} - inv = None + ns_dict = {'domain_name': 'test.domain', + 'networks': + {'tenant': + {'nic_mapping': {'controller': + {'members': ['tenant_nic']}, + 'compute': + {'members': ['tenant_nic']}}}, + 'external': + [{'nic_mapping': {'controller': + {'members': ['ext_nic']}, + 'compute': + {'members': ['ext_nic']}}}]}} + inv = MagicMock() + inv.get_node_counts.return_value = (3, 2) try: # Swap stdout saved_stdout = sys.stdout out = StringIO() sys.stdout = out + ns = MagicMock() + ns.enabled_network_list = ['external', 'tenant'] + ns.__getitem__.side_effect = lambda i: ns_dict.get(i, MagicMock()) # run test prep_env(ds, ns, inv, 'opnfv-env.yml', '/net-env.yml', '/tmp') output = out.getvalue().strip() @@ -423,27 +548,29 @@ class TestOvercloudDeploy(unittest.TestCase): @patch('apex.overcloud.deploy.fileinput') @patch('apex.overcloud.deploy.shutil') + @patch('builtins.open', mock_open()) def test_prep_env_round_three(self, mock_shutil, mock_fileinput): mock_fileinput.input.return_value = \ ['OS::TripleO::Services::NeutronDhcpAgent', 'NeutronDhcpAgentsPerNetwork', 'ComputeServices'] - ds = {'deploy_options': + ds = {'global_params': {'ha_enabled': False}, + 'deploy_options': {'sdn_controller': 'opendaylight', 'dataplane': 'fdio', 'sriov': 'xxx', 'dvr': True}} - ns = {'domain_name': 'test.domain', - 'networks': - {'tenant': - {'nic_mapping': {'controller': - {'members': ['tenant_nic']}, - 'compute': - {'members': ['tenant_nic']}}}, - 'external': - [{'nic_mapping': {'controller': - {'members': ['ext_nic']}, - 'compute': - {'members': ['ext_nic']}}}]}} + ns_dict = {'domain_name': 'test.domain', + 'networks': + {'tenant': + {'nic_mapping': {'controller': + {'members': ['tenant_nic']}, + 'compute': + {'members': ['tenant_nic']}}}, + 'external': + [{'nic_mapping': {'controller': + {'members': ['ext_nic']}, + 'compute': + {'members': ['ext_nic']}}}]}} inv = MagicMock() inv.get_node_counts.return_value = (3, 2) try: @@ -451,6 +578,9 @@ class TestOvercloudDeploy(unittest.TestCase): saved_stdout = sys.stdout out = StringIO() sys.stdout = out + ns = MagicMock() + ns.enabled_network_list = ['external', 'tenant'] + ns.__getitem__.side_effect = lambda i: ns_dict.get(i, MagicMock()) # run test prep_env(ds, ns, inv, 'opnfv-env.yml', '/net-env.yml', '/tmp') output = out.getvalue().strip() @@ -459,6 +589,111 @@ class TestOvercloudDeploy(unittest.TestCase): # put stdout back sys.stdout = saved_stdout + @patch('apex.overcloud.deploy.fileinput') + @patch('apex.overcloud.deploy.shutil') + @patch('builtins.open', mock_open()) + def test_prep_env_tenant_vlan(self, mock_shutil, mock_fileinput): + mock_fileinput.input.return_value = \ + ['NeutronNetworkVLANRanges', + 'NeutronNetworkType', 'NeutronBridgeMappings'] + ds = {'global_params': {'ha_enabled': False}, + 'deploy_options': + {'sdn_controller': False, + 'dataplane': 'ovs', + 'sriov': 'xxx', + 'dvr': True}} + ns_dict = {'domain_name': 'test.domain', + 'networks': + {'tenant': + {'nic_mapping': {'controller': + {'members': ['tenant_nic']}, + 'compute': + {'members': ['tenant_nic']}}, + 'segmentation_type': 'vlan', + 'overlay_id_range': 'vlan:500:600' + }, + 'external': + [{'nic_mapping': {'controller': + {'members': ['ext_nic']}, + 'compute': + {'members': ['ext_nic']}}}]}} + inv = MagicMock() + inv.get_node_counts.return_value = (3, 2) + try: + # Swap stdout + saved_stdout = sys.stdout + out = StringIO() + sys.stdout = out + ns = MagicMock() + ns.enabled_network_list = ['external', 'tenant'] + ns.__getitem__.side_effect = lambda i: ns_dict.get(i, MagicMock()) + # run test + prep_env(ds, ns, inv, 'opnfv-env.yml', '/net-env.yml', '/tmp') + output = out.getvalue().strip() + assert_in('NeutronNetworkVLANRanges: ' + 'vlan:500:600,datacentre:1:1000', output) + assert_in('NeutronNetworkType: vlan', output) + assert_in('NeutronBridgeMappings: ' + 'vlan:br-vlan,datacentre:br-ex', output) + assert_not_in('OpenDaylightProviderMappings', output) + finally: + # put stdout back + sys.stdout = saved_stdout + + @patch('apex.overcloud.deploy.fileinput') + @patch('apex.overcloud.deploy.shutil') + @patch('builtins.open', mock_open()) + def test_prep_env_tenant_vlan_odl(self, mock_shutil, mock_fileinput): + mock_fileinput.input.return_value = \ + ['NeutronNetworkVLANRanges', + 'NeutronNetworkType', + 'NeutronBridgeMappings', + 'OpenDaylightProviderMappings'] + ds = {'global_params': {'ha_enabled': False}, + 'deploy_options': + {'sdn_controller': 'opendaylight', + 'dataplane': 'ovs', + 'sriov': 'xxx', + 'dvr': True}} + ns_dict = {'domain_name': 'test.domain', + 'networks': + {'tenant': + {'nic_mapping': {'controller': + {'members': ['tenant_nic']}, + 'compute': + {'members': ['tenant_nic']}}, + 'segmentation_type': 'vlan', + 'overlay_id_range': 'vlan:500:600' + }, + 'external': + [{'nic_mapping': {'controller': + {'members': ['ext_nic']}, + 'compute': + {'members': ['ext_nic']}}}]}} + inv = MagicMock() + inv.get_node_counts.return_value = (3, 2) + try: + # Swap stdout + saved_stdout = sys.stdout + out = StringIO() + sys.stdout = out + ns = MagicMock() + ns.enabled_network_list = ['external', 'tenant'] + ns.__getitem__.side_effect = lambda i: ns_dict.get(i, MagicMock()) + # run test + prep_env(ds, ns, inv, 'opnfv-env.yml', '/net-env.yml', '/tmp') + output = out.getvalue().strip() + assert_in('NeutronNetworkVLANRanges: ' + 'vlan:500:600,datacentre:1:1000', output) + assert_in('NeutronNetworkType: vlan', output) + assert_in('NeutronBridgeMappings: ' + 'vlan:br-vlan,datacentre:br-ex', output) + assert_in('OpenDaylightProviderMappings: ' + 'vlan:br-vlan,datacentre:br-ex', output) + finally: + # put stdout back + sys.stdout = saved_stdout + def test_generate_ceph_key(self): assert_equal(len(generate_ceph_key()), 40) @@ -496,9 +731,6 @@ class TestOvercloudDeploy(unittest.TestCase): } prep_storage_env(ds, ns, virtual=True, tmp_dir='/tmp') ceph_params = { - 'DockerCephDaemonImage': - '192.0.2.1:8787/ceph/daemon:tag-build-master-luminous-centos' - '-7', 'CephPoolDefaultSize': 2, 'CephAnsibleExtraConfig': { 'centos_package_dependencies': [], @@ -650,19 +882,20 @@ class TestOvercloudDeploy(unittest.TestCase): mock_parsers.return_value.__getitem__.side_effect = KeyError() assert_raises(KeyError, create_congress_cmds, 'overcloud_file') - def test_get_docker_sdn_file(self): + def test_get_docker_sdn_files(self): ds_opts = {'ha_enabled': True, 'congress': True, 'tacker': True, 'containers': False, 'barometer': True, 'ceph': False, + 'vpn': True, 'sdn_controller': 'opendaylight', 'os_version': 'queens' } - output = get_docker_sdn_file(ds_opts) - self.assertEqual(output, - ('/usr/share/openstack-tripleo-heat-templates' - '/environments/services-docker/neutron-opendaylight' - '.yaml') - ) + output = get_docker_sdn_files(ds_opts) + compare = ['/usr/share/openstack-tripleo-heat-templates/' + 'environments/services/neutron-opendaylight.yaml', + '/usr/share/openstack-tripleo-heat-templates/environments' + '/services/neutron-bgpvpn-opendaylight.yaml'] + self.assertEqual(output, compare) |