ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/LFNBaseName.py
Revision: 1.6
Committed: Wed May 28 18:18:05 2008 UTC (16 years, 11 months ago) by afanfani
Content type: text/x-python
Branch: MAIN
Changes since 1.5: +4 -3 lines
Log Message:
*** empty log message ***

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 afanfani 1.6 msg = "Error. Problem extracting user name from %s : %s \n SiteDB call output: \n %s"%(sitedburl,ex,udata)
66 afanfani 1.2 raise CrabException(msg)
67     hnUserName = userinfo['user']
68     except:
69 afanfani 1.6 msg = "Error. Problem extracting user name from %s "%sitedburl
70     msg += "\n Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
71     msg += "\n SiteDB call output: \n %s"%udata
72 afanfani 1.2 raise CrabException(msg)
73     if not hnUserName:
74     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)
75     print msg
76     raise CrabException(msg)
77     return hnUserName
78    
79 afanfani 1.5 def getUserName(LocalUser=False):
80 afanfani 1.4 """
81     extract user name from either SiteDB or Unix
82     """
83 afanfani 1.5 if LocalUser:
84     common.logger.message("==> Using as username the Unix user name")
85     UserName=getUnixUserName()
86     return UserName
87    
88     UserName=gethnUserName()
89 afanfani 1.4 return UserName
90    
91 afanfani 1.2 if __name__ == '__main__' :
92     """
93     """
94     from crab_logger import Logger
95     from WorkSpace import *
96 afanfani 1.4 continue_dir="/afs/cern.ch/user/a/afanfani/"
97 afanfani 1.2 cfg_params={'USER.logdir' : continue_dir }
98     common.work_space = WorkSpace(continue_dir, cfg_params)
99     log = Logger()
100     common.logger = log
101    
102 afanfani 1.4 print "xx %s xx"%getUserName()
103 afanfani 1.2 baselfn = LFNBase("datasetstring")
104     print baselfn
105    
106     unmergedlfn = LFNBase("datasetstring",merged=False)
107     print unmergedlfn
108     print PFNportion("datasetstring")