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

RELATED TO lfc2_python…

LFC C interface man pages