ZStack Logo

ZStack AIOS

批量API返回

面向开发者的 API 使用规范、SDK 调用方式和 AIOS 相关接口说明。

批量返回消息分为非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请求成功则successtrue
  • 里层success代表任务实际结果,成功则里层返回succuess=true,失败则返回success=false
说明: UI Server会改写后端API返回结果,例如增加successCountfailCount字段。