On 01/27/2014 11:05 AM, Sheldon wrote:
On 01/27/2014 10:56 AM, shaohef(a)linux.vnet.ibm.com wrote:
> From: ShaoHe Feng <shaohef(a)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(a)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(a)linux.vnet.ibm.com>
IBM Linux Technology Center