This is used in instance migration

Signed-off-by: BSRK Aditya <[email protected]>
---
 src/Ganeti/WConfd/ConfigModifications.hs |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/Ganeti/WConfd/ConfigModifications.hs 
b/src/Ganeti/WConfd/ConfigModifications.hs
index 7a91d1a..d72ad25 100644
--- a/src/Ganeti/WConfd/ConfigModifications.hs
+++ b/src/Ganeti/WConfd/ConfigModifications.hs
@@ -537,6 +537,22 @@ markInstanceDisksActive iUuid = do
         return (inst'', cs'))
     (return ())
 
+-- | Mark the status of instance disks inactive.
+markInstanceDisksInactive :: InstanceUUID -> WConfdMonad Bool
+markInstanceDisksInactive iUuid = do
+  ct <- liftIO getClockTime
+  let iL = csConfigDataL . configInstancesL . alterContainerL iUuid
+      f :: MonadError GanetiException m => ConfigState -> m ConfigState
+      f = mapMOf iL (maybe
+        (throwError . ConfigurationError $
+          printf "Could not find instance with UUID %s" iUuid)
+        (return
+        . Just
+        . (instDisksActiveL .~ False)
+        . (instSerialL %~  (+1))
+        . (instMtimeL .~ ct)))
+  isJust <$> modifyConfigWithLock (const f) (return ())
+
 -- | Sets the primary node of an existing instance
 setInstancePrimaryNode :: InstanceUUID -> NodeUUID -> WConfdMonad Bool
 setInstancePrimaryNode iUuid nUuid = isJust <$> modifyConfigWithLock
@@ -636,6 +652,7 @@ exportedFunctions = [ 'addInstance
                     , 'attachInstanceDisk
                     , 'detachInstanceDisk
                     , 'markInstanceDisksActive
+                    , 'markInstanceDisksInactive
                     , 'removeInstance
                     , 'removeInstanceDisk
                     , 'setInstancePrimaryNode
-- 
1.7.10.4

Reply via email to