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.2 by afanfani, Tue Apr 8 10:02:19 2008 UTC vs.
Revision 1.10 by fanzago, Wed Aug 20 12:43:43 2008 UTC

# Line 7 | Line 7 | from crab_exceptions import *
7   from crab_util import runCommand
8   import common
9   import os, string
10 + from ProdCommon.SiteDB.SiteDB import SiteDBJSON
11  
12  
13 < def LFNBase(ProcessedDataset,merged=True):
13 > def LFNBase(PrimaryDataset,ProcessedDataset,merged=True,LocalUser=False):
14      """
15      """
16 <    lfnbase = "/store"
16 >    lfnbase = "/store"
17      if not merged:
18 <     lfnbase = os.path.join(lfnbase,"tmp")
19 <    
20 <    lfnbase = os.path.join(lfnbase, "user", gethnUserName(), ProcessedDataset )
18 >        lfnbase = os.path.join(lfnbase,"tmp")
19 >    #lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), ProcessedDataset )
20 >    ### FEDE FOR NEW LFN ###
21 >    if (PrimaryDataset == 'null'):
22 >        PrimaryDataset = ProcessedDataset
23 >    lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
24 >    ########################
25 >
26      return lfnbase
27  
28 < def PFNportion(ProcessedDataset):
29 <    pfnpath = os.path.join(gethnUserName(), ProcessedDataset )
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  
35 + def getUnixUserName():
36 +    """
37 +    extract username from whoami
38 +    """
39 +    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
46 +
47   def getDN():
48      """
49      extract DN from user proxy's identity
# Line 30 | Line 51 | def getDN():
51      try:
52          userdn = runCommand("voms-proxy-info -identity")
53          userdn = string.strip(userdn)
54 +        #search for a / to avoid picking up warning messages
55 +        userdn = userdn[userdn.find('/'):]
56      except:
57          msg = "Error. Problem with voms-proxy-info -identity command"
58          raise CrabException(msg)
59 <    return userdn
59 >    return userdn.split('\n')[0]
60  
61   def gethnUserName():
62      """
63      extract user name from SiteDB
64      """
42    import urllib
65      hnUserName = None
66      userdn = getDN()
67 +    mySiteDB = SiteDBJSON()
68 +
69      try:
70 <        sitedburl="https://cmsweb.cern.ch/sitedb/sitedb/json/index/dnUserName"
47 <        params = urllib.urlencode({'dn': userdn })
48 <        f = urllib.urlopen(sitedburl,params)
49 <        udata = f.read()
50 <        try:
51 <            userinfo= eval(udata)
52 <        except StandardError, ex:
53 <            msg = "Error. Problem extracting user name from %s : %s"%(sitedburl,ex)
54 <            raise CrabException(msg)
55 <        hnUserName = userinfo['user']
70 >        hnUserName = mySiteDB.dnUserName(dn=userdn)
71      except:
72 <        msg = "Error. Problem extracting user name from %s"%sitedburl
73 <        msg += "Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
72 >        msg = "Error. Problem extracting user name from SiteDB"
73 >        msg += "\n Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
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)
76 >        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
77          print msg
78          raise CrabException(msg)
79      return hnUserName
80  
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
92 +
93   if __name__ == '__main__' :
94      """
95      """
96      from crab_logger import Logger
97      from WorkSpace import *
98 <    continue_dir="/bohome/fanfani/CRAB"
98 >    continue_dir = os.path.expanduser("~")
99      cfg_params={'USER.logdir' : continue_dir }
100      common.work_space = WorkSpace(continue_dir, cfg_params)
101      log = Logger()
102      common.logger = log
103  
104 +    print "xx %s xx"%getUserName()
105      baselfn = LFNBase("datasetstring")
106 <    print baselfn    
106 >    print baselfn
107  
108      unmergedlfn = LFNBase("datasetstring",merged=False)
109 <    print unmergedlfn  
109 >    print unmergedlfn
110      print PFNportion("datasetstring")

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines