def get_vms(): nova = login.get_nova_client() ceilometer = login.get_ceilometer_client() nova_servers = nova.servers.list(search_opts={"all_tenants": True}) vms = [] for nova_server in nova_servers: # print nova_server._info server_id = nova_server._info["id"] server_flavor = nova.flavors.get(nova_server._info["flavor"]["id"]) server_vcpus = server_flavor._info["vcpus"] server_ram = server_flavor._info["ram"] server_hypervisor = nova_server._info["OS-EXT-SRV-ATTR:hypervisor_hostname"] server_state = nova_server._info["OS-EXT-STS:vm_state"] server_cpu_util_rel = get_vm_cpu_util(ceilometer, server_id) vms.append( { "id": server_id, "util": server_cpu_util_rel, "host": server_hypervisor, "vcpus": server_vcpus, "ram": server_ram, "vm_state": server_state, "util_abs": server_cpu_util_rel * server_vcpus, } ) return vms
def get_ts_ceilometer(): ts = -1 ceilometer = login.get_ceilometer_client() NO_SAMPLES = 1 # query = [dict(field='resource', op='eq', value=instance_id)] samples = ceilometer.samples.list(meter_name='power', limit=NO_SAMPLES) try: ts = int((datetime.datetime.strptime( str(samples[0]._info['timestamp']), '%Y-%m-%dT%H:%M:%S.%f')).strftime('%s')) # cons_ts = cpu_util_sum += float(samples[0]._info['counter_volume']) except: print "failed to get timestamp!" return ts