OpenStack Interpreter
项目描述
这是一个简单的工具,旨在促进更好地使用各种OpenStack Python客户端,并帮助提高所有这些工具的识字率。希望这个工具能让开发者更容易地使用和测试各种库,并为运营商提供一个有用的工具,用于不需要编写脚本的操作,以及OpenStackClient在无需求助于复杂的bash的情况下不够灵活的情况。
使用OpenStack Interpreter
首先安装插件
pip install openstack-interpreter
这将现在作为插件安装在OpenStackClient上,或者也可以安装OpenStackClient。
您需要设置一些环境变量,或者一个clouds.yaml文件,以便客户端可以验证并设置您的会话。
要运行解释器
openstack interpreter
这将带您进入一个ipython解释器。您将根据您的认证凭据设置会话。
因为这是使用ipython作为解释器,所以您可以使用自动完成和帮助功能。还有历史搜索支持和其他许多功能。有关更多详细信息,请参阅ipython文档。
要获取一些基本帮助,您可以开始使用
oi?
或者如果您想获取并开始使用SDK,这是如何访问它的
conn = oi.sdk.connection
或者如果您想在除您配置或默认区域以外的区域进行SDK连接
conn = oi.sdk.get_connection(region_name='RegionOne')
内置工具
这个库提供了一些基本工具,帮助您处理正在使用的数据,并以更优雅的方式呈现给您。这些功能会随着时间的推移而增加,目前我们有一些输出函数、基本性能分析和一些提示。
工具示例
也许您想查看一些OpenStack资源的值。由于大多数客户端库都提供了资源到字典的函数(注意:这不一定总是如此),您可以执行以下操作
servers = list(conn.compute.servers()) output.print_dict(servers[0].to_dict())
或者直接打印对象本身,因为它可能根本不需要to_dict
output.print_object(servers[0])
尽管一些字段可能是字典,这更难阅读,所以我们想稍微格式化一下
output.print_object( servers[0], formatters={ 'addresses': output.json_formatter, 'flavor': output.json_formatter, 'image': output.json_formatter, 'links': output.json_formatter})
或者也许您正在查看资源列表,并且您只关心某些字段
output.print_list(servers, ["name", "id", "status"])
您甚至可以格式化列表,但请注意,列表目前还没有自动换行
output.print_list( servers, ['name', 'status', 'addresses'], formatters={'addresses': output.json_formatter})
或者也许您正在查看大量数据,并想突出某些内容
rows = [] for server in servers: if server.status == "ACTIVE": rows.append([ server.name, server.id, output.style_text(server.status, ['green', 'bold']) ]) elif server.status == "ERROR": rows.append([ server.name, server.id, output.style_text(server.status, ['red', 'bold']) ]) else: rows.append([server.name, server.id, server.status]) output.print_list_rows(rows, ["name", "id", "status"])
或者想要删除大量实例,但想先询问具有特定名称(或甚至标签)的实例
for server in conn.compute.servers(): if "prod" in server.name: output.print_object(server) if prompt.prompt_yes_no( "Are you sure you want to delete this?"): server.delete() else: server.delete()
或者也许您只是好奇运行某个操作需要多长时间
with timed("listing servers"): servers = list(conn.compute.servers())
有用的模式
获取我所在所有区域的服务器(或任何资源)
servers = {} for region in conn.identity.regions(): servers[region.id] = list(oi.sdk.get_connection( region_name=region.id).compute.servers())
开发
我希望尽可能地添加更多帮助功能,甚至希望有一个交互式的教程。
我可能将这个项目移至OpenStack的gerrit,但部分原因是我更喜欢gitlab,因为gerrit的界面很糟糕,尽管我最终可能将这个项目移至gitlab,并添加一些测试以及通过gitlab runner进行构建。
项目详情
openstack-interpreter-0.4.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ec57c625d9b89217f438e8ca0bb696168112cf7303f300a2c4a950aa593f8b65 |
|
MD5 | dee61067e501211a59ecbc3970e6d9f9 |
|
BLAKE2b-256 | 09456ce1209badd15ac6880d122ed273096c6273b75ac8be5ec714a573b3d819 |