使用 nova 客户端通过 Python OpenStack API 显示服务器详细信息

Show Server details via Python OpenStack API using the nova client

我正在尝试将我的 BASH 脚本转换为 Python,但很难找到 openstack server show 或 [=25 的等效代码=]openstack 服务器列表 --long。我想知道我的服务器当前位于哪个主机,并在将其迁移到另一个主机之前使用此信息进行检查。

查看最新的 novaclient documentation and its servers module,我发现了两个可能的命令,我希望它们能完成任务,但没有这样做:

list(detailed=True)

get(server)

这两天我一直在研究,我在堆栈溢出中找不到相同/相似的问题,所以我决定问一下,我希望有人能帮助我解决这个问题。

list 或 get 都可以。

举个例子,get 可以这样使用。

instance = nova_client.servers.get('my-server')
print(instance.name)
print(instance.addresses)
print(instance.status)

或者使用列表。

for instance in nova_client.servers.list():
    print(instance.name)
    print(instance.addresses)
    print(instance.status)

如果您想要一种简单的方法来了解您可以获得的数据类型,您可以简单地使用 Python 内置 dir.

instance = nova_client.servers.get('my-server')
print(dir(instance))

'my-server' 需要是 instance.id 中的 ID,服务器名称无效。
我还不能评论,所以我写了一个答案。