X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/python-afs.git/blobdiff_plain/53cfa21fb37a3613eafab536582df1bd06968650..85af4cb8b326e4f0d07f7e183a3add570e9de9a1:/afs/_pts.pyx diff --git a/afs/_pts.pyx b/afs/_pts.pyx index 30929ef..707ab43 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: @@ -152,3 +158,21 @@ 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