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))
该文章的评论已关闭