Chuyển tới nội dung chính

Thực hiện thao tác trên volume

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

Mộ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.

info

Request​

Tham số​

project_idstringbắt buộcpath

UUID của project.

volume_idstringbắt buộcpath

UUID của volume.

os-extendobjectbắt buộcbody

Mở rộng volume.

1 trường
new_sizeintegerbắt buộcbody

Dung 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ộcbody

Gắn volume available vào một VM.

3 trường
instance_uuidstringbắt buộcbody

UUID của VM đích. Phải có trường này hoặc host_name.

mountpointstringbắt buộcbody

Tên device, ví dụ /dev/vdb.

host_namestringbắt buộcbody

Host đích thay cho VM. Phải có trường này hoặc instance_uuid.

os-detachobjectbắt buộcbody

Detach volume đang in-use.

1 trường
attachment_idstringbắt buộcbody

Attachment 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ộcbody

Tên hoặc ID của volume type đích.

os-volume_upload_imageobjectbắt buộcbody

Tạo image từ volume. Yêu cầu QCOW2.

2 trường
image_namestringbắt buộcbody

Tên của image tạo ra.

disk_formatstringbắt buộcbody

qcow2.

revertobjectbắt buộcbody

Revert 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ộcbody

UUID 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 - OKAction hoàn tất và trả về body, như với os-volume_upload_image.
202 - AcceptedAction đã được chấp nhận và đang được xử lý.

Lỗi​

MãMô tả
400 - Bad RequestAction 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 - UnauthorizedCần xác thực trước khi gửi request.
403 - ForbiddenPolicy không cho phép user hiện tại thực hiện thao tác này.
404 - Not FoundVolume hoặc snapshot không tồn tại.
409 - ConflictTrạng thái volume không cho phép thao tác này.
413 - Request Entity Too LargeRequest vượt quota của project, ví dụ quota gigabyte volume.
warning

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.

note

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.