You've already forked DataMate
713 lines
16 KiB
YAML
713 lines
16 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: Execution Engine Service API
|
|
description: 执行引擎服务API - 与Ray/DataX/Python执行器对接
|
|
version: 1.0.0
|
|
contact:
|
|
name: Data Mate Platform Team
|
|
|
|
servers:
|
|
- url: http://localhost:8088
|
|
description: Development server
|
|
|
|
tags:
|
|
- name: jobs
|
|
description: 作业管理
|
|
- name: executors
|
|
description: 执行器管理
|
|
- name: resources
|
|
description: 资源管理
|
|
- name: monitoring
|
|
description: 监控管理
|
|
|
|
paths:
|
|
/api/v1/jobs:
|
|
get:
|
|
tags:
|
|
- jobs
|
|
summary: 获取作业列表
|
|
parameters:
|
|
- name: page
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: size
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 20
|
|
- name: status
|
|
in: query
|
|
schema:
|
|
$ref: '#/components/schemas/JobStatus'
|
|
- name: executor
|
|
in: query
|
|
schema:
|
|
$ref: '#/components/schemas/ExecutorType'
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/JobPageResponse'
|
|
|
|
post:
|
|
tags:
|
|
- jobs
|
|
summary: 提交作业
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SubmitJobRequest'
|
|
responses:
|
|
'201':
|
|
description: 作业提交成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/JobResponse'
|
|
|
|
/api/v1/jobs/{jobId}:
|
|
get:
|
|
tags:
|
|
- jobs
|
|
summary: 获取作业详情
|
|
parameters:
|
|
- name: jobId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/JobDetailResponse'
|
|
|
|
delete:
|
|
tags:
|
|
- jobs
|
|
summary: 取消作业
|
|
parameters:
|
|
- name: jobId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 取消成功
|
|
|
|
/api/v1/jobs/{jobId}/logs:
|
|
get:
|
|
tags:
|
|
- jobs
|
|
summary: 获取作业日志
|
|
parameters:
|
|
- name: jobId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: follow
|
|
in: query
|
|
description: 是否实时跟踪日志
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/JobLog'
|
|
|
|
/api/v1/jobs/{jobId}/retry:
|
|
post:
|
|
tags:
|
|
- jobs
|
|
summary: 重试作业
|
|
parameters:
|
|
- name: jobId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 重试成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/JobResponse'
|
|
|
|
/api/v1/executors:
|
|
get:
|
|
tags:
|
|
- executors
|
|
summary: 获取执行器列表
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ExecutorResponse'
|
|
|
|
post:
|
|
tags:
|
|
- executors
|
|
summary: 注册执行器
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RegisterExecutorRequest'
|
|
responses:
|
|
'201':
|
|
description: 注册成功
|
|
|
|
/api/v1/executors/{executorId}:
|
|
get:
|
|
tags:
|
|
- executors
|
|
summary: 获取执行器详情
|
|
parameters:
|
|
- name: executorId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ExecutorDetailResponse'
|
|
|
|
put:
|
|
tags:
|
|
- executors
|
|
summary: 更新执行器
|
|
parameters:
|
|
- name: executorId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateExecutorRequest'
|
|
responses:
|
|
'200':
|
|
description: 更新成功
|
|
|
|
/api/v1/resources/clusters:
|
|
get:
|
|
tags:
|
|
- resources
|
|
summary: 获取集群信息
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ClusterInfo'
|
|
|
|
/api/v1/resources/nodes:
|
|
get:
|
|
tags:
|
|
- resources
|
|
summary: 获取节点信息
|
|
parameters:
|
|
- name: clusterId
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/NodeInfo'
|
|
|
|
/api/v1/monitoring/metrics:
|
|
get:
|
|
tags:
|
|
- monitoring
|
|
summary: 获取监控指标
|
|
parameters:
|
|
- name: metric
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: start
|
|
in: query
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
- name: end
|
|
in: query
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MetricsResponse'
|
|
|
|
components:
|
|
schemas:
|
|
JobResponse:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/JobStatus'
|
|
executorType:
|
|
$ref: '#/components/schemas/ExecutorType'
|
|
priority:
|
|
type: integer
|
|
progress:
|
|
type: number
|
|
format: double
|
|
submittedAt:
|
|
type: string
|
|
format: date-time
|
|
startedAt:
|
|
type: string
|
|
format: date-time
|
|
completedAt:
|
|
type: string
|
|
format: date-time
|
|
submittedBy:
|
|
type: string
|
|
|
|
JobDetailResponse:
|
|
allOf:
|
|
- $ref: '#/components/schemas/JobResponse'
|
|
- type: object
|
|
properties:
|
|
configuration:
|
|
$ref: '#/components/schemas/JobConfiguration'
|
|
resources:
|
|
$ref: '#/components/schemas/ResourceRequirement'
|
|
metrics:
|
|
$ref: '#/components/schemas/JobMetrics'
|
|
artifacts:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/JobArtifact'
|
|
dependencies:
|
|
type: array
|
|
items:
|
|
type: string
|
|
|
|
JobPageResponse:
|
|
type: object
|
|
properties:
|
|
content:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/JobResponse'
|
|
totalElements:
|
|
type: integer
|
|
format: int64
|
|
totalPages:
|
|
type: integer
|
|
size:
|
|
type: integer
|
|
number:
|
|
type: integer
|
|
|
|
SubmitJobRequest:
|
|
type: object
|
|
required:
|
|
- name
|
|
- executorType
|
|
- configuration
|
|
properties:
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
executorType:
|
|
$ref: '#/components/schemas/ExecutorType'
|
|
priority:
|
|
type: integer
|
|
minimum: 1
|
|
maximum: 10
|
|
default: 5
|
|
configuration:
|
|
$ref: '#/components/schemas/JobConfiguration'
|
|
resources:
|
|
$ref: '#/components/schemas/ResourceRequirement'
|
|
dependencies:
|
|
type: array
|
|
items:
|
|
type: string
|
|
timeoutSeconds:
|
|
type: integer
|
|
|
|
JobConfiguration:
|
|
type: object
|
|
properties:
|
|
script:
|
|
type: string
|
|
description: 执行脚本或代码
|
|
arguments:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: 执行参数
|
|
environment:
|
|
type: object
|
|
description: 环境变量
|
|
files:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/FileReference'
|
|
packages:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: 依赖包列表
|
|
|
|
ResourceRequirement:
|
|
type: object
|
|
properties:
|
|
cpuCores:
|
|
type: number
|
|
format: double
|
|
memoryGB:
|
|
type: number
|
|
format: double
|
|
gpuCount:
|
|
type: integer
|
|
diskGB:
|
|
type: number
|
|
format: double
|
|
nodeSelector:
|
|
type: object
|
|
description: 节点选择器
|
|
|
|
ExecutorResponse:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type:
|
|
$ref: '#/components/schemas/ExecutorType'
|
|
status:
|
|
$ref: '#/components/schemas/ExecutorStatus'
|
|
version:
|
|
type: string
|
|
capabilities:
|
|
type: array
|
|
items:
|
|
type: string
|
|
registeredAt:
|
|
type: string
|
|
format: date-time
|
|
lastHeartbeat:
|
|
type: string
|
|
format: date-time
|
|
|
|
ExecutorDetailResponse:
|
|
allOf:
|
|
- $ref: '#/components/schemas/ExecutorResponse'
|
|
- type: object
|
|
properties:
|
|
configuration:
|
|
type: object
|
|
resources:
|
|
$ref: '#/components/schemas/ExecutorResources'
|
|
currentJobs:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/JobResponse'
|
|
statistics:
|
|
$ref: '#/components/schemas/ExecutorStatistics'
|
|
|
|
RegisterExecutorRequest:
|
|
type: object
|
|
required:
|
|
- name
|
|
- type
|
|
- endpoint
|
|
properties:
|
|
name:
|
|
type: string
|
|
type:
|
|
$ref: '#/components/schemas/ExecutorType'
|
|
endpoint:
|
|
type: string
|
|
capabilities:
|
|
type: array
|
|
items:
|
|
type: string
|
|
configuration:
|
|
type: object
|
|
|
|
UpdateExecutorRequest:
|
|
type: object
|
|
properties:
|
|
status:
|
|
$ref: '#/components/schemas/ExecutorStatus'
|
|
configuration:
|
|
type: object
|
|
|
|
ClusterInfo:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
enum: [RAY, KUBERNETES, YARN, STANDALONE]
|
|
status:
|
|
type: string
|
|
enum: [ACTIVE, INACTIVE, ERROR]
|
|
nodeCount:
|
|
type: integer
|
|
totalCpuCores:
|
|
type: integer
|
|
totalMemoryGB:
|
|
type: number
|
|
format: double
|
|
totalGpuCount:
|
|
type: integer
|
|
availableResources:
|
|
$ref: '#/components/schemas/ResourceInfo'
|
|
|
|
NodeInfo:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
clusterId:
|
|
type: string
|
|
status:
|
|
type: string
|
|
enum: [ACTIVE, INACTIVE, BUSY, ERROR]
|
|
resources:
|
|
$ref: '#/components/schemas/ResourceInfo'
|
|
usage:
|
|
$ref: '#/components/schemas/ResourceUsage'
|
|
lastUpdate:
|
|
type: string
|
|
format: date-time
|
|
|
|
MetricsResponse:
|
|
type: object
|
|
properties:
|
|
metric:
|
|
type: string
|
|
dataPoints:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MetricDataPoint'
|
|
aggregation:
|
|
type: object
|
|
|
|
JobLog:
|
|
type: object
|
|
properties:
|
|
timestamp:
|
|
type: string
|
|
format: date-time
|
|
level:
|
|
type: string
|
|
enum: [DEBUG, INFO, WARN, ERROR]
|
|
source:
|
|
type: string
|
|
message:
|
|
type: string
|
|
|
|
JobMetrics:
|
|
type: object
|
|
properties:
|
|
cpuUsage:
|
|
type: number
|
|
format: double
|
|
memoryUsage:
|
|
type: number
|
|
format: double
|
|
diskUsage:
|
|
type: number
|
|
format: double
|
|
networkIO:
|
|
type: object
|
|
duration:
|
|
type: integer
|
|
format: int64
|
|
|
|
JobArtifact:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
enum: [LOG, OUTPUT, CHECKPOINT, MODEL]
|
|
size:
|
|
type: integer
|
|
format: int64
|
|
path:
|
|
type: string
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
|
|
FileReference:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
path:
|
|
type: string
|
|
type:
|
|
type: string
|
|
enum: [LOCAL, HDFS, S3, HTTP]
|
|
|
|
ExecutorResources:
|
|
type: object
|
|
properties:
|
|
total:
|
|
$ref: '#/components/schemas/ResourceInfo'
|
|
available:
|
|
$ref: '#/components/schemas/ResourceInfo'
|
|
allocated:
|
|
$ref: '#/components/schemas/ResourceInfo'
|
|
|
|
ExecutorStatistics:
|
|
type: object
|
|
properties:
|
|
totalJobs:
|
|
type: integer
|
|
successfulJobs:
|
|
type: integer
|
|
failedJobs:
|
|
type: integer
|
|
averageExecutionTime:
|
|
type: number
|
|
format: double
|
|
uptime:
|
|
type: integer
|
|
format: int64
|
|
|
|
ResourceInfo:
|
|
type: object
|
|
properties:
|
|
cpuCores:
|
|
type: number
|
|
format: double
|
|
memoryGB:
|
|
type: number
|
|
format: double
|
|
gpuCount:
|
|
type: integer
|
|
diskGB:
|
|
type: number
|
|
format: double
|
|
|
|
ResourceUsage:
|
|
type: object
|
|
properties:
|
|
cpuUsagePercent:
|
|
type: number
|
|
format: double
|
|
memoryUsagePercent:
|
|
type: number
|
|
format: double
|
|
diskUsagePercent:
|
|
type: number
|
|
format: double
|
|
|
|
MetricDataPoint:
|
|
type: object
|
|
properties:
|
|
timestamp:
|
|
type: string
|
|
format: date-time
|
|
value:
|
|
type: number
|
|
format: double
|
|
tags:
|
|
type: object
|
|
|
|
JobStatus:
|
|
type: string
|
|
enum:
|
|
- SUBMITTED
|
|
- PENDING
|
|
- RUNNING
|
|
- COMPLETED
|
|
- FAILED
|
|
- CANCELLED
|
|
- TIMEOUT
|
|
|
|
ExecutorType:
|
|
type: string
|
|
enum:
|
|
- RAY
|
|
- DATAX
|
|
- PYTHON
|
|
- SPARK
|
|
- FLINK
|
|
- CUSTOM
|
|
|
|
ExecutorStatus:
|
|
type: string
|
|
enum:
|
|
- ACTIVE
|
|
- INACTIVE
|
|
- BUSY
|
|
- ERROR
|
|
- MAINTENANCE
|
|
|
|
securitySchemes:
|
|
BearerAuth:
|
|
type: http
|
|
scheme: bearer
|
|
bearerFormat: JWT
|
|
|
|
security:
|
|
- BearerAuth: []
|