Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.stsci.edu/spst/UnixTransition/doc/load_check_util.py
Дата изменения: Fri Apr 8 12:46:12 2016
Дата индексирования: Mon Apr 11 02:50:12 2016
Кодировка:

Поисковые слова: п п п п п п п п п п п
#
#MODULE load_check_util.py
#
#***********************************************************************
"""

**PURPOSE** --
A module for handling the pass load checking.

**DEVELOPER** --
Greg Wenzel

**MODIFICATION HISTORY** --

o initial implementation GWW 07/12/02
o code review changes GWW 09/03/02
o updated for Unix DC 10/07/03
o fix vms bug DC 11/17/03
o check that span is not None before trying to use it. dc 10/25/04
o code cleanup and new namelist function from namelist_util dc 9/9/15
"""
#***********************************************************************
import time_util
import os
import ctm_search
import pass_util
from namelist_util import read_namelist

__version__ = '15.09.08'


class lchk:
"""A class for running the PASS load check utility against cl products.
"""
def __init__(self, cl_dir_path, config_file=''):
"""Constructor for lchk class.
"""
self.create_time = time_util.spss_time()
self.span = None # time window instance defining start
# and end time for report.

#output directory is also input directory in this case
self.command_timeline = None
self.script_file = None
self.file_name = 'lchk_sum'
self.config_file = config_file
if os.path.exists(cl_dir_path):
self.output_directory = cl_dir_path
ctm_path = os.path.join(self.output_directory, 'ctmline.rpt')
if not os.path.exists(ctm_path):
error_string = '\n\n%s\nCommand time line input file not found!' % ctm_path
raise IOError(error_string)
self.command_timeline = ctm_path
self.span = pass_util.get_cl_times(self.output_directory)
self.summary_file = os.path.join(self.output_directory, '%s.rpt' % self.file_name)
else:
raise IOError('\n\nInput-Output directory does not exist!')

def __repr__(self):
"""returns summary file path
"""
if os.path.exists(self.summary_file):
return self.summary_file
return 'lchk_unprocessed'

def get_span(self):
"""returns span
"""
return self.span

def create_namelist(self, sw_version):
"""internal / private use
works with pass 31.60 and later on both unix and VMS.
"""
in_namelist_path = pass_util.get_pass_namelist_path('lchk.nml',
sw_version)
namelist = read_namelist(in_namelist_path)
format_string = '%YY%jD%HH%MM%S'
if self.span:
namelist['LCNINPUT']['BEG_TIME'] = ["'%s.000'" % self.span.starttime().strftime(format_string)]
namelist['LCNINPUT']['END_TIME'] = ["'%s.000'" % self.span.endtime().strftime(format_string)]
else:
print "***WARNING*** Begin and end time could not be determined."
print "Default begin/end times will be used for load check processing."
namelist_path = os.path.join(self.output_directory,
'%s.nml' % self.file_name)
pass_util.write_namelist(namelist, namelist_path)
return namelist_path

def run(self, sw_version='ops', vms=None, verbose=False):
"""runs pass software to create load check report
"""
# Vms is no longer a real option
vms = 0

#create PASS run namelist
namelist_path = self.create_namelist(sw_version)
ctm_search.ctmSearch(self.command_timeline, self.output_directory)
script = pass_util.pass_script('lchk', sw_version, vms)
script.add_environment_definition('LC_NML', namelist_path)
script.add_environment_definition('LDCHKIN', self.output_directory, is_path=True, is_file=False)
script.add_environment_definition('LDCHKOUT', self.output_directory, is_path=True, is_file=False)
script.add_environment_definition('LC_ENG', os.path.join(self.output_directory, 'ctm_ssr.dat'))
script.add_environment_definition('LC_GEA1', os.path.join(self.output_directory, 'ctm_hgea1.dat'))
script.add_environment_definition('LC_GEA2', os.path.join(self.output_directory, 'ctm_hgea2.dat'))
script.add_environment_definition('LC_LG1END', os.path.join(self.output_directory, 'ctm_lg1end.dat'))
script.add_environment_definition('LC_LG2END', os.path.join(self.output_directory, 'ctm_lg2end.dat'))
script.add_environment_definition('LC_HG1END', os.path.join(self.output_directory, 'ctm_hg1end.dat'))
script.add_environment_definition('LC_HG2END', os.path.join(self.output_directory, 'ctm_hg2end.dat'))
script.add_environment_definition('LC_XL', os.path.join(self.output_directory, 'ctm_xl.dat'))
script.add_environment_definition('LC_ZOE', os.path.join(self.output_directory, 'ctm_zoe.dat'))
script.add_environment_definition('LC_SUM', self.summary_file)
script.add_environment_definition('LCHKOUT', self.output_directory)
if self.config_file:
script.source_file(self.config_file)
script.append_line('rm %s' % os.path.join(self.output_directory,
'ctm_*.dat'))

#run pass script
status = script.run(self.output_directory, self.file_name,
verbose=verbose)
self.script_file = script.script_path
if not os.path.exists(self.summary_file):
raise IOError('\n\nError running lchk!\nOutput summary report not found!')
return status