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