diff --git a/htools/Ganeti/HTools/Types.hs b/htools/Ganeti/HTools/Types.hs index 216b011c147a227faa69fb4242891903de017f99..90cc6539eb832c3a2460d513b79b9d05cec8e325 100644 --- a/htools/Ganeti/HTools/Types.hs +++ b/htools/Ganeti/HTools/Types.hs @@ -58,6 +58,8 @@ module Ganeti.HTools.Types , DiskTemplate(..) , diskTemplateToRaw , diskTemplateFromRaw + , MirrorType(..) + , templateMirrorType , MoveJob , JobSet , Result(..) @@ -124,6 +126,22 @@ $(THH.declareSADT "DiskTemplate" ]) $(THH.makeJSONInstance ''DiskTemplate) +-- | Mirroring type. +data MirrorType = MirrorNone -- ^ No mirroring/movability + | MirrorInternal -- ^ DRBD-type mirroring + | MirrorExternal -- ^ Shared-storage type mirroring + deriving (Eq, Show, Read) + +-- | Correspondence between disk template and mirror type. +templateMirrorType :: DiskTemplate -> MirrorType +templateMirrorType DTDiskless = MirrorExternal +templateMirrorType DTFile = MirrorNone +templateMirrorType DTSharedFile = MirrorExternal +templateMirrorType DTPlain = MirrorNone +templateMirrorType DTBlock = MirrorExternal +templateMirrorType DTDrbd8 = MirrorInternal +templateMirrorType DTRbd = MirrorExternal + -- | The Group allocation policy type. -- -- Note that the order of constructors is important as the automatic