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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines