[libvirt-users] [libvirt] virDomainGetInfo() returns wrong domain state
Michal Privoznik
mprivozn at redhat.com
Thu Sep 26 07:23:54 UTC 2013
On 24.09.2013 16:51, Panday Ritesh Sharma (rpanday) wrote:
>
>
> Hi Team,
>
> I have written below code to get the VM state at run time. I found,
> though the VM is in shut-off state, when I use the function
> virDomainGetInfo(); I get state as running. Could you please let me
> know what wrong I am doing. To know the actual VM state I used ‘virsh
> list’ and it clearly shows the VM is in shut-off state. Please find the
> log and code snippet below.
>
>
>
> Log from virsh:
>
> =================
>
> [host:~]$ virsh list --all
>
> Id Name State
>
> ----------------------------------------------------
>
> 1 calvados running
>
> 2 LCXR running
>
> 3 default-sdr--1 running
>
> - test--2 shut off
>
>
>
> Out put:
>
> =========
>
> 04.03.06.698923264:INFO: vm_libvirt_state_to_vmm_state: state returned is 1
>
>
>
> Note : Here 1 is actually running.
>
>
>
> Code snippet:
>
> ===============
>
> enum cidl_vmm_vm_state
>
> vm_libvirt_state_to_vmm_state(unsigned char libvirt_state)
>
> {
>
> enum cidl_vmm_vm_state state;
>
> INFO("%s: state returned is %u\n",__FUNCTION__, libvirt_state);
> <<<<<<<<<<<<<<<<<<
>
> if (libvirt_state == VIR_DOMAIN_RUNNING) {
>
> state = cidl_vm_state_running;
>
> } else if ((libvirt_state == VIR_DOMAIN_PAUSED) ||
>
> (libvirt_state == VIR_DOMAIN_BLOCKED)) {
>
> state = cidl_vm_state_paused;
>
> } else if (libvirt_state == VIR_DOMAIN_SHUTOFF) {
>
> state = cidl_vm_state_defined;
>
> } else {
>
> state = cidl_vm_state_not_defined;
>
> }
>
> return state;
>
> }
While this part ^^^ looks okay, the part below looks suspicious. I mean
not from API perspective, but from data perspective.
>
>
>
> virDomainInfo res_util;
>
> virDomainPtr dom = virDomainLookupByName(virt,
>
> private_names[vm_idx]);
Are you sure you're passing the correct name here? That's the only
possible source of the error here.
>
> res = virDomainGetInfo(dom, &res_util);
>
> vminfo[vm_idx].vm_state =
>
> vm_libvirt_state_to_vmm_state(res_util.state);
>
>
Michal
More information about the libvirt-users
mailing list