ganeti-htoolsSource codeContentsIndex
Ganeti.HTools.Luxi
Contents
Utility functions
Data querying functionality
Main loader functionality
Description
Implementation of the LUXI loader.
Synopsis
getData :: Monad m => JSValue -> m JSValue
parseQueryField :: Monad m => JSValue -> m (JSValue, JSValue)
parseQueryRow :: Monad m => JSValue -> m [(JSValue, JSValue)]
parseQueryResult :: Monad m => JSValue -> m [[(JSValue, JSValue)]]
extractArray :: Monad m => JSValue -> m [[(JSValue, JSValue)]]
fromJValWithStatus :: (JSON a, Monad m) => (JSValue, JSValue) -> m a
genericConvert :: JSON a => String -> String -> String -> (JSValue, JSValue) -> Result a
queryNodesMsg :: LuxiOp
queryInstancesMsg :: LuxiOp
queryClusterInfoMsg :: LuxiOp
queryGroupsMsg :: LuxiOp
queryNodes :: Client -> IO (Result JSValue)
queryInstances :: Client -> IO (Result JSValue)
queryClusterInfo :: Client -> IO (Result JSValue)
queryGroups :: Client -> IO (Result JSValue)
getInstances :: NameAssoc -> JSValue -> Result [(String, Instance)]
parseInstance :: NameAssoc -> [(JSValue, JSValue)] -> Result (String, Instance)
getNodes :: NameAssoc -> JSValue -> Result [(String, Node)]
parseNode :: NameAssoc -> [(JSValue, JSValue)] -> Result (String, Node)
getClusterData :: JSValue -> Result ([String], IPolicy)
getGroups :: JSValue -> Result [(String, Group)]
parseGroup :: [(JSValue, JSValue)] -> Result (String, Group)
readData :: String -> IO (Result JSValue, Result JSValue, Result JSValue, Result JSValue)
parseData :: (Result JSValue, Result JSValue, Result JSValue, Result JSValue) -> Result ClusterData
loadData :: String -> IO (Result ClusterData)
Utility functions
getData :: Monad m => JSValue -> m JSValueSource
Get values behind "data" part of the result.
parseQueryField :: Monad m => JSValue -> m (JSValue, JSValue)Source
Converts a (status, value) into m value, if possible.
parseQueryRow :: Monad m => JSValue -> m [(JSValue, JSValue)]Source
Parse a result row.
parseQueryResult :: Monad m => JSValue -> m [[(JSValue, JSValue)]]Source
Parse an overall query result and get the [(status, value)] list for each element queried.
extractArray :: Monad m => JSValue -> m [[(JSValue, JSValue)]]Source
Prepare resulting output as parsers expect it.
fromJValWithStatus :: (JSON a, Monad m) => (JSValue, JSValue) -> m aSource
Testing result status for more verbose error message.
genericConvertSource
:: JSON a
=> StringThe object name
-> StringThe attribute we're trying to convert
-> StringThe value we're trying to convert
-> (JSValue, JSValue)The annotated result
-> Result a
Annotate errors when converting values with owner/attribute for better debugging.
Data querying functionality
queryNodesMsg :: LuxiOpSource
The input data for node query.
queryInstancesMsg :: LuxiOpSource
The input data for instance query.
queryClusterInfoMsg :: LuxiOpSource
The input data for cluster query.
queryGroupsMsg :: LuxiOpSource
The input data for node group query.
queryNodes :: Client -> IO (Result JSValue)Source
Wraper over callMethod doing node query.
queryInstances :: Client -> IO (Result JSValue)Source
Wraper over callMethod doing instance query.
queryClusterInfo :: Client -> IO (Result JSValue)Source
Wrapper over callMethod doing cluster information query.
queryGroups :: Client -> IO (Result JSValue)Source
Wrapper over callMethod doing group query.
getInstances :: NameAssoc -> JSValue -> Result [(String, Instance)]Source
Parse a instance list in JSON format.
parseInstance :: NameAssoc -> [(JSValue, JSValue)] -> Result (String, Instance)Source
Construct an instance from a JSON object.
getNodes :: NameAssoc -> JSValue -> Result [(String, Node)]Source
Parse a node list in JSON format.
parseNode :: NameAssoc -> [(JSValue, JSValue)] -> Result (String, Node)Source
Construct a node from a JSON object.
getClusterData :: JSValue -> Result ([String], IPolicy)Source
Parses the cluster tags.
getGroups :: JSValue -> Result [(String, Group)]Source
Parses the cluster groups.
parseGroup :: [(JSValue, JSValue)] -> Result (String, Group)Source
Parses a given group information.
Main loader functionality
readDataSource
:: StringUnix socket to use as source
-> IO (Result JSValue, Result JSValue, Result JSValue, Result JSValue)
Builds the cluster data by querying a given socket name.
parseData :: (Result JSValue, Result JSValue, Result JSValue, Result JSValue) -> Result ClusterDataSource
Converts the output of readData into the internal cluster representation.
loadDataSource
:: StringUnix socket to use as source
-> IO (Result ClusterData)
Top level function for data loading.
Produced by Haddock version 2.6.0