summaryrefslogtreecommitdiffstats
path: root/ipa-python
diff options
context:
space:
mode:
Diffstat (limited to 'ipa-python')
-rw-r--r--ipa-python/ipaclient.py34
-rw-r--r--ipa-python/ipautil.py5
-rw-r--r--ipa-python/rpcclient.py46
3 files changed, 74 insertions, 11 deletions
diff --git a/ipa-python/ipaclient.py b/ipa-python/ipaclient.py
index 71def70f..fcfb29f1 100644
--- a/ipa-python/ipaclient.py
+++ b/ipa-python/ipaclient.py
@@ -94,12 +94,14 @@ class IPAClient:
return result
def find_users(self, criteria, sattrs=None):
- """Find users whose uid matches the criteria. Wildcards are
- acceptable. Returns a list of User objects."""
+ """Return a list: counter followed by a User object for each user that
+ matches the criteria. If the results are truncated, counter will
+ be set to -1"""
result = self.transport.find_users(criteria, sattrs)
+ counter = result[0]
- users = []
- for attrs in result:
+ users = [counter]
+ for attrs in result[1:]:
if attrs is not None:
users.append(user.User(attrs))
@@ -113,6 +115,14 @@ class IPAClient:
result = self.transport.update_user(user.origDataDict(), user.toDict())
return result
+ def delete_user(self,uid):
+ """Delete a user entry."""
+
+ realm = config.config.get_realm()
+
+ result = self.transport.delete_user(uid)
+ return result
+
def mark_user_deleted(self,uid):
"""Set a user as inactive by uid."""
@@ -202,7 +212,17 @@ class IPAClient:
def update_group(self,group):
"""Update a group entry."""
- realm = config.config.get_realm()
+ return self.transport.update_group(group.origDataDict(), group.toDict())
- result = self.transport.update_group(group.origDataDict(), group.toDict())
- return result
+ def delete_group(self,group_cn):
+ """Delete a group entry."""
+
+ return self.transport.delete_group(group_cn)
+
+ def add_group_to_group(self, group_cn, tgroup_cn):
+ """Add a group to an existing group.
+ group_cn is a cn of the group to add
+ tgroup_cn is the cn of the group to be added to
+ """
+
+ return self.transport.add_group_to_group(group_cn, tgroup_cn)
diff --git a/ipa-python/ipautil.py b/ipa-python/ipautil.py
index 74f7cfff..be6b037f 100644
--- a/ipa-python/ipautil.py
+++ b/ipa-python/ipautil.py
@@ -25,9 +25,10 @@ class CIDict(dict):
"""
Case-insensitive but case-respecting dictionary.
- Idea from python-ldap cidict, however this version extends 'dict'
- so it works properly with TurboGears.
+ This code is derived from python-ldap's cidict.py module,
+ written by stroeder: http://python-ldap.sourceforge.net/
+ This version extends 'dict' so it works properly with TurboGears.
If you extend UserDict, isinstance(foo, dict) returns false.
"""
diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py
index 3e5bb113..e0d6e2ee 100644
--- a/ipa-python/rpcclient.py
+++ b/ipa-python/rpcclient.py
@@ -151,8 +151,9 @@ class RPCClient:
return ipautil.unwrap_binary_data(result)
def find_users (self, criteria, sattrs=None):
- """Return a list containing a User object for each user that matches
- the criteria."""
+ """Return a list: counter followed by a User object for each user that
+ matches the criteria. If the results are truncated, counter will
+ be set to -1"""
server = self.setup_server()
try:
@@ -181,6 +182,19 @@ class RPCClient:
return ipautil.unwrap_binary_data(result)
+ def delete_user(self,uid):
+ """Delete a user. uid is the uid of the user to delete."""
+ server = self.setup_server()
+
+ try:
+ result = server.delete_user(uid)
+ except xmlrpclib.Fault, fault:
+ raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
+ except socket.error, (value, msg):
+ raise xmlrpclib.Fault(value, msg)
+
+ return result
+
def mark_user_deleted(self,uid):
"""Mark a user as deleted/inactive"""
server = self.setup_server()
@@ -344,3 +358,31 @@ class RPCClient:
raise xmlrpclib.Fault(value, msg)
return ipautil.unwrap_binary_data(result)
+
+ def delete_group(self,group_cn):
+ """Delete a group. group_cn is the cn of the group to be deleted."""
+ server = self.setup_server()
+
+ try:
+ result = server.delete_group(group_cn)
+ except xmlrpclib.Fault, fault:
+ raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
+ except socket.error, (value, msg):
+ raise xmlrpclib.Fault(value, msg)
+
+ return ipautil.unwrap_binary_data(result)
+
+ def add_group_to_group(self, group_cn, tgroup_cn):
+ """Add a group to an existing group.
+ group_cn is a cn of the group to add
+ tgroup_cn is the cn of the group to be added to
+ """
+ server = self.setup_server()
+ try:
+ result = server.add_group_to_group(group_cn, tgroup_cn)
+ except xmlrpclib.Fault, fault:
+ raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
+ except socket.error, (value, msg):
+ raise xmlrpclib.Fault(value, msg)
+
+ return ipautil.unwrap_binary_data(result)