Source code for riaps.utils.config

'''
Created on Nov 23, 2016

@author: riaps
'''

import configparser
import os
from os.path import join
import logging
import logging.config


[docs]class Config(object): ''' Configuration database for RIAPS tools Including logging configuration ''' TARGET_USER = 'riaps' SEND_TIMEOUT = -1 RECV_TIMEOUT = -1 SEND_HWM = 100 # Send water mark RECV_HWM = 100 # Receive high water mark NIC_NAME = None NIC_RATE = '118kbps' # 90% of 1 gigabits per sec NIC_CEIL = '131kbps' # 1 gigabits per sec DISCO_TYPE = 'redis' # or 'opendht' CTRL_DEBUG_SERVER = '' DEPLO_DEBUG_SERVER = '' DISCO_DEBUG_SERVER = '' ACTOR_DEBUG_SERVER = '' DEVICE_DEBUG_SERVER = '' APP_LOGS = '' CTRL_HEARTBEAT = True NODE_HEARTBEAT = True NETMON = True SECURITY = True def __init__(self): ''' Construct the configuration object that configures the logger and various system parameters. The logger and system configuration are set according to the content of the files $RIAPSHOME/etc/riaps-log.conf and $RIAPSHOME/etc/riaps.conf ''' riaps_folder = os.getenv('RIAPSHOME') if riaps_folder == None: print("RIAPS Configuration - RIAPSHOME is not set, using ./") riaps_folder = './' riaps_logconf = join(riaps_folder, 'etc/riaps-log.conf') try: logging.config.fileConfig(riaps_logconf) except Exception as e: logging.warning(' Log configuration file %s has a problem: %s.' % (riaps_logconf, str(e))) pass logger = logging.getLogger(__name__) riaps_conf = join(riaps_folder, 'etc/riaps.conf') c_parse = configparser.ConfigParser() try: files = c_parse.read(riaps_conf) except Exception as e: logger.warning(' System configuration file %s has a problem: %s.' % (riaps_conf, str(e))) return riaps_section = 'RIAPS' if files == [] or not c_parse.has_section(riaps_section): logger.warning(' System configuration file %s not found or invalid file.' % (riaps_conf)) return try: for item in c_parse.items(riaps_section): key, arg = item opt = key.upper() if hasattr(Config, opt): optType = type(getattr(Config, opt)) optValue = getattr(Config, opt) try: if optType == str: optValue = str(arg) elif optType == int: optValue = int(arg) elif optType == bool: try: optValue = c_parse.getboolean(riaps_section, key) except: print (1) pass elif optType == float: optValue = float(arg) else: optValue = arg setattr(Config, opt, optValue) except: logger.warning('Formal and actual type of configuration argument %s differ %s - ignored' % (str(opt), str(optType))) except: logger.warning(' Error reading configuration file %s.' % (riaps_conf)) return