[Kimchi-devel] [PATCH] bug fix: remove decode for resouce ident when use cherrypy's default dispatcher

Sheldon shaohef at linux.vnet.ibm.com
Mon Jan 27 07:21:47 UTC 2014


On 01/27/2014 11:05 AM, Sheldon wrote:
> On 01/27/2014 10:56 AM, shaohef at linux.vnet.ibm.com wrote:
>> From: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>>
>> Now there are two kinds of sub-collection/resource dispatchers.
>> 1. Use cherrypy's default dispatcher
>> Cherrypy will decode the ident automatically
>> But now in kimchi we decode the ident manually.
>> This is a bug.
>> Kimchi can not list the resources with unicode name.
>>
>> For examle:
>> create a pool with kīмсhī-pool name
>> list this pool
>> $ curl -u shhfeng -H 'Accept: application/json' \
>> -H 'Content-type: application/json' \
>> http://localhost:8000/storagepools/kīмсhī-pool
>>
>> kimchi will throw an UnicodeEncodeError.
>>
>> This patch fixes this bug.
> This patch just fix bug.
> Do not support create a pool with unicode name.
see
[PATCH] Storage pool support unicode correctly
>
>
>
>>
>> 2. customized dispatcher by overriding the cherrypy dispatcher
>> We need to decode the ident explicitly.
>> Now kimchi handles it correctly.
>>
>> Signed-off-by: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>> ---
>>   src/kimchi/control/storagepools.py | 2 +-
>>   src/kimchi/control/vms.py          | 2 +-
>>   2 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/kimchi/control/storagepools.py 
>> b/src/kimchi/control/storagepools.py
>> index 3b8ef79..881c61e 100644
>> --- a/src/kimchi/control/storagepools.py
>> +++ b/src/kimchi/control/storagepools.py
>> @@ -85,7 +85,7 @@ class StoragePool(Resource):
>>           self.uri_fmt = "/storagepools/%s"
>>           self.activate = self.generate_action_handler('activate')
>>           self.deactivate = self.generate_action_handler('deactivate')
>> -        self.storagevolumes = StorageVolumes(self.model, 
>> ident.decode("utf-8"))
>> +        self.storagevolumes = StorageVolumes(self.model, ident)
>>
>>       @property
>>       def data(self):
>> diff --git a/src/kimchi/control/vms.py b/src/kimchi/control/vms.py
>> index 06c7be3..60fc8ff 100644
>> --- a/src/kimchi/control/vms.py
>> +++ b/src/kimchi/control/vms.py
>> @@ -41,7 +41,7 @@ class VM(Resource):
>>           self.screenshot = VMScreenShot(model, ident)
>>           self.uri_fmt = '/vms/%s'
>>           for ident, node in sub_nodes.items():
>> -            setattr(self, ident, node(model, 
>> self.ident.decode("utf-8")))
>> +            setattr(self, ident, node(model, self.ident))
>>           self.start = self.generate_action_handler('start')
>>           self.stop = self.generate_action_handler('stop')
>>           self.connect = self.generate_action_handler('connect')
>
>


-- 
Thanks and best regards!

Sheldon Feng(冯少合)<shaohef at linux.vnet.ibm.com>
IBM Linux Technology Center




More information about the Kimchi-devel mailing list