Revision 0c6d6a52 src/Ganeti/Query/Network.hs
b/src/Ganeti/Query/Network.hs | ||
---|---|---|
30 | 30 |
|
31 | 31 |
import qualified Data.Map as Map |
32 | 32 |
import Data.Maybe (fromMaybe, mapMaybe) |
33 |
import Data.List (find) |
|
33 | 34 |
|
34 | 35 |
import Ganeti.JSON |
35 | 36 |
import Ganeti.Network |
... | ... | |
125 | 126 |
-- | Retrieves the network's instances' names. |
126 | 127 |
getInstances :: ConfigData -> String -> [String] |
127 | 128 |
getInstances cfg network_uuid = |
128 |
map instName (filter (instIsConnected network_uuid) |
|
129 |
map instName (filter (instIsConnected cfg network_uuid)
|
|
129 | 130 |
((Map.elems . fromContainer . configInstances) cfg)) |
130 | 131 |
|
131 | 132 |
-- | Helper function that checks if an instance is linked to the given network. |
132 |
instIsConnected :: String -> Instance -> Bool |
|
133 |
instIsConnected network_uuid inst = |
|
134 |
network_uuid `elem` map networkUuid (mapMaybe nicNetwork (instNics inst)) |
|
133 |
instIsConnected :: ConfigData -> String -> Instance -> Bool |
|
134 |
instIsConnected cfg network_uuid inst = |
|
135 |
network_uuid `elem` mapMaybe (getNetworkUuid cfg) |
|
136 |
(mapMaybe nicNetwork (instNics inst)) |
|
137 |
|
|
138 |
-- | Helper function to look up a network's UUID by its name |
|
139 |
getNetworkUuid :: ConfigData -> String -> Maybe String |
|
140 |
getNetworkUuid cfg name = |
|
141 |
let net = find (\n -> name == fromNonEmpty (networkName n)) |
|
142 |
((Map.elems . fromContainer . configNetworks) cfg) |
|
143 |
in fmap networkUuid net |
Also available in: Unified diff