批量返回消息分为非longjob和longjob两种类型,详情如下。
非longjob类型API
对于非longjob类型API的返回值,外层的success在出错时为true,而里层success则根据结果进行变化,若子任务成功则success=true,否则success=false。以下为APIBatchDeleteVolumeSnapshotMsg返回示例:
出错返回:
{
"results": [
{
"error": {
"code": "VOLUME_SNAPSHOT.1000",
"description": "Snapshot is not in correct status for operation.",
"details": "snapshot[uuid:e9c43724c6614aa488b63d6b33e30ebd, name:测试1]'s status[Ready] is not allowed for message[org.zstack.header.storage.snapshot.VolumeSnapshotDeletionMsg], allowed status[Ready, Creating, Deleting]"
},
"snapshotUuid": "e9c43724c6614aa488b63d6b33e30ebd",
"success": false
},
{
"error": {
"code": "VOLUME_SNAPSHOT.1000",
"description": "Snapshot is not in correct status for operation.",
"details": "snapshot[uuid:e9c43724c6614aa488b63d6b33e30ebd, name:测试2]'s status[Ready] is not allowed for message[org.zstack.header.storage.snapshot.VolumeSnapshotDeletionMsg], allowed status[Ready, Creating, Deleting]"
},
"snapshotUuid": "63daa66726b24f9390216b8edf32190d",
"success": false
}
],
"success": true
}成功返回:
{
"results": [
{
"snapshotUuid": "1c8408e0f05d4fc39465d7db27d6bc32",
"success": true
},
{
"snapshotUuid": "e071e0ec42de4323bff23993a6a236d2",
"success": true
}
],
"success": true
}Longjob类型API
对于longjob类型API的返回值,外层success在出错时也为true,而里层success则根据结果进行变化,若子任务成功则success=true,否则success=false。以下为APIAddHostFromConfigFileMsg返回示例:
出错返回:
{
"results": [
{
"error": {
"code": "SYS.1006",
"cost": "5ms",
"description": "An operation failed",
"details": "the host[10.0.231.23] ssh port[22] not open after 300 seconds, connect timeout",
"elaboration": "错误信息: 物理机[10.0.231.23]的ssh端口[22]在 300 秒内未开放,连接超时",
"location": "HostManagerImpl.java: send-connect-host-message (location:2/4)"
},
"ip": "10.0.231.23",
"success": false
},
{
"error": {
"code": "SYS.1007",
"description": "One or more API argument is invalid",
"details": "已经存在一个管理IP是[10.0.93.160]的物理机"
},
"ip": "10.0.93.160",
"success": false
}
],
"success": true
}成功返回:
{
"results": [
{
"ip": "10.0.231.231",
"success": true
},
{
"ip": "10.0.93.160",
"success": true
}
],
"success": true
}结果说明
- 两种类型API外层的
success的返回均为true。 - 外层
success代表REST请求的结果,当发起REST请求成功则success为true。 - 里层
success代表任务实际结果,成功则里层返回succuess=true,失败则返回success=false。
说明: UI
Server会改写后端API返回结果,例如增加
successCount和failCount字段。