SYNOPSIS
import lfc2 as lfc
import lfc2thr as lfc
lfc.init()
DESCRIPTION
The lfc module permits you to access the LFC client interface from python programs. The lfc module is a swig wrapping of the standard C interface. For detailed descriptions of each function see the individual man page of each function.
The lfcthr module is a version of the lfc module supporting multi-threaded
Python clients. Its usage is similar to the usage of the lfc module except
the obligatory initialisation call lfcthr.init() in the main program before
threads are started.
FUNCTIONS
lfc_aborttrans ( )lfc_access ( string path, int amode ) -> bool access
lfc_accessr ( string sfn, int amode ) -> bool access
lfc_addreplica ( string guid, struct lfc_fileid *file_uniqueid, string server, string sfn, char status, char f_type, string poolname, string fs )
lfc_addreplicax ( string guid, struct lfc_fileid *file_uniqueid, string server, string sfn, char status, char f_type, string poolname, string fs, char r_type, string setname )
lfc_chdir ( string path )
lfc_chmod ( string path, mode_t mode )
lfc_chown ( string path, uid_t new_uid, gid_t new_gid )
lfc_client_setAuthorizationId ( uid_t uid, gid_t gid, string mech, string id )
lfc_client_setVOMS_data ( string voname, stringlist vomsdata )
lfc_closedir ( lfc_DIR dirp )
lfc_creatg ( string path, string guid, mode_t mode )
lfc_delcomment ( string path )
lfc_delete ( string path )
lfc_delfilesbyguid ( ListOfString guids, int force ) -> ListOfInt result
lfc_delfilesbyname ( ListOfString names, intforce ) -> ListOfInt results
lfc_delfilesbypattern ( string path, string pattern, int force ) -> ListOf struct lfc_filestatus results
lfc_delreplica ( string guid, struct lfc_fileid *file_uniqueid, string sfn )
lfc_delreplicas ( ListOfString sfns, string se ) -> ListOfInt results
lfc_delreplicasbysfn ( ListOfString sfns, ListOfString guids ) -> ListOfInt results
lfc_endsess ( )
lfc_endtrans ( )
lfc_getacl ( string path, ) -> ListOf struct lfc_acl acls
lfc_getcomment ( string path ) -> string comment
lfc_getcwd ( ) -> string dir
lfc_getifcevers ( ) -> string version
lfc_getlinks ( string path, string guid ) -> ListOf struct lfc_linkinfo links
lfc_getreplica ( string path, string guid, string se ) -> ListOf struct lfc_filereplica replicas
lfc_getreplicas ( ListOfString guids, string se ) -> ListOf struct lfc_filereplicas replicas
lfc_getreplicasl ( ListOfString paths, string se ) -> ListOf struct lfc_filereplicas replicas
lfc_getreplicass ( ListOfString paths, ) -> ListOf struct lfc_filereplicas replicas
lfc_getreplicax ( string path, string guid, string se ) -> ListOf struct lfc_filereplicax replicas
lfc_lchown ( string path, uid_t new_uid, gid_t new_gid )
lfc_listreplicax ( string poolname, string server, string fs, int flags, lfc_list * listp ) -> struct lfc_filereplica replica
lfc_listrepset ( string setname, int flags, lfc_list *listp ) -> struct lfc_filereplicax replica
lfc_lstat ( string path ) -> struct lfc_filestat statbuf
lfc_mkdir ( string path, mode_t mode )
lfc_mkdirg ( string path, string guid, mode_t mode )
lfc_modreplica ( string sfn, string setname, string poolname, string server )
lfc_modreplicax ( string sfn, string setname, string poolname, string server, string fs, char r_type )
lfc_opendir ( string path ) -> lfc_DIR dir
lfc_opendirg ( string path, string guid ) -> lfc_DIR dir
lfc_opendirxg ( string server, string path, string guid ) -> lfc_DIR dir
lfc_ping ( string server ) -> string info
lfc_readdir ( lfc_DIR dirp ) -> struct dirent dirent
lfc_readdirc ( lfc_DIR dirp ) -> struct lfc_direncomm dirent
lfc_readdirg ( lfc_DIR dirp ) -> struct lfc_direnstatg dirent
lfc_readdirx ( lfc_DIR dirp ) -> struct lfc_direnstat dirent
lfc_readdirxc ( lfc_DIR dirp ) -> struct lfc_direnstatc dirent
lfc_readdirxp ( lfc_DIR dirp, string pattern, string se = None ) -> struct lfc_direnrep dirent
lfc_readdirxr ( lfc_DIR dirp, string se = None ) -> struct lfc_direnrep dirent
lfc_readlink ( string path ) -> string link
lfc_registerfiles ( ListOf struct lfc_filereg files ) -> ListOfInt results
lfc_rename ( string oldpath, string newpath )
lfc_rewinddir ( lfc_DIR dirp )
lfc_rmdir ( string path )
lfc_setacl ( string path, ListOf struct lfc_acl acls )
lfc_setatime ( string path, struct lfc_fileid file_uniqueid )
lfc_setcomment ( string path, string comment )
lfc_setfsize ( string path, struct lfc_fileid file_uniqueid, long filesize )
lfc_setfsizec ( string path, struct lfc_fileid file_uniqueid, long filesize, string csumtype, string csumvalue )
lfc_setfsizeg ( string guid, long filesize, string csumtype, string csumvalue )
lfc_setptime ( string sfn, long ptime )
lfc_setratime ( string sfn )
lfc_setrltime ( string sfn, long ltime )
lfc_setrstatus ( string sfn, char status )
lfc_setrtype ( string sfn, char type )
lfc_startsess ( string server, string comment )
lfc_starttrans ( string server, string comment )
lfc_stat ( string path ) -> struct lfc_filestat statbuf
lfc_statg ( string path, string guid ) -> struct lfc_filestatg statbuf
lfc_statr ( string sfn) ) -> struct lfc_filestatg statbuf
lfc_symlink ( string target, string linkname )
lfc_umask ( mode_t cmask ) -> mode_t oldmask
lfc_undelete ( string path )
lfc_unlink ( string path )
lfc_utime ( string path, struct utimbuf times )
lfc_entergrpmap ( gid_t gid, string groupname )
lfc_enterusrmap ( uid_t uid, string username )
lfc_getgrpbygid ( gid_t gid ) -> string group
lfc_getgrpbygids ( ListOfgid_t gids ) -> ListOfString groups
lfc_getgrpbynam ( string groupname ) -> gid_t gid
lfc_getgrpmap ( ) -> ListOf struct lfc_groupinfo infos
lfc_getidmap ( string username, ListOfString vo_roles ) -> uid_t uid, ListOf gid_t gids
lfc_getusrbynam ( string username ) -> uid_t uid
lfc_getusrbyuid ( uid_t uid ) -> string user
lfc_getusrmap ( ) -> ListOf struct lfc_userinfo userinfo
lfc_modifygrpmap ( gid_t gid, string newname )
lfc_modifyusrmap ( uid_t uid, string newname )
lfc_rmgrpmap ( gid_t gid, string groupname )
lfc_rmusrmap ( uid_t uid, string username )
STRUCTURES
Sometimes you need to specify a structure as an input argument (eg. struct lfc_acl, struct lfc_list, etc.). For that purpose, the module includes structure constructors, named exactly as the structure.Thus, to create struct lfc_acl or struct lfc_list, you have to do the following:
lfcacl = lfc.lfc_acl() lfclist = lfc.lfc_list()
If you want to see how to use it in a real case, please have a look at examples.
ERRORS
As you can see, no error code is returned. When an error occurs, an exception is raised with a description of the error.
EXAMPLE
#!/usr/bin/python import sys import traceback import lfc2 as lfc """ # stat an existing entry in the LFC and print the GUID """ name = "/grid/dteam/my.test" try: stat = lfc.lfc_statg(name,"") except Exception: traceback.print_exc() sys.exit(1) guid = stat.guid print "The GUID for " + name + " is " + guid
EXAMPLE
#!/usr/bin/python import sys import traceback import lfc2 as lfc """ # setting and retrieving a comment on a file """ file = "/grid/dteam/my.test" comment = "MyComment" try: lfc.lfc_setcomment(file,comment) comment = lfc.lfc_getcomment(file) print "Read back comment " + comment except Exception: traceback.print_exc() sys.exit(1)
EXAMPLE
#!/usr/bin/python """ # Using the lfc_readdirxr method """ import sys import traceback import lfc2 as lfc name = "/grid/dteam/my.test" try: dir = lfc.lfc_opendir(name) while 1: entry = lfc.lfc_readdirxr(dir) if entry == None: break print entry.d_name for i in range(entry.nbreplicas): print " ==> %s" % entry.rep[i].sfn lfc.lfc_closedir(dir) except TypeError, x: print " ==> None" except Exception: traceback.print_exc() sys.exit(1)
EXAMPLE
#!/usr/bin/python import sys import traceback import lfc2 as lfc """ # Using the lfc_getreplica method """ file = "/grid/dteam/my.test" try: list = lfc.lfc_getreplica(file, "", "") except Exception: traceback.print_exc() sys.exit(1) for i in list: print i.host print i.sfn
EXAMPLE
#!/usr/bin/python import sys import traceback import lfc2 as lfc """ # Using the lfc_getacl and lfc_setacl methods to add a user ACL """ file = "/grid/dteam/my.test" try: acls_list = lfc.lfc_getacl(file) except Exception: traceback.print_exc() sys.exit(1) for i in acls_list: print i.a_type print i.a_id print i.a_perm # When adding a first ACL for a given user, you also need to add the mask # When adding the second user ACL, it is not necessary anymore acl_user = lfc.lfc_acl() acl_mask = lfc.lfc_acl() acl_user.a_type = lfc.CNS_ACL_USER acl_user.a_id = 18701 # user id acl_user.a_perm = lfc.S_IROTH | lfc.S_IXOTH acl_mask.a_type = lfc.CNS_ACL_MASK acl_mask.a_id = 0 # no user id specified acl_mask.a_perm = lfc.S_IROTH | lfc.S_IXOTH acls_list.append(acl_user) acls_list.append(acl_mask) try: lfc.lfc_setacl(file, acls_list) except Exception: traceback.print_exc() sys.exit(1)
EXAMPLE
#!/usr/bin/python import sys import traceback import lfc2 as lfc """ # Using the lfc_getacl and lfc_setacl methods to remove a user ACL """ file = "/grid/dteam/my.test" try: acls_list = lfc.lfc_getacl(file) except Exception: traceback.print_exc() sys.exit(1) for i in acls_list: print i.a_type print i.a_id print i.a_perm del acls_list[1] # delete a given user ACL from the list of ACLs try: lfc.lfc_setacl(file, acls_list) except Exception: traceback.print_exc() sys.exit(1)
EXAMPLE
#!/usr/bin/env python import lfc2thr as lfc import os from threading import Thread class slave(Thread): def __init__ (self): Thread.__init__(self) def run(self): .... result = lfc.lfc_getreplica("", guid, "") .... return if __name__ == '__main__': os.environ['LFC_HOST'] = 'my_lfc.cern.ch' # Threaded library initialisation lfc.init() .... # Start up of threads for i in xrange(totalNumberOfSlaves): slv = slave(i) slv.start() ....
EXAMPLE
#!/usr/bin/python import sys import traceback import lfc2 as lfc """ # Using the lfc_getusrmap method """ try: list = lfc.lfc_getusrmap() except Exception: traceback.print_exc() sys.exit(1) for i in list: print i.userid + " " + i.username
EXAMPLE
#!/usr/bin/python import sys import traceback import lfc2 as lfc """ # Using the lfc_getgrpmap method """ try: list = lfc.lfc_getgrpmap() except Exception: traceback.print_exc() sys.exit(1) for i in list: print i.gid + " " + i.groupname
EXAMPLE
#!/usr/bin/python import sys import traceback import lfc2 as lfc """ # Using the lfc_getidmap method """ userdn = "user certificate DN" vo_roles = ["dteam"] try: uid, gids = lfc.lfc_getidmap (userdn, vo_roles) except Exception: traceback.print_exc() sys.exit(1) print "uid=", uid print "gids=", gids