コード例 #1
0
class TestMongoManager(TestDatabase):

    def setUp(self):
        super(TestMongoManager, self).setUp()

        self.settings = Configuration().get_settings()
        self.settings['database'] = {
                    'host': 'localhost',
                    'port': 27017,
                    'db_name': 'test_db'
                }
        self.settings['logger'] = {
                    'max_size': 10000000,
                    'logs_backup_count': 3,
                    'levels': {
                        'mongo': 'DEBUG'
                    }
                }

        self.manager = MongoDatabaseManager(self.settings)

    def tearDown(self):
        self.manager.drop_collection('test')

    def test_mongo(self):
        self.routine()
コード例 #2
0
ファイル: server.py プロジェクト: GeorgeTG/uthportal-server
def main():
    global db_manager, settings, logger, app, user_manager,pushd_client

    settings = Configuration().get_settings()
    logger = get_logger('server', settings)

    logger.info('Connecting to database...')
    db_manager = MongoDatabaseManager(settings)
    db_manager.connect()

    user_manager = UserManager(settings, db_manager)
    pushd_client = PushdClient(settings, db_manager, event_templates)

    server_settings = settings['server']
    app.run(host = server_settings['host'], port = server_settings['port'])
コード例 #3
0
ファイル: __init__.py プロジェクト: GeorgeTG/uthportal-server
    def __init__(self):
        self.configuration = Configuration()
        self.settings = self.configuration.get_settings()
        self.logger = get_logger('uthportal', self.settings)

        self.db_manager = MongoDatabaseManager(self.settings)
        if not self.db_manager.connect():
            self.logger.info('Exiting...')
            sys.exit(1)

        self.pushd_client = PushdClient(
                self.settings,
                self.db_manager,
                event_templates
        )

        self.load_tasks()

        self.scheduler = Scheduler(
                self.tasks,
                self.settings)
コード例 #4
0
ファイル: __init__.py プロジェクト: GeorgeTG/uthportal-server
class UthPortal(object):

    def __init__(self):
        self.configuration = Configuration()
        self.settings = self.configuration.get_settings()
        self.logger = get_logger('uthportal', self.settings)

        self.db_manager = MongoDatabaseManager(self.settings)
        if not self.db_manager.connect():
            self.logger.info('Exiting...')
            sys.exit(1)

        self.pushd_client = PushdClient(
                self.settings,
                self.db_manager,
                event_templates
        )

        self.load_tasks()

        self.scheduler = Scheduler(
                self.tasks,
                self.settings)


    def load_tasks(self):
        self.logger.info("Loading modules...")
        current_path =  dirname(abspath(__file__))
        full_libary_path = current_path + '/' + self.settings['library_path']
        self.logger.debug('Modules will be loaded from "%s"' % full_libary_path)

        tasks = {}
        tasks_num = 0
        for loader, module, is_pkg in walk_packages(
                [full_libary_path],
                onerror = self._import_error):
            #Load next package
            current_module = loader.find_module(module).load_module(module)

            if not is_pkg:
                instance = None
                class_name = None
                #list all classes
                for name, obj in getmembers(current_module):
                    # class name must be contained in module name e.g.
                    # module name: inf.courses.ce121
                    # class name: ce121
                    # this is to avoid importing interface/base classes
                    if isclass(obj) and (name in current_module.__name__):
                        self.logger.debug('Importing: %s object: %s' % (name, obj))
                        tasks_num += 1
                        class_name = name
                        instance = obj(current_module.__name__,
                                        self.settings,
                                        self.db_manager,
                                        self.pushd_client
                                        )

                modules = module.split('.')

                current_task = tasks
                for task in modules:
                    if task not in current_task:
                        if task == class_name:
                            current_task[task] = instance
                        else:
                            current_task[task] = {}
                    current_task = current_task[task]

        self.tasks = tasks
        self.logger.info('Loaded %s tasks' % tasks_num)

    def _import_error(self, name):
        self.logger.error("Error importing module %s" % name)
        error_type, value, traceback = sys.exc_info()
        self.logger.error(traceback)

    def start(self):
        self._start_scheduler()

    def stop(self):
        self.db_manager.disconnect()
        self._save_settings()

    def _start_scheduler(self):
        self.logger.debug('Starting the scheduler')

        self.scheduler.init()
        self.scheduler.start()

        self.logger.debug('Scheduler started successfully!')

    def _force_update(self, job_id=None):
        self.scheduler.force_update(job_id)

    def _stop_scheduler(self):
        pass

    def _load_settings(self):
        self.configuration.load_settings()
        self.settings = self.configuration.get_settings()

    def _save_settings(self):
        self.configuration.set_settings(self.settings)
        self.configuration.save_settings()