自定义节点--建木(3)

sin 2022-01-11 PM 838℃ 0条

自定义节点

自定义节点我们可以通过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

png

导入node

本地node镜像已经准备好了,我们把他导入到建木系统中

png

节点文件定义

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_definitionicon

然后可以看到带icon的node

png

测试流程

直接定义一个流程,我们来测试一下刚才定义的节点

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

手动执行

image-20220111164435321

标签: none

非特殊说明,本博所有文章均为博主原创。

评论啦~