def _init_callback_handler(self): self.handlers = PeerCallbackHandlers(self._get_name(), self._cache_config.get_report_interval()) self.handlers.register_handler(PeerReporter(self._get_name())) self.handlers.register_handler(CacheActiveDownloadTracker()) if self._cache_config.get_sis_url() is not None: ip_addr = net_utils.get_own_ip_addr() iop_url = self._cache_config.get_sis_iop_url() self.handlers.register_handler(PeerActivityReportEmitter( (ip_addr, self._cache_config.get_port()), self._cache_config.get_report_interval(), sis_iop_endpoint_url=iop_url)) if self._cache_config.get_report_to() is not None: if self._cache_config.get_report_to() == 'local_report': global local_reporter local_reporter = PeerLocalReporter(self._get_name(), self._cache_config.get_id(), self.session, self._cache_config.get_directory()) self.handlers.register_handler(local_reporter) else: self.handlers.register_handler(PeerHTTPReporter(self._get_name(), self._cache_config.get_id(), self._cache_config.get_report_to(), self.sconfig, self._cache_config.get_compress_xml_reports(), self._cache_config.get_serialization_method(), is_iop=True))
def _update_from_sis(self): def set_attribute(attribute, func_name): if attribute is not None: func_name(attribute) ws_client = IoP_WSClientImpl(self.get_sis_iop_url()) config_dict = {} try: config_dict = ws_client.retrieve_configuration_parameters( net_utils.get_own_ip_addr()) self._logger.warning("Config dict returned was: %s" % config_dict) if len(config_dict.keys()) == 0: self._logger.warning( "Received an empty dict. Cache configuration was not updated." ) return max_torrents = int( min( float(config_dict.get('u')) / float(config_dict.get('ulow')), float(config_dict.get('d')) / float(config_dict.get('dlow')))) sis_modes = { 'Collaboration': constants.SELECTION_MODE_IOP, 'Plain': constants.SELECTION_MODE_LOCAL, 'Combination': constants.SELECTION_MODE_LOCAL } set_attribute(config_dict.get('t'), self.set_torrent_selection_interval) set_attribute(config_dict.get('u'), self.set_upload_limit) set_attribute(config_dict.get('d'), self.set_download_limit) set_attribute(config_dict.get('slots'), self.set_max_upload_slots_per_download) set_attribute(config_dict.get('remotes'), self.set_establish_remote_connections) set_attribute(config_dict.get('x'), self.set_stay_in_torrents) set_attribute(config_dict.get('localIPs'), self.set_ip_prefixes) set_attribute(sis_modes[config_dict.get('mode')], self.set_torrent_selection_mechanism) set_attribute(max_torrents, self.set_max_torrents) set_attribute(max_torrents, self.set_max_downloads) except: self._logger.error( "Failed to retrieve cache configuration from SIS at %s" % self.get_sis_iop_url()) self._logger.error("Cache configuration was not updated.", exc_info=True) self._logger.error("Received config dict was: %s" % config_dict) raise ConfigurationException( "Failed to retrieve cache configuration from SIS at %s" % self.get_sis_iop_url()) return
def setup_callback_handlers(session, scfg): self._handlers = PeerCallbackHandlers( self._get_name(), self._config.get_report_interval()) self._handlers.register_handler(PeerReporter(self._get_name())) self._handlers.register_handler( ClientStatistics(self._config.get_directory(), self._config.get_id())) if self._config.is_hap_enabled(): self._logger.info("HAP support enabled") self._handlers.register_handler(ClientHAPHandler(self._config)) if self._config.get_sis_url() != None: ip_addr = net_utils.get_own_ip_addr() self._handlers.register_handler( PeerActivityReportEmitter( (ip_addr, self._config.get_port()), self._config.get_activity_report_interval(), sis_iop_endpoint_url=self._config.get_sis_iop_url())) if self._config.get_exit_on() == constants.EXIT_ON_ALL_FINISHED: self._handlers.register_handler( ClientUptimeHandler(session, method=constants.EXIT_ON_ALL_FINISHED, callback=self._on_exit)) elif self._config.get_exit_on() == constants.EXIT_ON_PLAYBACK_DONE: self._handlers.register_handler( ClientUptimeHandler(session, method=constants.EXIT_ON_PLAYBACK_DONE, callback=self._on_exit)) elif self._config.get_exit_on() == constants.EXIT_ON_SEEDING_TIME: self._handlers.register_handler( ClientUptimeHandler( session, method=constants.EXIT_ON_SEEDING_TIME, max_seeding_time=self._config.get_seeding_time(), callback=self._on_exit)) if self._config.get_report_to() is not None: if self._config.get_report_to() == 'local_report': self._local_reporter = PeerLocalReporter( self._get_name(), self._config.get_id(), session, self._config.get_directory()) self._handlers.register_handler(self._local_reporter) else: self._handlers.register_handler( PeerHTTPReporter( self._get_name(), self._config.get_id(), self._config.get_report_to(), scfg, self._config.get_compress_xml_reports(), self._config.get_serialization_method(), report_interval=self._config.get_report_interval()) )
def setup_callback_handlers(session, scfg): self._handlers = PeerCallbackHandlers(self._get_name(), self._config.get_report_interval()) self._handlers.register_handler(PeerReporter(self._get_name())) self._handlers.register_handler(ClientStatistics(self._config.get_directory(), self._config.get_id())) if self._config.is_hap_enabled(): self._logger.info("HAP support enabled") self._handlers.register_handler(ClientHAPHandler(self._config)) if self._config.get_sis_url() != None: ip_addr = net_utils.get_own_ip_addr() self._handlers.register_handler(PeerActivityReportEmitter( (ip_addr, self._config.get_port()), self._config.get_activity_report_interval(), sis_iop_endpoint_url=self._config.get_sis_iop_url())) if self._config.get_exit_on() == constants.EXIT_ON_ALL_FINISHED: self._handlers.register_handler(ClientUptimeHandler(session, method=constants.EXIT_ON_ALL_FINISHED, callback=self._on_exit)) elif self._config.get_exit_on() == constants.EXIT_ON_PLAYBACK_DONE: self._handlers.register_handler(ClientUptimeHandler(session, method=constants.EXIT_ON_PLAYBACK_DONE, callback=self._on_exit)) elif self._config.get_exit_on() == constants.EXIT_ON_SEEDING_TIME: self._handlers.register_handler(ClientUptimeHandler(session, method=constants.EXIT_ON_SEEDING_TIME, max_seeding_time=self._config.get_seeding_time(), callback=self._on_exit)) if self._config.get_report_to() is not None: if self._config.get_report_to() == 'local_report': self._local_reporter = PeerLocalReporter(self._get_name(), self._config.get_id(), session, self._config.get_directory()) self._handlers.register_handler(self._local_reporter) else: self._handlers.register_handler(PeerHTTPReporter(self._get_name(), self._config.get_id(), self._config.get_report_to(), scfg, self._config.get_compress_xml_reports(), self._config.get_serialization_method(), report_interval=self._config.get_report_interval()))
def _update_from_sis(self): def set_attribute(attribute, func_name): if attribute is not None: func_name(attribute) ws_client = IoP_WSClientImpl(self.get_sis_iop_url()) config_dict = {} try: config_dict = ws_client.retrieve_configuration_parameters(net_utils.get_own_ip_addr()) self._logger.warning("Config dict returned was: %s" % config_dict) if len(config_dict.keys()) == 0: self._logger.warning("Received an empty dict. Cache configuration was not updated.") return max_torrents = int(min( float(config_dict.get('u')) / float(config_dict.get('ulow')), float(config_dict.get('d')) / float(config_dict.get('dlow')))) sis_modes = { 'Collaboration' : constants.SELECTION_MODE_IOP, 'Plain' : constants.SELECTION_MODE_LOCAL, 'Combination' : constants.SELECTION_MODE_LOCAL } set_attribute(config_dict.get('t'), self.set_torrent_selection_interval) set_attribute(config_dict.get('u'), self.set_upload_limit) set_attribute(config_dict.get('d'), self.set_download_limit) set_attribute(config_dict.get('slots'), self.set_max_upload_slots_per_download) set_attribute(config_dict.get('remotes'), self.set_establish_remote_connections) set_attribute(config_dict.get('x'), self.set_stay_in_torrents) set_attribute(config_dict.get('localIPs'), self.set_ip_prefixes) set_attribute(sis_modes[config_dict.get('mode')], self.set_torrent_selection_mechanism) set_attribute(max_torrents, self.set_max_torrents) set_attribute(max_torrents, self.set_max_downloads) except: self._logger.error("Failed to retrieve cache configuration from SIS at %s" % self.get_sis_iop_url()) self._logger.error("Cache configuration was not updated.", exc_info=True) self._logger.error("Received config dict was: %s" % config_dict) raise ConfigurationException("Failed to retrieve cache configuration from SIS at %s" % self.get_sis_iop_url()) return