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
DPM $Date: 2010-02-04 13:08:39 +0100 (Thu, 04 Feb 2010)dpm2_python(3)