'Retrieve information from libvirt for a specific instance name.
If a libvirt error is encountered during lookup, we might raise a
NotFound exception or Error exception depending on how severe the
libvirt error is.
:returns hardware.InstanceInfo:'

def get_info(self, host):

    try:
        dom_info = self._get_domain_info(host)
    except libvirt.libvirtError as ex:
        error_code = ex.get_error_code()
        if (error_code == libvirt.VIR_ERR_NO_DOMAIN):
            raise exception.InstanceNotFound(instance_id=self.uuid)
        msg = (_('Error    from    libvirt    while    getting    domain    info    for    %(instance_name)s:    [Error    Code    %(error_code)s]    %(ex)s') % {'instance_name': self.name, 'error_code': error_code, 'ex': ex})
        raise exception.InternalError(msg)
    return hardware.InstanceInfo(state=LIBVIRT_POWER_STATE[dom_info[0]], max_mem_kb=dom_info[1], mem_kb=dom_info[2], num_cpu=dom_info[3], cpu_time_ns=dom_info[4], id=self.id)
