5

我已经接受了这样一个事实,即 EC2 用户习惯的许多功能(特别是标记)在 OpenStack 中并不存在。然而,有一个功能的缺席让我发疯。

尽管 OpenStack 不完全支持实例标签(就像 EC2 一样),但它确实具有实例名称的概念。此名称由 Web UI 公开,甚至允许您设置它:

实例列表中的实例名称

编辑实例名称

此名称也通过nova list命令行实用程序公开。

但是(这是我的问题)这个字段没有通过nova-ec2API 层公开。他们将其与现有 EC2 平台工具集成的最简洁方法是模拟名称为“Name”的实例标签,但他们不这样做。更重要的是,我不知道可以使用哪个 Nova API 端点来读取和写入名称( API 参考中似乎没有记录);但当然它必须以某种方式成为可能,因为网络客户端并且nova-client都可以以某种方式做到这一点。

目前,每次启动新实例时,我都不得不从网站手动更改它。(我无法在实例创建期间执行此操作,因为我使用的是nova-ec2API,而不是nova命令行客户端)。

我的问题是:

  1. 有没有办法通过 EC2 API 层读取/写入实例名称?
  2. 如果做不到这一点,那么以编程方式设置它的 REST 端点是什么?
  3. (奖励):Nova 在支持通用实例标记方面取得了哪些进展?
4

1 回答 1

4

Pythonnovaclient.v1_1包在server对象上有一个方法:

def update(self, server, name=None):
    """
    Update the name or the password for a server.

    :param server: The :class:`Server` (or its ID) to update.
    :param name: Update the server's name.
    """
    if name is None:
        return

    body = {
        "server": {
            "name": name,
        },
    }

    self._update("/servers/%s" % base.getid(server), body)

这表明您可以通过 POST 将以下 JSON 更新为服务器名称http://nova-api:port/v2.0/servers/{server-id}

{
  "server": {
      "name": "new_name"
  }
}

当然,X-Auth-Token 仍然需要所有常用的身份验证标头(即来自您的 Keystone 服务器),因此对于您喜欢的任何语言使用客户端库来管理所有这些可能更容易。

于 2012-06-04T22:09:44.467 回答