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