引擎管理端目前以 Django app 的形式进行提供,可以直接在 Django 项目中进行快速集成和使用。
将引擎管理端 app 配置到对应 Django 项目下的 INSTALLED_APPS:
INSTALLED_APPS += (
...
"pipeline.contrib.engine_admin",
...
)在对应的 url 中配置引擎管理端的路由:
urlpatterns = [
...
url(r'^{{PATH_TO_ENGINE_ADMIN}}/', include('pipeline.contrib.engine_admin.urls')),
...
]{{PATH_TO_ENGINE_ADMIN}}为项目下配置的引擎管理端路由地址。
将管理端所需静态资源收集到项目静态资源目录下:
python manage.py collectstatic至此,引擎管理端已经完成了快速集成,可以通过调用对应的url进行流程控制。
目前仅提供常用任务和节点控制接口,所有接口均为操作接口,只支持POST请求,除了url参数之外的其他参数均以json格式通过request body进行传输。
请求url格式为 {{PATH_TO_ENGINE_ADMIN}}/api/{{API_VERSION}}/{{ENGINE_TYPE}}/{{ACTION_NAME}}/{{INSTANCE_ID}}
下面对路由中对应配置的选项进行说明:
{{PATH_TO_ENGINE_ADMIN}}:为项目下配置的引擎管理端路由地址
{{API_VERSION}}:引擎管理端接口版本,当前版本为v1
{{ENGINE_TYPE}}:操作的引擎类型,目前支持两种引擎类型 bamboo_engine和pipeline_engine,分别对应新老版本引擎
{{ACTION_NAME}}:对应操作的名称,详见下表【操作列表】
{{INSTANCE_ID}}:操作的对象 ID,对象可能是对应的 任务 或 节点
| 操作名称 | 操作描述 | 其他参数 |
|---|---|---|
| task_pause | 任务暂停 | 无 |
| task_resume | 任务恢复 | 无 |
| task_revoke | 任务撤销 | 无 |
| node_retry | 节点重试 | inputs(dict): 节点输入 |
| node_skip | 节点跳过 | 无 |
| node_callback | 节点回调 | data(str): 回调数据 version(str): 回调的节点版本 |
| node_skip_exg | 条件分支网关跳过 | flow_id(str):希望执行的条件flow id |
| node_skip_cpg | 条件并行网关跳过 | flow_ids(list): 希望执行的条件flow id列表 converge_gateway_id(str): 对应的汇聚网关id |
| node_forced_fail | 节点强制失败 | 无 |
默认情况下,引擎管理端只要配置到项目中,会被当成一个普通接口进行调用。如果希望对接口调用进行鉴权,则需要开发自定义鉴权逻辑函数,并进行相应配置。
- 开发自定义鉴权逻辑
# 鉴权函数, 假设该函数在project/path/file.py文件中
def check_permission_success(request, *args, **kwargs):
return request.user.username == "admin"- 在settings变量中指定对应的鉴权函数
PIPELINE_ENGINE_ADMIN_API_PERMISSION = "project.path.file.check_permission_success"