Block Storage API V2 (已移除)

注意

Block Storage API 的版本 2 在 Pike 版本中已被弃用,并在 Xena 开发周期中移除。 本文档仅为历史目的而保留。

版本 3 的 Block Storage API 在 Mitaka 版本中引入。 版本 3.0 是在 /v3 端点处默认的微版本,其设计与版本 2 相同。 因此,使用 Block Storage API v2 的脚本应该可以轻松地适应版本 3,只需进行少量更改。

API 版本

GET
/

List Api Versions

列出所有 Block Storage API 版本的相关信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

300 - 多重选择

资源对应于多个表示形式。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

405 - 方法不允许

该方法对于此端点和资源无效。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

503 - 服务不可用

服务现在无法处理请求。

响应

Example List Api Versions: JSON request

{
    "versions": [
        {
            "status": "SUPPORTED",
            "updated": "2014-06-28T12:20:21Z",
            "links": [
                {
                    "href": "https://docs.openstack.org/",
                    "type": "text/html",
                    "rel": "describedby"
                },
                {
                    "href": "http://10.0.2.15:8776/v2/",
                    "rel": "self"
                }
            ],
            "min_version": "",
            "version": "",
            "media-types": [
                {
                    "base": "application/json",
                    "type": "application/vnd.openstack.volume+json;version=1"
                }
            ],
            "id": "v2.0"
        },
        {
            "status": "CURRENT",
            "updated": "2016-02-08T12:20:21Z",
            "links": [
                {
                    "href": "https://docs.openstack.org/",
                    "type": "text/html",
                    "rel": "describedby"
                },
                {
                    "href": "http://10.0.2.15:8776/v3/",
                    "rel": "self"
                }
            ],
            "min_version": "3.0",
            "version": "{Current_Max_Version}",
            "media-types": [
                {
                    "base": "application/json",
                    "type": "application/vnd.openstack.volume+json;version=1"
                }
            ],
            "id": "v3.0"
        }
    ]
}

可用区 (os-availability-zone)

列出可用区信息。

GET
/v2/{project_id}/os-availability-zone

Get Availability Zone Information

列出可用区信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

响应参数

名称

入参

类型

描述

project_id

body

字符串

项目的 UUID。

availabilityZoneInfo

body

数组

可用区信息列表。

zoneName

body

字符串

可用区名称。

zoneState

body

对象

可用区的当前状态。

available

body

布尔值

是否可用区可供使用。

响应示例

{
   "availabilityZoneInfo": [{
      "zoneState": {
         "available": true
      },
      "zoneName": "nova"
   }]
}

备份 (backups)

备份是存储在外部服务中的卷的完整副本。 可以配置该服务。 唯一支持的服务是对象存储。 随后可以将备份从外部服务恢复到最初拍摄备份的相同卷,或恢复到新卷。

在创建、列出或删除备份时,这些状态值是可能的

备份状态

状态

描述

creating

备份正在创建中。

available

备份已准备好恢复到卷。

deleting

备份正在删除中。

error

备份发生错误。

恢复中

备份正在恢复到卷。

error_deleting

删除备份时发生错误。

如果发生错误,可以在备份的 fail_reason 字段中找到有关错误的更多信息。

GET
/v2/{project_id}/backups/detail

List backups with details

列出项目有权访问的 Block Storage 备份,并显示详细信息。

Response codes

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

sort_key (可选)

查询

字符串

按属性排序。有效值是 namestatuscontainer_formatdisk_formatsizeidcreated_atupdated_at。 默认值为 created_at。 API 使用 sort_key 属性值的自然排序方向。

sort_dir (可选)

查询

字符串

按一个或多个属性和排序方向组合进行排序。 如果在集合中省略排序方向,则默认值为 desc

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

响应参数

名称

入参

类型

描述

status

body

字符串

备份状态。 请参阅备份状态表以获取可能的状态值。

object_count

body

整数

备份中的对象数量。

fail_reason

body

字符串

如果备份失败,则失败的原因。 否则为 null。

description (可选)

body

字符串

备份描述或 null。

links

body

数组

备份链接。

availability_zone (可选)

body

字符串

可用区的名称。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

name

body

字符串

备份名称。

has_dependent_backups (可选)

body

布尔值

如果此值为 true,则存在其他依赖于此备份的备份。

volume_id

body

字符串

卷的 UUID。

container (可选)

body

字符串

容器名称或 null。

backups

body

数组

一个 backup 对象列表。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

id

body

字符串

备份的 UUID。

is_incremental (可选)

body

布尔值

指示备份模式是否为增量备份。 如果此值为 true,则备份模式为增量备份。 如果此值为 false,则备份模式为完整备份。

data_timestamp

body

字符串

卷上的数据首次保存的时间。 如果它是来自卷的备份,它将与备份的 created_at 相同。 如果它是来自快照的备份,它将与快照的 created_at 相同。

snapshot_id (可选)

body

字符串

源卷快照的 UUID。

响应示例

{
    "backups": [
        {
            "availability_zone": "az1",
            "container": "volumebackups",
            "created_at": "2013-04-02T10:35:27.000000",
            "description": null,
            "fail_reason": null,
            "id": "2ef47aee-8844-490c-804d-2a8efe561c65",
            "links": [
                {
                    "href": "https://:8776/v2/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
                    "rel": "self"
                },
                {
                    "href": "https://:8776/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
                    "rel": "bookmark"
                }
            ],
            "name": "backup001",
            "object_count": 22,
            "size": 1,
            "status": "available",
            "volume_id": "e5185058-943a-4cb4-96d9-72c184c337d6",
            "is_incremental": true,
            "has_dependent_backups": false
        },
        {
            "availability_zone": "az1",
            "container": "volumebackups",
            "created_at": "2013-04-02T10:21:48.000000",
            "description": null,
            "fail_reason": null,
            "id": "4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
            "links": [
                {
                    "href": "https://:8776/v2/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
                    "rel": "self"
                },
                {
                    "href": "https://:8776/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
                    "rel": "bookmark"
                }
            ],
            "name": "backup002",
            "object_count": 22,
            "size": 1,
            "status": "available",
            "volume_id": "e5185058-943a-4cb4-96d9-72c184c337d6",
            "is_incremental": true,
            "has_dependent_backups": false
        }
    ]
}
GET
/v2/{project_id}/backups/{backup_id}

Show backup details

显示备份的详细信息。

Response codes

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

backup_id

路径

字符串

备份的 UUID。

响应参数

名称

入参

类型

描述

status

body

字符串

备份状态。 请参阅备份状态表以获取可能的状态值。

object_count

body

整数

备份中的对象数量。

container (可选)

body

字符串

容器名称或 null。

description (可选)

body

字符串

备份描述或 null。

links

body

数组

备份链接。

availability_zone (可选)

body

字符串

可用区的名称。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

name

body

字符串

备份名称。

has_dependent_backups (可选)

body

布尔值

如果此值为 true,则存在其他依赖于此备份的备份。

volume_id

body

字符串

卷的 UUID。

fail_reason

body

字符串

如果备份失败,则失败的原因。 否则为 null。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

备份中

body

对象

一个 backup 对象。

id

body

字符串

备份的 UUID。

is_incremental (可选)

body

布尔值

指示备份模式是否为增量备份。 如果此值为 true,则备份模式为增量备份。 如果此值为 false,则备份模式为完整备份。

data_timestamp

body

字符串

卷上的数据首次保存的时间。 如果它是来自卷的备份,它将与备份的 created_at 相同。 如果它是来自快照的备份,它将与快照的 created_at 相同。

snapshot_id (可选)

body

字符串

源卷快照的 UUID。

Response Example

{
    "backup": {
        "availability_zone": "az1",
        "container": "volumebackups",
        "created_at": "2013-04-02T10:35:27.000000",
        "description": null,
        "fail_reason": null,
        "id": "2ef47aee-8844-490c-804d-2a8efe561c65",
        "links": [
            {
                "href": "https://:8776/v2/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
                "rel": "self"
            },
            {
                "href": "https://:8776/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
                "rel": "bookmark"
            }
        ],
        "name": "backup001",
        "object_count": 22,
        "size": 1,
        "status": "available",
        "volume_id": "e5185058-943a-4cb4-96d9-72c184c337d6",
        "is_incremental": true,
        "has_dependent_backups": false
    }
}
DELETE
/v2/{project_id}/backups/{backup_id}

删除备份

删除备份。

Response codes

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

backup_id

路径

字符串

备份的 UUID。

POST
/v2/{project_id}/backups/{backup_id}/restore

恢复备份

Restores a Block Storage backup to an existing or new Block Storage volume.

您必须指定卷的 UUID 或名称。 如果同时指定 UUID 和名称,则 UUID 优先。

如果指定 volume_id,则卷的状态必须为 available

Response codes

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

413 - 请求实体过大

无法完成此操作。

请求

名称

入参

类型

描述

restore

body

对象

一个 restore 对象。

name

body

字符串

备份名称。

volume_id

body

字符串

卷的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

backup_id

路径

字符串

备份的 UUID。

请求示例

{
    "restore": {
        "name": "vol-01",
        "volume_id": "64f5d2fb-d836-4063-b7e2-544d5c1ff607"
    }
}

响应参数

名称

入参

类型

描述

restore

body

对象

一个 restore 对象。

backup_id

路径

字符串

备份的 UUID。

volume_id

body

字符串

卷的 UUID。

volume_name

body

字符串

卷名称。

响应示例

{
    "restore": {
        "backup_id": "2ef47aee-8844-490c-804d-2a8efe561c65",
        "volume_id": "795114e8-7489-40be-a978-83797f2c1dd3"
    }
}
POST
/v2/{project_id}/backups

创建备份

Creates a Block Storage backup from a volume.

卷的状态必须为 available,或者如果使用了 force 标志,则也可以创建 in-use 卷的备份。

Response codes

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

container (可选)

body

字符串

容器名称或 null。

description (可选)

body

字符串

备份描述或 null。

incremental (可选)

body

布尔值

备份模式。 有效值为 true 表示增量备份模式,或 false 表示完整备份模式。 默认值为 false

volume_id

body

字符串

卷的 UUID。

force (可选)

body

布尔值

指示是否备份,即使卷已附加。 默认值为 false

备份中

body

对象

一个 backup 对象。

name

body

字符串

备份名称。

project_id

路径

字符串

多租户云中项目的 UUID。

snapshot_id (可选)

body

字符串

源卷快照的 UUID。

请求示例

{
    "backup": {
        "container": null,
        "description": null,
        "name": "backup001",
        "volume_id": "64f5d2fb-d836-4063-b7e2-544d5c1ff607",
        "incremental": true
    }
}

响应参数

名称

入参

类型

描述

备份中

body

对象

一个 backup 对象。

id

body

字符串

备份的 UUID。

links

body

数组

备份链接。

name

body

字符串

备份名称。

GET
/v2/{project_id}/backups

列出备份

Lists Block Storage backups to which the project has access.

Response codes

成功

代码

原因

200 - 正常

请求成功。

Request

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

sort_key (可选)

查询

字符串

按属性排序。有效值是 namestatuscontainer_formatdisk_formatsizeidcreated_atupdated_at。 默认值为 created_at。 API 使用 sort_key 属性值的自然排序方向。

sort_dir (可选)

查询

字符串

按一个或多个属性和排序方向组合进行排序。 如果在集合中省略排序方向,则默认值为 desc

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

响应参数

名称

入参

类型

描述

backups

body

数组

一个 backup 对象列表。

id

body

字符串

备份的 UUID。

links

body

数组

备份链接。

name

body

字符串

备份名称。

响应示例

{
    "backups": [
        {
            "id": "2ef47aee-8844-490c-804d-2a8efe561c65",
            "links": [
                {
                    "href": "https://:8776/v2/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
                    "rel": "self"
                },
                {
                    "href": "https://:8776/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
                    "rel": "bookmark"
                }
            ],
            "name": "backup001"
        },
        {
            "id": "4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
            "links": [
                {
                    "href": "https://:8776/v2/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
                    "rel": "self"
                },
                {
                    "href": "https://:8776/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
                    "rel": "bookmark"
                }
            ],
            "name": "backup002"
        }
    ]
}
GET
/v2/{project_id}/backups/{backup_id}/export_record

Export backup

导出备份信息。

Response codes

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

backup_id

路径

字符串

备份的 UUID。

Response Parameters

名称

入参

类型

描述

backup-record

body

对象

一个对象,记录卷备份元数据,包括 backup_servicebackup_url

backup_service

body

字符串

用于执行备份的服务。

backup_url

body

字符串

用于定位备份的标识符字符串。

响应示例

{
    "backup-record": {
        "backup_service": "cinder.backup.drivers.swift",
        "backup_url": "eyJzdGF0"
    }
}
POST
/v2/{project_id}/backups/import_record

Import backup

导入备份信息。

Response codes

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

503 - 服务不可用

服务现在无法处理请求。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

backup-record

body

对象

一个对象,记录卷备份元数据,包括 backup_servicebackup_url

backup_service

body

字符串

用于执行备份的服务。

backup_url

body

字符串

用于定位备份的标识符字符串。

请求示例

{
    "backup-record": {
        "backup_service": "cinder.backup.drivers.swift",
        "backup_url": "eyJzdGF0"
    }
}

响应参数

名称

入参

类型

描述

id

body

字符串

备份的 UUID。

links

body

数组

备份链接。

name

body

字符串

备份名称。

响应示例

{
    "backup": {
        "id": "deac8b8c-35c9-4c71-acaa-889c2d5d5c8e",
        "links": [
            {
                "href": "https://:8776/v2/c95fc3e4afe248a49a28828f286a7b38/backups/deac8b8c-35c9-4c71-acaa-889c2d5d5c8e",
                "rel": "self"
            },
            {
                "href": "https://:8776/c95fc3e4afe248a49a28828f286a7b38/backups/deac8b8c-35c9-4c71-acaa-889c2d5d5c8e",
                "rel": "bookmark"
            }
        ],
        "name": null
    }
}

Backup actions (backups, action)

强制删除备份并重置备份状态。

POST
/v2/{project_id}/backups/{backup_id}/action

Force-delete backup

强制删除备份。 在请求主体中指定 os-force_delete 操作。

此操作将删除备份和任何备份数据。

如果备份驱动程序不支持此操作,则返回 405 状态代码。

Response codes

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

404 - Not Found

找不到请求的资源。

405 - 方法不允许

该方法对于此端点和资源无效。

请求

名称

入参

类型

描述

os-force_delete

body

字符串

The os-force_delete action.

project_id

路径

字符串

多租户云中项目的 UUID。

backup_id

路径

字符串

备份的 UUID。

Request Example

{
    "os-force_delete": {}
}
POST
/v2/{project_id}/backups/{backup_id}/action

Reset backup’s status

重置备份的状态。 在请求主体中指定 os-reset_status 操作。

Response codes

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

status

body

字符串

备份的状态。

os-reset_status

body

对象

The os-reset_status action.

project_id

路径

字符串

多租户云中项目的 UUID。

backup_id

路径

字符串

备份的 UUID。

请求示例

{
    "os-reset_status": {
        "status": "available"
    }
}

Capabilities for storage back ends (capabilities)

显示存储后端的功能。

GET
/v2/{project_id}/capabilities/{hostname}

Show back-end capabilities

显示主机上存储后端的功能。 hostname 的格式为 hostname@volume_backend_name

Response codes

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

hostname

路径

字符串

托管存储后端的宿主机的名称。

响应参数

名称

入参

类型

描述

pool_name

body

字符串

存储池的名称。

description (可选)

body

字符串

备份描述或 null。

volume_backend_name

body

字符串

后端卷的名称。

namespace

body

字符串

存储命名空间,例如 OS::Storage::Capabilities::foo

visibility

body

字符串

卷类型访问权限。

driver_version

body

字符串

驱动程序版本。

vendor_name

body

字符串

供应商名称。

properties

body

对象

后端卷功能列表,由 cinder 标准功能和供应商唯一属性组成。

storage_protocol

body

字符串

后端卷的存储后端。 例如,iSCSIFC

replication_targets

body

列表

用于在此后端上复制卷的卷后端列表。

display_name

body

字符串

卷后端功能名称。

响应示例

{
    "namespace": "OS::Storage::Capabilities::fake",
    "vendor_name": "OpenStack",
    "volume_backend_name": "lvmdriver-1",
    "pool_name": "pool",
    "driver_version": "2.0.0",
    "storage_protocol": "iSCSI",
    "display_name": "Capabilities of Cinder LVM driver",
    "description": "These are volume type options provided by Cinder LVM driver, blah, blah.",
    "visibility": "public",
    "replication_targets": [],
    "properties": {
        "compression": {
            "title": "Compression",
            "description": "Enables compression.",
            "type": "boolean"
        },
        "qos": {
            "title": "QoS",
            "description": "Enables QoS.",
            "type": "boolean"
        },
        "replication": {
            "title": "Replication",
            "description": "Enables replication.",
            "type": "boolean"
        },
        "thin_provisioning": {
            "title": "Thin Provisioning",
            "description": "Sets thin provisioning.",
            "type": "boolean"
        }
    }
}

一致性组快照

列出所有,列出所有详细信息,显示详细信息,创建和删除一致性组快照。

DELETE
/v2/{project_id}/cgsnapshots/{cgsnapshot_id}

Delete consistency group snapshot

删除一致性组快照。

Response codes

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

cgsnapshot_id

路径

字符串

一致性组快照的 ID。

GET
/v2/{project_id}/cgsnapshots/{cgsnapshot_id}

Show consistency group snapshot details

显示一致性组快照的详细信息。

Response codes

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

cgsnapshot_id

路径

字符串

一致性组快照的 ID。

响应参数

名称

入参

类型

描述

status (可选)

body

字符串

一致性组快照的 status

description (可选)

body

字符串

备份描述或 null。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

consistencygroup_id

body

字符串

一致性组的 UUID。

id

body

字符串

卷传输的 UUID。

name

body

字符串

卷传输的名称。

响应示例

{
    "cgsnapshot": {
        "id": "6f519a48-3183-46cf-a32f-41815f813986",
        "consistencygroup_id": "6f519a48-3183-46cf-a32f-41815f814444",
        "status": "available",
        "created_at": "2015-09-16T09:28:52.000000",
        "name": "my-cg1",
        "description": "my first consistency group"
    }
}
GET
/v2/{project_id}/cgsnapshots/detail

List consistency group snapshots with details

列出所有一致性组快照的详细信息。

Response codes

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

Response Parameters

名称

入参

类型

描述

status (可选)

body

字符串

一致性组快照的 status

description (可选)

body

字符串

备份描述或 null。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

consistencygroup_id

body

字符串

一致性组的 UUID。

id

body

字符串

卷传输的 UUID。

name

body

字符串

卷传输的名称。

响应示例

{
    "cgsnapshots": [
        {
            "id": "6f519a48-3183-46cf-a32f-41815f813986",
            "consistencygroup_id": "6f519a48-3183-46cf-a32f-41815f814444",
            "status": "available",
            "created_at": "2015-09-16T09:28:52.000000",
            "name": "my-cg1",
            "description": "my first consistency group"
        },
        {
            "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148",
            "consistencygroup_id": "aed36625-a6d7-4681-ba59-c7ba3d18dddd",
            "status": "error",
            "created_at": "2015-09-16T09:31:15.000000",
            "name": "my-cg2",
            "description": "Edited description"
        }
    ]
}
GET
/v2/{project_id}/cgsnapshots

List consistency group snapshots

列出所有一致性组快照。

Response codes

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

响应参数

名称

入参

类型

描述

id

body

字符串

卷传输的 UUID。

name

body

字符串

卷传输的名称。

响应示例

{
    "cgsnapshots": [
        {
            "id": "6f519a48-3183-46cf-a32f-41815f813986",
            "name": "my-cg1"
        },
        {
            "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148",
            "name": "my-cg2"
        }
    ]
}
POST
/v2/{project_id}/cgsnapshots

Create consistency group snapshot

创建一致性组快照。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

name

body

字符串

卷传输的名称。

project_id

路径

字符串

多租户云中项目的 UUID。

请求示例

{
    "cgsnapshot": {
        "consistencygroup_id": "6f519a48-3183-46cf-a32f-41815f814546",
        "name": "firstcg",
        "description": "first consistency group",
        "user_id": "6f519a48-3183-46cf-a32f-41815f814444",
        "project_id": "6f519a48-3183-46cf-a32f-41815f815555",
        "status": "creating"
    }
}

响应参数

名称

入参

类型

描述

status (可选)

body

字符串

一致性组快照的 status

description (可选)

body

字符串

备份描述或 null。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

consistencygroup_id

body

字符串

一致性组的 UUID。

id

body

字符串

卷传输的 UUID。

name

body

字符串

卷传输的名称。

一致性组

一致性组使您能够在多个卷上以完全相同的时间点创建快照。 例如,数据库可能会将其表、日志和配置放在单独的卷上。 要从以前的时间点恢复此数据库,最好从相同的时间点一起恢复日志、表和配置。

使用策略配置文件来授予权限,以限制角色对这些操作的访问。

GET
/v2/{project_id}/consistencygroups

List consistency groups

列出一致性组。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

sort_key (可选)

查询

字符串

按属性排序。有效值是 namestatuscontainer_formatdisk_formatsizeidcreated_atupdated_at。 默认值为 created_at。 API 使用 sort_key 属性值的自然排序方向。

sort_dir (可选)

查询

字符串

按一个或多个属性和排序方向组合进行排序。 如果在集合中省略排序方向,则默认值为 desc

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

Response Parameters

名称

入参

类型

描述

id

body

字符串

卷传输的 UUID。

name

body

字符串

卷传输的名称。

响应示例

{
    "consistencygroups": [
        {
            "id": "6f519a48-3183-46cf-a32f-41815f813986",
            "name": "my-cg1"
        },
        {
            "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148",
            "name": "my-cg2"
        }
    ]
}
POST
/v2/{project_id}/consistencygroups

Create consistency group

创建一致性组。

Response codes

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

description

body

字符串

一致性组描述。

availability_zone (可选)

body

字符串

可用区的名称。

volume_types

body

字符串

用逗号分隔的卷类型列表。 在具有多个存储后端的环境中,调度程序将根据卷类型确定将卷发送到哪里。 有关如何使用卷类型来创建多个存储后端的信息,请参阅 配置多个存储后端

name (可选)

body

字符串

一致性组名称。

Request Example

{
    "consistencygroup": {
        "name": "firstcg",
        "description": "first consistency group",
        "volume_types": "type1,type2",
        "availability_zone": "az0"
    }
}

响应

名称

入参

类型

描述

status

body

字符串

一致性组的状态。

description (可选)

body

字符串

一致性组描述。

availability_zone (可选)

body

字符串

可用区的名称。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

volume_types

body

数组

卷类型列表。 在具有多个存储后端的环境中,调度程序将根据卷类型确定将卷发送到哪里。 有关如何使用卷类型来创建多个存储后端的信息,请参阅 配置多个存储后端

name (可选)

body

字符串

一致性组名称。

id (可选)

body

字符串

一致性组的 UUID。

响应示例

{
    "consistencygroup": {
        "status": "error",
        "description": "first consistency group",
        "availability_zone": "az0",
        "created_at": "2016-08-19T19:32:19.000000",
        "volume_types": ["type1", "type2"],
        "id": "63d1a274-de38-4384-a97e-475306777027",
        "name": "firstcg"
    }
}
GET
/v2/{project_id}/consistencygroups/{consistencygroup_id}

Show consistency group details

显示一致性组的详细信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

consistencygroup_id

body

字符串

一致性组的 UUID。

响应参数

名称

入参

类型

描述

status

body

字符串

一致性组的状态。

description (可选)

body

字符串

备份描述或 null。

availability_zone (可选)

body

字符串

可用区的名称。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

volume_types

body

数组

卷类型列表。 在具有多个存储后端的环境中,调度程序将根据卷类型确定将卷发送到哪里。 有关如何使用卷类型来创建多个存储后端的信息,请参阅 配置多个存储后端

id

body

字符串

卷传输的 UUID。

name

body

字符串

卷传输的名称。

Response Example

{
    "consistencygroup": {
        "id": "6f519a48-3183-46cf-a32f-41815f813986",
        "status": "available",
        "availability_zone": "az1",
        "created_at": "2015-09-16T09:28:52.000000",
        "name": "my-cg1",
        "description": "my first consistency group",
        "volume_types": [
            "123456"
        ]
    }
}
POST
/v2/{project_id}/consistencygroups/create_from_src

Create consistency group from source

从源创建一致性组。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

status

body

字符串

一致性组的状态。

user_id

body

字符串

用户的 UUID。

description (可选)

body

字符串

备份描述或 null。

cgsnapshot_id (可选)

body

字符串

一致性组快照的 UUID。

source_cgid (可选)

body

字符串

源一致性组的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

name

body

字符串

卷传输的名称。

project_id

body

字符串

项目的 UUID。

请求示例

{
    "consistencygroup-from-src": {
        "name": "firstcg",
        "description": "first consistency group",
        "cgsnapshot_id": "6f519a48-3183-46cf-a32f-41815f813986",
        "source_cgid": "6f519a48-3183-46cf-a32f-41815f814546",
        "user_id": "6f519a48-3183-46cf-a32f-41815f815555",
        "project_id": "6f519a48-3183-46cf-a32f-41815f814444",
        "status": "creating"
    }
}
POST
/v2/{project_id}/consistencygroups/{consistencygroup_id}/delete

删除一致性组

删除一个一致性组。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

force (可选)

body

布尔值

指示是否备份,即使卷已附加。 默认值为 false

project_id

路径

字符串

多租户云中项目的 UUID。

consistencygroup_id

body

字符串

一致性组的 UUID。

请求示例

{
    "consistencygroup": {
        "force": false
    }
}
GET
/v2/{project_id}/consistencygroups/detail

列出带有详细信息的一致性组

列出带有详细信息的一致性组。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

sort_key (可选)

查询

字符串

按属性排序。有效值是 namestatuscontainer_formatdisk_formatsizeidcreated_atupdated_at。 默认值为 created_at。 API 使用 sort_key 属性值的自然排序方向。

sort_dir (可选)

查询

字符串

按一个或多个属性和排序方向组合进行排序。 如果在集合中省略排序方向,则默认值为 desc

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

响应参数

名称

入参

类型

描述

status

body

字符串

一致性组的状态。

description (可选)

body

字符串

备份描述或 null。

availability_zone (可选)

body

字符串

可用区的名称。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

volume_types

body

数组

卷类型列表。 在具有多个存储后端的环境中,调度程序将根据卷类型确定将卷发送到哪里。 有关如何使用卷类型来创建多个存储后端的信息,请参阅 配置多个存储后端

id

body

字符串

卷传输的 UUID。

name

body

字符串

卷传输的名称。

响应示例

{
    "consistencygroups": [
        {
            "id": "6f519a48-3183-46cf-a32f-41815f813986",
            "status": "available",
            "availability_zone": "az1",
            "created_at": "2015-09-16T09:28:52.000000",
            "name": "my-cg1",
            "description": "my first consistency group",
            "volume_types": [
                "123456"
            ]
        },
        {
            "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148",
            "status": "error",
            "availability_zone": "az2",
            "created_at": "2015-09-16T09:31:15.000000",
            "name": "my-cg2",
            "description": "Edited description",
            "volume_types": [
                "234567"
            ]
        }
    ]
}
PUT
/v2/{project_id}/consistencygroups/{consistencygroup_id}/update

更新一致性组

更新一致性组。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

remove_volumes (可选)

body

字符串

要从卷一致性组中删除的一个或多个卷 UUID,用逗号分隔。

description (可选)

body

字符串

备份描述或 null。

add_volumes (可选)

body

字符串

要添加到卷一致性组的一个或多个卷 UUID,用逗号分隔。

name

body

字符串

卷传输的名称。

project_id

路径

字符串

多租户云中项目的 UUID。

consistencygroup_id

body

字符串

一致性组的 UUID。

请求示例

{
    "consistencygroup": {
        "name": "my_cg",
        "description": "My consistency group",
        "add_volumes": "volume-uuid-1,volume-uuid-2",
        "remove_volumes": "volume-uuid-8,volume-uuid-9"
    }
}

Hosts 扩展 (os-hosts)

仅限管理员,具体取决于策略设置。

列出、显示主机。

GET
/v2/{admin_project_id}/os-hosts

列出所有主机

列出所有主机摘要信息,这些信息未被禁用。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求

名称

入参

类型

描述

admin_project_id

路径

字符串

管理项目的 UUID。

响应参数

名称

入参

类型

描述

service-status

body

字符串

服务的状态。可以是 availableunavailable

服务

body

字符串

正在主机上运行的服务的名称。

zone

body

字符串

可用区名称。

service-state

body

字符串

服务的状态。可以是 enableddisabled

host_name

body

字符串

托管存储后端的宿主机的名称,格式可能为 host@backend

last-update

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

响应示例

{
    "hosts": [{
        "service-status": "available",
        "service": "cinder-backup",
        "zone": "nova",
        "service-state": "enabled",
        "host_name": "node1",
        "last-update": "2017-03-09T21:38:41.000000"
    },
    {
        "service-status": "available",
        "service": "cinder-scheduler",
        "zone": "nova",
        "service-state": "enabled",
        "host_name": "node1",
        "last-update": "2017-03-09T21:38:38.000000"
    },
    {
        "service-status": "available",
        "service": "cinder-volume",
        "zone": "nova",
        "service-state": "enabled",
        "host_name": "node1@lvm",
        "last-update": "2017-03-09T21:38:35.000000"
    }]
}
GET
/v2/{admin_project_id}/os-hosts/{host_name}

显示宿主机详情

显示 cinder-volume 主机的卷和快照详细信息。

注意: 此 API 专门用于 cinder-volume 主机。它对其他 Cinder 服务主机或禁用 cinder-volume 服务的宿主机无效。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

admin_project_id

路径

字符串

管理项目的 UUID。

host_name

路径

字符串

托管存储后端的宿主机的名称。

响应

名称

入参

类型

描述

volume_count

body

字符串

卷总数。

total_volume_gb

body

字符串

已使用的 GiB(千兆字节)总量。

total_snapshot_gb

body

字符串

已使用的快照总数。

project

body

字符串

主机资源所属的项目 UUID。在摘要资源中,该值为 (total)

host

body

字符串

托管存储后端的宿主机的名称,格式可能为 host@backend

snapshot_count

body

整数

已使用的快照总数。

示例:显示主机详细信息

{
    "host": [{
            "resource": {
                "volume_count": "8",
                "total_volume_gb": "11",
                "total_snapshot_gb": "1",
                "project": "(total)",
                "host": "node1@rbd-sas",
                "snapshot_count": "1"
            }
        },
        {
            "resource": {
                "volume_count": "8",
                "total_volume_gb": "11",
                "total_snapshot_gb": "1",
                "project": "f21a9c86d7114bf99c711f4874d80474",
                "host": "node1@rbd-sas",
                "snapshot_count": "1"
            }
        }]
}

配额 (limits)

显示项目的绝对配额。

绝对配额值为 -1 表示该项目的绝对配额是无限的。

GET
/v2/{project_id}/limits

显示绝对配额

显示项目的绝对配额。

绝对配额值为 -1 表示该项目的绝对配额是无限的。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

403 - 禁止

策略不允许当前用户执行此操作。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

响应参数

名称

入参

类型

描述

totalSnapshotsUsed

body

整数

已使用的快照总数。

maxTotalBackups

body

整数

最大备份数量。

maxTotalVolumeGigabytes

body

整数

最大卷总量,以 GiB(千兆字节)为单位。

限制

body

对象

一个 limit 对象列表。

maxTotalSnapshots

body

整数

最大快照数量。

maxTotalBackupGigabytes

body

整数

备份总量的最大值,以 GiB(千兆字节)为单位。

totalBackupGigabytesUsed

body

整数

已使用的备份 GiB(千兆字节)总量。

maxTotalVolumes

body

整数

最大卷数量。

totalVolumesUsed

body

整数

已使用的卷总数。

rate

body

数组

卷复制带宽速率限制,用于缓解实例数据访问速度变慢的问题。

totalBackupsUsed

body

整数

已使用的备份总数。

totalGigabytesUsed

body

整数

已使用的 GiB(千兆字节)总量。

absolute

body

对象

一个 absolute 配额对象。

响应示例

{
    "limits": {
        "rate": [],
        "absolute": {
            "totalSnapshotsUsed": 0,
            "maxTotalBackups": 10,
            "maxTotalVolumeGigabytes": 1000,
            "maxTotalSnapshots": 10,
            "maxTotalBackupGigabytes": 1000,
            "totalBackupGigabytesUsed": 0,
            "maxTotalVolumes": 10,
            "totalVolumesUsed": 0,
            "totalBackupsUsed": 0,
            "totalGigabytesUsed": 0
        }
    }
}

后端存储池

仅限管理员。列出调度服务已知的所有后端存储池。

GET
/v2/{project_id}/scheduler-stats/get_pools

列出后端存储池

列出所有后端存储池。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

detail (可选)

查询

布尔值

是否显示池详细信息或仅在响应中显示池名称。设置为 true 以显示池详细信息。设置为 false 以仅显示池名称。默认值为 false

响应参数

名称

入参

类型

描述

updated

body

字符串

扩展上次更新的日期和时间戳。

QoS_support

body

布尔值

服务质量 (QoS) 支持。

name

body

字符串

后端的名称。

total_capacity_gb

body

字符串

后端卷的总容量,以 GB 为单位。有效值是字符串,例如 unknown,或数字(整数或浮点数)。

volume_backend_name

body

字符串

后端卷的名称。

capabilities

body

对象

后端的capabilities。该值为 null 或指示每个池的capabilities的字符串值。例如,total_capacity_gbQoS_support

free_capacity_gb

body

字符串

后端卷的可用容量,以 GB 为单位。有效值是字符串,例如 unknown,或数字(整数或浮点数)。

driver_version

body

字符串

驱动程序版本。

reserved_percentage

body

整数

后端内部使用保留的总容量的百分比。

storage_protocol

body

字符串

后端卷的存储后端。 例如,iSCSIFC

响应示例

{
    "pools": [
        {
            "name": "pool1",
            "capabilities": {
                "updated": "2014-10-28T00:00:00-00:00",
                "total_capacity_gb": 1024,
                "free_capacity_gb": 100,
                "volume_backend_name": "pool1",
                "reserved_percentage": 0,
                "driver_version": "1.0.0",
                "storage_protocol": "iSCSI",
                "QoS_support": false
            }
        },
        {
            "name": "pool2",
            "capabilities": {
                "updated": "2014-10-28T00:00:00-00:00",
                "total_capacity_gb": 512,
                "free_capacity_gb": 200,
                "volume_backend_name": "pool2",
                "reserved_percentage": 0,
                "driver_version": "1.0.1",
                "storage_protocol": "iSER",
                "QoS_support": true
            }
        }
    ]
}

卷传输

将卷从一个用户传输到另一个用户。

POST
/v2/{project_id}/os-volume-transfer/{transfer_id}/accept

接受卷传输

接受卷传输。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

auth_key

body

字符串

卷传输的身份验证密钥。

transfer

body

对象

卷传输对象。

transfer_id (可选)

路径

字符串

卷传输的唯一标识符。

project_id

路径

字符串

多租户云中项目的 UUID。

请求示例

{
    "accept": {
        "auth_key": "9266c59563c84664"
    }
}

响应参数

名称

入参

类型

描述

volume_id

body

字符串

卷的 UUID。

id

body

字符串

卷传输的 UUID。

links

body

数组

卷传输的链接。

name

body

字符串

卷传输的名称。

响应示例

{
    "transfer": {
        "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377",
        "name": "first volume transfer",
        "volume_id": "894623a6-e901-4312-aa06-4275e6321cce",
        "links": [
            {
                "href": "https:///v2/firstproject/volumes/1",
                "rel": "self"
            },
            {
                "href": "https:///firstproject/volumes/1",
                "rel": "bookmark"
            }
        ]
    }
}
POST
/v2/{project_id}/os-volume-transfer

创建卷传输

创建卷传输。

先决条件

  • status 必须为 available

  • 不支持传输加密卷

  • 如果卷有快照,这些快照必须为 available

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

transfer

body

对象

卷传输对象。

name

body

字符串

卷传输的名称。

volume_id

body

字符串

卷的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

请求示例

{
    "transfer": {
        "volume_id": "c86b9af4-151d-4ead-b62c-5fb967af0e37",
        "name": "first volume"
    }
}

响应参数

名称

入参

类型

描述

auth_key

body

字符串

卷传输的身份验证密钥。

links

body

数组

卷传输的链接。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

volume_id

body

字符串

卷的 UUID。

id

body

字符串

卷传输的 UUID。

name

body

字符串

卷传输的名称。

响应示例

{
    "transfer": {
        "id": "1a7059f5-8ed7-45b7-8d05-2811e5d09f24",
        "created_at": "2015-02-25T03:56:53.081642",
        "name": "first volume",
        "volume_id": "c86b9af4-151d-4ead-b62c-5fb967af0e37",
        "auth_key": "9266c59563c84664",
        "links": [
            {
                "href": "https:///v2/firstproject/volumes/3",
                "rel": "self"
            },
            {
                "href": "https:///firstproject/volumes/3",
                "rel": "bookmark"
            }
        ]
    }
}
GET
/v2/{project_id}/os-volume-transfer

列出卷传输

列出卷传输。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

响应参数

名称

入参

类型

描述

volume_id

body

字符串

卷的 UUID。

id

body

字符串

卷传输的 UUID。

links

body

数组

卷传输的链接。

name

body

字符串

卷传输的名称。

响应示例

{
    "transfers": [
        {
            "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377",
            "name": "first volume transfer",
            "volume_id": "894623a6-e901-4312-aa06-4275e6321cce",
            "links": [
                {
                    "href": "https:///v2/firstproject/volumes/1",
                    "rel": "self"
                },
                {
                    "href": "https:///firstproject/volumes/1",
                    "rel": "bookmark"
                }
            ]
        },
        {
            "id": "f26c0dee-d20d-4e80-8dee-a8d91b9742a1",
            "name": "second volume transfer",
            "volume_id": "673db275-379f-41af-8371-e1652132b4c1",
            "links": [
                {
                    "href": "https:///v2/firstproject/volumes/2",
                    "rel": "self"
                },
                {
                    "href": "https:///firstproject/volumes/2",
                    "rel": "bookmark"
                }
            ]
        }
    ]
}
GET
/v2/{project_id}/os-volume-transfer/{transfer_id}

显示卷传输详细信息

显示卷传输的详细信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

transfer_id (可选)

路径

字符串

卷传输的唯一标识符。

project_id

路径

字符串

多租户云中项目的 UUID。

响应参数

名称

入参

类型

描述

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

volume_id

body

字符串

卷的 UUID。

id

body

字符串

卷传输的 UUID。

links

body

数组

卷传输的链接。

name

body

字符串

卷传输的名称。

响应示例

{
    "transfer": {
        "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377",
        "created_at": "2015-02-25T03:56:53.081642",
        "name": "first volume transfer",
        "volume_id": "894623a6-e901-4312-aa06-4275e6321cce",
        "links": [
            {
                "href": "https:///v2/firstproject/volumes/1",
                "rel": "self"
            },
            {
                "href": "https:///firstproject/volumes/1",
                "rel": "bookmark"
            }
        ]
    }
}
DELETE
/v2/{project_id}/os-volume-transfer/{transfer_id}

删除卷传输

删除卷传输。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

transfer_id (可选)

路径

字符串

卷传输的唯一标识符。

project_id

路径

字符串

多租户云中项目的 UUID。

GET
/v2/{project_id}/os-volume-transfer/detail

列出卷传输,带有详细信息

列出卷传输,带有详细信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

响应参数

名称

入参

类型

描述

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

volume_id

body

字符串

卷的 UUID。

id

body

字符串

卷传输的 UUID。

links

body

数组

卷传输的链接。

name

body

字符串

卷传输的名称。

响应示例

{
    "transfers": [
        {
            "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377",
            "created_at": "2015-02-25T03:56:53.081642",
            "name": "first volume transfer",
            "volume_id": "894623a6-e901-4312-aa06-4275e6321cce",
            "links": [
                {
                    "href": "https:///v2/firstproject/volumes/1",
                    "rel": "self"
                },
                {
                    "href": "https:///firstproject/volumes/1",
                    "rel": "bookmark"
                }
            ]
        },
        {
            "id": "f26c0dee-d20d-4e80-8dee-a8d91b9742a1",
            "created_at": "2015-03-25T03:56:53.081642",
            "name": "second volume transfer",
            "volume_id": "673db275-379f-41af-8371-e1652132b4c1",
            "links": [
                {
                    "href": "https:///v2/firstproject/volumes/2",
                    "rel": "self"
                },
                {
                    "href": "https:///firstproject/volumes/2",
                    "rel": "bookmark"
                }
            ]
        }
    ]
}

服务质量 (QoS) 规范 (qos-specs)

仅限管理员。

创建、列出、显示详细信息、关联、取消关联、设置密钥、取消设置密钥和删除服务质量 (QoS) 规范。

GET
/v2/{project_id}/qos-specs/{qos_id}/disassociate_all

取消将 QoS 规范从所有关联中分离

取消将 QoS 规范从所有关联中分离。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

qos_id

路径

字符串

QoS 规范的 ID。

PUT
/v2/{project_id}/qos-specs/{qos_id}/delete_keys

取消设置 QoS 规范中的密钥

取消设置 QoS 规范中的密钥。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

keys

body

数组

密钥列表。

project_id

路径

字符串

多租户云中项目的 UUID。

qos_id

路径

字符串

QoS 规范的 ID。

请求示例

{
    "keys": [
        "key1"
    ]
}

响应示例

成功的 PUT 操作的响应中没有主体内容。

GET
/v2/{project_id}/qos-specs/{qos_id}/associations

获取 QoS 规范的所有关联

列出 QoS 规范的所有关联。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

qos_id

路径

字符串

QoS 规范的 ID。

响应示例

{
    "qos_specs": {
        "specs": {
            "availability": "100",
            "numberOfFailures": "0"
        },
        "consumer": "back-end",
        "name": "reliability-spec",
        "id": "0388d6c6-d5d4-42a3-b289-95205c50dd15"
    },
    "links": [
        {
            "href": "http://23.253.228.211:8776/v2/e1cf63117ae74309a5bcc2002a23be8b/qos_specs/0388d6c6-d5d4-42a3-b289-95205c50dd15",
            "rel": "self"
        },
        {
            "href": "http://23.253.228.211:8776/e1cf63117ae74309a5bcc2002a23be8b/qos_specs/0388d6c6-d5d4-42a3-b289-95205c50dd15",
            "rel": "bookmark"
        }
    ]
}
GET
/v2/{project_id}/qos-specs/{qos_id}/associate

将 QoS 规范与卷类型关联

将 QoS 规范与卷类型关联。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

qos_id

路径

字符串

QoS 规范的 ID。

vol_type_id

路径

字符串

现有卷类型的 UUID。

GET
/v2/{project_id}/qos-specs/{qos_id}/disassociate

取消将 QoS 规范与卷类型分离

取消将 QoS 规范与卷类型分离。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

qos_id

路径

字符串

QoS 规范的 ID。

vol_type_id

路径

字符串

现有卷类型的 UUID。

GET
/v2/{project_id}/qos-specs/{qos_id}

显示 QoS 规范详细信息

显示 QoS 规范的详细信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

405 - 方法不允许

该方法对于此端点和资源无效。

413 - 请求实体过大

无法完成此操作。

503 - 服务不可用

服务现在无法处理请求。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

qos_id

路径

字符串

QoS 规范的 ID。

响应参数

名称

入参

类型

描述

name

body

字符串

QoS 规范的名称。

links

body

数组

QoS 规范的链接。

id

body

字符串

QoS 规范生成的 ID。

qos_specs

body

对象

一个 qos_specs 对象。

consumer (可选)

body

字符串

消费者类型。

specs

body

对象

一个 specs 对象。

响应示例

{
    "qos_specs": {
        "specs": {
            "availability": "100",
            "numberOfFailures": "0"
        },
        "consumer": "back-end",
        "name": "reliability-spec",
        "id": "0388d6c6-d5d4-42a3-b289-95205c50dd15"
    },
    "links": [
        {
            "href": "http://23.253.228.211:8776/v2/e1cf63117ae74309a5bcc2002a23be8b/qos_specs/0388d6c6-d5d4-42a3-b289-95205c50dd15",
            "rel": "self"
        },
        {
            "href": "http://23.253.228.211:8776/e1cf63117ae74309a5bcc2002a23be8b/qos_specs/0388d6c6-d5d4-42a3-b289-95205c50dd15",
            "rel": "bookmark"
        }
    ]
}
PUT
/v2/{project_id}/qos-specs/{qos_id}

设置 QoS 规范中的密钥

设置 QoS 规范中的密钥。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

qos_specs

body

对象

一个 qos_specs 对象。

specs

body

对象

一个 specs 对象。

project_id

路径

字符串

多租户云中项目的 UUID。

qos_id

路径

字符串

QoS 规范的 ID。

请求示例

{
    "qos_specs": {
        "delay": "1"
    }
}

响应示例

{
    "qos_specs": {
        "delay": "1"
    }
}
DELETE
/v2/{project_id}/qos-specs/{qos_id}

删除 QoS 规范

删除 QoS 规范。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

qos_id

路径

字符串

QoS 规范的 ID。

force (可选)

body

布尔值

指示是否备份,即使卷已附加。 默认值为 false

POST
/v2/{project_id}/qos-specs

创建 QoS 规范

创建 QoS 规范。

在请求主体中指定一个或多个键值对。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

qos_specs

body

对象

一个 qos_specs 对象。

consumer (可选)

body

字符串

消费者类型。

name

body

字符串

QoS 规范的名称。

project_id

路径

字符串

多租户云中项目的 UUID。

请求示例

{
    "qos_specs": {
        "availability": "100",
        "name": "reliability-spec",
        "numberOfFailures": "0"
    }
}

响应参数

名称

入参

类型

描述

name

body

字符串

QoS 规范的名称。

links

body

数组

QoS 规范的链接。

id

body

字符串

QoS 规范生成的 ID。

qos_specs

body

对象

一个 qos_specs 对象。

consumer (可选)

body

字符串

消费者类型。

specs

body

对象

一个 specs 对象。

GET
/v2/{project_id}/qos-specs

列出 QoS 规范

列出服务质量 (QoS) 规范。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

sort_key (可选)

查询

字符串

按属性排序。有效值是 namestatuscontainer_formatdisk_formatsizeidcreated_atupdated_at。 默认值为 created_at。 API 使用 sort_key 属性值的自然排序方向。

sort_dir (可选)

查询

字符串

按一个或多个属性和排序方向组合进行排序。 如果在集合中省略排序方向,则默认值为 desc

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

响应参数

名称

入参

类型

描述

specs

body

对象

一个 specs 对象。

qos_specs

body

对象

一个 qos_specs 对象。

consumer (可选)

body

字符串

消费者类型。

id

body

字符串

QoS 规范生成的 ID。

name

body

字符串

QoS 规范的名称。

响应示例

{
    "qos_specs": [
        {
            "specs": {
                "availability": "100",
                "numberOfFailures": "0"
            },
            "consumer": "back-end",
            "name": "reliability-spec",
            "id": "0388d6c6-d5d4-42a3-b289-95205c50dd15"
        },
        {
            "specs": {
                "delay": "0",
                "throughput": "100"
            },
            "consumer": "back-end",
            "name": "performance-spec",
            "id": "ecfc6e2e-7117-44a4-8eec-f84d04f531a8"
        }
    ]
}

配额类集扩展 (os-quota-class-sets)

仅限管理员,具体取决于策略设置。

显示和更新项目的配额类。

GET
/v2/{admin_project_id}/os-quota-class-sets/{quota_class_name}

显示配额类

显示项目的配额类设置。如果配额类资源不存在特定值,则将报告默认值。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

quota_class_name

路径

字符串

要设置配额的配额类的名称。

admin_project_id

路径

字符串

管理项目的 UUID。

响应参数

名称

入参

类型

描述

backup_gigabytes

body

整数

备份总量的最大值,以 GiB(千兆字节)为单位。

backups

body

整数

最大备份数量。

千兆字节

body

整数

最大卷总量,以 GiB(千兆字节)为单位。

groups

body

整数

最大组数。

per_volume_gigabytes

body

整数

每个卷的最大存储量,以千兆字节 (GiB) 为单位。

快照

body

整数

最大快照数量。

volumes

body

整数

最大卷数量。

id

body

字符串

配额类集的名称。

响应示例

{
  "quota_class_set": {
    "per_volume_gigabytes": -1,
    "volumes_lvmdriver-1": -1,
    "groups": 10,
    "gigabytes": 1000,
    "backup_gigabytes": 1000,
    "snapshots": 10,
    "gigabytes_lvmdriver-1": -1,
    "volumes": 10,
    "snapshots_lvmdriver-1": -1,
    "backups": 10,
    "id": "default"
  }
}
PUT
/v2/{admin_project_id}/os-quota-class-sets/{quota_class_name}

更新配额类

更新项目的配额类设置。如果 quota_class_name 键不存在,则 API 将创建一个。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

admin_project_id

路径

字符串

管理项目的 UUID。

quota_class_name

路径

字符串

要设置配额的配额类的名称。

千兆字节

body

整数

最大卷总量,以 GiB(千兆字节)为单位。

snapshots (可选)

body

整数

最大快照数量。

volumes (可选)

body

整数

最大卷数量。

volume-type (可选)

路径

字符串

项目要访问的卷类型 ID。

请求示例

{
  "quota_class_set": {
    "volumes_lmv": 10,
    "gigabytes_lmv": 1000,
    "snapshots_lmv": 10
  }
}

响应参数

名称

入参

类型

描述

backup_gigabytes

body

整数

备份总量的最大值,以 GiB(千兆字节)为单位。

backups

body

整数

最大备份数量。

千兆字节

body

整数

最大卷总量,以 GiB(千兆字节)为单位。

groups

body

整数

最大组数。

per_volume_gigabytes

body

整数

每个卷的最大存储量,以千兆字节 (GiB) 为单位。

快照

body

整数

最大快照数量。

volumes

body

整数

最大卷数量。

响应示例

{
  "quota_class_set": {
    "per_volume_gigabytes": -1,
    "volumes_lvmdriver-1": -1,
    "groups": 10,
    "gigabytes": 1000,
    "backup_gigabytes": 1000,
    "snapshots": 10,
    "gigabytes_lvmdriver-1": -1,
    "volumes": 10,
    "snapshots_lvmdriver-1": -1,
    "backups": 10
  }
}

配额集扩展 (os-quota-sets)

仅限管理员,具体取决于策略设置。

显示、更新和删除项目的配额。

GET
/v2/{admin_project_id}/os-quota-sets/{project_id}

显示配额

显示项目的配额。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

admin_project_id

路径

字符串

管理项目的 UUID。

usage (可选)

查询

布尔值

设置为 usage=true 以显示配额使用情况。默认值为 false

响应参数

名称

入参

类型

描述

quota_set

body

对象

一个 quota_set 对象。

id

body

字符串

项目的 UUID。

volumes

body

整数

每个项目允许的卷数量。

volumes_{volume_type}

body

整数

允许每个项目和指定卷类型的卷数量。

快照

body

整数

每个项目允许的快照数量。

snapshots_{volume_type}

body

整数

允许每个项目和指定卷类型的快照数量。

backups

body

整数

每个项目允许的备份数量。

groups

body

整数

每个项目允许的组数量。

per_volume_gigabytes

body

整数

每个卷允许的请求中的卷大小(GB)。

千兆字节

body

整数

每个项目允许的卷和快照的大小(GB)。

gigabytes_{volume_type}

body

整数

允许每个项目和指定卷类型的卷和快照的大小(GB)。

backup_gigabytes

body

整数

允许每个项目的备份大小(GB)。

响应示例

{
    "quota_set": {
        "gigabytes": 5,
        "snapshots": 10,
        "volumes": 20
    }
}
PUT
/v2/{admin_project_id}/os-quota-sets/{project_id}

更新配额

更新项目的配额。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

admin_project_id

路径

字符串

管理项目的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

quota_set

body

对象

一个 quota_set 对象。

volumes

body

整数

每个项目允许的卷数量。

volumes_{volume_type}

body

整数

允许每个项目和指定卷类型的卷数量。

快照

body

整数

每个项目允许的快照数量。

snapshots_{volume_type}

body

整数

允许每个项目和指定卷类型的快照数量。

backups

body

整数

每个项目允许的备份数量。

groups

body

整数

每个项目允许的组数量。

per_volume_gigabytes

body

整数

每个卷允许的请求中的卷大小(GB)。

千兆字节

body

整数

每个项目允许的卷和快照的大小(GB)。

gigabytes_{volume_type}

body

整数

允许每个项目和指定卷类型的卷和快照的大小(GB)。

backup_gigabytes

body

整数

允许每个项目的备份大小(GB)。

请求示例

{
    "quota_set": {
        "snapshots": 45
    }
}

响应参数

名称

入参

类型

描述

quota_set

body

对象

一个 quota_set 对象。

volumes

body

整数

每个项目允许的卷数量。

volumes_{volume_type}

body

整数

允许每个项目和指定卷类型的卷数量。

快照

body

整数

每个项目允许的快照数量。

snapshots_{volume_type}

body

整数

允许每个项目和指定卷类型的快照数量。

backups

body

整数

每个项目允许的备份数量。

groups

body

整数

每个项目允许的组数量。

per_volume_gigabytes

body

整数

每个卷允许的请求中的卷大小(GB)。

千兆字节

body

整数

每个项目允许的卷和快照的大小(GB)。

gigabytes_{volume_type}

body

整数

允许每个项目和指定卷类型的卷和快照的大小(GB)。

backup_gigabytes

body

整数

允许每个项目的备份大小(GB)。

响应示例

{
    "quota_set": {
        "snapshots": 45
    }
}
DELETE
/v2/{admin_project_id}/os-quota-sets/{project_id}

删除配额

删除项目的配额,使配额恢复为默认值。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

admin_project_id

路径

字符串

管理项目的 UUID。

响应示例

成功的 DELETE 操作的响应中没有主体内容。

GET
/v2/{admin_project_id}/os-quota-sets/{project_id}/defaults

获取默认配额

获取项目的默认配额。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

admin_project_id

路径

字符串

管理项目的 UUID。

响应参数

名称

入参

类型

描述

quota_set

body

对象

一个 quota_set 对象。

id

body

字符串

项目的 UUID。

volumes

body

整数

每个项目允许的卷数量。

volumes_{volume_type}

body

整数

允许每个项目和指定卷类型的卷数量。

快照

body

整数

每个项目允许的快照数量。

snapshots_{volume_type}

body

整数

允许每个项目和指定卷类型的快照数量。

backups

body

整数

每个项目允许的备份数量。

groups

body

整数

每个项目允许的组数量。

per_volume_gigabytes

body

整数

每个卷允许的请求中的卷大小(GB)。

千兆字节

body

整数

每个项目允许的卷和快照的大小(GB)。

gigabytes_{volume_type}

body

整数

允许每个项目和指定卷类型的卷和快照的大小(GB)。

backup_gigabytes

body

整数

允许每个项目的备份大小(GB)。

响应示例

{
    "quota_set": {
        "gigabytes": 5,
        "snapshots": 10,
        "volumes": 20
    }
}

卷管理扩展 (os-volume-manage)

使用现有存储创建卷,而不是分配新的存储。

POST
/v2/{project_id}/os-volume-manage

管理现有卷

通过使用现有存储而不是分配新的存储来创建块存储卷。

调用者必须在请求的 ref 参数中指定对现有存储卷的引用。虽然每个存储驱动程序可能会以不同的方式解释此引用,但驱动程序应接受包含 source-id 或 source-name 元素的引用结构(如果可能)。

API 通过将现有存储卷的大小向上舍入到下一个千兆字节 (GiB) 来选择卷的大小。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

description (可选)

body

字符串

备份描述或 null。

availability_zone (可选)

body

字符串

可用区的名称。

bootable

body

布尔值

启用或禁用可引导属性。您可以从可引导卷启动实例。

volume_type (可选)

路径

字符串

项目要访问的卷类型 ID。

name

body

字符串

卷传输的名称。

volume

body

对象

一个 volume 对象。

host

body

字符串

现有卷所在的 OpenStack 块存储主机。

ref

body

字符串

对现有卷的引用。此引用的内部结构取决于卷驱动程序实现。有关结构中所需元素的详细信息,请参阅卷驱动程序的文档。

metadata

body

对象

快照的任何元数据键值对。

project_id

路径

字符串

多租户云中项目的 UUID。

请求示例

{
    "volume": {
        "host": "geraint-VirtualBox",
        "ref": {
            "source-name": "existingLV",
            "source-id": "1234"
        },
        "name": "New Volume",
        "availability_zone": "az2",
        "description": "Volume imported from existingLV",
        "volume_type": null,
        "bootable": true,
        "metadata": {
            "key1": "value1",
            "key2": "value2"
        }
    }
}

响应

名称

入参

类型

描述

volume

body

对象

一个 volume 对象。

status

body

字符串

卷状态。

migration_status (可选)

body

字符串

卷迁移状态。仅限管理员。

user_id

body

字符串

用户的 UUID。

attachments

body

数组

实例附加信息。如果此卷附加到服务器实例,则 attachments 列表包括附加服务器的 UUID、附加 UUID、附加主机的名称(如果有)、卷 UUID、设备和设备 UUID。否则,此列表为空。

links

body

数组

卷链接。

availability_zone (可选)

body

字符串

可用区的名称。

bootable

body

字符串

启用或禁用可引导属性。您可以从可引导卷启动实例。

encrypted

body

布尔值

如果为 true,则此卷已加密。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

description (可选)

body

字符串

卷描述。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

volume_type (可选)

路径

字符串

项目要访问的卷类型 ID。

name

body

字符串

卷名称。

replication_status

body

字符串

卷复制状态。

consistencygroup_id

body

字符串

一致性组的 UUID。

source_volid (可选)

body

字符串

源卷的 UUID。API 创建一个与源卷大小相同的新卷,除非请求了更大的大小。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

multiattach

body

布尔值

如果为 true,则此卷可以附加到多个实例。

metadata

body

对象

一个 metadata 对象。包含与卷关联的任何数量的元数据键值对。

id

body

字符串

卷的 UUID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

响应示例

{
    "volume": {
        "status": "creating",
        "user_id": "eae1472b5fc5496998a3d06550929e7e",
        "attachments": [],
        "links": [
            {
                "href": "http://10.0.2.15:8776/v2/87c8522052ca4eed98bc672b4c1a3ddb/volumes/23cf872b-c781-4cd4-847d-5f2ec8cbd91c",
                "rel": "self"
            },
            {
                "href": "http://10.0.2.15:8776/87c8522052ca4eed98bc672b4c1a3ddb/volumes/23cf872b-c781-4cd4-847d-5f2ec8cbd91c",
                "rel": "bookmark"
            }
        ],
        "availability_zone": "az2",
        "bootable": "false",
        "encrypted": "false",
        "created_at": "2014-07-18T00:12:54.000000",
        "description": "Volume imported from existingLV",
        "os-vol-tenant-attr:tenant_id": "87c8522052ca4eed98bc672b4c1a3ddb",
        "volume_type": null,
        "name": "New Volume",
        "source_volid": null,
        "snapshot_id": null,
        "metadata": {
            "key2": "value2",
            "key1": "value1"
        },
        "id": "23cf872b-c781-4cd4-847d-5f2ec8cbd91c",
        "size": 0
    }
}

卷类型访问权限 (volumes)

项目对私有卷类型的访问权限。

默认情况下,卷类型是公开的。要创建私有卷类型,请在卷类型创建时将 is_public 布尔字段设置为 false。要控制对私有卷类型的访问,用户需要将项目添加到或从卷类型中删除项目。没有项目的私有卷类型只能由具有管理角色和上下文的用户访问。

POST
/v2/{project_id}/types/{volume_type}/action

添加私有卷类型访问权限

将私有卷类型访问权限添加到项目。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

project

body

字符串

项目的 ID。要将访问权限添加到此项目 ID 的卷类型。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_type

路径

字符串

项目要访问的卷类型 ID。

请求示例

{
    "addProjectAccess": {
        "project": "f270b245cb11498ca4031deb7e141cfa"
    }
}
POST
/v2/{project_id}/types/{volume_type}/action

删除私有卷类型访问权限

从项目中删除私有卷类型访问权限。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

project

body

字符串

项目的 ID。要将访问权限添加到此项目 ID 的卷类型。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_type

路径

字符串

项目要访问的卷类型 ID。

请求示例

{
    "removeProjectAccess": {
        "project": "f270b245cb11498ca4031deb7e141cfa"
    }
}
GET
/v2/{project_id}/types/{volume_type}/os-volume-type-access

列出私有卷类型访问详情

