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.11 by spiga, Sun Sep 21 10:36:13 2008 UTC vs.
Revision 1.14 by fanzago, Wed Oct 15 18:45:30 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  
# Line 18 | Line 18 | def LFNBase(PrimaryDataset='',ProcessedD
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 )
21 >    #lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
22 >    ### for tutorial
23 >    lfnbase = os.path.join(lfnbase, "user/test", getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
24  
25      return lfnbase
26  
# Line 26 | Line 28 | def getUnixUserName():
28      """
29      extract username from whoami
30      """
31 <    try:
30 <        UserName = runCommand("whoami")
31 <        UserName = string.strip(UserName)
32 <    except:
33 <        msg = "Error. Problem with whoami command"
34 <        raise CrabException(msg)
35 <    return UserName
31 >    return UnixUserName()
32  
33   def getDN():
34      """
# Line 48 | Line 44 | def getDN():
44          raise CrabException(msg)
45      return userdn.split('\n')[0]
46  
47 < def gethnUserName():
47 > def gethnUserNameFromSiteDB():
48      """
49      extract user name from SiteDB
50      """
51      hnUserName = None
52      userdn = getDN()
53      mySiteDB = SiteDBJSON()
58
54      try:
55          hnUserName = mySiteDB.dnUserName(dn=userdn)
56      except:
# Line 68 | Line 63 | def gethnUserName():
63          raise CrabException(msg)
64      return hnUserName
65  
66 +
67 + def gethnUserName():
68 +    """
69 +    cache the username extracted from SiteDB for 24hours
70 +    """
71 +    userconfigFileName="SiteDBusername.conf"
72 +    if not os.path.exists(userconfigFileName):
73 +        common.logger.debug(5,"Downloading from SiteDB username into %s"%userconfigFileName)
74 +        nameuser = gethnUserNameFromSiteDB()
75 +        userfile = open(userconfigFileName, 'w')
76 +        userfile.write(nameuser)
77 +        userfile.close()
78 +    else:
79 +        statinfo = os.stat(userconfigFileName)
80 +        ## if the file is older then 24 hours it is re-downloaded to update the configuration
81 +        oldness = 24*3600
82 +        if (time.time() - statinfo.st_ctime) > oldness:
83 +           common.logger.debug(5,"Downloading from SiteDB username into %s"%userconfigFileName)
84 +           nameuser = gethnUserNameFromSiteDB()
85 +           userfile = open(userconfigFileName, 'w')
86 +           userfile.write(nameuser)
87 +           userfile.close()
88 +        else:
89 +           userfile = open(userconfigFileName, 'r')
90 +           for line in userfile.readlines():
91 +               nameuser = line
92 +           userfile.close()
93 +           nameuser = string.strip(nameuser)
94 +    return nameuser  
95 +
96   def getUserName(LocalUser=False):
97      """
98      extract user name from either SiteDB or Unix

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines