ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/Processing/bin/move
Revision: 1.10
Committed: Thu Aug 9 21:16:03 2012 UTC (12 years, 8 months ago) by paus
Branch: MAIN
CVS Tags: Mit_032, Mit_031, Mit_030, Mit_029c, Mit_029b, Mit_030_pre1, Mit_029a, Mit_029, HEAD
Changes since 1.9: +0 -6 lines
Log Message:
For version 029.

File Contents

# User Rev Content
1 paus 1.2 #!/usr/bin/env python
2     #---------------------------------------------------------------------------------------------------
3     # Script to move a file from one place to another. Restrictions to application of course apply :-)
4     #
5     # Author: C.Paus (May 06, 2010)
6     #---------------------------------------------------------------------------------------------------
7     import os,sys,getopt,re
8 paus 1.7 import srm
9 paus 1.9 user = os.environ['TICKET_HOLDER']
10     t2user = os.environ['TIER2_USER']
11 paus 1.2
12     def debugPrint(text):
13     if debug ==1:
14     print ' DEBUG: ' + text
15    
16     def clean(file):
17     if re.search('dcap:',file):
18     g = file.split('/')
19     file = '/'.join(g[3:])
20 paus 1.7 if re.search('root:',file):
21     g = file.split('/')
22     file = '/'.join(g[3:])
23     file = '/mnt/hadoop/cms' + file
24 paus 1.2 debugPrint(' Cleaned: ' + file)
25    
26     return file
27    
28    
29     def exists(target):
30     if re.search('/castor/cern.ch/',target):
31     debugPrint(' Identified a castor directory: ' + target)
32 paus 1.9 cmd = 'ssh ' + t2user + '@lxplus.cern.ch rfdir ' + target + '>& /dev/null'
33 paus 1.7 elif re.search('/mnt/hadoop/cms/store',target):
34     debugPrint(' Identified a tier-2 directory: ' + target)
35 paus 1.9 cmd = 'ssh ' + t2user + '@se01.cmsaf.mit.edu ls -1 ' + target + ' \>\& /dev/null'
36 paus 1.2 else:
37     debugPrint(' Identified a normal directory: ' + target)
38 ceballos 1.6 cmd = 'ls -1 ' + target + '>\& /dev/null'
39 paus 1.2
40     status = os.system(cmd)
41     debugPrint(' Status: %d' % status)
42    
43     return (status == 0)
44    
45     def move(source,target):
46     if re.search('/castor/cern.ch/',source) and re.search('/castor/cern.ch/',target):
47     debugPrint(' Identified two castor directories')
48 paus 1.9 cmd = 'ssh ' + user + '@lxplus.cern.ch nsrename ' + source + ' ' + target
49 paus 1.7 elif re.search('/mnt/hadoop/cms/store',target):
50     urlSource = srm.convertToUrl(source,False)
51     urlTarget = srm.convertToUrl(target,False)
52     cmd = 'srmmv ' + urlSource + ' ' + urlTarget + ' >& /dev/null'
53     cmd = 'glexec mv ' + source + ' ' + target ## + ' >& /dev/null'
54     #debugPrint(' Identified a tier-2 directory: ' + target)
55 paus 1.9 #cmd = 'ssh ' + t2user + '@se01.cmsaf.mit.edu ls -1 ' + target + ' \>\& /dev/null'
56 paus 1.2 else:
57     debugPrint(' Identified a normal directory')
58     cmd = 'mv ' + source + ' ' + target
59    
60     # ready to perfrom the requested operation
61     debugPrint(' -> moving with: ' + cmd)
62     ## status = 0
63     status = os.system(cmd)
64    
65     return status
66    
67     #===================================================================================================
68     # Main starts here
69     #===================================================================================================
70     # Define string to explain usage of the script
71     usage = "Usage: list <source> <target>"
72     usage += " --debug\n"
73     usage += " --help\n"
74    
75     # Define the valid options which can be specified and check out the command line
76     valid = ['debug','help']
77     try:
78     opts, args = getopt.getopt(sys.argv[1:], "", valid)
79     except getopt.GetoptError, ex:
80     print usage
81     print str(ex)
82     sys.exit(1)
83    
84     # --------------------------------------------------------------------------------------------------
85     # Get all parameters for the production
86     # --------------------------------------------------------------------------------------------------
87     # Set defaults for each option
88     debug = 0
89    
90     # Read new values from the command line
91     for opt, arg in opts:
92     #print ' OPT , ARG: ' + opt + ' ' + arg
93     if opt == '--help':
94     print usage
95     sys.exit(0)
96     elif opt == '--debug':
97     debug = 1
98    
99     newArgv = []
100     for arg in sys.argv[1:]:
101     #print ' ARG: ' + arg
102     if arg[:2] == "--":
103     continue
104     else:
105     newArgv.append(arg)
106    
107     # Define source and target
108     source = clean(newArgv[0])
109     target = clean(newArgv[1])
110    
111     # Test whether the source exists and that the target does not exist
112     if exists(source) and not exists(target):
113     debugPrint("\n Moving: " + source + "\n to " + target + "\n")
114     move(source,target)
115     elif not exists(source):
116     print ' ERROR: the source ('+source+') does not exist.'
117     elif exists(target):
118     print ' ERROR: the target ('+target+') exists already.'
119     else:
120     print ' ERROR: hmmm.... what is wrong here?'