[Kimchi-devel] [PATCH 4/4] Transient StoragePool POST request handling
Christy Perez
christy at linux.vnet.ibm.com
Mon Jan 19 21:49:17 UTC 2015
Ignore the exception on GET for Stop (deactivate) of
transient Storage Pools.
---
src/kimchi/control/storagepools.py | 11 +++++++++--
src/kimchi/model/storagepools.py | 8 ++++++--
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/src/kimchi/control/storagepools.py b/src/kimchi/control/storagepools.py
index 872ad04..e55a85f 100644
--- a/src/kimchi/control/storagepools.py
+++ b/src/kimchi/control/storagepools.py
@@ -19,7 +19,6 @@
import cherrypy
-
from kimchi.control.base import Collection, Resource
from kimchi.control.storagevolumes import IsoVolumes, StorageVolumes
from kimchi.control.utils import get_class_name, model_fn
@@ -75,11 +74,19 @@ def _get_resources(self, filter_params):
class StoragePool(Resource):
def __init__(self, model, ident):
super(StoragePool, self).__init__(model, ident)
+ _ignore_not_found = False
+ try:
+ # the test driver causes an exception in is_persistent()
+ _ignore_not_found = \
+ not model.storagepool_is_persistent(self.ident.decode('utf-8'))
+ except Exception:
+ pass
self.role_key = 'storage'
self.admin_methods = ['PUT', 'POST', 'DELETE']
self.uri_fmt = "/storagepools/%s"
self.activate = self.generate_action_handler('activate')
- self.deactivate = self.generate_action_handler('deactivate')
+ self.deactivate = self.generate_action_handler('deactivate', \
+ ignore_not_found = _ignore_not_found)
self.storagevolumes = StorageVolumes(self.model, ident)
@property
diff --git a/src/kimchi/model/storagepools.py b/src/kimchi/model/storagepools.py
index e03c6bb..f7448d1 100644
--- a/src/kimchi/model/storagepools.py
+++ b/src/kimchi/model/storagepools.py
@@ -252,7 +252,7 @@ def lookup(self, name):
pool = self.get_storagepool(name, self.conn)
info = pool.info()
autostart = True if pool.autostart() else False
- persistent = True if pool.isPersistent() else False
+ persistent = self.is_persistent(name)
xml = pool.XMLDesc(0)
path = xpath_get_text(xml, "/pool/target/path")[0]
pool_type = xpath_get_text(xml, "/pool/@type")[0]
@@ -281,7 +281,7 @@ def lookup(self, name):
'nr_volumes': nr_volumes,
'persistent': persistent}
- if not pool.isPersistent():
+ if not persistent:
# Deal with deep scan generated pool
try:
with self.objstore as session:
@@ -293,6 +293,10 @@ def lookup(self, name):
pass
return res
+ def is_persistent(self, name):
+ pool = self.get_storagepool(name, self.conn)
+ return True if pool.isPersistent() else False
+
def _update_lvm_disks(self, pool_name, disks):
# check if all the disks/partitions exists in the host
for disk in disks:
--
1.9.3
More information about the Kimchi-devel
mailing list