列出具有对私有卷类型访问权限的项目 ID。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

volume_type

路径

字符串

项目要访问的卷类型 ID。

响应参数

名称

入参

类型

描述

project_id

body

字符串

项目的 UUID。

响应示例

{
    "volume_type_access": {
        "volume_type_id": "3c67e124-39ad-4ace-a507-8bb7bf510c26",
        "project_id": "f270b245cb11498ca4031deb7e141cfa"
    }
}

API 扩展 (extensions)

GET
/v2/{project_id}/extensions

列出 API 扩展

列出块存储 API 扩展。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

响应参数

名称

入参

类型

描述

updated

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

description (可选)

body

字符串

备份描述或 null。

links

body

数组

卷传输的链接。

namespace

body

字符串

与扩展关联的链接。

alias

body

字符串

扩展的别名。例如,“FOXNSOX”、“os- availability-zone”、“os-extended-quotas”、“os- share-unmanage” 或 “os-used-limits”。

name

body

字符串

卷传输的名称。

响应示例

{
    "extensions": [
        {
            "updated": "2013-04-18T00:00:00+00:00",
            "name": "SchedulerHints",
            "links": [],
            "namespace": "https://docs.openstack.org/block-service/ext/scheduler-hints/api/v2",
            "alias": "OS-SCH-HNT",
            "description": "Pass arbitrary key/value pairs to the scheduler."
        },
        {
            "updated": "2011-06-29T00:00:00+00:00",
            "name": "Hosts",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/hosts/api/v1.1",
            "alias": "os-hosts",
            "description": "Admin-only host administration."
        },
        {
            "updated": "2011-11-03T00:00:00+00:00",
            "name": "VolumeTenantAttribute",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/volume_tenant_attribute/api/v1",
            "alias": "os-vol-tenant-attr",
            "description": "Expose the internal project_id as an attribute of a volume."
        },
        {
            "updated": "2011-08-08T00:00:00+00:00",
            "name": "Quotas",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/quotas-sets/api/v1.1",
            "alias": "os-quota-sets",
            "description": "Quota management support."
        },
        {
            "updated": "2011-08-24T00:00:00+00:00",
            "name": "TypesManage",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/types-manage/api/v1",
            "alias": "os-types-manage",
            "description": "Types manage support."
        },
        {
            "updated": "2013-07-10T00:00:00+00:00",
            "name": "VolumeEncryptionMetadata",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/os-volume-encryption-metadata/api/v1",
            "alias": "os-volume-encryption-metadata",
            "description": "Volume encryption metadata retrieval support."
        },
        {
            "updated": "2012-12-12T00:00:00+00:00",
            "name": "Backups",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/backups/api/v1",
            "alias": "backups",
            "description": "Backups support."
        },
        {
            "updated": "2013-07-16T00:00:00+00:00",
            "name": "SnapshotActions",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/snapshot-actions/api/v1.1",
            "alias": "os-snapshot-actions",
            "description": "Enable snapshot manager actions."
        },
        {
            "updated": "2012-05-31T00:00:00+00:00",
            "name": "VolumeActions",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/volume-actions/api/v1.1",
            "alias": "os-volume-actions",
            "description": "Enable volume actions\n    "
        },
        {
            "updated": "2013-10-03T00:00:00+00:00",
            "name": "UsedLimits",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/used-limits/api/v1.1",
            "alias": "os-used-limits",
            "description": "Provide data on limited resources that are being used."
        },
        {
            "updated": "2012-05-31T00:00:00+00:00",
            "name": "VolumeUnmanage",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/volume-unmanage/api/v1.1",
            "alias": "os-volume-unmanage",
            "description": "Enable volume unmanage operation."
        },
        {
            "updated": "2011-11-03T00:00:00+00:00",
            "name": "VolumeHostAttribute",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/volume_host_attribute/api/v1",
            "alias": "os-vol-host-attr",
            "description": "Expose host as an attribute of a volume."
        },
        {
            "updated": "2013-07-01T00:00:00+00:00",
            "name": "VolumeTypeEncryption",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/volume-type-encryption/api/v1",
            "alias": "encryption",
            "description": "Encryption support for volume types."
        },
        {
            "updated": "2013-06-27T00:00:00+00:00",
            "name": "AvailabilityZones",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/os-availability-zone/api/v1",
            "alias": "os-availability-zone",
            "description": "Describe Availability Zones."
        },
        {
            "updated": "2013-08-02T00:00:00+00:00",
            "name": "Qos_specs_manage",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/qos-specs/api/v1",
            "alias": "qos-specs",
            "description": "QoS specs support."
        },
        {
            "updated": "2011-08-24T00:00:00+00:00",
            "name": "TypesExtraSpecs",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/types-extra-specs/api/v1",
            "alias": "os-types-extra-specs",
            "description": "Type extra specs support."
        },
        {
            "updated": "2013-08-08T00:00:00+00:00",
            "name": "VolumeMigStatusAttribute",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/volume_mig_status_attribute/api/v1",
            "alias": "os-vol-mig-status-attr",
            "description": "Expose migration_status as an attribute of a volume."
        },
        {
            "updated": "2012-08-13T00:00:00+00:00",
            "name": "CreateVolumeExtension",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/image-create/api/v1",
            "alias": "os-image-create",
            "description": "Allow creating a volume from an image in the Create Volume API."
        },
        {
            "updated": "2014-01-10T00:00:00-00:00",
            "name": "ExtendedServices",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/extended_services/api/v2",
            "alias": "os-extended-services",
            "description": "Extended services support."
        },
        {
            "updated": "2012-06-19T00:00:00+00:00",
            "name": "ExtendedSnapshotAttributes",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/extended_snapshot_attributes/api/v1",
            "alias": "os-extended-snapshot-attributes",
            "description": "Extended SnapshotAttributes support."
        },
        {
            "updated": "2012-12-07T00:00:00+00:00",
            "name": "VolumeImageMetadata",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/volume_image_metadata/api/v1",
            "alias": "os-vol-image-meta",
            "description": "Show image metadata associated with the volume."
        },
        {
            "updated": "2012-03-12T00:00:00+00:00",
            "name": "QuotaClasses",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/quota-classes-sets/api/v1.1",
            "alias": "os-quota-class-sets",
            "description": "Quota classes management support."
        },
        {
            "updated": "2013-05-29T00:00:00+00:00",
            "name": "VolumeTransfer",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/volume-transfer/api/v1.1",
            "alias": "os-volume-transfer",
            "description": "Volume transfer management support."
        },
        {
            "updated": "2014-02-10T00:00:00+00:00",
            "name": "VolumeManage",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/os-volume-manage/api/v1",
            "alias": "os-volume-manage",
            "description": "Allows existing backend storage to be 'managed' by Cinder."
        },
        {
            "updated": "2012-08-25T00:00:00+00:00",
            "name": "AdminActions",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/admin-actions/api/v1.1",
            "alias": "os-admin-actions",
            "description": "Enable admin actions."
        },
        {
            "updated": "2012-10-28T00:00:00-00:00",
            "name": "Services",
            "links": [],
            "namespace": "https://docs.openstack.org/volume/ext/services/api/v2",
            "alias": "os-services",
            "description": "Services support."
        }
    ]
}

卷快照 (snapshots)

快照是卷包含的数据在某个时间点的副本。

在创建、列出或删除快照时,这些状态值是可能的

快照状态

状态

描述

creating

快照正在创建中。

available

快照已准备好使用。

backing-up

快照正在备份中。

deleting

快照正在删除中。

error

发生快照创建错误。

deleted

快照已被删除。

unmanaging

快照正在取消管理。

恢复中

快照正在恢复到卷。

error_deleting

发生快照删除错误。

GET
/v2/{project_id}/snapshots/detail

列出带有详情的快照

列出所有块存储快照,带有详情,项目可以访问。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

响应参数

名称

入参

类型

描述

status

body

字符串

快照的状态。

os-extended-snapshot-attributes:progress

body

字符串

构建进度的百分比值。

description (可选)

body

字符串

备份描述或 null。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

name

body

字符串

卷传输的名称。

volume_id

body

字符串

如果快照是从卷创建的,则为卷 ID。

os-extended-snapshot-attributes:project_id

body

字符串

拥有项目的 UUID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

id

body

字符串

快照 UUID。

metadata

body

对象

快照的任何元数据键值对。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

snapshots_links

body

数组

与扩展相关的链接列表。

响应示例

{
    "snapshots": [
        {
            "status": "available",
            "metadata": {
                "name": "test"
            },
            "os-extended-snapshot-attributes:progress": "100%",
            "name": "test-volume-snapshot",
            "volume_id": "173f7b48-c4c1-4e70-9acc-086b39073506",
            "os-extended-snapshot-attributes:project_id": "bab7d5c60cd041a0a36f7c4b6e1dd978",
            "created_at": "2015-11-29T02:25:51.000000",
            "size": 1,
            "id": "b1323cda-8e4b-41c1-afc5-2fc791809c8c",
            "description": "volume snapshot",
            "updated_at": "2015-12-11T07:24:57Z"
        }
    ],
    "snapshots_links": [
        {
            "href": "https://10.43.176.164:8776/v3/d55fb90e300b436cb2714a17137be023/snapshots?limit=1&marker=2e0cd28e-d7a2-4cdb-87e6-cd37c417c06d",
            "rel": "next"
        }
    ]
}
POST
/v2/{project_id}/snapshots

创建快照

创建一个卷快照,这是卷数据在某个时间点的完整副本。您可以从快照创建卷。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

snapshot

body

字符串

在创建过程中使用的快照的部分表示。

volume_id

body

字符串

卷的 UUID。

force (可选)

body

布尔值

指示是否备份,即使卷已附加。 默认值为 false

description (可选)

body

字符串

备份描述或 null。

name

body

字符串

卷传输的名称。

project_id

路径

字符串

多租户云中项目的 UUID。

请求示例

{
    "snapshot": {
        "name": "snap-001",
        "description": "Daily backup",
        "volume_id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
        "force": true
    }
}

响应参数

名称

入参

类型

描述

status

body

字符串

快照的状态。

description (可选)

body

字符串

备份描述或 null。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

name

body

字符串

卷传输的名称。

snapshot

body

字符串

在创建过程中使用的快照的部分表示。

volume_id

body

字符串

如果快照是从卷创建的,则为卷 ID。

metadata

body

对象

快照的任何元数据键值对。

id

body

字符串

快照 UUID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

GET
/v2/{project_id}/snapshots

列出快照

列出所有块存储快照,带有摘要信息,项目可以访问。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

sort_key (可选)

查询

字符串

按属性排序。有效值是 namestatuscontainer_formatdisk_formatsizeidcreated_atupdated_at。 默认值为 created_at。 API 使用 sort_key 属性值的自然排序方向。

sort_dir (可选)

查询

字符串

按一个或多个属性和排序方向组合进行排序。 如果在集合中省略排序方向,则默认值为 desc

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

响应参数

名称

入参

类型

描述

status

body

字符串

快照的状态。

description (可选)

body

字符串

备份描述或 null。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

name

body

字符串

卷传输的名称。

volume_id

body

字符串

如果快照是从卷创建的,则为卷 ID。

metadata

body

对象

快照的任何元数据键值对。

id

body

字符串

快照 UUID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

snapshots_links

body

数组

与扩展相关的链接列表。

响应示例

{
    "snapshots": [
        {
            "status": "available",
            "metadata": {
                "name": "test"
            },
            "name": "test-volume-snapshot",
            "volume_id": "173f7b48-c4c1-4e70-9acc-086b39073506",
            "created_at": "2015-11-29T02:25:51.000000",
            "size": 1,
            "id": "b1323cda-8e4b-41c1-afc5-2fc791809c8c",
            "description": "volume snapshot",
            "updated_at": "2015-12-11T07:24:57Z"
        }
    ],
    "snapshots_links": [
        {
            "href": "https://10.43.176.164:8776/v3/d55fb90e300b436cb2714a17137be023/snapshots?limit=1&marker=2e0cd28e-d7a2-4cdb-87e6-cd37c417c06d",
            "rel": "next"
        }
    ]
}
GET
/v2/{project_id}/snapshots/{snapshot_id}/metadata

显示快照元数据

显示快照的元数据。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

响应参数

名称

入参

类型

描述

metadata

body

对象

快照的任何元数据键值对。

响应示例

{
    "metadata": {
        "name": "test"
    }
}
POST
/v2/{project_id}/snapshots/{snapshot_id}/metadata

创建快照元数据

更新快照的元数据。

创建或替换与键匹配的元数据项。不修改请求中未包含的项。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

metadata

body

对象

快照的任何元数据键值对。

project_id

路径

字符串

多租户云中项目的 UUID。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

请求示例

{
    "metadata": {
        "key": "v2"
    }
}

响应示例

{
    "metadata": {
        "key": "v2"
    }
}
PUT
/v2/{project_id}/snapshots/{snapshot_id}/metadata

更新快照元数据

使用请求中的键值对替换快照的所有元数据。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

metadata

body

对象

快照的任何元数据键值对。

project_id

路径

字符串

多租户云中项目的 UUID。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

请求示例

{
    "metadata": {
        "key": "v2"
    }
}

响应示例

{
    "metadata": {
        "key": "v2"
    }
}
GET
/v2/{project_id}/snapshots/{snapshot_id}

显示快照详情

显示快照的详情。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

响应参数

名称

入参

类型

描述

status

body

字符串

快照的状态。

os-extended-snapshot-attributes:progress

body

字符串

构建进度的百分比值。

description (可选)

body

字符串

备份描述或 null。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

name

body

字符串

卷传输的名称。

snapshot

body

字符串

在创建过程中使用的快照的部分表示。

volume_id

body

字符串

如果快照是从卷创建的,则为卷 ID。

os-extended-snapshot-attributes:project_id

body

字符串

拥有项目的 UUID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

id

body

字符串

快照 UUID。

metadata

body

对象

快照的任何元数据键值对。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

响应示例

{
    "snapshot": {
        "status": "available",
        "os-extended-snapshot-attributes:progress": "100%",
        "description": "Daily backup",
        "created_at": "2013-02-25T04:13:17.000000",
        "metadata": {},
        "volume_id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
        "os-extended-snapshot-attributes:project_id": "0c2eba2c5af04d3f9e9d0d410b371fde",
        "size": 1,
        "id": "2bb856e1-b3d8-4432-a858-09e4ce939389",
        "name": "snap-001",
        "updated_at": "2013-03-11T07:24:57Z"
    }
}
PUT
/v2/{project_id}/snapshots/{snapshot_id}

更新快照

更新快照。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

snapshot

body

字符串

在创建过程中使用的快照的部分表示。

description (可选)

body

字符串

备份描述或 null。

name

body

字符串

卷传输的名称。

project_id

路径

字符串

多租户云中项目的 UUID。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

请求示例

{
    "snapshot": {
        "name": "snap-002",
        "description": "This is yet, another snapshot."
    }
}

响应参数

名称

入参

类型

描述

status

body

字符串

快照的状态。

description (可选)

body

字符串

备份描述或 null。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

name

body

字符串

卷传输的名称。

snapshot

body

字符串

在创建过程中使用的快照的部分表示。

volume_id

body

字符串

如果快照是从卷创建的,则为卷 ID。

metadata

body

对象

快照的任何元数据键值对。

id

body

字符串

快照 UUID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

响应示例

