LGTM, thanks
On Wed, Dec 12, 2012 at 11:28 AM, Iustin Pop <ius...@google.com> wrote: > 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 > >