ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/LFNBaseName.py
Revision: 1.5
Committed: Wed May 28 13:01:17 2008 UTC (16 years, 11 months ago) by afanfani
Content type: text/x-python
Branch: MAIN
Changes since 1.4: +12 -12 lines
Log Message:
Do not fallback to unix user name : to use only on explicit request for CAF/local sched

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    
11    
12 afanfani 1.5 def LFNBase(ProcessedDataset,merged=True,LocalUser=False):
13 afanfani 1.2 """
14     """
15     lfnbase = "/store"
16     if not merged:
17 afanfani 1.4 lfnbase = os.path.join(lfnbase,"tmp")
18 afanfani 1.5 lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), ProcessedDataset )
19    
20 afanfani 1.2 return lfnbase
21    
22 afanfani 1.5 def PFNportion(ProcessedDataset,LocalUser=False):
23     pfnpath = os.path.join(getUserName(LocalUser=LocalUser), ProcessedDataset )
24 afanfani 1.2 return pfnpath
25    
26 afanfani 1.4 def getUnixUserName():
27     """
28     extract username from whoami
29     """
30     try:
31     UserName = runCommand("whoami")
32     UserName = string.strip(UserName)
33     except:
34     msg = "Error. Problem with whoami command"
35     raise CrabException(msg)
36     return UserName
37    
38 afanfani 1.2 def getDN():
39     """
40     extract DN from user proxy's identity
41     """
42     try:
43     userdn = runCommand("voms-proxy-info -identity")
44     userdn = string.strip(userdn)
45     except:
46     msg = "Error. Problem with voms-proxy-info -identity command"
47     raise CrabException(msg)
48     return userdn
49    
50     def gethnUserName():
51     """
52     extract user name from SiteDB
53     """
54     import urllib
55     hnUserName = None
56     userdn = getDN()
57     try:
58     sitedburl="https://cmsweb.cern.ch/sitedb/sitedb/json/index/dnUserName"
59     params = urllib.urlencode({'dn': userdn })
60     f = urllib.urlopen(sitedburl,params)
61     udata = f.read()
62     try:
63     userinfo= eval(udata)
64     except StandardError, ex:
65     msg = "Error. Problem extracting user name from %s : %s"%(sitedburl,ex)
66     raise CrabException(msg)
67     hnUserName = userinfo['user']
68     except:
69     msg = "Error. Problem extracting user name from %s"%sitedburl
70     msg += "Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
71     raise CrabException(msg)
72     if not hnUserName:
73     msg = "Error. There is no user name associated to DN %s in %s. You need to register in SiteDB with the instructions at https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"%(userdn,sitedburl)
74     print msg
75     raise CrabException(msg)
76     return hnUserName
77    
78 afanfani 1.5 def getUserName(LocalUser=False):
79 afanfani 1.4 """
80     extract user name from either SiteDB or Unix
81     """
82 afanfani 1.5 if LocalUser:
83     common.logger.message("==> Using as username the Unix user name")
84     UserName=getUnixUserName()
85     return UserName
86    
87     UserName=gethnUserName()
88 afanfani 1.4 return UserName
89    
90 afanfani 1.2 if __name__ == '__main__' :
91     """
92     """
93     from crab_logger import Logger
94     from WorkSpace import *
95 afanfani 1.4 continue_dir="/afs/cern.ch/user/a/afanfani/"
96 afanfani 1.2 cfg_params={'USER.logdir' : continue_dir }
97     common.work_space = WorkSpace(continue_dir, cfg_params)
98     log = Logger()
99     common.logger = log
100    
101 afanfani 1.4 print "xx %s xx"%getUserName()
102 afanfani 1.2 baselfn = LFNBase("datasetstring")
103     print baselfn
104    
105     unmergedlfn = LFNBase("datasetstring",merged=False)
106     print unmergedlfn
107     print PFNportion("datasetstring")