#! /usr/bin/python import sys import os from skyd_func import skyd_read_conf from tiny import start #+ # NAME: # skyd_state # PURPOSE: # Displays information about skyd_wait.py state # CALLING SEQUENCE: # skyd_state.py [-cffile= -state=] # skyd_state(conf_file,state) # INPUTS: # conf_file string name of configuration file # default: $SKYD/cf/skyd_.cf # state string any on of the possible states of an orbit # ('make','busy','skip','pass','done') # default: 'busy' # PROCEDURE: # Accesses the configuration file and all orbit catalogues # specified in the configuration file. # MODIFICATION HISTORY: # JAN-2006, Paul Hick (UCSD/CASS) # NOV-2006, Paul Hick (UCSD/CASS; pphick@ucsd.edu) # Added counts for each version number for "done" orbits #- def skyd_state(conf_file,state): status = dict ( [ ('number', 0), ('message', '') ]) # Read the configuration file (there should be one for each computer # that we plan to run the daemon on). status = skyd_read_conf(conf_file,False,status) if status['number'] == 0: all_count = 0 conf = status.pop('conf') # Get a list of catalogues in conf file catalogue = [] orbit_range = dict() for key in conf.keys(): if key.find('group_') == 0: cat = conf[key]['catalogue'] if catalogue.count(cat) == 0: catalogue.append(cat) orbit_range[cat] = [] min_orbit = int(conf[key]['min_orbit']) max_orbit = int(conf[key]['max_orbit']) all_count = all_count+(max_orbit-min_orbit+1) orbit_range[cat].append([min_orbit,max_orbit]) count = dict([('make',0),('busy',0),('done',0),('skip',0),('pass',0)]) versions = [] keys = count.keys() for cat in catalogue: ff = os.path.expandvars(cat) if os.path.isfile(ff): print cat lines = (open(ff,'r')).read().split('\n') for line in lines: if len(line) > 0: if line.find(state) != -1: print line parts = line.split() orbit = int(parts[0]) for r in orbit_range[cat]: if r[0] <= orbit and orbit <= r[1]: for key in keys: if line.find(key) != -1: count[key] = count[key]+1 if line.find('done') != -1: if len(parts) >= 6: versions.append(parts[-1]) else: versions.append('0.00') print '' print '' for key in keys: if count[key] != 0: print '%6d/%6d orbits "%s"'%(count[key],all_count,key) if key == 'done': while len(versions) > 0: test_version = versions[0] kver = 0 iver = 0 nver = len(versions) while iver < nver: if versions[iver] == test_version: kver = kver+1 del versions[iver] nver = nver-1 else: iver = iver+1 print '%6d %6s orbits "done" with version %s'%(kver,'',test_version) return if __name__ == '__main__': conf_file = start( '-cffile=',sys.argv ) if conf_file == '': boss = os.environ['HOSTNAME'].split('.')[0] if not os.environ.has_key('SKYD'): print 'Env var SKYD not defined' sys.exit(1) conf_file = os.path.join(os.environ['SKYD'],'cf','skyd_'+boss+'.cf') state = start( '-state',sys.argv ) if state == '': state = 'busy' skyd_state(conf_file,state) sys.exit(0)