This adds the fields 'inst_cnt' and 'inst_list' to the
Haskell implementation of the network queries.

Signed-off-by: Helga Velroyen <[email protected]>
---
 src/Ganeti/Query/Network.hs | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/Ganeti/Query/Network.hs b/src/Ganeti/Query/Network.hs
index 0101687..6ba0ce4 100644
--- a/src/Ganeti/Query/Network.hs
+++ b/src/Ganeti/Query/Network.hs
@@ -73,6 +73,12 @@ networkFields =
   , (FieldDefinition "group_cnt" "GroupCount" QFTOther "Number of node groups",
      FieldConfig (\cfg -> rsNormal . length . getGroupConnections cfg
        . networkUuid), QffNormal)
+  , (FieldDefinition "inst_list" "InstanceList" QFTOther "List of instances",
+     FieldConfig (\cfg -> rsNormal . getInstances cfg . networkUuid),
+     QffNormal)
+  , (FieldDefinition "inst_cnt" "InstanceCount" QFTOther "Number of instances",
+     FieldConfig (\cfg -> rsNormal . length . getInstances cfg
+       . networkUuid), QffNormal)
   ] ++
   uuidFields "Network" ++
   serialFields "Network" ++
@@ -116,3 +122,13 @@ getNicMode nic_params =
 getNicLink :: PartialNicParams -> String
 getNicLink nic_params = fromMaybe "-" (nicpLinkP nic_params)
 
+-- | Retrieves the network's instances' names.
+getInstances :: ConfigData -> String -> [String]
+getInstances cfg network_uuid =
+  map instName (filter (instIsConnected network_uuid)
+    ((Map.elems . fromContainer . configInstances) cfg))
+
+-- | Helper function that checks if an instance is linked to the given network.
+instIsConnected :: String -> Instance -> Bool
+instIsConnected network_uuid inst =
+  network_uuid `elem` map networkUuid (mapMaybe nicNetwork (instNics inst))
-- 
1.8.1

-- 
You received this message because you are subscribed to the Google Groups 
"ganeti-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to