Пример #1
0
config.TaskArchiver.uploadPublishDir = None
config.TaskArchiver.userFileCacheURL = 'http://USERFILECACHEHOST:UFCPORT/userfilecache/'
# set to False couch data if request mgr is not used (Tier0, PromptSkiming)
config.TaskArchiver.useReqMgrForCompletionCheck = True
config.TaskArchiver.localCouchURL = "%s/%s" % (
    config.JobStateMachine.couchurl, config.JobStateMachine.couchDBName)
config.TaskArchiver.localQueueURL = "%s/%s" % (
    config.WorkQueueManager.couchurl, config.WorkQueueManager.dbname)
config.TaskArchiver.localWMStatsURL = "%s/%s" % (
    config.JobStateMachine.couchurl, config.JobStateMachine.jobSummaryDBName)
config.TaskArchiver.centralWMStatsURL = "Central WMStats URL"
config.TaskArchiver.DataKeepDays = 0.125  # delete after 3 hours
config.TaskArchiver.cleanCouchInterval = 60 * 20  # 20 min
config.TaskArchiver.ReqMgrServiceURL = "ReqMgr rest service"

config.webapp_('WMBSService')
config.WMBSService.default_expires = 0
config.WMBSService.componentDir = os.path.join(config.General.workDir,
                                               "WMBSService")
config.WMBSService.Webtools.port = wmbsServicePort
config.WMBSService.Webtools.host = serverHostName
config.WMBSService.Webtools.environment = "devel"
config.WMBSService.templates = os.path.join(getWMBASE(),
                                            'src/templates/WMCore/WebTools')
config.WMBSService.admin = config.Agent.contact
config.WMBSService.title = 'WMBS Data Service'
config.WMBSService.description = 'Provide WMBS related service call'

config.WMBSService.section_("security")
config.WMBSService.security.dangerously_insecure = True
Пример #2
0
config.Agent.useMsgService = False
config.Agent.useTrigger = False
config.Agent.useHeartbeat = False

config.section_("JobStateMachine")
config.JobStateMachine.couchurl = couchURL
config.JobStateMachine.configCacheDBName = configCacheDBName

config.section_("General")
config.General.workDir = workDirectory

config.section_("CoreDatabase")
config.CoreDatabase.connectUrl = databaseUrl
config.CoreDatabase.socket = databaseSocket

config.webapp_("reqmgr")
config += reqMgrConfig(
    port = reqMgrPort,
    reqMgrHost = serverHostName,
    user = userName,
    couchurl = couchURL,
    componentDir = os.path.join(config.General.workDir, "ReqMgr"),
    workloadCouchDB = reqMgrDBName,
    configCouchDB = configCacheDBName,
    wmstatCouchDB = wmstatDBName,
    connectURL = databaseUrl,
    startup = "wmcoreD")

config.reqmgr.admin = userEmail
config.reqmgr.section_("security")
config.reqmgr.security.dangerously_insecure = True
Пример #3
0
config.TaskArchiver.requireCouch  = True
config.TaskArchiver.uploadPublishInfo = False
config.TaskArchiver.uploadPublishDir  = None
config.TaskArchiver.userFileCacheURL = 'http://USERFILECACHEHOST:UFCPORT/userfilecache/'
# set to False couch data if request mgr is not used (Tier0, PromptSkiming)
config.TaskArchiver.useReqMgrForCompletionCheck = True
config.TaskArchiver.localCouchURL = "%s/%s" % (config.JobStateMachine.couchurl,  config.JobStateMachine.couchDBName)
config.TaskArchiver.localQueueURL = "%s/%s" % (config.WorkQueueManager.couchurl, config.WorkQueueManager.dbname)
config.TaskArchiver.localWMStatsURL = "%s/%s" % (config.JobStateMachine.couchurl, config.JobStateMachine.jobSummaryDBName)
config.TaskArchiver.DataKeepDays = 0.125 # couhch history keeping days.
config.TaskArchiver.cleanCouchInterval = 60 * 20 # 20 min
config.TaskArchiver.ReqMgrServiceURL = "ReqMgr rest service"
config.TaskArchiver.ReqMgr2ServiceURL = "ReqMgr2 rest service"
config.TaskArchiver.archiveDelayHours = 24 # delay the archiving so monitor can still show. default 24 hours

