class Controller(object):
    def __init__(self, configfile="config/config.py"):
        # Create file logger
        LOG_FILENAME = "./log.txt"
        logging.basicConfig(filename=LOG_FILENAME, filemode="w", level=logging.DEBUG)
        
        # Create console logger
        console = logging.StreamHandler(sys.stdout)
        console.setLevel(logging.INFO)
        formatter = logging.Formatter('%(name)-13s: %(levelname)-8s %(message)s')
        console.setFormatter(formatter)
        logging.getLogger('').addHandler(console)
        
        # Initialize
        self.logger = logging.getLogger("Controller")
        self.logger.debug("initializing")
        
        self.configfile = configfile
        
        # Create managers
        self.nodemanager = NodeManager()
        self.jobmanager = JobManager()
        self.filemanager = FileManager()
        
        # Read configuration file
        self.readConfig()
    
    def stop(self):
        self.nodemanager.stopAllNodes()
        logging.shutdown()

    def getNodeManager(self):
        return self.nodemanager
    
    def getJobManager(self):
        return self.jobmanager
    
    def getFileManager(self):
        return self.filemanager
        
    def readConfig(self):
        self.logger.info("parsing config file: %s" % self.configfile)
        configmodule = load_module(self.configfile)
        configmodule.config(ConfigProxy(self))
        
    def runAllJobs(self):
        runner = Runner(self)
        runner.runAllJobs()
 def __init__(self, configfile="config/config.py"):
     # Create file logger
     LOG_FILENAME = "./log.txt"
     logging.basicConfig(filename=LOG_FILENAME, filemode="w", level=logging.DEBUG)
     
     # Create console logger
     console = logging.StreamHandler(sys.stdout)
     console.setLevel(logging.INFO)
     formatter = logging.Formatter('%(name)-13s: %(levelname)-8s %(message)s')
     console.setFormatter(formatter)
     logging.getLogger('').addHandler(console)
     
     # Initialize
     self.logger = logging.getLogger("Controller")
     self.logger.debug("initializing")
     
     self.configfile = configfile
     
     # Create managers
     self.nodemanager = NodeManager()
     self.jobmanager = JobManager()
     self.filemanager = FileManager()
     
     # Read configuration file
     self.readConfig()