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.11 by spiga, Sun Sep 21 10:36:13 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,publish=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 >    if (PrimaryDataset == 'null'):
20 >        PrimaryDataset = ProcessedDataset
21 >    lfnbase = os.path.join(lfnbase, "user", getUserName(LocalUser=LocalUser), PrimaryDataset, ProcessedDataset )
22 >
23      return lfnbase
24  
25 < def PFNportion(ProcessedDataset):
26 <    pfnpath = os.path.join(gethnUserName(), ProcessedDataset )
27 <    return pfnpath
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      """
# Line 30 | Line 41 | def getDN():
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
49 >    return userdn.split('\n')[0]
50  
51   def gethnUserName():
52      """
53      extract user name from SiteDB
54      """
42    import urllib
55      hnUserName = None
56      userdn = getDN()
57 +    mySiteDB = SiteDBJSON()
58 +
59      try:
60 <        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']
60 >        hnUserName = mySiteDB.dnUserName(dn=userdn)
61      except:
62 <        msg = "Error. Problem extracting user name from %s"%sitedburl
63 <        msg += "Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
62 >        msg = "Error. Problem extracting user name from SiteDB"
63 >        msg += "\n Check that you are registered in SiteDB, see https://twiki.cern.ch/twiki/bin/view/CMS/SiteDBForCRAB"
64          raise CrabException(msg)
65      if not hnUserName:
66 <        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)
66 >        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
67          print msg
68          raise CrabException(msg)
69      return hnUserName
70  
71 + def getUserName(LocalUser=False):
72 +    """
73 +    extract user name from either SiteDB or Unix
74 +    """
75 +    if LocalUser:
76 +       common.logger.debug(10,"Using as username the Unix user name")
77 +       UserName=getUnixUserName()
78 +       return UserName
79 +
80 +    UserName=gethnUserName()
81 +    return UserName
82 +
83   if __name__ == '__main__' :
84      """
85      """
86      from crab_logger import Logger
87      from WorkSpace import *
88 <    continue_dir="/bohome/fanfani/CRAB"
88 >    continue_dir = os.path.expanduser("~")
89      cfg_params={'USER.logdir' : continue_dir }
90      common.work_space = WorkSpace(continue_dir, cfg_params)
91      log = Logger()
92      common.logger = log
93  
94 +    print "xx %s xx"%getUserName()
95      baselfn = LFNBase("datasetstring")
96 <    print baselfn    
96 >    print baselfn
97  
98      unmergedlfn = LFNBase("datasetstring",merged=False)
99 <    print unmergedlfn  
99 >    print unmergedlfn
100      print PFNportion("datasetstring")

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines