MarkInstanceDisksActive is used by instance migration.
Signed-off-by: BSRK Aditya <[email protected]>
---
src/Ganeti/WConfd/ConfigModifications.hs | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/src/Ganeti/WConfd/ConfigModifications.hs
b/src/Ganeti/WConfd/ConfigModifications.hs
index 7daf2f2..0e72030 100644
--- a/src/Ganeti/WConfd/ConfigModifications.hs
+++ b/src/Ganeti/WConfd/ConfigModifications.hs
@@ -395,6 +395,23 @@ allocatePort = do
(return ())
return . MaybeForJSON $ maybePort
+-- | Mark the status of instance disks active.
+markInstanceDisksActive :: InstanceUUID -> WConfdMonad (MaybeForJSON Instance)
+markInstanceDisksActive iUuid = do
+ ct <- liftIO getClockTime
+ fmap MaybeForJSON $ modifyConfigAndReturnWithLock (\_ cs -> do
+ inst <- toError $ getInstanceByUUID cs iUuid
+ if instDisksActive inst == Just True
+ then return (inst, cs)
+ else do
+ let inst' = (instDisksActiveL .~ Just True) $ inst
+ iL = csConfigDataL . configInstancesL
+ iC <- toError $ replaceIn ct inst' (cs ^. iL)
+ let cs' = (iL .~ iC) $ cs
+ inst'' <- toError $ getInstanceByUUID cs' iUuid
+ return (inst'', cs'))
+ (return ())
+
-- | The configuration is updated by the provided cluster
updateCluster :: Cluster -> WConfdMonad (MaybeForJSON TimeAsDoubleJSON)
updateCluster cluster = do
@@ -480,6 +497,7 @@ exportedFunctions = [ 'addInstance
, 'addInstanceDisk
, 'allocatePort
, 'attachInstanceDisk
+ , 'markInstanceDisksActive
, 'updateCluster
, 'updateDisk
, 'updateInstance
--
1.7.10.4