X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/python-afs.git/blobdiff_plain/53cfa21fb37a3613eafab536582df1bd06968650..e7d461670886e71b6e93b55778bf96b594a559d4:/afs/_pts.pyx diff --git a/afs/_pts.pyx b/afs/_pts.pyx index 30929ef..95bfe73 100644 --- a/afs/_pts.pyx +++ b/afs/_pts.pyx @@ -4,6 +4,12 @@ cdef import from "afs/ptuser.h": enum: PR_MAXNAMELEN + enum: + PRGRP + + enum: + ANONYMOUSID + ctypedef char prname[PR_MAXNAMELEN] struct namelist: @@ -18,6 +24,7 @@ cdef import from "afs/ptuser.h": int ubik_PR_IDToName(ubik_client *, afs_int32, idlist *, namelist *) int ubik_PR_INewEntry(ubik_client *, afs_int32, char *, afs_int32, afs_int32) int ubik_PR_NewEntry(ubik_client *, afs_int32, char *, afs_int32, afs_int32, afs_int32 *) + int ubik_PR_Delete(ubik_client *, afs_int32, afs_int32) cdef class PTS: cdef ubik_client * client @@ -152,3 +159,28 @@ cdef class PTS: if code != 0: raise Exception("Failed to create user: %s" % afs_error_message(code)) return cid + + def CreateGroup(self, name, owner, id=None): + cdef afs_int32 code, cid + + name = name[:PR_MAXNAMELEN].lower() + oid = self.NameToId(owner) + if oid == ANONYMOUSID: + raise Exception("Error creating group: owner does not exist") + + if id is not None: + cid = id + code = ubik_PR_INewEntry(self.client, 0, name, cid, oid) + else: + code = ubik_PR_NewEntry(self.client, 0, name, PRGRP, oid, &cid) + + if code != 0: + raise Exception("Failed to create group: %s" % afs_error_message(code)) + return cid + + def Delete(self, id): + cdef afs_int32 code + + code = ubik_PR_Delete(self.client, 0, id) + if code != 0: + raise Exception("Failed to delete user: %s" % afs_error_message(code))