import System.Timeout
import qualified Network.Socket as S
-import Ganeti.HTools.JSON
+import Ganeti.JSON
import Ganeti.HTools.Types
-import Ganeti.HTools.Utils
+import Ganeti.Utils
import Ganeti.Constants
import Ganeti.Jobs (JobStatus)
import Ganeti.OpCodes (OpCode)
-import qualified Ganeti.Qlang as Qlang
+import qualified Ganeti.Query.Language as Qlang
import Ganeti.THH
-- * Utility functions
-- | Currently supported Luxi operations and JSON serialization.
$(genLuxiOp "LuxiOp"
- [(luxiReqQuery,
+ [ (luxiReqQuery,
+ [ ("what", [t| Qlang.ItemType |])
+ , ("fields", [t| [String] |])
+ , ("qfilter", [t| Qlang.Filter Qlang.FilterField |])
+ ])
+ , (luxiReqQueryFields,
[ ("what", [t| Qlang.ItemType |])
, ("fields", [t| [String] |])
- , ("qfilter", [t| Qlang.Filter |])
])
, (luxiReqQueryNodes,
[ ("names", [t| [String] |])
ReqQueryGroups -> do
(names, fields, locking) <- fromJVal args
return $ QueryGroups names fields locking
- ReqQueryClusterInfo -> do
+ ReqQueryClusterInfo ->
return QueryClusterInfo
ReqQuery -> do
(what, fields, qfilter) <- fromJVal args
return $ Query what fields qfilter
+ ReqQueryFields -> do
+ (what, fields) <- fromJVal args
+ fields' <- case fields of
+ JSNull -> return []
+ _ -> fromJVal fields
+ return $ QueryFields what fields'
ReqSubmitJob -> do
[ops1] <- fromJVal args
ops2 <- mapM (fromJResult (luxiReqToRaw call) . J.readJSON) ops1