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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines