ModelBox Plugin插件
ModelBox Plugin插件用于对外提供服务,管理并运行流程图。此插件内置在ModelBox Server中。
默认情况下,可以直接使用此插件执行相关的流程图功能。例如,新建任务后,将使用插件运行流程图,并将结果对外输出。
- ModelBox Plugin功能说明:

ModelBox Plugin主要提供两个功能。
- 添加配置文件管理流程图。
- 调用REST API执行流程图。
ModelBox Plugin插件配置
ModelBox Plugin插件配置文件和ModelBox Server主配置文件相同,即为/usr/local/etc/modelbox/modelbox.conf, ModelBox Plugin插件的配置项目如下:
| 配置项目 | 配置说明 |
|---|---|
| server.ip | ModelBox Plugin绑定的管理IP地址,默认为127.0.0.1 |
| server.port | ModelBox Plugin绑定的管理端口,默认为1104 |
| server.flow_path | ModelBox Plugin加载flow配置文件的扫描路径。默认为/usr/local/etc/modelbox/graph |
| acl.allow | ModelBox Plugin REST API访问控制列表,仅允许列表中的IP访问,若为空则允许所有IP |
为确保ModelBox Plugin插件生效,请确保插件在modelbox.conf配置文件的plugin.files配置项中配置/usr/local/lib/modelbox-plugin.so插件,并在配置完成后,重启ModelBox服务。
添加配置文件管理流程图
ModelBox Plugin支持通过添加流程图配置文件的形式自动执行流程图,默认情况下的流程图配置文件路径为/usr/local/etc/modelbox/graph, 配置文件的存放目录为:
/usr/local/etc/modelbox/graph
|-some-flow1.toml
|-some-flow2.toml
.
.
.
配置文件复制到图存储目录后,可执行ModelBox Server服务重启命令systemctl restart modelbox生效.
注意:
- ModelBox服务加载该目录下的所有文件作为flow作业,如果加载失败将跳过该flow,文件名将作为flow的作业名
- 文件名不要包含特殊符号,并且后缀名为
.toml。 - 如果修改该配置项,需要保证指定的目录存在并具有读权限,否则将加载失败。
- 路径可通过
server.flow_path参数修改。
图形化运行流程图
请参考可视化编排服务。
REST API管理执行流程图
ModelBox Server启动后之后,ModelBox Plugin就开始对外提供服务,服务的endpoint为http://server.ip:server.port,其中server.ip和server.port为ModelBox服务运行配置中的配置项,默认为http://127.0.0.1:1104,服务的path为/v1/modelbox/job,业务可通过发送REST请求到插件管理流程图。
REST API
ModelBox服务当前提供动态增加flow作业,动态删除flow作业,查询所有flow作业列表,查询flow作业状态。
增加flow作业
REST API
URI:
http://server.ip:server.port/v1/modelbox/job/METHOD:
PUTREST API BODY
{ "job_id": "flow2", "job_graph": "xxxxx" }job_id: flow名字,用户自定义,建议不要包含特殊字符。job_graph:toml格式的图信息,graph的配置详见图
例子
命令:
curl -X PUT --data @flow-example http://127.0.0.1:1104/v1/modelbox/jobflow-example文件内容:
{ "job_id": "flow-example", "job_graph": { "graph": { "format":"graphviz", "graphconf": [ " digraph demo { ", " httpserver_sync_receive[type=flowunit, flowunit=httpserver_sync_receive, device=cpu, deviceid=0, endpoint=\"http://127.0.0.1:8080/example\", max_requests=10, time_out=5000]", " httpserver_sync_reply[type=flowunit, flowunit=httpserver_sync_reply, device=cpu, deviceid=0]", " httpserver_sync_receive:out_request_info -> httpserver_sync_reply:in_reply_info", " }" ] }, "driver": { "dir": "" } } }返回值
- 正常返回HTTP code 201。
异常返回错误json:
{ "error_code": "[some error code]", "error_msg" : "[some error message]" }error_code:错误码,参考错误码error_msg:错误码对应的消息。
查询flow作业状态
REST API
URI:
http://server.ip:server.port/v1/modelbox/job/[flow-name]METHOD:
GETREST API RESPONSE
正常返回HTTP code 200,如下json:
{ "job_status": "RUNNING", "job_id": "[flow-name]" }job_status: flow的状态代码。job_id:flow名称。
例子
命令:
curl http://127.0.0.1:1104/v1/modelbox/job/flow-example
删除flow作业
REST API
URI:
http://server.ip:server.port/v1/modelbox/job/[flow-name]METHOD:
DELETE返回值
- 正常返回HTTP code 204。
- 异常返回错误json。
例子
命令:
curl -X DELETE http://127.0.0.1:1104/v1/modelbox/job/flow-example
查询所有flow作业列表
REST API
URI:
http://server.ip:server.port/v1/modelbox/job/list/allMETHOD:
GET例子
命令:
curl http://127.0.0.1:1104/v1/modelbox/job/list/allREST API BODY
{ "job_list": [ { "job_status": "RUNNING", "job_id": "[flow-name1]" }, { "job_status": "RUNNING", "job_id": "[flow-name2]" } ] }job_list: flow列表。
状态码
| 状态码 | 状态码说明 |
|---|---|
| CREATEING | 正在创建任务 |
| RUNNING | 任务正在执行 |
| SUCCEEDED | 任务执行成功 |
| FAILED | 任务执行失败 |
| PENDING | 等待执行 |
| DELETEING | 正在删除任务 |
| UNKNOWN | 未知状态 |
| NOTEXIST | 任务不存在 |
错误码
当前支持的错误码:
| 错误码 | 错误码说明 |
|---|---|
| MODELBOX_001 | server internal error |
| MODELBOX_002 | request invalid, no such job |
| MODELBOX_003 | request invalid, can not get jobId |
| MODELBOX_004 | request invalid, can not get graph |
| MODELBOX_005 | request invalid, job already exist |
| MODELBOX_006 | request invalid, invalid command |