ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/LFNBaseName.py
Revision: 1.9
Committed: Tue Jul 8 19:34:00 2008 UTC (16 years, 9 months ago) by ewv
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_2_3_2_pre2, CRAB_2_3_2_pre1, CRAB_2_4_0_test
Branch point for: AnaDataSet
Changes since 1.8: +16 -24 lines
Log Message:
Use SiteDB from ProdCommon

File Contents

# User Rev Content
1 afanfani 1.2 #!/usr/bin/env python
2     """
3     _LFNBaseName_
4     """
5    
6     from crab_exceptions import *
7     from crab_util import runCommand
8     import common
9     import os, string
10 ewv 1.9 from ProdCommon.SiteDB.SiteDB import SiteDBJSON
11 afanfani 1.2
12    
13 afanfani 1.5 def LFNBase(ProcessedDataset,merged=True,LocalUser=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 afanfani 1.5 lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), ProcessedDataset )
20 ewv 1.9
21 afanfani 1.2 return lfnbase
22    
23 afanfani 1.5 def PFNportion(ProcessedDataset,LocalUser=False):
24     pfnpath = os.path.join(getUserName(LocalUser=LocalUser), ProcessedDataset )
25 afanfani 1.2 return pfnpath
26    
27 afanfani 1.4 def getUnixUserName():
28     """
29     extract username from whoami
30     """
31     try:
32     UserName = runCommand("whoami")
33     UserName = string.strip(UserName)
34     except:
35     msg = "Error. Problem with whoami command"
36     raise CrabException(msg)
37     return UserName
38    
39 afanfani 1.2 def getDN():
40     """
41     extract DN from user proxy's identity
42     """
43     try:
44     userdn = runCommand("voms-proxy-info -identity")
45     userdn = string.strip(userdn)
46 afanfani 1.7 #search for a / to avoid picking up warning messages
47     userdn = userdn[userdn.find('/'):]
48 afanfani 1.2 except:
49     msg = "Error. Problem with voms-proxy-info -identity command"
50     raise CrabException(msg)
51 ewv 1.9 return userdn.split('\n')[0]
52 afanfani 1.2
53     def gethnUserName():
54     """
55     extract user name from SiteDB
56     """
57     hnUserName = None
58     userdn = getDN()
59 ewv 1.9 mySiteDB = SiteDBJSON()
60    
61 afanfani 1.2 try:
62 ewv 1.9 hnUserName = mySiteDB.dnUserName(dn=userdn)
63 afanfani 1.2 except:
64 ewv 1.9 msg = "Error. Problem extracting user name from SiteDB"
65     msg += "\n Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
66 afanfani 1.2 raise CrabException(msg)
67     if not hnUserName:
68 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
69 afanfani 1.2 print msg
70     raise CrabException(msg)
71     return hnUserName
72    
73 afanfani 1.5 def getUserName(LocalUser=False):
74 afanfani 1.4 """
75     extract user name from either SiteDB or Unix
76     """
77 afanfani 1.5 if LocalUser:
78     common.logger.message("==> Using as username the Unix user name")
79     UserName=getUnixUserName()
80     return UserName
81 ewv 1.9
82 afanfani 1.5 UserName=gethnUserName()
83 afanfani 1.4 return UserName
84    
85 afanfani 1.2 if __name__ == '__main__' :
86     """
87     """
88     from crab_logger import Logger
89     from WorkSpace import *
90 ewv 1.9 continue_dir = os.path.expanduser("~")
91 afanfani 1.2 cfg_params={'USER.logdir' : continue_dir }
92     common.work_space = WorkSpace(continue_dir, cfg_params)
93     log = Logger()
94     common.logger = log
95    
96 ewv 1.9 print "xx %s xx"%getUserName()
97 afanfani 1.2 baselfn = LFNBase("datasetstring")
98 ewv 1.9 print baselfn
99 afanfani 1.2
100     unmergedlfn = LFNBase("datasetstring",merged=False)
101 ewv 1.9 print unmergedlfn
102 afanfani 1.2 print PFNportion("datasetstring")