summaryrefslogtreecommitdiffstats
path: root/ipalib/frontend.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipalib/frontend.py')
-rw-r--r--ipalib/frontend.py34
1 files changed, 17 insertions, 17 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py
index 66be7939f..a9a3dfeaa 100644
--- a/ipalib/frontend.py
+++ b/ipalib/frontend.py
@@ -419,6 +419,11 @@ class Command(HasParam):
XML-RPC and the executed an the nearest IPA server.
"""
self.ensure_finalized()
+ version_provided = 'version' in options
+ if version_provided:
+ self.verify_client_version(unicode(options['version']))
+ else:
+ options['version'] = API_VERSION
params = self.args_options_2_params(*args, **options)
self.debug(
'raw: %s(%s)', self.name, ', '.join(self._repr_iter(**params))
@@ -429,11 +434,13 @@ class Command(HasParam):
self.debug(
'%s(%s)', self.name, ', '.join(self._repr_iter(**params))
)
- if not self.api.env.in_server and 'version' not in params:
- params['version'] = API_VERSION
self.validate(**params)
(args, options) = self.params_2_args_options(**params)
ret = self.run(*args, **options)
+ if not version_provided and isinstance(ret, dict):
+ messages.add_message(
+ API_VERSION, ret,
+ messages.VersionMissing(server_version=API_VERSION))
if (
isinstance(ret, dict)
and 'summary' in self.output
@@ -441,7 +448,7 @@ class Command(HasParam):
):
ret['summary'] = self.get_summary_default(ret)
if self.use_output_validation and (self.output or ret is not None):
- self.validate_output(ret, options.get('version', API_VERSION))
+ self.validate_output(ret, options['version'])
return ret
def soft_validate(self, values):
@@ -744,17 +751,7 @@ class Command(HasParam):
performs is executed remotely.
"""
if self.api.env.in_server:
- version_provided = 'version' in options
- if version_provided:
- self.verify_client_version(options['version'])
- else:
- options['version'] = API_VERSION
- result = self.execute(*args, **options)
- if not version_provided:
- messages.add_message(
- API_VERSION, result,
- messages.VersionMissing(server_version=API_VERSION))
- return result
+ return self.execute(*args, **options)
return self.forward(*args, **options)
def execute(self, *args, **kw):
@@ -1318,15 +1315,18 @@ class Method(Attribute, Command):
>>> list(api.Method)
['user_add']
- >>> api.Method.user_add() # Will call user_add.run()
+ >>> api.Method.user_add(version=u'2.88') # Will call user_add.run()
{'result': 'Added the user!'}
+ (The "version" argument is the API version to use.
+ The current API version can be found in ipalib.version.API_VERSION.)
+
Second, because `Method` is a subclass of `Command`, the ``user_add``
plugin can also be accessed through the ``api.Command`` namespace:
>>> list(api.Command)
['user_add']
- >>> api.Command.user_add() # Will call user_add.run()
+ >>> api.Command.user_add(version=u'2.88') # Will call user_add.run()
{'result': 'Added the user!'}
And third, ``user_add`` can be accessed as an attribute on the ``user``
@@ -1336,7 +1336,7 @@ class Method(Attribute, Command):
['user']
>>> list(api.Object.user.methods)
['add']
- >>> api.Object.user.methods.add() # Will call user_add.run()
+ >>> api.Object.user.methods.add(version=u'2.88') # Will call user_add.run()
{'result': 'Added the user!'}
The `Attribute` base class implements the naming convention for the