Revision 85218237 src/Ganeti/Query/Server.hs
b/src/Ganeti/Query/Server.hs | ||
---|---|---|
53 | 53 |
import Ganeti.OpCodes (TagObject(..)) |
54 | 54 |
import qualified Ganeti.Query.Language as Qlang |
55 | 55 |
import Ganeti.Query.Query |
56 |
import Ganeti.Query.Filter (makeSimpleFilter) |
|
56 |
import Ganeti.Query.Filter (FilterConstructor, makeSimpleFilter |
|
57 |
, makeHostnameFilter) |
|
57 | 58 |
|
58 | 59 |
-- | A type for functions that can return the configuration when |
59 | 60 |
-- executed. |
... | ... | |
65 | 66 |
-> [Either String Integer] -- ^ Requested names |
66 | 67 |
-- (empty means all) |
67 | 68 |
-> [String] -- ^ Requested fields |
69 |
-> Maybe FilterConstructor -- ^ the filter algorithm |
|
70 |
-- to be used, defaults to |
|
71 |
-- makeSimpleFilter |
|
68 | 72 |
-> Bool -- ^ Whether to do sync queries or not |
69 | 73 |
-> IO (GenericResult GanetiException JSValue) |
70 |
handleClassicQuery _ _ _ _ True = |
|
74 |
handleClassicQuery _ _ _ _ _ True =
|
|
71 | 75 |
return . Bad $ OpPrereqError "Sync queries are not allowed" ECodeInval |
72 |
handleClassicQuery cfg qkind names fields _ = do |
|
73 |
let flt = makeSimpleFilter (nameField qkind) names |
|
76 |
handleClassicQuery cfg qkind names fields filterconstr _ = do |
|
77 |
let fltcon = fromMaybe makeSimpleFilter filterconstr |
|
78 |
flt = fltcon (nameField qkind) names |
|
74 | 79 |
qr <- query cfg True (Qlang.Query qkind fields flt) |
75 | 80 |
return $ showJSON <$> (qr >>= queryCompat) |
76 | 81 |
|
... | ... | |
161 | 166 |
|
162 | 167 |
handleCall cfg (QueryNodes names fields lock) = |
163 | 168 |
handleClassicQuery cfg (Qlang.ItemTypeOpCode Qlang.QRNode) |
164 |
(map Left names) fields lock |
|
169 |
(map Left names) fields (Just makeHostnameFilter) lock
|
|
165 | 170 |
|
166 | 171 |
handleCall cfg (QueryGroups names fields lock) = |
167 | 172 |
handleClassicQuery cfg (Qlang.ItemTypeOpCode Qlang.QRGroup) |
168 |
(map Left names) fields lock |
|
173 |
(map Left names) fields Nothing lock
|
|
169 | 174 |
|
170 | 175 |
handleCall cfg (QueryJobs names fields) = |
171 | 176 |
handleClassicQuery cfg (Qlang.ItemTypeLuxi Qlang.QRJob) |
172 |
(map (Right . fromIntegral . fromJobId) names) fields False |
|
177 |
(map (Right . fromIntegral . fromJobId) names) fields Nothing False
|
|
173 | 178 |
|
174 | 179 |
handleCall _ op = |
175 | 180 |
return . Bad $ |
Also available in: Unified diff