upd
This commit is contained in:
		
							
								
								
									
										227
									
								
								dom.xml
									
									
									
									
									
								
							
							
						
						
									
										227
									
								
								dom.xml
									
									
									
									
									
								
							@@ -1,227 +0,0 @@
 | 
				
			|||||||
<domain type='kvm' id='1'>
 | 
					 | 
				
			||||||
  <name>debian12</name>
 | 
					 | 
				
			||||||
  <uuid>721cf06b-879a-4f4e-875b-b3d0382328ef</uuid>
 | 
					 | 
				
			||||||
  <metadata>
 | 
					 | 
				
			||||||
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
 | 
					 | 
				
			||||||
      <libosinfo:os id="http://debian.org/debian/12"/>
 | 
					 | 
				
			||||||
    </libosinfo:libosinfo>
 | 
					 | 
				
			||||||
  </metadata>
 | 
					 | 
				
			||||||
  <memory unit='KiB'>4194304</memory>
 | 
					 | 
				
			||||||
  <currentMemory unit='KiB'>4194304</currentMemory>
 | 
					 | 
				
			||||||
  <vcpu placement='static'>4</vcpu>
 | 
					 | 
				
			||||||
  <resource>
 | 
					 | 
				
			||||||
    <partition>/machine</partition>
 | 
					 | 
				
			||||||
  </resource>
 | 
					 | 
				
			||||||
  <os>
 | 
					 | 
				
			||||||
    <type arch='x86_64' machine='pc-q35-8.0'>hvm</type>
 | 
					 | 
				
			||||||
    <boot dev='hd'/>
 | 
					 | 
				
			||||||
  </os>
 | 
					 | 
				
			||||||
  <features>
 | 
					 | 
				
			||||||
    <acpi/>
 | 
					 | 
				
			||||||
    <apic/>
 | 
					 | 
				
			||||||
    <vmport state='off'/>
 | 
					 | 
				
			||||||
  </features>
 | 
					 | 
				
			||||||
  <cpu mode='host-passthrough' check='none' migratable='on'/>
 | 
					 | 
				
			||||||
  <clock offset='utc'>
 | 
					 | 
				
			||||||
    <timer name='rtc' tickpolicy='catchup'/>
 | 
					 | 
				
			||||||
    <timer name='pit' tickpolicy='delay'/>
 | 
					 | 
				
			||||||
    <timer name='hpet' present='no'/>
 | 
					 | 
				
			||||||
  </clock>
 | 
					 | 
				
			||||||
  <on_poweroff>destroy</on_poweroff>
 | 
					 | 
				
			||||||
  <on_reboot>restart</on_reboot>
 | 
					 | 
				
			||||||
  <on_crash>destroy</on_crash>
 | 
					 | 
				
			||||||
  <pm>
 | 
					 | 
				
			||||||
    <suspend-to-mem enabled='no'/>
 | 
					 | 
				
			||||||
    <suspend-to-disk enabled='no'/>
 | 
					 | 
				
			||||||
  </pm>
 | 
					 | 
				
			||||||
  <devices>
 | 
					 | 
				
			||||||
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
 | 
					 | 
				
			||||||
    <disk type='file' device='disk'>
 | 
					 | 
				
			||||||
      <driver name='qemu' type='qcow2' discard='unmap'/>
 | 
					 | 
				
			||||||
      <source file='/var/lib/libvirt/images/debian12.qcow2' index='1'/>
 | 
					 | 
				
			||||||
      <backingStore/>
 | 
					 | 
				
			||||||
      <target dev='vda' bus='virtio'/>
 | 
					 | 
				
			||||||
      <alias name='virtio-disk0'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
 | 
					 | 
				
			||||||
    </disk>
 | 
					 | 
				
			||||||
    <controller type='usb' index='0' model='qemu-xhci' ports='15'>
 | 
					 | 
				
			||||||
      <alias name='usb'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='0' model='pcie-root'>
 | 
					 | 
				
			||||||
      <alias name='pcie.0'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='1' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='1' port='0x10'/>
 | 
					 | 
				
			||||||
      <alias name='pci.1'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='2' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='2' port='0x11'/>
 | 
					 | 
				
			||||||
      <alias name='pci.2'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='3' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='3' port='0x12'/>
 | 
					 | 
				
			||||||
      <alias name='pci.3'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='4' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='4' port='0x13'/>
 | 
					 | 
				
			||||||
      <alias name='pci.4'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='5' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='5' port='0x14'/>
 | 
					 | 
				
			||||||
      <alias name='pci.5'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='6' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='6' port='0x15'/>
 | 
					 | 
				
			||||||
      <alias name='pci.6'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='7' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='7' port='0x16'/>
 | 
					 | 
				
			||||||
      <alias name='pci.7'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x6'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='8' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='8' port='0x17'/>
 | 
					 | 
				
			||||||
      <alias name='pci.8'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x7'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='9' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='9' port='0x18'/>
 | 
					 | 
				
			||||||
      <alias name='pci.9'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0' multifunction='on'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='10' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='10' port='0x19'/>
 | 
					 | 
				
			||||||
      <alias name='pci.10'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x1'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='11' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='11' port='0x1a'/>
 | 
					 | 
				
			||||||
      <alias name='pci.11'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x2'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='12' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='12' port='0x1b'/>
 | 
					 | 
				
			||||||
      <alias name='pci.12'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x3'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='13' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='13' port='0x1c'/>
 | 
					 | 
				
			||||||
      <alias name='pci.13'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x4'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='pci' index='14' model='pcie-root-port'>
 | 
					 | 
				
			||||||
      <model name='pcie-root-port'/>
 | 
					 | 
				
			||||||
      <target chassis='14' port='0x1d'/>
 | 
					 | 
				
			||||||
      <alias name='pci.14'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x5'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='sata' index='0'>
 | 
					 | 
				
			||||||
      <alias name='ide'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <controller type='virtio-serial' index='0'>
 | 
					 | 
				
			||||||
      <alias name='virtio-serial0'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
 | 
					 | 
				
			||||||
    </controller>
 | 
					 | 
				
			||||||
    <interface type='network'>
 | 
					 | 
				
			||||||
      <mac address='52:54:00:9b:d7:98'/>
 | 
					 | 
				
			||||||
      <source network='default' portid='98463b3d-9ab1-4d7f-9bf4-4ce3df078509' bridge='virbr0'/>
 | 
					 | 
				
			||||||
      <target dev='vnet0'/>
 | 
					 | 
				
			||||||
      <model type='virtio'/>
 | 
					 | 
				
			||||||
      <alias name='net0'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
 | 
					 | 
				
			||||||
    </interface>
 | 
					 | 
				
			||||||
    <serial type='pty'>
 | 
					 | 
				
			||||||
      <source path='/dev/pts/2'/>
 | 
					 | 
				
			||||||
      <target type='isa-serial' port='0'>
 | 
					 | 
				
			||||||
        <model name='isa-serial'/>
 | 
					 | 
				
			||||||
      </target>
 | 
					 | 
				
			||||||
      <alias name='serial0'/>
 | 
					 | 
				
			||||||
    </serial>
 | 
					 | 
				
			||||||
    <console type='pty' tty='/dev/pts/2'>
 | 
					 | 
				
			||||||
      <source path='/dev/pts/2'/>
 | 
					 | 
				
			||||||
      <target type='serial' port='0'/>
 | 
					 | 
				
			||||||
      <alias name='serial0'/>
 | 
					 | 
				
			||||||
    </console>
 | 
					 | 
				
			||||||
    <channel type='unix'>
 | 
					 | 
				
			||||||
      <source mode='bind' path='/run/libvirt/qemu/channel/1-debian12/org.qemu.guest_agent.0'/>
 | 
					 | 
				
			||||||
      <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
 | 
					 | 
				
			||||||
      <alias name='channel0'/>
 | 
					 | 
				
			||||||
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
 | 
					 | 
				
			||||||
    </channel>
 | 
					 | 
				
			||||||
    <channel type='spicevmc'>
 | 
					 | 
				
			||||||
      <target type='virtio' name='com.redhat.spice.0' state='disconnected'/>
 | 
					 | 
				
			||||||
      <alias name='channel1'/>
 | 
					 | 
				
			||||||
      <address type='virtio-serial' controller='0' bus='0' port='2'/>
 | 
					 | 
				
			||||||
    </channel>
 | 
					 | 
				
			||||||
    <input type='tablet' bus='usb'>
 | 
					 | 
				
			||||||
      <alias name='input0'/>
 | 
					 | 
				
			||||||
      <address type='usb' bus='0' port='1'/>
 | 
					 | 
				
			||||||
    </input>
 | 
					 | 
				
			||||||
    <input type='mouse' bus='ps2'>
 | 
					 | 
				
			||||||
      <alias name='input1'/>
 | 
					 | 
				
			||||||
    </input>
 | 
					 | 
				
			||||||
    <input type='keyboard' bus='ps2'>
 | 
					 | 
				
			||||||
      <alias name='input2'/>
 | 
					 | 
				
			||||||
    </input>
 | 
					 | 
				
			||||||
    <graphics type='spice' port='5900' autoport='yes' listen='127.0.0.1'>
 | 
					 | 
				
			||||||
      <listen type='address' address='127.0.0.1'/>
 | 
					 | 
				
			||||||
      <image compression='off'/>
 | 
					 | 
				
			||||||
    </graphics>
 | 
					 | 
				
			||||||
    <sound model='ich9'>
 | 
					 | 
				
			||||||
      <alias name='sound0'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
 | 
					 | 
				
			||||||
    </sound>
 | 
					 | 
				
			||||||
    <audio id='1' type='spice'/>
 | 
					 | 
				
			||||||
    <video>
 | 
					 | 
				
			||||||
      <model type='virtio' heads='1' primary='yes'/>
 | 
					 | 
				
			||||||
      <alias name='video0'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
 | 
					 | 
				
			||||||
    </video>
 | 
					 | 
				
			||||||
    <redirdev bus='usb' type='spicevmc'>
 | 
					 | 
				
			||||||
      <alias name='redir0'/>
 | 
					 | 
				
			||||||
      <address type='usb' bus='0' port='2'/>
 | 
					 | 
				
			||||||
    </redirdev>
 | 
					 | 
				
			||||||
    <redirdev bus='usb' type='spicevmc'>
 | 
					 | 
				
			||||||
      <alias name='redir1'/>
 | 
					 | 
				
			||||||
      <address type='usb' bus='0' port='3'/>
 | 
					 | 
				
			||||||
    </redirdev>
 | 
					 | 
				
			||||||
    <watchdog model='itco' action='reset'>
 | 
					 | 
				
			||||||
      <alias name='watchdog0'/>
 | 
					 | 
				
			||||||
    </watchdog>
 | 
					 | 
				
			||||||
    <memballoon model='virtio'>
 | 
					 | 
				
			||||||
      <alias name='balloon0'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
 | 
					 | 
				
			||||||
    </memballoon>
 | 
					 | 
				
			||||||
    <rng model='virtio'>
 | 
					 | 
				
			||||||
      <backend model='random'>/dev/urandom</backend>
 | 
					 | 
				
			||||||
      <alias name='rng0'/>
 | 
					 | 
				
			||||||
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
 | 
					 | 
				
			||||||
    </rng>
 | 
					 | 
				
			||||||
  </devices>
 | 
					 | 
				
			||||||
  <seclabel type='dynamic' model='dac' relabel='yes'>
 | 
					 | 
				
			||||||
    <label>+961:+961</label>
 | 
					 | 
				
			||||||
    <imagelabel>+961:+961</imagelabel>
 | 
					 | 
				
			||||||
  </seclabel>
 | 
					 | 
				
			||||||
