Python运维开发:云主机类型管理的命令行工具开发
Python运维开发:云主机类型管理的命令行工具开发[2分]
使用已建好的OpenStack Python运维开发环境,在/root目录下创建flavor_manager.py脚本,完成云主机类型的管理,flavor_manager.py程序支持命令行参数执行。
提示说明:Python标准库argparse模块,可以提供命令行参数的解析。
要求如下:
(1)程序支持根据命令行参数,创建1个多云主机类型。返回response。
位置参数“create”,表示创建;
参数“-n”支持指定flavor名称,数据类型为字符串类型;
参数“-m”支持指定内存大小,数据类型为int,单位M;
参数“-v”支持指定虚拟cpu个数,数据类型为int;
参数“-d”支持磁盘大小,内存大小类型为int,单位G;
参数“-id”支持指定ID,类型为字符串。
参考运行实例:
python3 flavor_manager.py create -n flavor_small -m 1024 -v 1 -d 10 -id 100000
(2)程序支持查询目前admin账号下所有的云主机类型。
位置参数“getall”,表示查询所有云主机类型;
查询结果,以json格式输出到控制台。
参考执行实例如下:
python3 flavor_manager.py getall
(3)支持查询给定具体名称的云主机类型查询。
位置参数“get”,表示查询1个云主机类型;
参数“-id”支持指定ID查询,类型为string。
控制台以json格式输出创建结果。
参考执行实例如下:
python3 flavor_manager.py get -id 100000
(4)支持删除指定ID的云主机类型。
位置参数“delete”,表示删除一个云主机类型;
参数“-id”支持指定ID查询,返回response,控制台输出response。
参考执行实例如下:
python3 flavor_manager.py delete -id 100001
sdk_flavor.py:
import json
from openstack import connection
conn = connection.Connection(
auth_url='http://192.168.200.54:5000/v3',
username="admin",
project_name="admin",
user_domain_name="demo",
project_domain_name="demo",
password='000000'
)
def create_flavor(name, ram, vcpus, disk, flavorid):
return json.dumps(conn.create_flavor(name=name, ram=ram, vcpus=vcpus, disk=disk, flavorid=flavorid))
def delete_flavor(id):
return json.dumps(conn.delete_flavor(name_or_id=id))
def find_flavor(id):
return json.dumps(conn.get_flavor_by_id(id))
def get_all_flavor():
return json.dumps(conn.list_flavors())
if __name__ == '__main__':
print(get_all_flavor())
flavor_manager.py:
import argparse
import sdk_flavor
parser = argparse.ArgumentParser()
parser.add_argument('command')
parser.add_argument('-n')
parser.add_argument('-m')
parser.add_argument('-v')
parser.add_argument('-d')
parser.add_argument('-id')
args = parser.parse_args()
if args.command == 'create':
print(sdk_flavor_manager.create_flavor(name=args.n, ram=args.m, vcpus=args.v, disk=args.d, flavorid=args.id))
elif args.command == 'getall':
print(sdk_flavor_manager.get_all_flavor())
elif args.command == 'get':
print(sdk_flavor_manager.find_flavor(args.id))
elif args.command == 'delete':
print(sdk_flavor_manager.delete_flavor(args.id))