class StopGUIs(KPFFunction):
'''Stop KPF GUIs
### ARGS
None
'''
@classmethod
def pre_condition(cls, args):
pass
@classmethod
def perform(cls, args):
for GUI in GUI_list:
GUIname = GUI['name']
if GUI['cmd'][0] == 'kpf':
GUIscriptname = GUI['cmd'][2]
status_cmd = GUI['cmd']
status_cmd[1] = 'status'
log.info(f"Getting status of '{GUIname}' GUI")
gui_proc = subprocess.run(status_cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout = gui_proc.stdout.decode().strip()
is_running = re.search('is running on', stdout)
if is_running is not None:
stop_cmd = GUI['cmd']
stop_cmd[1] = 'stop'
log.info(f"Stopping '{GUIname}' GUI")
stopout = subprocess.run(stop_cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
log.debug(f"{stopout.returncode}")
log.debug(f"{stopout.stdout.decode()}")
log.debug(f"{stopout.stderr.decode()}")
else:
log.info(f"{GUIname} is not running")
log.debug(f"{stdout}")
elif GUIname == 'MAGIQ - Observer UI':
log.info(f"Stopping '{GUIname}' GUI")
stop_cmd = GUI['cmd']
stop_cmd[4] = 'stop'
gui_proc = subprocess.Popen(stop_cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
else:
log.info(f"Stopping '{GUIname}' GUI")
kill_process(GUI['cmd'], server='kpf')
@classmethod
def post_condition(cls, args):
pass