def __init__(self, krb5configs): self.data = {} main_data = {} self.includedir = [] self.include = [] self.module = [] self.files = [] for krb5_parser in krb5configs: self.files.append(krb5_parser.file_name) if krb5_parser.file_path == "/etc/krb5.conf": main_data = krb5_parser.data self.includedir = krb5_parser.includedir self.include = krb5_parser.include self.module = krb5_parser.module else: dict_deep_merge(self.data, krb5_parser.data) # Same options in same section from other configuration files will be covered by the option # from main configuration, but different options in same section will be kept. for key, value in main_data.items(): if key in self.data.keys(): self.data[key].update(value) else: self.data[key] = value super(AllKrb5Conf, self).__init__()
def __init__(self, httpd_conf): deprecated( HttpdConfAll, "Import HttpdConfTree from 'insights.combiners.httpd_conf' instead." ) self.data = {} self.config_data = [] config_files_data = [] main_config_data = [] for httpd_parser in httpd_conf: file_name = httpd_parser.file_name file_path = httpd_parser.file_path # Flag to be used for different handling of the main config file main_config = httpd_parser.file_name == 'httpd.conf' if not main_config: config_files_data.append( self.ConfigData(file_name, file_path, httpd_parser.data)) else: main_config_data.append( self.ConfigData(file_name, file_path, httpd_parser.first_half)) main_config_data.append( self.ConfigData(file_name, file_path, httpd_parser.second_half)) # Sort configuration files config_files_data.sort() # Add both parts of main configuration file and store as attribute. # These values can be used when looking for bad settings which are not actually active # but may become active if other configurations are changed if main_config_data: self.config_data = [main_config_data[0] ] + config_files_data + [main_config_data[1]] else: self.config_data = config_files_data # Store active settings - the last parsed value us stored self.data = {} for _, _, full_data in self.config_data: copy_data = full_data.copy() for option, parsed_data in copy_data.items(): if isinstance(parsed_data, dict): if option not in self.data: self.data[option] = {} dict_deep_merge(self.data[option], parsed_data) else: if option not in self.data: self.data[option] = [] self.data[option].extend(parsed_data)