config.webapp_('WMBSService')
config.WMBSService.default_expires = 0
config.WMBSService.componentDir = os.path.join(config.General.workDir, "WMBSService")
config.WMBSService.Webtools.port = wmbsServicePort
config.WMBSService.Webtools.host = serverHostName
config.WMBSService.Webtools.environment = "devel"
config.WMBSService.templates = os.path.join(getWMBASE(), 'src/templates/WMCore/WebTools')
config.WMBSService.admin = config.Agent.contact
config.WMBSService.title = 'WMBS Data Service'
config.WMBSService.description = 'Provide WMBS related service call'

config.WMBSService.section_("security")
config.WMBSService.security.dangerously_insecure = True

config.WMBSService.section_('views')
active = config.WMBSService.views.section_('active')
Пример #4
0
def reqMgrConfig(componentDir=basedir + "/var",
                 installation=os.environ["WMCORE_ROOT"],
                 port=8240,
                 user=None,
                 reqMgrHost="http://%s:%d" %
                 (socket.gethostname().lower(), 8240),
                 proxyBase=None,
                 couchurl=os.getenv("COUCHURL"),
                 yuiroot="/reqmgr/yuiserver/yui",
                 configCouchDB='reqmgr_config_cache',
                 workloadCouchDB='reqmgr_workload_cache',
                 workloadSummaryCouchDB="workloadsummary",
                 wmstatCouchDB="wmstats",
                 acdcCouchDB="acdcserver",
                 connectURL=None,
                 startup="Root.py",
                 addMonitor=True):

    config = Configuration()
    reqMgrHtml = os.path.join(installation, 'data/html/RequestManager')
    reqMgrTemplates = os.path.join(
        installation, 'data/templates/WMCore/WebTools/RequestManager')
    reqMgrJavascript = os.path.join(installation, 'data/javascript')
    globalOverviewTemplates = os.path.join(
        installation, 'data/templates/WMCore/WebTools/GlobalMonitor')
    globalOverviewJavascript = reqMgrJavascript
    globalOverviewHtml = os.path.join(installation, 'data/html')

    if startup == "Root.py":
        # CMS web mode of ReqMgr running
        config.component_("Webtools")
        config.Webtools.host = '0.0.0.0'
        config.Webtools.port = port
        config.Webtools.application = "reqmgr"
        if (proxyBase):
            config.Webtools.proxy_base = proxy_base
        config.Webtools.environment = 'production'
        config.component_('reqmgr')
        from ReqMgrSecrets import connectUrl
        config.section_("CoreDatabase")
        #read from Secrets file
        config.CoreDatabase.connectUrl = connectUrl
        config.reqmgr.section_('database')
        config.reqmgr.database.connectUrl = connectUrl
    else:
        # localhost, via wmcoreD ReqMgr running
        # startup = "wmcoreD"
        config.webapp_("reqmgr")
        config.reqmgr.Webtools.host = '0.0.0.0'
        config.reqmgr.Webtools.port = port
        config.reqmgr.Webtools.environment = 'devel'
        config.reqmgr.database.connectUrl = connectURL

    config.reqmgr.componentDir = componentDir
    config.reqmgr.templates = reqMgrTemplates
    config.reqmgr.html = reqMgrHtml
    config.reqmgr.javascript = reqMgrJavascript
    config.reqmgr.admin = '*****@*****.**'
    config.reqmgr.title = 'CMS Request Manager'
    config.reqmgr.description = 'CMS Request Manager'
    config.reqmgr.couchUrl = couchurl
    config.reqmgr.configDBName = configCouchDB
    config.reqmgr.workloadDBName = workloadCouchDB
    config.reqmgr.wmstatDBName = wmstatCouchDB
    config.reqmgr.acdcDBName = acdcCouchDB
    config.reqmgr.security_roles = [
        'Admin', 'Developer', 'Data Manager', 'developer', 'admin',
        'data-manager'
    ]
    config.reqmgr.yuiroot = yuiroot

    views = config.reqmgr.section_('views')
    active = views.section_('active')

    active.section_('view')
    active.view.object = 'WMCore.HTTPFrontEnd.RequestManager.ReqMgrBrowser'

    active.section_('admin')
    active.admin.object = 'WMCore.HTTPFrontEnd.RequestManager.Admin'
    active.section_('approve')
    active.approve.object = 'WMCore.HTTPFrontEnd.RequestManager.Approve'
    active.section_('assign')
    active.assign.object = 'WMCore.HTTPFrontEnd.RequestManager.Assign'
    active.section_('closeout')
    active.closeout.object = 'WMCore.HTTPFrontEnd.RequestManager.CloseOut'
    active.section_('announce')
    active.announce.object = 'WMCore.HTTPFrontEnd.RequestManager.Announce'

    active.section_('reqMgr')
    active.reqMgr.section_('model')
    active.reqMgr.section_('formatter')
    active.reqMgr.object = 'WMCore.WebTools.RESTApi'
    active.reqMgr.model.object = 'WMCore.HTTPFrontEnd.RequestManager.ReqMgrRESTModel'
    active.reqMgr.default_expires = 0  # no caching
    active.reqMgr.formatter.object = 'WMCore.WebTools.RESTFormatter'
    active.reqMgr.templates = os.path.join(installation,
                                           'data/templates/WMCore/WebTools')
    #deprecate the old interface
    active.section_('rest')
    active.rest.section_('model')
    active.rest.section_('formatter')
    active.rest.object = 'WMCore.WebTools.RESTApi'
    active.rest.model.object = 'WMCore.HTTPFrontEnd.RequestManager.ReqMgrRESTModel'
    active.rest.default_expires = 0  # no caching
    active.rest.formatter.object = 'WMCore.WebTools.RESTFormatter'
    active.rest.templates = os.path.join(installation,
                                         'data/templates/WMCore/WebTools')

    active.section_('create')
    active.create.object = 'WMCore.HTTPFrontEnd.RequestManager.WebRequestSchema'
    active.create.requestor = user
    active.create.cmsswDefaultVersion = 'CMSSW_5_2_5'

    if addMonitor:
        active.section_('GlobalMonitor')
        active.GlobalMonitor.object = 'WMCore.HTTPFrontEnd.GlobalMonitor.GlobalMonitorPage'
        active.GlobalMonitor.templates = globalOverviewTemplates
        active.GlobalMonitor.javascript = globalOverviewJavascript
        active.GlobalMonitor.html = globalOverviewHtml
        active.GlobalMonitor.serviceLevel = 'RequestManager'

        active.section_('monitorSvc')
        active.monitorSvc.serviceURL = "%s/reqmgr/reqMgr" % reqMgrHost
        active.monitorSvc.serviceLevel = active.GlobalMonitor.serviceLevel
        active.monitorSvc.workloadSummaryCouchURL = "%s/%s" % (
            couchurl, workloadSummaryCouchDB)
        active.monitorSvc.section_('model')
        active.monitorSvc.section_('formatter')
        active.monitorSvc.object = 'WMCore.WebTools.RESTApi'
        active.monitorSvc.model.object = 'WMCore.HTTPFrontEnd.GlobalMonitor.GlobalMonitorRESTModel'
        active.monitorSvc.default_expires = 0  # no caching
        active.monitorSvc.formatter.object = 'WMCore.WebTools.RESTFormatter'
        active.monitorSvc.template = os.path.join(
            installation, 'data/templates/WMCore/WebTools')

    return config
