Reviewed-by: Royce Lv<lvroyce(a)linux.vnet.ibm.com>
Good catch!
On 2014年03月07日 08:15, Rodrigo Trujillo wrote:
This patch changes the error message when storage pool is not found
and
adds the isPersistent checkings, in order to return correctly from
deactivate function.
Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo(a)linux.vnet.ibm.com>
---
src/kimchi/control/storagepools.py | 3 ++-
src/kimchi/model/storagepools.py | 11 +++++++++--
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/src/kimchi/control/storagepools.py b/src/kimchi/control/storagepools.py
index 62f9525..b75bca0 100644
--- a/src/kimchi/control/storagepools.py
+++ b/src/kimchi/control/storagepools.py
@@ -90,7 +90,8 @@ class StoragePool(Resource):
'source': self.info['source'],
'type': self.info['type'],
'nr_volumes': self.info['nr_volumes'],
- 'autostart': self.info['autostart']}
+ 'autostart': self.info['autostart'],
+ 'persistent': self.info['persistent']}
val = self.info.get('task_id')
if val:
diff --git a/src/kimchi/model/storagepools.py b/src/kimchi/model/storagepools.py
index fe70fa1..fea19f6 100644
--- a/src/kimchi/model/storagepools.py
+++ b/src/kimchi/model/storagepools.py
@@ -175,7 +175,7 @@ class StoragePoolModel(object):
return conn.storagePoolLookupByName(name.encode("utf-8"))
except libvirt.libvirtError as e:
if e.get_error_code() == libvirt.VIR_ERR_NO_STORAGE_POOL:
- raise NotFoundError("KCHTMPL0002E", {'name': name})
+ raise NotFoundError("KCHPOOL0002E", {'name': name})
else:
raise
@@ -229,6 +229,7 @@ class StoragePoolModel(object):
pool = self.get_storagepool(name, self.conn)
info = pool.info()
autostart = True if pool.autostart() else False
+ persistent = True if pool.isPersistent() else False
xml = pool.XMLDesc(0)
path = xmlutils.xpath_get_text(xml, "/pool/target/path")[0]
pool_type = xmlutils.xpath_get_text(xml, "/pool/@type")[0]
@@ -254,7 +255,8 @@ class StoragePoolModel(object):
'capacity': info[1],
'allocated': info[2],
'available': info[3],
- 'nr_volumes': nr_volumes}
+ 'nr_volumes': nr_volumes,
+ 'persistent': persistent}
if not pool.isPersistent():
# Deal with deep scan generated pool
@@ -354,10 +356,15 @@ class StoragePoolModel(object):
{'name': name, 'server':
source['addr']})
return
try:
+ persistent = pool.isPersistent()
pool.destroy()
except libvirt.libvirtError as e:
raise OperationFailed("KCHPOOL0010E",
{'name': name, 'err':
e.get_error_message()})
+ # If pool was not persistent, then it was erased by destroy() and
+ # must return nothing here, to trigger _redirect() and avoid errors
+ if not persistent:
+ return ""
def delete(self, name):
if self._pool_used_by_template(name):