def _add_remote_config_internal(self, module_spec, config_update_callback=None): """The guts of add_remote_config and add_remote_config_by_name""" module_cfg = ConfigData(module_spec) module_name = module_spec.get_module_name() self._session.group_subscribe(module_name) # Get the current config for that module now seq = self._session.group_sendmsg( create_command(COMMAND_GET_CONFIG, {"module_name": module_name}), "ConfigManager") try: answer, _ = self._session.group_recvmsg(False, seq) except isc.cc.SessionTimeout: raise ModuleCCSessionError("No answer from ConfigManager when " "asking about Remote module " + module_name) call_callback = False if answer: rcode, value = parse_answer(answer) if rcode == 0: if value != None: if module_spec.validate_config(False, value): module_cfg.set_local_config(value) call_callback = True else: raise ModuleCCSessionError("Bad config data for " + module_name + ": " + str(value)) else: raise ModuleCCSessionError("Failure requesting remote " + "configuration data for " + module_name) # all done, add it self._remote_module_configs[module_name] = module_cfg self._remote_module_callbacks[module_name] = config_update_callback if call_callback and config_update_callback is not None: config_update_callback(value, module_cfg)
def _add_remote_config_internal(self, module_spec, config_update_callback=None): """The guts of add_remote_config and add_remote_config_by_name""" module_cfg = ConfigData(module_spec) module_name = module_spec.get_module_name() self._session.group_subscribe(module_name) # Get the current config for that module now seq = self._session.group_sendmsg(create_command(COMMAND_GET_CONFIG, { "module_name": module_name }), "ConfigManager") try: answer, _ = self._session.group_recvmsg(False, seq) except isc.cc.SessionTimeout: raise ModuleCCSessionError("No answer from ConfigManager when " "asking about Remote module " + module_name) call_callback = False if answer: rcode, value = parse_answer(answer) if rcode == 0: if value != None: if module_spec.validate_config(False, value): module_cfg.set_local_config(value) call_callback = True else: raise ModuleCCSessionError("Bad config data for " + module_name + ": " + str(value)) else: raise ModuleCCSessionError("Failure requesting remote " + "configuration data for " + module_name) # all done, add it self._remote_module_configs[module_name] = module_cfg self._remote_module_callbacks[module_name] = config_update_callback if call_callback and config_update_callback is not None: config_update_callback(value, module_cfg)