在 Kuscia 中,你可以使用 KusciaJob 来表示一个任务流程。请参考 KusciaJob 。 你可以从 这里 找到对应的 protobuf 文件。
方法名 | 请求类型 | 响应类型 | 描述 |
---|---|---|---|
CreateJob | CreateJobRequest | CreateJobResponse | 创建 Job |
QueryJob | QueryJobRequest | QueryJobResponse | 查询 Job |
BatchQueryJobStatus | BatchQueryJobStatusRequest | BatchQueryJobStatusResponse | 批量查询 Job 状态 |
DeleteJob | DeleteJobRequest | DeleteJobResponse | 删除 Job |
StopJob | StopJobRequest | StopJobResponse | 停止 Job |
WatchJob | WatchJobRequest | WatchJobEventResponse stream | 监听 Job |
ApproveJob | ApproveJobRequest | ApproveJobResponse | 审批 Job |
SuspendJob | SuspendJobRequest | SuspendJobResponse | 暂停 Job |
RestartJob | RestartJobRequest | RestartJobResponse | 重跑 Job |
CancelJob | CancelJobRequest | CancelJobResponse | 取消 Job |
{#create-job}
/api/v1/job/create
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
header | RequestHeader | 可选 | 自定义请求内容 |
job_id | string | 必填 | JobID,满足 DNS 子域名规则要求 |
initiator | string | 必填 | 发起方节点 ID |
max_parallelism | int32 | 可选 | 并发度,参考 KusciaJob 概念 |
tasks | Task[] | 必填 | 任务参数 |
custom_fields | map<string, string> | 可选 | 自定义参数,会同步给参与方,key不超过38个字符,value不超过63个字符。 |
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
status | Status | 必填 | 状态信息 |
data | CreateJobResponseData | ||
data.job_id | string | 必填 | JobID |
发起请求:
# 在容器内执行示例
export CTR_CERTS_ROOT=/home/kuscia/var/certs
curl -k -X POST 'https://localhost:8082/api/v1/job/create' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"job_id": "job-alice-bob-001",
"initiator": "alice",
"max_parallelism": 2,
"tasks": [
{
"task_id": "job-psi",
"app_image": "secretflow-image",
"parties": [
{
"domain_id": "alice",
"role": "partner"
},
{
"domain_id": "bob",
"role": "partner"
}
],
"alias": "job-psi",
"dependencies": [],
"task_input_config": "{\"sf_datasource_config\":{\"alice\":{\"id\":\"default-data-source\"},\"bob\":{\"id\":\"default-data-source\"}},\"sf_cluster_desc\":{\"parties\":[\"alice\",\"bob\"],\"devices\":[{\"name\":\"spu\",\"type\":\"spu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"runtime_config\\\":{\\\"protocol\\\":\\\"REF2K\\\",\\\"field\\\":\\\"FM64\\\"},\\\"link_desc\\\":{\\\"connect_retry_times\\\":60,\\\"connect_retry_interval_ms\\\":1000,\\\"brpc_channel_protocol\\\":\\\"http\\\",\\\"brpc_channel_connection_type\\\":\\\"pooled\\\",\\\"recv_timeout_ms\\\":1200000,\\\"http_timeout_ms\\\":1200000}}\"},{\"name\":\"heu\",\"type\":\"heu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"mode\\\": \\\"PHEU\\\", \\\"schema\\\": \\\"paillier\\\", \\\"key_size\\\": 2048}\"}],\"ray_fed_config\":{\"cross_silo_comm_backend\":\"brpc_link\"}},\"sf_node_eval_param\":{\"domain\":\"preprocessing\",\"name\":\"psi\",\"version\":\"0.0.1\",\"attr_paths\":[\"input/receiver_input/key\",\"input/sender_input/key\",\"protocol\",\"precheck_input\",\"bucket_size\",\"curve_type\"],\"attrs\":[{\"ss\":[\"id1\"]},{\"ss\":[\"id2\"]},{\"s\":\"ECDH_PSI_2PC\"},{\"b\":true},{\"i64\":\"1048576\"},{\"s\":\"CURVE_FOURQ\"}]},\"sf_input_ids\":[\"alice-table\",\"bob-table\"],\"sf_output_ids\":[\"psi-output\"],\"sf_output_uris\":[\"psi-output.csv\"]}",
"priority": 100
},
{
"task_id": "job-split",
"app_image": "secretflow-image",
"parties": [
{
"domain_id": "alice",
"role": "partner"
},
{
"domain_id": "bob",
"role": "partner"
}
],
"alias": "job-split",
"dependencies": [
"job-psi"
],
"task_input_config": "{\"sf_datasource_config\":{\"alice\":{\"id\":\"default-data-source\"},\"bob\":{\"id\":\"default-data-source\"}},\"sf_cluster_desc\":{\"parties\":[\"alice\",\"bob\"],\"devices\":[{\"name\":\"spu\",\"type\":\"spu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"runtime_config\\\":{\\\"protocol\\\":\\\"REF2K\\\",\\\"field\\\":\\\"FM64\\\"},\\\"link_desc\\\":{\\\"connect_retry_times\\\":60,\\\"connect_retry_interval_ms\\\":1000,\\\"brpc_channel_protocol\\\":\\\"http\\\",\\\"brpc_channel_connection_type\\\":\\\"pooled\\\",\\\"recv_timeout_ms\\\":1200000,\\\"http_timeout_ms\\\":1200000}}\"},{\"name\":\"heu\",\"type\":\"heu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"mode\\\": \\\"PHEU\\\", \\\"schema\\\": \\\"paillier\\\", \\\"key_size\\\": 2048}\"}],\"ray_fed_config\":{\"cross_silo_comm_backend\":\"brpc_link\"}},\"sf_node_eval_param\":{\"domain\":\"preprocessing\",\"name\":\"train_test_split\",\"version\":\"0.0.1\",\"attr_paths\":[\"train_size\",\"test_size\",\"random_state\",\"shuffle\"],\"attrs\":[{\"f\":0.75},{\"f\":0.25},{\"i64\":1234},{\"b\":true}]},\"sf_output_uris\":[\"train-dataset.csv\",\"test-dataset.csv\"],\"sf_output_ids\":[\"train-dataset\",\"test-dataset\"],\"sf_input_ids\":[\"psi-output\"]}",
"priority": 100
}
]
}'
请求响应成功结果:
{
"status": {
"code": 0,
"message": "success",
"details": []
},
"data": {
"job_id": "job-alice-bob-001"
}
}
{#query-job}
/api/v1/job/query
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
header | RequestHeader | 可选 | 自定义请求内容 |
job_id | string | 必填 | JobID |
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
status | Status | 必填 | 状态信息 |
data | QueryJobResponseData | ||
data.job_id | string | 必填 | JobID |
data.initiator | string | 必填 | 发起方 |
data.max_parallelism | int32 | 必填 | 并发度 |
data.tasks | TaskConfig[] | 必填 | 任务列表 |
data.status | JobStatusDetail | 必填 | Job 状态 |
data.custom_fields | map<string, string> | 可选 | 自定义参数 |
发起请求:
# 在容器内执行示例
export CTR_CERTS_ROOT=/home/kuscia/var/certs
curl -k -X POST 'https://localhost:8082/api/v1/job/query' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"job_id": "job-alice-bob-001"
}'
请求响应成功结果:
{
"status": {
"code": 0,
"message": "success",
"details": []
},
"data": {
"job_id": "job-alice-bob-001",
"initiator": "alice",
"max_parallelism": 2,
"tasks": [
{
"app_image": "secretflow-image",
"parties": [
{
"domain_id": "alice",
"role": "partner"
},
{
"domain_id": "bob",
"role": "partner"
}
],
"alias": "job-psi",
"task_id": "job-psi",
"dependencies": [
""
],
"task_input_config": "{\"sf_datasource_config\":{\"alice\":{\"id\":\"default-data-source\"},\"bob\":{\"id\":\"default-data-source\"}},\"sf_cluster_desc\":{\"parties\":[\"alice\",\"bob\"],\"devices\":[{\"name\":\"spu\",\"type\":\"spu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"runtime_config\\\":{\\\"protocol\\\":\\\"REF2K\\\",\\\"field\\\":\\\"FM64\\\"},\\\"link_desc\\\":{\\\"connect_retry_times\\\":60,\\\"connect_retry_interval_ms\\\":1000,\\\"brpc_channel_protocol\\\":\\\"http\\\",\\\"brpc_channel_connection_type\\\":\\\"pooled\\\",\\\"recv_timeout_ms\\\":1200000,\\\"http_timeout_ms\\\":1200000}}\"},{\"name\":\"heu\",\"type\":\"heu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"mode\\\": \\\"PHEU\\\", \\\"schema\\\": \\\"paillier\\\", \\\"key_size\\\": 2048}\"}],\"ray_fed_config\":{\"cross_silo_comm_backend\":\"brpc_link\"}},\"sf_node_eval_param\":{\"domain\":\"preprocessing\",\"name\":\"psi\",\"version\":\"0.0.1\",\"attr_paths\":[\"input/receiver_input/key\",\"input/sender_input/key\",\"protocol\",\"precheck_input\",\"bucket_size\",\"curve_type\"],\"attrs\":[{\"ss\":[\"id1\"]},{\"ss\":[\"id2\"]},{\"s\":\"ECDH_PSI_2PC\"},{\"b\":true},{\"i64\":\"1048576\"},{\"s\":\"CURVE_FOURQ\"}]},\"sf_input_ids\":[\"alice-table\",\"bob-table\"],\"sf_output_ids\":[\"psi-output\"],\"sf_output_uris\":[\"psi-output.csv\"]}",
"priority": 100
},
{
"app_image": "secretflow-image",
"parties": [
{
"domain_id": "alice",
"role": "partner"
},
{
"domain_id": "bob",
"role": "partner"
}
],
"alias": "job-split",
"task_id": "job-split",
"dependencies": [
"job-psi"
],
"task_input_config": "{\"sf_datasource_config\":{\"alice\":{\"id\":\"default-data-source\"},\"bob\":{\"id\":\"default-data-source\"}},\"sf_cluster_desc\":{\"parties\":[\"alice\",\"bob\"],\"devices\":[{\"name\":\"spu\",\"type\":\"spu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"runtime_config\\\":{\\\"protocol\\\":\\\"REF2K\\\",\\\"field\\\":\\\"FM64\\\"},\\\"link_desc\\\":{\\\"connect_retry_times\\\":60,\\\"connect_retry_interval_ms\\\":1000,\\\"brpc_channel_protocol\\\":\\\"http\\\",\\\"brpc_channel_connection_type\\\":\\\"pooled\\\",\\\"recv_timeout_ms\\\":1200000,\\\"http_timeout_ms\\\":1200000}}\"},{\"name\":\"heu\",\"type\":\"heu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"mode\\\": \\\"PHEU\\\", \\\"schema\\\": \\\"paillier\\\", \\\"key_size\\\": 2048}\"}],\"ray_fed_config\":{\"cross_silo_comm_backend\":\"brpc_link\"}},\"sf_node_eval_param\":{\"domain\":\"preprocessing\",\"name\":\"train_test_split\",\"version\":\"0.0.1\",\"attr_paths\":[\"train_size\",\"test_size\",\"random_state\",\"shuffle\"],\"attrs\":[{\"f\":0.75},{\"f\":0.25},{\"i64\":1234},{\"b\":true}]},\"sf_output_uris\":[\"train-dataset.csv\",\"test-dataset.csv\"],\"sf_output_ids\":[\"train-dataset\",\"test-dataset\"],\"sf_input_ids\":[\"psi-output\"]}",
"priority": 100
}
],
"status": {
"state": "Failed",
"err_msg": "",
"create_time": "2024-01-17T07:13:39Z",
"start_time": "2024-01-17T07:13:39Z",
"end_time": "2024-01-17T07:13:39Z",
"tasks": [
{
"task_id": "job-psi",
"state": "",
"err_msg": "",
"create_time": "",
"start_time": "",
"end_time": "",
"parties": []
},
{
"task_id": "job-split",
"state": "",
"err_msg": "",
"create_time": "",
"start_time": "",
"end_time": "",
"parties": []
}
]
}
}
}
{#batch-query-job-status}
/api/v1/job/status/batchQuery
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
header | RequestHeader | 可选 | 自定义请求内容 |
job_ids | string[] | 必填 | JobID 列表 |
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
status | Status | 必填 | 状态信息 |
data | BatchQueryJobStatusResponseData | ||
data.jobs | JobStatus[] | 必填 | Job 状态列表 |
发起请求:
# 在容器内执行示例
export CTR_CERTS_ROOT=/home/kuscia/var/certs
curl -k -X POST 'https://localhost:8082/api/v1/job/status/batchQuery' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"job_ids": [
"job-alice-bob-001"
]
}'
请求响应成功结果:
{
"status": {
"code": 0,
"message": "success",
"details": []
},
"data": {
"jobs": [
{
"job_id": "job-alice-bob-001",
"status": {
"state": "Failed",
"err_msg": "",
"create_time": "2024-01-17T07:13:39Z",
"start_time": "2024-01-17T07:13:39Z",
"end_time": "2024-01-17T07:13:39Z",
"tasks": [
{
"task_id": "job-psi",
"state": "",
"err_msg": "",
"create_time": "",
"start_time": "",
"end_time": "",
"parties": []
},
{
"task_id": "job-split",
"state": "",
"err_msg": "",
"create_time": "",
"start_time": "",
"end_time": "",
"parties": []
}
]
}
}
]
}
}
{#delete-job}
/api/v1/job/delete
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
header | RequestHeader | 可选 | 自定义请求内容 |
job_id | string | 必填 | JobID |
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
status | Status | 必填 | 状态信息 |
data | DeleteJobResponseData | ||
data.job_id | string | 必填 | JobID |
发起请求:
# 在容器内执行示例
export CTR_CERTS_ROOT=/home/kuscia/var/certs
curl -k -X POST 'https://localhost:8082/api/v1/job/delete' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"job_id": "job-alice-bob-001"
}'
请求响应成功结果:
{
"status": {
"code": 0,
"message": "success",
"details": []
},
"data": {
"job_id": "job-alice-bob-001"
}
}
{#stop-job}
/api/v1/job/stop
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
header | RequestHeader | 可选 | 自定义请求内容 |
job_id | string | 必填 | JobID |
reason | string | 可选 | 停止Job的原因 |
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
status | Status | 必填 | 状态信息 |
data | StopJobResponseData | ||
data.job_id | string | 必填 | JobID |
发起请求:
# 在容器内执行示例
export CTR_CERTS_ROOT=/home/kuscia/var/certs
curl -k -X POST 'https://localhost:8082/api/v1/job/stop' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"job_id": "job-alice-bob-001"
}'
请求响应成功结果:
{
"status": {
"code": 0,
"message": "success",
"details": []
},
"data": {
"job_id": "job-alice-bob-001"
}
}
{#watch-job}
/api/v1/job/watch
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
header | RequestHeader | 可选 | 自定义请求内容 |
timeout_seconds | int64 | 可选 | 请求连接的生命周期,服务端将在超时后断开连接,不管是否有活跃事件。超时时间取值范围:[0, 2^31-1],默认为0,表示不超时。即使在未设置超时时间的情况下, 也会因为网络环境导致断连,客户端根据需求决定是否重新发起请求 |
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
类型 | EventType | 必填 | 事件类型 |
object | JobStatus | 必填 | Job 状态 |
{#approval-job}
/api/v1/job/approve
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
header | RequestHeader | 可选 | 自定义请求内容 |
job_id | string | 必填 | JobID,满足 DNS 子域名规则要求 |
result | ApproveResult | 必填 | 审批结果,接收或拒绝,接收则作业(job)可以执行,拒绝则作业不可执行 |
reason | string | 可选 | 接收或拒绝的理由 |
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
status | Status | 必填 | 状态信息 |
data | ApprovalJobResponseData | ||
data.job_id | string | 必填 | JobID |
{#suspend-job}
/api/v1/job/suspend
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
header | RequestHeader | 可选 | 自定义请求内容 |
job_id | string | 必填 | JobID |
reason | string | 可选 | 暂停Job的原因 |
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
status | Status | 必填 | 状态信息 |
data | SuspendJobResponseData | ||
data.job_id | string | 必填 | JobID |
发起请求:
# 在容器内执行示例
export CTR_CERTS_ROOT=/home/kuscia/var/certs
curl -k -X POST 'https://localhost:8082/api/v1/job/suspend' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"job_id": "job-alice-bob-001"
}'
请求响应成功结果:
{
"status": {
"code": 0,
"message": "success",
"details": []
},
"data": {
"job_id": "job-alice-bob-001"
}
}
{#restart-job}
/api/v1/job/restart
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
header | RequestHeader | 可选 | 自定义请求内容 |
job_id | string | 必填 | JobID |
reason | string | 可选 | 重跑Job的原因 |
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
status | Status | 必填 | 状态信息 |
data | RestartJobResponseData | ||
data.job_id | string | 必填 | JobID |
发起请求:
# 在容器内执行示例
export CTR_CERTS_ROOT=/home/kuscia/var/certs
curl -k -X POST 'https://localhost:8082/api/v1/job/restart' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"job_id": "job-alice-bob-001"
}'
请求响应成功结果:
{
"status": {
"code": 0,
"message": "success",
"details": []
},
"data": {
"job_id": "job-alice-bob-001"
}
}
{#cancel-job}
/api/v1/job/cancel
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
header | RequestHeader | 可选 | 自定义请求内容 |
job_id | string | 必填 | JobID |
reason | string | 可选 | 取消Job的原因 |
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
status | Status | 必填 | 状态信息 |
data | CancelJobResponseData | ||
data.job_id | string | 必填 | JobID |
发起请求:
# 在容器内执行示例
export CTR_CERTS_ROOT=/home/kuscia/var/certs
curl -k -X POST 'https://localhost:8082/api/v1/job/cancel' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"job_id": "job-alice-bob-001"
}'
请求响应成功结果:
{
"status": {
"code": 0,
"message": "success",
"details": []
},
"data": {
"job_id": "job-alice-bob-001"
}
}
{#job-status}
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
job_id | string | 必填 | JobID |
status | JobStatusDetail | 必填 | Job 状态详情 |
{#job-status-detail}
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
state | string | 必填 | 作业状态, 参考 State |
err_msg | string | 可选 | 错误信息 |
create_time | string | 必填 | 创建时间 |
start_time | string | 必填 | 启动时间 |
end_time | string | 可选 | 结束时间 |
tasks | TaskStatus[] | 必填 | 任务列表 |
{#party}
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
domain_id | string | 必填 | DomainID |
role | string | 可选 | 参与方角色,该字段由引擎自定义,对应到 appImage 的部署模版中;更多参考 KusciaJob |
{#party-status}
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
domain_id | string | 必填 | 节点 ID |
state | string | 必填 | 参与方任务状态, 参考 State |
err_msg | string | 可选 | 错误信息 |
endpoints | JobPartyEndpoint[] | 必填 | 应用对外暴露的访问地址信息 |
{#task}
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
app_image | string | 必填 | 任务镜像 |
parties | Party[] | 必填 | 参与方节点 ID |
alias | string | 必填 | 任务别名 |
task_id | string | 必填 | 任务 ID,满足 DNS 子域名规则要求 |
dependencies | string[] | 必填 | 依赖任务 |
task_input_config | string | 必填 | 任务配置 |
priority | string | 可选 | 优先级,值越大优先级越高 |
{#task-config}
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
app_image | string | 必填 | 任务镜像 |
parties | Party[] | 必填 | 参与方 |
alias | string | 必填 | 任务别名 |
task_id | string | 必填 | 任务 ID |
dependencies | string[] | 必填 | 依赖任务 |
task_input_config | string | 必填 | 任务配置 |
priority | string | 可选 | 优先级,值越大优先级越高 |
{#task-status}
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
task_id | string | 可选 | 任务 ID |
state | string | 必填 | 任务状态,参考 State |
err_msg | string | 可选 | 错误信息 |
create_time | string | 必填 | 创建事件 |
start_time | string | 必填 | 开始事件 |
end_time | string | 可选 | 结束事件 |
parties | PartyStatus[] | 必填 | 参与方 |
{#event-type}
Name | Number | 描述 |
---|---|---|
ADDED | 0 | 增加事件 |
MODIFIED | 1 | 修改事件 |
DELETED | 2 | 删除事件 |
ERROR | 3 | 错误事件 |
HEARTBEAT | 4 | 心跳事件 |
{#approve-result}
Name | Number | 描述 |
---|---|---|
APPROVE_RESULT_UNKNOWN | 0 | 未知状态 |
APPROVE_RESULT_ACCEPT | 1 | 审批通过 |
APPROVE_RESULT_REJECT | 2 | 审批拒绝 |
{#state}
KusciaJob 状态详细介绍见文档。
Name | Number | 描述 |
---|---|---|
Unknown | 0 | 未知 |
Pending | 1 | 未开始运行 |
Running | 2 | 运行中 |
Succeeded | 3 | 成功 |
Failed | 4 | 失败 |
AwaitingApproval | 5 | 等待参与方审批 Job |
ApprovalReject | 6 | Job 被审批为拒绝执行 |
Cancelled | 7 | Job 被取消,被取消的 Job 不可被再次执行 |
Suspended | 8 | Job 被暂停,可通过 Restart 接口重跑 |
Initialized | 9 | Job 初始状态 |
{#job-party-endpoint}
字段 | 类型 | 选填 | 描述 |
---|---|---|---|
port_name | string | 必填 | 应用服务端口名称,详细解释请参考AppImage deployTemplates.spec.containers.ports.name |
scope | string | 必填 | 应用服务使用范围,详细解释请参考AppImage deployTemplates.spec.containers.ports.scope |
endpoint | string | 必填 | 应用服务访问地址 |