Esempio n. 1
0
    def _execute(self, parsed_arguments):
        net = rom.get_object(self.storage, parsed_arguments.net_key)

        parallel_id = ParallelIdentifier.deserialize(parsed_arguments.parallel_id)

        _execute_deferred = defer.Deferred()

        inputs_file = NamedTemporaryFile()
        outputs_file = NamedTemporaryFile()
        write_inputs(inputs_file, net=net, parallel_id=parallel_id, operation_id=parsed_arguments.operation_id)

        cmdline = copy.copy(self.perl_wrapper)
        cmdline_builder = CMDLINE_BUILDERS[parsed_arguments.action_type]
        cmdline.extend(cmdline_builder(parsed_arguments.method, parsed_arguments.action_id, inputs_file, outputs_file))

        LOG.info("Executing (%s): %s", socket.gethostname(), " ".join(cmdline))
        logannotator = LogAnnotator(cmdline)
        deferred = logannotator.start()
        deferred.addCallback(
            self._finish,
            parsed_arguments=parsed_arguments,
            inputs_file=inputs_file,
            outputs_file=outputs_file,
            parallel_id=parallel_id,
            net=net,
            _execute_deferred=_execute_deferred,
        )
        deferred.addErrback(self._exit)

        return _execute_deferred