In this way, we will only allow movements that comply
with our migration tags.

While there, fix the wrong comments about which monad
we're living in.

Signed-off-by: Klaus Aehlig <[email protected]>
---
 src/Ganeti/HTools/Cluster.hs | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/Ganeti/HTools/Cluster.hs b/src/Ganeti/HTools/Cluster.hs
index 1cbcef4..244420c 100644
--- a/src/Ganeti/HTools/Cluster.hs
+++ b/src/Ganeti/HTools/Cluster.hs
@@ -468,7 +468,8 @@ applyMoveEx force nl inst Failover =
   let (old_pdx, old_sdx, old_p, old_s) = instanceNodes nl inst
       int_p = Node.removePri old_p inst
       int_s = Node.removeSec old_s inst
-      new_nl = do -- Maybe monad
+      new_nl = do -- OpResult
+        Node.checkMigration old_p old_s
         new_p <- Node.addPriEx (Node.offline old_p || force) int_s inst
         new_s <- Node.addSec int_p inst old_sdx
         let new_inst = Instance.setBoth inst old_sdx old_pdx
@@ -481,6 +482,7 @@ applyMoveEx force nl inst (FailoverToAny new_pdx) = do
   let (old_pdx, old_sdx, old_pnode, _) = instanceNodes nl inst
       new_pnode = Container.find new_pdx nl
       force_failover = Node.offline old_pnode || force
+  Node.checkMigration old_pnode new_pnode
   new_pnode' <- Node.addPriEx force_failover new_pnode inst
   let old_pnode' = Node.removePri old_pnode inst
       inst' = Instance.setPri inst new_pdx
@@ -494,9 +496,11 @@ applyMoveEx force nl inst (ReplacePrimary new_pdx) =
       int_p = Node.removePri old_p inst
       int_s = Node.removeSec old_s inst
       force_p = Node.offline old_p || force
-      new_nl = do -- Maybe monad
+      new_nl = do -- OpResult
                   -- check that the current secondary can host the instance
                   -- during the migration
+        Node.checkMigration old_p old_s
+        Node.checkMigration old_s tgt_n
         tmp_s <- Node.addPriEx force_p int_s inst
         let tmp_s' = Node.removePri tmp_s inst
         new_p <- Node.addPriEx force_p tgt_n inst
@@ -529,7 +533,8 @@ applyMoveEx force nl inst (ReplaceAndFailover new_pdx) =
       int_p = Node.removePri old_p inst
       int_s = Node.removeSec old_s inst
       force_s = Node.offline old_s || force
-      new_nl = do -- Maybe monad
+      new_nl = do -- OpResult
+        Node.checkMigration old_p tgt_n
         new_p <- Node.addPri tgt_n inst
         new_s <- Node.addSecEx force_s int_p inst new_pdx
         let new_inst = Instance.setBoth inst new_pdx old_pdx
@@ -545,7 +550,8 @@ applyMoveEx force nl inst (FailoverAndReplace new_sdx) =
       int_p = Node.removePri old_p inst
       int_s = Node.removeSec old_s inst
       force_p = Node.offline old_p || force
-      new_nl = do -- Maybe monad
+      new_nl = do -- OpResult
+        Node.checkMigration old_p old_s
         new_p <- Node.addPriEx force_p int_s inst
         new_s <- Node.addSecEx force_p tgt_n inst old_sdx
         let new_inst = Instance.setBoth inst old_sdx new_sdx
-- 
2.1.0.rc2.206.gedb03e5

Reply via email to