summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2008-10-14 22:22:01 -0400
committerRob Crittenden <rcritten@redhat.com>2008-10-14 22:22:01 -0400
commitcfc8450efd92dc0fb6648e97b27416c67625adfb (patch)
tree8df315efa8690de696c89172a971b9f8dd9f861c /ipalib
parent1c3f81852cb8337e2305f968be5bd8165997d27e (diff)
downloadfreeipa-cfc8450efd92dc0fb6648e97b27416c67625adfb.tar.gz
freeipa-cfc8450efd92dc0fb6648e97b27416c67625adfb.tar.xz
freeipa-cfc8450efd92dc0fb6648e97b27416c67625adfb.zip
Port user-show to new CrudBackend framework
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/config.py3
-rw-r--r--ipalib/crud.py8
-rw-r--r--ipalib/plugins/b_xmlrpc.py2
-rw-r--r--ipalib/plugins/f_user.py31
4 files changed, 27 insertions, 17 deletions
diff --git a/ipalib/config.py b/ipalib/config.py
index a606a40b1..42bf7787b 100644
--- a/ipalib/config.py
+++ b/ipalib/config.py
@@ -25,8 +25,11 @@ DEFAULT_CONF='/etc/ipa/ipa.conf'
def generate_env(d={}):
default = dict(
+ container_accounts = 'cn=accounts',
basedn = 'dc=example,dc=com',
container_user = 'cn=users,cn=accounts',
+ container_group = 'cn=groups,cn=accounts',
+ container_service = 'cn=services,cn=accounts',
domain = LazyProp(get_domain),
interactive = True,
query_dns = True,
diff --git a/ipalib/crud.py b/ipalib/crud.py
index 5a60ac8c6..5cd7b0a41 100644
--- a/ipalib/crud.py
+++ b/ipalib/crud.py
@@ -87,12 +87,14 @@ class CrudBackend(backend.Backend):
"""
raise NotImplementedError('%s.create()' % self.name)
- def retrieve(self, primary_key):
+ def retrieve(self, primary_key, attributes):
"""
Retrieve an existing entry.
- This method should take a single argument, the primary_key of the
- entry in question.
+ This method should take a two arguments: the primary_key of the
+ entry in question and a list of the attributes to be retrieved.
+ If the list of attributes is None then all non-operational
+ attributes will be returned.
If such an entry exists, this method should return a dict
representing that entry. If no such entry exists, this method
diff --git a/ipalib/plugins/b_xmlrpc.py b/ipalib/plugins/b_xmlrpc.py
index 618f8385d..db2af1abd 100644
--- a/ipalib/plugins/b_xmlrpc.py
+++ b/ipalib/plugins/b_xmlrpc.py
@@ -58,6 +58,6 @@ class xmlrpc(Backend):
print "%s: %s" % (code, getattr(err,'__doc__',''))
else:
raise err
- return False
+ return {}
api.register(xmlrpc)
diff --git a/ipalib/plugins/f_user.py b/ipalib/plugins/f_user.py
index e3ecd2234..1e79c4b8d 100644
--- a/ipalib/plugins/f_user.py
+++ b/ipalib/plugins/f_user.py
@@ -110,7 +110,7 @@ class user_add(crud.Add):
assert 'dn' not in kw
ldap = self.api.Backend.ldap
kw['uid'] = uid
- kw['dn'] = ldap.get_user_dn(uid)
+ kw['dn'] = ldap.make_user_dn(uid)
if servercore.uid_too_long(kw['uid']):
raise errors.UsernameTooLong
@@ -244,18 +244,23 @@ api.register(user_find)
class user_show(crud.Get):
'Examine an existing user.'
- def execute(self, *args, **kw):
- uid=args[0]
- result = servercore.get_user_by_uid(uid, ["*"])
- return result
- def forward(self, *args, **kw):
- try:
- result = super(crud.Get, self).forward(*args, **kw)
- if not result: return
- for a in result:
- print a, ": ", result[a]
- except errors.NotFound:
- print "User %s not found" % args[0]
+ def execute(self, uid, **kw):
+ """
+ Execute the user-show operation.
+
+ The dn should not be passed as a keyword argument as it is constructed
+ by this method.
+
+ Returns the entry
+
+ :param uid: The login name of the user to retrieve.
+ :param kw: Not used.
+ """
+ ldap = self.api.Backend.ldap
+ dn = ldap.find_entry_dn("uid", uid, ["*"], "posixAccount")
+ # FIXME: should kw contain the list of attributes?
+ return ldap.retrieve(dn)
+
api.register(user_show)
class user_lock(frontend.Command):