</domain>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@@ -1,14 +0,0 @@
 | 
				
			|||||||
_cmp_get_domains()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    for file in /etc/libvirt/qemu/*.xml; do
 | 
					 | 
				
			||||||
        nodir="${file##*/}"
 | 
					 | 
				
			||||||
        printf '%s\n' "${nodir//\.xml}"
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
_compute()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    :
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
complete -o filenames -F _compute compute
 | 
					 | 
				
			||||||
							
								
								
									
										30
									
								
								xmltool.py
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								xmltool.py
									
									
									
									
									
								
							@@ -1,30 +0,0 @@
 | 
				
			|||||||
from pathlib import Path
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from lxml import etree
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from compute.storage import DiskConfig
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with Path('./dom.xml').open('r') as f:
 | 
					 | 
				
			||||||
    xml = etree.fromstring(f.read())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def get_disk_by_target(name):
 | 
					 | 
				
			||||||
    disk_tgt = xml.xpath('/domain/devices/disk/target[@dev="vda"]')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def get_disks(xml: etree.Element) -> list[etree.Element]:
 | 
					 | 
				
			||||||
    xmldisks = xml.findall('devices/disk')
 | 
					 | 
				
			||||||
    for xmldisk in xmldisks:
 | 
					 | 
				
			||||||
        disk_config = DiskConfig(
 | 
					 | 
				
			||||||
            type=xmldisk.get('type'),
 | 
					 | 
				
			||||||
            device=xmldisk.get('device'),
 | 
					 | 
				
			||||||
            target=xmldisk.find('target').get('dev'),
 | 
					 | 
				
			||||||
            path=xmldisk.find('source').get('file'),
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user