CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes
confdbOfflineConverter.OfflineConverter Class Reference

Public Member Functions

def __init__
 
def query
 

Static Public Member Functions

def CheckTempDirectory
 

Public Attributes

 baseDir
 
 baseUrl
 
 connect
 
 jars
 
 javaCmd
 
 verbose
 
 version
 
 workDir
 

Static Public Attributes

dictionary databases = {}
 
dictionary versions = {}
 

Detailed Description

Definition at line 10 of file confdbOfflineConverter.py.

Constructor & Destructor Documentation

def confdbOfflineConverter.OfflineConverter.__init__ (   self,
  version = 'v1',
  database = 'hltdev',
  url = None,
  verbose = False 
)

Definition at line 57 of file confdbOfflineConverter.py.

57 
58  def __init__(self, version = 'v1', database = 'hltdev', url = None, verbose = False):
59  self.verbose = verbose
60  self.version = version
61  self.baseDir = '/afs/cern.ch/user/c/confdb/www/lib'
62  self.baseUrl = 'http://confdb.web.cern.ch/confdb/lib'
63  self.workDir = ''
64 
65  # check the schema version
66  if version in self.databases:
67  # pick the jars based on the database version
68  self.jars = self.versions[version]
69  else:
70  # unsupported database version
71  sys.stderr.write( "ERROR: unsupported database version \"%s\"\n" % version)
72 
73  # check the database
74  if database in self.databases[version]:
75  # load the connection parameters for the given database
76  self.connect = self.databases[version][database]
77  else:
78  # unsupported database
79  sys.stderr.write( "ERROR: unknown database \"%s\" for version \"%s\"\n" % (database, version))
80  sys.exit(1)
81 
82  # check for a custom base URL
83  if url is not None:
84  self.baseUrl = url
85 
86  # try to read the .jar files from AFS, or download them
87  if os.path.isdir(self.baseDir) and all(os.path.isfile(self.baseDir + '/' + jar) for jar in self.jars):
88  # read the .jar fles from AFS
89  self.workDir = self.baseDir
90  else:
91  # try to use $CMSSW_BASE/tmp
92  self.workDir = OfflineConverter.CheckTempDirectory(os.environ['CMSSW_BASE'] + '/tmp/confdb')
93  if not self.workDir:
94  # try to use $TMP
95  self.workDir = OfflineConverter.CheckTempDirectory(os.environ['TMP'] + '/confdb')
96  if not self.workDir:
97  # create a new temporary directory, and install a cleanup callback
98  self.workDir = tempfile.mkdtemp()
99  atexit.register(shutil.rmtree, self.workDir)
100  # download the .jar files
101  for jar in self.jars:
102  # check if the file is already present
103  if os.path.exists(self.workDir + '/' + jar):
104  continue
105  # download to a temporay name and use an atomic rename (in case an other istance is downloading the same file
106  handle, temp = tempfile.mkstemp(dir = self.workDir, prefix = jar + '.')
107  os.close(handle)
108  urllib.urlretrieve(self.baseUrl + '/' + jar, temp)
109  if not os.path.exists(self.workDir + '/' + jar):
110  os.rename(temp, self.workDir + '/' + jar)
111  else:
112  os.unlink(temp)
113 
114  # setup the java command line and CLASSPATH
115  if self.verbose:
116  sys.stderr.write("workDir = %s\n" % self.workDir)
117  # use non-blocking random number source /dev/urandom (instead of /dev/random), see:
118  # http://blockdump.blogspot.fr/2012/07/connection-problems-inbound-connection.html
119  # deal with timezone region not found
120  # http://stackoverflow.com/questions/9156379/ora-01882-timezone-region-not-found
121  # increase the thread stack size from the default of 1 MB to work around java.lang.StackOverflowError errors, see
122  # man java
123  self.javaCmd = ( 'java', '-cp', ':'.join(self.workDir + '/' + jar for jar in self.jars), '-Djava.security.egd=file:///dev/urandom', '-Doracle.jdbc.timezoneAsRegion=false', '-Xss32M', 'confdb.converter.BrowserConverter' )
124 
static std::string join(char **cmd)
Definition: RemoteFile.cc:18

Member Function Documentation

def confdbOfflineConverter.OfflineConverter.CheckTempDirectory (   dir)
static

Definition at line 47 of file confdbOfflineConverter.py.

47 
48  def CheckTempDirectory(dir):
49  dir = os.path.realpath(dir)
50  if not os.path.isdir(dir):
51  try:
52  os.makedirs(dir)
53  except:
54  return None
55  return dir
56 
def confdbOfflineConverter.OfflineConverter.query (   self,
  args 
)

Definition at line 125 of file confdbOfflineConverter.py.

