Fix determining save_output_streams value through configuration
This commit is contained in:
		
					parent
					
						
							
								23292e5cad
							
						
					
				
			
			
				commit
				
					
						2dfbd89c5e
					
				
			
		
					 3 changed files with 21 additions and 6 deletions
				
			
		| 
						 | 
					@ -78,6 +78,9 @@ class OptionBase:
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            return newval
 | 
					            return newval
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def should_override(self, currval, newval):
 | 
				
			||||||
 | 
					        return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class StringOption(OptionBase):
 | 
					class StringOption(OptionBase):
 | 
				
			||||||
    def __init__(self, name):
 | 
					    def __init__(self, name):
 | 
				
			||||||
| 
						 | 
					@ -98,8 +101,12 @@ class StringOption(OptionBase):
 | 
				
			||||||
class BooleanOption(OptionBase):
 | 
					class BooleanOption(OptionBase):
 | 
				
			||||||
    BOOLEAN_STATES = configparser.ConfigParser.BOOLEAN_STATES
 | 
					    BOOLEAN_STATES = configparser.ConfigParser.BOOLEAN_STATES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self, name):
 | 
					    # If default_overrides is False then previous config value will not be
 | 
				
			||||||
 | 
					    # overriden with default_value.
 | 
				
			||||||
 | 
					    def __init__(self, name, default_overrides=True, default_value=True):
 | 
				
			||||||
        super().__init__(name)
 | 
					        super().__init__(name)
 | 
				
			||||||
 | 
					        self.default_overrides = default_overrides
 | 
				
			||||||
 | 
					        self.default_value = default_value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_converter(self):
 | 
					    def get_converter(self):
 | 
				
			||||||
        def boolean_converter(val):
 | 
					        def boolean_converter(val):
 | 
				
			||||||
| 
						 | 
					@ -113,6 +120,11 @@ class BooleanOption(OptionBase):
 | 
				
			||||||
    def translate(self, val):
 | 
					    def translate(self, val):
 | 
				
			||||||
        return self.BOOLEAN_STATES[val]
 | 
					        return self.BOOLEAN_STATES[val]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def should_override(self, currval, newval):
 | 
				
			||||||
 | 
					        if not self.default_overrides:
 | 
				
			||||||
 | 
					            return newval != self.default_value
 | 
				
			||||||
 | 
					        return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class IntOption(OptionBase):
 | 
					class IntOption(OptionBase):
 | 
				
			||||||
    def __init__(self, name):
 | 
					    def __init__(self, name):
 | 
				
			||||||
| 
						 | 
					@ -286,7 +298,8 @@ class Configuration(metaclass=Singleton):
 | 
				
			||||||
            'parallel': JobsOption('parallel'),
 | 
					            'parallel': JobsOption('parallel'),
 | 
				
			||||||
            'verbosity': VerbosityOption(),
 | 
					            'verbosity': VerbosityOption(),
 | 
				
			||||||
            'archiving': ArchivingOption(),
 | 
					            'archiving': ArchivingOption(),
 | 
				
			||||||
            'save_output_streams': BooleanOption('save_output_streams'),
 | 
					            'save_output_streams': BooleanOption('save_output_streams',
 | 
				
			||||||
 | 
					                                                 default_overrides=False),
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -414,7 +427,7 @@ class Configuration(metaclass=Singleton):
 | 
				
			||||||
                # False to override True.
 | 
					                # False to override True.
 | 
				
			||||||
                if (args[option] or
 | 
					                if (args[option] or
 | 
				
			||||||
                    (isinstance(option_object, BooleanOption) and
 | 
					                    (isinstance(option_object, BooleanOption) and
 | 
				
			||||||
                                args[option] is not None)):
 | 
					                        args[option] is not None)):
 | 
				
			||||||
                    d[dst_opt] = args[option]
 | 
					                    d[dst_opt] = args[option]
 | 
				
			||||||
        return d
 | 
					        return d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -434,8 +447,9 @@ class Configuration(metaclass=Singleton):
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                currval = None
 | 
					                currval = None
 | 
				
			||||||
            option_object = self.CONFIG_FILE_OPTIONS[section][option]
 | 
					            option_object = self.CONFIG_FILE_OPTIONS[section][option]
 | 
				
			||||||
            config[section][option] = option_object.update_value(
 | 
					            if option_object.should_override(currval, newval):
 | 
				
			||||||
                currval, newval, update_appends)
 | 
					                config[section][option] = option_object.update_value(
 | 
				
			||||||
 | 
					                    currval, newval, update_appends)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _update_defaults_for_unset(self, config):
 | 
					    def _update_defaults_for_unset(self, config):
 | 
				
			||||||
        defaults = self.REQUIRED_DEFAULT_CONFIG_VALUES
 | 
					        defaults = self.REQUIRED_DEFAULT_CONFIG_VALUES
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1208,7 +1208,7 @@ class ConfigurationTestCase(test.CdistTestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        expected_config_dict = {
 | 
					        expected_config_dict = {
 | 
				
			||||||
            'GLOBAL': {
 | 
					            'GLOBAL': {
 | 
				
			||||||
                'save_output_streams': True,
 | 
					                'save_output_streams': False,
 | 
				
			||||||
                'verbosity': 0,
 | 
					                'verbosity': 0,
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@ next:
 | 
				
			||||||
	* Core: Fix main and inventory parent argparse options (Darko Poljak)
 | 
						* Core: Fix main and inventory parent argparse options (Darko Poljak)
 | 
				
			||||||
	* Core: Fix lost error info with parallel jobs (option -j) (Darko Poljak)
 | 
						* Core: Fix lost error info with parallel jobs (option -j) (Darko Poljak)
 | 
				
			||||||
	* Core: Fix determining beta value through configuration (Darko Poljak)
 | 
						* Core: Fix determining beta value through configuration (Darko Poljak)
 | 
				
			||||||
 | 
						* Core: Fix determining save_output_streams value through configuration (Darko Poljak)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
4.8.0: 2018-02-14
 | 
					4.8.0: 2018-02-14
 | 
				
			||||||
	* Core: Skip empty lines in parameter files (Darko Poljak)
 | 
						* Core: Skip empty lines in parameter files (Darko Poljak)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue