dpm2_python

Langue: en

Version: $Date: 2010-02-04 13:08:39 +0100 (Thu, 04 Feb 2010 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

NAME

dpm - Python interface to the DPM

SYNOPSIS

import dpm2 as dpm

DESCRIPTION

The dpm module permits you to access the DPM client interface from python programs. The dpm module is a swig wrapping of the standard C interface. For detailed descriptions of each function see the individual man page of each function.
 

FUNCTIONS

dpns_aborttrans ( )

dpns_access ( string path, int amode ) -> bool access

dpns_accessr ( string sfn, int amode ) -> bool access

dpns_addreplica ( string guid, struct dpns_fileid *file_uniqueid, string server, string sfn, char status, char f_type, string poolname, string fs )

dpns_addreplicax ( string guid, struct dpns_fileid *file_uniqueid, string server, string sfn, char status, char f_type, string poolname, string fs, char r_type, string setname )

dpns_chdir ( string path )

dpns_chmod ( string path, mode_t mode )

dpns_chown ( string path, uid_t new_uid, gid_t new_gid )

dpns_client_setAuthorizationId ( uid_t uid, gid_t gid, string mech, string id )

dpns_client_setVOMS_data ( string voname, stringlist vomsdata )

dpns_closedir ( dpns_DIR dirp )

dpns_creat ( string path, mode_t mode )

dpns_delcomment ( string path )

dpns_delete ( string path )

dpns_delreplica ( string guid, struct dpns_fileid *file_uniqueid, string sfn )

dpns_delreplicasbysfn ( ListOfString sfns, ListOfString guids ) -> ListOfInt results

dpns_endsess ( )

dpns_endtrans ( )

dpns_getacl ( string path, ) -> ListOf struct dpns_acl acls

dpns_getcomment ( string path ) -> string comment

dpns_getcwd ( ) -> string dir

dpns_getifcevers ( ) -> string version

dpns_getlinks ( string path, string guid ) -> ListOf struct dpns_linkinfo links

dpns_getreplica ( string path, string guid, string se ) -> ListOf struct dpns_filereplica replicas

dpns_getreplicax ( string path, string guid, string se ) -> ListOf struct dpns_filereplicax replicas

dpns_lchown ( string path, uid_t new_uid, gid_t new_gid )

dpns_listlinks ( string path, string guid, int flags, dpns_list *listp ) -> struct dpns_linkinfo link

dpns_listreplica ( string path, string guid, int flags, dpns_list *listp ) -> struct dpns_filereplica replica

dpns_listreplicax ( string poolname, string server, string fs, int flags, dpns_list * listp ) -> struct dpns_filereplica replica

dpns_listrepset ( string setname, int flags, dpns_list *listp ) -> struct dpns_filereplicax replica

dpns_lstat ( string path ) -> struct dpns_filestat statbuf

dpns_mkdir ( string path, mode_t mode )

dpns_modreplica ( string sfn, string setname, string poolname, string server )

dpns_modreplicax ( string sfn, string setname, string poolname, string server, string fs, char r_type )

dpns_opendir ( string path ) -> dpns_DIR dir

dpns_opendirxg ( string server, string path, string guid ) -> dpns_DIR dir

dpns_ping ( string server ) -> string info

dpns_readdir ( dpns_DIR dirp ) -> struct dirent dirent

dpns_readdirc ( dpns_DIR dirp ) -> struct dpns_direncomm dirent

dpns_readdirg ( dpns_DIR dirp ) -> struct dpns_direnstatg dirent

dpns_readdirx ( dpns_DIR dirp ) -> struct dpns_direnstat dirent

dpns_readdirxc ( dpns_DIR dirp ) -> struct dpns_direnstatc dirent

dpns_readdirxp ( dpns_DIR dirp, string pattern, string se = None ) -> struct dpns_direnrep dirent

dpns_readdirxr ( dpns_DIR dirp, string se = None ) -> struct dpns_direnrep dirent

dpns_readlink ( string path ) -> string link

dpns_rename ( string oldpath, string newpath )

dpns_rewinddir ( dpns_DIR dirp )

dpns_rmdir ( string path )

dpns_setacl ( string path, ListOf struct dpns_acl acls )

dpns_setatime ( string path, struct dpns_fileid file_uniqueid )

dpns_setcomment ( string path, string comment )

dpns_setfsize ( string path, struct dpns_fileid file_uniqueid, long filesize )

dpns_setfsizec ( string path, struct dpns_fileid file_uniqueid, long filesize, string csumtype, string csumvalue )

dpns_setptime ( string sfn, long ptime )

dpns_setratime ( string sfn )

dpns_setrltime ( string sfn, long ltime )

dpns_setrstatus ( string sfn, char status )

dpns_setrtype ( string sfn, char type )

dpns_startsess ( string server, string comment )

dpns_starttrans ( string server, string comment )

dpns_stat ( string path ) -> struct dpns_filestat statbuf

dpns_statg ( string path, string guid ) -> struct dpns_filestatg statbuf

dpns_statr ( string sfn) ) -> struct dpns_filestatg statbuf

