Poster of Linux kernelThe best gift for a Linux geek
dpm2_python

dpm2_python

Section: Python Reference (3) Updated: $Date: 2010-02-04 13:08:39 +0100 (Thu, 04 Feb 2010) $
Local index Up

 

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


 

Index

NAME
SYNOPSIS
DESCRIPTION
FUNCTIONS
STRUCTURES
ERRORS
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
EXAMPLE
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 21:45:13 GMT, April 16, 2011