Revision f4f6eb0b Ganeti/HTools/Rapi.hs
b/Ganeti/HTools/Rapi.hs | ||
---|---|---|
147 | 147 |
|
148 | 148 |
-- | Builds the cluster data from the raw Rapi content |
149 | 149 |
parseData :: (Result String, Result String, Result String, Result String) |
150 |
-> Result (Group.List, Node.List, Instance.List, [String])
|
|
150 |
-> Result ClusterData
|
|
151 | 151 |
parseData (group_body, node_body, inst_body, tags_body) = do |
152 | 152 |
group_data <- group_body >>= getGroups |
153 | 153 |
let (group_names, group_idx) = assignIndices group_data |
... | ... | |
156 | 156 |
inst_data <- inst_body >>= getInstances node_names |
157 | 157 |
let (_, inst_idx) = assignIndices inst_data |
158 | 158 |
tags_data <- tags_body >>= (fromJResult "Parsing tags data" . decodeStrict) |
159 |
return (group_idx, node_idx, inst_idx, tags_data)
|
|
159 |
return (ClusterData group_idx node_idx inst_idx tags_data)
|
|
160 | 160 |
|
161 | 161 |
-- | Top level function for data loading |
162 | 162 |
loadData :: String -- ^ Cluster or URL to use as source |
163 |
-> IO (Result (Group.List, Node.List, Instance.List, [String]))
|
|
163 |
-> IO (Result ClusterData)
|
|
164 | 164 |
loadData master = readData master >>= return . parseData |
Also available in: Unified diff