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 <[email protected]>
---
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 <[email protected]>
_______________________________________________
vdsm-patches mailing list
[email protected]
https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches

Reply via email to