This predicate indicates whether a disk template allows
failover-to-any operations. The implementation is made
to break if the data type DiskTemplate is changed so that
it will hopefully stay up to date.

Signed-off-by: Klaus Aehlig <[email protected]>
---
 src/Ganeti/Types.hs | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/Ganeti/Types.hs b/src/Ganeti/Types.hs
index 4d430cb..2313c5e 100644
--- a/src/Ganeti/Types.hs
+++ b/src/Ganeti/Types.hs
@@ -49,6 +49,7 @@ module Ganeti.Types
   , DiskTemplate(..)
   , diskTemplateToRaw
   , diskTemplateFromRaw
+  , diskTemplateMovable
   , TagKind(..)
   , tagKindToRaw
   , tagKindFromRaw
@@ -331,6 +332,21 @@ instance HasStringRepr DiskTemplate where
   fromStringRepr = diskTemplateFromRaw
   toStringRepr = diskTemplateToRaw
 
+-- | Predicate on disk templates indicating if instances based on this
+-- disk template can freely be moved (to any node in the node group).
+diskTemplateMovable :: DiskTemplate -> Bool
+-- Note: we deliberately do not use wildcard pattern to force an
+-- update of this function whenever a new disk template is added.
+diskTemplateMovable DTDiskless    = True
+diskTemplateMovable DTFile        = False
+diskTemplateMovable DTSharedFile  = True
+diskTemplateMovable DTPlain       = False
+diskTemplateMovable DTBlock       = False
+diskTemplateMovable DTDrbd8       = False
+diskTemplateMovable DTRbd         = True
+diskTemplateMovable DTExt         = True
+diskTemplateMovable DTGluster     = True
+
 -- | Data type representing what items the tag operations apply to.
 $(THH.declareLADT ''String "TagKind"
   [ ("TagKindInstance", "instance")
-- 
2.2.0.rc0.207.ga3a616c

Reply via email to