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
>
>

Reply via email to