#!/usr/bin/python3 """Implementation of CloudSync launcher and management script""" import os import signal import sys import time import logging from subprocess import Popen from cloudsync.utils.globals import EXEC_MODE_UPGRADE, EXEC_MODE_UPDATE, EXEC_MODE_NORMAL, EXEC_MODE DELAY = 0.5 USAGE_FORMAT = "Usage: ./cs.py [debug|info|warning|error] [upgrade|update|]" arguments = sys.argv logging_level = logging.INFO def get_pid(): proc_list = list(os.popen("ps ax | grep cloud_sync.py | grep -v grep")) if len(proc_list) > 0: pid = proc_list[0].split()[0] return pid else: return None def start(): cs_proc = get_pid() if cs_proc: print("CloudSync app already running") else: print("Starting CloudSync app with logging level {0} in {1} mode".format(logging_level,EXEC_MODE)) time.sleep(DELAY) Popen(['python3', 'cloud_sync.py', str(logging_level),EXEC_MODE]) def stop(): cs_proc_pid = get_pid() if cs_proc_pid: print("Stopping CloudSync app...") time.sleep(DELAY) os.kill(int(cs_proc_pid), signal.SIGKILL) else: print("CloudSync app is not running.") if len(arguments) <= 1: print(USAGE_FORMAT) sys.exit(101) if len(arguments) >= 4: argument=arguments[3] if argument in ( EXEC_MODE_UPGRADE, EXEC_MODE_UPDATE, EXEC_MODE_NORMAL ): EXEC_MODE=argument else: print("incorrect {0} argument".format(argument)) print(USAGE_FORMAT) sys.exit(104) if len(arguments) >= 3: argument=arguments[2] if argument == "debug": logging_level = logging.DEBUG elif argument == "info": logging_level = logging.INFO elif argument == "warning": logging_level = logging.WARNING elif argument== "error": logging_level = logging.ERROR else: print("incorrect {0} argument".format(argument)) print(USAGE_FORMAT) sys.exit(103) if len(arguments) >= 2: argument=arguments[1] if argument == "start": start() elif argument == "stop": stop() elif argument == "restart": print("Restarting CloudSync app...") time.sleep(DELAY) stop() start() elif argument == "status": cs_proc = get_pid() if cs_proc: print("CloudSync app IS running") else: print("CloudSync app IS NOT running") else: print("incorrect {0} argument".format(argument)) print(USAGE_FORMAT) sys.exit(102)