From 7ab49dda6db52c0960f50f1744aa19dc70d3c62f Mon Sep 17 00:00:00 2001 From: David Kupka Date: Tue, 29 Aug 2017 16:49:36 +0200 Subject: [PATCH] schema: Fix internal error in param-{find,show} with nonexistent object Reviewed-By: Rob Crittenden Reviewed-By: Fraser Tweedale --- ipaserver/plugins/schema.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/ipaserver/plugins/schema.py b/ipaserver/plugins/schema.py index b52500696..e4cb2961a 100644 --- a/ipaserver/plugins/schema.py +++ b/ipaserver/plugins/schema.py @@ -626,16 +626,25 @@ class param(BaseParam): return obj def _retrieve(self, metaobjectfull_name, name, **kwargs): + found = False try: metaobj = self.api.Command[metaobjectfull_name] plugin = self.api.Object['command'] except KeyError: - metaobj = self.api.Object[metaobjectfull_name] - plugin = self.api.Object['class'] + try: + metaobj = self.api.Object[metaobjectfull_name] + plugin = self.api.Object['class'] + except KeyError: + pass + else: + found = True + else: + found = True - for param in plugin._iter_params(metaobj): - if param.name == name: - return metaobj, param + if found: + for param in plugin._iter_params(metaobj): + if param.name == name: + return metaobj, param raise errors.NotFound( reason=_("%(pkey)s: %(oname)s not found") % { @@ -648,8 +657,11 @@ class param(BaseParam): metaobj = self.api.Command[metaobjectfull_name] plugin = self.api.Object['command'] except KeyError: - metaobj = self.api.Object[metaobjectfull_name] - plugin = self.api.Object['class'] + try: + metaobj = self.api.Object[metaobjectfull_name] + plugin = self.api.Object['class'] + except KeyError: + return tuple() return ((metaobj, param) for param in plugin._iter_params(metaobj))