return IP(str(network) + "/" + netmaskStr) def get_ipv4_forward(self): xml = self.get_xml() fw = util.xpath(xml, "/network/forward/@mode") forwardDev = util.xpath(xml, "/network/forward/@dev") return [fw, forwardDev] def get_ipv4_dhcp_range(self): xml = self.get_xml() dhcpstart = util.xpath(xml, "/network/ip/dhcp/range[1]/@start") dhcpend = util.xpath(xml, "/network/ip/dhcp/range[1]/@end") if not dhcpstart or not dhcpend: return None return [IP(dhcpstart), IP(dhcpend)] def pretty_forward_mode(self): forward, forwardDev = self.get_ipv4_forward() return vmmNetwork.pretty_desc(forward, forwardDev) def can_pxe(self): xml = self.get_xml() forward = self.get_ipv4_forward()[0] if forward and forward != "nat": return True return bool(util.xpath(xml, "/network/ip/dhcp/bootp/@file")) vmmLibvirtObject.type_register(vmmNetwork)
def cb(): self.refresh_xml() self.update_volumes(refresh=True) self.emit("refreshed") self.pool.refresh(0) self.idle_add(cb) def update_volumes(self, refresh=False): if not self.is_active(): self._volumes = {} return vols = self.pool.listVolumes() new_vol_list = {} for volname in vols: if volname in self._volumes: new_vol_list[volname] = self._volumes[volname] if refresh: new_vol_list[volname].refresh_xml() else: new_vol_list[volname] = vmmStorageVolume( self.conn, self.pool.storageVolLookupByName(volname), volname) self._volumes = new_vol_list vmmLibvirtObject.type_register(vmmStoragePool) vmmStoragePool.signal_new(vmmStoragePool, "refreshed", [])
return self.vol.path() def get_pool(self): pobj = self.vol.storagePoolLookupByVolume() return self.conn.get_pool_by_name(pobj.name()) def delete(self): self.vol.delete(0) del(self.vol) def get_target_path(self): return util.xpath(self.get_xml(), "/volume/target/path") def get_format(self): return util.xpath(self.get_xml(), "/volume/target/format/@type") def get_allocation(self): return long(util.xpath(self.get_xml(), "/volume/allocation")) def get_capacity(self): return long(util.xpath(self.get_xml(), "/volume/capacity")) def get_pretty_capacity(self): return util.pretty_bytes(self.get_capacity()) def get_pretty_allocation(self): return util.pretty_bytes(self.get_allocation()) def get_type(self): return util.xpath(self.get_xml(), "/volume/format/@type") vmmLibvirtObject.type_register(vmmStorageVolume)
network = IP(gateway.int() & netmask.int()) return IP(str(network) + "/" + netmaskStr) def get_ipv4_forward(self): xml = self.get_xml() fw = util.xpath(xml, "/network/forward/@mode") forwardDev = util.xpath(xml, "/network/forward/@dev") return [fw, forwardDev] def get_ipv4_dhcp_range(self): xml = self.get_xml() dhcpstart = util.xpath(xml, "/network/ip/dhcp/range[1]/@start") dhcpend = util.xpath(xml, "/network/ip/dhcp/range[1]/@end") if not dhcpstart or not dhcpend: return None return [IP(dhcpstart), IP(dhcpend)] def pretty_forward_mode(self): forward, forwardDev = self.get_ipv4_forward() return vmmNetwork.pretty_desc(forward, forwardDev) def can_pxe(self): xml = self.get_xml() forward = self.get_ipv4_forward()[0] if forward and forward != "nat": return True return bool(util.xpath(xml, "/network/ip/dhcp/bootp/@file")) vmmLibvirtObject.type_register(vmmNetwork)
pobj = self.vol.storagePoolLookupByVolume() return self.conn.get_pool_by_name(pobj.name()) def delete(self): self.vol.delete(0) del (self.vol) def get_target_path(self): return util.xpath(self.get_xml(), "/volume/target/path") def get_format(self): return util.xpath(self.get_xml(), "/volume/target/format/@type") def get_allocation(self): return long(util.xpath(self.get_xml(), "/volume/allocation")) def get_capacity(self): return long(util.xpath(self.get_xml(), "/volume/capacity")) def get_pretty_capacity(self): return util.pretty_bytes(self.get_capacity()) def get_pretty_allocation(self): return util.pretty_bytes(self.get_allocation()) def get_type(self): return util.xpath(self.get_xml(), "/volume/format/@type") vmmLibvirtObject.type_register(vmmStorageVolume)
from virtManager.libvirtobject import vmmLibvirtObject class vmmNodeDevice(vmmLibvirtObject): def __init__(self, conn, backend, name): vmmLibvirtObject.__init__(self, conn) self.name = name self._backend = backend self._virtinst_obj = None self.get_virtinst_obj() def _XMLDesc(self, flags): return self._backend.XMLDesc(flags) def get_name(self): return self.name def is_active(self): return True def get_virtinst_obj(self): if not self._virtinst_obj: self._virtinst_obj = virtinst.NodeDeviceParser.parse( self._backend.XMLDesc(0)) return self._virtinst_obj vmmLibvirtObject.type_register(vmmNodeDevice)
node = node and node[0] or None ret = None if node: ret = node.serialize() return ret ret = self.xpath(func=protocol) if ret: ret = " %s\n" % ret return ret def _redefine(self, xml_func, *args): """ Helper function for altering a redefining VM xml @param xml_func: Function to alter the running XML. Takes the original XML as its first argument. @param args: Extra arguments to pass to xml_func """ origxml = self._xml_to_redefine() # Sanitize origxml to be similar to what we will get back origxml = util.xml_parse_wrapper(origxml, lambda d, c: d.serialize()) newxml = xml_func(origxml, *args) self._redefine_xml(newxml) vmmLibvirtObject.type_register(vmmInterface)
node = node and node[0] or None ret = None if node: ret = node.serialize() return ret ret = self.xpath(func=protocol) if ret: ret = " %s\n" % ret return ret def _redefine(self, xml_func, *args): """ Helper function for altering a redefining VM xml @param xml_func: Function to alter the running XML. Takes the original XML as its first argument. @param args: Extra arguments to pass to xml_func """ origxml = self._xml_to_redefine() # Sanitize origxml to be similar to what we will get back origxml = util.xml_parse_wrapper(origxml, lambda d, c: d.serialize()) newxml = xml_func(origxml, *args) self._redefine_xml(newxml) vmmLibvirtObject.type_register(vmmInterface)
class vmmNodeDevice(vmmLibvirtObject): def __init__(self, conn, backend, name): vmmLibvirtObject.__init__(self, conn) self.name = name self._backend = backend self._virtinst_obj = None self.get_virtinst_obj() def _XMLDesc(self, flags): return self._backend.XMLDesc(flags) def get_name(self): return self.name def is_active(self): return True def get_virtinst_obj(self): if not self._virtinst_obj: self._virtinst_obj = virtinst.NodeDeviceParser.parse( self._backend.XMLDesc(0)) return self._virtinst_obj vmmLibvirtObject.type_register(vmmNodeDevice)
def cb(): self.refresh_xml() self.update_volumes(refresh=True) self.emit("refreshed") self.pool.refresh(0) self.idle_add(cb) def update_volumes(self, refresh=False): if not self.is_active(): self._volumes = {} return vols = self.pool.listVolumes() new_vol_list = {} for volname in vols: if volname in self._volumes: new_vol_list[volname] = self._volumes[volname] if refresh: new_vol_list[volname].refresh_xml() else: new_vol_list[volname] = vmmStorageVolume(self.conn, self.pool.storageVolLookupByName(volname), volname) self._volumes = new_vol_list vmmLibvirtObject.type_register(vmmStoragePool) vmmStoragePool.signal_new(vmmStoragePool, "refreshed", [])