Пример #5
0
config.General.workDir = os.environ['DBS3_ROOT']

#CoreDatabase section is required by WMCore. 
config.section_("CoreDatabase")
# User specific parameter
config.CoreDatabase.version = DBSVersion
config.CoreDatabase.dbowner = databaseOwner
#mySql
config.CoreDatabase.connectUrl = 'mysql://*****:*****@cmssrv18.fnal.gov:3307/CMS_DBS3'
config.CoreDatabase.engineParameters = {'pool_size': 50, 'max_overflow': 10, 'pool_timeout':200 }
#Oracle
#config.CoreDatabase.connectUrl = 'oracle://*****:*****@cmscald'
#config.CoreDatabase.engineParameters = {'pool_size': 15, 'max_overflow': 10, 'pool_timeout': 200 }

#config web server. These are required fields by WMCore althrough some of them are useless.
config.webapp_("cmsdbs")
config.cmsdbs.componentDir = config.General.workDir + "/Logs/DBSServer"
config.cmsdbs.server.host = "::"
config.cmsdbs.server.port = 8688
config.cmsdbs.templates = WMCore.WMInit.getWMBASE() + '/src/templates/WMCore/WebTools'
config.cmsdbs.admin = "*****@*****.**"
config.cmsdbs.title = 'DBS Server'
config.cmsdbs.dbowner = databaseOwner
config.cmsdbs.description = 'CMS DBS Service'
config.cmsdbs.default_expires=300
config.cmsdbs.section_('views')
active=config.cmsdbs.views.section_('active')

