summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Kraft <george.kraft@calxeda.com>2013-07-17 17:55:31 -0500
committerGeorge Kraft <george.kraft@calxeda.com>2013-07-22 14:14:44 -0500
commitb702cc5a1e9ebf8142d6301f3d5c7457f07ed9cb (patch)
tree69e4043928fe72b440ad313ebd9c1ff9fad15588
parentba5efd8df0d744b2cf27020d21b2219f100ccc57 (diff)
downloadcxmanage-b702cc5a1e9ebf8142d6301f3d5c7457f07ed9cb.tar.gz
SW-2207: Fabric: Add methods for macaddr_base and macaddr_mask
And unit tests!
-rw-r--r--cxmanage_api/fabric.py48
-rw-r--r--cxmanage_test/fabric_test.py48
-rw-r--r--cxmanage_test/node_test.py14
3 files changed, 106 insertions, 4 deletions
diff --git a/cxmanage_api/fabric.py b/cxmanage_api/fabric.py
index 9f4dd76..d0d7a10 100644
--- a/cxmanage_api/fabric.py
+++ b/cxmanage_api/fabric.py
@@ -183,10 +183,6 @@ class Fabric(object):
3: ['fc:2f:40:88:b3:6c', 'fc:2f:40:88:b3:6d', 'fc:2f:40:88:b3:6e']
}
- :param async: Flag that determines if the command result (dictionary)
- is returned or a Task object (can get status, etc.).
- :type async: boolean
-
:return: The MAC addresses for each node.
:rtype: dictionary
@@ -778,6 +774,50 @@ class Fabric(object):
self.primary_node.bmc.fabric_rm_macaddr(nodeid=nodeid, iface=iface,
macaddr=macaddr)
+ def set_macaddr_base(self, macaddr):
+ """ Set a base MAC address for a custom range.
+
+ >>> fabric.set_macaddr_base("66:55:44:33:22:11")
+
+ :param macaddr: mac address base to use
+ :type macaddr: string
+
+ """
+ self.primary_node.bmc.fabric_config_set_macaddr_base(macaddr=macaddr)
+
+ def get_macaddr_base(self):
+ """ Get the base MAC address for custom ranges.
+
+ >>> fabric.get_macaddr_base()
+ '08:00:00:00:08:5c'
+
+ :return: mac address base
+ :rtype: string
+ """
+ return self.primary_node.bmc.fabric_config_get_macaddr_base()
+
+ def set_macaddr_mask(self, mask):
+ """ Set MAC address mask for a custom range.
+
+ >>> fabric.set_macaddr_mask("ff:ff:ff:ff:ff:00")
+
+ :param macaddr: mac address mask to use
+ :type macaddr: string
+
+ """
+ self.primary_node.bmc.fabric_config_set_macaddr_mask(mask=mask)
+
+ def get_macaddr_mask(self):
+ """ Get the MAC address mask for custom ranges.
+
+ >>> fabric.get_macaddr_mask()
+ '08:00:00:00:08:5c'
+
+ :return: mac address mask
+ :rtype: string
+ """
+ return self.primary_node.bmc.fabric_config_get_macaddr_mask()
+
def get_linkspeed_policy(self):
"""Get the global linkspeed policy for the fabric. In the partition
world this means the linkspeed for Configuration 0, Partition 0,
diff --git a/cxmanage_test/fabric_test.py b/cxmanage_test/fabric_test.py
index 0dd2593..9d6de38 100644
--- a/cxmanage_test/fabric_test.py
+++ b/cxmanage_test/fabric_test.py
@@ -359,6 +359,54 @@ class FabricTest(unittest.TestCase):
bmc = self.fabric.primary_node.bmc
self.assertIn ('fabric_rm_macaddr', bmc.executed)
+ def test_set_macaddr_base(self):
+ """Test the set_macaddr_base method"""
+ self.fabric.set_macaddr_base("00:11:22:33:44:55")
+ for node in self.fabric.nodes.values():
+ if node == self.fabric.primary_node:
+ self.assertEqual(
+ node.bmc.executed,
+ [("fabric_config_set_macaddr_base", "00:11:22:33:44:55")]
+ )
+ else:
+ self.assertEqual(node.bmc.executed, [])
+
+ def test_get_macaddr_base(self):
+ """Test the get_macaddr_base method"""
+ self.assertEqual(self.fabric.get_macaddr_base(), "00:00:00:00:00:00")
+ for node in self.fabric.nodes.values():
+ if node == self.fabric.primary_node:
+ self.assertEqual(
+ node.bmc.executed,
+ ["fabric_config_get_macaddr_base"]
+ )
+ else:
+ self.assertEqual(node.bmc.executed, [])
+
+ def test_set_macaddr_mask(self):
+ """Test the set_macaddr_mask method"""
+ self.fabric.set_macaddr_mask("00:11:22:33:44:55")
+ for node in self.fabric.nodes.values():
+ if node == self.fabric.primary_node:
+ self.assertEqual(
+ node.bmc.executed,
+ [("fabric_config_set_macaddr_mask", "00:11:22:33:44:55")]
+ )
+ else:
+ self.assertEqual(node.bmc.executed, [])
+
+ def test_get_macaddr_mask(self):
+ """Test the get_macaddr_mask method"""
+ self.assertEqual(self.fabric.get_macaddr_mask(), "00:00:00:00:00:00")
+ for node in self.fabric.nodes.values():
+ if node == self.fabric.primary_node:
+ self.assertEqual(
+ node.bmc.executed,
+ ["fabric_config_get_macaddr_mask"]
+ )
+ else:
+ self.assertEqual(node.bmc.executed, [])
+
class DummyNode(object):
""" Dummy node for the nodemanager tests """
def __init__(self, ip_address, username="admin", password="admin",
diff --git a/cxmanage_test/node_test.py b/cxmanage_test/node_test.py
index 4f843a7..b6f860b 100644
--- a/cxmanage_test/node_test.py
+++ b/cxmanage_test/node_test.py
@@ -847,6 +847,20 @@ class DummyBMC(LanBMC):
self.fabric_lu_factor = lu_factor
self.executed.append('fabric_config_set_link_users_factor')
+ def fabric_config_set_macaddr_base(self, macaddr):
+ self.executed.append(('fabric_config_set_macaddr_base', macaddr))
+
+ def fabric_config_get_macaddr_base(self):
+ self.executed.append('fabric_config_get_macaddr_base')
+ return "00:00:00:00:00:00"
+
+ def fabric_config_set_macaddr_mask(self, mask):
+ self.executed.append(('fabric_config_set_macaddr_mask', mask))
+
+ def fabric_config_get_macaddr_mask(self):
+ self.executed.append('fabric_config_get_macaddr_mask')
+ return "00:00:00:00:00:00"
+
def fabric_add_macaddr(self, nodeid=0, iface=0, macaddr=None):
self.executed.append('fabric_add_macaddr')