Depending on the context and how you are using input (-- options or set/addattr) you might get a different attribute name in the error message. This patch tries to clear that up a bit.

See the ticket for some test cases.

rob
>From 3874e15bc26a6bca126838af64462214d0bddce8 Mon Sep 17 00:00:00 2001
From: Rob Crittenden <rcrit...@redhat.com>
Date: Fri, 21 Oct 2011 15:21:45 -0400
Subject: [PATCH] Be more consistent when returning the attribute in error
 messages.

Use whatever context when have (attr vs cli_name) when returning
error messages. When --set/addattr are used try to return that value,
otherwise return cli_name if we have it.

https://fedorahosted.org/freeipa/ticket/1418
---
 ipalib/frontend.py   |    8 ++++++--
 ipalib/parameters.py |    5 ++++-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/ipalib/frontend.py b/ipalib/frontend.py
index 61e7f49..9ddef63 100644
--- a/ipalib/frontend.py
+++ b/ipalib/frontend.py
@@ -30,7 +30,7 @@ from util import make_repr
 from output import Output, Entry, ListOfEntries
 from text import _, ngettext
 
-from errors import ZeroArgumentError, MaxArgumentError, OverlapError, RequiresRoot, VersionError, RequirementError
+from errors import ZeroArgumentError, MaxArgumentError, OverlapError, RequiresRoot, VersionError, RequirementError, ValidationError
 from errors import InvocationError
 from constants import TYPE_ERROR
 from ipapython.version import API_VERSION
@@ -551,7 +551,11 @@ class Command(HasParam):
                 # None means "delete this attribute"
                 value = None
             if attr in self.params:
-                value = self.params[attr](value)
+                try:
+                    value = self.params[attr](value)
+                except ValidationError, err:
+                    (name, error) = err.strerror.split(':')
+                    raise ValidationError(name=attr, error=error)
             if append and attr in newdict:
                 if type(value) in (tuple,):
                     newdict[attr] += list(value)
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index f9e171b..2d5367b 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -1043,7 +1043,10 @@ class Int(Number):
                 return int(value)
             except ValueError:
                 pass
-        raise ConversionError(name=self.name, index=index,
+        name = self.cli_name
+        if not name:
+            name = self.name
+        raise ConversionError(name=name, index=index,
             error=ugettext(self.type_error),
         )
 
-- 
1.7.6

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to