On 02/25/2014 11:02 PM, Aline Manera wrote:
On 02/25/2014 11:56 AM, Sheldon wrote:
> On 02/25/2014 10:47 PM, Aline Manera wrote:
>>>>
>>>> The exception instance was being used as the missing parameter
>>>> what is
>>>> causing errors like below:
>>> is KeyError?
>>>
>>> dic = {"a": "a"}
>>> In [124]: dic['b']
>>> ---------------------------------------------------------------------------
>>>
>>> KeyError: 'b'
>>>
>>>
>>> or TypeError?
>>>>
>>>> TypeError: coercing to Unicode: need string or buffer,
>>>> exceptions.KeyError found
>>
>> As you can see the TypeError is caused by an KeyError
> as I comment as follow:
> except KeyError, item:
> key is better than item?
why? it is a reference to the exception
But I am OK with both
sure. it is a reference. and agree it is not the scope of this patch.
item is just some confused. Though it is OK.
For example:
In [168]: dog_owned_by = {'Peter': 'Furry', 'Sally':
'Fluffy'}
In [169]: dog_owned_by['NoExit']
KeyError: 'NoExit'
*which are keys:*
In [170]: dog_owned_by.keys()
Out[170]: ['Peter', 'Sally']
*what are items:*
In [171]: dog_owned_by.items()
Out[171]: [('Peter', 'Furry'), ('Sally', 'Fluffy')]
Anyway, this is not the scope of this patch
>>
>>>>
>>>> To fix use the string representation for the exception instance.
>>>>
>>>> Signed-off-by: Aline Manera <alinefm(a)br.ibm.com>
>>>> ---
>>>> src/kimchi/mockmodel.py | 4 ++--
>>>> src/kimchi/model/storagepools.py | 2 +-
>>>> src/kimchi/model/storagevolumes.py | 2 +-
>>>> src/kimchi/root.py | 2 +-
>>>> 4 files changed, 5 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/src/kimchi/mockmodel.py b/src/kimchi/mockmodel.py
>>>> index b50bf31..b23a024 100644
>>>> --- a/src/kimchi/mockmodel.py
>>>> +++ b/src/kimchi/mockmodel.py
>>>> @@ -367,7 +367,7 @@ class MockModel(object):
>>>> pool.info['autostart'] = False
>>>> except KeyError, item:
>>>> raise MissingParameter("KCHPOOL0004E",
>>>> - {'item': item,
'name': name})
>>>> + {'item': str(item),
'name':
>>>> name})
>>> except KeyError, key:
>>> key is right than item
> here.
>>>
>>>>
>>>> if name in self._mock_storagepools or name in
>>>> (ISO_POOL_NAME,):
>>>> raise InvalidOperation("KCHPOOL0001E",
{'name': name})
>
>
--
Thanks and best regards!
Sheldon Feng(冯少合)<shaohef(a)linux.vnet.ibm.com>
IBM Linux Technology Center