From 5acf4e708c68147ef20c67f8d4648e6027c1e20d Mon Sep 17 00:00:00 2001 From: Feng Pan Date: Fri, 13 Apr 2018 22:22:40 -0400 Subject: Fix nosdn fdio scenario - Update networking-vpp to use master branch - Update THT vpp ml2 environment file with correct parameters - Update external network creation command to use 'externa' as provider network name. - Remove vpp network settings file as it's not used apex-tripleo-heat-templates: Ia25db8456f1ad6beb96c7b9b5f318b166ef4576a apex-puppet-tripleo: I231054a433eb7e598a6e24f6eaea02d476e776de Change-Id: I4a1f68c75ae3b7d2a5b347d05abf0d025e8b116b Signed-off-by: Feng Pan --- apex/deploy.py | 2 +- apex/overcloud/deploy.py | 18 ++++++++++---- apex/tests/test_apex_overcloud_deploy.py | 40 ++++++++++++++++++++++++++++---- 3 files changed, 51 insertions(+), 9 deletions(-) (limited to 'apex') diff --git a/apex/deploy.py b/apex/deploy.py index 4facadef..bc4d0789 100644 --- a/apex/deploy.py +++ b/apex/deploy.py @@ -515,7 +515,7 @@ def main(): 'UserKnownHostsFile=/dev/null -o ' \ 'LogLevel=error' deploy_vars['external_network_cmds'] = \ - oc_deploy.external_network_cmds(net_settings) + oc_deploy.external_network_cmds(net_settings, deploy_settings) # TODO(trozet): just parse all ds_opts as deploy vars one time deploy_vars['gluon'] = ds_opts['gluon'] deploy_vars['sdn'] = ds_opts['sdn_controller'] diff --git a/apex/overcloud/deploy.py b/apex/overcloud/deploy.py index eb7aefa1..9ebad177 100644 --- a/apex/overcloud/deploy.py +++ b/apex/overcloud/deploy.py @@ -555,8 +555,11 @@ def prep_env(ds, ns, inv, opnfv_env, net_env, tmp_dir): ns['domain_name'])) elif not ds_opts['sdn_controller'] and ds_opts['dataplane'] == 'fdio': if 'NeutronVPPAgentPhysnets' in line: - output_line = (" NeutronVPPAgentPhysnets: 'datacentre:{}'". - format(tenant_nic['Controller'])) + # VPP interface tap0 will be used for external network + # connectivity. + output_line = (" NeutronVPPAgentPhysnets: " + "'datacentre:{},external:tap0'" + .format(tenant_nic['Controller'])) elif ds_opts['sdn_controller'] == 'opendaylight' and ds_opts.get( 'dvr') is True: if 'OS::TripleO::Services::NeutronDhcpAgent' in line: @@ -760,12 +763,18 @@ def prep_sriov_env(ds, tmp_dir): print(line) -def external_network_cmds(ns): +def external_network_cmds(ns, ds): """ Generates external network openstack commands :param ns: network settings + :param ds: deploy settings :return: list of commands to configure external network """ + ds_opts = ds['deploy_options'] + external_physnet = 'datacentre' + if ds_opts['dataplane'] == 'fdio' and \ + ds_opts['sdn_controller'] != 'opendaylight': + external_physnet = 'external' if 'external' in ns.enabled_network_list: net_config = ns['networks']['external'][0] external = True @@ -786,7 +795,8 @@ def external_network_cmds(ns): 'compute']['vlan']) cmds.append("openstack network create external --project service " "--external --provider-network-type {} " - "--provider-physical-network datacentre".format(ext_type)) + "--provider-physical-network {}" + .format(ext_type, external_physnet)) # create subnet command cidr = net_config['cidr'] subnet_cmd = "openstack subnet create external-subnet --project " \ diff --git a/apex/tests/test_apex_overcloud_deploy.py b/apex/tests/test_apex_overcloud_deploy.py index 6898d36c..ae2e8f0b 100644 --- a/apex/tests/test_apex_overcloud_deploy.py +++ b/apex/tests/test_apex_overcloud_deploy.py @@ -404,7 +404,8 @@ class TestOvercloudDeploy(unittest.TestCase): # run test prep_env(ds, ns, inv, 'opnfv-env.yml', '/net-env.yml', '/tmp') output = out.getvalue().strip() - assert_in('NeutronVPPAgentPhysnets: \'datacentre:tenant_nic\'', + assert_in('NeutronVPPAgentPhysnets: ' + '\'datacentre:tenant_nic,external:tap0\'', output) assert_in('NeutronVPPAgentPhysnets', output) finally: @@ -562,6 +563,10 @@ class TestOvercloudDeploy(unittest.TestCase): assert_raises(ApexDeployException, prep_sriov_env, ds, '/tmp') def test_external_network_cmds(self): + ds = {'deploy_options': + {'sdn_controller': 'opendaylight', + 'dataplane': 'ovs'}} + cidr = MagicMock() cidr.version = 6 ns_dict = {'networks': @@ -573,13 +578,41 @@ class TestOvercloudDeploy(unittest.TestCase): ns = MagicMock() ns.enabled_network_list = ['external'] ns.__getitem__.side_effect = lambda i: ns_dict.get(i, MagicMock()) - cmds = ' '.join(external_network_cmds(ns)) + cmds = ' '.join(external_network_cmds(ns, ds)) assert_in('--external', cmds) assert_in('--allocation-pool start=0,end=1', cmds) assert_in('--gateway gw', cmds) assert_in('--network external', cmds) + assert_in('--provider-physical-network datacentre', cmds) + + def test_external_network_cmds_nosdn_fdio(self): + ds = {'deploy_options': + {'sdn_controller': False, + 'dataplane': 'fdio'}} + + cidr = MagicMock() + cidr.version = 6 + ns_dict = {'networks': + {'external': [{'floating_ip_range': (0, 1), + 'nic_mapping': + {'compute': {'vlan': 'native'}}, + 'gateway': 'gw', + 'cidr': cidr}]}} + ns = MagicMock() + ns.enabled_network_list = ['external'] + ns.__getitem__.side_effect = lambda i: ns_dict.get(i, MagicMock()) + cmds = ' '.join(external_network_cmds(ns, ds)) + assert_in('--external', cmds) + assert_in('--allocation-pool start=0,end=1', cmds) + assert_in('--gateway gw', cmds) + assert_in('--network external', cmds) + assert_in('--provider-physical-network external', cmds) def test_external_network_cmds_no_ext(self): + ds = {'deploy_options': + {'sdn_controller': 'opendaylight', + 'dataplane': 'ovs'}} + cidr = MagicMock() cidr.version = 6 ns_dict = {'apex': @@ -593,8 +626,7 @@ class TestOvercloudDeploy(unittest.TestCase): ns = MagicMock() ns.enabled_network_list = ['admin'] ns.__getitem__.side_effect = lambda i: ns_dict.get(i, MagicMock()) - external_network_cmds(ns) - cmds = ' '.join(external_network_cmds(ns)) + cmds = ' '.join(external_network_cmds(ns, ds)) assert_in('--external', cmds) assert_in('--allocation-pool start=0,end=1', cmds) assert_in('--network external', cmds) -- cgit 1.2.3-korg