#!/usr/bin/python import sys, os, getopt def usage(): print '' print 'make_dcache_tmp_stage_script' print '' print 'takes file with dcache url\'s (base_file) and generates script (output_file)' print 'to stage them to a dcache destination (dcache_destination) using the /tmp directory as intermediate step.' print '' print 'required parameters:' print '--tier (-t) : hit, digi, dst to use the default file names' print '--dcache_destination (-c) : dcache destination' print '' print 'optional parameters:' print '--help (-h) : help' print '--debug (-d) : debug statements' print '' print '--base_file_name (-b) : base_file with dcache url\'s, default: _to_be_staged.cpy' print '--output_file_name (-o) : output_file with dcache url\'s not in both files, default: _to_be_staged_via_tmp.sh' print '' def main(argv) : # default tier = '' base_file_name = '' dcache_destination = '' output_file_name = '' try: opts, args = getopt.getopt(argv, "hdt:b:c:o:", ["help", "debug", "tier=", "base_file_name=", "dcache_destination=", "output_file_name="]) except getopt.GetoptError: usage() sys.exit(2) # check command line parameter for opt, arg in opts : if opt in ("-h","--help") : usage() sys.exit() elif opt in ("-d","--debug") : global _debug _debug = 1 elif opt in ("-t","--tier") : tier = arg elif opt in ("-b","--base_file_name") : base_file_name = arg elif opt in ("-c","--dcache_destination") : dcache_destination = arg elif opt in ("-o","--output_file_name") : output_file_name = arg if base_file_name == '': if tier == '' : usage() sys.exit() else : base_file_name = tier+'_to_be_staged.cpy' if dcache_destination == '' : print '' print 'Please provide dcache destination' usage() sys.exit(1) if output_file_name == '': if tier == '' : usage() sys.exit() else : output_file_name = tier+'_to_be_staged_via_tmp.sh' try: base = open(base_file_name) except IOError: print 'Could not open file: ',base_file_name sys.exit() output = open(output_file_name,'w') output.write('#!/bin/sh\n') counter = 0 base_line = base.readline() while base_line : base_line = base_line.strip() filename = os.path.split(base_line)[1] stage_to_tmp = 'dccp '+base_line+' /tmp/'+filename+'\n' stage_from_tmp = 'dccp /tmp/'+filename+' '+dcache_destination+'/'+filename+'\n' delete = 'rm -f /tmp/'+filename+'\n' output.write(stage_to_tmp) output.write(stage_from_tmp) output.write(delete) counter += 1 base_line = base.readline() print 'Number of dcache copies via tmp prepared: ',counter os.chmod(output_file_name,0755) if __name__ == '__main__' : main(sys.argv[1:])