#DBS server page/view
DBS = active.section_('DBS')
DBS.object = 'WMCore.WebTools.RESTApi'
# User specific parameter
config.CoreDatabase.version = DBSVersion
config.CoreDatabase.dbowner = databaseOwner
#mySql
#config.CoreDatabase.connectUrl = 'mysql://*****:*****@host.fnal.gov:port/CMS_DBS3'
#config.CoreDatabase.engineParameters = {'pool_size': 50, 'max_overflow': 10, 'pool_timeout':200 }
#Oracle
config.CoreDatabase.connectUrl = 'oracle://*****:*****@dbname'
config.CoreDatabase.engineParameters = {
    'pool_size': 15,
    'max_overflow': 10,
    'pool_timeout': 200
}

#config web server. These are required fields by WMCore althrough some of them are useless.
config.webapp_("cmsdbs")
config.cmsdbs.section_("security")
config.cmsdbs.security.dangerously_insecure = True
config.cmsdbs.componentDir = config.General.workDir + "/Logs/DBSServer"
config.cmsdbs.section_("Webtools")
config.cmsdbs.Webtools.host = "::"
config.cmsdbs.Webtools.port = 8688
"""
#this configures access and error files for cherrypy, but cherrypy put both access and error logs to
#sys.stderr so access log is not used in cherrypy. in Daemon/Create.py, it hard codeed sys.stderr to 
#(workdir, "stderr.log") and sys.stdout to (workdir, "stdout.log"). So redirect to user defined log files 
# will created double log files if we start it as a daemon using wmcoreD.

config.cmsdbs.Webtools.access_log_file = os.environ['DBS3_ROOT'] +"/Logs/cms_dbs_writer_access.log"
config.cmsdbs.Webtools.error_log_file = os.environ['DBS3_ROOT'] +"/Logs/cms_dbs_writer_error.log"
"""
config.Agent.hostName = serverHostName
config.Agent.contact = userEmail
config.Agent.teamName = teamName
config.Agent.agentName = agentName
config.Agent.useMsgService = False
config.Agent.useTrigger = False
config.Agent.useHeartbeat = False

config.section_("General")
config.General.workDir = workDirectory

config.section_("CoreDatabase")
config.CoreDatabase.connectUrl = databaseUrl
config.CoreDatabase.socket = databaseSocket

config.webapp_("ReqMgr")
reqMgrUrl = "http://%s:%s" % (serverHostName, reqMgrPort)
config.ReqMgr.componentDir = os.path.join(config.General.workDir, "ReqMgr")
config.ReqMgr.Webtools.host = serverHostName
config.ReqMgr.Webtools.port = reqMgrPort
config.ReqMgr.Webtools.environment = "devel"
config.ReqMgr.templates = os.path.join(getWMBASE(),
                                       "src/templates/WMCore/WebTools/RequestManager")
