Nir Soffer has uploaded a new change for review.
Change subject: hsm: Support both None and empty dict
......................................................................
hsm: Support both None and empty dict
Piotr claims that using the json schema, it is not possible to send null
in the engine, when the schema define a required parameter of type dict.
This patch change hsm to accept both None and {} as valid value meaning
use the old disk based pool backend.
I'm not sure if this is correct, and hopefully we can have a better fix
by changing the json schema or the bridge. This is mainly for making it
easier for Piotr to continue with the jsonrpc work.
Change-Id: Ia107707d8824c2abb8735518ae885e5f6d8abd3b
Signed-off-by: Nir Soffer <nsoffer(a)redhat.com>
---
M vdsm/storage/hsm.py
1 file changed, 7 insertions(+), 7 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/77/23977/1
diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py
index 53c9dd0..e2ea707 100644
--- a/vdsm/storage/hsm.py
+++ b/vdsm/storage/hsm.py
@@ -1014,10 +1014,7 @@
raise se.StoragePoolConnected(
"hostId=%s, newHostId=%s" % (pool.id, hostId))
- if domainsMap is None:
- if not isinstance(pool.getBackend(), StoragePoolDiskBackend):
- raise se.StoragePoolConnected('Cannot downgrade pool backend')
- else:
+ if domainsMap:
if isinstance(pool.getBackend(), StoragePoolMemoryBackend):
pool.getBackend().updateVersionAndDomains(
masterVersion, domainsMap)
@@ -1025,6 +1022,9 @@
# Live pool backend upgrade
pool.setBackend(
StoragePoolMemoryBackend(pool, masterVersion, domainsMap))
+ else:
+ if not isinstance(pool.getBackend(), StoragePoolDiskBackend):
+ raise se.StoragePoolConnected('Cannot downgrade pool backend')
pool.refresh(msdUUID, masterVersion)
@@ -1065,11 +1065,11 @@
pool = sp.StoragePool(spUUID, self.domainMonitor, self.taskMng)
pool.backend = StoragePoolDiskBackend(pool)
- if domainsMap is None:
- pool.setBackend(StoragePoolDiskBackend(pool))
- else:
+ if domainsMap:
pool.setBackend(
StoragePoolMemoryBackend(pool, masterVersion, domainsMap))
+ else:
+ pool.setBackend(StoragePoolDiskBackend(pool))
# Must register domain state change callbacks *before* connecting
# the pool, which starts domain monitor threads. Otherwise we will
--
To view, visit
http://gerrit.ovirt.org/23977
To unsubscribe, visit
http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia107707d8824c2abb8735518ae885e5f6d8abd3b
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Nir Soffer <nsoffer(a)redhat.com>