'Retrieve resource information.
This method is called when nova-compute launches, and
as part of a periodic task that records the results in the DB.
:param nodename: unused in this driver
:returns: dictionary containing resource info'

def get_available_resource(self, nodename):

    disk_info_dict = self._get_local_gb_info()
    data = {}
    data['supported_instances'] = self._get_instance_capabilities()
    data['vcpus'] = self._get_vcpu_total()
    data['memory_mb'] = self._host.get_memory_mb_total()
    data['local_gb'] = disk_info_dict['total']
    data['vcpus_used'] = self._get_vcpu_used()
    data['memory_mb_used'] = self._host.get_memory_mb_used()
    data['local_gb_used'] = disk_info_dict['used']
    data['hypervisor_type'] = self._host.get_driver_type()
    data['hypervisor_version'] = self._host.get_version()
    data['hypervisor_hostname'] = self._host.get_hostname()
    data['cpu_info'] = jsonutils.dumps(self._get_cpu_info())
    disk_free_gb = disk_info_dict['free']
    disk_over_committed = self._get_disk_over_committed_size_total()
    available_least = ((disk_free_gb * units.Gi) - disk_over_committed)
    data['disk_available_least'] = (available_least / units.Gi)
    data['pci_passthrough_devices'] = self._get_pci_passthrough_devices()
    numa_topology = self._get_host_numa_topology()
    if numa_topology:
        data['numa_topology'] = numa_topology._to_json()
    else:
        data['numa_topology'] = None
    return data