dpns_symlink ( string target, string linkname )

dpns_umask ( mode_t cmask ) -> mode_t oldmask

dpns_undelete ( string path )

dpns_unlink ( string path )

dpns_utime ( string path, struct utimbuf times )

dpns_entergrpmap ( gid_t gid, string groupname )

dpns_enterusrmap ( uid_t uid, string username )

dpns_getgrpbygid ( gid_t gid ) -> string group

dpns_getgrpbygids ( ListOfgid_t gids ) -> ListOfString groups

dpns_getgrpbynam ( string groupname ) -> gid_t gid

dpns_getgrpmap ( ) -> ListOf struct dpns_groupinfo infos

dpns_getusrbynam ( string username ) -> uid_t uid

dpns_getusrbyuid ( uid_t uid ) -> string user

dpns_getusrmap ( ) -> ListOf struct dpns_userinfo userinfo

dpns_modifygrpmap ( gid_t gid, string newname )

dpns_modifyusrmap ( uid_t uid, string newname )

dpns_rmgrpmap ( gid_t gid, string groupname )

dpns_rmusrmap ( uid_t uid, string username )

dpm_getpoolfs ( string poolname ) -> ListOf struct dpm_fs dpm_fs

dpm_getpools ( ) -> ListOf struct dpm_pool dpm_pools

dpm_getprotocols ( ) -> ListOfString protocols

dpm_getspacemd ( ListOfString s_tokens ) -> ListOf struct dpm_space_metadata spacemd

dpm_getspacetoken ( string u_token ) -> ListOfString s_tokens

dpm_addfs ( string poolname, string server, string fs, int status )

dpm_addpool ( struct dpm_pool dpm_pool )

dpm_delreplica ( string pfn )

dpm_modifyfs ( string server, string fs, int status )

dpm_modifypool ( struct dpm_pool dpm_pool )

dpm_ping ( string host ) -> string info

dpm_releasespace ( string s_token, int force )

dpm_reservespace ( char s_type, string u_token, char ret_policy, char ac_latency, long req_t_space, long req_g_space, long req_lifetime, ListOfInt gids, string poolname ) -> char actual_s_type, long actual_t_space, long actual_g_space, long actual_lifetime, string s_token

dpm_rmfs ( string server, string fs )

dpm_rmpool ( string poolname )

dpm_updatespace ( string s_token, long req_t_space, long req_g_space, long req_lifetime, ListOfInt gids ) -> long actual_t_space, long actual_g_space, long actual_lifetime

STRUCTURES

Sometimes you need to specify a structure as an input argument (eg. struct dpns_acl, struct dpns_list, struct dpm_pool, etc.). For that purpose, the module includes structure constructors, named exactly as the structure.

