Exemplo n.º 1
0
def get_executions():
    """
    get list of workflow execution info, log info will not be returned

    :http param name: specify the workflow name
    :http param limit: specify max number of execution info returned
                       on each request
    :http param startBefore: workflows start before this time in ms
    :http param skip: number of element to skip, this is used for pagination
    """
    args = request.args
    name = args.get('name', None)
    limit = int(args.get('limit', 100))
    startBefore = int(args.get('startBefore', now_ms()))
    skip = int(args.get('skip', 0))

    wfs = (wf_executor.get_execution_history(
        name=name,
        startBefore=startBefore).limit(limit).order_by('-start').skip(skip))

    def transform(wf):
        s = wf.execution.state
        wf.execution.state = state_str(s)
        return wf.to_mongo()

    return json.dumps(transform(wf) for wf in wfs)
Exemplo n.º 2
0
 def update_runner(self, hostname, **kwarg):
     runner = self.runners.get(hostname, None)
     if not runner:
         runner = self.Runner(hostname)
         self.runners[hostname] = runner
     for k, v in kwarg.iteritems():
         setattr(runner, k, v)
     runner.last = now_ms()
Exemplo n.º 3
0
    def construct(self, topology, reactor):
        self.topology = topology
        self.reactor = reactor

        if not self.id:
            self.logger = LogProcessor()
            self.execution = Execution(next_task=topology.entrance,
                                       wf_name=self.name)
            self.tri_chain = TriggerChain()
            self.start = now_ms()
Exemplo n.º 4
0
    def test_ttr(self):
        driver = StatDriver()
        driver.start()
        try:
            start = now_ms() - 100 * 1000
            data = [[
                'info', start, lambda ttr: (self.assertTrue(
                    ttr != None) and self.assertTrue(ttr.state == 'info'))
            ],
                    [
                        'info', start, lambda ttr:
                        (self.assertTrue(len(ttr.ttrs) == 0) and self.
                         assertTrue(ttr.state == 'info'))
                    ],
                    [
                        'warning', start + 10 * 1000, lambda ttr:
                        (self.assertTrue(len(ttr.ttrs) == 0) and self.
                         assertTrue(ttr.state == 'warning'))
                    ],
                    [
                        'info', start + 30 * 1000, lambda ttr:
                        (self.assertTrue(len(ttr.ttrs) == 1) and self.
                         assertTrue(ttr.state == 'info') and self.assertTrue(
                             ttr.ttrs[0] == 20 * 1000))
                    ]]
            for level, timestamp, validator in data:
                e = self.gen_event(level, timestamp)
                driver.add_event(e)
                time.sleep(1)
                validator(TTR.from_event(e))

            driver._compute_mttr(False)
            ttr = TTR.from_event(self.gen_event('info', now_ms()))
            self.assertTrue(ttr.mttr == 20 * 1000)
        finally:
            driver.stop()
Exemplo n.º 5
0
 def run(self):
     while self.running:
         now = now_ms()
         asyn_results = self.dispatcher_async_wf.handle_timeout(now)
         # TODO: log here
         sleep(1)
Exemplo n.º 6
0
 def __init__(self, hostname):
     self.hostname = hostname
     self.last = now_ms()
     self.pid = 0
Exemplo n.º 7
0
 def judge(self,  decision, comment=''):
     if decision not in self.options:
         raise Exception('decision from user is not in the list of options')
     self.decision = decision
     self.comment = comment
     self.judge_time = now_ms()
Exemplo n.º 8
0
 def construct(desc, options):
     return Judgement(desc=desc, options=options, created_time=now_ms())