Package Ganga :: Package Utility :: Package AMGAServerTools :: Module ganga_user_create
[hide private]
[frames] | no frames]

Source Code for Module Ganga.Utility.AMGAServerTools.ganga_user_create

  1  #!/bin/env python 
  2  #---------------------------------------------------------------------------- 
  3  # Name:         ganga_user_create.py 
  4  # Purpose:      creates ganga user account and 
  5  #               sets up home directory in the repository 
  6  # 
  7  # Author:       Alexander Soroko 
  8  # 
  9  # Created:      21/04/2006 
 10  #---------------------------------------------------------------------------- 
 11   
 12  import sys 
 13  import os 
 14  import re 
 15  from certificate import getCertificateSubject 
 16  from userManagement import UserDB 
 17  from directoryManagement import Collections 
 18   
 19   
 20  #_defaultMinVersion = "2.2" 
 21  #_defaultMinHexVersion = 0x20200f0 
 22  _defaultPlatform = 'slc3_gcc323' 
 23  _defaultExternalHome = "/afs/cern.ch/sw/ganga/external" 
 24  _externalPackage = {'name':'Optik', 'version': '1.4.1', 
 25                      'syspath': 'lib/python2.2/site-packages', 
 26                      'maxHexVersion': '0x20300f0'} 
 27   
 28  DEBUG = False 
 29  #DEBUG = True 
 30   
 31  #--------------------------------------------------------------------------- 
32 -def translateSubject(subject):
33 ss = subject.split('/') 34 if len(ss) < 2: 35 return subject 36 else: 37 ss = ', '.join(ss[1:]) 38 ss = re.sub(r'=(?!\s+)', '= ', ss) 39 ss = re.sub(r'(?<!\s)=', ' =', ss) 40 return ss
41 42 #---------------------------------------------------------------------------
43 -def create(user, 44 cert_subject = '', 45 cert_path = '', 46 cert_file = '', 47 home_dir = '', 48 **kwds):
49 50 # create user 51 udb = UserDB(**kwds) 52 try: 53 udb.userCreate(user, password = 'ganga') 54 except Exception, e: 55 print str(e) 56 return 57 try: 58 if not cert_subject: 59 if cert_path == '': 60 cert_path = '/afs/cern.ch/user/'+ user[0] + '/' + user + '/.globus' 61 cert_subject = getCertificateSubject(cert_path, cert_file) 62 if cert_subject: 63 udb.userSubjectAdd(user, translateSubject(cert_subject)) 64 else: 65 print "WARNING: Can't get certificate subject. \n\ 66 Certificate subject was't mapped to the user " + user 67 except Exception, e: 68 print str(e) 69 70 # create user directory 71 cls = Collections(**kwds) 72 if home_dir == '': 73 home_dir = '/users/' + user 74 try: 75 cls.createDir(home_dir) 76 except Exception, e: 77 print str(e) 78 return 79 try: 80 cls.chown(home_dir, user) 81 cls.chmod(home_dir, 'rwx') 82 except Exception, e: 83 print str(e) 84 return
85 86 #---------------------------------------------------------------------------
87 -def main():
88 if sys.hexversion < _externalPackage['maxHexVersion']: 89 path = os.path.join(_defaultExternalHome, 90 _externalPackage['name'], 91 _externalPackage['version'], 92 _defaultPlatform, 93 _externalPackage['syspath']) 94 sys.path.insert(1,path) 95 96 from optparse import OptionParser 97 parser = OptionParser() 98 parser.add_option("--cert-subject", dest = "cert_subject", 99 help = "subject of user certificate") 100 parser.add_option("--cert-file", dest = "cert_file", 101 help = "name of user certificate file") 102 parser.add_option("--cert-path", dest = "cert_path", 103 help = "path where to look for the user certificate") 104 parser.add_option("--home-dir", dest = "home_dir", 105 help = "name of user home directory in the repository") 106 parser.add_option("--host", dest = "host", 107 help = "url of the repository server") 108 parser.add_option("--port", dest = "port", type = "int", 109 help = "port number") 110 parser.add_option("--login", dest = "login", 111 help = "login name for the administrator") 112 parser.add_option("--password", dest = "password", 113 help = "administrator's password") 114 115 (options, args) = parser.parse_args() 116 117 if len(args) > 0: 118 user = args[0] 119 else: 120 print "No user name was given. Exiting..." 121 return 122 123 kwargs = {} 124 for o in ['cert_subject','cert_file','cert_path','home_dir','host','port','login','password']: 125 v = getattr(options, o) 126 if v: 127 kwargs[o] = v 128 129 create(user, **kwargs)
130 131 132 ################################################################################ 133 usage = """ 134 """ 135 136 if __name__ == '__main__': 137 main() 138