config.ReqMgr.requestor = userName
config.ReqMgr.admin = userEmail
config.ReqMgr.title = "CMS Request Manager"
config.ReqMgr.description = "CMS Request Manager"
config.ReqMgr.couchURL = couchURL
config.ReqMgr.default_expires = 0
config.ReqMgr.yuiroot = yuiRoot
config.ReqMgr.couchUrl = couchURL
Пример #8
0
def reqMgrConfig(
    componentDir =  basedir + "/var",
    installation = os.environ["WMCORE_ROOT"],
    port = 8240,
    user = None,
    reqMgrHost = "http://%s:%d" % (socket.gethostname().lower(), 8240),
    proxyBase = None,
    couchurl = os.getenv("COUCHURL"),
    sitedb = 'https://cmsweb.cern.ch/sitedb/json/index/CEtoCMSName?name',
    dbs3 = 'http://vocms09.cern.ch:8989/dbs',
    yuiroot = "/reqmgr/yuiserver/yui",
    configCouchDB = 'reqmgr_config_cache',
    workloadCouchDB = 'reqmgr_workload_cache',
    workloadSummaryCouchDB = "workloadsummary",
    wmstatCouchDB = "wmstats",
    connectURL = None,
    startup = "Root.py",
    addMonitor = True):

    config = Configuration()
    reqMgrHtml = os.path.join(installation, 'data/html/RequestManager')
    reqMgrTemplates = os.path.join(installation, 'data/templates/WMCore/WebTools/RequestManager')
    reqMgrJavascript = os.path.join(installation, 'data/javascript')
    globalOverviewTemplates = os.path.join(installation, 'data/templates/WMCore/WebTools/GlobalMonitor')
    globalOverviewJavascript = reqMgrJavascript
    globalOverviewHtml = os.path.join(installation, 'data/html')

    if startup == "Root.py":
        config.component_("Webtools")
        config.Webtools.host = '0.0.0.0'
        config.Webtools.port = port
        config.Webtools.application = "reqmgr"
        if(proxyBase):
            config.Webtools.proxy_base = proxy_base
        config.Webtools.environment = 'production'
        config.component_('reqmgr')
        from ReqMgrSecrets import connectUrl
        config.section_("CoreDatabase")
        #read from Secrets file
        config.CoreDatabase.connectUrl = connectUrl
        config.reqmgr.section_('database')
        config.reqmgr.database.connectUrl = connectUrl
    else:
        config.webapp_("reqmgr")
        config.reqmgr.Webtools.host = '0.0.0.0'
        config.reqmgr.Webtools.port = port
        config.reqmgr.Webtools.environment = 'devel'
        config.reqmgr.database.connectUrl = connectURL

    config.reqmgr.componentDir = componentDir
    config.reqmgr.templates = reqMgrTemplates
    config.reqmgr.html = reqMgrHtml
    config.reqmgr.javascript = reqMgrJavascript
    config.reqmgr.admin = '*****@*****.**'
    config.reqmgr.title = 'CMS Request Manager'
    config.reqmgr.description = 'CMS Request Manager'
    config.reqmgr.couchUrl = couchurl
    config.reqmgr.configDBName = configCouchDB
    config.reqmgr.workloadDBName = workloadCouchDB
    config.reqmgr.wmstatDBName = wmstatCouchDB
    config.reqmgr.security_roles = ['Admin', 'Developer', 'Data Manager', 'developer', 'admin', 'data-manager']
    config.reqmgr.yuiroot = yuiroot
    config.reqmgr.dbs3=dbs3

    views = config.reqmgr.section_('views')
    active = views.section_('active')

    active.section_('view')
    active.view.object = 'WMCore.HTTPFrontEnd.RequestManager.ReqMgrBrowser'

    active.section_('admin')
    active.admin.object = 'WMCore.HTTPFrontEnd.RequestManager.Admin'
    active.section_('approve')
    active.approve.object = 'WMCore.HTTPFrontEnd.RequestManager.Approve'
    active.section_('assign')
    active.assign.object = 'WMCore.HTTPFrontEnd.RequestManager.Assign'
    active.assign.sitedb = sitedb
    active.section_('closeout')
    active.closeout.object = 'WMCore.HTTPFrontEnd.RequestManager.CloseOut'
    active.section_('announce')
    active.announce.object = 'WMCore.HTTPFrontEnd.RequestManager.Announce'

    active.section_('reqMgr')
    active.reqMgr.section_('model')
    active.reqMgr.section_('formatter')
    active.reqMgr.object = 'WMCore.WebTools.RESTApi'
    active.reqMgr.model.object = 'WMCore.HTTPFrontEnd.RequestManager.ReqMgrRESTModel'
    active.reqMgr.default_expires = 0 # no caching
    active.reqMgr.formatter.object = 'WMCore.WebTools.RESTFormatter'
    active.reqMgr.templates = os.path.join(installation, 'data/templates/WMCore/WebTools')
    #deprecate the old interface
    active.section_('rest')
    active.rest.section_('model')
    active.rest.section_('formatter')
    active.rest.object = 'WMCore.WebTools.RESTApi'
    active.rest.model.object = 'WMCore.HTTPFrontEnd.RequestManager.ReqMgrRESTModel'
    active.rest.default_expires = 0 # no caching
    active.rest.formatter.object = 'WMCore.WebTools.RESTFormatter'
    active.rest.templates = os.path.join(installation, 'data/templates/WMCore/WebTools')

    active.section_('create')
    active.create.object = 'WMCore.HTTPFrontEnd.RequestManager.WebRequestSchema'
    active.create.requestor = user
    active.create.cmsswDefaultVersion = 'CMSSW_5_2_5'

    if addMonitor:
        active.section_('GlobalMonitor')
        active.GlobalMonitor.object = 'WMCore.HTTPFrontEnd.GlobalMonitor.GlobalMonitorPage'
        active.GlobalMonitor.templates = globalOverviewTemplates
        active.GlobalMonitor.javascript = globalOverviewJavascript
        active.GlobalMonitor.html = globalOverviewHtml
        active.GlobalMonitor.serviceLevel = 'RequestManager'

        active.section_('monitorSvc')
        active.monitorSvc.serviceURL = "%s/reqmgr/reqMgr" % reqMgrHost
        active.monitorSvc.serviceLevel = active.GlobalMonitor.serviceLevel
        active.monitorSvc.workloadSummaryCouchURL = "%s/%s" % (couchurl, workloadSummaryCouchDB)
        active.monitorSvc.section_('model')
        active.monitorSvc.section_('formatter')
        active.monitorSvc.object = 'WMCore.WebTools.RESTApi'
        active.monitorSvc.model.object = 'WMCore.HTTPFrontEnd.GlobalMonitor.GlobalMonitorRESTModel'
        active.monitorSvc.default_expires = 0 # no caching
        active.monitorSvc.formatter.object = 'WMCore.WebTools.RESTFormatter'
        active.monitorSvc.template = os.path.join(installation, 'data/templates/WMCore/WebTools')

    active.section_('yuiserver')
    active.yuiserver.object = 'WMCore.WebTools.YUIServer'
    active.yuiserver.yuidir = os.getenv("YUI_ROOT")
    return config
