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 |
fanzago |
1.10 |
def LFNBase(PrimaryDataset,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 |
fanzago |
1.10 |
#lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), ProcessedDataset )
|
20 |
|
|
### FEDE FOR NEW LFN ###
|
21 |
|
|
if (PrimaryDataset == 'null'):
|
22 |
|
|
PrimaryDataset = ProcessedDataset
|
23 |
|
|
lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
|
24 |
|
|
########################
|
25 |
ewv |
1.9 |
|
26 |
afanfani |
1.2 |
return lfnbase
|
27 |
|
|
|
28 |
fanzago |
1.10 |
def PFNportion(PrimaryDataset,ProcessedDataset,LocalUser=False):
|
29 |
|
|
### FEDE FOR NEW LFN ###
|
30 |
|
|
#pfnpath = os.path.join(getUserName(LocalUser=LocalUser), ProcessedDataset )
|
31 |
|
|
pfnpath = os.path.join(getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
|
32 |
|
|
########################
|
33 |
afanfani |
1.2 |
return pfnpath
|
34 |
|
|
|
35 |
afanfani |
1.4 |
def getUnixUserName():
|
36 |
|
|
"""
|
37 |
|
|
extract username from whoami
|
38 |
|
|
"""
|
39 |
|
|
try:
|
40 |
|
|
UserName = runCommand("whoami")
|
41 |
|
|
UserName = string.strip(UserName)
|
42 |
|
|
except:
|
43 |
|
|
msg = "Error. Problem with whoami command"
|
44 |
|
|
raise CrabException(msg)
|
45 |
|
|
return UserName
|
46 |
|
|
|
47 |
afanfani |
1.2 |
def getDN():
|
48 |
|
|
"""
|
49 |
|
|
extract DN from user proxy's identity
|
50 |
|
|
"""
|
51 |
|
|
try:
|
52 |
|
|
userdn = runCommand("voms-proxy-info -identity")
|
53 |
|
|
userdn = string.strip(userdn)
|
54 |
afanfani |
1.7 |
#search for a / to avoid picking up warning messages
|
55 |
|
|
userdn = userdn[userdn.find('/'):]
|
56 |
afanfani |
1.2 |
except:
|
57 |
|
|
msg = "Error. Problem with voms-proxy-info -identity command"
|
58 |
|
|
raise CrabException(msg)
|
59 |
ewv |
1.9 |
return userdn.split('\n')[0]
|
60 |
afanfani |
1.2 |
|
61 |
|
|
def gethnUserName():
|
62 |
|
|
"""
|
63 |
|
|
extract user name from SiteDB
|
64 |
|
|
"""
|
65 |
|
|
hnUserName = None
|
66 |
|
|
userdn = getDN()
|
67 |
ewv |
1.9 |
mySiteDB = SiteDBJSON()
|
68 |
|
|
|
69 |
afanfani |
1.2 |
try:
|
70 |
ewv |
1.9 |
hnUserName = mySiteDB.dnUserName(dn=userdn)
|
71 |
afanfani |
1.2 |
except:
|
72 |
ewv |
1.9 |
msg = "Error. Problem extracting user name from SiteDB"
|
73 |
|
|
msg += "\n Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
|
74 |
afanfani |
1.2 |
raise CrabException(msg)
|
75 |
|
|
if not hnUserName:
|
76 |
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
|
77 |
afanfani |
1.2 |
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 |
ewv |
1.9 |
|
90 |
afanfani |
1.5 |
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 |
ewv |
1.9 |
continue_dir = os.path.expanduser("~")
|
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 |
ewv |
1.9 |
print "xx %s xx"%getUserName()
|
105 |
afanfani |
1.2 |
baselfn = LFNBase("datasetstring")
|
106 |
ewv |
1.9 |
print baselfn
|
107 |
afanfani |
1.2 |
|
108 |
|
|
unmergedlfn = LFNBase("datasetstring",merged=False)
|
109 |
ewv |
1.9 |
print unmergedlfn
|
110 |
afanfani |
1.2 |
print PFNportion("datasetstring")
|