Esempio n. 1
0
    def update_local_cache_groups(self):
        new_cache_groups = set()
        local_addresses = []
        local_ips = h.ips_set(self.hostname)
        logger.info('Local ips: {0}'.format(local_ips))
        for address in self.session.routes.addresses():
            if address.host in local_ips:
                local_addresses.append(address)

        for address in local_addresses:

            try:
                s = self.session.clone()
                s.set_direct_id(address)
                msre = s.monitor_stat(address,
                    categories=elliptics.monitor_stat_categories.backend).get()[0]
                for backend in msre.statistics['backends'].itervalues():
                    if backend['status']['state'] != 1:
                        continue
                    backend_base_path = backend.get('backend', {}).get('config', {}).get('data', None)
                    if backend_base_path and backend_base_path.startswith(self.cache_path_prefix):
                        new_cache_groups.add(backend['backend']['config']['group'])

            except Exception as e:
                logger.error('Failed to fetch monitor stat from address {0}: {1}\n{2}'.format(
                    address, e, traceback.format_exc()))
                continue

        logger.info('Updated list of local cache groups (local addresses: {0}): {1}'.format(
            local_addresses, list(new_cache_groups)))

        self.__local_cache_groups = new_cache_groups
Esempio n. 2
0
    def update_local_addresses(self):
        local_addresses = []
        local_ips = h.ips_set(self.hostname)
        logger.info('Local ips: {0}'.format(local_ips))
        for address in self.session.routes.addresses():
            if address.host in local_ips:
                local_addresses.append(address)

        self.__local_addresses = local_addresses