将 attachmentId 添加到 os-volume_attachments API 的响应中¶
本规范旨在概述为 Nova 的 os-volume_attachments API 的响应添加卷附件 ID 的用例。
问题描述¶
在使用 Cinder 卷附件 API 将卷附加到实例时,Nova 会在块设备映射表中记录 Cinder 卷附件的 ID。但是,目前这未通过 Nova 的 os-volume_attachments API 暴露,只能通过 Cinder 的附件 API 或直接查询 Nova 的数据库来查看。
例如,使用 v2.79 微版本 对 API 进行 GET 操作,会提供以下响应
GET
/servers/{server_id}/os-volume_attachments
{
"volumeAttachments": [
{
"delete_on_termination": false,
"device": "/dev/sdc",
"id": "227cc671-f30b-4488-96fd-7d0bf13648d8",
"serverId": "d5e4ae35-ac0e-4311-a8c5-0ee863e951d9",
"tag": null,
"volumeId": "227cc671-f30b-4488-96fd-7d0bf13648d8"
},
{
"delete_on_termination": true,
"device": "/dev/sdb",
"id": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
"serverId": "d5e4ae35-ac0e-4311-a8c5-0ee863e951d9",
"tag": "foo",
"volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113"
}
]
}
GET
/servers/{server_id}/os-volume_attachments/{volume_id}
{
"volumeAttachment": {
"delete_on_termination": true,
"device": "/dev/sdb",
"id": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
"serverId": "2aad99d3-7aa4-41e9-b4e6-3f960b115d68",
"tag": "foo",
"volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113"
}
}
注意
上述响应中返回的 id 是 Nova 块设备映射记录的 ID,而不是 Cinder 中卷附件的 ID。
这使得 API 在大多数卷附加故障排除场景中都无法使用,例如,在尝试确保 Nova 具有现有且正确更新的卷附件记录时。
用例¶
作为操作员或用户,我希望能够确认与 Nova 中给定块设备映射记录关联的 Cinder 卷附件的 ID。
提议的变更¶
引入一个新的微版本,该版本将在 GET /servers/{server_id}/os-volume_attachments 或 GET /servers/{server_id}/os-volume_attachments/{volume_id} 的响应中显示给定块设备映射记录的卷附件 ID。
备选方案¶
我们可以通过 nova-manage 命令向操作员提供此信息,但是这需要数据库访问权限,并且对用户不可用。
数据模型影响¶
无,attachment_id 已经为每个块设备映射记录存储。
REST API 影响¶
在新微版本中,在以下响应中暴露 attachmentId
注意
在实施本规范时,达成一致意见,在新的微版本下,将重复 volumeId 字段的 id 字段删除,并添加底层 BlockDeviceMapping 对象的 uuid 在新的 bdm_uuid 字段下。
GET
/servers/{server_id}/os-volume_attachments
{
"volumeAttachments": [
{
"delete_on_termination": false,
"device": "/dev/sdc",
"serverId": "d5e4ae35-ac0e-4311-a8c5-0ee863e951d9",
"tag": null,
"volumeId": "227cc671-f30b-4488-96fd-7d0bf13648d8",
"attachmentId": "1ce1a7ee-c88c-41ce-a4d3-ce78b1ab20bf",
"bdm_uuid": "2420cbab-4aef-409f-97c0-b60c0e1d6902"
},
{
"delete_on_termination": true,
"device": "/dev/sdb",
"serverId": "d5e4ae35-ac0e-4311-a8c5-0ee863e951d9",
"tag": "foo",
"volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
"attachmentId": "810511b1-ab87-4f42-9033-199543376ddb",
"bdm_uuid": "e50caeba-b3f0-4a59-9973-7125d232d511"
}
]
}
GET
/servers/{server_id}/os-volume_attachments/{volume_id}
{
"volumeAttachment": {
"delete_on_termination": true,
"device": "/dev/sdb",
"serverId": "2aad99d3-7aa4-41e9-b4e6-3f960b115d68",
"tag": "foo",
"volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
"attachmentId": "1ce1a7ee-c88c-41ce-a4d3-ce78b1ab20bf",
"bdm_uuid": "2420cbab-4aef-409f-97c0-b60c0e1d6902"
}
}
安全影响¶
无,操作员和用户可以通过 Cinder 附件 API 访问底层的附件详细信息,我们在这里暴露的只是卷附件到 Nova 中块设备映射记录的映射。
通知影响¶
无
其他最终用户影响¶
当提供足够高的微版本时,nova volume-attachments $SERVER 和 openstack server volume list $SERVER 命令将被扩展以暴露 attachment_id。
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
升级影响¶
无
实现¶
负责人¶
- 主要负责人
lyarwood
其他贡献者
功能联络人¶
- 功能联络人
lyarwood
工作项¶
依赖项¶
无
测试¶
将编写 API 模式、功能和 tempest 集成测试。
文档影响¶
将更新 API 参考、微版本历史记录、openstackclient 和 novaclient 文档。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Xena |
引入 |