0penStack 资源管理的客户端程序开发
OpenStack 资源管理的客户端程序开发
使用已建好的 OpenStack Python 运维开发环境,在 root 目录下创建resource_manager.py 脚本,基于 OpenStack 资源配额管理服务封装客户端工具,resource_manager.py 程序支持命令行带参数执行,命令参数要求说明如下:
(1) 位置参数“command”,表示操作类型。操作类型包括“list”:标识查看所有的对象;“get”:查询指定的对象。
(2) 位置参数“resource”,表示资源信息类型:类型包括 “provider”:资源提供者;“inventory”:资源库存;“usage”:资源使用情况。
(3) 参数“-p 或-- provider”,标识资源提供者的名称。功能要求如下:
(1) 程序查询所有资源提供者,以 json 格式控制台输出。执行实例如下: python3 resource_manager.py list provider
(2) 查询指定资源提供者的资源信息,以 json 格式控制台输出。执行实例如下: python3 resource_manager.py get provider -p “providername”
(3) 查询指定资源提供者的资源库存信息,以 json 格式控制台输出。执行实例如下: python3 resource_manager.py get inventory -p “providername”
(4) 查询指定资源提供者的资源使用信息,以 json 格式控制台输出。
执行实例如下: python3 resource_manager.py get usage -p “providername”
import requests, argparse
head = {'Content-Type': 'application/json', 'X-Auth-Token': "gAAAAABlCgH73Gp9miXcE6NRAPoOz7xk4GfiST9QOSCLJbJs46_jNmYT8EhGQK2ADDvPbYYfiU1fjTPVtEDBOoC9jgTBEcXrxcHgBNtFIyrU2VGs5xrHGUfUw8Q9GEv7k6EaBgylF71icBv78x_p80YkBBoJ1znr224U5R7wEyYB5YpbYiMF2To"}
def list_resource_providers():
resp = requests.get('http://controller:8778/resource_providers', headers=head)
print(resp.text)
return list(map(lambda x: {'name': x['name'], "uuid": x["uuid"]}, resp.json()['resource_providers']))
def name_to_uuid(name):
for i in list_resource_providers():
if i['name'] == name:
return i['uuid']
return None
def get_usages(name):
resp = requests.get(f'http://controller:8778/resource_providers/{name_to_uuid(name)}/usages', headers=head)
print(resp.text)
return resp.json()
def get_resource_providers(name):
resp = requests.get(f'http://controller:8778/resource_providers/{name_to_uuid(name)}', headers=head)
print(resp.text)
return resp.json()
def get_inventory(name):
resp = requests.get(f'http://controller:8778/resource_providers/{name_to_uuid(name)}/inventories', headers=head)
print(resp.text)
return resp.json()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('command')
parser.add_argument('resource')
parser.add_argument('-p', '--provider')
args = parser.parse_args()
if args.command == 'list' and args.resource == 'provider':
print(args.command, args.resource)
print(list_resource_providers())
elif args.command == 'get' and args.resource == 'provider':
print(args.command, args.resource, args.provider)
print(get_resource_providers(args.provider))
elif args.command == 'get' and args.resource == 'inventory':
print(args.command, args.resource, args.provider)
print(get_inventory(args.provider))
elif args.command == 'get' and args.resource == 'usage':
print(args.command, args.resource, args.provider)
print(get_usages(args.provider))