Skip to content
Snippets Groups Projects
anselm.py 2.84 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
wactbprot's avatar
wactbprot committed


    always talk to short-term-memory, if there is somthing not in stm try to remember
wactbprot's avatar
wactbprot committed
    """
    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
       
        ## dont work, see tagline
        self.stm_pub(body_dict={
wactbprot's avatar
wactbprot committed
                    'do':'start',
                    'payload':{}
                    })
wactbprot's avatar
wactbprot committed
        self.ltm_conn.close()

wactbprot's avatar
wactbprot committed
    def clear_stm(self):
        """
        """
wactbprot's avatar
wactbprot committed
        
wactbprot's avatar
wactbprot committed
        self.stm_pub(body_dict={
                    'do':'clear_all',
                    'payload':{}})
wactbprot's avatar
wactbprot committed
        self.stm_conn.close()

    
wactbprot's avatar
wactbprot committed

wactbprot's avatar
wactbprot committed
    def build_mp_db_for(self):
wactbprot's avatar
wactbprot committed
        """
wactbprot's avatar
wactbprot committed
        usage:

        > python anselm build_mp_db_for mpid

wactbprot's avatar
wactbprot committed
        """
        parser = argparse.ArgumentParser(
wactbprot's avatar
wactbprot committed
            description="builds the api for the mp given by id")

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

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

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

    def build_cal_mp_for(self):
        """
        usage:

        > python anselm provide_excahnge_for calid
        
        """
wactbprot's avatar
wactbprot committed
        parser = argparse.ArgumentParser(
wactbprot's avatar
wactbprot committed
            description="builds the api for the mp given by id")
wactbprot's avatar
wactbprot committed

wactbprot's avatar
wactbprot committed
        parser.add_argument('calid')
wactbprot's avatar
wactbprot committed
        arg = parser.parse_args(sys.argv[2:3])

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

        self.stm_conn.close()

    def read_exchange(self):
wactbprot's avatar
wactbprot committed
       
        self.stm_pub(body_dict={
wactbprot's avatar
wactbprot committed
                        '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()