示例#1
0
    def __init__(self, config):
        self.config = config
        DASWebManager.__init__(self, config)
        self.version = __version__
        self.methods = {}
        self.methods['GET'] = {
            'request': {
                'args': ['idx', 'limit', 'query', 'skey', 'order'],
                'call': self.request,
                'version': __version__
            },
            'nresults': {
                'args': ['query'],
                'call': self.nresults,
                'version': __version__
            },
            'records': {
                'args': ['query', 'count', 'collection'],
                'call': self.records,
                'version': __version__
            },
            'status': {
                'args': ['query'],
                'call': self.status,
                'version': __version__
            },
        }
        self.methods['POST'] = {
            'create': {
                'args': ['query', 'expire'],
                'call': self.create,
                'version': __version__
            }
        }
        self.methods['PUT'] = {
            'replace': {
                'args': ['query', 'expire'],
                'call': self.replace,
                'version': __version__
            }
        }
        self.methods['DELETE'] = {
            'delete': {
                'args': ['query'],
                'call': self.delete,
                'version': __version__
            }
        }

        try:
            # WMCore/WebTools
            rest = RESTModel(config)
            rest.methods = self.methods  # set RESTModel methods
            self.model = self  # re-reference model to my class
            self.model.handler = rest.handler  # reference handler to RESTModel
            cdict = self.config.dictionary_()
            self.base = '/rest'
        except:
            cdict = {}
            self.base = ''

        self.dascore = DASCore()
        dbhost = self.dascore.dasconfig['mongocache_dbhost']
        dbport = self.dascore.dasconfig['mongocache_dbport']
        capped_size = self.dascore.dasconfig['mongocache_capped_size']
        self.con = Connection(dbhost, dbport)
        if 'logging' not in self.con.database_names():
            db = self.con['logging']
            options = {'capped': True, 'size': capped_size}
            db.create_collection('db', options)
            self.warning('Created logging.db, size=%s' % capped_size)
        self.col = self.con['logging']['db']
        sleep = cdict.get('sleep', 2)
        verbose = cdict.get('verbose', None)
        iconfig = {
            'sleep': sleep,
            'verbose': verbose,
            'logger': self.dascore.logger
        }
        self.cachemgr = DASCacheMgr(iconfig)
        thread.start_new_thread(self.cachemgr.worker, (worker, ))
        msg = 'DASCacheMode::init, host=%s, port=%s, capped_size=%s' \
                % (dbhost, dbport, capped_size)
        self.dascore.logger.debug(msg)
        print(msg)