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