aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2016-10-05Merge "Open os-net-config for Ocata"Jenkins0-0/+0
2016-10-05Open os-net-config for OcataJohn Trowbridge0-0/+0
To avoid pushing an artificial alpha tag, following PBR semver keyword bumps major version. See http://docs.openstack.org/developer/pbr/#version Change-Id: I8b5e54b312fd530eea1d01e21227c71b8e18620d Sem-Ver: api-break
2016-09-27Add options attribute to NFVSwitchSarath Kumar6-29/+22
Adding options to NFVSwitch type bridge will give flexibility and avoid specific attributes like 'cpus' in the yaml file (which will now be moved into the options) Change-Id: I4d715b641c54de969b9195b1a4b16195b2d7e595
2016-09-21Merge "Add mac address to the DPDK mapping file"Jenkins2-18/+60
2016-09-21Merge "Fixed nic numbering issue of DPDK nics after the nic has bound"Jenkins2-18/+244
2016-09-20Add mac address to the DPDK mapping fileSaravanan KR2-18/+60
When using mapping file with mac address, mapping logic will try to fetch the mac address of the interface, which will fail. Storing the mac address also in the DPDK mapping file so that we can satisfy mapping logic. Closes-Bug: #1619330 Change-Id: I92ba7f589c8d848feb083f07c3f937b50aca388e
2016-09-20Fixed nic numbering issue of DPDK nics after the nic has boundSaravanan KR2-18/+244
* os-net-config is called multiple times during the deploy. Once the interface is bound to a driver, it will not be listed for ethtool to get the pci address, which will through exception. Handled this exception. * Stored the DPDK bound nic configs at '/var/lib/os-net-config/ dpdk_mappings.yaml' file to emulate the same nic numbering after the nic has been bound to the DPDK driver. Partial-Bug: #1619330 Change-Id: I6b1e45003f851f1fcf5b8730890c75331e8d0f8f
2016-09-02Raise NotImplementedError instead of NotImplementedJi-Wei2-17/+17
NotImplementedError is the name of the exception (https://docs.python.org/2/library/exceptions.html). NotImplemented is the name of a constant (https://docs.python.org/2/library/constants.html). >>> raise NotImplemented() Traceback (most recent call last): File "<pyshell#31>", line 1, in <module> raise NotImplemented() TypeError: 'NotImplementedType' object is not callable >>> raise NotImplementedError() Traceback (most recent call last): File "<pyshell#32>", line 1, in <module> raise NotImplementedError() NotImplementedError This patch fix it. Change-Id: I8b8b47de26b9bf688d9d27a4daa6d9910994ac4a Closes-Bug: #1339855
2016-08-29Cleanups and new unit test for IVSSarath Kumar3-31/+37
- refactor test_object unit-test for IVS to follow other object class tests - add new CLI unit test for IVS - cleanup comments from https://review.openstack.org/#/c/345599 Change-Id: I0c337b019ae90ee7b2f207ff9b5060ed67bf182f
2016-08-26Supporting numbered nics for DPDK Port and DPDK BondSaravanan KR7-19/+45
Modified the sample code to use numbered nics instead of physical device name and added test code for testing the numbered nic usecases. Implements: blueprint tripleo-ovs-dpdk Depends-On: If1c91402d2d393140dc1b4a678e68a1bcdbe81e4 Change-Id: Ifadb495be57fcef56a97250de0c52fd03f2dd817
2016-08-26Add support for OVS DPDK BondSaravanan KR8-1/+280
Add functionality to os-net-config to allow DPDK bonding of interfaces, and implement support for parameters to be passed by TripleO Heat Templates. Implements: blueprint tripleo-ovs-dpdk Depends-On: Id4a23ced28b92a642c180a35c55080e5f4e2e05d Change-Id: If1c91402d2d393140dc1b4a678e68a1bcdbe81e4
2016-08-26Merge "Add support for OVS DPDK Bridge and Port"Jenkins8-1/+325
2016-08-25Merge "Remove discover from test-requirements"Jenkins1-1/+0
2016-08-25Add support for OVS DPDK Bridge and PortSaravanan KR8-1/+325
Add support in os-net-config for DPDK ports and OVS user bridges, and implement parameters which will be set by the TripleO Heat Templates when using TripleO. Implements: blueprint tripleo-ovs-dpdk Change-Id: Id4a23ced28b92a642c180a35c55080e5f4e2e05d
2016-08-16Enhance and fix NIC mapping featureAlan Bishop5-65/+96
The original implementation supported a strictly numeric mapping scheme (e.g. nic1, nic2) that could misbehave if an active NIC was not listed in the user's mapping file. This change fixes the misbehavior, and enhances the feature by not requiring NIC aliases follow the numeric mapping scheme. This allows the user to choose meaningful names for the NIC aliases. NIC mapping now happens in two steps: 1) Process any user supplied mappings - NIC alias does not need to follow the numeric "nicN" scheme - Existing validation rules apply: mappings for inactive NICs are ignored (but logged), and duplicate mappings are rejected 2) Generate default mappings as needed - Only applies to active NICs that aren't already mapped - Follows the numeric scheme (nic1, nic2) using the NIC number based on the list of active NICs - No default mapping is assigned if another NIC is already using that numeric alias Change-Id: I6943623a51702349f6a7dcf2de8a8429078a3ab0 Closes-Bug: 1612723
2016-08-11Merge "Enable os-net-config to support and configure NFVSwitch"Jenkins8-0/+424
2016-08-09Fix Linux bond/slave ifup orderingDan Sneddon1-3/+3
The latest version of os-net-config is not reliably enabling bonding when there are no existing bonds on the system. This is due to an order-of-operations problem where it tries to bring up the bond before the slave interfaces. This can result in an error because the bonding module is not present. This change activates the bond only after the interfaces have been activated. This should ensure that the bonding module is loaded. Change-Id: I62e4b10a88168948ed59170285223fb4f8d8de88 Fixes-bug: 1611471
2016-08-02Enable os-net-config to support and configure NFVSwitchSarath Kumar8-0/+424
These changes are to generate /etc/sysconf/network-scripts/ifcfg-* and /etc/sysconfig/nfvswitch configuration files for nfvswitch and its interfaces. NFVSwitch is a virtual switch implementation based on DPDK for datacenter workloads with very high throughput needs. Change-Id: If02edb9c4c54c014f67290fe0c34e2fc73cb95bd
2016-07-25Add adapter teaming support using teamd for ifcfg-systemsDan Sneddon7-1/+223
This change adds support for Linux adapter teams using teamd to manage the bonds instead of the kernel bonding module. Adapter teams using teamd can act like bonds, but also support additional features and possibly more robust fault tolerance. This implementation is fairly straightforward, in order to maintain backward compatibility with templates made for Linux bonds. The only difference in the syntax between the two is type: team instead of type: linux_bond, and the bonding_options format is different. The configuration files for teams should contain the team options as a JSON string. The options that can be used are documented in the teamd.conf(5) man page. If an interface is marked as primary, the priority will be changed from default 0 to 100, making this interface the preferred one. In addition, the MAC address of the Team and all member interfaces will be set to that of the primary interface. At this time, there is no way to set the priority of link members individually, only the interface marked primary will have a non-default priority. This change has been tested on bare metal and worked for a team with two bonded interfaces using LACP. The team was part of an OVS bridge, and there was a VLAN interface on the team. Everything worked as expected. Unit tests are included and passing. Change-Id: If1d516ce8f9ada76375c3a52c5557d3f7348981a Implements: blueprint os-net-config-teaming
2016-07-25Merge "Add support for Infiniband interfaces"Jenkins7-0/+263
2016-07-22Remove discover from test-requirementsSwapnil Kulkarni (coolsvap)1-1/+0
It's only needed for python < 2.7 which is not supported Change-Id: Ic14fdc7c95ef5c270b13e73bbd57007eb1d258e8
2016-07-19Merge "Make os-net-config idempotent with Linux bonds and MAC mapping"Jenkins1-0/+7
2016-07-05Add support for Infiniband interfacesDan Sneddon7-0/+263
This patch adds support for Infiniband interfaces. The only difference between Inifiniband and regular interfaces at this time is that an interface with type "ib_interface" will have "TYPE=Infiniband" added to the ifcfg file. However, the Infiniband interface is implemented as a full new class, so in the future we can add script functions or additional config options to the Infiniband interface config if needed. Unit tests for both the object and the ifcfg implementation are included. This patch does not include an implementation for systems that use /etc/network/interfaces (Debian-based systems). Note that this change has not yet been tested on bare metal with Infiniband hardware. Fixes bug: https://bugzilla.redhat.com/show_bug.cgi?id=1326616 Change-Id: Iaeaca9cd71e2cea6147951d49aecc7458be4ca0b
2016-07-05Merge "Add support for OVS patch ports"Jenkins7-0/+160
2016-06-30Make os-net-config idempotent with Linux bonds and MAC mappingDan Sneddon1-0/+7
This small change fixes a serious bug in os-net-config which made mapping NICs by MAC address not idempotent if Linux bonds were used. The first time os-net-config runs, it sees the MAC address of each interface, then it sets up the bond. On subsequent runs, any non-primary interfaces have taken the MAC address of the primary interface in the bond. At this time, they all show the same MAC address. This causes the mapping to fail, and it appears that the system has fewer matching interfaces than it had before. The impact of this bug is that bonding doesn't work for anyone doing mapping by MAC address. This is known to be affecting installations with a particular 3rd-party Neutron plugin vendor. This change simply looks for the permanent hardware address under the bonding_slave directory, if it exists. Change-Id: I5b0087370f74ecc319d2285b0f9f5f3dd951dbc2
2016-06-14Add support for OVS patch portsJames Slagle7-0/+160
OVS patch ports are used to connect two OVS bridges so traffic can flow between them. This is generally useful for various cases. Specifically it could be used to connect the bridges created by TripleO networking configurations (br-ex, etc) to the bridge created by the multinode networking setup in infra's nodepool (br_pub). This allows the nodes in a multinode deployment to have connectivity across private subnets where such traffic is typically firewalled off in public clouds. Change-Id: I11404106cb3f53734f6fc9a35c22f905a0770245
2016-06-14Merge "Add some debugging output to ordered_active_nics"Jenkins1-2/+9
2016-06-10Merge "Add support for OVS tunnels"Jenkins5-1/+135
2016-05-23Add some debugging output to ordered_active_nicsJames Slagle1-2/+9
Occassionally I've found myself debugging os-net-config's behavior related to detecting active nics. This adds a little debugging output to help see what's going on in the ordered_active_nics function. Change-Id: If7ea010071d2253b29aaaabb242690ea5fbfb165
2016-04-22Merge "Add warning for no active nics"Jenkins2-0/+8
2016-04-13Add support for OVS tunnelsJames Slagle5-1/+135
Adds support for configuring OVS Tunnels via os-net-config. Tunnels are configured as members of ovs_bridge's where the type is set to ovs_tunnel. The object also supports setting OVS extra and options so that additional tunnel data can be defined, such as remote_ip. Change-Id: I31ac1cbe8a13247a1529c0f99a0aea5807888844
2016-04-12Add warning for no active nicsBen Nemec2-0/+8
When there are no active nics, strange errors can happen later in the process of applying the configuration, and it's often not obvious what caused them. Logging a warning should make it easier to track down such problems. Note that this should never happen legitimately in a TripleO environment since we always need to have at least one active nic to even get configuration to the system. However, it is a valid case for someone who might be applying a configuration with local access to a system, so it should be handled sanely. It's also helpful in case of future bugs in the active nic checking. Change-Id: Iaf6d4b1b215b70d61e0857e093a834702829e1b9 Related-Bug: 1569403
2016-04-12Normalize operstate value for interfacesBen Nemec1-2/+2
The previous check for an interface operstate only looked for the literal "UP" in caps, but in my environments I'm seeing operstate returned as "up" in lower-case, which causes the _is_active_nic check to fail incorrectly. Example: [root@overcloud-controller-0 heat-admin]# cat /sys/class/net/eth0/operstate up In this environment os-net-config is failing with the exception in the linked bug. Change-Id: I85c2d074ce43673c691523ca146ff7cdfdf1c7ca Closes-Bug: 1569403
2016-04-12Merge "Fix typos"Jenkins1-3/+3
2016-04-12Fix typosJames Slagle1-3/+3
Fixes a couple of small types in a docstring and exception message. Change-Id: Id6977ca50418f9fbdca2d1a26174637968b305a6
2016-04-11Merge "Use interface operstate to determine nic status"Jenkins1-4/+4
2016-04-11Merge "Bump hacking in test-requirements.txt"Jenkins5-15/+16
2016-04-07Use PEERDNS when no dns_servers or use_dhcp is providedGiulio Fidente2-0/+14
PEERDNS=no ensures resolv.conf is not modified by ifup/ifdown when restarting an interface. Closes-bug: #1567004 Change-Id: Idec15d4c1630638ce8362f9d95ae3c09bcae86a3
2016-04-06Bump hacking in test-requirements.txtDan Prince5-15/+16
Bumps the version of hacking to match that in global-requirements.txt. Change-Id: I7bb98dc773ce821b025d534f537f1a1704a50f9e Closes-bug: #1566463
2016-04-05Add MASTER=bond SLAVE=yes to linux bond interfacesDan Prince2-8/+13
When configuring a linux bond with interfaces we have a bug (due to a missing unit test) where the interfaces weren't being configured with MASTER=<bond_name> SLAVE=yes. This patch adds a unit test to check for the required configuration and cleans up the logic in impl_ifcfg.py to handle it correctly by simply checking for the linux_bond_name property which is already set for us via objects.py. See also: https://bugzilla.redhat.com/show_bug.cgi?id=1323717 Change-Id: Ic632c52265dcbbe6c0ace782e633a2030ad25e6f Closes-bug: 1566428
2016-04-05Use interface operstate to determine nic statusChristopher Brown1-4/+4
Fixes lp bug 1555669 Currently _is_active_nic performs multiple checks to see if a link is live. However some hardware such as Ethernet over USB devices fulfil this criteria. This causes tripleo deployments to fail if automatic interface naming is used. We can therefore use operstate to determine if the link is actually up. https://www.kernel.org/doc/Documentation/networking/operstates.txt This patch implements this. Implements: better link state detection Closes-Bug: #1555669 Change-Id: I0bdd0c987f4f177935df4f7cdcc70f4d99c988a5 Signed-off-by: Christopher Brown <snecklifter@gmail.com>
2016-03-25Merge "Fix order-of-operations bug in os-net-config restart_interfaces"Jenkins2-12/+57
2016-03-22Fix order-of-operations bug in os-net-config restart_interfacesDan Sneddon2-12/+57
The current order of operations of bringing up interfaces starts with the bridges, and restarts the members of the bridges. This works well when an OVS bond is part of an OVS bridge, but does not work well when Linux bonding is used with no bridges (such as in the case of the Nuage plugin, which creates the bridges outside of the ifcfg files). This change will ensure that Linux bonds are brought up first, then any bridges are brought up, interfaces are brought up next, and the VLAN interfacs are brought up last. This corrects a race condition where any VLAN which was brought up before the bond would not be active, and the VLAN would have to be brought up by hand. This change also fixes a logging issue where os-net-config would report that no changes were necessary when changes were made. Now, the logging messages indicating that "No changes were necessary" show up when no changes are required, instead of when changes are actually made. Change-Id: I1efee3dfd8e8cef01b054bb57a3085cc7eb60372
2016-03-22Merge "Use assertTrue/False instead of assertEqual(T/F)"Jenkins1-31/+31
2016-03-17Merge "py26 is no longer supported by Infra's CI"Jenkins1-2/+2
2016-03-17Merge "Fix hierarchy for Linux Bonds and Linux Bridges"Jenkins3-1/+21
2016-03-11Add ability to set IPv6 routes in os-net-config templatesDan Sneddon2-16/+96
This change adds the ability to write IPv6 routes to the system NIC configuration. In the ifcfg provider, IPv6 routes must be written to network-scripts/route6-<interface> rather than route-interface. This patch checks the next hop, and if it is an IPv6 address (assumed because of the presence of ":"), then the route will be written to route6-<interface>. This patch includes tests to confirm proper operation. Change-Id: I3563800c774a6082a896c7508f5a92e25418fe63
2016-03-11Fix hierarchy for Linux Bonds and Linux BridgesDan Sneddon3-1/+21
This change cleans up some of the Linux Bond and Linux Bridge logic that processes member interfaces and VLANs. One bug is fixed, where a VLAN might be assigned as a slave interface on a bond. Changes were made so that if VLANs are placed under a Linux Bond, the PHYSDEV is set to the bond, so the device: does not need to be specified in the config. This change ensures that if a bridge has a bond and VLANs as members, that the VLAN will be a member of the bridge and not the bond. Change-Id: Id329737f0032e781b111741086ded83f378297a7
2016-03-07Enable os_net_config to configure IVSxinwu7-0/+357
This change generates /etc/sysconf/network-scripts/ifcfg-* for ivs. It also generates /etc/sysconf/ivs configuration file for ivs. It supports only RedHat at this point. Indigo Virtual Switch (IVS, https://github.com/floodlight/ivs) is a virtual switch for Linux. It is compatible with the KVM hypervisor and leveraging the Open vSwitch kernel module for packet forwarding. There are three major differences between IVS and OVS: 1. Each node can have at most one ivs, name is not required. 2. Bond is not allowed to attach to an ivs. It is the SDN controller's job to dynamically form bonds on ivs. 3. IP address can only be statically assigned. Change-Id: I276d736794d123405de793c2a4eb2c1ee55a0fad
2016-03-02Merge "launchpad bug 1537330, fix _is_active_nic"Jenkins1-5/+3