This script allows you to import a single json JSON configuration file to multiple Edge ACM systems.
Table of Contents |
---|
Info |
---|
For more information on how to execute scripts in different environments, view the “Client Scripts” page. |
Contents of Package
The contents of the zip file should include:
...
This scripts is composed of 2 python files:
ApiClient.py
ImportScript.py
: ApiClient can be used to interface with the Edge Node’s API but will do nothing if run directly.
ImportScript.py: ImportScript must be run in the same folder with ApiClient.
The examples folder includes a csv and json export Examples folder contains example CSV and JSON exports with matching file names, as expected by the script.
Usage
This script will apply a node or app level configuration json JSON to all of the devices specified in a csv file. To execute this command from the command line, navigate to its folder and use:
Code Block |
---|
python ImportScript.py |
Or, on a system with both Python 2 and 3 installed:
Code Block |
---|
python3 ImportScript.py |
When first run initially , the script will create every folder it requires.A csv and json with matching required. To apply the configuration, place properly formatted CSV and JSON files with matching file names (eg. example123.json, example123.csv) should be placed in the Imports folder . Then run ImportScript.py using python 3. In Windows, this can be done by entering cmd in the start menu, then using cd commands to navigate to the folder that holds the import script. From the command line, run:
Code Block |
---|
python ImportScript.py |
and execute the command again. It will connect to each device in order, import the provided configuration jsonJSON, and restart all currently running apps. Note that this
Info |
---|
This process may take several minutes per device. |
MQTT and eACM will be started at the end of the process if they weren’t previously running.
For further details on running scripts in different environments, see Client Scripts
JSON Formatting
The import script expects json JSON files as generated by the Export process, either of the full device (node level export) or an individual app (app level export). At this time, folder level exports and csv CSV exports are not recognized by the import Import script.
CSV Formatting
The CSV file’s top row must be include the headerfollowing headers:
Code Block |
---|
Site Name,Edge Device IP,reachable,eACM username,eACM password,OS username,OS password,MQTT GroupID,MQTT NodeID,Broker IP |
Each columns column's meaning is detailed below:
Site Name | The unique name for the site, this will be assigned to the to level Node of the edge device. Each Site Name must be unique within the CSV. |
---|---|
Edge Device IP | The IP address or |
URL of the |
Edge device; this is the IP we will attempt to contact. |
By default, the IP address will be preceded with “http://” and the port used will be 8080, e.g. “192.168.0.10” will be read as |
8080”. If a different port is expected, or the node is configured for https, that must be included, |
e.g. “https://192.168.0.10:8181”. Each Edge Device IP must be unique within the CSV. |
reachable |
Enter the lower case letter x in this field to signify the script |
should attempt to connect to and configure the device. |
If any other value is entered, or it is left blank, this row will be |
skipped. | |
eACM username | The web interface username used to connect to the Edge Manager website and API. Default: admin |
eACM password | The web interface password used to connect to the Edge Manager website and API. Default: admin |
OS username | The operating system username, not currently used by the script; it can be left blank. |
OS password | The operating system password, not currently used by the script; it can be left blank |
MQTT GroupID | The Group ID to be used by the |
Sparkplug B publisher. It will only be changed if the |
JSON is a node level export or an export of the MQTT app. Note: it will be applied to all |
Sparkplug B publishers. | |
MQTT NodeID | The Node ID to be used by the |
Sparkplug B publisher. It will only be changed if the |
JSON is a node level export or an export of the MQTT app. Note: it will be applied to all |
Sparkplug B publishers. Each MQTT Node ID must be unique within the CSV. | |
Broker IP | The IP of the broker used by the top level node. If the |
JSON is a node export or an MQTT app export then this will also overwrite the Host Address of broker objects. |
Output
Depending on the results of While the script is running, files will be collected from the Import folder and moved into the Process folder. After running the script, the files will be moved as follows. The files will end up in into one of four subfolders of Importsthese:
Complete - The script has run succesfully successfully on at least one of the devices in the csvCSV file. A report.txt file is also generated in this folder to detail which sites are updated, which are not, and what prevented the update. Note that if
Info |
---|
If it took longer than the specified timeout, a site may report the apps failed to restart despite the updates being applied |
...
successfully. |
Error - Either the script did not recognize the formatting of the csv CSV or one of the devices in the csv did not recognize the formatting of the json file. Check log for details.Process - Files should only be here while the script is running; they will be collected from Import, moved to Process, then sent to Error or Complete. Any files that remain here when the program is done indicate an unexpected exceptionJSON file. Check log for further details and contact support if necessary.
Unrecognized - Files that are not csv CSV or jsonJSON, as well as csv CSV and json JSON files without matching file names, will be moved here.
Logs
Two log files will be created in the Logs subfolder, ApiClient.log and This script will generate its logs in ImportScript.log. They It can be checked for further details if an error appears in the Complete report.
Troubleshooting
If you experience a timeout durring the process, there are 3 variables at the top of ImportScript.py that can be adjusted. The script can be edited in any text editing software, eg. notepad or notepad++.
Code Block |
---|
#Shared timeout and retry parameters to tune if network is difficult
timeOut=40
importTimeOut=1200
retries=Retry(
total=3,
status_forcelist=[429, 500, 502, 503, 504],
method_whitelist=["HEAD", "GET", "POST"]
) |
...
timeOut is used for the timeout of all communications except the json import
...
importTimeOut only controlls the timeout for the json import
...
.