Thao tác VM (Start, Stop, Reboot)
/v2.1/servers/{server_id}/actionHầu hết thao tác vòng đời trên một VM hiện có dùng cùng endpoint nhưng khác action key trong body. Request là bất đồng bộ: API trả 202 Accepted và trạng thái VM thay đổi ngay sau đó, nên hãy poll GET /v2.1/servers/{server_id} cho đến khi VM đạt trạng thái mong muốn.
Nguồn: server-actions
Request
Tham số
server_idstringbắt buộcpathUUID của VM.
os-startnullbắt buộcbodyKhởi động VM đang dừng. Yêu cầu trạng thái SHUTOFF.
os-stopnullbắt buộcbodyDừng VM đang chạy (shutdown ACPI graceful, sau đó forced khi hết timeout đã cấu hình).
rebootobjectbắt buộcbodyKhởi động lại VM đang chạy.
1 trường
typestringbắt buộcbodySOFT (graceful) hoặc HARD (power cycle).
pausenullbắt buộcbodyĐóng băng VM trong bộ nhớ. Yêu cầu trạng thái ACTIVE.
unpausenullbắt buộcbodyHoàn tác pause.
suspendnullbắt buộcbodyTạm treo VM và giải phóng bộ nhớ trên host. Yêu cầu trạng thái ACTIVE.
resumenullbắt buộcbodyHoàn tác suspend.
locknullbắt buộcbodyNgăn user khác và một số thao tác API thay đổi VM.
unlocknullbắt buộcbodyGỡ lock.
Action key phải là key duy nhất trong body. Gửi hai action trong một request sẽ trả 400.
Tham chiếu action
| Action | Body | Trạng thái yêu cầu | Trạng thái sau thao tác |
|---|---|---|---|
| Khởi động (Start) | {"os-start": null} | SHUTOFF | ACTIVE |
| Dừng (Stop) | {"os-stop": null} | ACTIVE | SHUTOFF |
| Khởi động lại — graceful (Reboot) | {"reboot": {"type": "SOFT"}} | ACTIVE | ACTIVE |
| Khởi động lại — hard (Reboot) | {"reboot": {"type": "HARD"}} | ACTIVE | ACTIVE |
| Tạm dừng (Pause) | {"pause": null} | ACTIVE | PAUSED |
| Bỏ tạm dừng (Unpause) | {"unpause": null} | PAUSED | ACTIVE |
| Tạm treo (Suspend) | {"suspend": null} | ACTIVE | SUSPENDED |
| Tiếp tục (Resume) | {"resume": null} | SUSPENDED | ACTIVE |
| Khoá (Lock) | {"lock": null} | bất kỳ | không đổi |
| Mở khoá (Unlock) | {"unlock": null} | đang khoá | không đổi |
Reboot HARD và os-stop với VM đang có dữ liệu chưa lưu có thể làm mất dữ liệu ghi. Dùng reboot SOFT, hoặc shutdown từ bên trong guest, khi workload không thể mất dữ liệu.
Request mẫu — stop VM
Dùng curl
curl -ks -X POST -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' \
-d '{"os-stop": null}' \
https://api.vietnix.cloud:8774/v2.1/servers/{server_id}/action
HTTP request
POST https://api.vietnix.cloud:8774/v2.1/servers/{server_id}/action
Content-Type: application/json
X-Auth-Token: gAAAAA<...>
{
"os-stop": null
}
Request mẫu — reboot graceful
curl -ks -X POST -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' \
-d '{"reboot": {"type": "SOFT"}}' \
https://api.vietnix.cloud:8774/v2.1/servers/{server_id}/action
Response
Body của response rỗng. Thao tác được theo dõi qua trạng thái VM.
Mã trạng thái
Thành công
| Mã | Mô tả |
|---|---|
| 202 - Accepted | Thao tác đã được chấp nhận và đang được xử lý. |
Lỗi
| Mã | Mô tả |
|---|---|
| 400 - Bad Request | Action không xác định, hoặc gửi nhiều hơn một action. |
| 401 - Unauthorized | User phải 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 | VM không tồn tại, hoặc không hiển thị với project của bạn. |
| 409 - Conflict | VM đang ở trạng thái không cho phép thao tác này (ví dụ os-start trên VM ACTIVE). |
os-start không đưa VM đã shelve trở lại. Dùng {"unshelve": null} cho việc đó, và {"shelve": null} để shelve. Shelve giải phóng tài nguyên compute nhưng vẫn giữ định nghĩa VM và các volume.