Example #1
0
class ServiceManager(BaseService):
    family_latency = scales.HistogramAggregationStat('latency')

    def __init__(self, name):
        scales.init(self, '/service-manager')
        BaseService.__init__(self, name)
        self._directory = {}
        self.started_services = Queue()
        self._directory_service_proxy = DirectoryService(self._directory)

    def start(self):
        BaseService.start(self)
        self._directory_service_proxy.start()

        self.log.info("starting services...")
        for service_name, service in self._directory.iteritems():
            self.log.info("starting service %s" % service_name)
            self.started_services.put(service.start())

    def add_service(self, service, name):
        """
        Add service to service manager by name.
        :param greenlet:
        :param name:
        :return:
        """
        print "service %s added" % name
        service.set_directory_service_proxy(self._directory_service_proxy)
        self._directory[name] = service

    def stop_service(self, name):
        """
        :param greenlet:
        :return:
        """
        print "stopping services..."
        service = self._directory_service_proxy.get_service(name)
        gevent.kill(service)
        self._directory.pop(service)

    def stop_services(self):
        for pid_key, pid in self._directory.items():
            pid.stop()

    def get_directory_service_proxy(self):
        return self._directory_service_proxy

    def get_service_count(self):
        return self._directory_service_proxy.get_service_count()

    def get_services(self):
        return self._directory.items()
Example #2
0
class ServiceManager(BaseService):
    family_latency = scales.HistogramAggregationStat('latency')

    def __init__(self, name):
        scales.init(self, '/service-manager')
        BaseService.__init__(self, name)
        self._directory = {}
        self.started_services = Queue()
        self._directory_service_proxy = DirectoryService(self._directory)

    def start(self):
        BaseService.start(self)
        self._directory_service_proxy.start()

        self.log.info("starting services...")
        for service_name, service in self._directory.iteritems():
            self.log.info("starting service %s" % service_name)
            self.started_services.put(service.start())

    def add_service(self, service, name):
        """
        Add service to service manager by name.
        :param greenlet:
        :param name:
        :return:
        """
        print "service %s added" % name
        service.set_directory_service_proxy(self._directory_service_proxy)
        self._directory[name] = service

    def stop_service(self, name):
        """
        :param greenlet:
        :return:
        """
        print "stopping services..."
        service = self._directory_service_proxy.get_service(name)
        gevent.kill(service)
        self._directory.pop(service)

    def stop_services(self):
        for pid_key, pid in self._directory.items():
            pid.stop()

    def get_directory_service_proxy(self):
        return self._directory_service_proxy

    def get_service_count(self):
        return self._directory_service_proxy.get_service_count()

    def get_services(self):
        return self._directory.items()
Example #3
0
 def __init__(self, name):
     scales.init(self, '/service-manager')
     BaseService.__init__(self, name)
     self._directory = {}
     self.started_services = Queue()
     self._directory_service_proxy = DirectoryService(self._directory)
Example #4
0
 def __init__(self, name):
     scales.init(self, '/service-manager')
     BaseService.__init__(self, name)
     self._directory = {}
     self.started_services = Queue()
     self._directory_service_proxy = DirectoryService(self._directory)