Skip to content
Snippets Groups Projects
anselm.py 2.69 KiB
Newer Older
wactbprot's avatar
wactbprot committed
import sys
wactbprot's avatar
wactbprot committed
import json
wactbprot's avatar
wactbprot committed
import argparse
import pika
from anselm.system import System
wactbprot's avatar
wactbprot committed

wactbprot's avatar
wactbprot committed
class Anselm(System):
    """
    https://chase-seibert.github.io/blog/2014/03/21/python-multilevel-argparse.html
    """
    def __init__(self):
        super().__init__()

        msg_dict = self.config['rabbitmq']
        host = msg_dict['host']
        self.msg_param = pika.ConnectionParameters(host=host)

        self.init_ltm_msg_prod()
wactbprot's avatar
wactbprot committed
        self.init_stm_msg_prod()
wactbprot's avatar
wactbprot committed

        parser = argparse.ArgumentParser(
            description='check systems',
            usage='''anselm <command> [<args>]''')

        parser.add_argument('command', help='Subcommand to run')
        args = parser.parse_args(sys.argv[1:2])

        if not hasattr(self, args.command):
            parser.print_help()
            exit(1)

wactbprot's avatar
wactbprot committed
        if len(args.command) > self.max_arg_len:
            print("command too long")
            exit(1)

wactbprot's avatar
wactbprot committed
        getattr(self, args.command)()

wactbprot's avatar
wactbprot committed
    def start(self):
        """
        """
wactbprot's avatar
wactbprot committed
        parser = argparse.ArgumentParser(
wactbprot's avatar
wactbprot committed
            description="sends a all to ltm exchange")
wactbprot's avatar
wactbprot committed

wactbprot's avatar
wactbprot committed
        self.ltm_pub(body_dict={
                    'do':'start',
                    'payload':{}
                    })
wactbprot's avatar
wactbprot committed
        self.ltm_conn.close()

wactbprot's avatar
wactbprot committed
    def clear_stm(self):
        """
        """
        parser = argparse.ArgumentParser(
            description="sends a clear.all to stm exchange")
wactbprot's avatar
wactbprot committed
        self.stm_pub(body_dict={
                    'do':'clear_all',
                    'payload':{}})
wactbprot's avatar
wactbprot committed
        self.ltm_conn.close()

wactbprot's avatar
wactbprot committed
    def mp_to_ltm(self):
        """
        """
        parser = argparse.ArgumentParser(
            description="sends a mp from stm back to ltm")
        parser.add_argument('mpid')
        arg = parser.parse_args(sys.argv[2:3])

        self.stm_pub(body_dict={
                    'do':'mp_to_ltm',
                    'payload':{'id': arg.mpid}})
        self.ltm_conn.close()

wactbprot's avatar
wactbprot committed
    def build_api_for(self):
        parser = argparse.ArgumentParser(
            description="checks if the systems are up")

        parser.add_argument('mpid')
        arg = parser.parse_args(sys.argv[2:3])

        if len(arg.mpid) < self.max_arg_len:
wactbprot's avatar
wactbprot committed
            self.stm_pub(body_dict={
                        'do':'build_api',
                        'payload':{"id": arg.mpid}
                        })
wactbprot's avatar
wactbprot committed

        self.stm_conn.close()

    def read_exchange(self):
wactbprot's avatar
wactbprot committed
        parser = argparse.ArgumentParser(description="read from exchange")
wactbprot's avatar
wactbprot committed

wactbprot's avatar
wactbprot committed
        self.stm_publish(body_dict={
                        'do':'read_exchange',
                        'payload':{"id":"mpd-ce3-calib", "find_set":{"StartTime.Type":"start"}}
                        })
wactbprot's avatar
wactbprot committed

        self.stm_conn.close()
wactbprot's avatar
wactbprot committed

if __name__ == '__main__':
    Anselm()