跳转到主要内容

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 (18.4 kB 查看哈希值)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面