Add a new Hardware Manager for Mellanox NICs

This patch add Mellanox Manager to support Mellanox
InfiniBand NICs.

It adds client_id to the NetworkInterface for the
InfiniBand network interface.

The Mellanox Manager provides it own implementation of
get_interface_info. The mlnx get_interface_info generate
InfiniBand MAC and client-id from the InfiniBand network
interface address.

Closes-Bug: #1532534

Change-Id: I4e7f7649a1bdeaa3ee99b2748037b0f37fea486c
This commit is contained in:
Moshe Levi
2016-11-17 02:11:04 +02:00
committed by Szymon Borkowski
parent f9236682f7
commit 1bdcd4449f
8 changed files with 256 additions and 2 deletions

@@ -207,10 +207,11 @@ class BlockDevice(encoding.SerializableComparable):
class NetworkInterface(encoding.SerializableComparable):
serializable_fields = ('name', 'mac_address', 'switch_port_descr',
'switch_chassis_descr', 'ipv4_address',
'has_carrier', 'lldp', 'vendor', 'product')
'has_carrier', 'lldp', 'vendor', 'product',
'client_id')
def __init__(self, name, mac_addr, ipv4_address=None, has_carrier=True,
lldp=None, vendor=None, product=None):
lldp=None, vendor=None, product=None, client_id=None):
self.name = name
self.mac_address = mac_addr
self.ipv4_address = ipv4_address
@@ -218,6 +219,10 @@ class NetworkInterface(encoding.SerializableComparable):
self.lldp = lldp
self.vendor = vendor
self.product = product
# client_id is used for InfiniBand only. we calculate the DHCP
# client identifier Option to allow DHCP to work over InfiniBand.
# see https://tools.ietf.org/html/rfc4390
self.client_id = client_id
# TODO(sambetts) Remove these fields in Ocata, they have been
# superseded by self.lldp
self.switch_port_descr = None