diff options
author | Jan Cholasta <jcholast@redhat.com> | 2016-04-28 10:30:05 +0200 |
---|---|---|
committer | Jan Cholasta <jcholast@redhat.com> | 2016-06-03 09:00:34 +0200 |
commit | 6e44557b601f769d23ee74555a72e8b5cc62c0c9 (patch) | |
tree | eedd3e054b0709341b9f58c190ea54f999f7d13a /ipalib/plugins/batch.py | |
parent | ec841e5d7ab29d08de294b3fa863a631cd50e30a (diff) | |
download | freeipa-6e44557b601f769d23ee74555a72e8b5cc62c0c9.tar.gz freeipa-6e44557b601f769d23ee74555a72e8b5cc62c0c9.tar.xz freeipa-6e44557b601f769d23ee74555a72e8b5cc62c0c9.zip |
ipalib: move server-side plugins to ipaserver
Move the remaining plugin code from ipalib.plugins to ipaserver.plugins.
Remove the now unused ipalib.plugins package.
https://fedorahosted.org/freeipa/ticket/4739
Reviewed-By: David Kupka <dkupka@redhat.com>
Diffstat (limited to 'ipalib/plugins/batch.py')
-rw-r--r-- | ipalib/plugins/batch.py | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/ipalib/plugins/batch.py b/ipalib/plugins/batch.py deleted file mode 100644 index 84a650575..000000000 --- a/ipalib/plugins/batch.py +++ /dev/null @@ -1,143 +0,0 @@ -# Authors: -# Adam Young <ayoung@redhat.com> -# Rob Crittenden <rcritten@redhat.com> -# -# Copyright (c) 2010 Red Hat -# See file 'copying' for use and warranty information -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -""" -Plugin to make multiple ipa calls via one remote procedure call - -To run this code in the lite-server - -curl -H "Content-Type:application/json" -H "Accept:application/json" -H "Accept-Language:en" --negotiate -u : --cacert /etc/ipa/ca.crt -d @batch_request.json -X POST http://localhost:8888/ipa/json - -where the contents of the file batch_request.json follow the below example - -{"method":"batch","params":[[ - {"method":"group_find","params":[[],{}]}, - {"method":"user_find","params":[[],{"whoami":"true","all":"true"}]}, - {"method":"user_show","params":[["admin"],{"all":true}]} - ],{}],"id":1} - -The format of the response is nested the same way. At the top you will see - "error": null, - "id": 1, - "result": { - "count": 3, - "results": [ - - -And then a nested response for each IPA command method sent in the request - -""" - -import six - -from ipalib import api, errors -from ipalib import Command -from ipalib.parameters import Str, Any -from ipalib.output import Output -from ipalib.text import _ -from ipalib.request import context -from ipalib.plugable import Registry -from ipapython.version import API_VERSION - -if six.PY3: - unicode = str - -register = Registry() - -@register() -class batch(Command): - NO_CLI = True - - takes_args = ( - Any('methods*', - doc=_('Nested Methods to execute'), - ), - ) - - take_options = ( - Str('version', - cli_name='version', - doc=_('Client version. Used to determine if server will accept request.'), - exclude='webui', - flags=['no_option', 'no_output'], - default=API_VERSION, - autofill=True, - ), - ) - - has_output = ( - Output('count', int, doc=''), - Output('results', (list, tuple), doc='') - ) - - def execute(self, methods=None, **options): - results = [] - for arg in (methods or []): - params = dict() - name = None - try: - if 'method' not in arg: - raise errors.RequirementError(name='method') - if 'params' not in arg: - raise errors.RequirementError(name='params') - name = arg['method'] - if name not in self.Command: - raise errors.CommandError(name=name) - a, kw = arg['params'] - newkw = dict((str(k), v) for k, v in kw.items()) - params = api.Command[name].args_options_2_params(*a, **newkw) - newkw.setdefault('version', options['version']) - - result = api.Command[name](*a, **newkw) - self.info( - '%s: batch: %s(%s): SUCCESS', - getattr(context, 'principal', 'UNKNOWN'), - name, - ', '.join(api.Command[name]._repr_iter(**params)) - ) - result['error']=None - except Exception as e: - if isinstance(e, errors.RequirementError) or \ - isinstance(e, errors.CommandError): - self.info( - '%s: batch: %s', - context.principal, # pylint: disable=no-member - e.__class__.__name__ - ) - else: - self.info( - '%s: batch: %s(%s): %s', - context.principal, name, # pylint: disable=no-member - ', '.join(api.Command[name]._repr_iter(**params)), - e.__class__.__name__ - ) - if isinstance(e, errors.PublicError): - reported_error = e - else: - reported_error = errors.InternalError() - result = dict( - error=reported_error.strerror, - error_code=reported_error.errno, - error_name=unicode(type(reported_error).__name__), - error_kw=reported_error.kw, - ) - results.append(result) - return dict(count=len(results) , results=results) - |