def __init__(self, service_name, init_script=None, cnf_ctl=None): ''' XXX: When migrating to the new preset system do not forget that self._service_name is essential for Handler.get_ready_behaviours() and should be overloaded in every ServiceCtlHandler child. ''' self._service_name = service_name self._cnf_ctl = cnf_ctl self._init_script = init_script self._logger = logging.getLogger(__name__) self._preset_store = CnfPresetStore(self._service_name) Handler.__init__(self) self._queryenv = bus.queryenv_service bus.on('init', self.sc_on_init) bus.define_events(self._service_name + '_reload', 'before_' + self._service_name + '_configure', self._service_name + '_configure')
class ServiceCtlHandler(Handler): _logger = None _cnf_ctl = None _init_script = None _preset_store = None _service_name = None initial_preset = None def __init__(self, service_name, init_script=None, cnf_ctl=None): ''' XXX: When migrating to the new preset system do not forget that self._service_name is essential for Handler.get_ready_behaviours() and should be overloaded in every ServiceCtlHandler child. ''' self._service_name = service_name self._cnf_ctl = cnf_ctl self._init_script = init_script self._logger = logging.getLogger(__name__) self._preset_store = CnfPresetStore(self._service_name) Handler.__init__(self) self._queryenv = bus.queryenv_service bus.on('init', self.sc_on_init) bus.define_events(self._service_name + '_reload', 'before_' + self._service_name + '_configure', self._service_name + '_configure') def on_UpdateServiceConfiguration(self, message): if self._service_name != message.behaviour: return result = self.new_message(Messages.UPDATE_SERVICE_CONFIGURATION_RESULT) result.behaviour = message.behaviour # Obtain current configuration preset if message.reset_to_defaults == '1': new_preset = self._preset_store.load(PresetType.DEFAULT) else: new_preset = self._obtain_current_preset() if new_preset: result.preset = new_preset.name # Apply current preset try: LOG.info("Applying preset '%s' to %s %s service restart", new_preset.name, self._service_name, 'with' if message.restart_service == '1' else 'without') self._cnf_ctl.apply_preset(new_preset) if message.restart_service == '1' or message.reset_to_defaults == '1': self._stop_service(reason="Applying preset '%s'" % new_preset.name) self._start_service_with_preset(new_preset) result.status = 'ok' except (BaseException, Exception), e: result.status = 'error' result.last_error = str(e) # Send result self.send_message(result)