This includes nested disk children.
Signed-off-by: Petr Pudlak <[email protected]>
---
src/Ganeti/Config.hs | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/src/Ganeti/Config.hs b/src/Ganeti/Config.hs
index f6243f7..16c336b 100644
--- a/src/Ganeti/Config.hs
+++ b/src/Ganeti/Config.hs
@@ -52,6 +52,7 @@ module Ganeti.Config
, getInstAllNodes
, getInstDisks
, getInstDisksFromObj
+ , getDrbdMinorsForInstance
, getFilledInstHvParams
, getFilledInstBeParams
, getFilledInstOsParams
@@ -357,6 +358,14 @@ getInstDisksFromObj :: ConfigData -> Instance ->
ErrorResult [Disk]
getInstDisksFromObj cfg =
getInstDisks cfg . instUuid
+-- | Returns the DRBD minors of a given 'Disk'
+getDrbdMinorsForDisk :: Disk -> [(Int, String)]
+getDrbdMinorsForDisk Disk{ diskLogicalId = (LIDDrbd8 nA nB _ mnA mnB _)
+ , diskChildren = ch
+ } = [(mnA, nA), (mnB, nB)] ++
+ concatMap getDrbdMinorsForDisk ch
+getDrbdMinorsForDisk d = concatMap getDrbdMinorsForDisk (diskChildren d)
+
-- | Filters DRBD minors for a given node.
getDrbdMinorsForNode :: String -> Disk -> [(Int, String)]
getDrbdMinorsForNode node disk =
@@ -369,6 +378,12 @@ getDrbdMinorsForNode node disk =
_ -> []
in this_minors ++ child_minors
+-- | Returns the DRBD minors of a given instance
+getDrbdMinorsForInstance :: ConfigData -> Instance
+ -> ErrorResult [(Int, String)]
+getDrbdMinorsForInstance cfg =
+ liftM (concatMap getDrbdMinorsForDisk) . getInstDisksFromObj cfg
+
-- | String for primary role.
rolePrimary :: String
rolePrimary = "primary"
--
1.9.1.423.g4596e3a