【问题标题】:Show Server details via Python OpenStack API using the nova client使用 nova 客户端通过 Python OpenStack API 显示服务器详细信息
【发布时间】:2018-10-10 17:52:03
【问题描述】:

我正在尝试将我的 BASH 脚本转换为 Python,但在找到 openstack server showopenstack server list --long 的等效代码时遇到了困难。我想知道我的服务器当前位于哪个主机,并在将其迁移到另一台主机之前使用此信息进行检查。

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

list(detailed=True)

  • 获取服务器列表
  • detailed=True 应该返回详细的服务器信息(可选)。
  • 这会返回带有名称的常规服务器列表。

get(server)

  • 获取服务器
  • 这只会返回服务器的名称。

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

【问题讨论】:

    标签: python bash python-2.7 openstack openstack-nova


    【解决方案1】:

    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))
    

    【讨论】:

    • 您好 eanderson,使用 dir(),我能够找到服务器的主机属性。我还使用 Python 内置的 getattr() 来显示它的值。非常感谢!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-26
      • 2019-09-23
      • 2016-05-04
      • 2020-08-03
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      相关资源
      最近更新 更多