Dostarczona dokumentacja jest nieco mylące, a roztwór wypracowałem pochodzi od api nifi wdrożyć groovy skrypt na https://github.com/aperepel/nifi-api-deploy
Ostatecznie, aby umieścić szablon bezpośrednio, można użyć następujących w Pythonie żąda
requests.post("%s/nifi-api/controller/templates"%(url,), files={"template":open(filename, 'rb')})
Gdzie nazwa_pliku jest nazwą pliku szablonu, a adres url jest ścieżką do instancji nifi. Nie wymyśliłem tego bezpośrednio, ale powinno to sprawić, że ludzie zaczną podobne pytanie!
Edytuj: Pamiętaj, że nie możesz też przesłać szablonu o tej samej nazwie co istniejący szablon. Pamiętaj o usunięciu istniejącego szablonu przed próbą ponownego przesłania. Korzystanie z Rozplątać biblioteki do analizowania XML szablonu następujący skrypt działa dobrze:
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])
Ten punkt końcowy reszta jest dla nifi 0,6 .. w jaki sposób możemy to zrobić na 1,0 ? –