#!/usr/bin/env python import os import requests from novaclient.client import Client as nova_auth from keystoneclient.v3.client import Client as keystone_auth def get_credentials(): cred = {} cred['version'] = '2' cred['username'] = "admin" cred['password'] = "openstack" cred['auth_url'] = "http://10.0.1.216:5000/v3" cred['project_name'] = "admin" cred['user_domain_name'] = "admin_domain" cred['project_domain_name'] = "admin_domain" return cred def get_auth_token(): creds = get_credentials() keystone_client = keystone_auth(**creds) return keystone_client.auth_token def get_servers(): creds = get_credentials() nova_client = nova_auth(**creds) print(nova_client.servers.list()) def get_cores(): url="http://placement.example.com:8778" token = get_auth_token() headers = {} headers['content-type'] = 'application/json' headers['x-auth-token'] = token request = "/resource_providers" r = requests.get("{}/{}".format(url,request),headers=headers) for res in r.json()['resource_providers']: uuid = res['uuid'] hostname = res['name'] request = "/resource_providers/{}/inventories".format(uuid) r = requests.get("{}/{}".format(url,request),headers=headers) inventory = r.json()['inventories'] cores=0 if 'VCPU' in inventory: cores+=inventory['VCPU']['total'] if 'PCPU' in inventory: cores+=inventory['PCPU']['total'] print("{}: {}".format(hostname,cores)) def main(): get_servers() get_cores() if __name__ == '__main__': main()