-
Notifications
You must be signed in to change notification settings - Fork 0
/
deploy_template.py
72 lines (55 loc) · 2.93 KB
/
deploy_template.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import requests
import xml.etree.ElementTree as ET
# NiFi URL and authentication token
nifi_url = "https://localhost:8443" # Update with your NiFi URL
nifi_token = "eyJraWQiOiIzODA2MDc5Zi01MmZmLTRkNDMtOWQzNS1jZmI1NGVhNjQ3MWYiLCJhbGciOiJQUzUxMiJ9.eyJzdWIiOiIwYzNlNGUyMS03YWIxLTQwOGMtYjBlOS1jMjZhODNmZWI4ZWMiLCJhdWQiOiJTaW5nbGVVc2VyTG9naW5JZGVudGl0eVByb3ZpZGVyIiwibmJmIjoxNjkxNDQ0OTQ3LCJpc3MiOiJTaW5nbGVVc2VyTG9naW5JZGVudGl0eVByb3ZpZGVyIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiMGMzZTRlMjEtN2FiMS00MDhjLWIwZTktYzI2YTgzZmViOGVjIiwiZXhwIjoxNjkxNDczNzQ3LCJpYXQiOjE2OTE0NDQ5NDcsImp0aSI6ImY1MzU5YTcwLTI1YjEtNGZhMi1hNWYyLWU1OThkZmNkMGZkYiJ9.iOi9N5JCh-XfPNaxFkev8C7UJqAocNq-psTvGa_hajXt88n6DkOZwbK-F9omZIx3AK0vV-mpNNAZ0NbrWcMcLjyjZPnENr_I29p0f_3kJIkpjWKkw7zIr1Z_pkiFHrGvpuOVuiLB1BEExguOsARfN7hbCqabkrMe5lA9ymH0YLrLfP2Sf1jEZVfJX7HrnwJb5XEFp5C7jjykBiBhnkSWj_J2kNEBtWtFpw1kDEyCqBJnYg4KKshWusuZDafXxtkYPUi8bXW_H9Zik9YJu5CxosqT2hgywGFYtQCFaLXXbp_hwulAgo2FSARnvfWANdmgh-0qI-V-5l_HM1y8iIniAf44rV7qjUfqWHwsLXdhvZFk_8m-ZUbQzyL6GACZsdQgG9feRMcVruYucC5yFUijojE4zX8O4WS-CYfgtBAnC9XIG8WS8-Jw9ZfhjbtpNpPGAQgUlnYq-sqPg9LJA0pU5JMh135UYajdQnTX3wQ4tYENU3tcWpl1sKBlrdOKqB5e8KtwBMYvmghaa9A_k-nAEROFgpWHbG2q6w71bJ_Ak_YLOeDdPzBkkkmuxW-rdqfcAqlDH4yzouPOQWuAGLgNo5JZvyWUh1c8TeSFUB-NbycY9w6s1d65dgiTowOE1huiTFjDsdKsW_A_a9wAJHhQ_pmZ3X3vJNn_cu3BDAM7qYI" # Replace with your NiFi token
# Path to the NiFi template XML file
template_file_path = "nifi_templates/CsvToJSON.xml"
# Step 1: Upload template XML
with open(template_file_path, 'rb') as f:
template_data = f.read()
#print(template_data)
headers = {
'Authorization': f'Bearer {nifi_token}'
}
response = requests.post(
f'{nifi_url}/nifi-api/process-groups/root/templates/upload',
headers=headers,
files={'template': ('template.xml', template_data)},
verify=False
)
print('first req sent')
if response.status_code != 201:
print("Failed to upload template XML:", response.text)
exit()
template_id = ET.fromstring(response.text).find('.//template/id').text
# Step 2: Import the uploaded template
headers = {
'Authorization': f'Bearer {nifi_token}',
'Content-Type': 'application/xml' # Set the content type to XML
}
xml_payload = f'<template><templateId>{template_id}</templateId></template>'
response = requests.post(
f'{nifi_url}/nifi-api/process-groups/root/templates/import',
headers=headers,
data=xml_payload,
verify=False
)
if response.status_code != 201:
print("Failed to import template:", response.text)
exit()
print('second req sent')
print(response.text)
imported_template_id = response.json()['template']['id']
# Step 3: Instantiate the imported template
response = requests.post(
f'{nifi_url}/nifi-api/process-groups/root/template-instance',
headers=headers,
json={'templateId': imported_template_id},
verify=False
)
print('third req sent')
if response.status_code == 201:
print("Template deployed successfully.")
else:
print("Failed to deploy template:", response.text)