class Dispatcher(object): def __init__ (self, key, logger, app): self._log = KeyAdapter(key, logger) self._app = app for k in dir(self): try: val = getattr(self, k) (path, methods) = val.route except TypeError: continue except AttributeError: continue try: app.add_url_rule(path, path.replace("/", "_"), val, methods=methods) self._log.debug("Added route for: %s with method <%s>" % (path, k)) except Exception, e: self._log.exception("Adding URL Rule") continue
class Dispatcher(object): def __init__ (self, key, log): self._key = key self._log = KeyAdapter(key, log) def _dispatch (self, method, params): self._log.info("Called: <%s>" % (method)) if XMLRPC_LOGPARAMS: self._log.debug("Parameters: <%s>" % (str(params))) try: meth = getattr(self, "pub_%s" % (method)) except AttributeError, e: self._log.warning("Client called unknown method: <%s>" % (method)) try: return meth(*params) except Exception, e: if not hasattr(e, "_foam_logged"): self._log.exception("Call to known method <%s> failed!" % (method)) raise Exception(str(e))
class Dispatcher(object): def __init__(self, key, log): self._key = key self._log = KeyAdapter(key, log) def _dispatch(self, method, params): self._log.info("Called: <%s>" % (method)) if XMLRPC_LOGPARAMS: self._log.debug("Parameters: <%s>" % (str(params))) try: meth = getattr(self, "pub_%s" % (method)) except AttributeError, e: self._log.warning("Client called unknown method: <%s>" % (method)) try: return meth(*params) except Exception, e: if not hasattr(e, "_foam_logged"): self._log.exception("Call to known method <%s> failed!" % (method)) raise Exception(str(e))
class Dispatcher(object): def __init__(self, key, logger, app): self._log = KeyAdapter(key, logger) self._app = app for k in dir(self): try: val = getattr(self, k) (path, methods) = val.route except TypeError: continue except AttributeError: continue try: app.add_url_rule(path, path.replace("/", "_"), val, methods=methods) self._log.debug("Added route for: %s with method <%s>" % (path, k)) except Exception, e: self._log.exception("Adding URL Rule") continue
class _DB(object): def __init__(self): self._session = None self.log = KeyAdapter("ConfigDB", logging.getLogger("foam")) self._updateFuncs = {None: self._writeThrough} self._cfgItemsByKey = {} self._cfgItemsByID = {} self._attributesByID = {} self._attributesByName = {} self._usersByID = {} self._usersByName = {} self._rolesByID = {} self._rolesByName = {} if not os.path.exists(CONFIGDB_PATH): self.__initDBCore() self.importing = False @property def session(self): if self._session == None: self._session = scoped_session( sessionmaker(autocommit=False, autoflush=False, bind=engine, expire_on_commit=False)) if not self._session.is_active: self.log.warn("Rolling back inactive session") self._session.rollback() return self._session @session.deleter def session(self): self._session.remove() def close(self, sender, **extra): if self._session is not None: self._session.remove() self._session = None def connection(self): return self.session.connection() def commit(self): self.session.commit() def _writeThrough(self, key, newval): self.log.debug("Writing item (%s) with value (%s)" % (key, str(newval))) return newval def __initDBCore(self): self.log.info("No database found: initializing schema") metadata.drop_all() metadata.create_all() self.__addDefaultVars() def __addDefaultVars(self): try: import socket site_tag = None site_tag = socket.getfqdn() except Exception: pass citems = [] citems.append(ConfigItem().setKey("geni.max-lease").setValue( datetime.timedelta(weeks=2)).setDesc("Max sliver lease time"). setUpdateFuncName("foam.geni.lib.updateMaxLease")) citems.append( ConfigItem().setKey("geni.cert-dir").setValue(GENICERTDIR).setDesc( "Directory for trusted SLL root certificates.")) citems.append(ConfigItem().setKey("geni.site-tag").setValue( site_tag).setDesc("Site tag for GENI aggregates (used in URNs)"). setUpdateFuncName("foam.geni.lib.siteTagChange")) citems.append( ConfigItem().setKey("geni.approval.approve-on-creation").setValue( 0).setDesc("Approve slivers on creation.").setUpdateFuncName( "foam.geni.approval.setMode")) citems.append( ConfigItem().setKey("geni.openflow.analysis-engine").setValue( True).setDesc("Run analysis engine for openflow slivers"). setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey("geni.openflow.portgroups").setValue( None).setDesc("Internal Portgroups Storage").setUpdateFuncName( "foam.geni.approval.updatePortGroups")) citems.append(ConfigItem().setKey("geni.approval.user-urns").setValue( None).setDesc("Internal User URN Storage").setUpdateFuncName( "foam.geni.approval.updateUserURNs")) citems.append( ConfigItem().setKey("email.admin-addr").setValue(None).setDesc("")) citems.append(ConfigItem().setKey("email.smtp-server").setValue( None).setDesc("")) citems.append( ConfigItem().setKey("email.reply-to").setValue(None).setDesc("")) citems.append( ConfigItem().setKey("email.from").setValue(None).setDesc("")) citems.append(ConfigItem().setKey( "email.event.createsliver.admin").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.disablesliver.admin").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.rejectsliver.admin").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.json-deletesliver.admin").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.gapi-deletesliver.admin").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append( ConfigItem().setKey("email.event.renewsliver.admin").setValue(True) .setDesc("").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.approvesliver.admin").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.expiresliver.admin").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.expiresliverday.admin").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.expiresliverweek.admin").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.shutdownsliver.admin").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.pendingqueue.admin").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append( ConfigItem().setKey("email.event.createsliver.exp").setValue(True). setDesc("").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append( ConfigItem().setKey("email.event.disablesliver.exp").setValue(True) .setDesc("").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append( ConfigItem().setKey("email.event.rejectsliver.exp").setValue(True). setDesc("").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.json-deletesliver.exp").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.gapi-deletesliver.exp").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append( ConfigItem().setKey("email.event.renewsliver.exp").setValue(True). setDesc("").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append( ConfigItem().setKey("email.event.approvesliver.exp").setValue(True) .setDesc("").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append( ConfigItem().setKey("email.event.expiresliver.exp").setValue(True). setDesc("").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.expiresliverday.exp").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.expiresliverweek.exp").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append(ConfigItem().setKey( "email.event.shutdownsliver.exp").setValue(True).setDesc( "").setUpdateFuncName("foam.core.configdb.coerceBool")) citems.append( ConfigItem().setKey("site.admin.name").setValue(None).setDesc("")) citems.append( ConfigItem().setKey("site.admin.email").setValue(None).setDesc("")) citems.append( ConfigItem().setKey("site.admin.phone").setValue(None).setDesc("")) citems.append(ConfigItem().setKey("site.location.address").setValue( None).setDesc("")) citems.append(ConfigItem().setKey( "site.location.organization").setValue(None).setDesc("")) citems.append( ConfigItem().setKey("site.description").setValue(None).setDesc("")) citems.append(ConfigItem().setKey("site.attachments").setValue( {}).setDesc("").setUpdateFuncName( "foam.geni.peerdb.updateAttachments")) # citems.append(ConfigItem().setKey().setValue(None) # .setDesc("")) [self.createConfigItem(x) for x in citems] def initDB(self): self.__initDBCore() # Call init_config_db for all plugins def getConfigItemByID(self, cid): return self._cfgItemsByID.setdefault(cid, self.loadConfigItem(cid=cid)) def getConfigItemByKey(self, key): return self._cfgItemsByKey.setdefault(key, self.loadConfigItem(key=key)) def writeValue(self, item, value): u = tconfig.update().where(tconfig.c.id == item.id).values(value=value) conn = self.connection() result = conn.execute(u) self.commit() def updateDefinition(self, item): u = tconfig.update().where(tconfig.c.id == item.id).values( key=self.key, desc=item.desc, updatefunc=item.updatefunc) conn = self.connection() result = conn.execute(u) self.commit() def installConfigItem(self, item): try: oitem = self.getConfigItemByKey(item.key) if item.hasEquivalentDefinition(oitem): return else: oitem.updateDefinition(item) return except UnknownConfigKey, e: self.createConfigItem(item)