URL: https://github.com/freeipa/freeipa/pull/1033
Author: felipevolpone
Title: #1033: Fixing internal error in param-{find,show}
Action: opened
PR body:
"""
Fixing internal error in param-{find,show} with nonexistent object and showing
properly error message.
Since PR #1013 probably won't be updated anymore, I created this one with
previous work plus some additional changes.
https://pagure.io/freeipa/issue/7134
"""
To pull the PR as Git branch:
git remote add ghfreeipa https://github.com/freeipa/freeipa
git fetch ghfreeipa pull/1033/head:pr1033
git checkout pr1033
From 986b15d057e520d3e4fedb3c20fde8831ea6ee49 Mon Sep 17 00:00:00 2001
From: David Kupka <[email protected]>
Date: Tue, 29 Aug 2017 16:49:36 +0200
Subject: [PATCH 1/2] schema: Fix internal error in param-{find,show} with
nonexistent object
---
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 1dbbec5f03..2ed669ded1 100644
--- a/ipaserver/plugins/schema.py
+++ b/ipaserver/plugins/schema.py
@@ -624,16 +624,25 @@ def _get_obj(self, metaobj_param, **kwargs):
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") % {
@@ -646,8 +655,11 @@ def _search(self, metaobjectfull_name, **kwargs):
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))
From 4699d07164d978d22aa1eb26af4d2d37a93636cf Mon Sep 17 00:00:00 2001
From: Felipe Volpone <[email protected]>
Date: Fri, 1 Sep 2017 13:44:08 -0300
Subject: [PATCH 2/2] Show error properly when name or full name are not valid
---
ipaserver/plugins/schema.py | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/ipaserver/plugins/schema.py b/ipaserver/plugins/schema.py
index 2ed669ded1..f77418fe75 100644
--- a/ipaserver/plugins/schema.py
+++ b/ipaserver/plugins/schema.py
@@ -625,18 +625,21 @@ def _get_obj(self, metaobj_param, **kwargs):
def _retrieve(self, metaobjectfull_name, name, **kwargs):
found = False
+
try:
metaobj = self.api.Command[metaobjectfull_name]
- plugin = self.api.Object['command']
except KeyError:
- try:
- metaobj = self.api.Object[metaobjectfull_name]
- plugin = self.api.Object['class']
- except KeyError:
- pass
- else:
- found = True
- else:
+ raise errors.NotFound(
+ reason=_("%(metaobject)s: %(oname)s not found") % {
+ 'metaobject': metaobjectfull_name, 'oname': self.name,
+ }
+ )
+
+ if 'command' in self.api.Object:
+ plugin = self.api.Object['command']
+ found = True
+ elif 'class' in self.api.Object:
+ plugin = self.api.Object['class']
found = True
if found:
_______________________________________________
FreeIPA-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]