Signed-off-by: Giuseppe Scrivano <gscrivan@xxxxxxxxxx> --- tests/xmlparse-xml/network-multi-in.xml | 4 +++ tests/xmlparse-xml/network-multi-out.xml | 4 +++ tests/xmlparse.py | 9 ++++++ virtinst/network.py | 55 +++++++++++++++++++++++++++++++- 4 files changed, 71 insertions(+), 1 deletion(-) diff --git a/tests/xmlparse-xml/network-multi-in.xml b/tests/xmlparse-xml/network-multi-in.xml index f820cec..d06b607 100644 --- a/tests/xmlparse-xml/network-multi-in.xml +++ b/tests/xmlparse-xml/network-multi-in.xml @@ -40,4 +40,8 @@ <outbound average='128' peak='256' burst='256'/> </bandwidth> </portgroup> + <bandwidth> + <inbound average="1000" peak="5000" burst="5120"/> + <outbound average="1000" peak="5000" burst="5120"/> + </bandwidth> </network> diff --git a/tests/xmlparse-xml/network-multi-out.xml b/tests/xmlparse-xml/network-multi-out.xml index 3622430..4481195 100644 --- a/tests/xmlparse-xml/network-multi-out.xml +++ b/tests/xmlparse-xml/network-multi-out.xml @@ -42,6 +42,10 @@ <outbound average="128" peak="256" burst="256"/> </bandwidth> </portgroup> + <bandwidth> + <inbound average="3000" peak="4000" burst="5220"/> + <outbound average="2000" peak="3000" burst="5120"/> + </bandwidth> <mac address="52:54:00:69:eb:FF"/> <route family="ipv4" address="192.168.8.0" prefix="24" gateway="192.168.8.10"/> </network> diff --git a/tests/xmlparse.py b/tests/xmlparse.py index 0295d60..f16295e 100644 --- a/tests/xmlparse.py +++ b/tests/xmlparse.py @@ -1143,6 +1143,15 @@ class XMLParseTest(unittest.TestCase): check("mode", "nat", "route") check("dev", None, "eth22") + check = self._make_checker(net.bandwidth) + check("inbound_average", "1000", "3000") + check("inbound_peak", "5000", "4000") + check("inbound_burst", "5120", "5220") + check("inbound_floor", None, None) + check("outbound_average", "1000", "2000") + check("outbound_peak", "5000", "3000") + check("outbound_burst", "5120", "5120") + self.assertEquals(len(net.portgroups), 2) check = self._make_checker(net.portgroups[0]) check("name", "engineering", "foo") diff --git a/virtinst/network.py b/virtinst/network.py index c3baf63..2284ea4 100644 --- a/virtinst/network.py +++ b/virtinst/network.py @@ -82,6 +82,58 @@ class _NetworkForward(XMLBuilder): return Network.pretty_forward_desc(self.mode, self.dev) +class _NetworkBandwidth(XMLBuilder): + _XML_ROOT_NAME = "bandwidth" + + inbound_average = XMLProperty("./inbound/@average") + inbound_peak = XMLProperty("./inbound/@peak") + inbound_burst = XMLProperty("./inbound/@burst") + inbound_floor = XMLProperty("./inbound/@floor") + + outbound_average = XMLProperty("./outbound/@average") + outbound_peak = XMLProperty("./outbound/@peak") + outbound_burst = XMLProperty("./outbound/@burst") + + def is_inbound(self): + return bool(self.inbound_average or self.inbound_peak + or self.inbound_burst or self.inbound_floor) + + def is_outbound(self): + return bool(self.outbound_average or self.outbound_peak + or self.outbound_burst) + + def pretty_desc(self, inbound=True, outbound=True): + items_in = [(self.inbound_average, _("Average"), "KiB/s"), + (self.inbound_peak, _("Peak"), "KiB"), + (self.inbound_burst, _("Burst"), "KiB/s"), + (self.inbound_floor, _("Floor"), "KiB/s")] + + items_out = [(self.outbound_average, _("Average"), "KiB/s"), + (self.outbound_peak, _("Peak"), "KiB"), + (self.outbound_burst, _("Burst"), "KiB/s")] + + def stringify_items(items): + return ", ".join(["%s: %s %s" % (desc, val, unit) + for val, desc, unit in items if val]) + + ret = "" + show_name = inbound and outbound + + if inbound: + if show_name: + ret += _("Inbound: ") + ret += stringify_items(items_in) + + if outbound: + if ret: + ret += "\n" + if show_name: + ret += _("Outbound: ") + ret += stringify_items(items_out) + + return ret + + class _NetworkPortgroup(XMLBuilder): _XML_ROOT_NAME = "portgroup" @@ -161,7 +213,7 @@ class Network(XMLBuilder): _XML_ROOT_NAME = "network" _XML_PROP_ORDER = ["ipv6", "name", "uuid", "forward", "bridge", "stp", "delay", "domain_name", - "macaddr", "ips", "routes"] + "macaddr", "ips", "routes", "bandwidth"] ipv6 = XMLProperty("./@ipv6", is_yesno=True) name = XMLProperty("./name", validate_cb=_validate_name) @@ -182,6 +234,7 @@ class Network(XMLBuilder): portgroups = XMLChildProperty(_NetworkPortgroup) ips = XMLChildProperty(_NetworkIP) routes = XMLChildProperty(_NetworkRoute) + bandwidth = XMLChildProperty(_NetworkBandwidth, is_single=True) def add_ip(self): ip = _NetworkIP(self.conn) -- 1.9.3 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list