Adr*_*scu 5 cloud amazon-ec2 openstack
我已经让自己认识到EC2用户习惯使用的许多功能(特别是标记)在OpenStack中不存在.然而,有一项功能的缺席让我发疯.
尽管OpenStack并不完全支持实例标签(如EC2那样),但它确实具有实例名称的概念.此UI名称由Web UI公开,甚至允许您设置它:


此名称也通过nova list命令行实用程序公开.
但是(这是我的问题)此字段不会通过nova-ec2API层公开.他们将此与现有EC2平台工具集成的最简洁方法是模拟名称为"Name"的实例Tag,但他们不会这样做.更重要的是,我无法弄清楚我可以使用哪个Nova API端点来读取和写入名称(它似乎没有在API参考文档中记录); 但当然,自从Web客户端以来,它必须以某种方式可行,并且nova-client可以以某种方式实现它.
目前,我每次启动新实例时都被迫从网站上手动更改它.(我在实例创建期间无法执行此操作,因为我使用的是nova-ec2API,而不是nova命令行客户端).
我的问题是:
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)
Run Code Online (Sandbox Code Playgroud)
这表示您可以通过将以下 JSON 发布到 来更新服务器的名称http://nova-api:port/v2.0/servers/{server-id}:
{
"server": {
"name": "new_name"
}
}
Run Code Online (Sandbox Code Playgroud)
当然,X-Auth-Token
仍然需要所有常用的身份验证标头(即来自 Keystone 服务器的标头),因此对于您喜欢管理所有内容的任何语言使用客户端库可能更容易。