def start_mongo(bin, settings): """ Attempts to start a mongod process located at bin (or searches the path). Returns True if mongod appears to be working correctly, False if it had a problem. Registers an atexit handler which kills mongod. """ log.getChild("start_mongo").info("Starting {0}".format(bin)) args = [] for item, value in settings.iteritems(): if item.startswith("mongo.args."): args.extend(["--" + item[len("mongo.args."):], value]) dbpath = settings.get("mongo.dbpath", None) # args.extend(("--dbpath", "\"%s\"" % dbpath)) if dbpath and not exists(dbpath): makedirs(dbpath) # TODO: cStringIO this output, send it to a different logger mongo_logger = PythonizeMongoOutput(log.manager.getLogger("mongod")) try: log.info("Mongo args: {0}".format(args)) mongo_process = spawn(bin, args, logfile=mongo_logger, timeout=None) except ExceptionPexpect as e: if not e.value.startswith("The command was not found"): # Something weird happened that we don't know how to deal with raise # It doesn't exist return False @atexit.register def kill_mongo(): log.info("Killing MongoDB") mongo_process.kill(SIGKILL) log.info("Waiting for mongo startup (can be slow the first time)") possibilities = [EOF, "exception", "waiting for connections"] GOOD_STATE = len(possibilities) - 1 index = mongo_process.expect(possibilities) if index != GOOD_STATE: log.info("Mongod didn't reach '{0}' state".format( possibilities[GOOD_STATE])) log.info(" -- instead is '{0}'".format(possibilities[index])) mongo_process.kill(SIGKILL) return False return True
def start_mongo(bin, settings): """ Attempts to start a mongod process located at bin (or searches the path). Returns True if mongod appears to be working correctly, False if it had a problem. Registers an atexit handler which kills mongod. """ log.getChild("start_mongo").info("Starting {0}".format(bin)) args = [] for item, value in settings.iteritems(): if item.startswith("mongo.args."): args.extend(["--" + item[len("mongo.args."):], value]) dbpath = settings.get("mongo.dbpath", None) # args.extend(("--dbpath", "\"%s\"" % dbpath)) if dbpath and not exists(dbpath): makedirs(dbpath) # TODO: cStringIO this output, send it to a different logger mongo_logger = PythonizeMongoOutput(log.manager.getLogger("mongod")) try: log.info("Mongo args: {0}".format(args)) mongo_process = spawn(bin, args, logfile=mongo_logger, timeout=None) except ExceptionPexpect as e: if not e.value.startswith("The command was not found"): # Something weird happened that we don't know how to deal with raise # It doesn't exist return False @atexit.register def kill_mongo(): log.info("Killing MongoDB") mongo_process.kill(SIGKILL) log.info("Waiting for mongo startup (can be slow the first time)") possibilities = [EOF, "exception", "waiting for connections"] GOOD_STATE = len(possibilities) - 1 index = mongo_process.expect(possibilities) if index != GOOD_STATE: log.info("Mongod didn't reach '{0}' state".format(possibilities[GOOD_STATE])) log.info(" -- instead is '{0}'".format(possibilities[index])) mongo_process.kill(SIGKILL) return False return True
from weboot import log log = log.getChild("auto_mongo") import atexit import logging import sys from os import makedirs from os.path import exists, join as pjoin from signal import SIGKILL from pexpect import spawn, ExceptionPexpect, EOF import pymongo from pymongo.errors import ConnectionFailure class MongoStartFailure(RuntimeError): "Raised if we can't start mongo" class PythonizeMongoOutput(object): """ A logger used to intercept mongodb log messages and send them to python """ def __init__(self, logger, level=logging.DEBUG): self.logger, self.level = logger, level self.sub_loggers = {} self.buffer = [] self.append = self.buffer.append
from weboot import log; log = log.getChild("weboot.resources.root.ttree") import ROOT as R from .object import RootObject def extract_buffer(b, n): return [b[i] for i in xrange(n)] @log.trace() def draw_ttree(t, params, what): #test_entries = 1000 #every_n_events = t.GetEntries() // test_entries #selection = "Entry$ % {0} == 0".format(every_n_events) drawn = t.Draw(what, "1", "goff") #, test_entries) h = t.GetHistogram() log.info("Drawn {0} with {1} entries".format(what, drawn)) return h class DrawTTree(RootObject): @property def content(self): keys = [k.GetName() for k in self.obj.GetListOfLeaves()] def link(p): url = self.request.resource_url(self, p)
from contextlib import contextmanager from random import randint from subprocess import Popen, PIPE from tempfile import NamedTemporaryFile from thread import get_ident, allocate_lock from pyramid.response import Response import ROOT as R from rootpy import ROOTError from weboot import log log = log.getChild("renderable") from .actions import HasActions, action from .locationaware import LocationAware def renderer_view(context, request): log.debug("renderer_view {0}".format(context)) return context.content def context_renderable_as(context, format): """ Test if `context` can be rendered as `format`. Not a method of Renderable so that we can ask it of non-Renderables.
from weboot import log; log = log.getChild("auto_mongo") import atexit import logging import sys from os import makedirs from os.path import exists, join as pjoin from signal import SIGKILL from pexpect import spawn, ExceptionPexpect, EOF import pymongo from pymongo.errors import ConnectionFailure class MongoStartFailure(RuntimeError): "Raised if we can't start mongo" class PythonizeMongoOutput(object): """ A logger used to intercept mongodb log messages and send them to python """ def __init__(self, logger, level=logging.DEBUG): self.logger, self.level = logger, level self.sub_loggers = {} self.buffer = [] self.append = self.buffer.append
import fnmatch import re from contextlib import closing from cStringIO import StringIO from itertools import groupby from tarfile import open as open_tar, TarInfo from pyramid.httpexceptions import HTTPNotFound from pyramid.location import lineage from pyramid.response import Response from pyramid.traversal import traverse from pyramid.url import static_url from weboot import log log = log.getChild("multitraverser") from weboot.resources.actions import action from weboot.resources.combination import Combination from weboot.utils.plat import TemporaryDirectory from .locationaware import LocationAware from .renderable import Renderable, Renderer, context_renderable_as # from .root.stackplot import StackPlot # This dictionary is from http://pypi.python.org/pypi/tex # MIT license (C) 2010 Volker Grabsch _latex_special_chars = { u'$': u'\\$', u'%': u'\\%', u'&': u'\\&',
import fnmatch import re from contextlib import closing from cStringIO import StringIO from itertools import groupby from tarfile import open as open_tar, TarInfo from pyramid.httpexceptions import HTTPNotFound from pyramid.location import lineage from pyramid.response import Response from pyramid.traversal import traverse from pyramid.url import static_url from weboot import log; log = log.getChild("multitraverser") from weboot.resources.actions import action from weboot.resources.combination import Combination from weboot.utils.plat import TemporaryDirectory from .locationaware import LocationAware from .renderable import Renderable, Renderer, context_renderable_as #from .root.stackplot import StackPlot # This dictionary is from http://pypi.python.org/pypi/tex # MIT license (C) 2010 Volker Grabsch _latex_special_chars = { u'$': u'\\$', u'%': u'\\%', u'&': u'\\&', u'#': u'\\#',
import ROOT as R from rootpy.memory.keepalive import keepalive from pyramid.location import lineage from .actions import action from .locationaware import LocationAware from .renderable import Renderable, Renderer, RootRenderer from weboot import log; log = log.getChild("combination") etabins = [0, 0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47] cuts = { "DeltaE" : [92,92,99,111,-9999.,92,110,148,-9999.], #"E233" : None, #"E237" : None, #"E277" : [0.1], #"Emax2" : None, # Not used #"Emaxs1" : None,# Not used #"Emins1" : None,# Not used "Eratio" : [0.63,0.84,0.823,0.887,9999.,0.88,0.710,0.780,9999.], #"Ethad" : None,# Not used #"Ethad1" : None,# Not used "Rhad" : [0.0089,0.007,0.006,0.008,-9999.,0.019,0.015,0.0137,-9999.], "Rhad1" : [0.0089,0.007,0.006,0.008,-9999.,0.019,0.015,0.0137,-9999.], # Unused in current lowlumi_photons menu
from weboot import log log = log.getChild("weboot.resources.root.ttree") import ROOT as R from .object import RootObject def extract_buffer(b, n): return [b[i] for i in xrange(n)] @log.trace() def draw_ttree(t, params, what): # test_entries = 1000 # every_n_events = t.GetEntries() // test_entries # selection = "Entry$ % {0} == 0".format(every_n_events) drawn = t.Draw(what, "1", "goff") # , test_entries) h = t.GetHistogram() log.info("Drawn {0} with {1} entries".format(what, drawn)) return h class DrawTTree(RootObject): @property def content(self):
""" Renderable objects """ from contextlib import contextmanager from random import randint from subprocess import Popen, PIPE from tempfile import NamedTemporaryFile from thread import get_ident, allocate_lock from pyramid.response import Response import ROOT as R from weboot import log; log = log.getChild("renderable") from .actions import HasActions, action from .locationaware import LocationAware def renderer_view(context, request): print "Rendering", context return context.content def context_renderable_as(context, format): """ Test if `context` can be rendered as `format`. Not a method of Renderable so that we can ask it of non-Renderables. """ if not isinstance(context, Renderable):
import ROOT as R from rootpy.memory.keepalive import keepalive from pyramid.location import lineage from .actions import action from .locationaware import LocationAware from .renderable import Renderable, Renderer, RootRenderer from weboot import log log = log.getChild("combination") etabins = [0, 0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47] cuts = { "DeltaE": [92, 92, 99, 111, -9999., 92, 110, 148, -9999.], #"E233" : None, #"E237" : None, #"E277" : [0.1], #"Emax2" : None, # Not used #"Emaxs1" : None,# Not used #"Emins1" : None,# Not used "Eratio": [0.63, 0.84, 0.823, 0.887, 9999., 0.88, 0.710, 0.780, 9999.], #"Ethad" : None,# Not used #"Ethad1" : None,# Not used "Rhad": [0.0089, 0.007, 0.006, 0.008, -9999., 0.019, 0.015, 0.0137, -9999.], "Rhad1":
import ROOT as R from rootpy.memory.keepalive import keepalive from pyramid.location import lineage from .actions import action from .locationaware import LocationAware from .renderable import Renderable, Renderer, RootRenderer from weboot import log log = log.getChild("combination") etabins = [0, 0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47] cuts = { "DeltaE": [92, 92, 99, 111, -9999., 92, 110, 148, -9999.], #"E233" : None, #"E237" : None, #"E277" : [0.1], #"Emax2" : None, # Not used #"Emaxs1" : None,# Not used #"Emins1" : None,# Not used "Eratio": [0.63, 0.84, 0.823, 0.887, 9999., 0.88, 0.710, 0.780, 9999.], #"Ethad" : None,# Not used #"Ethad1" : None,# Not used "Rhad": [0.0089, 0.007, 0.006, 0.008, -9999., 0.019, 0.015, 0.0137, -9999.], "Rhad1": [0.0089, 0.007, 0.006, 0.008, -9999., 0.019, 0.015, 0.0137, -9999.],
from weboot import log; log = log.getChild("vfs") from os import listdir from os.path import basename, exists, isfile, isdir, join as pjoin import fnmatch import re from pyramid.traversal import traverse from pyramid.url import static_url from pyramid.httpexceptions import HTTPNotFound import ROOT as R from .locationaware import LocationAware from .multitraverser import MultipleTraverser from ._markdown import MarkdownResource from ..utils.root_vfs import RootVFS from .root.builder import build_root_object class VFSTraverser(LocationAware): section = "directory" def __init__(self, request, path=None, vfs=None): self.request = request self.path = path or request.registry.settings["results_path"] self.vfs = vfs or RootVFS(self.path) @property def name(self):
""" from contextlib import contextmanager from random import randint from subprocess import Popen, PIPE from tempfile import NamedTemporaryFile from thread import get_ident, allocate_lock from pyramid.response import Response import ROOT as R from rootpy import ROOTError from weboot import log log = log.getChild("renderable") from .actions import HasActions, action from .locationaware import LocationAware def renderer_view(context, request): log.debug("renderer_view {0}".format(context)) return context.content def context_renderable_as(context, format): """ Test if `context` can be rendered as `format`. Not a method of Renderable so that we can ask it of non-Renderables.