References DTDQMHarvesting.DTDQMHarvesting.connect, DTVDriftMeanTimerCalibration.DTVDriftMeanTimerCalibration.connect, DTVDriftSegmentCalibration.DTVDriftSegmentCalibration.connect, DTNoiseCalibration.DTNoiseCalibration.connect, DTDQMValidation.DTDQMValidation.connect, DTAnalysisResiduals.DTAnalysisResiduals.connect, DTResidualCalibration.DTResidualCalibration.connect, DTTTrigProd.DTTTrigProd.connect, DTTTrigValid.DTTTrigValid.connect, DTTTrigResidualCorr.DTTTrigResidualCorr.connect, DDTOBRodAlgo.connect, confdbOfflineConverter.OfflineConverter.connect, confdbOfflineConverter.OfflineConverter.javaCmd, join(), CalibratedPatElectronProducer.verbose, DQMGenericTnPClient.verbose, dqmTnP::AbstractFitter.verbose, CalibratedElectronProducer.verbose, ElectronStudy.verbose, confdbOfflineConverter.OfflineConverter.verbose, MuonMillepedeAlgorithm.verbose, DeviationsFromFileSensor2D.verbose, HIPAlignmentAlgorithm.verbose, FastHFShowerLibrary.verbose, and OpticalObject.verbose.

126  def query(self, *args):
127  args = self.javaCmd + self.connect + args
128  if self.verbose:
129  sys.stderr.write("\n" + ' '.join(args) + "\n\n" )
130  sub = subprocess.Popen(
131  args,
132  stdin = None,
133  stdout = subprocess.PIPE,
134  stderr = subprocess.PIPE,
135  shell = False,
136  universal_newlines = True )
137  return sub.communicate()
static std::string join(char **cmd)
Definition: RemoteFile.cc:18

Member Data Documentation

confdbOfflineConverter.OfflineConverter.baseDir

Definition at line 60 of file confdbOfflineConverter.py.

confdbOfflineConverter.OfflineConverter.baseUrl

Definition at line 61 of file confdbOfflineConverter.py.

confdbOfflineConverter.OfflineConverter.connect

Definition at line 75 of file confdbOfflineConverter.py.

Referenced by Vispa.Gui.ZoomableScrollArea.ZoomableScrollArea.__init__(), Vispa.Views.PropertyView.BooleanProperty.__init__(), Vispa.Gui.FindDialog.FindDialog._addScript(), Vispa.Gui.FindDialog.FindDialog._addStringProperty(), Vispa.Main.Application.Application._connectSignals(), Vispa.Plugins.ConfigEditor.CodeTableView.CodeTableView._createItem(), Vispa.Gui.BoxContentDialog.BoxContentDialog.addButton(), Vispa.Gui.ToolBoxContainer.ToolBoxContainer.addWidget(), Vispa.Views.PropertyView.PropertyView.append(), Vispa.Views.PropertyView.PropertyView.appendAddRow(), Vispa.Main.Application.Application.createAction(), Vispa.Views.PropertyView.TextEditWithButtonProperty.createButton(), Vispa.Views.LineDecayView.LineDecayView.createLineDecayContainer(), Vispa.Views.PropertyView.TextEditWithButtonProperty.createLineEdit(), Vispa.Views.LineDecayView.LineDecayContainer.createObject(), Vispa.Views.PropertyView.TextEditWithButtonProperty.createTextEdit(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController.filterDialog(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController.find(), Vispa.Gui.PortWidget.PortWidget.mouseMoveEvent(), confdbOfflineConverter.OfflineConverter.query(), Vispa.Views.PropertyView.BooleanProperty.setChecked(), Vispa.Main.SplitterTab.SplitterTab.setController(), Vispa.Plugins.Browser.BrowserTab.BrowserTab.setController(), Vispa.Views.PropertyView.BooleanProperty.setReadOnly(), Vispa.Views.PropertyView.DropDownProperty.setReadOnly(), Vispa.Views.PropertyView.TextEditWithButtonProperty.setReadOnly(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController.setTab(), Vispa.Views.PropertyView.IntegerProperty.setValue(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController.switchCenterView(), Vispa.Plugins.EdmBrowser.EdmBrowserTabController.EdmBrowserTabController.updateViewMenu(), and Vispa.Plugins.ConfigEditor.ConfigEditorTabController.ConfigEditorTabController.updateViewMenu().

dictionary confdbOfflineConverter.OfflineConverter.databases = {}
static

Definition at line 33 of file confdbOfflineConverter.py.

confdbOfflineConverter.OfflineConverter.jars

Definition at line 67 of file confdbOfflineConverter.py.

confdbOfflineConverter.OfflineConverter.javaCmd

Definition at line 122 of file confdbOfflineConverter.py.

Referenced by confdbOfflineConverter.OfflineConverter.query().

confdbOfflineConverter.OfflineConverter.verbose

Definition at line 58 of file confdbOfflineConverter.py.

Referenced by python.diff_provenance.difference.list_diff(), python.diffProv.difference.list_diff(), python.diff_provenance.difference.module_diff(), python.diffProv.difference.module_diff(), python.diff_provenance.difference.onefilemodules(), python.diffProv.difference.onefilemodules(), objects.VertexAnalyzer.VertexAnalyzer.process(), and confdbOfflineConverter.OfflineConverter.query().

confdbOfflineConverter.OfflineConverter.version

Definition at line 59 of file confdbOfflineConverter.py.

Referenced by python.rootplot.argparse._VersionAction.__call__(), argparse.ArgumentParser.format_version(), and python.rootplot.argparse.ArgumentParser.format_version().

dictionary confdbOfflineConverter.OfflineConverter.versions = {}
static

Definition at line 28 of file confdbOfflineConverter.py.

confdbOfflineConverter.OfflineConverter.workDir

Definition at line 62 of file confdbOfflineConverter.py.