Thus, to create struct dpns_acl, struct dpns_list or struct dpmm_pool, you have to do the following:

     dpnsacl = dpm.dpns_acl()
     dpnslist = dpm.dpns_list()
     dpmpool = dpm.dpm_pool()
 

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 dpm2 as dpm
 
 """
 # list the replicas of a given entry, starting from the file name
 """
 
 file = "/dpm/cern.ch/home/dteam/file.test"
 
 listp = dpm.dpns_list()
 flag = dpm.CNS_LIST_BEGIN
 
 print "Listing replicas for FILE " + file
 
 num_replicas=0
 
 try:
    while(1):
       res = dpm.dpns_listreplica(file,"",flag,listp)
       flag = dpm.CNS_LIST_CONTINUE
 
       if res == None:
          break
       else:
          rep_name = res.sfn
          print "Replica: " + rep_name
          num_replicas = num_replicas + 1
 
    dpm.dpns_listreplica(file,"",dpm.CNS_LIST_END,listp)
    print "Found " + str(num_replicas) + " replica(s)"
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 """
 # Using the dpns_readdirxr method
 """
 
 import sys
 import traceback
 import dpm2 as dpm
 
 name = "/dpm/cern.ch/home/dteam/";
 
 try:
    dir = dpm.dpns_opendir(name)
 
    while 1:
       entry = dpm.dpns_readdirxr(dir)
       if entry == None:
          break
       print entry.d_name
       for i in range(entry.nbreplicas):
          print " ==> %s" % entry.rep[i].sfn
 
    dpm.dpns_closedir(dir)
 except TypeError, x:
    print " ==> None"
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpns_getreplica method
 """
 
 file = "/dpm/cern.ch/home/dteam/file.test"
 
 try:
    list = dpm.dpns_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 dpm2 as dpm
 
 """
 # Using the dpns_getacl and dpns_setacl methods to add a user ACL
 """
 
 file = "/dpm/cern.ch/home/dteam/file.test"
 
 try:
    acls_list = dpm.dpns_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 = dpm.dpns_acl()
 acl_mask = dpm.dpns_acl()
 
 acl_user.a_type = lfc.CNS_ACL_USER
 acl_user.a_id = 18701           # user id
 acl_user.a_perm = 5
 
 acl_mask.a_type = lfc.CNS_ACL_MASK
 acl_mask.a_id = 0                       # no user id specified
 acl_mask.a_perm = 5
 
 acls_list.append(acl_user)
 acls_list.append(acl_mask)
 
 try:
    dpm.dpns_setacl(file, acls_list)
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpns_getacl and dpns_setacl methods to remove a user ACL
 """
 
 file = "/dpm/cern.ch/home/dteam/file.test"
 
 try:
    acls_list = dpm.dpns_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:
    dpm.dpns_setacl(file, acls_list)
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpns_getusrmap method
 """
 
 try:
    list = dpm.dpns_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 dpm2 as dpm
 
 """
 # Using the dpns_getgrpmap method
 """
 
 try:
    list = dpm.dpns_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 dpm2 as dpm
 
 """
 # Using the dpm_addfs method
 """
 
 try:
    dpm.dpm_addfs("mypool", "mydiskserver.domain.com", "/mountpoint", \
                         dpm.FS_READONLY)
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_modifyfs method
 """
 
 try:
    dpm.dpm_modifyfs("mydiskserver.domain.com", "/mountpoint", \
                         dpm.FS_READONLY)
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_rmfs method
 """
 
 try:
    dpm.dpm_rmfs("mypool", "mydiskserver.domain.com", "/mountpoint")
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_addpool method
 """
 
 dpmpool = dpm.dpm_pool()
 dpmpool.poolname = "mypool"
 dpmpool.defsize = 209715200
 dpmpool.def_lifetime = 604800
 dpmpool.defpintime = 604800
 dpmpool.max_lifetime = 604800
 dpmpool.max_pintime = 604800
 dpmpool.nbgids = 1
 dpmpool.gids = [0]
 dpmpool.ret_policy = 'R'
 dpmpool.s_type = 'D'
 
 try:
    dpm.dpm_addpool(dpmpool)
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_modifypool method
 """
 
 dpmpool = dpm.dpm_pool()
 dpmpool.poolname = "mypool"
 dpmpool.defsize = 209715200
 dpmpool.def_lifetime = 604800
 dpmpool.defpintime = 604800
 dpmpool.max_lifetime = 604800
 dpmpool.max_pintime = 604800
 dpmpool.nbgids = 1
 dpmpool.gids = [0]
 dpmpool.ret_policy = 'R'
 dpmpool.s_type = 'D'
 
 try:
    dpm.dpm_modifypool(dpmpool)
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_rmpool method
 """
 
 try:
    dpm.dpm_rmpool("mypool")
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_getpoolfs method
 """
 
 try:
    list = dpm.dpm_getpoolfs("mypool")
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 print len(list)
 for i in list:
    print "POOL " + i.poolname + " SERVER " + i.server + " FS " + i.fs \
       + " CAPACITY " + i.capacity + " FREE " + i.free
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_getpools method
 """
 
 try:
    list = dpm.dpm_getpools()
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 print len(list)
 for i in list:
    print "POOL " + i.poolname + " CAPACITY " + i.capacity + " FREE " + i.free
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_getprotocols method
 """
 
 try:
    list = dpm.dpm_getprotocols()
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 print len(list)
 for i in list:
    print i
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_getspacemd method
 """
 
 try:
    list = dpm.dpm_getspacemd(["myspacetoken"])
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 print len(list)
 for i in list:
    print "TYPE " + i.s_type + " SPACETOKEN " i.s_token + " USERTOKEN " \
       + i.u_token + " TOTAL " + i.t_space + " GUARANTUEED " + i.g_space \
       + " UNUSED " + i.u_space + " POOL " + i.poolname
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_getspacetoken method
 """
 
 try:
    list = dpm.dpm_getspacetoken("myspacetokendesc")
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 print len(list)
 for i in list:
    print i
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_reservespace method
 """
 
 try:
    actual_s_type,actual_t_space,actual_g_space,actual_lifetime,s_token = \
                 dpm.dpm_reservespace('D', "myspacetokendesc", 'R', 'O', 209715200, \
                 209715200, 2592000, 0, "mypoolname")
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 print "TYPE " + actual_s_type + " TOTAL " + actual_t_space + " GUARANTEED " \
    + actual_g_space + " LIFETIME " + actual_lifetime + " TOKEN " + s_token
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_updatespace method
 """
 
 try:
    actual_t_space,actual_g_space,actual_lifetime = \
                 dpm.dpm_updatespace("myspacetoken", 209715200, 209715200, 2592000)
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 print " TOTAL " + actual_t_space + " GUARANTEED " + actual_g_space \
    + " LIFETIME " + actual_lifetime
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_releasespace method
 """
 
 try:
    dpm.dpm_releasespace("myspacetoken", 0)
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 
 

EXAMPLE

 #!/usr/bin/python
 
 import sys
 import traceback
 import dpm2 as dpm
 
 """
 # Using the dpm_ping method
 """
 
 try:
    info = dpm.dpm_ping("mydpmserver.domain.com")
 except Exception:
    traceback.print_exc()
    sys.exit(1)
 
 print info
 
 
 

SEE ALSO

DPM C interface man pages