class OVirtAgentDaemon: def __init__(self): logging.config.fileConfig(AGENT_CONFIG) def run(self, daemon, pidfile): logging.info("Starting oVirt guest agent") config = ConfigParser.ConfigParser() config.read(AGENT_CONFIG) self.agent = LinuxVdsAgent(config) if daemon: self._daemonize() f = file(pidfile, "w") f.write("%s\n" % (os.getpid())) f.close() os.chmod(pidfile, 0644) # rw-rw-r-- (664) self.register_signal_handler() self.agent.run() logging.info("oVirt guest agent is down.") def _daemonize(self): if os.getppid() == 1: raise RuntimeError("already a daemon") pid = os.fork() if pid == 0: os.umask(0) os.setsid() os.chdir("/") self._reopen_file_as_null(sys.stdin) self._reopen_file_as_null(sys.stdout) self._reopen_file_as_null(sys.stderr) else: os._exit(0) def _reopen_file_as_null(self, oldfile): nullfile = file("/dev/null", "rw") os.dup2(nullfile.fileno(), oldfile.fileno()) nullfile.close() def register_signal_handler(self): def sigterm_handler(signum, frame): logging.debug("Handling signal %d" % (signum)) if signum == signal.SIGTERM: logging.info("Stopping oVirt guest agent") self.agent.stop() signal.signal(signal.SIGTERM, sigterm_handler)
class OVirtAgentDaemon: def __init__(self): logging.config.fileConfig(AGENT_CONFIG) def run(self, daemon, pidfile): logging.info("Starting oVirt guest agent") config = ConfigParser.ConfigParser() config.read(AGENT_CONFIG) self.agent = LinuxVdsAgent(config) if daemon: self._daemonize() f = file(pidfile, "w") f.write("%s\n" % (os.getpid())) f.close() os.chmod(pidfile, 0x1b4) # rw-rw-r-- (664) self.register_signal_handler() self.agent.run() logging.info("oVirt guest agent is down.") def _daemonize(self): if os.getppid() == 1: raise RuntimeError, "already a daemon" pid = os.fork() if pid == 0: os.umask(0) os.setsid() os.chdir("/") self._reopen_file_as_null(sys.stdin) self._reopen_file_as_null(sys.stdout) self._reopen_file_as_null(sys.stderr) else: os._exit(0) def _reopen_file_as_null(self, oldfile): nullfile = file("/dev/null", "rw") os.dup2(nullfile.fileno(), oldfile.fileno()) nullfile.close() def register_signal_handler(self): def sigterm_handler(signum, frame): logging.debug("Handling signal %d" % (signum)) if signum == signal.SIGTERM: logging.info("Stopping oVirt guest agent") self.agent.stop() signal.signal(signal.SIGTERM, sigterm_handler)
def run(self, daemon, pidfile): logging.info("Starting oVirt guest agent") config = ConfigParser.ConfigParser() config.read(AGENT_CONFIG) self.agent = LinuxVdsAgent(config) if daemon: self._daemonize() f = file(pidfile, "w") f.write("%s\n" % (os.getpid())) f.close() os.chmod(pidfile, 0x1b4) # rw-rw-r-- (664) self.register_signal_handler() self.agent.run() logging.info("oVirt guest agent is down.")
def run(self, daemon, pidfile): logging.info("Starting oVirt guest agent") config = ConfigParser.ConfigParser() config.read(AGENT_CONFIG) self.agent = LinuxVdsAgent(config) if daemon: self._daemonize() f = file(pidfile, "w") f.write("%s\n" % (os.getpid())) f.close() os.chmod(pidfile, 0644) # rw-rw-r-- (664) self.register_signal_handler() self.agent.run() logging.info("oVirt guest agent is down.")