config.component_("TaskArchiver")
config.TaskArchiver.namespace = "WMComponent.TaskArchiver.TaskArchiver"
config.TaskArchiver.componentDir = config.General.workDir + "/TaskArchiver"
config.TaskArchiver.logLevel = globalLogLevel
config.TaskArchiver.pollInterval = 240
config.TaskArchiver.timeOut = workflowArchiveTimeout
config.TaskArchiver.useWorkQueue = True
config.TaskArchiver.workloadSummaryCouchURL = workloadSummaryURL
config.TaskArchiver.workloadSummaryCouchDBName = workloadSummaryDB
config.TaskArchiver.histogramKeys = ["PeakValueRss", "PeakValueVsize", "TotalJobTime", "AvgEventTime"]
config.TaskArchiver.requireCouch = True
config.TaskArchiver.uploadPublishInfo = False
config.TaskArchiver.uploadPublishDir = None
config.TaskArchiver.userFileCacheURL = "http://USERFILECACHEHOST:UFCPORT/userfilecache/"

config.webapp_("WMBSService")
config.WMBSService.default_expires = 0
config.WMBSService.componentDir = os.path.join(config.General.workDir, "WMBSService")
config.WMBSService.Webtools.port = wmbsServicePort
config.WMBSService.Webtools.host = serverHostName
config.WMBSService.Webtools.environment = "devel"
config.WMBSService.templates = os.path.join(getWMBASE(), "src/templates/WMCore/WebTools")
config.WMBSService.admin = config.Agent.contact
config.WMBSService.title = "WMBS Data Service"
config.WMBSService.description = "Provide WMBS related service call"

config.WMBSService.section_("security")
config.WMBSService.security.dangerously_insecure = True

