Example #1
0
File: step.py Project: siq/flux
    def initiate(self,
                 session,
                 run,
                 ancestor=None,
                 parameters=None,
                 values=None):
        if not run.is_active:
            return

        operation = session.query(Operation).get(self.operation)
        if not operation:
            raise UnknownOperationError(self.operation)

        params = {}
        if operation.parameters:
            recursive_merge(params, operation.parameters)
        if self.parameters:
            recursive_merge(params, self.parameters)
        if parameters:
            recursive_merge(params, parameters)

        execution = run.create_execution(session,
                                         self.name,
                                         ancestor=ancestor,
                                         name=(self.description
                                               or operation.name))
        session.flush()

        interpolator = self._construct_interpolator(run, execution, values)
        if params:
            params = interpolator.interpolate(operation.schema, params)
        else:
            params = None

        workflow = run.workflow.workflow
        environment = Environment(workflow,
                                  run,
                                  interpolator,
                                  output=values,
                                  ancestor=execution)

        preoperation = self.preoperation
        if preoperation:
            preoperation.evaluate(session, environment)

        if params:
            params = operation.schema.serialize(params)

        execution.start(params)
        session.call_after_commit(operation.initiate,
                                  id=execution.id,
                                  tag=self.name,
                                  input=params,
                                  timeout=self.timeout)
Example #2
0
File: step.py Project: siq/flux
    def initiate(self, session, run, ancestor=None, parameters=None, values=None):
        if not run.is_active:
            return

        operation = session.query(Operation).get(self.operation)
        if not operation:
            raise UnknownOperationError(self.operation)

        params = {}
        if operation.parameters:
            recursive_merge(params, operation.parameters)
        if self.parameters:
            recursive_merge(params, self.parameters)
        if parameters:
            recursive_merge(params, parameters)

        execution = run.create_execution(session, self.name, ancestor=ancestor,
            name=(self.description or operation.name))
        session.flush()

        interpolator = self._construct_interpolator(run, execution, values)
        if params:
            params = interpolator.interpolate(operation.schema, params)
        else:
            params = None

        workflow = run.workflow.workflow
        environment = Environment(workflow, run, interpolator, output=values,
            ancestor=execution)

        preoperation = self.preoperation
        if preoperation:
            preoperation.evaluate(session, environment)

        if params:
            params = operation.schema.serialize(params)

        execution.start(params)
        session.call_after_commit(operation.initiate, id=execution.id, tag=self.name, input=params,
            timeout=self.timeout)
Example #3
0
 def merge(self, values):
     recursive_merge(self, values)
Example #4
0
 def merge(self, values):
     recursive_merge(self, values)