Revision 037762a9
b/htest/Test/Ganeti/Query/Filter.hs | ||
---|---|---|
181 | 181 |
prop_makeSimpleFilter :: Property |
182 | 182 |
prop_makeSimpleFilter = |
183 | 183 |
forAll (resize 10 $ listOf1 genName) $ \names -> |
184 |
forAll (resize 10 $ listOf1 arbitrary) $ \ids -> |
|
184 | 185 |
forAll genName $ \namefield -> |
185 | 186 |
conjoin [ printTestCase "test expected names" $ |
186 |
makeSimpleFilter namefield names ==?
|
|
187 |
makeSimpleFilter namefield (map Left names) ==?
|
|
187 | 188 |
OrFilter (map (EQFilter namefield . QuotedString) names) |
189 |
, printTestCase "test expected IDs" $ |
|
190 |
makeSimpleFilter namefield (map Right ids) ==? |
|
191 |
OrFilter (map (EQFilter namefield . NumericValue) ids) |
|
188 | 192 |
, printTestCase "test empty names" $ |
189 | 193 |
makeSimpleFilter namefield [] ==? EmptyFilter |
190 | 194 |
] |
b/htools/Ganeti/Query/Filter.hs | ||
---|---|---|
216 | 216 |
requestedNames _ _ = Nothing |
217 | 217 |
|
218 | 218 |
-- | Builds a simple filter from a list of names. |
219 |
makeSimpleFilter :: String -> [String] -> Filter FilterField
|
|
219 |
makeSimpleFilter :: String -> [Either String Integer] -> Filter FilterField
|
|
220 | 220 |
makeSimpleFilter _ [] = EmptyFilter |
221 | 221 |
makeSimpleFilter namefield vals = |
222 |
OrFilter $ map (EQFilter namefield . QuotedString) vals |
|
222 |
OrFilter $ map (EQFilter namefield . either QuotedString NumericValue) vals |
b/htools/Ganeti/Query/Server.hs | ||
---|---|---|
62 | 62 |
-- | Helper for classic queries. |
63 | 63 |
handleClassicQuery :: ConfigData -- ^ Cluster config |
64 | 64 |
-> Qlang.ItemType -- ^ Query type |
65 |
-> [String] -- ^ Requested names (empty means all) |
|
65 |
-> [Either String Integer] -- ^ Requested names |
|
66 |
-- (empty means all) |
|
66 | 67 |
-> [String] -- ^ Requested fields |
67 | 68 |
-> Bool -- ^ Whether to do sync queries or not |
68 | 69 |
-> IO (GenericResult GanetiException JSValue) |
... | ... | |
155 | 156 |
return $ J.showJSON <$> result |
156 | 157 |
|
157 | 158 |
handleCall cfg (QueryNodes names fields lock) = |
158 |
handleClassicQuery cfg (Qlang.ItemTypeOpCode Qlang.QRNode) names fields lock |
|
159 |
handleClassicQuery cfg (Qlang.ItemTypeOpCode Qlang.QRNode) |
|
160 |
(map Left names) fields lock |
|
159 | 161 |
|
160 | 162 |
handleCall cfg (QueryGroups names fields lock) = |
161 |
handleClassicQuery cfg (Qlang.ItemTypeOpCode Qlang.QRGroup) names fields lock |
|
163 |
handleClassicQuery cfg (Qlang.ItemTypeOpCode Qlang.QRGroup) |
|
164 |
(map Left names) fields lock |
|
162 | 165 |
|
163 | 166 |
handleCall _ op = |
164 | 167 |
return . Bad $ |
Also available in: Unified diff