예제 #1
0
파일: manager.py 프로젝트: nnDarshan/USM
    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__)
예제 #2
0
파일: manager.py 프로젝트: nnDarshan/USM
    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()
예제 #3
0
파일: manager.py 프로젝트: nnDarshan/USM
 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()
예제 #4
0
파일: manager.py 프로젝트: nnDarshan/USM
 def on_discovery(self, minion_id, heartbeat_data):
     log.info(
         "on_discovery: {0}/{1}".format(minion_id, heartbeat_data['fsid']))
예제 #5
0
파일: manager.py 프로젝트: nnDarshan/USM
 def join(self):
     log.info("%s joining" % self.__class__.__name__)
     # self._rpc_thread.join()
     self._discovery_thread.join()
예제 #6
0
 def shutdown():
     log.info("Signal handler: stopping")
     complete.set()
예제 #7
0
        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)