{
    "snapshot": {
        "created_at": "2013-02-20T08:11:34.000000",
        "description": "This is yet, another snapshot",
        "name": "snap-002",
        "id": "4b502fcb-1f26-45f8-9fe5-3b9a0a52eaf2",
        "size": 1,
        "status": "available",
        "metadata": {},
        "volume_id": "2402b902-0b7a-458c-9c07-7435a826f794"
    }
}
DELETE
/v2/{project_id}/snapshots/{snapshot_id}

删除快照

删除快照。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

快照操作 (snapshots, action)

仅限管理员。重置快照的状态。

POST
/v2/{project_id}/snapshots/{snapshot_id}/action

重置快照状态

重置状态。在请求体中指定 os-reset_status 操作。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

status

body

字符串

快照的状态。

os-reset_status

body

对象

The os-reset_status action.

project_id

路径

字符串

多租户云中项目的 UUID。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

请求示例

{
    "os-reset_status": {
        "status": "available"
    }
}

卷类型 (types)

PUT
/v2/{project_id}/types/{volume_type_id}

更新卷类型

更新卷类型。

为了创建具有多个存储后端的环境,您必须指定一个卷类型。API 将块存储卷后端作为 cinder-volume 的子项生成,并从唯一的队列中获取它们。API 将后端命名为 cinder-volume.HOST.BACKEND。例如,cinder-volume.ubuntu.lvmdriver。当您创建卷时,调度器会选择一个合适的后端来处理该卷类型的请求。

有关如何使用卷类型来创建多个存储后端的信息,请参阅 配置多个存储后端

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

volume_type

body

对象

一个 volume_type 对象。

volume_type_id (可选)

路径

字符串

现有卷类型的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

请求示例

{
    "volume_type": {
        "name": "vol-type-001",
        "description": "volume type 0001",
        "is_public": true,
        "extra_specs": {
            "capabilities": "gpu"
        }
    }
}

响应参数

名称

入参

类型

描述

is_public (可选)

body

布尔值

可供公众访问的卷类型。

extra_specs

body

对象

一组包含卷类型规范的键值对。

description (可选)

body

字符串

备份描述或 null。

volume_type

body

对象

一个 volume_type 对象。

name

body

字符串

卷传输的名称。

响应示例

{
    "volume_type": {
        "id": "6685584b-1eac-4da6-b5c3-555430cf68ff",
        "name": "vol-type-001",
        "description": "volume type 001",
        "is_public": "true",
        "extra_specs": {
            "capabilities": "gpu"
        }
    }
}
PUT
/v2/{project_id}/types/{volume_type_id}

更新卷类型的附加规格

更新分配给卷类型的附加规格。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

extra_specs

body

对象

一组包含卷类型规范的键值对。

volume_type

body

对象

一个 volume_type 对象。

volume_type_id (可选)

路径

字符串

现有卷类型的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

请求示例

{
    "volume_type": {
        "name": "vol-type-001",
        "description": "volume type 0001",
        "is_public": true,
        "extra_specs": {
            "capabilities": "gpu"
        }
    }
}

响应参数

名称

入参

类型

描述

is_public (可选)

body

布尔值

可供公众访问的卷类型。

extra_specs

body

对象

一组包含卷类型规范的键值对。

description (可选)

body

字符串

备份描述或 null。

volume_type

body

对象

一个 volume_type 对象。

name

body

字符串

卷传输的名称。

响应示例

{
    "volume_type": {
        "id": "6685584b-1eac-4da6-b5c3-555430cf68ff",
        "name": "vol-type-001",
        "description": "volume type 001",
        "is_public": "true",
        "extra_specs": {
            "capabilities": "gpu"
        }
    }
}
GET
/v2/{project_id}/types/{volume_type_id}

显示 v2 的卷类型详细信息

显示卷类型的详细信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

volume_type_id (可选)

路径

字符串

现有卷类型的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

响应参数

名称

入参

类型

描述

is_public (可选)

body

布尔值

可供公众访问的卷类型。

extra_specs

body

对象

一组包含卷类型规范的键值对。

description (可选)

body

字符串

备份描述或 null。

volume_type

body

对象

一个 volume_type 对象。

name

body

字符串

卷传输的名称。

响应示例

{
    "volume_type": {
        "id": "6685584b-1eac-4da6-b5c3-555430cf68ff",
        "name": "vol-type-001",
        "description": "volume type 001",
        "is_public": "true",
        "extra_specs": {
            "capabilities": "gpu"
        }
    }
}
DELETE
/v2/{project_id}/types/{volume_type_id}

删除卷类型

删除卷类型。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

volume_type_id (可选)

路径

字符串

现有卷类型的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

GET
/v2/{project_id}/types

列出 v2 的所有卷类型

列出卷类型。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

sort_key (可选)

查询

字符串

按属性排序。有效值是 namestatuscontainer_formatdisk_formatsizeidcreated_atupdated_at。 默认值为 created_at。 API 使用 sort_key 属性值的自然排序方向。

sort_dir (可选)

查询

字符串

按一个或多个属性和排序方向组合进行排序。 如果在集合中省略排序方向,则默认值为 desc

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

响应参数

名称

入参

类型

描述

volume_types

body

数组

卷类型列表。 在具有多个存储后端的环境中,调度程序将根据卷类型确定将卷发送到哪里。 有关如何使用卷类型来创建多个存储后端的信息,请参阅 配置多个存储后端

extra_specs

body

对象

一组包含卷类型规范的键值对。

name

body

字符串

卷传输的名称。

volume_type (可选)

路径

字符串

项目要访问的卷类型 ID。

响应示例

{
    "volume_types": [
        {
            "extra_specs": {
                "capabilities": "gpu"
            },
            "id": "6685584b-1eac-4da6-b5c3-555430cf68ff",
            "name": "SSD"
        },
        {
            "extra_specs": {},
            "id": "8eb69a46-df97-4e41-9586-9a40a7533803",
            "name": "SATA"
        }
    ]
}
POST
/v2/{project_id}/types

创建 v2 的卷类型

创建一个卷类型。

为了创建具有多个存储后端的环境,您必须指定一个卷类型。块存储卷后端作为 cinder-volume 的子项生成,并从唯一的队列中获取它们。它们被命名为 cinder-volume.HOST.BACKEND。例如,cinder-volume.ubuntu.lvmdriver。当创建卷时,调度器会根据卷类型选择一个合适的后端来处理请求。

有关如何使用卷类型来创建多个存储后端的信息,请参阅 配置多个存储后端

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

volume_type

body

对象

一个 volume_type 对象。

project_id

路径

字符串

多租户云中项目的 UUID。

请求示例

{
    "volume_type": {
        "name": "vol-type-001",
        "description": "volume type 0001",
        "os-volume-type-access:is_public": true,
        "extra_specs": {
            "capabilities": "gpu"
        }
    }
}

响应参数

名称

入参

类型

描述

is_public (可选)

body

布尔值

可供公众访问的卷类型。

extra_specs

body

对象

一组包含卷类型规范的键值对。

description (可选)

body

字符串

备份描述或 null。

volume_type

body

对象

一个 volume_type 对象。

name

body

字符串

卷传输的名称。

响应示例

{
    "volume_type": {
        "id": "6685584b-1eac-4da6-b5c3-555430cf68ff",
        "name": "vol-type-001",
        "description": "volume type 001",
        "is_public": "true",
        "extra_specs": {
            "capabilities": "gpu"
        }
    }
}
GET
/v2/{project_id}/types/{volume_type_id}/encryption

显示 v2 的加密类型

显示加密类型。

要显示现有卷类型的加密类型。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

volume_type_id (可选)

路径

字符串

现有卷类型的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

响应参数

名称

入参

类型

描述

volume_type_id

body

字符串

卷类型的 UUID。

encryption_id

路径

字符串

加密类型的 ID。

encryption

body

对象

加密信息。

key_size (可选)

body

整数

加密密钥的大小,以位为单位。例如,128 或 256。默认值为 None。

provider

body

字符串

提供加密支持的类。

control_location (可选)

body

字符串

执行加密的虚拟服务位置。有效值为“前端”或“后端”。默认值为“前端”。

cipher (可选)

body

字符串

加密算法或模式。例如,aes-xts-plain64。默认值为 None。

deleted

body

布尔值

资源是否已删除。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

deleted_at

body

字符串

删除资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果 deleted_at 日期和时间戳未设置,则其值为 null

响应示例

{
    "volume_type_id": "2d29462d-76cb-417c-8a9f-fb23140f1577",
    "control_location": "front-end",
    "deleted": false,
    "created_at": "2016-12-28T02:32:25.000000",
    "updated_at": null,
    "encryption_id": "81e069c6-7394-4856-8df7-3b237ca61f74",
    "key_size": 256,
    "provider": "luks",
    "deleted_at": null,
    "cipher": "aes-xts-plain64"
}
GET
/v2/{project_id}/types/{volume_type_id}/encryption/{encryption_id}

删除 v2 的加密类型

删除加密类型。

要删除现有卷类型的加密类型。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

volume_type_id (可选)

路径

字符串

现有卷类型的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

encryption_id

路径

字符串

加密类型的 ID。

POST
/v2/{project_id}/types/{volume_type_id}/encryption

创建 v2 的加密类型

创建加密类型。

要为现有卷类型创建加密类型。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

volume_type_id (可选)

路径

字符串

现有卷类型的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

encryption

body

对象

加密信息。

key_size (可选)

body

整数

加密密钥的大小,以位为单位。例如,128 或 256。默认值为 None。

provider

body

字符串

提供加密支持的类。

control_location (可选)

body

字符串

执行加密的虚拟服务位置。有效值为“前端”或“后端”。默认值为“前端”。

cipher (可选)

body

字符串

加密算法或模式。例如,aes-xts-plain64。默认值为 None。

请求示例

{
    "encryption":{
        "key_size": 256,
        "provider": "luks",
        "control_location":"front-end",
        "cipher": "aes-xts-plain64"
    }
}

响应参数

名称

入参

类型

描述

volume_type_id

body

字符串

卷类型的 UUID。

encryption_id

路径

字符串

加密类型的 ID。

encryption

body

对象

加密信息。

key_size (可选)

body

整数

加密密钥的大小,以位为单位。例如,128 或 256。默认值为 None。

provider

body

字符串

提供加密支持的类。

control_location (可选)

body

字符串

执行加密的虚拟服务位置。有效值为“前端”或“后端”。默认值为“前端”。

cipher (可选)

body

字符串

加密算法或模式。例如,aes-xts-plain64。默认值为 None。

响应示例

{
    "encryption": {
        "volume_type_id": "2d29462d-76cb-417c-8a9f-fb23140f1577",
        "control_location": "front-end",
        "encryption_id": "81e069c6-7394-4856-8df7-3b237ca61f74",
        "key_size": 256,
        "provider": "luks",
        "cipher": "aes-xts-plain64"
    }
}
PUT
/v2/{project_id}/types/{volume_type_id}/encryption/{encryption_id}

更新 v2 的加密类型

更新加密类型。

要更新现有卷类型的加密类型。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

volume_type_id (可选)

路径

字符串

现有卷类型的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

encryption_id

路径

字符串

加密类型的 ID。

encryption

body

对象

加密信息。

key_size (可选)

body

整数

加密密钥的大小,以位为单位。例如,128 或 256。默认值为 None。

provider (可选)

body

字符串

提供加密支持的类。

control_location (可选)

body

字符串

执行加密的虚拟服务位置。有效值为“前端”或“后端”。默认值为“前端”。

cipher (可选)

body

字符串

加密算法或模式。例如,aes-xts-plain64。默认值为 None。

请求示例

{
    "encryption":{
        "key_size": 64,
        "provider": "luks",
        "control_location":"back-end"
    }
}

响应参数

名称

入参

类型

描述

encryption

body

对象

加密信息。

key_size (可选)

body

整数

加密密钥的大小,以位为单位。例如,128 或 256。默认值为 None。

provider (可选)

body

字符串

提供加密支持的类。

control_location (可选)

body

字符串

执行加密的虚拟服务位置。有效值为“前端”或“后端”。默认值为“前端”。

cipher (可选)

body

字符串

加密算法或模式。例如,aes-xts-plain64。默认值为 None。

响应示例

{
    "encryption":{
        "key_size": 64,
        "provider": "luks",
        "control_location":"back-end"
    }
}

API 版本详细信息

GET
/v2/

显示 API v2 详细信息

显示块存储 API v2 的详细信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

响应参数

名称

入参

类型

描述

location

body

字符串

服务的完整 URL 或服务器。

响应示例

{
    "versions": [
        {
            "status": "DEPRECATED",
            "updated": "2017-02-25T12:00:00Z",
            "media-types": [
                {
                    "base": "application/json",
                    "type": "application/vnd.openstack.volume+json;version=2"
                }
            ],
            "id": "v2.0",
            "links": [
                {
                    "href": "https://docs.openstack.org/",
                    "type": "text/html",
                    "rel": "describedby"
                },
                {
                    "href": "http://23.253.248.171:8776/v2/",
                    "rel": "self"
                }
            ],
            "min_version": "",
            "version": ""
        }
    ]
}

卷操作 (volumes, action)

扩展卷的大小、重置卷的状态、设置卷的镜像元数据以及删除卷的镜像元数据。将卷附加到服务器、从服务器分离卷以及从块存储管理中删除卷,而实际上并不删除与该卷关联的后端存储对象。

POST
/v2/{project_id}/volumes/{volume_id}/action

扩展卷大小

将卷的大小扩展到请求的大小,以 GiB(千兆字节)为单位。在请求体中指定 os-extend 操作。

先决条件

  • 卷状态必须为 available

  • 必须存在足够的存储空间才能扩展卷。

  • 用户配额必须具有足够的卷存储空间。

故障排除

  • 如果 error_extending 卷状态,则表示请求失败。请确保满足先决条件并重试请求。如果请求再次失败,请调查存储后端。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

os-extend

body

对象

os-extend 操作。

new_size

body

整数

卷的新大小,以 GiB(千兆字节)为单位。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
    "os-extend": {
        "new_size": 3
    }
}
POST
/v2/{project_id}/volumes/{volume_id}/action

重置卷状态

仅限管理员。重置卷的状态、附加状态和迁移状态。在请求体中指定 os-reset_status 操作。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

status

body

字符串

卷状态。

migration_status (可选)

body

字符串

卷迁移状态。仅限管理员。

os-reset_status

body

对象

The os-reset_status action.

attach_status (可选)

body

字符串

卷附加状态。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
    "os-reset_status": {
        "status": "available",
        "attach_status": "detached",
        "migration_status": "migrating"
    }
}
POST
/v2/{project_id}/volumes/{volume_id}/action

为卷设置镜像元数据

为卷设置镜像元数据。在请求体中指定 os-set_image_metadata 操作。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

os-set_image_metadata

body

对象

os-set_image_metadata 操作。

metadata

body

对象

快照的任何元数据键值对。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
    "os-set_image_metadata": {
        "metadata": {
            "image_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
            "image_name": "image",
            "kernel_id": "155d900f-4e14-4e4c-a73d-069cbf4541e6",
            "ramdisk_id": "somedisk"
        }
    }
}

响应参数

名称

入参

类型

描述

metadata

body

对象

镜像元数据键值对。

响应示例

