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
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