ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/LFNBaseName.py
Revision: 1.8
Committed: Thu Jun 5 13:39:32 2008 UTC (16 years, 10 months ago) by spiga
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_2_3_1, CRAB_2_3_1_pre6, CRAB_2_3_1_pre5, CRAB_2_3_1_pre4, CRAB_2_3_1_pre3, CRAB_2_3_1_pre2, CRAB_2_3_1_pre1, CRAB_2_3_0, CRAB_2_3_0_pre6, CRAB_2_3_0_pre1, CRAB_2_2_2_pre5, CRAB_2_2_2_pre4
Branch point for: CRAB_2_3_0_br
Changes since 1.7: +1 -1 lines
Log Message:
fix on DN parsing vs OSG from Brian

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 afanfani 1.7 #search for a / to avoid picking up warning messages
46     userdn = userdn[userdn.find('/'):]
47 afanfani 1.2 except:
48     msg = "Error. Problem with voms-proxy-info -identity command"
49     raise CrabException(msg)
50 spiga 1.8 return userdn.split('\n')[0]
51 afanfani 1.2
52     def gethnUserName():
53     """
54     extract user name from SiteDB
55     """
56     import urllib
57     hnUserName = None
58     userdn = getDN()
59     try:
60     sitedburl="https://cmsweb.cern.ch/sitedb/sitedb/json/index/dnUserName"
61     params = urllib.urlencode({'dn': userdn })
62     f = urllib.urlopen(sitedburl,params)
63     udata = f.read()
64     try:
65     userinfo= eval(udata)
66     except StandardError, ex:
67 afanfani 1.6 msg = "Error. Problem extracting user name from %s : %s \n SiteDB call output: \n %s"%(sitedburl,ex,udata)
68 afanfani 1.2 raise CrabException(msg)
69     hnUserName = userinfo['user']
70     except:
71 afanfani 1.6 msg = "Error. Problem extracting user name from %s "%sitedburl
72     msg += "\n Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
73     msg += "\n SiteDB call output: \n %s"%udata
74 afanfani 1.2 raise CrabException(msg)
75     if not hnUserName:
76     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)
77     print msg
78     raise CrabException(msg)
79     return hnUserName
80    
81 afanfani 1.5 def getUserName(LocalUser=False):
82 afanfani 1.4 """
83     extract user name from either SiteDB or Unix
84     """
85 afanfani 1.5 if LocalUser:
86     common.logger.message("==> Using as username the Unix user name")
87     UserName=getUnixUserName()
88     return UserName
89    
90     UserName=gethnUserName()
91 afanfani 1.4 return UserName
92    
93 afanfani 1.2 if __name__ == '__main__' :
94     """
95     """
96     from crab_logger import Logger
97     from WorkSpace import *
98 afanfani 1.4 continue_dir="/afs/cern.ch/user/a/afanfani/"
99 afanfani 1.2 cfg_params={'USER.logdir' : continue_dir }
100     common.work_space = WorkSpace(continue_dir, cfg_params)
101     log = Logger()
102     common.logger = log
103    
104 afanfani 1.4 print "xx %s xx"%getUserName()
105 afanfani 1.2 baselfn = LFNBase("datasetstring")
106     print baselfn
107    
108     unmergedlfn = LFNBase("datasetstring",merged=False)
109     print unmergedlfn
110     print PFNportion("datasetstring")