Fix nosdn fdio scenario 75/55775/5
authorFeng Pan <fpan@redhat.com>
Sat, 14 Apr 2018 02:22:40 +0000 (22:22 -0400)
committerFeng Pan <fpan@redhat.com>
Tue, 17 Apr 2018 21:05:15 +0000 (17:05 -0400)
- 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 <fpan@redhat.com>
.gitignore
apex/deploy.py
apex/overcloud/deploy.py
apex/tests/test_apex_overcloud_deploy.py
build/rpm_specs/networking-vpp.spec
build/rpm_specs/opnfv-apex-common.spec
build/variables.sh
config/network/network_settings.yaml
config/network/network_settings_vpp.yaml [deleted file]

index f42d4c6..2789a24 100644 (file)
@@ -4,8 +4,8 @@
 /docs_output/
 /releng/
 apex.egg-info/
-/apex/tests/playbooks/*.retry
 coverage.xml
 nosetests.xml
-ci/*.log
 .*
+*.log
+*.retry
index 4facade..bc4d078 100644 (file)
@@ -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']
index eb7aefa..9ebad17 100644 (file)
@@ -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 " \
index 6898d36..ae2e8f0 100644 (file)
@@ -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)
index 75466f9..4c84f20 100644 (file)
@@ -2,7 +2,7 @@
 
 Summary:   OpenStack Networking for VPP
 Name:      python-networking-vpp
-Version:   18.01
+Version:   18.04
 Release:   %{release}%{?git}%{?dist}
 
 License:   Apache 2.0
index 5d1a59b..0d12e8d 100644 (file)
@@ -55,7 +55,6 @@ install docs/release/release-notes/release-notes.html %{buildroot}%{_docdir}/opn
 install config/deploy/deploy_settings.yaml %{buildroot}%{_docdir}/opnfv/deploy_settings.yaml.example
 install config/network/network_settings.yaml %{buildroot}%{_docdir}/opnfv/network_settings.yaml.example
 install config/network/network_settings_v6.yaml %{buildroot}%{_docdir}/opnfv/network_settings_v6.yaml.example
-install config/network/network_settings_vpp.yaml %{buildroot}%{_docdir}/opnfv/network_settings_vpp.yaml.example
 install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/inventory.yaml.example
 
 %files
@@ -113,7 +112,6 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/
 %{_sysconfdir}/opnfv-apex/network_settings.yaml
 %{_sysconfdir}/opnfv-apex/network_settings_vlans.yaml
 %{_sysconfdir}/opnfv-apex/network_settings_v6.yaml
-%{_sysconfdir}/opnfv-apex/network_settings_vpp.yaml
 %doc %{_docdir}/opnfv/LICENSE.rst
 %doc %{_docdir}/opnfv/installation-instructions.html
 %doc %{_docdir}/opnfv/release-notes.rst
@@ -121,10 +119,11 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/
 %doc %{_docdir}/opnfv/deploy_settings.yaml.example
 %doc %{_docdir}/opnfv/network_settings.yaml.example
 %doc %{_docdir}/opnfv/network_settings_v6.yaml.example
-%doc %{_docdir}/opnfv/network_settings_vpp.yaml.example
 %doc %{_docdir}/opnfv/inventory.yaml.example
 
 %changelog
+* Tue Apr 17 2018 Feng Pan <fpan@redhat.com> - 6.0-4
+  Removes network_settings_vpp.yaml
 * Tue Apr 03 2018 Tim Rozet <trozet@redhat.com> - 6.0-3
   Adds fetch logs
 * Fri Mar 09 2018 Tim Rozet <trozet@redhat.com> - 6.0-2
index 06570bb..f944c59 100644 (file)
@@ -44,10 +44,11 @@ kvmfornfv_kernel_rpm="kvmfornfv-4bfeded9-apex-kernel-4.4.50_rt62_centos.x86_64.r
 calipso_uri_base="https://git.opnfv.org/calipso/plain/app/install"
 calipso_script="calipso-installer.py"
 
-netvpp_repo="https://github.com/openstack/networking-vpp"
-netvpp_branch="18.01"
+#netvpp_repo="https://github.com/openstack/networking-vpp"
+netvpp_repo="https://github.com/fepan/networking-vpp"
+netvpp_branch="test-fdio-fix"
 netvpp_commit=$(git ls-remote ${netvpp_repo} ${netvpp_branch} | awk '{print substr($1,1,7)}')
-netvpp_pkg=python-networking-vpp-18.01-1.git${NETVPP_COMMIT}$(rpm -E %dist).noarch.rpm
+netvpp_pkg=python-networking-vpp-18.04-1.git${NETVPP_COMMIT}$(rpm -E %dist).noarch.rpm
 
 gluon_rpm=gluon-0.0.1-1_20170302.noarch.rpm
 
index c2d9bc9..a8ddca1 100644 (file)
@@ -181,6 +181,9 @@ networks:
         # Mapping for compute profile (nodes assigned as Compute nodes)
         compute:
           # Physical interface type (interface or bond)
+          # Note that this phys_type for external network will be changed
+          # to vpp_interface for odl_fdio scenarios and linux_bridge for
+          # nosdn_fdio scenarios.
           phys_type: ovs_bridge
           # VLAN tag to use with this NIC
           vlan: native
@@ -190,6 +193,9 @@ networks:
             - eth2
         # Mapping for controller profile (nodes assigned as Controller nodes)
         controller:
+          # Note that this phys_type for external network will be changed
+          # to vpp_interface for odl_fdio scenarios and linux_bridge for
+          # nosdn_fdio scenarios.
           phys_type: ovs_bridge
           vlan: native
           members:
diff --git a/config/network/network_settings_vpp.yaml b/config/network/network_settings_vpp.yaml
deleted file mode 100644 (file)
index a40158e..0000000
+++ /dev/null
@@ -1,318 +0,0 @@
----
-# This configuration file defines Network Environment for a
-# Baremetal Deployment of OPNFV. It contains default values
-# for 5 following networks:
-#
-# - admin
-# - tenant*
-# - external*
-# - storage*
-# - api*
-# *) optional networks
-#
-# Optional networks will be consolidated with the admin network
-# if not explicitly configured.
-#
-# See short description of the networks in the comments below.
-#
-# "admin" is the short name for Control Plane Network.
-# This network should be IPv4 even it is an IPv6 deployment
-# IPv6 does not have PXE boot support.
-# During OPNFV deployment it is used for node provisioning which will require
-# PXE booting as well as running a DHCP server on this network.  Be sure to
-# disable any other DHCP/TFTP server on this network.
-#
-# "tenant" is the network used for tenant traffic.
-#
-# "external" is the network which should have internet or external
-# connectivity.  External OpenStack networks will be configured to egress this
-# network.  There can be multiple external networks, but only one assigned as
-# "public" which OpenStack public API's will register.
-#
-# "storage" is the network for storage I/O.
-#
-# "api" is an optional network for splitting out OpenStack service API
-# communication.  This should be used for IPv6 deployments.
-
-
-# Meta data for the network configuration
-network-config-metadata:
-  title: LF-POD-1 Network config
-  version: 0.1
-  created: Mon Dec 28 2015
-  comment: None
-
-# DNS Settings
-dns-domain: opnfvlf.org
-dns-search: opnfvlf.org
-dns_nameservers:
-  - 8.8.8.8
-  - 8.8.4.4
-# NTP servers
-ntp:
-  - 0.se.pool.ntp.org
-  - 1.se.pool.ntp.org
-# Syslog server
-syslog:
-  server: 10.128.1.24
-  transport: 'tcp'
-
-# http(s) proxy settings added to /etc/environment of uc and oc nodes
-# http_proxy: http://proxy.server:8080
-# https_proxy: https://proxy.server:8081
-
-# Common network settings
-networks:
-  # Admin configuration (pxe and jumpstart)
-  admin:
-    enabled: true
-    # Network settings for the Installer VM on admin network
-    installer_vm:
-      # Indicates if this VM will be bridged to an interface, or to a bond
-      nic_type: interface
-      # Interfaces to bridge for installer VM (use multiple values for bond)
-      members:
-        - em1
-      # VLAN tag to use for this network on Installer VM, native means none
-      vlan: native
-      # IP to assign to Installer VM on this network
-      ip: 192.0.2.1
-    # Usable ip range for the overcloud node IPs (including VIPs)
-    # Last IP is used for host bridge (i.e. br-admin).
-    # If empty entire range is usable.
-    # Cannot overlap with dhcp_range or introspection_range.
-    overcloud_ip_range:
-      - 192.0.2.51
-      - 192.0.2.99
-    # Gateway (only needed when public_network is disabled)
-    gateway: 192.0.2.1
-    # Subnet in CIDR format 192.168.1.0/24
-    cidr: 192.0.2.0/24
-    # DHCP range for the admin network, automatically provisioned if empty
-    dhcp_range:
-      - 192.0.2.2
-      - 192.0.2.50
-    # Mapping of network configuration for Overcloud Nodes
-    nic_mapping:
-      # Mapping for compute profile (nodes assigned as Compute nodes)
-      compute:
-        # Physical interface type (interface or bond)
-        phys_type: interface
-        # Physical NIC members (Single value allowed for phys_type: interface)
-        members:
-          - eth0
-      # Mapping for controller profile (nodes assigned as Controller nodes)
-      controller:
-        phys_type: interface
-        members:
-          - eth0
-
-  # Tenant network configuration
-  tenant:
-    enabled: true
-    # Subnet in CIDR format 192.168.1.0/24
-    cidr: 11.0.0.0/24
-    # Tenant network MTU
-    mtu: 1500
-    # Tenant network Overlay segmentation ID range:
-    # VNI, VLAN-ID, etc.
-    overlay_id_range: 2,65535
-
-    # Tenant network segmentation type:
-    # vlan, vxlan, gre
-    segmentation_type: vxlan
-    # Mapping of network configuration for Overcloud Nodes
-    nic_mapping:
-      # Mapping for compute profile (nodes assigned as Compute nodes)
-      compute:
-        # Physical interface type (interface/bond)
-        phys_type: interface
-        # VLAN tag to use with this NIC
-        vlan: native
-        # Physical NIC members of this mapping
-        # Single value allowed for phys_type: interface
-        members:
-          # Note logical name like nic1 not valid for fdio deployment yet.
-          - eth1
-      # Mapping for controller profile (nodes assigned as Controller nodes)
-      controller:
-        # Physical interface type (interface/bond)
-        phys_type: interface
-        vlan: native
-        # Note: logicial names like nic1 are not valid for fdio deployment yet.
-        members:
-          - eth1
-
-  # Can contain 1 or more external networks
-  external:
-    - public:
-      enabled: true
-      # Public network MTU
-      mtu: 1500
-      # Network settings for the Installer VM on external network
-      # (note only valid on 'public' external network)
-      installer_vm:
-        # Indicates if this VM will be bridged to an interface, or to a bond
-        nic_type: interface
-        vlan: native
-        # Interfaces to bridge for installer VM (use multiple values for bond)
-        members:
-          - em1
-        # IP to assign to Installer VM on this network
-        ip: 192.168.37.1
-      cidr: 192.168.37.0/24
-      gateway: 192.168.37.1
-      # Range to allocate to floating IPs for the public network with Neutron
-      floating_ip_range:
-        - 192.168.37.200
-        - 192.168.37.220
-      # Usable ip range for the overcloud node IPs (including VIPs)
-      # Last IP will be used for host bridge (i.e. br-public).
-      # If empty entire range is usable.
-      # Cannot overlap with dhcp_range or introspection_range.
-      overcloud_ip_range:
-        - 192.168.37.10
-        - 192.168.37.199
-      # Mapping of network configuration for Overcloud Nodes
-      nic_mapping:
-        # Mapping for compute profile (nodes assigned as Compute nodes)
-        compute:
-          # Physical interface type (interface or bond)
-          phys_type: interface
-          # VLAN tag to use with this NIC
-          vlan: native
-          # Physical NIC members of this mapping
-          # Single value allowed for phys_type: interface
-          members:
-            - eth2
-        # Mapping for controller profile (nodes assigned as Controller nodes)
-        controller:
-          phys_type: interface
-          vlan: native
-          members:
-            - eth2
-      # External network to be created in OpenStack by Services tenant
-      external_overlay:
-        name: Public_internet
-        type: flat
-        gateway: 192.168.37.1
-    # another external network
-    # This is an example and not yet supported
-    - private_cloud:
-      enabled: false
-      mtu: 1500
-      # Network settings for the Installer VM on external network
-      # note only valid on 'public' external network
-      installer_vm:
-        # Indicates if this VM will be bridged to an interface, or to a bond
-        nic_type: interface
-        vlan: 101
-        # Interfaces to bridge for installer VM (use multiple values for bond)
-        members:
-          - em1
-        # IP to assign to Installer VM on this network
-        ip: 192.168.38.1
-      cidr: 192.168.38.0/24
-      gateway: 192.168.38.1
-      # Range to allocate to floating IPs for the public network with Neutron
-      floating_ip_range:
-        - 192.168.38.200
-        - 192.168.38.220
-      # Usable IP range for overcloud nodes (including VIPs)i
-      # usually this is a shared subnet.
-      # Cannot overlap with dhcp_range or introspection_range.
-      overcloud_ip_range:
-        - 192.168.38.10
-        - 192.168.38.199
-      # Mapping of network configuration for Overcloud Nodes
-      nic_mapping:
-        # Mapping for compute profile (nodes assigned as Compute nodes)
-        compute:
-          # Physical interface type (interface or bond)
-          phys_type: interface
-          # VLAN tag to use with this NIC
-          vlan: 101
-          # Physical NIC members of this mappingi
-          # Single value allowed for phys_type: interface
-          # Note: logical names like nic1 are not valid for fdio deployment yet.
-          members:
-            - eth3
-        # Mapping for controller profile (nodes assigned as Controller nodes)
-        controller:
-          phys_type: interface
-          vlan: 101
-          members:
-            - eth3
-      # External network to be created in OpenStack by Services tenant
-      external_overlay:
-        name: private_cloud
-        type: vlan
-        segmentation_id: 101
-        gateway: 192.168.38.1
-
-  # Storage network configuration
-  storage:
-    enabled: true
-    # Subnet in CIDR format
-    cidr: 12.0.0.0/24
-    # Storage network MTU
-    mtu: 1500
-    # Mapping of network configuration for Overcloud Nodes
-    nic_mapping:
-      # Mapping for compute profile (nodes assigned as Compute nodes)
-      compute:
-        # Physical interface type (interface or bond)
-        phys_type: interface
-        # VLAN tag to use with this NIC
-        vlan: native
-        # Physical NIC members of this mapping
-        # Single value allowed for phys_type: interface
-        members:
-          # Note logical names like nic1 not valid for fdio deployment yet.
-          - eth3
-      # Mapping for controller profile (nodes assigned as Controller nodes)
-      controller:
-        phys_type: interface
-        vlan: native
-        members:
-          - eth3
-
-  api:
-    # API network configuration
-    enabled: false
-    # Subnet in CIDR format
-    cidr: fd00:fd00:fd00:4000::/64
-    # VLAN tag to use for Overcloud hosts on this network
-    vlan: 13
-    # Api network MTU
-    mtu: 1500
-    # Mapping of network configuration for Overcloud Nodes
-    nic_mapping:
-      # Mapping for compute profile (nodes assigned as Compute nodes)
-      compute:
-        # Physical interface type (interface or bond)
-        phys_type: interface
-        # VLAN tag to use with this NIC
-        vlan: native
-        # Physical NIC members of this mapping
-        # Single value allowed for phys_type: interface
-        # Note logical names like nic1 not valid for fdio deployment yet.
-        members:
-          - eth4
-      # Mapping for controller profile (nodes assigned as Controller nodes)
-      controller:
-        phys_type: interface
-        vlan: native
-        members:
-          - eth4
-
-# Apex specific settings
-apex:
-  networks:
-    admin:
-      # Range used for introspection phase (examining nodes).
-      # This cannot overlap with dhcp_range or overcloud_ip_range.
-      # for the overcloud default external network
-      introspection_range:
-        - 192.0.2.100
-        - 192.0.2.120