← Back to team overview

openstack team mailing list archive

Ceilometer problem: virDomainLookupByName must not be NULL

 

Hello,

I get an error "libvir:  error : name in virDomainLookupByName must not be
NULL" when trying to collect nova compute counters for VMs:

Problem seems to occur inside
ceilometer/compute/pollsters.py's _instance_name() method
where OS-EXT-SRV-ATTR:instance_name can't be retrieved:

def _instance_name(instance):
    """Shortcut to get instance name."""

    # my modifications start
    LOG.debug("HEEHO _instance_name 1: " + str(instance))
    name = getattr(instance, 'OS-EXT-SRV-ATTR:instance_name', None)
    LOG.debug("HEEHO _instance_name 2: " + str(name))
    # my modifications end

    return getattr(instance, 'OS-EXT-SRV-ATTR:instance_name', None)

Log:

2013-06-20 21:16:57     INFO [ceilometer.compute.manager] Polling pollster
cpu
2013-06-20 21:16:57     INFO [ceilometer.compute.pollsters.cpu] checking
instance 6dcd9975-66c9-48ed-8ad1-e2174a94c99e
2013-06-20 21:16:57    DEBUG [ceilometer.compute.pollsters] MYLOG
_instance_name 1: <Server: simpletest.MySimpleApp>
2013-06-20 21:16:57    DEBUG [ceilometer.compute.pollsters] MYLOG
_instance_name 2: None
libvir:  error : name in virDomainLookupByName must not be NULL
2013-06-20 21:16:57    ERROR [ceilometer.compute.pollsters.cpu] could not
get CPU time for 6dcd9975-66c9-48ed-8ad1-e2174a94c99e: Error from libvirt
while looking up None: [Error Code 8] name in virDomainLookupByName must
not be NULL
2013-06-20 21:16:57    ERROR [ceilometer.compute.pollsters.cpu] Error from
libvirt while looking up None: [Error Code 8] name in virDomainLookupByName
must not be NULL
Traceback (most recent call last):
  File
"/usr/local/lib/python2.7/dist-packages/ceilometer-2013.1.1.a16.g93ea469-py2.7.egg/ceilometer/compute/pollsters.py",
line 176, in get_counters
    cpu_info = manager.inspector.inspect_cpus(instance_name)
  File
"/usr/local/lib/python2.7/dist-packages/ceilometer-2013.1.1.a16.g93ea469-py2.7.egg/ceilometer/compute/virt/libvirt/inspector.py",
line 103, in inspect_cpus
    domain = self._lookup_by_name(instance_name)
  File
"/usr/local/lib/python2.7/dist-packages/ceilometer-2013.1.1.a16.g93ea469-py2.7.egg/ceilometer/compute/virt/libvirt/inspector.py",
line 87, in _lookup_by_name
    raise virt_inspector.InstanceNotFoundException(msg)
InstanceNotFoundException: Error from libvirt while looking up None: [Error
Code 8] name in virDomainLookupByName must not be NULL

Any ideas what causes this behaviour? I have grizzly in use.

Any help is much appreciated.

Thanks,
-Juha

Follow ups