QemuXML - file /etc/libvirt/qemu/*.xml
and /var/run/libvirt/qemu/*.xml
Parsers provided by this module are:
QemuXML - file /etc/libvirt/qemu/*.xml
VarQemuXML - file /var/run/libvirt/qemu/*.xml
OpenStackInstanceXML - file /etc/libvirt/qemu/*.xml
- class insights.parsers.qemu_xml.BaseQemuXML(context)[source]
Bases:
XMLParser
Base class for parsing Qemu XML files. It uses
XMLParser
mixin class.- vm_name
Name of VM
- Type:
str
- parse_content(content)[source]
All child classes inherit this function to parse XML file automatically. It will call the function
parse_dom()
by default to parser all necessary data todata
and thexmlns
(the default namespace) is ready for this function.
- class insights.parsers.qemu_xml.OpenStackInstanceXML(context)[source]
Bases:
BaseQemuXML
Parse OpenStack instances metadata based on the class
BaseQemuXML
.This parser depends on
insights.components.openstack.IsOpenStackCompute
and will be fired only if the dependency is met.Sample metadata section in the XML file:
<metadata> <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0"> <nova:package version="14.0.3-8.el7ost"/> <nova:name>django_vm_001</nova:name> <nova:creationTime>2017-10-09 08:51:28</nova:creationTime> <nova:flavor name="vpc1-cf1-foo-bar"> <nova:memory>8096</nova:memory> <nova:disk>10</nova:disk> <nova:swap>0</nova:swap> <nova:ephemeral>0</nova:ephemeral> <nova:vcpus>4</nova:vcpus> </nova:flavor> <nova:owner> <nova:user uuid="96e9d2b749ea48fcb5a911e6f0e144f2">django_user_01</nova:user> <nova:project uuid="5a50e9d0d19746158958be0c759793fb">vpcdi1</nova:project> </nova:owner> <nova:root type="image" uuid="1a05a423-dfae-428a-ae54-1614d8024e76"/> </nova:instance> </metadata>
Examples
>>> rhosp_xml.domain_name 'instance-000008d6' >>> rhosp_xml.nova.get('version') '14.0.3-8.el7ost' >>> rhosp_xml.nova.get('instance_name') 'django_vm_001' >>> rhosp_xml.nova.get('user') 'django_user_01' >>> rhosp_xml.nova.get('root_disk_type') 'image' >>> rhosp_xml.nova.get('flavor_vcpus') '4'
- domain_name
XML domain name.
- Type:
str
- nova
OpenStack Compute Metadata.
- Type:
dict
- class insights.parsers.qemu_xml.QemuXML(context)[source]
Bases:
BaseQemuXML
This class parses xml files under
/etc/libvirt/qemu/
usingBaseQemuXML
base parser.Sample file:
<!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit 05-s00c06h0 or other application using the libvirt API. --> <domain type='kvm'> <name>05-s00c06h0</name> <uuid>02cf0bba-2bd6-11e7-8337-e4115b9a50d0</uuid> <memory unit='KiB'>12582912</memory> <currentMemory unit='KiB'>12582912</currentMemory> <vcpu placement='static'>4</vcpu> <cputune> <vcpupin vcpu='0' cpuset='1'/> <vcpupin vcpu='1' cpuset='2'/> <vcpupin vcpu='2' cpuset='3'/> <vcpupin vcpu='3' cpuset='4'/> <emulatorpin cpuset='1-4'/> </cputune> <numatune> <memory mode='strict' nodeset='0-1'/> <memnode cellid='0' mode='strict' nodeset='0'/> <memnode cellid='1' mode='strict' nodeset='1'/> </numatune> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> <boot dev='hd'/> <boot dev='network'/> <bootmenu enable='yes' timeout='1000'/> <bios useserial='yes' rebootTimeout='0'/> </os> <features> <acpi/> <apic/> <pae/> </features> <cpu> <numa> <cell id='0' cpus='0-1' memory='6291456' unit='KiB'/> <cell id='1' cpus='2-3' memory='6291456' unit='KiB'/> </numa> </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none' io='threads'/> <source file='/var/lib/libvirt/images/05-s00c06h0_1.img'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> <controller type='usb' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='pci' index='0' model='pci-root'/> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </controller> <interface type='hostdev' managed='yes'> <mac address='b2:59:73:15:00:00'/> <source> <address type='pci' domain='0x0000' bus='0x04' slot='0x10' function='0x0'/> </source> <rom bar='on' file='/opt/vcp/share/ipxe/808610ed.rom'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </interface> <interface type='hostdev' managed='yes'> <mac address='b2:59:73:15:00:01'/> <source> <address type='pci' domain='0x0000' bus='0x04' slot='0x10' function='0x1'/> </source> <rom bar='on' file='/opt/vcp/share/ipxe/808610ed.rom'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <channel type='pipe'> <source path='/var/lib/libvirt/qemu/channels/FROM-05-s00c06h0'/> <target type='virtio' name='virtio2host'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <channel type='pipe'> <source path='/var/lib/libvirt/qemu/channels/HGC-05-s00c06h0'/> <target type='virtio' name='virtio_host_guest_check'/> <address type='virtio-serial' controller='0' bus='0' port='2'/> </channel> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes'> <listen type='address'/> </graphics> <video> <model type='cirrus' vram='16384' heads='1' primary='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <watchdog model='i6300esb' action='reset'> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </watchdog> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </memballoon> </devices> </domain>
Examples
>>> xml_numa.file_name == 'vm.xml' True >>> xml_numa.vm_name == '05-s00c06h0' True >>> memnode = xml_numa.get_elements('./numatune/memnode', None) >>> len(memnode[0].items()) == 3 True >>> len(memnode[1].items()) == 3 True >>> memnode[0].get('cellid') == '0' True >>> memnode[1].get('mode') == 'strict' True
- class insights.parsers.qemu_xml.VarQemuXML(context)[source]
Bases:
BaseQemuXML
This class parses xml files under
/var/run/libvirt/qemu/
usingBaseQemuXML
base parser.Sample file:
<!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit test-idm-client-ccveu-net or other application using the libvirt API. --> <domstatus state='running' reason='unpaused' pid='17150'> <monitor path='/var/lib/libvirt/qemu/domain-59-test-idm-client-ccve/monitor.sock' json='1' type='unix'/> <vcpus> <vcpu id='0' pid='17156'/> </vcpus> <qemuCaps> <flag name='kvm'/> <flag name='mem-path'/> </qemuCaps> <devices> <device alias='balloon0'/> </devices> <libDir path='/var/lib/libvirt/qemu/domain-59-test-idm-client-ccve'/> <domain type='kvm' id='59'> <name>test-idm-client-ccveu-net</name> <uuid>78177d07-ac0e-4057-b1de-9ccd66cbc3d7</uuid> <metadata xmlns:ovirt="http://ovirt.org/vm/tune/1.0"> <ovirt:qos/> </metadata> <maxMemory slots='16' unit='KiB'>4294967296</maxMemory> <memory unit='KiB'>2097152</memory> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.2.0'>hvm</type> <bootmenu enable='yes' timeout='10000'/> <smbios mode='sysinfo'/> </os> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source startupPolicy='optional'/> </disk> </devices> </domain> </domstatus>