1   
  2   
  3   
  4  """ 
  5   Interface for configuring pre/post icetray scripts 
  6   
  7   copyright  (c) 2005 the icecube collaboration 
  8   
  9   @version: $Revision: $ 
 10   @date: $Date: $ 
 11   @author: Juan Carlos Diaz Velez <juancarlos@icecube.wisc.edu> 
 12  """ 
 13   
 14  import os 
 15  import re 
 16  import sys 
 17  import math 
 18  import dircache 
 19  import time 
 20  import string 
 21  import shutil 
 22  import cPickle 
 23  from ipmodule import IPBaseClass 
 24  import logging 
 25   
 27      """ 
 28      This class provides an interface for preprocessing files in iceprod 
 29      """ 
 30   
 36   
 37   
 39          if not IPBaseClass.Execute(self,stats): return 0 
 40          infile = self.GetParameter('infile') 
 41          outfile = self.GetParameter('outfile') 
 42          cmd = "mv %s %s" % (infile,outfile) 
 43          retval = os.system(cmd) 
 44          if retval == 0: 
 45              return retval 
 46          else: 
 47              self.logger.error("Failed to execute command '%s'" % cmd) 
 48              raise Exception, "Failed to execute command '%s'" % cmd 
   49   
 50   
 52      """ 
 53      This class provides functionality for renaming multiple files using Bash 
 54      substitutions. 
 55      """ 
 56   
 58          IPBaseClass.__init__(self) 
 59          self.AddParameter('inpattern','Pattern to match against file names when checking for files to rename','') 
 60          self.AddParameter('outpattern','Bash substitution expression to be applied to filenames when output','') 
 61          self.logger = logging.getLogger('iceprod::RenameMultipleFiles') 
  62   
 63   
 65          if not IPBaseClass.Execute(self,stats): return 0 
 66          inpattern  = self.GetParameter('inpattern') 
 67          outpattern = self.GetParameter('outpattern') 
 68          cmd = "for i in %s; do mv $i ${i/%s}; done" % (inpattern, outpattern) 
 69          retval = os.system(cmd) 
 70          if retval == 0: 
 71              return retval 
 72          else: 
 73              msg = "Failed to execute command '%s'" % cmd 
 74              self.logger.error(msg) 
 75              raise Exception, msg 
   76   
 77   
 79      """ 
 80      This class provides an interface for preprocessing files in iceprod 
 81      """ 
 82   
 88   
 89   
 91          if not IPBaseClass.Execute(self,stats): return 0 
 92          filelist = self.GetParameter('filelist') 
 93          retval = 0 
 94          cmd = '' 
 95          for file in filelist: 
 96              cmd = "rm -f %s" % file 
 97              retval += os.system(cmd) 
 98          if retval == 0: 
 99              return retval 
100          else: 
101              self.logger.error("Failed to execute command '%s'" % cmd) 
102              raise Exception, "Failed to execute command '%s'" % cmd 
  103   
104   
106      """ 
107      This class provides an interface for changing permissions of a file in iceprod 
108      """ 
109   
115   
116   
118          if not IPBaseClass.Execute(self,stats): return 0 
119          file = self.GetParameter('file') 
120          flags = self.GetParameter('flags') 
121          cmd = "chmod %s %s" % (flags,file) 
122          retval = os.system(cmd) 
123          if retval == 0: 
124              return retval 
125          else: 
126              self.logger.error("Failed to execute command '%s'" % cmd) 
127              raise Exception, "Failed to execute command '%s'" % cmd 
  128   
129   
131      """ 
132      This class provides an interface for compressing files in iceprod 
133      """ 
134   
140   
141   
143          if not IPBaseClass.Execute(self,stats): return 0 
144          infile = self.GetParameter('infile') 
145          outfile = self.GetParameter('outfile') 
146          cmd = "gzip -f -q -6 -c %s > %s" % (infile,outfile) 
147          retval = os.system(cmd) 
148          if retval == 0: 
149              return retval 
150          else: 
151              self.logger.error("Failed to execute command '%s'" % cmd) 
152              raise Exception, "Failed to execute command '%s'" % cmd 
  153   
155      """ 
156      This class provides an interface for preprocessing files in iceprod 
157      """ 
158   
164   
165   
167          if not IPBaseClass.Execute(self,stats): return 0 
168          filelist = self.GetParameter('filelist') 
169          tar  = self.GetParameter('outputfile') 
170          retval = 0 
171          cmd = '' 
172          if isinstance(filelist,str): 
173               
174              cmd = "tar" 
175              if not os.path.exists(tar): 
176                 cmd += " -cf" 
177              else: 
178                 cmd += " -uf" 
179              cmd += " %s %s" %(tar,filelist) 
180              self.logger.debug(cmd) 
181              retval += os.system(cmd) 
182          else: 
183               
184              for file in filelist: 
185                  dir = os.path.dirname(file) 
186                  cmd = "tar" 
187                  if os.path.isdir(dir): 
188                     cmd += " -C%s " % dir 
189                  if not os.path.exists(tar): 
190                     cmd += " -cf" 
191                  else: 
192                     cmd += " -uf" 
193                  cmd += " %s %s" %(tar,os.path.basename(file)) 
194                  self.logger.debug(cmd) 
195                  retval += os.system(cmd) 
196          if retval == 0: 
197              return retval 
198          else: 
199              self.logger.error("Failed to execute command '%s'" % cmd) 
200              raise Exception, "Failed to execute command '%s'" % cmd 
  201   
202   
204      """ 
205      This class provides an interface for preprocessing files in iceprod 
206      """ 
207   
209          IPBaseClass.__init__(self) 
210          self.AddParameter('inputfilelist','The names of the files you want to merge',[]) 
211          self.AddParameter('outputfile','Name of output tarball',"summary.xml") 
212          self.logger = logging.getLogger('iceprod::SummaryMerger') 
 213   
214   
 234