- Timestamp:
- Jun 19, 2012, 5:24:19 PM (14 years ago)
- Location:
- branches/meh_branches/ppstack_test
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ippToPsps/jython/ipptopsps.py (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/meh_branches/ppstack_test
- Property svn:mergeinfo changed
-
branches/meh_branches/ppstack_test/ippToPsps/jython/ipptopsps.py
r33415 r34041 11 11 from pslogger import PSLogger 12 12 from ipptopspsdb import IppToPspsDb 13 from dxlayer import DXLayer14 from datastore import Datastore15 from dvo import Dvo16 from odm import Odm17 18 13 19 14 ''' 20 15 Abstract base class for all ippToPsps programs 21 handle command-line args, setting up of Config and logger objects, clean exiting etc 16 Handles command-line args, setting up of Config and logger objects, clean exiting etc 22 17 ''' 23 18 class IppToPsps(object): … … 26 21 Constructor 27 22 ''' 28 def __init__(self, argv ):23 def __init__(self, argv, logToStdout=1, logToFile=0): 29 24 30 25 # are the arsg ok? all programs require a config name … … 35 30 # some class constants 36 31 self.PROGNAME = sys.argv[0] 37 self.CONFIGNAME = sys.argv[1]32 CONFIGNAME = sys.argv[1] 38 33 self.HOST = socket.gethostname() 39 34 self.PID = os.getpid() … … 43 38 self.SECONDS = None 44 39 40 self.createNewConfig = False 41 self.rotateConfigs = False 42 # a new config? 43 if CONFIGNAME == "edit": self.createNewConfig = True 44 # should we rotate configs for this program? 45 elif CONFIGNAME == "all": self.rotateConfigs = True 46 45 47 # set up config object 46 self.config = Config(self.PROGNAME, self.CONFIGNAME)47 self.logger = self.config.getLogger(self.HOST, self.PID, 1, 1)48 self.config = Config(self.PROGNAME, CONFIGNAME) 49 self.logger = self.config.getLogger(self.HOST, self.PID, logToStdout, logToFile) 48 50 49 51 # create connection to databases database 50 self.ippToPspsDb = IppToPspsDb(self.logger, self.config) 52 try: 53 self.ippToPspsDb = IppToPspsDb(self.logger, self.config) 54 except: 55 self.exitProgram("Could not connect to ipptopsps Db") 56 raise 51 57 52 58 self.checkClientStatus() … … 58 64 self.logger.infoSeparator() 59 65 self.logger.infoTitle("ippToPsps '" + self.PROGNAME + "' started") 66 self.logger.infoPair("Host", self.HOST) 67 self.logger.infoPair("PID", "%d" % self.PID) 68 self.logger.infoPair("Config", self.config.name) 60 69 61 70 ''' … … 70 79 except: 71 80 pass 72 73 81 74 82 ''' … … 93 101 Prints usage to stdout 94 102 ''' 95 def printUsage(self): 96 # using sys.stdout to avoid newline in case sub-classes need to add further args 97 sys.stdout.write("** Usage: " + sys.argv[0] + " <configPath>") 103 def printUsage(self, extra=""): 98 104 105 # write message to log or stdout if no logger set up 106 msg = sys.argv[0] + " <configName|all|edit> " + extra 107 try: 108 self.logger.errorPair("Usage:", msg) 109 except: 110 print "*** Usage: " + msg 99 111 100 112 ''' … … 102 114 ''' 103 115 def refreshConfig(self): 116 117 # new config? 118 if self.createNewConfig: 119 self.ippToPspsDb.editConfig() 120 self.ippToPspsDb.setConfigForThisClient(self.config.name, self.HOST, self.PID) 121 self.createNewConfig = False 122 123 # if we are rotating configs, then look for next active one in list 124 if self.rotateConfigs: 125 self.ippToPspsDb.getConfigForThisClient(self.HOST, self.PID) 126 configs = self.ippToPspsDb.getActiveConfigList() 127 128 i = 1 129 for config in configs: 130 if config == self.config.name: break 131 i += 1 132 133 if i >= len(configs): newConfig = configs[0] 134 else: newConfig = configs[i] 135 136 self.ippToPspsDb.setConfigForThisClient(newConfig, self.HOST, self.PID) 137 104 138 return self.ippToPspsDb.readConfig(self.HOST, self.PID) 105 139 … … 109 143 def checkClientStatus(self): 110 144 111 self.ippToPspsDb.updateClient(self.PROGNAME, self.HOST, self.PID , self.config.name)145 self.ippToPspsDb.updateClient(self.PROGNAME, self.HOST, self.PID) 112 146 113 147 if self.ippToPspsDb.isKilled(self.HOST, self.PID): … … 115 149 116 150 # this loop pauses the process if we have no config or we have set it to pause 151 firstTimeIn = True 117 152 while not self.refreshConfig() or self.ippToPspsDb.isPaused(self.HOST, self.PID): 118 153 119 self.ippToPspsDb.updateClient(self.PROGNAME, self.HOST, self.PID, self.config.name) 120 if self.ippToPspsDb.isKilled(self.HOST, self.PID): self.exitProgram("killed while paused") 121 self.logger.infoPair("Paused. Will check again in", "%d secs" % self.PAUSEPERIOD) 154 self.ippToPspsDb.updateClient(self.PROGNAME, self.HOST, self.PID) 155 if self.ippToPspsDb.isKilled(self.HOST, self.PID): 156 self.exitProgram("killed while paused") 157 if firstTimeIn: self.logger.infoPair("Paused. Will check again every", "%d secs" % self.PAUSEPERIOD) 158 firstTimeIn = False 122 159 time.sleep(self.PAUSEPERIOD) 123 160 … … 134 171 Exits the program cleanly, removes info from ipptopsps database 135 172 ''' 136 def exitProgram(self, exitReason ):173 def exitProgram(self, exitReason="quit"): 137 174 138 175 # write message to log or stdout if no logger set up 139 176 try: 140 self.logger.infoPair( "Programexited", exitReason)177 self.logger.infoPair(self.PROGNAME + " exited", exitReason) 141 178 except: 142 print "** program exited: " + exitReason179 print "*** Program exited: " + exitReason 143 180 144 181 # remove from database if possible
Note:
See TracChangeset
for help on using the changeset viewer.
