ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/LFNBaseName.py
(Generate patch)

Comparing COMP/CRAB/python/LFNBaseName.py (file contents):
Revision 1.10 by fanzago, Wed Aug 20 12:43:43 2008 UTC vs.
Revision 1.18 by ewv, Fri Oct 24 16:02:48 2008 UTC

# Line 4 | Line 4 | _LFNBaseName_
4   """
5  
6   from crab_exceptions import *
7 < from crab_util import runCommand
7 > from crab_util import runCommand, UnixUserName
8   import common
9 < import os, string
10 < from ProdCommon.SiteDB.SiteDB import SiteDBJSON
9 > import os, string, time
10 > from WMCore.Services.SiteDB.SiteDB import SiteDBJSON
11  
12  
13 < def LFNBase(PrimaryDataset,ProcessedDataset,merged=True,LocalUser=False):
13 > def LFNBase(forced_path, PrimaryDataset='',ProcessedDataset='',merged=True,LocalUser=False,publish=False):
14      """
15      """
16 <    lfnbase = "/store"
17 <    if not merged:
18 <        lfnbase = os.path.join(lfnbase,"tmp")
19 <    #lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), ProcessedDataset )
20 <    ### FEDE FOR NEW LFN ###
16 >    #lfnbase = "/store"
17 >    #if not merged:
18 >        #lfnbase = os.path.join(lfnbase,"tmp")
19      if (PrimaryDataset == 'null'):
20          PrimaryDataset = ProcessedDataset
21 <    lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
22 <    ########################
21 >   # lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
22 >    lfnbase = os.path.join(forced_path, getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset)
23  
24      return lfnbase
25  
28 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    return pfnpath
34
26   def getUnixUserName():
27      """
28      extract username from whoami
29      """
30 <    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
30 >    return UnixUserName()
31  
32   def getDN():
33      """
# Line 58 | Line 43 | def getDN():
43          raise CrabException(msg)
44      return userdn.split('\n')[0]
45  
46 < def gethnUserName():
46 > def gethnUserNameFromSiteDB():
47      """
48      extract user name from SiteDB
49      """
50      hnUserName = None
51      userdn = getDN()
52      mySiteDB = SiteDBJSON()
68
53      try:
54          hnUserName = mySiteDB.dnUserName(dn=userdn)
55      except:
# Line 78 | Line 62 | def gethnUserName():
62          raise CrabException(msg)
63      return hnUserName
64  
65 +
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 +    return nameuser
94 +
95   def getUserName(LocalUser=False):
96      """
97      extract user name from either SiteDB or Unix
98      """
99      if LocalUser:
100 <       common.logger.message("==> Using as username the Unix user name")
100 >       common.logger.debug(10,"Using as username the Unix user name")
101         UserName=getUnixUserName()
102         return UserName
103  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines