From b812a05cdc90bbfa7453271c31cb9c5561c9197c Mon Sep 17 00:00:00 2001 From: catborise Date: Tue, 22 Jan 2019 16:50:49 +0300 Subject: [PATCH] Add modify dhcp range function. Change Current config to live+config --- vrtManager/network.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/vrtManager/network.py b/vrtManager/network.py index e48a185..83bcee3 100644 --- a/vrtManager/network.py +++ b/vrtManager/network.py @@ -2,9 +2,9 @@ from vrtManager import util from vrtManager.IPy import IP from vrtManager.connection import wvmConnect from xml.etree import ElementTree -from libvirt import VIR_NETWORK_SECTION_IP_DHCP_HOST +from libvirt import VIR_NETWORK_SECTION_IP_DHCP_HOST, VIR_NETWORK_SECTION_IP_DHCP_RANGE from libvirt import VIR_NETWORK_UPDATE_COMMAND_ADD_LAST, VIR_NETWORK_UPDATE_COMMAND_DELETE, VIR_NETWORK_UPDATE_COMMAND_MODIFY -from libvirt import VIR_NETWORK_UPDATE_AFFECT_LIVE, VIR_NETWORK_UPDATE_AFFECT_CONFIG, VIR_NETWORK_UPDATE_AFFECT_CURRENT +from libvirt import VIR_NETWORK_UPDATE_AFFECT_LIVE, VIR_NETWORK_UPDATE_AFFECT_CONFIG def network_size(net, dhcp=None): @@ -185,7 +185,7 @@ class wvmNetwork(wvmConnect): def modify_fixed_address(self, name, address, mac): util.validate_macaddr(mac) - new_xml = ''.format(mac, name, address) + new_xml = ''.format(mac, name, IP(address)) new_host_xml = ElementTree.fromstring(new_xml) tree = ElementTree.fromstring(self._XMLDesc(0)) @@ -197,16 +197,15 @@ class wvmNetwork(wvmConnect): host = h break if host is None: - self.update(VIR_NETWORK_UPDATE_COMMAND_ADD_LAST, VIR_NETWORK_SECTION_IP_DHCP_HOST, -1, new_xml, - VIR_NETWORK_UPDATE_AFFECT_CURRENT) + VIR_NETWORK_UPDATE_AFFECT_LIVE|VIR_NETWORK_UPDATE_AFFECT_CONFIG) else: # change the host if host.get('name') == new_host_xml.get('name') and host.get('ip') == new_host_xml.get('ip'): return False else: - res = self.update(VIR_NETWORK_UPDATE_COMMAND_MODIFY, VIR_NETWORK_SECTION_IP_DHCP_HOST, -1, new_xml, - VIR_NETWORK_UPDATE_AFFECT_CURRENT) + self.update(VIR_NETWORK_UPDATE_COMMAND_MODIFY, VIR_NETWORK_SECTION_IP_DHCP_HOST, -1, new_xml, + VIR_NETWORK_UPDATE_AFFECT_LIVE|VIR_NETWORK_UPDATE_AFFECT_CONFIG) def delete_fixed_address(self, mac): util.validate_macaddr(mac) @@ -217,5 +216,16 @@ class wvmNetwork(wvmConnect): if h.get('mac') == mac: new_xml = ''.format(mac, h.get('name'), h.get('ip')) self.update(VIR_NETWORK_UPDATE_COMMAND_DELETE, VIR_NETWORK_SECTION_IP_DHCP_HOST, -1, new_xml, - VIR_NETWORK_UPDATE_AFFECT_CURRENT) + VIR_NETWORK_UPDATE_AFFECT_LIVE|VIR_NETWORK_UPDATE_AFFECT_CONFIG) break + + def modify_dhcp_range(self, range_start, range_end): + if not self.is_active(): + new_range = ''.format(range_start, range_end) + tree = ElementTree.fromstring(self._XMLDesc(0)) + dhcp = tree.find("./ip/dhcp") + old_range = dhcp.find('range') + dhcp.remove(old_range) + dhcp.append(ElementTree.fromstring(new_range)) + + self.wvm.networkDefineXML(ElementTree.tostring(tree))