ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/LFNBaseName.py
Revision: 1.10
Committed: Wed Aug 20 12:43:43 2008 UTC (16 years, 8 months ago) by fanzago
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_DLS_PHED1, CRAB_DLS_PHED, CRAB_2_3_2_Fnal, CRAB_2_3_2, CRAB_2_3_2_pre7, CRAB_2_3_2_pre5, CRAB_2_3_2_pre4, CRAB_2_3_2_pre3
Changes since 1.9: +12 -4 lines
Log Message:
changes related the new LFN and new datasetpath to publish (task 7471)

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 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")