Exemple #1
0
    def current_preset(self):
        self._logger.debug('Getting current Memcached preset')
        preset = CnfPreset(name='System')

        vars = {}

        for option_spec in self.options:
            current_value = option_spec.get_func()
            vars[option_spec.name] = current_value if current_value else option_spec.default_value

        preset.settings = vars
        return preset
Exemple #2
0
    def current_preset(self):
        self._logger.debug('Getting current Memcached preset')
        preset = CnfPreset(name='System')

        vars = {}

        for option_spec in self.options:
            current_value = option_spec.get_func()
            vars[
                option_spec.
                name] = current_value if current_value else option_spec.default_value

        preset.settings = vars
        return preset
Exemple #3
0
    def _obtain_current_preset(self):
        service_conf = self._queryenv.get_service_configuration(self._service_name)
        if service_conf.new_engine:
            '''New sheriff in town. No need to calculate or apply old preset'''
            return None

        cur_preset = CnfPreset(service_conf.name, service_conf.settings)
        if cur_preset.name == 'default':
            try:
                cur_preset = self._preset_store.load(PresetType.DEFAULT)
            except IOError, e:
                if e.errno == 2:
                    cur_preset = self._cnf_ctl.current_preset()
                    self._preset_store.save(cur_preset, PresetType.DEFAULT)
                else:
                    raise
Exemple #4
0
    def sc_on_configured(self, service_name, **kwargs):
        if self._service_name != service_name:
            return

        # Fetch current configuration preset
        service_conf = self._queryenv.get_service_configuration(
            self._service_name)

        if service_conf.new_engine:
            LOG.debug('New configuration presets engine is available.')
            response = None
            settings = {}
            LOG.debug('Initial preset from HostInitResponse: %s' %
                      self.initial_preset)

            if self.initial_preset:
                LOG.debug('initial_preset = %s' % self.initial_preset)
                for preset in self.initial_preset:
                    for f, data in preset.items():
                        kv = {}
                        for setting in data['settings']:
                            k = setting['setting']['name']
                            v = setting['setting']['value']
                            kv[k] = v
                        settings.update({data['name']: kv})
                LOG.debug('Got settings from initial preset: %s' % settings)

            else:
                cnf = bus.cnf
                ini = cnf.rawini
                farm_role_id = ini.get('general', 'farm_role_id')
                response = self._queryenv.list_farm_role_params(farm_role_id)
            LOG.debug('list_farm_role_params: %s' % response)
            if response and service_name in response and 'preset' in response[
                    service_name]:
                settings = response[service_name]['preset']
                LOG.debug('list_farm_role_params returned settings: %s' %
                          settings)
            if settings:
                manifest = self.preset_provider.get_manifest(service_name)
                if manifest:
                    LOG.debug('Applying configuration preset')
                    self.preset_provider.set_preset(settings, manifest)
                    LOG.debug(
                        'Configuration preset has been successfully applied.')
                else:
                    LOG.WARNING('Cannot apply preset: Manifest not found.')

        else:
            log = bus.init_op.logger if bus.init_op else LOG
            if self._cnf_ctl:
                log.info('Applying configuration preset')

                # Backup default configuration
                my_preset = self._cnf_ctl.current_preset()
                self._preset_store.save(my_preset, PresetType.DEFAULT)

                # Stop service if it's already running
                self._stop_service('Applying configuration preset')

                cur_preset = CnfPreset(service_conf.name,
                                       service_conf.settings,
                                       self._service_name)
                self._preset_store.copy(PresetType.DEFAULT,
                                        PresetType.LAST_SUCCESSFUL,
                                        override=False)

                if cur_preset.name == 'default':
                    # Scalr respond with default preset
                    LOG.debug('%s configuration is default',
                              self._service_name)
                    #self._preset_store.copy(PresetType.DEFAULT, PresetType.LAST_SUCCESSFUL)
                    self._start_service()
                    return

                elif self._cnf_ctl.preset_equals(cur_preset, my_preset):
                    LOG.debug("%s configuration satisfies current preset '%s'",
                              self._service_name, cur_preset.name)
                    self._start_service()
                    return

                else:
                    LOG.info("Applying '%s' preset to %s", cur_preset.name,
                             self._service_name)
                    self._cnf_ctl.apply_preset(cur_preset)

                log.info('Start %s with configuration preset', service_name)
                self._start_service_with_preset(cur_preset)
            else:
                log.info('Start %s' % service_name)
                self._start_service()

        bus.fire(self._service_name + '_configure', **kwargs)
Exemple #5
0
 def __init__(self):
     self.preset = CnfPreset(name='current', settings={'1':'old_value'})