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