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.13 by spiga, Fri Oct 10 15:41:14 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
9 > import os, string, time
10   from ProdCommon.SiteDB.SiteDB import SiteDBJSON
11  
12  
13 < def LFNBase(PrimaryDataset,ProcessedDataset,merged=True,LocalUser=False):
13 > def LFNBase(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 ###
19      if (PrimaryDataset == 'null'):
20          PrimaryDataset = ProcessedDataset
21      lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
24    ########################
22  
23      return lfnbase
24  
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
25   def getUnixUserName():
26      """
27      extract username from whoami
28      """
29 <    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
29 >    return UnixUserName()
30  
31   def getDN():
32      """
# Line 58 | Line 42 | def getDN():
42          raise CrabException(msg)
43      return userdn.split('\n')[0]
44  
45 < def gethnUserName():
45 > def gethnUserNameFromSiteDB():
46      """
47      extract user name from SiteDB
48      """
49      hnUserName = None
50      userdn = getDN()
51      mySiteDB = SiteDBJSON()
68
52      try:
53          hnUserName = mySiteDB.dnUserName(dn=userdn)
54      except:
# Line 78 | Line 61 | def gethnUserName():
61          raise CrabException(msg)
62      return hnUserName
63  
64 +
65 + def gethnUserName():
66 +    """
67 +    cache the username extracted from SiteDB for 24hours
68 +    """
69 +    userconfigFileName="SiteDBusername.conf"
70 +    if not os.path.exists(userconfigFileName):
71 +        common.logger.debug(5,"Downloading from SiteDB username into %s"%userconfigFileName)
72 +        nameuser = gethnUserNameFromSiteDB()
73 +        userfile = open(userconfigFileName, 'w')
74 +        userfile.write(nameuser)
75 +        userfile.close()
76 +    else:
77 +        statinfo = os.stat(userconfigFileName)
78 +        ## if the file is older then 24 hours it is re-downloaded to update the configuration
79 +        oldness = 24*3600
80 +        if (time.time() - statinfo.st_ctime) > oldness:
81 +           common.logger.debug(5,"Downloading from SiteDB username into %s"%userconfigFileName)
82 +           nameuser = gethnUserNameFromSiteDB()
83 +           userfile = open(userconfigFileName, 'w')
84 +           userfile.write(nameuser)
85 +           userfile.close()
86 +        else:
87 +           userfile = open(userconfigFileName, 'r')
88 +           for line in userfile.readlines():
89 +               nameuser = line
90 +           userfile.close()
91 +           nameuser = string.strip(nameuser)
92 +    return nameuser  
93 +
94   def getUserName(LocalUser=False):
95      """
96      extract user name from either SiteDB or Unix
97      """
98      if LocalUser:
99 <       common.logger.message("==> Using as username the Unix user name")
99 >       common.logger.debug(10,"Using as username the Unix user name")
100         UserName=getUnixUserName()
101         return UserName
102  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines