Retrives all IDs from ConfigState
Signed-off-by: BSRK Aditya <[email protected]>
---
src/Ganeti/WConfd/ConfigModifications.hs | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/src/Ganeti/WConfd/ConfigModifications.hs
b/src/Ganeti/WConfd/ConfigModifications.hs
index 0c07ba1..44654cd 100644
--- a/src/Ganeti/WConfd/ConfigModifications.hs
+++ b/src/Ganeti/WConfd/ConfigModifications.hs
@@ -110,6 +110,34 @@ getAllLVs cs = fmap (nub . concat . concatMap
elemsFromContainer)
instUuids :: [InstanceUUID]
instUuids = map instUuid . elemsFromContainer
. configInstances . csConfigData $ cs
+
+getAllIDs :: ConfigState -> GenericResult GanetiException [String]
+getAllIDs cs = do
+ lvs <- getAllLVs cs
+ let keysFromC :: GenericContainer a b -> [a]
+ keysFromC = M.keys . fromContainer
+
+ valuesFromC :: GenericContainer a b -> [b]
+ valuesFromC = M.elems . fromContainer
+
+ instKeys = keysFromC . configInstances . csConfigData $ cs
+ nodeKeys = keysFromC . configNodes . csConfigData $ cs
+
+ instValues = map uuidOf . valuesFromC
+ . configInstances . csConfigData $ cs
+ nodeValues = map uuidOf . valuesFromC . configNodes . csConfigData $ cs
+ nodeGroupValues = map uuidOf . valuesFromC
+ . configNodegroups . csConfigData $ cs
+ networkValues = map uuidOf . valuesFromC
+ . configNetworks . csConfigData $ cs
+ disksValues = map uuidOf . valuesFromC . configDisks . csConfigData $ cs
+
+ nics = map nicUuid . concatMap instNics
+ . valuesFromC . configInstances . csConfigData $ cs
+
+ cluster = uuidOf . configCluster . csConfigData $ cs
+ return . nub $ lvs ++ instKeys ++ nodeKeys ++ instValues ++ nodeValues
+ ++ nodeGroupValues ++ networkValues ++ disksValues ++ nics ++
[cluster]
-- | Add a new instance to the configuration, release DRBD minors,
-- and commit temporary IPs, all while temporarily holding the config
-- lock. Return True upon success and False if the config lock was not
--
1.7.10.4