ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/LFNBaseName.py
Revision: 1.14
Committed: Wed Oct 15 18:45:30 2008 UTC (16 years, 6 months ago) by fanzago
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_2_4_0_Tutorial, CRAB_2_4_0_Tutorial_pre1
Changes since 1.13: +3 -1 lines
Log Message:
/store/user/test for tutorial

File Contents

# User Rev Content
1 afanfani 1.2 #!/usr/bin/env python
2     """
3     _LFNBaseName_
4     """
5    
6     from crab_exceptions import *
7 spiga 1.13 from crab_util import runCommand, UnixUserName
8 afanfani 1.2 import common
9 afanfani 1.12 import os, string, time
10 ewv 1.9 from ProdCommon.SiteDB.SiteDB import SiteDBJSON
11 afanfani 1.2
12    
13 spiga 1.11 def LFNBase(PrimaryDataset='',ProcessedDataset='',merged=True,LocalUser=False,publish=False):
14 afanfani 1.2 """
15     """
16 ewv 1.9 lfnbase = "/store"
17 afanfani 1.2 if not merged:
18 ewv 1.9 lfnbase = os.path.join(lfnbase,"tmp")
19 fanzago 1.10 if (PrimaryDataset == 'null'):
20     PrimaryDataset = ProcessedDataset
21 fanzago 1.14 #lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
22     ### for tutorial
23     lfnbase = os.path.join(lfnbase, "user/test", getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
24 ewv 1.9
25 afanfani 1.2 return lfnbase
26    
27 afanfani 1.4 def getUnixUserName():
28     """
29     extract username from whoami
30     """
31 spiga 1.13 return UnixUserName()
32 afanfani 1.4
33 afanfani 1.2 def getDN():
34     """
35     extract DN from user proxy's identity
36     """
37     try:
38     userdn = runCommand("voms-proxy-info -identity")
39     userdn = string.strip(userdn)
40 afanfani 1.7 #search for a / to avoid picking up warning messages
41     userdn = userdn[userdn.find('/'):]
42 afanfani 1.2 except:
43     msg = "Error. Problem with voms-proxy-info -identity command"
44     raise CrabException(msg)
45 ewv 1.9 return userdn.split('\n')[0]
46 afanfani 1.2
47 afanfani 1.12 def gethnUserNameFromSiteDB():
48 afanfani 1.2 """
49     extract user name from SiteDB
50     """
51     hnUserName = None
52     userdn = getDN()
53 ewv 1.9 mySiteDB = SiteDBJSON()
54 afanfani 1.2 try:
55 ewv 1.9 hnUserName = mySiteDB.dnUserName(dn=userdn)
56 afanfani 1.2 except:
57 ewv 1.9 msg = "Error. Problem extracting user name from SiteDB"
58     msg += "\n Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
59 afanfani 1.2 raise CrabException(msg)
60     if not hnUserName:
61 ewv 1.9 msg = "Error. There is no user name associated to DN %s in SiteDB. You need to register in SiteDB with the instructions at https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB" % userdn
62 afanfani 1.2 print msg
63     raise CrabException(msg)
64     return hnUserName
65    
66 afanfani 1.12
67     def gethnUserName():
68     """
69     cache the username extracted from SiteDB for 24hours
70     """
71     userconfigFileName="SiteDBusername.conf"
72     if not os.path.exists(userconfigFileName):
73     common.logger.debug(5,"Downloading from SiteDB username into %s"%userconfigFileName)
74     nameuser = gethnUserNameFromSiteDB()
75     userfile = open(userconfigFileName, 'w')
76     userfile.write(nameuser)
77     userfile.close()
78     else:
79     statinfo = os.stat(userconfigFileName)
80     ## if the file is older then 24 hours it is re-downloaded to update the configuration
81     oldness = 24*3600
82     if (time.time() - statinfo.st_ctime) > oldness:
83     common.logger.debug(5,"Downloading from SiteDB username into %s"%userconfigFileName)
84     nameuser = gethnUserNameFromSiteDB()
85     userfile = open(userconfigFileName, 'w')
86     userfile.write(nameuser)
87     userfile.close()
88     else:
89     userfile = open(userconfigFileName, 'r')
90     for line in userfile.readlines():
91     nameuser = line
92     userfile.close()
93     nameuser = string.strip(nameuser)
94     return nameuser
95    
96 afanfani 1.5 def getUserName(LocalUser=False):
97 afanfani 1.4 """
98     extract user name from either SiteDB or Unix
99     """
100 afanfani 1.5 if LocalUser:
101 spiga 1.11 common.logger.debug(10,"Using as username the Unix user name")
102 afanfani 1.5 UserName=getUnixUserName()
103     return UserName
104 ewv 1.9
105 afanfani 1.5 UserName=gethnUserName()
106 afanfani 1.4 return UserName
107    
108 afanfani 1.2 if __name__ == '__main__' :
109     """
110     """
111     from crab_logger import Logger
112     from WorkSpace import *
113 ewv 1.9 continue_dir = os.path.expanduser("~")
114 afanfani 1.2 cfg_params={'USER.logdir' : continue_dir }
115     common.work_space = WorkSpace(continue_dir, cfg_params)
116     log = Logger()
117     common.logger = log
118    
119 ewv 1.9 print "xx %s xx"%getUserName()
120 afanfani 1.2 baselfn = LFNBase("datasetstring")
121 ewv 1.9 print baselfn
122 afanfani 1.2
123     unmergedlfn = LFNBase("datasetstring",merged=False)
124 ewv 1.9 print unmergedlfn
125 afanfani 1.2 print PFNportion("datasetstring")