# Guest [TOC levels=2]: # "目录" # 目录 - [创建 Guest](#创建-guest) - [获取 Guest 信息](#获取-guest-信息) - [获取 Guest 列表](#获取-guest-列表) - [Guest 全文检索](#guest-全文检索) - [更改 Guest 信息](#更改-guest-信息) - [重启 Guest](#重启-guest) - [关闭 Guest](#关闭-guest) - [强制关闭 Guest](#强制关闭-guest) - [启动 Guest](#启动-guest) - [暂停 Guest](#暂停-guest) - [恢复 Guest](#恢复-guest) - [添加磁盘](#添加磁盘) - [分离磁盘](#分离磁盘) - [迁移 Guest](#迁移-guest) - [删除 Guest](#删除-guest) ## 创建 Guest > 创建 Guest ```http POST https://$domain /api/guest Body: { "cpu": 4, "memory": 4, "os_template_id": 1, "quantity": 1, "name": "", "password": "pswd.com", "lease_term": 100 } ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------------:|:---:|:------:|:---------------------------------------------------------------------------------------------------------------------| | cpu | Y | Long | CPU 个数 | | memory | Y | Long | 内存大小,单位`MB` | | os_template_id | Y | Long | 模板ID | | quantity | Y | Long | 本次创建的,同样配置的实例数量 | | name | N | String | 实例名称。如果quantity大于1,则会在实例名称后面追加`-序号`,组成新的实例名称。如果实例名称为空字符串时,实例名称将为8位的随机字符串。 | | password | N | String | 实例管理员用户密码。为空字符串时,密码将为16位的随机字符串。 | | lease_term | Y | Long | 租期。过期后,实例将被置于悬挂状态,并在一周后自动删除。单位`到期的时间戳`。 | ## 获取 Guest 信息 > 获取指定 UUID 的 Guest 信息 ```http GET https://$domain /api/guest/{uuid} ``` 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" }, "data": { "status": 1, "xml": "\n \n \n \n \n \n \n \n 4hd3Dop4\n 01ee4d15-7165-4859-b8d4-d2c3c0ea22c3\n 4\n 4\n \n \n \n hvm\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "remark": "zabbix", "vnc_password": "eg9nEWNanoPMBdFz", "name": "4hd3Dop4", "os_template_id": 1, "ip": "10.10.6.78", "vnc_port": 16004, "id": 19, "network": "net-br0", "create_time": 1495005882742821, "manage_network": "net-br0", "memory": 4, "on_host": "10k01.jkser.com", "password": "pswd.com", "cpu": 4, "uuid": "01ee4d15-7165-4859-b8d4-d2c3c0ea22c3" } } ``` | 参数名称 | 必须 | 类型 | 说明 | |:---------------|:---:|:------:|:-------------------------------------------------------------------| | id | Y | Long | Guest ID | | uuid | Y | String | Guest UUID | | name | Y | String | 实例名称 | | password | Y | String | Guest 密码 | | remark | Y | String | 实例备注 | | os_template_id | Y | Long | 实例被衍生出来的模板 ID | | create_time | Y | Long | 创建时间,单位`微秒` | | status | Y | Long | Guest 当前的运行状态。可用状态值请参考 [Guest 状态](enum.md#guest-状态) | | on_host | Y | String | 实例所在的宿主机 | | cpu | Y | Long | CPU 个数 | | memory | Y | Long | 内存大小,单位`GB` | | ip | Y | String | 实例的 IP 地址 | | network | Y | String | 实例所在的 业务网络 | | manage_network | Y | String | 实例所在的 管理网络 | | vnc_port | Y | Long | 连接实例的 VNC 端口 | | vnc_password | Y | String | 连接实例的 VNC 密码 | | xml | Y | String | 创建实例时的 xml 描述文档 | ## 获取 Guest 列表 > 获取 Guest 列表 ```http GET https://$domain /api/guests?offset={number}&limit={number} or /api/guests?page={number}&page_size={number} ``` | 参数名称 | 必须 | 类型 | 说明 | |:---------:|:---:|:------:|:--------------------------------------------| | offset | N | Number | 偏移量, 默认值0 | | limit | N | Number | 返回条目数量, 默认值50 | | page | N | Number | 页号, 与offset同时存在时, 以offset为准, 默认值1 | | page_size | N | Number | 页大小, 默认值50 | | order_by | N | String | 所依据的字段 | | order | N | Enum | 排序策略,`asc`\|`desc` | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" }, "data": [{ "status": 1, "xml": "\n \n \n \n \n \n \n \n rlqM4Gvv\n 60e4b9a2-11c8-44ed-82ca-28740ee81ade\n 4\n 4\n \n \n \n hvm\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "remark": "zabbix", "name": "rlqM4Gvv", "os_template_id": 1, "ip": "10.10.5.1", "vnc_port": 16104, "uuid": "60e4b9a2-11c8-44ed-82ca-28740ee81ade", "cpu": 4, "create_time": 1494247162181399, "manage_network": "net-br0", "memory": 4, "id": 12, "password": "pswd.com", "on_host": "10k01.jkser.com", "vnc_password": "4pJDvweOtR0ayRfG", "network": "net-br0" }, { "more" : "more" }, { "status": 0, "xml": "\n \n \n \n \n \n \n \n 4hd3Dop4\n 01ee4d15-7165-4859-b8d4-d2c3c0ea22c3\n 4\n 4\n \n \n \n hvm\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "remark": "", "name": "4hd3Dop4", "os_template_id": 1, "ip": "10.10.6.78", "vnc_port": 16004, "uuid": "01ee4d15-7165-4859-b8d4-d2c3c0ea22c3", "cpu": 4, "create_time": 1495005882742821, "manage_network": "net-br0", "memory": 4, "id": 19, "password": "pswd.com", "on_host": "", "vnc_password": "eg9nEWNanoPMBdFz", "network": "net-br0" }], "paging": { "prev": "http://127.0.0.1:8008/api/guests?page=1&page_size=50&filter=&order=asc&order_by=id", "last": "http://127.0.0.1:8008/api/guests?page=1&page_size=50&filter=&order=asc&order_by=id", "page_size": 50, "next": "http://127.0.0.1:8008/api/guests?page=1&page_size=50&filter=&order=asc&order_by=id", "limit": 50, "offset": 0, "total": 8, "page": 1, "first": "http://127.0.0.1:8008/api/guests?page=1&page_size=50&filter=&order=asc&order_by=id" } } ``` | 参数名称 | 必须 | 类型 | 说明 | |:----------|:---:|:------:|:------------------------------------------------| | total | Y | Number | 用户总量 | | offset | Y | Number | 当前偏移量 | | limit | Y | Number | 返回条目数量 | | page | Y | Number | 透传客户端请求的该参数, 如果没有传递, 则返回默认值1 | | page_size | Y | Number | 透传客户端请求的该参数, 如果没有传递, 则返回默认值 50 | Guest 信息字段描述参见 [获取 Guest 信息](#获取-guest-信息) ## Guest 全文检索 > 根据关键字查找 Guest ```http GET https://$domain /api/guests/_search?offset={number}&limit={number}&keyword=10.10.4 or /api/guests/_search?page={number}&page_size={number}&keyword=10.10.4 ``` | 参数名称 | 必须 | 类型 | 说明 | |:----------|:---:|:------:|:--------------------------------------------| | offset | N | Number | 偏移量, 默认值0 | | limit | N | Number | 返回条目数量, 默认值50 | | page | N | Number | 页号, 与offset同时存在时, 以offset为准, 默认值1 | | page_size | N | Number | 页大小, 默认值50 | | order_by | N | String | 所依据的字段 | | order | N | Enum | 排序策略,`asc`\|`desc` | | keyword | N | String | 全文检索的关键字 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" }, "data": [{ "status": 1, "xml": "\n \n \n \n \n \n \n \n wCbjmsDZ\n ba102b41-4e7a-4d5b-a9e0-43d162695e4a\n 4\n 4\n \n \n \n hvm\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "remark": "zabbix", "name": "wCbjmsDZ", "os_template_id": 1, "ip": "10.10.4.31", "vnc_port": 16347, "uuid": "ba102b41-4e7a-4d5b-a9e0-43d162695e4a", "cpu": 4, "create_time": 1494950937330417, "manage_network": "net-br0", "memory": 4, "id": 18, "password": "pswd.com", "on_host": "10k01.jkser.com", "vnc_password": "VDFsVLMLR9yvM5fS", "network": "net-br0" }], "paging": { "prev": "http://127.0.0.1:8008/api/guests/_search?page=1&page_size=50&keyword=10.10.4&order=asc&order_by=id", "last": "http://127.0.0.1:8008/api/guests/_search?page=1&page_size=50&keyword=10.10.4&order=asc&order_by=id", "page_size": 50, "next": "http://127.0.0.1:8008/api/guests/_search?page=1&page_size=50&keyword=10.10.4&order=asc&order_by=id", "limit": 50, "offset": 0, "total": 1, "page": 1, "first": "http://127.0.0.1:8008/api/guests/_search?page=1&page_size=50&keyword=10.10.4&order=asc&order_by=id" } } ``` | 参数名称 | 必须 | 类型 | 说明 | |:----------|:---:|:------:|:------------------------------------------------| | total | Y | Number | 用户总量 | | offset | Y | Number | 当前偏移量 | | limit | Y | Number | 返回条目数量 | | page | Y | Number | 透传客户端请求的该参数, 如果没有传递, 则返回默认值1 | | page_size | Y | Number | 透传客户端请求的该参数, 如果没有传递, 则返回默认值 50 | Guest 信息字段描述参见 [获取 Guest 信息](#获取-guest-信息) ## 更改 Guest 信息 > 更改指定 uuid 的 Guest 信息 ```http PATCH https://$domain /api/guest/{uuid} Body: { "remark": "desc" } ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------|:---:|:------:|:-----| | remark | N | String | 备注 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" }, "data": { "status": 1, "xml": "\n \n \n \n \n \n \n \n 4hd3Dop4\n 01ee4d15-7165-4859-b8d4-d2c3c0ea22c3\n 4\n 4\n \n \n \n hvm\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "remark": "zabbix", "name": "4hd3Dop4", "os_template_id": 1, "ip": "10.10.6.78", "vnc_port": 16004, "uuid": "01ee4d15-7165-4859-b8d4-d2c3c0ea22c3", "id": 19, "cpu": 4, "create_time": 1495005882742821, "manage_network": "net-br0", "memory": 4, "password": "pswd.com", "on_host": "10k01.jkser.com", "vnc_password": "eg9nEWNanoPMBdFz", "network": "net-br0" } } ``` Guest 信息字段描述参见 [获取 Guest 信息](#获取-guest-信息) ## 重启 Guest > 重启 Guest,uuids以逗号间隔 ```http PUT https://$domain /api/guests/_reboot/{uuids} ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------|:---:|:------:|:-----------------------------------------------| | uuids | Y | String | uuids可为多个或单个uuid。多个实例的uuid以逗号间隔。 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` ## 关闭 Guest > 关闭 Guest,uuids以逗号间隔 ```http PUT https://$domain /api/guests/_shutdown/{uuids} ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------|:---:|:------:|:-----------------------------------------------| | uuids | Y | String | uuids可为多个或单个uuid。多个实例的uuid以逗号间隔。 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` ## 强制关闭 Guest > 强制关闭 Guest,uuids以逗号间隔 ```http PUT https://$domain /api/guests/_force_shutdown/{uuids} ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------|:---:|:------:|:-----------------------------------------------| | uuids | Y | String | uuids可为多个或单个uuid。多个实例的uuid以逗号间隔。 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` ## 启动 Guest > 启动 Guest,uuids以逗号间隔 ```http PUT https://$domain /api/guests/_boot/{uuids} ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------|:---:|:------:|:-----------------------------------------------| | uuids | Y | String | uuids可为多个或单个uuid。多个实例的uuid以逗号间隔。 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` ## 暂停 Guest > 暂停 Guest,uuids以逗号间隔 ```http PUT https://$domain /api/guests/_suspend/{uuids} ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------|:---:|:------:|:-----------------------------------------------| | uuids | Y | String | uuids可为多个或单个uuid。多个实例的uuid以逗号间隔。 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` ## 恢复 Guest > 恢复被暂停的 Guest,uuids以逗号间隔 ```http PUT https://$domain /api/guests/_resume/{uuids} ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------|:---:|:------:|:-----------------------------------------------| | uuids | Y | String | uuids可为多个或单个uuid。多个实例的uuid以逗号间隔。 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` ## 添加磁盘 > 为 Guest 添加磁盘 ```http PUT https://$domain /api/guest/_attach_disk/{uuid}/{disk_uuid} ``` | 参数名称 | 必须 | 类型 | 说明 | |:----------|:---:|:------:|:----------------------| | uuid | Y | String | 欲添加磁盘的Guest的uuid | | disk_uuid | Y | String | 将添加至Guest的磁盘uuid | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` ## 分离磁盘 > 从 Guest 分离磁盘。系统通过磁盘的uuid,可得到具体Guest的uuid。 ```http PUT https://$domain /api/guest/_detach_disk/{disk_uuid} ``` | 参数名称 | 必须 | 类型 | 说明 | |:----------|:---:|:------:|:-----------------| | disk_uuid | Y | String | 将被分离的磁盘uuid | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` ## 迁移 Guest > 迁移指定 uuid 的 Guest 到目标 host ```http PUT https://$domain /api/guests/{uuids}/{destination_host} ``` | 参数名称 | 必须 | 类型 | 说明 | |:-----------------|:---:|:------:|:-----------------------------------------------| | uuids | Y | String | uuids可为多个或单个uuid。多个实例的uuid以逗号间隔。 | | destination_host | Y | String | 目标Host主机名。 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` ## 删除 Guest > 删除指定 uuid 的 Guest ```http DELETE https://$domain /api/guests/{uuids} ``` | 参数名称 | 必须 | 类型 | 说明 | |:--------|:---:|:------:|:-----------------------------------------------| | uuids | Y | String | uuids可为多个或单个uuid。多个实例的uuid以逗号间隔。 | 响应示例 ```json { "state": { "en-us": "OK", "zh-cn": "成功", "code": "200" } } ``` [返回上一级](../README.md) =====================