提供的文档有些混乱,我制定的解决方案源自https://github.com/aperepel/nifi-api-deploy的nifi api deploy groovy脚本
最终,要直接 POST 模板,您可以在 Python 请求中使用以下内容
requests.post("%s/nifi-api/controller/templates"%(url,), files={"template":open(filename, 'rb')})
filename 是模板的文件名,url 是 nifi 实例的路径。我还没有直接在 curl 中找到它,但这应该可以让有类似问题的人开始!
编辑:
请注意,您也不能上传与现有模板同名的模板。确保在尝试重新上传之前删除现有模板。使用 untangle 库解析模板的 XML,下面的脚本就可以正常工作了:
import untangle, sys, requests
def deploy_template(filename, url):
p = untangle.parse(filename)
new_template_name=p.template.name.cdata
r=requests.get("%s/nifi-api/controller/templates"%(url,), headers={"Accept":"application/json"})
for each in r.json()["templates"]:
if each["name"]==new_template_name:
requests.delete(each["uri"])
requests.post("%s/nifi-api/controller/templates"%(url,), files={"template":open(filename, 'rb')})
if __name__=="__main__":
deploy_template(sys.argv[1], sys.argv[2])