NAME
lfc2 - New python interface to the LFC client API
lfc2thr - Thread enabled version of Python interface to the LFC
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_listlinks ( string path, string guid, int flags, lfc_list *listp )
-> struct lfc_linkinfo link
lfc_listreplica ( string path, string guid, int flags, lfc_list *listp
) -> struct lfc_filereplica replica
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
"""
# list the replicas of a given entry, starting from the GUID
"""
guid = "6a3164e0-a4d7-4abe-9f76-e3b8882735d1"
listp = lfc.lfc_list()
flag = lfc.CNS_LIST_BEGIN
print "Listing replicas for GUID " + guid
num_replicas=0
try:
while(1):
res = lfc.lfc_listreplica("",guid,flag,listp)
flag = lfc.CNS_LIST_CONTINUE
if res == None:
break
else:
rep_name = res.sfn
print "Replica: " + rep_name
num_replicas = num_replicas + 1
lfc.lfc_listreplica("",guid,lfc.CNS_LIST_END,listp)
print "Found " + str(num_replicas) + " replica(s)"
except Exception:
traceback.print_exc()
sys.exit(1)
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
SEE ALSO
LFC C interface man pages
LFC $Date: 2010-04-23 09:16:40 +0200 (Fri, 23 Apr 2010)lfc2_python(3)