[node-patches] Change in ovirt-node[master]: [DRAFT] network: Add BondedNIC model
fabiand at fedoraproject.org
fabiand at fedoraproject.org
Fri Jun 14 15:04:13 UTC 2013
Fabian Deutsch has uploaded a new change for review.
Change subject: [DRAFT] network: Add BondedNIC model
......................................................................
[DRAFT] network: Add BondedNIC model
This model is used to provide a unified API to bonded NICs (slaves).
That analogous to what we do with bridged or tagged NICs.
Change-Id: Ic6aac336bf2fd9f7e08d6e7c3e39ebc5fa494f05
Signed-off-by: Fabian Deutsch <fabiand at fedoraproject.org>
---
M src/ovirt/node/utils/network.py
1 file changed, 62 insertions(+), 7 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-node refs/changes/25/15725/1
diff --git a/src/ovirt/node/utils/network.py b/src/ovirt/node/utils/network.py
index 420deb6..ddc9d42 100644
--- a/src/ovirt/node/utils/network.py
+++ b/src/ovirt/node/utils/network.py
@@ -330,10 +330,10 @@
bridge_nic = None
slave_nic = None
- def __init__(self, snic, bnic):
+ def __init__(self, snic):
super(BridgedNIC, self).__init__(snic.ifname)
self.slave_nic = snic
- self.bridge_nic = bnic
+ self.bridge_nic = NIC(snic.config.bridge)
self.config = self.bridge_nic.config
def exists(self):
@@ -379,6 +379,10 @@
parent_nic = None
def __init__(self, vnic):
+ """A unified API for tagged NICs
+ Args:
+ vnic: A NIC instance pointing to the tagged part of a device
+ """
parent_ifname, _ = TaggedNIC._parent_and_vlanid_from_name(vnic.ifname)
super(TaggedNIC, self).__init__(parent_ifname)
self.vlan_nic = vnic
@@ -435,6 +439,56 @@
return self.build_str(["ifname"], additional_pairs=pairs)
+class BondedNIC(NIC):
+ """A class to provide easy access to bonded NICs
+ """
+ master_nic = None
+ slave_nic = None
+
+ def __init__(self, snic):
+ """Handle snic like beeing a slave of a bond device
+ """
+ master_ifname, _ = snic.config.master
+ super(TaggedNIC, self).__init__(master_ifname)
+ self.slave_nic = snic
+ self.master_nic = NIC(master_ifname)
+
+ def exists(self):
+ return self.master_nic.exists()
+
+ def is_configured(self):
+ return self.master_nic.is_configured()
+
+ def has_link(self):
+ return self.master_nic.has_link()
+
+ def ipv4_address(self):
+ return self.master_nic.ipv4_address()
+
+ def ipv6_address(self):
+ return self.master_nic.ipv6_address()
+
+ def ip_addresses(self, families=["inet", "inet6"]):
+ return self.master_nic.ip_addresses(families=families)
+
+ def is_vlan(self):
+ return self.master_nic.is_vlan()
+
+ def has_vlans(self):
+ return self.master_nic.has_vlans()
+
+ def vlanids(self):
+ return self.master_nic.vlanids()
+
+ def identify(self):
+ self.slave_nic.identify()
+
+ def __str__(self):
+ pairs = {"slave": self.slave_nic.ifname,
+ "master": self.master_nic.ifname}
+ return self.build_str(["ifname"], additional_pairs=pairs)
+
+
class NodeNetwork(base.Base):
def all_ifnames(self):
return all_ifaces()
@@ -486,15 +540,16 @@
nic = NIC(ifname)
if nic.config.bridge and nic.config.vlan:
- nic = BridgedNIC(TaggedNIC(nic),
- NIC(nic.config.bridge))
+ nic = BridgedNIC(TaggedNIC(nic))
elif nic.config.bridge:
- nic = BridgedNIC(NIC(nic.ifname),
- NIC(nic.config.bridge))
+ nic = BridgedNIC(nic)
elif nic.config.vlan:
- nic = TaggedNIC(NIC(nic.ifname))
+ nic = TaggedNIC(nic)
+
+ elif nic.config.master:
+ nic = BondedNIC(nic)
return nic
--
To view, visit http://gerrit.ovirt.org/15725
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic6aac336bf2fd9f7e08d6e7c3e39ebc5fa494f05
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-node
Gerrit-Branch: master
Gerrit-Owner: Fabian Deutsch <fabiand at fedoraproject.org>
More information about the node-patches
mailing list