[Freeipa-devel] [PATCH] 990 attribute name in exceptions

Rob Crittenden rcritten at redhat.com
Mon Mar 19 19:41:11 UTC 2012


Martin Kosek wrote:
> On Mon, 2012-03-19 at 14:43 -0400, Rob Crittenden wrote:
>> Petr Viktorin wrote:
>>> On 03/19/2012 03:02 PM, Rob Crittenden wrote:
>>>> Petr Viktorin wrote:
>>>>> On 03/16/2012 10:23 PM, Rob Crittenden wrote:
>>>>>> When using *attr we should return the param.name of in the exception
>>>>>> and
>>>>>> when using a cli option we should return param.cli_name. This didn't
>>>>>> work consistently in the framework.
>>>>>>
>>>>>> This is a bit of a kludge, catching exceptions and re-raising them, but
>>>>>> it is a less invasive way of doing it.
>>>>>>
>>>>>> I added some examples of things to test in the ticket.
>>>>>>
>>>>>> rob
>>>>>>
>>>>>
>>>>>> (name, error) = err.strerror.split(':')
>>>>>> raise errors.ConversionError(name=attr, error=error)
>>>>>
>>>>> AFAIU this will break when the error message is translated. Why not just
>>>>> use err.kw['error']?
>>>>>
>>>>
>>>> Because the attribute name needs to get pulled out of it.
>>>>
>>>> rob
>>>
>>> No, you're ignoring the attribute name.
>>> Anyway, even the English error messages are 'invalid %(name)r:
>>> %(error)s', so "name" part starts with 'invalid ', and the "error" part
>>> starts with an extra space.
>>
>> The error gets re-raised so there is no dup "invalid". I'll grant you
>> the extra space though.
>>
>> What this does is catch something like 'invalid maxfail: something bad',
>> split out the attribute/error and re-raise use the attribute name we want.
>
> I think this is what Petr wanted to point out - you can access the
> attributes passed to our PublicErrors directly, i.e. you don't have to
> parse it from its string representation:
>
>>>> from ipalib import errors
>>>> x = errors.ValidationError(name='foo', error=u'Invalid value!')
>>>> print str(x)
> invalid 'foo': Invalid value!
>>>> x.name
> 'foo'
>>>> x.error
> u'Invalid value!'
>
> Martin
>

Of course, can't believe I missed that.

Rebased against ipa-2-2.

rob
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeipa-rcrit-990-2-attribute.patch
Type: text/x-diff
Size: 5471 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20120319/071a6189/attachment.bin>


More information about the Freeipa-devel mailing list