[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 03:05:19 UTC 2014


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.



>
> 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