Revision 11d09d75

b/src/Ganeti/Query/Filter.hs
220 220

  
221 221
-- | Runs a getter with potentially missing runtime context.
222 222
tryGetter :: ConfigData -> Maybe b -> a -> FieldGetter a b -> Maybe ResultEntry
223
tryGetter _   _ item (FieldSimple getter)  = Just $ getter item
224
tryGetter cfg _ item (FieldConfig getter)  = Just $ getter cfg item
225
tryGetter _  rt item (FieldRuntime getter) =
223
tryGetter _    _ item (FieldSimple getter)  = Just $ getter item
224
tryGetter cfg  _ item (FieldConfig getter)  = Just $ getter cfg item
225
tryGetter _   rt item (FieldRuntime getter) =
226 226
  maybe Nothing (\rt' -> Just $ getter rt' item) rt
227
tryGetter _   _ _    FieldUnknown          = Just $
228
                                             ResultEntry RSUnknown Nothing
227
tryGetter cfg rt item (FieldConfigRuntime getter) =
228
  maybe Nothing (\rt' -> Just $ getter cfg rt' item) rt
229
tryGetter _   _ _    FieldUnknown = Just $ ResultEntry RSUnknown Nothing
229 230

  
230 231
-- | Computes the requested names, if only names were requested (and
231 232
-- with equality). Otherwise returns 'Nothing'.
b/src/Ganeti/Query/Query.hs
94 94

  
95 95
-- | Runs a field getter on the existing contexts.
96 96
execGetter :: ConfigData -> b -> a -> FieldGetter a b -> ResultEntry
97
execGetter _   _ item (FieldSimple getter)  = getter item
98
execGetter cfg _ item (FieldConfig getter)  = getter cfg item
99
execGetter _  rt item (FieldRuntime getter) = getter rt item
100
execGetter _   _ _    FieldUnknown          = rsUnknown
97
execGetter _   _  item (FieldSimple getter)        = getter item
98
execGetter cfg _  item (FieldConfig getter)        = getter cfg item
99
execGetter _   rt item (FieldRuntime getter)       = getter rt item
100
execGetter cfg rt item (FieldConfigRuntime getter) = getter cfg rt item
101
execGetter _   _  _    FieldUnknown                = rsUnknown
101 102

  
102 103
-- * Main query execution
103 104

  
b/src/Ganeti/Query/Types.hs
46 46
-- runtime sources, and we always consider the entire configuration as
47 47
-- a given (so no equivalent for Python's /*_CONFIG/ and /*_GROUP/;
48 48
-- configuration accesses are cheap for us).
49
data FieldGetter a b = FieldSimple  (a -> ResultEntry)
50
                     | FieldRuntime (b -> a -> ResultEntry)
51
                     | FieldConfig  (ConfigData -> a -> ResultEntry)
49
data FieldGetter a b = FieldSimple        (a -> ResultEntry)
50
                     | FieldRuntime       (b -> a -> ResultEntry)
51
                     | FieldConfig        (ConfigData -> a -> ResultEntry)
52
                     | FieldConfigRuntime (ConfigData -> b -> a -> ResultEntry)
52 53
                     | FieldUnknown
53 54

  
54 55
-- | Type defining how the value of a field is used in filtering. This
......
71 72

  
72 73
-- | Helper function to check if a getter is a runtime one.
73 74
isRuntimeField :: FieldGetter a b -> Bool
74
isRuntimeField (FieldRuntime _) = True
75
isRuntimeField _                = False
75
isRuntimeField FieldRuntime {}       = True
76
isRuntimeField FieldConfigRuntime {} = True
77
isRuntimeField _                     = False

Also available in: Unified diff