Contents
Cirrus Link Resources
Chariot MQTT Server v1 (previous version)
Cirrus Link Modules for Ignition
Contact Us (Sales/Support)
Forum
The Python script below will allow you to migrate credentials from MQTT Distributor to Chariot at scale and is designed to run from the Ignition instance with MQTT Distributor installed.
The The script will read the user configuration from MQTT Distributor, transform the users and add to Chariots MQTT Credentials store.
...
Code Block | ||
---|---|---|
| ||
import requests import base64 #HTTP call method def httpCall(method,url,headers,data): if method == "POST": resp = requests.post(url, headers=headers, data=data) if method == "GET": resp = requests.get(url, headers=headers, data=data) if method == "PUT": resp = requests.put(url, headers=headers, data=data) #check for failures on httpCall if resp.status_code != 200: print resp.json() print data return resp.json() #Accept#Set Chariot EULAURL urlhostnameUrl = "http://localhost:8080" #Create Chariot username:password dictionary userpassword = {"admin":"password1","test2":"password2","test3":"password3"} ############################################################################# #Accept Chariot EULA url = hostname + "/eula" headers["accept"] = "application/json;api-version=1.0" headers["content-type"] = "application/json" data = "{\"isAccepted\": true}" http_response = httpCall("POST",url,headers,data) #Chariot login using admin user to get bearer token valid for 90 minutes url = hostname + "http://localhost:8080/login" headers["accept"] = "application/json;api-version=1.0" headers["Authorization"] = "Basic " + base64.b64encode("admin:password") data = {} http_response = httpCall("POST",url,headers,data) accessToken = http_response["access_token"] #read#Read Distributor users users = system.cirruslink.distributor.readConfig("Users") #create Chariot username:password dictionary userpassword = {"admin":"password1","test2":"password2","test3":"password3"} #create#Create new format publish and subscribe ACLs for i in range(len(users)): subscribeList = "" publishList = "" userName = users[i]["Username"] password = list(userpassword.values())[list(userpassword.keys()).index(userName)] acls = users[i]["ACLs"] acl_list = acls.split(",") for i in range(len(acl_list)): if acl_list[i][:2] == "R ": subscription = acl_list[i][2:len(acl_list[i])] subscription = "\"" + subscription + "\"" subscribeList = subscribeList + subscription + "," if acl_list[i][:2] == "W ": publish = acl_list[i][2:len(acl_list[i])] publish = "\"" + publish + "\"" publishList = publishList + publish + "," if acl_list[i][:2] == "RW": subscription = acl_list[i][3:len(acl_list[i])] subscription = "\"" + subscription + "\"" subscribeList = subscribeList + subscription + "," publish = acl_list[i][3:len(acl_list[i])] publish = "\"" + publish + "\"" publishList = publishList + publish + "," #create Chariot user url = hostname + "http://localhost:8080/mqttusers" headers["accept"] = "application/json;api-version=1.0" headers["content-type"] = "application/json" headers["Authorization"] = "Bearer " + accessToken data = "[{\"username\":\"" + userName + "\"," + "\"password\":\"" + password + "\"," + "\"acl\":{\"publishTopics\":[" + publishList[:-1] +"],\"subscribeTopics\":[" + subscribeList[:-1] + "]}}]" http_response = httpCall("POST",url,headers,data) #Read Chariot MQtt Users url = hostname + "http://localhost:8080/mqttusers" headers["accept"] = "application/json;api-version=1.0" headers["Authorization"] = "Bearer " + accessToken data = {} chariotMqttUsers = httpCall("GET",url,headers,data) print chariotMqttUsers ############################################################################# |