I have written a script which provides the list of guardian nodes which use any specified file. This will aid in restarting all the Guardian nodes impacted by a python script change.
The command is called which_guardian_nodes_are_using_this_file. It takes the file name (full or partial path) as an argument.
Because scanning all 80 Guardian nodes and generated the list of files they use is time consuming (about 30 seconds), there is an optional second argument (-s) to skip this step and use the results of previous invocations.
The list of files are in the /ligo/data/guardian/files directory. There is a file gnodes.txt which lists all the guardian nodes. For each node there is a file named by the node. Here is an example call to the script
which_guardian_nodes_are_using_this_file /opt/rtcds/userapps/release/sus/h1/guardian/sustools2.py -s
Checking which Guardian node(s) use the file /opt/rtcds/userapps/release/sus/h1/guardian/sustools2.py
Guardian Node(s) using this file:
SUS_BS
SUS_ETMX
...
SUS_TMSX
SUS_TMSY
Using SUS-BS as an example here is a way to get the files its Guardian uses:
cat /ligo/data/guardian/files/SUS_BS
/opt/rtcds/userapps/release/sus/common/guardian/burt.py
/opt/rtcds/userapps/release/sus/common/guardian/SUS_BS.py
/opt/rtcds/userapps/release/sus/h1/guardian/susconst.py
/opt/rtcds/userapps/release/sus/h1/guardian/SUS.py
/opt/rtcds/userapps/release/sus/h1/guardian/sustools2.py
You can of course always just use guardutil directly to get this information as well:
jameson.rollins@operator1:~ 0$ guardutil files SUS_BS
/opt/rtcds/userapps/release/sus/common/guardian/SUS_BS.py
/opt/rtcds/userapps/release/sus/h1/guardian/susconst.py
/opt/rtcds/userapps/release/sus/h1/guardian/sustools2.py
/opt/rtcds/userapps/release/sus/common/guardian/burt.py
/opt/rtcds/userapps/release/sus/h1/guardian/SUS.py
jameson.rollins@operator1:~ 0$
This is probably preferable, since it's always up-to-date.