Beispiel #1
0
    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')
Beispiel #2
0
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)