{
    "metadata": {
        "kernel_id": "6ff710d2-942b-4d6b-9168-8c9cc2404ab1",
        "container_format": "bare",
        "min_ram": "0",
        "ramdisk_id": "somedisk",
        "disk_format": "qcow2",
        "image_name": "image",
        "image_id": "5137a025-3c5f-43c1-bc64-5f41270040a5",
        "checksum": "f8ab98ff5e73ebab884d80c9dc9c7290",
        "min_disk": "0",
        "size": "13267968"
    }
}
POST
/v2/{project_id}/volumes/{volume_id}/action

从卷中删除镜像元数据

删除卷的镜像元数据,按键删除。在请求体中指定 os-unset_image_metadata 操作,以及要删除的元数据键值对的 key

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

os-unset_image_metadata

body

对象

os-unset_image_metadata 操作。此操作从镜像元数据中删除键值对。

key

body

字符串

要删除的元数据的元数据键名称。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
    "os-unset_image_metadata": {
        "key": "ramdisk_id"
    }
}
POST
/v2/{project_id}/volumes/{volume_id}/action

显示卷的镜像元数据

显示卷的镜像元数据。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

os-show_image_metadata (可选)

body

对象

os-show_image_metadata 操作。

请求示例

{
    "os-show_image_metadata": {}
}

响应参数

名称

入参

类型

描述

metadata

body

对象

镜像元数据键值对。

响应示例

{
    "metadata": {
        "key1": "value1",
        "key2": "value2"
    }
}
POST
/v2/{project_id}/volumes/{volume_id}/action

将卷附加到服务器

将卷附加到服务器。在请求体中指定 os-attach 操作。

先决条件

  • 卷状态必须为 available

  • 您应该设置 instance_uuidhost_name

响应码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

instance_uuid (可选)

body

字符串

正在附加的实例的 UUID。

挂载点

body

字符串

正在附加的挂载点。

host_name (可选)

body

字符串

正在附加的主机名称。

os-attach

body

对象

os-attach 操作。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
    "os-attach": {
        "instance_uuid": "95D9EF50-507D-11E5-B970-0800200C9A66",
        "mountpoint": "/dev/vdc"
    }
}
POST
/v2/{project_id}/volumes/{volume_id}/action

从服务器分离卷

从服务器分离卷。在请求体中指定 os-detach 操作。

先决条件

  • 卷状态必须为 in-use

响应码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

attachment_id (可选)

body

字符串

接口 ID。

os-detach

body

对象

os-detach 操作。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
    "os-detach": {
        "attachment_id": "d8777f54-84cf-4809-a679-468ffed56cf1"
    }
}
POST
/v2/{project_id}/volumes/{volume_id}/action

取消管理卷

从块存储管理中移除卷,但不移除与之关联的后端存储对象。在请求体中指定 os-unmanage 操作。

先决条件

  • 卷状态必须为 available

响应码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

os-unmanage

body

对象

os-unmanage 操作。此操作从 Cinder 管理中移除指定的卷。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
    "os-unmanage": {}
}
POST
/v2/{project_id}/volumes/{volume_id}/action

强制分离卷

强制卷分离。在请求体中指定 os-force_detach 操作。

在断开卷连接后,回滚未成功的分离操作。

策略默认设置仅允许具有管理角色权限的用户执行此操作。云提供商可以通过策略配置文件中的 volume_extension:volume_admin_actions:force_detach 规则更改这些权限。

响应码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

connector (可选)

body

对象

connector 对象。

attachment_id (可选)

body

字符串

接口 ID。

os-force_detach

body

对象

os-force_detach 操作。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
    "os-force_detach": {
        "attachment_id": "d8777f54-84cf-4809-a679-468ffed56cf1",
        "connector": {
            "initiator": "iqn.2012-07.org.fake:01"
        }
    }
}
POST
/v2/{project_id}/volumes/{volume_id}/action

更改卷类型

更改现有卷的类型。在请求体中指定 os-retype 操作。

更改现有卷的卷类型,Cinder 可能会根据新的卷类型将卷迁移到合适的卷宿主机。

不支持将正在使用的卷从支持多附件的类型更改为不支持多附件的类型,反之亦然。通常不建议重新调整正在使用的多附件卷的类型,如果该卷具有多个活动的读/写附件。

策略默认设置仅允许具有管理角色权限或卷所有者执行此操作。云提供商可以通过策略配置文件更改这些权限。

将未加密的卷重新类型化为相同大小的加密卷很可能会失败。即使卷与源卷的大小相同,加密卷也需要存储额外的加密信息开销。这导致新卷无法容纳所有数据。

响应码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

new_type

body

字符串

卷更改的新卷类型。

migration_policy (可选)

body

字符串

指定卷重新调整类型时是否应迁移。可能的值为 on-demandnever。如果未指定,则默认值为 never

注意

如果卷附加到服务器实例并将被迁移,那么默认策略仅允许具有管理角色权限的用户尝试重新调整类型操作。对正在使用的加密卷进行迁移到新宿主机的重新调整类型操作不受支持。

os-retype

body

对象

os-retype 操作。

volume_id

路径

字符串

卷的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

请求示例

{
    "os-retype": {
        "new_type": "dedup-tier-replicaton",
        "migration_policy": "never"
        }
}
POST
/v2/{project_id}/volumes/{volume_id}/action

迁移卷

在请求体中指定 os-migrate_volume 操作。

host (str) – 卷迁移的目标主机。主机格式为 host@backend

通常不建议重新调整正在使用的多附件卷的类型,如果该卷具有多个活动的读/写附件。

策略默认设置仅允许具有管理角色权限的用户执行此操作。云提供商可以通过策略配置文件更改这些权限。

先决条件

  • status 必须为 availablein-use

  • migration_status 必须为 Nonedeletingerrorsuccess

  • replication_status 必须为 Nonedisablednot-capable

  • 迁移必须发生在卷当前所在的另一个宿主机上。

  • 卷不能是组的成员。

  • 卷不能具有快照。

异步后置条件

在成功时,卷 status 将返回到原始状态 availablein-use,并且 migration_status 将为 success。如果失败,migration_status 将为 error。如果失败,并且 lock_volume 为 true 并且卷最初为 available,则 status 将返回到 available

响应码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

volume_id

路径

字符串

卷的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

os-migrate_volume

body

对象

os-migrate_volume 操作。

host

body

字符串

卷迁移的目标宿主机。宿主机格式为 host@backend

force_host_copy (可选)

body

布尔值

如果为 false(默认值),则依赖于卷后端驱动程序执行迁移,这可能是优化的。如果为 true,或者卷驱动程序未能自行迁移卷,则执行基于宿主机的通用迁移。

lock_volume (可选)

body

布尔值

如果为 true,则迁移 available 卷会将状态更改为 maintenance,从而防止对卷执行其他操作,例如附加、分离、重新调整类型等。

请求示例

{
    "os-migrate_volume": {
        "host": "node1@lvm"
    }
}
POST
/v2/{project_id}/volumes/{volume_id}/action

完成卷迁移

在请求体中指定 os-migrate_volume_completion 操作。

完成卷的迁移,更新数据库中的新卷,将新卷的 status 返回到原始卷的 status,最后删除原始卷。

先决条件

  • 原始卷和新卷的 migration_status 必须都为 None,或者都设置为非 None 值。

  • 此外,当设置新卷的 migration_status 必须采用 target:VOLUME_UUID 的形式,其中 VOLUME_UUID 是原始卷 UUID。

异步后置条件

在成功时,卷 status 将返回到原始状态 availablein-use,并且 migration_status 将为 success。如果失败,migration_status 将为 error

响应码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

volume_id

路径

字符串

卷的 UUID。

project_id

路径

字符串

多租户云中项目的 UUID。

os-migrate_volume_completion

body

对象

os-migrate_volume_completion 操作。

new_volume

body

字符串

新卷的 UUID。

错误 (可选)

body

布尔值

用于指示是否发生需要清理的错误。

请求示例

{
    "os-migrate_volume_completion": {
        "new_volume": "2b955850-f177-45f7-9f49-ecb2c256d161",
        "error": false
    }
}
POST
/v2/{project_id}/volumes/{volume_id}/action

强制删除卷

尝试强制删除卷,无论其状态如何。在请求体中指定 os-force_delete 操作。

响应码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

os-force_delete

body

字符串

The os-force_delete action.

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
   "os-force_delete": {}
}
POST
/v2/{project_id}/volumes/{volume_id}/action

更新卷启动状态

更新卷的启动状态,将其标记为可启动卷。在请求体中指定 os-set_bootable 操作。

响应码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

os-set_bootable

body

对象

os-set_bootable 操作。

bootable

body

布尔值

启用或禁用可引导属性。您可以从可引导卷启动实例。

请求示例

{
    "os-set_bootable": {
        "bootable": "True"
    }
}

卷 (volumes)

卷是一种可分离的块存储设备,类似于 USB 硬盘。您可以一次将一个卷附加到一个实例。

snapshot_idsource_volid 参数指定此卷来自的快照或卷的 ID。如果卷不是从快照或源卷创建的,则这些值为 null。

在创建、列出、更新或删除卷时,可能的状态值是

卷状态

状态

描述

creating

卷正在创建。

available

卷已准备好附加到实例。

attaching

卷正在附加到实例。

detaching

卷正在从实例分离。

in-use

卷已附加到实例。

maintenance

锁定中

deleting

卷正在被删除。

awaiting-transfer

卷正在等待传输。

error

发生卷创建错误。

error_deleting

发生卷删除错误。

backing-up

卷正在备份。

restoring-backup

正在将备份还原到卷。

error_backing-up

备份发生错误。

error_restoring

发生备份还原错误。

error_extending

尝试扩展卷时发生错误。

downloading

卷正在下载镜像。

uploading

卷正在上传到镜像。

retyping

卷正在更改为另一种卷类型。

extending

正在扩展

GET
/v2/{project_id}/volumes/detail

列出卷的详细信息

列出项目可以访问的所有块存储卷,并显示详细信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

sort (可选)

查询

字符串

以 <key> [: <direction>] 形式的逗号分隔的排序键列表,以及可选的排序方向。有效的方向是 asc(升序)或 desc(降序)。

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

响应参数

名称

入参

类型

描述

migration_status (可选)

body

字符串

卷迁移状态。仅限管理员。

attachments

body

数组

实例附加信息。如果此卷附加到服务器实例,则 attachments 列表包括附加服务器的 UUID、附加 UUID、附加主机的名称(如果有)、卷 UUID、设备和设备 UUID。否则,此列表为空。

links

body

数组

卷传输的链接。

availability_zone (可选)

body

字符串

可用区的名称。

os-vol-host-attr:host (可选)

body

字符串

卷的当前后端。主机格式为 host@backend#pool

encrypted

body

布尔值

如果为 true,则此卷已加密。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

replication_status

body

字符串

卷复制状态。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

id

body

字符串

卷传输的 UUID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

user_id

body

字符串

用户的 UUID。

os-vol-tenant-attr:tenant_id

body

字符串

卷所属的项目 ID。

os-vol-mig-status-attr:migstat (可选)

body

字符串

此卷迁移的状态(None 表示当前没有正在进行的迁移)。

metadata

body

对象

快照的任何元数据键值对。

status

body

字符串

卷状态。

volume_image_metadata (可选)

body

对象

镜像元数据条目的列表。仅包含从镜像或最初从镜像创建的卷的快照创建的卷。

description (可选)

body

字符串

备份描述或 null。

multiattach

body

布尔值

如果为 true,则此卷可以附加到多个实例。

source_volid (可选)

body

字符串

源卷的 UUID。API 创建一个与源卷大小相同的新卷,除非请求了更大的大小。

consistencygroup_id

body

字符串

一致性组的 UUID。

os-vol-mig-status-attr:name_id (可选)

body

字符串

此卷名称在后端基于的卷 ID。

name

body

字符串

卷传输的名称。

bootable

body

字符串

启用或禁用可引导属性。您可以从可引导卷启动实例。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

volumes

body

数组

一个 volume 对象列表。

volume_type (可选)

路径

字符串

项目要访问的卷类型 ID。

volumes_links (可选)

body

数组

卷链接。

响应示例

{
    "volumes": [
        {
            "migration_status": null,
            "attachments": [
                {
                    "server_id": "f4fda93b-06e0-4743-8117-bc8bcecd651b",
                    "attachment_id": "3b4db356-253d-4fab-bfa0-e3626c0b8405",
                    "host_name": null,
                    "volume_id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
                    "device": "/dev/vdb",
                    "id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38"
                }
            ],
            "links": [
                {
                    "href": "http://23.253.248.171:8776/v2/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
                    "rel": "self"
                },
                {
                    "href": "http://23.253.248.171:8776/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
                    "rel": "bookmark"
                }
            ],
            "availability_zone": "nova",
            "os-vol-host-attr:host": "difleming@lvmdriver-1#lvmdriver-1",
            "encrypted": false,
            "replication_status": "disabled",
            "snapshot_id": null,
            "id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
            "size": 2,
            "user_id": "32779452fcd34ae1a53a797ac8a1e064",
            "os-vol-tenant-attr:tenant_id": "bab7d5c60cd041a0a36f7c4b6e1dd978",
            "os-vol-mig-status-attr:migstat": null,
            "metadata": {
                "readonly": false,
                "attached_mode": "rw"
            },
            "status": "in-use",
            "description": null,
            "multiattach": true,
            "source_volid": null,
            "consistencygroup_id": null,
            "os-vol-mig-status-attr:name_id": null,
            "name": "test-volume-attachments",
            "bootable": "false",
            "created_at": "2015-11-29T03:01:44.000000",
            "volume_type": "lvmdriver-1"
        },
        {
            "migration_status": null,
            "attachments": [],
            "links": [
                {
                    "href": "http://23.253.248.171:8776/v2/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/173f7b48-c4c1-4e70-9acc-086b39073506",
                    "rel": "self"
                },
                {
                    "href": "http://23.253.248.171:8776/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/173f7b48-c4c1-4e70-9acc-086b39073506",
                    "rel": "bookmark"
                }
            ],
            "availability_zone": "nova",
            "os-vol-host-attr:host": "difleming@lvmdriver-1#lvmdriver-1",
            "encrypted": false,
            "replication_status": "disabled",
            "snapshot_id": null,
            "id": "173f7b48-c4c1-4e70-9acc-086b39073506",
            "size": 1,
            "user_id": "32779452fcd34ae1a53a797ac8a1e064",
            "os-vol-tenant-attr:tenant_id": "bab7d5c60cd041a0a36f7c4b6e1dd978",
            "os-vol-mig-status-attr:migstat": null,
            "metadata": {},
            "status": "available",
            "volume_image_metadata": {
                "kernel_id": "8a55f5f1-78f7-4477-8168-977d8519342c",
                "checksum": "eb9139e4942121f22bbc2afc0400b2a4",
                "min_ram": "0",
                "ramdisk_id": "5f6bdf8a-92db-4988-865b-60bdd808d9ef",
                "disk_format": "ami",
                "image_name": "cirros-0.3.4-x86_64-uec",
                "image_id": "b48c53e1-9a96-4a5a-a630-2e74ec54ddcc",
                "container_format": "ami",
                "min_disk": "0",
                "size": "25165824"
            },
            "description": "",
            "multiattach": false,
            "source_volid": null,
            "consistencygroup_id": null,
            "os-vol-mig-status-attr:name_id": null,
            "name": "test-volume",
            "bootable": "true",
            "created_at": "2015-11-29T02:25:18.000000",
            "volume_type": "lvmdriver-1"
        }
    ],
    "volumes_links": [{
        "href": "https://158.69.65.111/volume/v2/4ad9f06ab8654e40befa59a2e7cac86d/volumes/detail?limit=1&marker=3b451d5d-9358-4a7e-a746-c6fd8b0e1462",
        "rel": "next"
    }]
}
POST
/v2/{project_id}/volumes

创建卷

创建卷。

要创建可启动卷,请在请求体中的 imageRef 属性中包含要从中创建卷的镜像的 UUID。

先决条件

  • 您必须有足够的卷存储配额才能创建请求大小的卷。

异步后置条件

  • 在具有正确权限的情况下,您可以通过 API 调用将卷状态查看为 available

  • 在具有正确访问权限的情况下,您可以在 OpenStack 块存储管理的存储系统中查看创建的卷。

故障排除

  • 如果卷状态仍然为 creating 或显示其他错误状态,则请求失败。请确保满足先决条件,然后调查存储后端。

  • 卷未在 OpenStack 块存储管理的存储系统中创建。

  • 存储节点需要足够的可用存储空间来匹配卷创建请求的大小。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

description

body

字符串

卷描述。

imageRef (可选)

body

字符串

要从中创建卷的镜像的 UUID。创建可启动卷是必需的。

availability_zone (可选)

body

字符串

可用区的名称。

source_volid (可选)

body

字符串

源卷的 UUID。API 创建一个与源卷大小相同的新卷,除非请求了更大的大小。

name (可选)

body

字符串

卷名称。

volume

body

对象

一个 volume 对象。

consistencygroup_id (可选)

body

字符串

一致性组的 UUID。

volume_type (可选)

body

字符串

卷类型(名称或 ID)。要创建具有多个存储后端的环境,您必须指定卷类型。块存储卷后端作为 cinder- volume 的子项生成,并且它们由唯一的队列键入。它们命名为 cinder- volume.HOST.BACKEND。例如,cinder- volume.ubuntu.lvmdriver。创建卷时,调度器会根据卷类型选择合适的后端来处理请求。默认值为 None。有关如何使用卷类型来创建多个存储后端的信息,请参阅 配置多个存储后端

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

OS-SCH-HNT:scheduler_hints (可选)

body

对象

发送到调度器的字典数据。

metadata (可选)

body

对象

与卷关联的一个或多个元数据键值对。

project_id

路径

字符串

多租户云中项目的 UUID。

请求示例

{
    "volume": {
        "size": 10,
        "availability_zone": null,
        "source_volid": null,
        "description": null,
        "multiattach": false,
        "snapshot_id": null,
        "name": null,
        "imageRef": null,
        "volume_type": null,
        "metadata": {},
        "consistencygroup_id": null
    },
    "OS-SCH-HNT:scheduler_hints": {
        "same_host": [
            "a0cf03a5-d921-4877-bb5c-86d26cf818e1",
            "8c19174f-4220-44f0-824a-cd1eeef10287"
        ]
    }
}

响应参数

名称

入参

类型

描述

migration_status (可选)

body

字符串

卷迁移状态。仅限管理员。

attachments

body

数组

实例附加信息。如果此卷附加到服务器实例,则 attachments 列表包括附加服务器的 UUID、附加 UUID、附加主机的名称(如果有)、卷 UUID、设备和设备 UUID。否则,此列表为空。

links

body

数组

卷传输的链接。

availability_zone (可选)

body

字符串

可用区的名称。

encrypted

body

布尔值

如果为 true,则此卷已加密。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

replication_status

body

字符串

卷复制状态。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

id

body

字符串

卷传输的 UUID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

user_id

body

字符串

用户的 UUID。

metadata

body

对象

快照的任何元数据键值对。

status

body

字符串

卷状态。

description (可选)

body

字符串

备份描述或 null。

multiattach

body

布尔值

如果为 true,则此卷可以附加到多个实例。

source_volid (可选)

body

字符串

源卷的 UUID。API 创建一个与源卷大小相同的新卷,除非请求了更大的大小。

volume

body

对象

一个 volume 对象。

consistencygroup_id

body

字符串

一致性组的 UUID。

name

body

字符串

卷传输的名称。

bootable

body

字符串

启用或禁用可引导属性。您可以从可引导卷启动实例。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

volume_type (可选)

路径

字符串

项目要访问的卷类型 ID。

响应示例

{
    "volume": {
        "status": "creating",
        "migration_status": null,
        "user_id": "0eea4eabcf184061a3b6db1e0daaf010",
        "attachments": [],
        "links": [
            {
                "href": "http://23.253.248.171:8776/v2/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
                "rel": "self"
            },
            {
                "href": "http://23.253.248.171:8776/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
                "rel": "bookmark"
            }
        ],
        "availability_zone": "nova",
        "bootable": "false",
        "encrypted": false,
        "created_at": "2015-11-29T03:01:44.000000",
        "description": null,
        "updated_at": null,
        "volume_type": "lvmdriver-1",
        "name": "test-volume-attachments",
        "replication_status": "disabled",
        "consistencygroup_id": null,
        "source_volid": null,
        "snapshot_id": null,
        "multiattach": false,
        "metadata": {},
        "id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
        "size": 2
    }
}
GET
/v2/{project_id}/volumes

列出卷

列出项目可以访问的所有块存储卷的摘要信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

all_tenants (可选)

查询

字符串

显示所有项目的详细信息。仅限管理员。

sort (可选)

查询

字符串

以 <key> [: <direction>] 形式的逗号分隔的排序键列表,以及可选的排序方向。有效的方向是 asc(升序)或 desc(降序)。

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

响应参数

名称

入参

类型

描述

volumes

body

数组

一个 volume 对象列表。

id

body

字符串

卷传输的 UUID。

links

body

数组

卷传输的链接。

name

body

字符串

卷传输的名称。

volumes_links (可选)

body

数组

卷链接。

响应示例

{
    "volumes": [
        {
            "id": "45baf976-c20a-4894-a7c3-c94b7376bf55",
            "links": [
                {
                    "href": "https://:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/45baf976-c20a-4894-a7c3-c94b7376bf55",
                    "rel": "self"
                },
                {
                    "href": "https://:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/45baf976-c20a-4894-a7c3-c94b7376bf55",
                    "rel": "bookmark"
                }
            ],
            "name": "vol-004"
        },
        {
            "id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
            "links": [
                {
                    "href": "https://:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
                    "rel": "self"
                },
                {
                    "href": "https://:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
                    "rel": "bookmark"
                }
            ],
            "name": "vol-003"
        }
    ],
    "volumes_links": [{
        "href": "https://158.69.65.111/volume/v2/4ad9f06ab8654e40befa59a2e7cac86d/volumes/detail?limit=1&marker=3b451d5d-9358-4a7e-a746-c6fd8b0e1462",
        "rel": "next"
    }]
}
GET
/v2/{project_id}/volumes/{volume_id}

显示卷详细信息

显示卷的详细信息。

先决条件

  • 卷必须存在。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

响应参数

名称

入参

类型

描述

migration_status (可选)

body

字符串

卷迁移状态。仅限管理员。

attachments

body

数组

实例附加信息。如果此卷附加到服务器实例,则 attachments 列表包括附加服务器的 UUID、附加 UUID、附加主机的名称(如果有)、卷 UUID、设备和设备 UUID。否则,此列表为空。

links

body

数组

卷传输的链接。

availability_zone (可选)

body

字符串

可用区的名称。

os-vol-host-attr:host (可选)

body

字符串

卷的当前后端。主机格式为 host@backend#pool

encrypted

body

布尔值

如果为 true,则此卷已加密。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

replication_status

body

字符串

卷复制状态。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

id

body

字符串

卷传输的 UUID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

user_id

body

字符串

用户的 UUID。

os-vol-tenant-attr:tenant_id

body

字符串

卷所属的项目 ID。

os-vol-mig-status-attr:migstat (可选)

body

字符串

此卷迁移的状态(None 表示当前没有正在进行的迁移)。

metadata

body

对象

快照的任何元数据键值对。

status

body

字符串

卷状态。

volume_image_metadata (可选)

body

对象

镜像元数据条目的列表。仅包含从镜像或最初从镜像创建的卷的快照创建的卷。

description (可选)

body

字符串

备份描述或 null。

multiattach

body

布尔值

如果为 true,则此卷可以附加到多个实例。

source_volid (可选)

body

字符串

源卷的 UUID。API 创建一个与源卷大小相同的新卷,除非请求了更大的大小。

volume

body

对象

一个 volume 对象。

consistencygroup_id

body

字符串

一致性组的 UUID。

os-vol-mig-status-attr:name_id (可选)

body

字符串

此卷名称在后端基于的卷 ID。

name

body

字符串

卷传输的名称。

bootable

body

字符串

启用或禁用可引导属性。您可以从可引导卷启动实例。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

volume_type (可选)

路径

字符串

项目要访问的卷类型 ID。

响应示例

{
    "volume": {
        "status": "available",
        "attachments": [],
        "links": [
            {
                "href": "https://:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
                "rel": "self"
            },
            {
                "href": "https://:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
                "rel": "bookmark"
            }
        ],
        "availability_zone": "nova",
        "bootable": "false",
        "os-vol-host-attr:host": "ip-10-168-107-25",
        "source_volid": null,
        "snapshot_id": null,
        "id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
        "description": "Super volume.",
        "name": "vol-002",
        "created_at": "2013-02-25T02:40:21.000000",
        "volume_type": "None",
        "os-vol-tenant-attr:tenant_id": "0c2eba2c5af04d3f9e9d0d410b371fde",
        "size": 1,
        "metadata": {
            "contents": "not junk"
        }
    }
}
PUT
/v2/{project_id}/volumes/{volume_id}

更新卷

更新卷。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

volume

body

对象

一个 volume 对象。

description (可选)

body

字符串

备份描述或 null。

name

body

字符串

卷传输的名称。

metadata (可选)

body

对象

与卷关联的一个或多个元数据键值对。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
    "volume": {
        "name": "vol-003",
        "description": "This is yet, another volume."
    }
}

响应参数

名称

入参

类型

描述

migration_status (可选)

body

字符串

卷迁移状态。仅限管理员。

attachments

body

数组

实例附加信息。如果此卷附加到服务器实例,则 attachments 列表包括附加服务器的 UUID、附加 UUID、附加主机的名称(如果有)、卷 UUID、设备和设备 UUID。否则,此列表为空。

links

body

数组

卷传输的链接。

availability_zone (可选)

body

字符串

可用区的名称。

encrypted

body

布尔值

如果为 true,则此卷已加密。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

replication_status

body

字符串

卷复制状态。

snapshot_id (可选)

body

字符串

要从现有快照创建卷,请指定卷快照的 UUID。卷将在相同的可用区中创建,并且大小与快照相同。

id

body

字符串

卷传输的 UUID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

user_id

body

字符串

用户的 UUID。

metadata

body

对象

与卷关联的一个或多个元数据键值对。

status

body

字符串

卷状态。

description (可选)

body

字符串

备份描述或 null。

multiattach

body

布尔值

如果为 true,则此卷可以附加到多个实例。

source_volid (可选)

body

字符串

源卷的 UUID。API 创建一个与源卷大小相同的新卷,除非请求了更大的大小。

volume

body

对象

一个 volume 对象。

consistencygroup_id

body

字符串

一致性组的 UUID。

name

body

字符串

卷传输的名称。

bootable

body

字符串

启用或禁用可引导属性。您可以从可引导卷启动实例。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

volume_type (可选)

路径

字符串

项目要访问的卷类型 ID。

响应示例

{
    "volume": {
        "status": "available",
        "migration_status": null,
        "user_id": "0eea4eabcf184061a3b6db1e0daaf010",
        "attachments": [],
        "links": [
            {
                "href": "https://:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
                "rel": "self"
            },
            {
                "href": "https://:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
                "rel": "bookmark"
            }
        ],
        "availability_zone": "nova",
        "bootable": "false",
        "encrypted": false,
        "created_at": "2015-11-29T03:01:44.000000",
        "description": "This is yet, another volume.",
        "updated_at": null,
        "volume_type": "lvmdriver-1",
        "name": "vol-003",
        "replication_status": "disabled",
        "consistencygroup_id": null,
        "source_volid": null,
        "snapshot_id": null,
        "multiattach": false,
        "metadata": {
            "contents": "not junk"
        },
        "id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
        "size": 1
    }
}
DELETE
/v2/{project_id}/volumes/{volume_id}

删除卷

删除卷。

先决条件

  • 卷状态必须为 availablein-useerrorerror_restoring

  • 您不能已经拥有该卷的快照。

  • 您不能删除正在迁移的卷。

异步后置条件

  • 卷在卷索引中被删除。

  • OpenStack 块存储管理的卷在存储节点中被删除。

故障排除

  • 如果卷状态仍然为 deleting 或变为 error_deleting,则请求失败。请确保满足先决条件,然后调查存储后端。

  • OpenStack 块存储管理的卷未从存储系统中删除。

响应代码

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

cascade (可选)

路径

布尔值

删除与卷一起的任何快照。默认值为 False。

POST
/v2/{project_id}/volumes/{volume_id}/metadata

创建卷元数据

创建或替换卷的元数据。不修改请求中不存在的项目。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

metadata

body

对象

与卷关联的一个或多个元数据键值对。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
    "metadata": {
        "name": "metadata0"
    }
}

响应参数

名称

入参

类型

描述

metadata

body

对象

与卷关联的一个或多个元数据键值对。

响应示例

{
    "metadata": {
        "name": "metadata0"
    }
}
GET
/v2/{project_id}/volumes/{volume_id}/metadata

显示卷元数据

显示卷的元数据。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

响应参数

名称

入参

类型

描述

metadata

body

对象

与卷关联的一个或多个元数据键值对。

响应示例

{
    "metadata": {}
}
PUT
/v2/{project_id}/volumes/{volume_id}/metadata

更新卷元数据

使用请求中的键值对替换卷的所有元数据。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

metadata

body

对象

与卷关联的一个或多个元数据键值对。

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

请求示例

{
    "metadata": {
        "name": "metadata1"
    }
}

响应参数

名称

入参

类型

描述

metadata

body

对象

与卷关联的一个或多个元数据键值对。

响应示例

{
    "metadata": {
        "name": "metadata1"
    }
}
GET
/v2/{project_id}/volumes/{volume_id}/metadata/{key}

显示特定键的卷元数据

显示卷的特定键的元数据。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

key

路径

字符串

您想要查看的元数据的元数据键名称。

响应参数

名称

入参

类型

描述

meta

body

对象

卷的元数据键值对。

响应示例

{
    "meta": {
        "name": "test"
    }
}
DELETE
/v2/{project_id}/volumes/{volume_id}/metadata/{key}

删除卷元数据

删除卷的元数据。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

key

路径

字符串

要删除的元数据的元数据键名称。

PUT
/v2/{project_id}/volumes/{volume_id}/metadata/{key}

更新特定键的卷元数据

更新卷的特定键的元数据。

响应代码

成功

代码

原因

200 - 正常

请求成功。

请求

名称

入参

类型

描述

project_id

路径

字符串

多租户云中项目的 UUID。

volume_id

路径

字符串

卷的 UUID。

key

路径

字符串

您想要更新的元数据的元数据键名称。

meta

body

对象

卷的元数据键值对。

请求示例

{
  "meta": {
    "name": "new_name"
  }
}

响应参数

名称

入参

类型

描述

meta

body

对象

卷的元数据键值对。

响应示例

{
  "meta": {
    "name": "new_name"
  }
}