module Ganeti.HTools.Loader
( mergeData
+ , clearDynU
, checkData
, assignIndices
, setMaster
, lookupNode
, lookupInstance
, lookupGroup
+ , eitherLive
, commonSuffix
, RqType(..)
, Request(..)
import qualified Ganeti.Constants as C
import Ganeti.HTools.Types
import Ganeti.Utils
+import Ganeti.Types (EvacMode)
-- * Constants
(Ok cdata { cdNodes = nl3, cdInstances = il5 })
(Bad $ "Unknown instance(s): " ++ show(map lrContent lkp_unknown))
+-- | In a cluster description, clear dynamic utilisation information.
+clearDynU :: ClusterData -> Result ClusterData
+clearDynU cdata@(ClusterData _ _ il _ _) =
+ let il2 = Container.map (\ inst -> inst {Instance.util = zeroUtil }) il
+ in Ok cdata { cdInstances = il2 }
+
-- | Checks the cluster data for consistency.
checkData :: Node.List -> Instance.List
-> ([String], Node.List)
let rfind = flip Container.find il
in sum . map (Instance.dsk . rfind)
$ Node.pList node ++ Node.sList node
+
+-- | Get live information or a default value
+eitherLive :: (Monad m) => Bool -> a -> m a -> m a
+eitherLive True _ live_data = live_data
+eitherLive False def_data _ = return def_data