ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/LFNBaseName.py
Revision: 1.18
Committed: Fri Oct 24 16:02:48 2008 UTC (16 years, 6 months ago) by ewv
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_2_4_3, CRAB_2_4_3_pre8, CRAB_2_4_3_pre7, CRAB_2_4_3_pre6, CRAB_2_4_3_pre5, CRAB_2_4_3_pre3, CRAB_2_4_3_pre2, CRAB_2_4_3_pre1, CRAB_2_4_2, CRAB_2_4_2_pre3, CRAB_2_4_2_pre2, CRAB_2_4_2_pre1
Changes since 1.17: +2 -2 lines
Log Message:
Transition to WMCore SiteScreening and SiteDB

File Contents

# User Rev Content
1 afanfani 1.2 #!/usr/bin/env python
2     """
3     _LFNBaseName_
4     """
5    
6     from crab_exceptions import *
7 spiga 1.13 from crab_util import runCommand, UnixUserName
8 afanfani 1.2 import common
9 afanfani 1.12 import os, string, time
10 ewv 1.18 from WMCore.Services.SiteDB.SiteDB import SiteDBJSON
11 afanfani 1.2
12    
13 spiga 1.17 def LFNBase(forced_path, PrimaryDataset='',ProcessedDataset='',merged=True,LocalUser=False,publish=False):
14 afanfani 1.2 """
15     """
16 fanzago 1.16 #lfnbase = "/store"
17     #if not merged:
18     #lfnbase = os.path.join(lfnbase,"tmp")
19 fanzago 1.10 if (PrimaryDataset == 'null'):
20     PrimaryDataset = ProcessedDataset
21 fanzago 1.16 # lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
22 spiga 1.17 lfnbase = os.path.join(forced_path, getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset)
23 ewv 1.9
24 afanfani 1.2 return lfnbase
25    
26 afanfani 1.4 def getUnixUserName():
27     """
28     extract username from whoami
29     """
30 spiga 1.13 return UnixUserName()
31 afanfani 1.4
32 afanfani 1.2 def getDN():
33     """
34     extract DN from user proxy's identity
35     """
36     try:
37     userdn = runCommand("voms-proxy-info -identity")
38     userdn = string.strip(userdn)
39 afanfani 1.7 #search for a / to avoid picking up warning messages
40     userdn = userdn[userdn.find('/'):]
41 afanfani 1.2 except:
42     msg = "Error. Problem with voms-proxy-info -identity command"
43     raise CrabException(msg)
44 ewv 1.9 return userdn.split('\n')[0]
45 afanfani 1.2
46 afanfani 1.12 def gethnUserNameFromSiteDB():
47 afanfani 1.2 """
48     extract user name from SiteDB
49     """
50     hnUserName = None
51     userdn = getDN()
52 ewv 1.9 mySiteDB = SiteDBJSON()
53 afanfani 1.2 try:
54 ewv 1.9 hnUserName = mySiteDB.dnUserName(dn=userdn)
55 afanfani 1.2 except:
56 ewv 1.9 msg = "Error. Problem extracting user name from SiteDB"
57     msg += "\n Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
58 afanfani 1.2 raise CrabException(msg)
59     if not hnUserName:
60 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
61 afanfani 1.2 print msg
62     raise CrabException(msg)
63     return hnUserName
64    
65 afanfani 1.12
66     def gethnUserName():
67     """
68     cache the username extracted from SiteDB for 24hours
69     """
70     userconfigFileName="SiteDBusername.conf"
71     if not os.path.exists(userconfigFileName):
72     common.logger.debug(5,"Downloading from SiteDB username into %s"%userconfigFileName)
73     nameuser = gethnUserNameFromSiteDB()
74     userfile = open(userconfigFileName, 'w')
75     userfile.write(nameuser)
76     userfile.close()
77     else:
78     statinfo = os.stat(userconfigFileName)
79     ## if the file is older then 24 hours it is re-downloaded to update the configuration
80     oldness = 24*3600
81     if (time.time() - statinfo.st_ctime) > oldness:
82     common.logger.debug(5,"Downloading from SiteDB username into %s"%userconfigFileName)
83     nameuser = gethnUserNameFromSiteDB()
84     userfile = open(userconfigFileName, 'w')
85     userfile.write(nameuser)
86     userfile.close()
87     else:
88     userfile = open(userconfigFileName, 'r')
89     for line in userfile.readlines():
90     nameuser = line
91     userfile.close()
92     nameuser = string.strip(nameuser)
93 ewv 1.18 return nameuser
94 afanfani 1.12
95 afanfani 1.5 def getUserName(LocalUser=False):
96 afanfani 1.4 """
97     extract user name from either SiteDB or Unix
98     """
99 afanfani 1.5 if LocalUser:
100 spiga 1.11 common.logger.debug(10,"Using as username the Unix user name")
101 afanfani 1.5 UserName=getUnixUserName()
102     return UserName
103 ewv 1.9
104 afanfani 1.5 UserName=gethnUserName()
105 afanfani 1.4 return UserName
106    
107 afanfani 1.2 if __name__ == '__main__' :
108     """
109     """
110     from crab_logger import Logger
111     from WorkSpace import *
112 ewv 1.9 continue_dir = os.path.expanduser("~")
113 afanfani 1.2 cfg_params={'USER.logdir' : continue_dir }
114     common.work_space = WorkSpace(continue_dir, cfg_params)
115     log = Logger()
116     common.logger = log
117    
118 ewv 1.9 print "xx %s xx"%getUserName()
119 afanfani 1.2 baselfn = LFNBase("datasetstring")
120 ewv 1.9 print baselfn
121 afanfani 1.2
122     unmergedlfn = LFNBase("datasetstring",merged=False)
123 ewv 1.9 print unmergedlfn
124 afanfani 1.2 print PFNportion("datasetstring")