已废弃:GlanceAPISpec
Glance API 规范
Glance <=> Nova 集成需要这些组件
- Glance - 虚拟机镜像管理服务
- Parallax - 镜像注册服务
- Teller - 镜像交付服务
- 客户端类
- `glance.client.GlanceClient` - Nova 中用于查询 Glance 镜像的客户端
- `glance.client.ParallaxClient` - 用于查询 Parallax 可用镜像的客户端工具
- `glance.client.TellerClient` - 用于分块检索镜像的客户端工具
- `glance.client.GlanceClient` - Nova 中用于查询 Glance 镜像的客户端
Parallax API 命令
本节描述用于创建、列出、修改和删除镜像元数据的 Parallax REST API。
获取所有公共镜像的 id/name 基本信息
GET http://parallax.openstack.org/images
返回一个映射,其中包含一个映射列表,其中包含以 JSON 编码的公共镜像的详细信息
{
"images":
[
{"id": 1, "name": "My Image 1"},
{"id": 2, "name": "My Image 2"},
]
}
获取所有公共镜像的详细信息
GET http://parallax.openstack.org/images/detail
返回一个映射,其中包含一个映射列表,其中包含以 JSON 编码的公共镜像的详细信息
{
"images":
[
{
"id": 1,
"name": "My Image",
"status": "available",
"image_type": "kernel"
"is_public": true,
"properties": { "mykey": "myvalue" },
"files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
"size": 101 } ]
}
]
}
笔记
`properties` 元素是镜像可能保存的自定义键/值对的映射。
`files` 元素是包含组成镜像的块以及块大小的映射列表
获取单个镜像的元数据
GET http://parallax.openstack.org/images/<ID>
以 JSON 编码的形式返回镜像的元数据
{
"image":
{
"id": 1,
"name": "My Image",
"status": "available",
"image_type": "kernel"
"is_public": true,
"properties": { "mykey": "myvalue" },
"files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
"size": 101 } ]
}
}
笔记
返回的字典仅包含一个元素“image”的原因是为了 XML 转换,其中根元素将是 `<image>` 而不是根 XML 命名空间。
`properties` 元素是镜像可能保存的自定义键/值对的映射。
`files` 元素是包含组成镜像的块以及块大小的映射列表
异常
404:未找到镜像
注册/创建新镜像
POST http://parallax.openstack.org/images
请求的主体应是 JSON 编码的镜像元数据映射
{
"image":
{
"name": "My Image",
"status": "available",
"image_type": "kernel"
"is_public": true,
"properties": { "mykey": "myvalue" },
"files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
"size": 101 } ]
}
}
如果成功,返回的响应将是 JSON 编码的 Parallax 中新创建的镜像的映射,包括填充了新镜像的内部标识符的 `id` 列
{
"image":
{
"id": 1,
"name": "My Image",
"status": "available",
"image_type": "kernel"
"is_public": true,
"properties": { "mykey": "myvalue" },
"files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
"size": 101 } ]
}
}
笔记
主体字典和结果字典仅包含一个元素“image”的原因是为了 XML 转换,其中根元素将是 `<image>` 而不是根 XML 命名空间。
`properties` 元素是镜像可能保存的自定义键/值对的映射。
`files` 元素是包含组成镜像的块以及块大小的映射列表
更新现有镜像的元数据
PUT http://parallax.openstack.org/images/<ID>
请求的主体应是 JSON 编码的镜像元数据映射
{
"image":
{
"id": 2349823,
"name": "My Image",
"status": "disabled",
"image_type": "kernel"
"is_public": true,
"properties": { "mykey": "myvalue" },
"files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
"size": 101 } ]
}
}
如果成功,返回的响应将是 JSON 编码的 Parallax 中更新的镜像元数据映射
{
"image":
{
"id": 2349823,
"name": "My Image",
"status": "disabled",
"image_type": "kernel"
"is_public": true,
"metadata": { "mykey": "myvalue" },
"files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
"size": 101 } ]
}
}
笔记
主体字典和结果字典仅包含一个元素“image”的原因是为了 XML 转换,其中根元素将是 `<image>` 而不是根 XML 命名空间。
`properties` 元素是镜像可能保存的自定义键/值对的映射。
`files` 元素是包含组成镜像的块以及块大小的映射列表
异常
404:未找到镜像
从注册表中删除现有镜像
DELETE http://parallax.openstack.org/images/<ID>
请求的主体将被忽略。
异常
404:未找到镜像
Teller API 命令
本节描述 Teller REST API。
获取镜像
GET http://teller.openstack.org/images/<ID>
将虚拟机镜像数据作为响应主体返回。
异常
404:未找到镜像
存储镜像
POST http://teller.openstack.org/images/<ID>
POST 请求的主体应是 mime 编码的数据块,代表要存储的镜像。
注意:这只是将原始镜像数据存储在 Teller 的后端。如果您负责存储镜像的元数据,则应使用对 Parallax API 的类似调用来执行此操作。
立即返回一个图像信息映射,指示图像的状态
{
'image':
{
'id': identifier for image,
'status': 'pending'
}
}
更新镜像
没有更新镜像的操作。创建后所有镜像都是不可变的。
删除镜像
DELETE http://teller.openstack.org/images/<ID>
成功时返回 200 OK
当 URI 中的镜像不存在时返回 404