def read(self):
        """Read the config file, if it exists. Using defaults otherwise."""
        for config_file in self.config_file_paths():
            logger.info('Search glances.conf file in {}'.format(config_file))
            if os.path.exists(config_file):
                try:
                    with open(config_file, encoding='utf-8') as f:
                        self.parser.read_file(f)
                        self.parser.read(f)
                    logger.info("Read configuration file '{}'".format(config_file))
                except UnicodeDecodeError as err:
                    logger.error("Can not read configuration file '{}': {}".format(config_file, err))
                    sys.exit(1)
                # Save the loaded configuration file path (issue #374)
                self._loaded_config_file = config_file
                break

        # Quicklook
        if not self.parser.has_section('quicklook'):
            self.parser.add_section('quicklook')
        self.set_default_cwc('quicklook', 'cpu')
        self.set_default_cwc('quicklook', 'mem')
        self.set_default_cwc('quicklook', 'swap')

        # CPU
        if not self.parser.has_section('cpu'):
            self.parser.add_section('cpu')
        self.set_default_cwc('cpu', 'user')
        self.set_default_cwc('cpu', 'system')
        self.set_default_cwc('cpu', 'steal')
        # By default I/O wait should be lower than 1/number of CPU cores
        iowait_bottleneck = (1.0 / multiprocessing.cpu_count()) * 100.0
        self.set_default_cwc('cpu', 'iowait',
                             [str(iowait_bottleneck - (iowait_bottleneck * 0.20)),
                              str(iowait_bottleneck - (iowait_bottleneck * 0.10)),
                              str(iowait_bottleneck)])
        # Context switches bottleneck identification #1212
        ctx_switches_bottleneck = (500000 * 0.10) * multiprocessing.cpu_count()
        self.set_default_cwc('cpu', 'ctx_switches',
                             [str(ctx_switches_bottleneck - (ctx_switches_bottleneck * 0.20)),
                              str(ctx_switches_bottleneck - (ctx_switches_bottleneck * 0.10)),
                              str(ctx_switches_bottleneck)])

        # Per-CPU
        if not self.parser.has_section('percpu'):
            self.parser.add_section('percpu')
        self.set_default_cwc('percpu', 'user')
        self.set_default_cwc('percpu', 'system')

        # Load
        if not self.parser.has_section('load'):
            self.parser.add_section('load')
        self.set_default_cwc('load', cwc=['0.7', '1.0', '5.0'])

        # Mem
        if not self.parser.has_section('mem'):
            self.parser.add_section('mem')
        self.set_default_cwc('mem')

        # Swap
        if not self.parser.has_section('memswap'):
            self.parser.add_section('memswap')
        self.set_default_cwc('memswap')

        # NETWORK
        if not self.parser.has_section('network'):
            self.parser.add_section('network')
        self.set_default_cwc('network', 'rx')
        self.set_default_cwc('network', 'tx')

        # FS
        if not self.parser.has_section('fs'):
            self.parser.add_section('fs')
        self.set_default_cwc('fs')

        # Sensors
        if not self.parser.has_section('sensors'):
            self.parser.add_section('sensors')
        self.set_default_cwc('sensors', 'temperature_core', cwc=['60', '70', '80'])
        self.set_default_cwc('sensors', 'temperature_hdd', cwc=['45', '52', '60'])
        self.set_default_cwc('sensors', 'battery', cwc=['80', '90', '95'])

        # Process list
        if not self.parser.has_section('processlist'):
            self.parser.add_section('processlist')
        self.set_default_cwc('processlist', 'cpu')
        self.set_default_cwc('processlist', 'mem')
def read ( self ) : for config_file in self . config_file_paths ( ) : logger . info ( 'Search glances.conf file in {}' . format ( config_file ) ) if os . path . exists ( config_file ) : try : with open ( config_file , encoding = 'utf-8' ) as f : self . parser . read_file ( f ) self . parser . read ( f ) logger . info ( "Read configuration file '{}'" . format ( config_file ) ) except UnicodeDecodeError as err : logger . error ( "Can not read configuration file '{}': {}" . format ( config_file , err ) ) sys . exit ( 1 ) self . _loaded_config_file = config_file break if not self . parser . has_section ( 'quicklook' ) : self . parser . add_section ( 'quicklook' ) self . set_default_cwc ( 'quicklook' , 'cpu' ) self . set_default_cwc ( 'quicklook' , 'mem' ) self . set_default_cwc ( 'quicklook' , 'swap' ) if not self . parser . has_section ( 'cpu' ) : self . parser . add_section ( 'cpu' ) self . set_default_cwc ( 'cpu' , 'user' ) self . set_default_cwc ( 'cpu' , 'system' ) self . set_default_cwc ( 'cpu' , 'steal' ) iowait_bottleneck = ( 1.0 / multiprocessing . cpu_count ( ) ) * 100.0 self . set_default_cwc ( 'cpu' , 'iowait' , [ str ( iowait_bottleneck - ( iowait_bottleneck * 0.20 ) ) , str ( iowait_bottleneck - ( iowait_bottleneck * 0.10 ) ) , str ( iowait_bottleneck ) ] ) ctx_switches_bottleneck = ( 500000 * 0.10 ) * multiprocessing . cpu_count ( ) self . set_default_cwc ( 'cpu' , 'ctx_switches' , [ str ( ctx_switches_bottleneck - ( ctx_switches_bottleneck * 0.20 ) ) , str ( ctx_switches_bottleneck - ( ctx_switches_bottleneck * 0.10 ) ) , str ( ctx_switches_bottleneck ) ] ) if not self . parser . has_section ( 'percpu' ) : self . parser . add_section ( 'percpu' ) self . set_default_cwc ( 'percpu' , 'user' ) self . set_default_cwc ( 'percpu' , 'system' ) if not self . parser . has_section ( 'load' ) : self . parser . add_section ( 'load' ) self . set_default_cwc ( 'load' , cwc = [ '0.7' , '1.0' , '5.0' ] ) if not self . parser . has_section ( 'mem' ) : self . parser . add_section ( 'mem' ) self . set_default_cwc ( 'mem' ) if not self . parser . has_section ( 'memswap' ) : self . parser . add_section ( 'memswap' ) self . set_default_cwc ( 'memswap' ) if not self . parser . has_section ( 'network' ) : self . parser . add_section ( 'network' ) self . set_default_cwc ( 'network' , 'rx' ) self . set_default_cwc ( 'network' , 'tx' ) if not self . parser . has_section ( 'fs' ) : self . parser . add_section ( 'fs' ) self . set_default_cwc ( 'fs' ) if not self . parser . has_section ( 'sensors' ) : self . parser . add_section ( 'sensors' ) self . set_default_cwc ( 'sensors' , 'temperature_core' , cwc = [ '60' , '70' , '80' ] ) self . set_default_cwc ( 'sensors' , 'temperature_hdd' , cwc = [ '45' , '52' , '60' ] ) self . set_default_cwc ( 'sensors' , 'battery' , cwc = [ '80' , '90' , '95' ] ) if not self . parser . has_section ( 'processlist' ) : self . parser . add_section ( 'processlist' ) self . set_default_cwc ( 'processlist' , 'cpu' ) self . set_default_cwc ( 'processlist' , 'mem' )
Read the config file, if it exists. Using defaults otherwise.