Пример #1
0
        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)
Пример #5
0
        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)
Пример #7
0
            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)
Пример #9
0

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", [])