Esempio n. 1
0
    def main(self):
        if self.nested_command is None:
            self.help()
            return 1

        log.init(verbose=self.debug, name='gofed-client')

        conf = ConfigParser()
        conf.read(self.config_path)
        self.config = config2dict(conf)
Esempio n. 2
0
    def main(self):
        try:
            self.conf
        except Exception:
            log.error("config option is mandatory, see '--help'")
            sys.exit(1)

        self.conf = config2dict(self.conf)

        cls = ServiceEnvelope.SERVICE_CLASS
        logfile = self.logfile if self.logfile != '-' else None
        verbose = not self.quiet
        name = cls.get_service_name()
        version = cls.get_service_version()

        log.init(logfile, verbose, name)
        log.critical("Service starting at %s, version is %s" %
                     (get_time_str(), version))

        service_cls = ServiceEnvelope.SERVICE_CLASS
        service_cls.on_startup(self.conf, self.system_json)

        ServiceEnvelope.worker_pid = os.fork()

        if ServiceEnvelope.worker_pid == 0:
            self.run_worker_process()
        else:
            signal.signal(signal.SIGINT, ServiceEnvelope.signal_handler)
            signal.signal(signal.SIGTERM, ServiceEnvelope.signal_handler)

            try:
                while os.waitpid(ServiceEnvelope.worker_pid, 0):
                    pass
            except Exception:
                pass

            # finish logging and ensure that all messages are flushed
            log.critical("Service terminated at %s" % get_time_str())
            log.close()