commit 1187da76f084d9a1d6c3823c4d3386a8820a6757
Merge: 041247c 08c5120
Author: Petr Pudlak <[email protected]>
Date:   Fri Aug 7 18:49:51 2015 +0200

    Merge branch 'stable-2.12' into stable-2.13
    
    * stable-2.12
      Accept allocation of 0 jobs
      Return multiple fields multiple times
      In queries collect all needed data
      Add a function computing the filter arguments
      Utils: Add ordNub
      Accept timeout errors are luxi down
    
    Conflicts:
          src/Ganeti/Query/Query.hs - use the 2.12 version, just renaming
            evaluateFilter to evaluateQueryFilter
          src/Ganeti/Utils.hs - keep 2.13 version (from which ordBy has been
            cherry picked)

diff --cc src/Ganeti/Query/Language.hs
index 97aef5e,8144084..aac2d06
--- a/src/Ganeti/Query/Language.hs
+++ b/src/Ganeti/Query/Language.hs
@@@ -192,8 -190,14 +193,14 @@@ data Filter 
      | GEFilter       a FilterValue  -- ^ @>=@ /field/ /value/
      | RegexpFilter   a FilterRegex  -- ^ @=~@ /field/ /regexp/
      | ContainsFilter a FilterValue  -- ^ @=[]@ /list-field/ /value/
 -      deriving (Show, Eq)
 +      deriving (Show, Eq, Ord, Functor, Foldable, Traversable)
  
+ -- | Get the \"things\" a filter talks about. This is useful, e.g.,
+ -- to decide which additional fields to fetch in a query depending
+ -- on live data.
+ filterArguments :: Filter a -> [a]
+ filterArguments = toList
+ 
  -- | Serialiser for the 'Filter' data type.
  showFilter :: (JSON a) => Filter a -> JSValue
  showFilter (EmptyFilter)          = JSNull
diff --cc src/Ganeti/Query/Query.hs
index 6c34ebe,1d6f8fb..51ab108
--- a/src/Ganeti/Query/Query.hs
+++ b/src/Ganeti/Query/Query.hs
@@@ -234,9 -236,9 +237,9 @@@ genericQuery fieldsMap collector nameF
    -- based on the gathered data
    runtimes <- (case collector of
      CollectorSimple     collFn -> lift $ collFn live' cfg fobjects
-     CollectorFieldAware collFn -> lift $ collFn live' cfg fields fobjects) >>=
-     (toError . filterM (\(obj, runtime) ->
+     CollectorFieldAware collFn -> lift $ collFn live' cfg allfields fobjects)
+     >>= (toError . filterM (\(obj, runtime) ->
 -      evaluateFilter cfg (Just runtime) obj cfilter))
 +      evaluateQueryFilter cfg (Just runtime) obj cfilter))
    let fdata = map (\(obj, runtime) ->
                       map (execGetter cfg runtime obj) fgetters)
                runtimes

Reply via email to