def NetInfo(self): editor = XmlEditor("root", self.netxml) editor.DumpSave("net") data = editor.DomainData() data['power'] = self.dompower data['autostart'] = self.domauto return data
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)
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))
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
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
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
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))