自定义节点
自定义节点我们可以通过docker来做的。
构建镜像
构建的Dockerfile如下所示
FROM ubuntu:20.04
RUN apt update -y && apt install -y python3 python3-pymysql
ADD db.py /usr/local/bin
ENTRYPOINT ["python3"]
脚本文件 db.py
#!/usr/bin/env python3
#coding=utf8
import os
import pymysql
SQL = os.getenv('JIANMU_SQL')
HOST = os.getenv('JIANMU_HOST')
USER = os.getenv('JIANMU_USER')
PASSWORD = os.getenv('JIANMU_PASSWORD')
DB = os.getenv('JIANMU_DB')
db = pymysql.connect(host=HOST, user=USER, password=PASSWORD, database=DB)
cursor = db.cursor()
cursor.execute(SQL)
for row in cursor.fetchall():
print(row)
db.close()
直接使用命令构建
docker build -t db_runner:1.0.0 .
当镜像制作完成,我们可以直接使用docker命令来运行测试
docker run -it --rm -eJIANMU_HOST=192.168.211.139 -eJIANMU_USER=root -eJIANMU_PASSWORD=123456 -eJIANMU_DB=jianmu -eJIANMU_SQL="show tables" db_runner:1.0.0 /usr/local/bin/db.py
导入node
本地node镜像已经准备好了,我们把他导入到建木系统中
节点文件定义
ref: db_runner
version: 1.0.0
description: '执行对应数据库代码'
inputParameters:
- name: SQL代码
ref: SQL
type: STRING
required: true
description: SQL代码
- name: 主机
ref: HOST
type: STRING
required: true
description: 数据库主机
- name: 用户名
ref: USER
type: STRING
required: true
description: 数据库用户名
- name: 密码
ref: PASSWORD
type: SECRET
required: true
description: 数据库密码
- name: 数据库名字
ref: DB
type: STRING
required: true
description: 数据库名字
spec:
image: "db_runner:1.0.0"
cmd: ["/usr/local/bin/db.py"]
然后我们再修改下数据库
jianmu -> hub_node_definition 列 icon
然后可以看到带icon的node
测试流程
直接定义一个流程,我们来测试一下刚才定义的节点
name: db_runner_tester
description: 数据库组件测试流程
workflow:
start:
type: start
targets:
- tester
tester:
type: local/db_runner:1.0.0
param:
SQL: "show tables;"
HOST: 192.168.211.139
USER: root
PASSWORD: 123456
DB: jianmu
sources:
- start
targets:
- end
end:
type: end
sources:
- tester
手动执行