This is required for QueryJobs implementation; we change makeSimpleFilter to support both string and integers as names.
Signed-off-by: Iustin Pop <ius...@google.com> --- htest/Test/Ganeti/Query/Filter.hs | 6 +++++- htools/Ganeti/Query/Filter.hs | 4 ++-- htools/Ganeti/Query/Server.hs | 9 ++++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/htest/Test/Ganeti/Query/Filter.hs b/htest/Test/Ganeti/Query/Filter.hs index 498f755..56d39ec 100644 --- a/htest/Test/Ganeti/Query/Filter.hs +++ b/htest/Test/Ganeti/Query/Filter.hs @@ -181,10 +181,14 @@ prop_node_bad_filter rndname rndint = prop_makeSimpleFilter :: Property prop_makeSimpleFilter = forAll (resize 10 $ listOf1 genName) $ \names -> + forAll (resize 10 $ listOf1 arbitrary) $ \ids -> forAll genName $ \namefield -> conjoin [ printTestCase "test expected names" $ - makeSimpleFilter namefield names ==? + makeSimpleFilter namefield (map Left names) ==? OrFilter (map (EQFilter namefield . QuotedString) names) + , printTestCase "test expected IDs" $ + makeSimpleFilter namefield (map Right ids) ==? + OrFilter (map (EQFilter namefield . NumericValue) ids) , printTestCase "test empty names" $ makeSimpleFilter namefield [] ==? EmptyFilter ] diff --git a/htools/Ganeti/Query/Filter.hs b/htools/Ganeti/Query/Filter.hs index ad7faa2..b4da138 100644 --- a/htools/Ganeti/Query/Filter.hs +++ b/htools/Ganeti/Query/Filter.hs @@ -216,7 +216,7 @@ requestedNames namefield (EQFilter fld val) = requestedNames _ _ = Nothing -- | Builds a simple filter from a list of names. -makeSimpleFilter :: String -> [String] -> Filter FilterField +makeSimpleFilter :: String -> [Either String Integer] -> Filter FilterField makeSimpleFilter _ [] = EmptyFilter makeSimpleFilter namefield vals = - OrFilter $ map (EQFilter namefield . QuotedString) vals + OrFilter $ map (EQFilter namefield . either QuotedString NumericValue) vals diff --git a/htools/Ganeti/Query/Server.hs b/htools/Ganeti/Query/Server.hs index 1d2f8e6..38a1cbc 100644 --- a/htools/Ganeti/Query/Server.hs +++ b/htools/Ganeti/Query/Server.hs @@ -63,7 +63,8 @@ type ConfigReader = IO (Result ConfigData) -- | Helper for classic queries. handleClassicQuery :: ConfigData -- ^ Cluster config -> Qlang.ItemType -- ^ Query type - -> [String] -- ^ Requested names (empty means all) + -> [Either String Integer] -- ^ Requested names + -- (empty means all) -> [String] -- ^ Requested fields -> Bool -- ^ Whether to do sync queries or not -> IO (GenericResult GanetiException JSValue) @@ -156,10 +157,12 @@ handleCall _ (QueryFields qkind qfields) = do return $ J.showJSON <$> result handleCall cfg (QueryNodes names fields lock) = - handleClassicQuery cfg (Qlang.ItemTypeOpCode Qlang.QRNode) names fields lock + handleClassicQuery cfg (Qlang.ItemTypeOpCode Qlang.QRNode) + (map Left names) fields lock handleCall cfg (QueryGroups names fields lock) = - handleClassicQuery cfg (Qlang.ItemTypeOpCode Qlang.QRGroup) names fields lock + handleClassicQuery cfg (Qlang.ItemTypeOpCode Qlang.QRGroup) + (map Left names) fields lock handleCall _ op = return . Bad $ -- 1.7.10.4