Exemplo n.º 1
0
 def NetInfo(self):
     editor = XmlEditor("root", self.netxml)
     editor.DumpSave("net")
     data = editor.DomainData()
     data['power'] = self.dompower
     data['autostart'] = self.domauto
     return data
Exemplo n.º 2
0
    def network_ovs_delete(self, uuid, name):
        net = self.node.networkLookupByUUIDString(uuid)
        editor = XmlEditor(type="str", obj=net.XMLDesc())
        xml = editor.network_ovs_find(name=name)

        # https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkUpdateCommand
        res = net.update(command=2, section=9, xml=xml, parentIndex=1, flags=0)
        logger.info(res)
Exemplo n.º 3
0
    def domain_network(self, uuid, network, port, mac):
        domain = self.node.lookupByUUIDString(uuid)

        xml = XmlEditor(type="str", obj=domain.XMLDesc())
        xml = xml.domain_network(mac=mac, network=network, port=port)
        try:
            domain.updateDeviceFlags(xml)
        except libvirt.libvirtError as e:
            raise Exception("Cannot switch the OVS while the VM is running" +
                            str(e))
Exemplo n.º 4
0
    def network_data(self, token):
        networks = self.node.listAllNetworks()
        data = []
        for net in networks:
            xml = XmlEditor(type="str", obj=net.XMLDesc())
            xml = xml.network_pase()
            data.append(
                NetworkModel(uuid=xml['uuid'],
                             name=xml['name'],
                             host_interface=xml['bridge'],
                             type=xml['type'],
                             active=net.isActive(),
                             auto_start=net.autostart(),
                             dhcp=None,
                             update_token=token))

        return data
Exemplo n.º 5
0
 def StorageAllData(self):
     pools = self.node.listAllStoragePools(0)
     if pools == None:
         print('Failed to locate any StoragePool objects.', file=sys.stderr)
     data = []
     for pool in pools:
         pool.refresh()
         temp = {}
         temp['active'] = pool.isActive()
         temp['auto'] = pool.autostart()
         temp['status'] = pool.info()[0]
         temp['xml'] = pool.XMLDesc(0)
         temp['image'] = []
         for image in pool.listAllVolumes():
             xmledit = XmlEditor("str", image.XMLDesc())
             temp['image'].append(xmledit.ImageData())
         data.append(temp)
     return data
Exemplo n.º 6
0
    def storage_data(self, token) -> List[StorageModel]:
        # GlustorFSが遅い
        pools = self.node.listAllStoragePools(0)
        if pools == None:
            return []
        data = []
        for pool in pools:
            logger.info(f'プールのステータス{pool.info()}')
            if pool.info()[0] != 2:
                storage = StorageModel(uuid=pool.UUIDString(),
                                       name=pool.name(),
                                       node_name=self.node_model.name,
                                       capacity=None,
                                       available=None,
                                       type=None,
                                       protocol=None,
                                       path=None,
                                       active=pool.isActive(),
                                       auto_start=pool.autostart(),
                                       status=pool.info()[0],
                                       update_token=token)
                data.append({"storage": storage, "image": []})
                continue

            logger.debug("ストレージのリフレッシュを開始")
            # GlustorFSが遅い
            pool.refresh()
            logger.debug("ストレージのリフレッシュが完了")
            storage_xml = XmlEditor(type="str", obj=pool.XMLDesc())
            storage_xml = storage_xml.storage_pase()
            storage = StorageModel(uuid=pool.UUIDString(),
                                   name=pool.name(),
                                   node_name=self.node_model.name,
                                   capacity=storage_xml.capacity,
                                   available=storage_xml.available,
                                   type="",
                                   protocol="",
                                   path=storage_xml.path,
                                   active=pool.isActive(),
                                   auto_start=pool.autostart(),
                                   status=pool.info()[0],
                                   update_token=token)
            image = []
            for image_obj in pool.listAllVolumes():
                xml_pace = XmlEditor(type="str", obj=image_obj.XMLDesc())
                xml_pace = xml_pace.image_pase()
                xml_pace.update_token = token
                image.append(xml_pace)
            data.append({"storage": storage, "image": image})
        return data
Exemplo n.º 7
0
    def domain_cdrom(self, uuid, target, path=None):
        con = self.node.lookupByUUIDString(uuid)

        xml = XmlEditor(type="str", obj=con.XMLDesc())
        con.updateDeviceFlags(xml.domain_cdrom(target=target, path=path))