config.WMBSService.section_("views")
active = config.WMBSService.views.section_("active")
def reqMgrConfig(
    componentDir =  basedir + "/var",
    installation = os.environ["WMCORE_ROOT"],
    port = 8240,
    user = None,
    proxyBase = None,
    couchurl = os.getenv("COUCHURL"),
    yuiroot = "/reqmgr/yuiserver/yui",
    configCouchDB = 'reqmgr_config_cache',
    workloadCouchDB = 'reqmgr_workload_cache',
    wmstatCouchDB = "wmstats",
    acdcCouchDB = "acdcserver",
    connectURL = None,
    startup = "Root.py"):

    config = Configuration()
    reqMgrHtml = os.path.join(installation, 'data/html/RequestManager')
    reqMgrTemplates = os.path.join(installation, 'data/templates/WMCore/WebTools/RequestManager')
    reqMgrJavascript = os.path.join(installation, 'data/javascript')   

    if startup == "Root.py":
        # CMS web mode of ReqMgr running
        config.component_("Webtools")
        config.Webtools.host = '0.0.0.0'
        config.Webtools.port = port
        config.Webtools.application = "reqmgr"
        if(proxyBase):
            config.Webtools.proxy_base = proxyBase
        config.Webtools.environment = 'production'
        config.component_('reqmgr')
        from ReqMgrSecrets import connectUrl
        config.section_("CoreDatabase")
        #read from Secrets file
        config.CoreDatabase.connectUrl = connectUrl
        config.reqmgr.section_('database')
        config.reqmgr.database.connectUrl = connectUrl
    else:
        # localhost, via wmcoreD ReqMgr running
        # startup = "wmcoreD"
        config.webapp_("reqmgr")
        config.reqmgr.Webtools.host = '0.0.0.0'
        config.reqmgr.Webtools.port = port
        config.reqmgr.Webtools.environment = 'devel'
        config.reqmgr.database.connectUrl = connectURL
        # workload summary update
        config.section_("WorkloadSummary")
        config.WorkloadSummary.couchurl = connectURL
        config.WorkloadSummary.database = "workloadsummary"                

    config.reqmgr.componentDir = componentDir
    config.reqmgr.templates = reqMgrTemplates
    config.reqmgr.html = reqMgrHtml
    config.reqmgr.javascript = reqMgrJavascript
    config.reqmgr.admin = '*****@*****.**'
    config.reqmgr.title = 'CMS Request Manager'
    config.reqmgr.description = 'CMS Request Manager'
    config.reqmgr.couchUrl = couchurl
    config.reqmgr.configDBName = configCouchDB
    config.reqmgr.workloadDBName = workloadCouchDB
    config.reqmgr.wmstatDBName = wmstatCouchDB
    config.reqmgr.acdcDBName = acdcCouchDB
    config.reqmgr.security_roles = ['Admin', 'Developer', 'Data Manager', 'developer', 'admin', 'data-manager']
    config.reqmgr.yuiroot = yuiroot

    views = config.reqmgr.section_('views')
    active = views.section_('active')

    active.section_('view')
    active.view.object = 'WMCore.HTTPFrontEnd.RequestManager.ReqMgrBrowser'

    active.section_('admin')
    active.admin.object = 'WMCore.HTTPFrontEnd.RequestManager.Admin'
    active.section_('approve')
    active.approve.object = 'WMCore.HTTPFrontEnd.RequestManager.Approve'
    active.section_('assign')
    active.assign.object = 'WMCore.HTTPFrontEnd.RequestManager.Assign'
    active.section_('closeout')
    active.closeout.object = 'WMCore.HTTPFrontEnd.RequestManager.CloseOut'
    active.section_('announce')
    active.announce.object = 'WMCore.HTTPFrontEnd.RequestManager.Announce'

    active.section_('reqMgr')
    active.reqMgr.section_('model')
    active.reqMgr.section_('formatter')
    active.reqMgr.object = 'WMCore.WebTools.RESTApi'
    active.reqMgr.model.object = 'WMCore.HTTPFrontEnd.RequestManager.ReqMgrRESTModel'
    active.reqMgr.default_expires = 0 # no caching
    active.reqMgr.formatter.object = 'WMCore.WebTools.RESTFormatter'
    active.reqMgr.templates = os.path.join(installation, 'data/templates/WMCore/WebTools')
    #deprecate the old interface
    active.section_('rest')
    active.rest.section_('model')
    active.rest.section_('formatter')
    active.rest.object = 'WMCore.WebTools.RESTApi'
    active.rest.model.object = 'WMCore.HTTPFrontEnd.RequestManager.ReqMgrRESTModel'
    active.rest.default_expires = 0 # no caching
    active.rest.formatter.object = 'WMCore.WebTools.RESTFormatter'
    active.rest.templates = os.path.join(installation, 'data/templates/WMCore/WebTools')

    active.section_('create')
    active.create.object = 'WMCore.HTTPFrontEnd.RequestManager.WebRequestSchema'
    active.create.requestor = user
    active.create.cmsswDefaultVersion = 'CMSSW_5_2_5'

    return config