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.8 by spiga, Thu Jun 5 13:39:32 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
9 > import os, string, time
10  
11  
12 < def LFNBase(ProcessedDataset,merged=True,LocalUser=False):
12 > def LFNBase(forced_path, PrimaryDataset='',ProcessedDataset='',merged=True,publish=False):
13      """
14      """
15 <    lfnbase = "/store"
16 <    if not merged:
17 <        lfnbase = os.path.join(lfnbase,"tmp")  
18 <    lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), ProcessedDataset )
19 <      
20 <    return lfnbase
21 <
22 < def PFNportion(ProcessedDataset,LocalUser=False):
23 <    pfnpath = os.path.join(getUserName(LocalUser=LocalUser), ProcessedDataset )
24 <    return pfnpath
15 >    if (PrimaryDataset == 'null'):
16 >        PrimaryDataset = ProcessedDataset
17 >    if PrimaryDataset != '':
18 >        if ( PrimaryDataset[0] == '/' ):  PrimaryDataset=PrimaryDataset[1:]  
19 >    lfnbase = os.path.join(forced_path, getUserName(), PrimaryDataset, ProcessedDataset)
20  
21 < def getUnixUserName():
27 <    """
28 <    extract username from whoami
29 <    """
30 <    try:
31 <        UserName = runCommand("whoami")
32 <        UserName = string.strip(UserName)
33 <    except:
34 <        msg = "Error. Problem with whoami command"
35 <        raise CrabException(msg)
36 <    return UserName
37 <
38 < def getDN():
39 <    """
40 <    extract DN from user proxy's identity
41 <    """
42 <    try:
43 <        userdn = runCommand("voms-proxy-info -identity")
44 <        userdn = string.strip(userdn)
45 <        #search for a / to avoid picking up warning messages
46 <        userdn = userdn[userdn.find('/'):]
47 <    except:
48 <        msg = "Error. Problem with voms-proxy-info -identity command"
49 <        raise CrabException(msg)
50 <    return userdn.split('\n')[0]
51 <
52 < def gethnUserName():
53 <    """
54 <    extract user name from SiteDB
55 <    """
56 <    import urllib
57 <    hnUserName = None
58 <    userdn = getDN()
59 <    try:
60 <        sitedburl="https://cmsweb.cern.ch/sitedb/sitedb/json/index/dnUserName"
61 <        params = urllib.urlencode({'dn': userdn })
62 <        f = urllib.urlopen(sitedburl,params)
63 <        udata = f.read()
64 <        try:
65 <            userinfo= eval(udata)
66 <        except StandardError, ex:
67 <            msg = "Error. Problem extracting user name from %s : %s \n SiteDB call output: \n %s"%(sitedburl,ex,udata)
68 <            raise CrabException(msg)
69 <        hnUserName = userinfo['user']
70 <    except:
71 <        msg = "Error. Problem extracting user name from %s "%sitedburl
72 <        msg += "\n Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
73 <        msg += "\n SiteDB call output: \n %s"%udata
74 <        raise CrabException(msg)
75 <    if not hnUserName:
76 <        msg = "Error. There is no user name associated to DN %s in %s. You need to register in SiteDB with the instructions at https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"%(userdn,sitedburl)
77 <        print msg
78 <        raise CrabException(msg)
79 <    return hnUserName
21 >    return lfnbase
22  
81 def getUserName(LocalUser=False):
82    """
83    extract user name from either SiteDB or Unix
84    """
85    if LocalUser:
86       common.logger.message("==> Using as username the Unix user name")
87       UserName=getUnixUserName()
88       return UserName
89    
90    UserName=gethnUserName()
91    return UserName
23  
24   if __name__ == '__main__' :
25      """
26      """
27 <    from crab_logger import Logger
28 <    from WorkSpace import *
98 <    continue_dir="/afs/cern.ch/user/a/afanfani/"
99 <    cfg_params={'USER.logdir' : continue_dir }
100 <    common.work_space = WorkSpace(continue_dir, cfg_params)
101 <    log = Logger()
102 <    common.logger = log
27 >    import logging
28 >    common.logger = logging
29  
30 <    print "xx %s xx"%getUserName()
30 >    print "xx %s xx"%getUserName()
31      baselfn = LFNBase("datasetstring")
32 <    print baselfn    
32 >    print baselfn
33  
34      unmergedlfn = LFNBase("datasetstring",merged=False)
35 <    print unmergedlfn  
35 >    print unmergedlfn
36      print PFNportion("datasetstring")

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines