summaryrefslogtreecommitdiffstats
path: root/ipa-python
diff options
context:
space:
mode:
authorrcritten@redhat.com <rcritten@redhat.com>2007-08-17 10:03:33 -0400
committerrcritten@redhat.com <rcritten@redhat.com>2007-08-17 10:03:33 -0400
commit05f6a22110f058c089e4e9cd6d538264f439f5d2 (patch)
tree074e87badeb62720c98e3abf279458167722b8ed /ipa-python
parent92be45e3fe990bb650ed0b50d175176dd2d2f484 (diff)
downloadfreeipa-05f6a22110f058c089e4e9cd6d538264f439f5d2.tar.gz
freeipa-05f6a22110f058c089e4e9cd6d538264f439f5d2.tar.xz
freeipa-05f6a22110f058c089e4e9cd6d538264f439f5d2.zip
Implement user inactivation
Comment some functions Add attribute argument to get_user()
Diffstat (limited to 'ipa-python')
-rw-r--r--ipa-python/ipaclient.py33
-rw-r--r--ipa-python/rpcclient.py30
2 files changed, 53 insertions, 10 deletions
diff --git a/ipa-python/ipaclient.py b/ipa-python/ipaclient.py
index 626e0a111..783c7ec85 100644
--- a/ipa-python/ipaclient.py
+++ b/ipa-python/ipaclient.py
@@ -41,14 +41,19 @@ class IPAClient:
self.transport = rpcclient.RPCClient()
def set_principal(self,princ):
+ """Set the name of the principal that will be used for
+ LDAP proxy authentication"""
if self.local:
self.transport.set_principal(princ)
- def get_user(self,uid):
- result = self.transport.get_user(uid)
+ def get_user(self,uid,sattrs=None):
+ """Get a specific user by uid. If sattrs is set then only those
+ attributes will be returned."""
+ result = self.transport.get_user(uid,sattrs)
return user.User(result)
def add_user(self,user):
+ """Add a user. user is a dict of attribute/value pairs"""
realm = config.config.get_realm()
@@ -73,32 +78,48 @@ class IPAClient:
return result
def get_all_users(self):
+ """Get as a list of User objects all users in the directory"""
result = self.transport.get_all_users()
all_users = []
for (attrs) in result:
- if attrs is not None:
- all_users.append(user.User(attrs))
+ if attrs is not None:
+ all_users.append(user.User(attrs))
return all_users
def get_add_schema(self):
+ """Prototype for the GUI. Specify in the directory fields to
+ be displayed and what data to get for new users."""
result = self.transport.get_add_schema()
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."""
result = self.transport.find_users(criteria, sattrs)
users = []
for (attrs) in result:
- if attrs is not None:
- users.append(user.User(attrs))
+ if attrs is not None:
+ users.append(user.User(attrs))
return users
def update_user(self,olduser,newuser):
+ """Update a user entry. olduser is a dict of attribute/value pairs
+ of the original entry. newuser is a dict of attribute/value pairs
+ of the new entry."""
realm = config.config.get_realm()
result = self.transport.update_user(olduser,newuser)
return result
+
+ def mark_user_deleted(self,uid):
+ """Set a user as inactive by uid."""
+
+ realm = config.config.get_realm()
+
+ result = self.transport.mark_user_deleted(uid)
+ return result
diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py
index abff0f8fa..477b4e3cf 100644
--- a/ipa-python/rpcclient.py
+++ b/ipa-python/rpcclient.py
@@ -39,9 +39,12 @@ class RPCClient:
ipa.config.init_config()
def server_url(self):
+ """Build the XML-RPC server URL from our configuration"""
return "http://" + config.config.get_server() + "/ipa"
def setup_server(self):
+ """Create our XML-RPC server connection using kerberos
+ authentication"""
return xmlrpclib.ServerProxy(self.server_url(), KerbTransport())
def convert_entry(self,ent):
@@ -63,11 +66,15 @@ class RPCClient:
return user
- def get_user(self,username):
- """Get a specific user"""
+ def get_user(self,username,sattrs=None):
+ """Get a specific user. If sattrs is not None then only those
+ attributes will be returned. The result is a dict."""
server = self.setup_server()
try:
- result = server.get_user(username)
+ if sattrs is not None:
+ result = server.get_user(username,sattrs)
+ else:
+ result = server.get_user(username)
except xmlrpclib.Fault, fault:
raise xmlrpclib.Fault(fault.faultCode, fault.faultString)
except socket.error, (value, msg):
@@ -76,7 +83,9 @@ class RPCClient:
return result
def add_user(self,user):
- """Add a new user"""
+ """Add a new user. Takes as input a dict where the key is the
+ attribute name and the value is either a string or in the case
+ of a multi-valued field a list of values"""
server = self.setup_server()
try:
@@ -147,3 +156,16 @@ class RPCClient:
raise xmlrpclib.Fault(value, msg)
return result
+
+ def mark_user_deleted(self,uid):
+ """Mark a user as deleted/inactive"""
+ server = self.setup_server()
+
+ try:
+ result = server.mark_user_deleted(uid)
+ except xmlrpclib.Fault, fault:
+ raise xmlrpclib.Fault(fault.faultCode, fault.faultString)
+ except socket.error, (value, msg):
+ raise xmlrpclib.Fault(value, msg)
+
+ return result