[Users] Obtain VM name from within VM?

Itamar Heim iheim at redhat.com
Wed Jun 19 06:31:06 EDT 2013


On 06/18/2013 10:59 AM, Yuriy Demchenko wrote:
> Hi,
>
> Is VMpayload supported by oVirt 3.2.2 el6?

it should be.
have you tried first passing payload via the engine?


> As I'm trying to set up startup hook to pass vmname via payload and
> getting nothing...



>
> my hook code quite simple (and maybe crude):
>> domxml = hooking.read_domxml()
>> domain = domxml.getElementsByTagName('domain')[0]
>> payloads = domxml.createElement('payloads')
>> npayload = domxml.createElement('payload')
>> npayload.setAttribute('type','cdrom')
>> filename = domxml.createElement('file')
>> filename.setAttribute('name','vmname.txt')
>> content = domxml.createElement('content')
>> names = domxml.getElementsByTagName('name')[0]
>> vmname = names.childNodes[0].nodeValue
>> text = domxml.createTextNode(vmname)
>> content.appendChild(text)
>> filename.appendChild(content)
>> npayload.appendChild(filename)
>> payloads.appendChild(npayload)
>> domain.appendChild(payloads)
>> hooking.write_domxml(domxml)
> and from vdsm.log I can see that 'payloads' elements are created
> succesfully:
>> Thread-56974::DEBUG::2013-06-18
>> 11:43:49,612::libvirtvm::1520::vm.Vm::(_run)
>> vmId=`a21a2ec8-c7fd-4a0a-8cbb-5f0ab4faa960`::<?xml version="1.0"
>> encoding="utf-8"?><domain type="kvm">
>> <name>virt-gate</name>
>> <uuid>a21a2ec8-c7fd-4a0a-8cbb-5f0ab4faa960</uuid>
>> <memory>524288</memory>
>> <currentMemory>524288</currentMemory>
>> <vcpu>1</vcpu>
>> <devices>
>> <channel type="unix">
>> <target name="com.redhat.rhevm.vdsm" type="virtio"/>
>> <source mode="bind"
>> path="/var/lib/libvirt/qemu/channels/virt-gate.com.redhat.rhevm.vdsm"/>
>> </channel>
>> <channel type="unix">
>> <target name="org.qemu.guest_agent.0" type="virtio"/>
>> <source mode="bind"
>> path="/var/lib/libvirt/qemu/channels/virt-gate.org.qemu.guest_agent.0"/>
>> </channel>
>> <input bus="ps2" type="mouse"/>
>> <channel type="spicevmc">
>> <target name="com.redhat.spice.0" type="virtio"/>
>> </channel>
>> <graphics autoport="yes" keymap="en-us" listen="0" passwd="*****"
>> passwdValidTo="1970-01-01T00:00:01" port="-1" tlsPort="-1" type="spice">
>> <channel mode="secure" name="main"/>
>> <channel mode="secure" name="inputs"/>
>> <channel mode="secure" name="cursor"/>
>> <channel mode="secure" name="playback"/>
>> <channel mode="secure" name="record"/>
>> <channel mode="secure" name="display"/>
>> <channel mode="secure" name="usbredir"/>
>> <channel mode="secure" name="smartcard"/>
>> </graphics>
>> <video>
>> <address bus="0x00" domain="0x0000" function="0x0" slot="0x02"
>> type="pci"/>
>> <model heads="1" type="qxl" vram="65536"/>
>> </video>
>> <interface type="bridge">
>> <address bus="0x00" domain="0x0000" function="0x0" slot="0x03"
>> type="pci"/>
>> <mac address="00:1a:4a:a8:7a:07"/>
>> <model type="virtio"/>
>> <source bridge="vlan1"/>
>> <filterref filter="vdsm-no-mac-spoofing"/>
>> <link state="up"/>
>> </interface>
>> <interface type="bridge">
>> <address bus="0x00" domain="0x0000" function="0x0" slot="0x04"
>> type="pci"/>
>> <mac address="00:1a:4a:a8:7a:09"/>
>> <model type="virtio"/>
>> <source bridge="vlan11"/>
>> <filterref filter="vdsm-no-mac-spoofing"/>
>> <link state="up"/>
>> </interface>
>> <disk device="cdrom" snapshot="no" type="file">
>> <address bus="1" controller="0" target="0" type="drive" unit="0"/>
>> <source file="" startupPolicy="optional"/>
>> <target bus="ide" dev="hdc"/>
>> <readonly/>
>> <serial/>
>> </disk>
>> <disk device="disk" snapshot="no" type="block">
>> <address bus="0x00" domain="0x0000" function="0x0" slot="0x06"
>> type="pci"/>
>> <source
>> dev="/rhev/data-center/5849b030-626e-47cb-ad90-3ce782d831b3/d786e2d5-05ab-4da6-95fc-1af791a3c113/images/4927f83f-425e-41ef-aa12-3bc249d7064b/caa56376-deab-41cd-a27c-d35fe8f33946"/>
>>
>> <target bus="virtio" dev="vda"/>
>> <serial>4927f83f-425e-41ef-aa12-3bc249d7064b</serial>
>> <boot order="1"/>
>> <driver cache="none" error_policy="stop" io="native" name="qemu"
>> type="raw"/>
>> </disk>
>> <memballoon model="virtio"/>
>> </devices>
>> <os>
>> <type arch="x86_64" machine="pc">hvm</type>
>> <smbios mode="sysinfo"/>
>> </os>
>> <sysinfo type="smbios">
>> <system>
>> <entry name="manufacturer">oVirt</entry>
>> <entry name="product">oVirt Node</entry>
>> <entry name="version">6-4.el6.centos.10</entry>
>> <entry name="serial">A6902500-EA00-0706-0025-90A600EA0E0F</entry>
>> <entry name="uuid">a21a2ec8-c7fd-4a0a-8cbb-5f0ab4faa960</entry>
>> </system>
>> </sysinfo>
>> <clock adjustment="-2" offset="variable">
>> <timer name="rtc" tickpolicy="catchup"/>
>> </clock>
>> <features>
>> <acpi/>
>> </features>
>> <cpu match="exact">
>> <model>Nehalem</model>
>> <topology cores="1" sockets="1" threads="1"/>
>> </cpu>
>> <payloads><payload type="cdrom"><file
>> name="vmname.txt"><content>virt-gate</content></file></payload></payloads></domain>
>>
> Tried with both 'cdrom' and 'floppy' types.
> However, inside guest OS (centos 6.4) I couldn't see any payload:
> /dev/sr0 contains nothing; modprobe floppy doest not finds any floppy
> devices.
>
> Am I missing something or it's just not implemented in 3.2.2-el6?
>
> Yuriy Demchenko
>
> On 05/25/2013 10:54 PM, Itamar Heim wrote:
>>> http://www.ovirt.org/Features/VMPayload
>>>
>>> That suggests I can use the API to set this up, but is this possible
>>> via the administrative UI instead? Could I do this in a creation-time
>>> VDSM hook?
>>>
>>> Thanks,
>>>
>>
>> 1. yes, you can do it via a hook using custom properties (that what
>> the floppy/iso inject hooks were for, but they are now deprecated as
>> the vm payload makes them redundant).
>>
>> 2. RHEV has this in 3.1. iirc, its only available via the API though[1]
>> cloud init should be available from the UI via the runonce dialog.
>



More information about the Users mailing list