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

Reply via email to