def _run(self): log.info("%s running" % self.__class__.__name__) event = SaltEventSource(log, salt_config) while not self._complete.is_set(): ev = event.get_event(full=True) if ev is not None and 'tag' in ev: tag = ev['tag'] data = ev['data'] try: if tag.startswith("salt/auth"): log.debug("Tag: %s Data: %s" % (tag, data)) if djangoUtil.check_minion_is_new(data['id']): djangoUtil.add_minion_to_free_pool(data['id']) else: log.debug( "Ignoring - Already added to the free pool") else: # This does not concern us, ignore it log.debug("TopLevelEvents: ignoring %s" % tag) pass except: log.exception("Exception handling message tag=%s" % tag) log.info("%s complete" % self.__class__.__name__)
def start(self): log.info("%s starting" % self.__class__.__name__) # Before we start listening to the outside world, recover # our last known state from persistent storage try: self._recover() except: log.exception("Recovery failed") os._exit(-1) # self._rpc_thread.bind() # self._rpc_thread.start() self._discovery_thread.start()
def stop(self): log.info("%s stopping" % self.__class__.__name__) # for monitor in self.clusters.values(): # monitor.stop() # self._rpc_thread.stop() self._discovery_thread.stop()
def on_discovery(self, minion_id, heartbeat_data): log.info( "on_discovery: {0}/{1}".format(minion_id, heartbeat_data['fsid']))
def join(self): log.info("%s joining" % self.__class__.__name__) # self._rpc_thread.join() self._discovery_thread.join()
def shutdown(): log.info("Signal handler: stopping") complete.set()
handler.setFormatter(logging.Formatter(gthulhu.log.FORMAT)) log.addHandler(handler) # Instruct salt to use the gevent version of ZMQ import zmq.green import salt.utils.event salt.utils.event.zmq = zmq.green # Set up gevent compatibility in psycopg2 import psycogreen.gevent psycogreen.gevent.patch_psycopg() if manhole is not None: # Enable manhole for debugging. Use oneshot mode # for gevent compatibility manhole.cry = lambda message: log.info("MANHOLE: %s" % message) manhole.install(oneshot_on=signal.SIGUSR1) from gthulhu.manager import Manager m = Manager() m.start() print "Started Manager" complete = gevent.event.Event() def shutdown(): log.info("Signal handler: stopping") complete.set() gevent.signal(signal.SIGTERM, shutdown) gevent.signal(signal.SIGINT, shutdown)