summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipalib/cli.py2
-rw-r--r--ipalib/frontend.py9
-rw-r--r--ipalib/plugins/f_user.py28
3 files changed, 29 insertions, 10 deletions
diff --git a/ipalib/cli.py b/ipalib/cli.py
index 5bebc88d5..5dd2c44f2 100644
--- a/ipalib/cli.py
+++ b/ipalib/cli.py
@@ -302,7 +302,7 @@ class CLI(object):
break
except errors.ValidationError, e:
error = e.error
- cmd(**kw)
+ cmd.output_for_cli(cmd(**kw))
def parse(self, cmd, argv):
parser = self.build_parser(cmd)
diff --git a/ipalib/frontend.py b/ipalib/frontend.py
index 65b053e6c..da4fd00b1 100644
--- a/ipalib/frontend.py
+++ b/ipalib/frontend.py
@@ -486,6 +486,7 @@ class Command(plugable.Plugin):
'params',
'args_to_kw',
'kw_to_args',
+ 'output_for_cli',
))
takes_options = tuple()
takes_args = tuple()
@@ -741,6 +742,14 @@ class Command(plugable.Plugin):
multivalue = True
yield arg
+ def output_for_cli(self, ret):
+ """
+ Output result of this command to command line interface.
+ """
+ assert type(ret) is dict, 'base output_for_cli() only works with dict'
+ for key in sorted(ret):
+ print '%s = %r' % (key, ret[key])
+
class Object(plugable.Plugin):
__public__ = frozenset((
diff --git a/ipalib/plugins/f_user.py b/ipalib/plugins/f_user.py
index 22fb8a278..571f6fa8d 100644
--- a/ipalib/plugins/f_user.py
+++ b/ipalib/plugins/f_user.py
@@ -75,12 +75,26 @@ api.register(user)
class user_add(crud.Add):
'Add a new user.'
- def execute(self, *args, **kw):
- """args[0] = uid of the user to add
- kw{container} is the location in the DIT to add the user, not
- required
- kw otherwise contains all the attributes
+
+ def execute(self, uid, **kw):
+ """
+ Execute the user-add operation.
+
+ The dn should not be passed as a keyword argument as it is constructed
+ by this method.
+
+ Returns the entry as it will be created in LDAP.
+
+ :param uid: The login name of the user being added.
+ :param kw: Keyword arguments for the other LDAP attributes.
"""
+ assert 'uid' not in kw
+ assert 'dn' not in kw
+ kw['uid'] = uid
+ kw['dn'] = self.api.Backend.ldap.get_user_dn(uid)
+
+ return kw
+
# FIXME: ug, really?
if not kw.get('container'):
user_container = servercore.DefaultUserContainer
@@ -162,10 +176,6 @@ class user_add(crud.Add):
result = servercore.add_entry(entry)
return result
- def forward(self, *args, **kw):
- result = super(crud.Add, self).forward(*args, **kw)
- if result:
- print "User %s added" % args[0]
api.register(user_add)