import logging import logging.config from ConfigParser import SafeConfigParser from StringIO import StringIO logger = logging.getLogger(__name__) class NodeConfigParser(object): """ConfigParser for ccnode config file.""" def __init__(self, file_path): config = SafeConfigParser() config.read(file_path) config = dict(config.items('node')) # ccserver settings try: self.server_host = config['address'] except KeyError: logger.error('cc-server address not specified in config file') raise self.server_port = int(config.get('port', 1984)) try: self.server_user = config['login'] except KeyError: logger.error('cc-server login not specified in config file') raise try: self.server_passwd = config['password'] except KeyError: logger.error('cc-server password not specified in config file') raise self.logging_level = int(config.get('verbosity', 0)) self.debug = True def configure_logging(level): level = { 0: 'ERROR', 1: 'WARNING', 2: 'INFO', 3: 'DEBUG', }[level] # create config parser for logging configuration logging.config.fileConfig(StringIO(""" [loggers] keys=root,ccnode,sjrpc [handlers] # keys=syslog keys=consoleHandler [formatters] keys=simpleFormatter [logger_root] level=ERROR # handlers=syslog handlers=consoleHandler [logger_ccnode] level=%s handlers= qualname=cloudcontrol.node [logger_sjrpc] level=ERROR handlers= qualname=sjrpc # [handler_syslog] # class=handlers.SysLogHandler # formatter=simpleFormatter # args=('/dev/log', handlers.SysLogHandler.LOG_DAEMON) [handler_consoleHandler] class=StreamHandler formatter=simpleFormatter args=(sys.stderr,) [formatter_simpleFormatter] format=cc-node - %%(asctime)s - %%(name)s - %%(levelname)s - %%(message)s """ % level))