Thực hiện thao tác trên volume
/v3/{project_id}/volumes/{volume_id}/actionMột số thao tác volume dùng chung endpoint này. Key action trong body quyết định thao tác nào được thực hiện; mỗi request chỉ chứa một action.
Nguồn: volume-actions
Request
Tham số
project_idstringbắt buộcpathUUID của project.
volume_idstringbắt buộcpathUUID của volume.
os-extendobjectbắt buộcbodyMở rộng volume.
1 trường
new_sizeintegerbắt buộcbodyDung lượng mới tính bằng GiB. Phải lớn hơn dung lượng hiện tại.
os-attachobjectbắt buộcbodyGắn volume available vào một VM.
3 trường
instance_uuidstringbắt buộcbodyUUID của VM đích. Phải có trường này hoặc host_name.
mountpointstringbắt buộcbodyTên device, ví dụ /dev/vdb.
host_namestringbắt buộcbodyHost đích thay cho VM. Phải có trường này hoặc instance_uuid.
os-detachobjectbắt buộcbodyDetach volume đang in-use.
1 trường
attachment_idstringbắt buộcbodyAttachment ID lấy từ chi tiết volume.
os-retypeobjectbắt buộcbodyĐổi volume type, qua đó chuyển volume sang policy lưu trữ tương ứng.
1 trường
new_typestringbắt buộcbodyTên hoặc ID của volume type đích.
os-volume_upload_imageobjectbắt buộcbodyTạo image từ volume. Yêu cầu QCOW2.
2 trường
image_namestringbắt buộcbodyTên của image tạo ra.
disk_formatstringbắt buộcbodyqcow2.
revertobjectbắt buộcbodyRevert volume về một snapshot. Cần microversion 3.40 trở lên, gửi trong header OpenStack-API-Version.
1 trường
snapshot_idstringbắt buộcbodyUUID của snapshot cần revert về.
Request mẫu — extend
curl -ks -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' \
-d '{
"os-extend": {
"new_size": 20
}
}' https://api.vietnix.cloud:8776/v3/{project_id}/volumes/{volume_id}/action
Request mẫu — attach
curl -ks -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' \
-d '{
"os-attach": {
"instance_uuid": "e1ae6f7e-c35d-4656-a4fd-2371f9a791d4",
"mountpoint": "/dev/vdb"
}
}' https://api.vietnix.cloud:8776/v3/{project_id}/volumes/{volume_id}/action
Request mẫu — detach
curl -ks -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' \
-d '{
"os-detach": {
"attachment_id": "2b04f3a1-b16c-4c13-aa7f-d1d7f7934a12"
}
}' https://api.vietnix.cloud:8776/v3/{project_id}/volumes/{volume_id}/action
Request mẫu — tạo image từ volume
curl -ks -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' \
-d '{
"os-volume_upload_image": {
"image_name": "vol3_image",
"disk_format": "qcow2"
}
}' https://api.vietnix.cloud:8776/v3/{project_id}/volumes/{volume_id}/action
Request mẫu — revert về snapshot
curl -ks -H 'Content-Type: application/json' -H 'OpenStack-API-Version: volume 3.59' \
-H 'X-Auth-Token: gAAAAA<...>' \
-d '{
"revert": {
"snapshot_id": "ca4e9232-96d3-41a6-ac28-ca3471a05b47"
}
}' https://api.vietnix.cloud:8776/v3/{project_id}/volumes/{volume_id}/action
Response
Hầu hết action trả về 202 Accepted với body rỗng. os-volume_upload_image trả về object volume với status: uploading và image_id mới.
Response body
{
"os-volume_upload_image": {
"id": "de5b7dfc-e3e8-4f14-9969-98d61af40329",
"status": "uploading",
"image_id": "6b84c6e2-494e-426c-8138-86094a6c784c",
"image_name": "vol3_image",
"disk_format": "qcow2",
"container_format": "bare",
"size": 3
}
}
Mã trạng thái
Thành công
| Mã | Mô tả |
|---|---|
| 200 - OK | Action hoàn tất và trả về body, như với os-volume_upload_image. |
| 202 - Accepted | Action đã được chấp nhận và đang được xử lý. |
Lỗi
| Mã | Mô tả |
|---|---|
| 400 - Bad Request | Action không hợp lệ hoặc điều kiện tiên quyết không đạt, ví dụ extend xuống dung lượng nhỏ hơn. |
| 401 - Unauthorized | Cần xác thực trước khi gửi request. |
| 403 - Forbidden | Policy không cho phép user hiện tại thực hiện thao tác này. |
| 404 - Not Found | Volume hoặc snapshot không tồn tại. |
| 409 - Conflict | Trạng thái volume không cho phép thao tác này. |
| 413 - Request Entity Too Large | Request vượt quota của project, ví dụ quota gigabyte volume. |
Extend thay đổi dung lượng block device, không thay đổi filesystem. Hãy mở rộng partition và filesystem bên trong guest sau đó, nếu không phần dung lượng thêm sẽ không được dùng.
Extend yêu cầu volume ở trạng thái available trước microversion 3.42. Với microversion mới hơn, volume đang gắn có thể extend được khi in-use, tuỳ policy và backend. Trạng thái error_extending nghĩa là request thất bại; kiểm tra quota và dung lượng backend trước khi thử lại.