Safe Haskell | None |
---|
Ganeti.Rpc
Contents
Description
Implementation of the RPC client.
- curlOpts :: [CurlOption]
- data RpcError
- = CurlDisabledError
- | CurlLayerError Node String
- | JsonDecodeError String
- | RpcResultError String
- | OfflineNodeError Node
- explainRpcError :: RpcError -> String
- type ERpcError = Either RpcError
- data RpcTimeout
- rpcTimeoutFromRaw :: forall m. Monad m => Int -> m RpcTimeout
- rpcTimeoutToRaw :: RpcTimeout -> Int
- class JSON a => RpcCall a where
- rpcCallName :: a -> String
- rpcCallTimeout :: a -> Int
- rpcCallData :: Node -> a -> String
- rpcCallAcceptOffline :: a -> Bool
- class (RpcCall a, JSON b) => Rpc a b | a -> b, b -> a where
- rpcResultFill :: a -> JSValue -> ERpcError b
- data HttpClientRequest = HttpClientRequest {
- requestTimeout :: Int
- requestUrl :: String
- requestPostData :: String
- executeHttpRequest :: Node -> ERpcError HttpClientRequest -> IO (ERpcError String)
- prepareUrl :: RpcCall a => Node -> a -> String
- prepareHttpRequest :: RpcCall a => Node -> a -> ERpcError HttpClientRequest
- parseHttpResponse :: Rpc a b => a -> ERpcError String -> ERpcError b
- executeSingleRpcCall :: Rpc a b => Node -> a -> IO (Node, ERpcError b)
- executeRpcCall :: Rpc a b => [Node] -> a -> IO [(Node, ERpcError b)]
- sanitizeDictResults :: [(String, Result a)] -> ERpcError [(String, a)]
- fromJResultToRes :: Result a -> (a -> b) -> ERpcError b
- fromJSValueToRes :: JSON a => JSValue -> (a -> b) -> ERpcError b
- data RpcCallInstanceInfo = RpcCallInstanceInfo {
- rpcCallInstInfoInstance :: String
- rpcCallInstInfoHname :: Hypervisor
- loadRpcCallInstanceInfo :: JSValue -> Result RpcCallInstanceInfo
- saveRpcCallInstanceInfo :: RpcCallInstanceInfo -> JSValue
- toDictRpcCallInstanceInfo :: RpcCallInstanceInfo -> [(String, JSValue)]
- data InstanceInfo = InstanceInfo {
- instInfoMemory :: Int
- instInfoState :: String
- instInfoVcpus :: Int
- instInfoTime :: Int
- loadInstanceInfo :: JSValue -> Result InstanceInfo
- saveInstanceInfo :: InstanceInfo -> JSValue
- toDictInstanceInfo :: InstanceInfo -> [(String, JSValue)]
- data RpcResultInstanceInfo = RpcResultInstanceInfo {
- rpcResInstInfoInstInfo :: Maybe InstanceInfo
- loadRpcResultInstanceInfo :: JSValue -> Result RpcResultInstanceInfo
- saveRpcResultInstanceInfo :: RpcResultInstanceInfo -> JSValue
- toDictRpcResultInstanceInfo :: RpcResultInstanceInfo -> [(String, JSValue)]
- data RpcCallAllInstancesInfo = RpcCallAllInstancesInfo {}
- loadRpcCallAllInstancesInfo :: JSValue -> Result RpcCallAllInstancesInfo
- saveRpcCallAllInstancesInfo :: RpcCallAllInstancesInfo -> JSValue
- toDictRpcCallAllInstancesInfo :: RpcCallAllInstancesInfo -> [(String, JSValue)]
- data RpcResultAllInstancesInfo = RpcResultAllInstancesInfo {
- rpcResAllInstInfoInstances :: [(String, InstanceInfo)]
- loadRpcResultAllInstancesInfo :: JSValue -> Result RpcResultAllInstancesInfo
- saveRpcResultAllInstancesInfo :: RpcResultAllInstancesInfo -> JSValue
- toDictRpcResultAllInstancesInfo :: RpcResultAllInstancesInfo -> [(String, JSValue)]
- data RpcCallInstanceList = RpcCallInstanceList {}
- loadRpcCallInstanceList :: JSValue -> Result RpcCallInstanceList
- saveRpcCallInstanceList :: RpcCallInstanceList -> JSValue
- toDictRpcCallInstanceList :: RpcCallInstanceList -> [(String, JSValue)]
- data RpcResultInstanceList = RpcResultInstanceList {
- rpcResInstListInstances :: [String]
- loadRpcResultInstanceList :: JSValue -> Result RpcResultInstanceList
- saveRpcResultInstanceList :: RpcResultInstanceList -> JSValue
- toDictRpcResultInstanceList :: RpcResultInstanceList -> [(String, JSValue)]
- data RpcCallNodeInfo = RpcCallNodeInfo {
- rpcCallNodeInfoVolumeGroups :: [String]
- rpcCallNodeInfoHypervisors :: [Hypervisor]
- rpcCallNodeInfoExclusiveStorage :: Map String Bool
- loadRpcCallNodeInfo :: JSValue -> Result RpcCallNodeInfo
- saveRpcCallNodeInfo :: RpcCallNodeInfo -> JSValue
- toDictRpcCallNodeInfo :: RpcCallNodeInfo -> [(String, JSValue)]
- data VgInfo = VgInfo {
- vgInfoName :: String
- vgInfoVgFree :: Maybe Int
- vgInfoVgSize :: Maybe Int
- loadVgInfo :: JSValue -> Result VgInfo
- saveVgInfo :: VgInfo -> JSValue
- toDictVgInfo :: VgInfo -> [(String, JSValue)]
- data HvInfo = HvInfo {
- hvInfoMemoryTotal :: Int
- hvInfoMemoryFree :: Int
- hvInfoMemoryDom0 :: Int
- hvInfoCpuTotal :: Int
- hvInfoCpuNodes :: Int
- hvInfoCpuSockets :: Int
- loadHvInfo :: JSValue -> Result HvInfo
- saveHvInfo :: HvInfo -> JSValue
- toDictHvInfo :: HvInfo -> [(String, JSValue)]
- data RpcResultNodeInfo = RpcResultNodeInfo {
- rpcResNodeInfoBootId :: String
- rpcResNodeInfoVgInfo :: [VgInfo]
- rpcResNodeInfoHvInfo :: [HvInfo]
- loadRpcResultNodeInfo :: JSValue -> Result RpcResultNodeInfo
- saveRpcResultNodeInfo :: RpcResultNodeInfo -> JSValue
- toDictRpcResultNodeInfo :: RpcResultNodeInfo -> [(String, JSValue)]
- data RpcCallVersion = RpcCallVersion {
- data RpcResultVersion = RpcResultVersion {
- rpcResultVersionVersion :: Int
- loadRpcResultVersion :: JSValue -> Result RpcResultVersion
- saveRpcResultVersion :: RpcResultVersion -> JSValue
- toDictRpcResultVersion :: RpcResultVersion -> [(String, JSValue)]
- data StorageField
- = SFUsed
- | SFName
- | SFAllocatable
- | SFFree
- | SFSize
- storageFieldFromRaw :: forall m. Monad m => String -> m StorageField
- storageFieldToRaw :: StorageField -> String
- data RpcCallStorageList = RpcCallStorageList {
- rpcCallStorageListSuName :: StorageType
- rpcCallStorageListSuArgs :: [String]
- rpcCallStorageListName :: String
- rpcCallStorageListFields :: [StorageField]
- loadRpcCallStorageList :: JSValue -> Result RpcCallStorageList
- saveRpcCallStorageList :: RpcCallStorageList -> JSValue
- toDictRpcCallStorageList :: RpcCallStorageList -> [(String, JSValue)]
- data RpcResultStorageList = RpcResultStorageList {
- rpcResStorageListStorage :: [[(StorageField, JSValue)]]
- loadRpcResultStorageList :: JSValue -> Result RpcResultStorageList
- saveRpcResultStorageList :: RpcResultStorageList -> JSValue
- toDictRpcResultStorageList :: RpcResultStorageList -> [(String, JSValue)]
- data RpcCallTestDelay = RpcCallTestDelay {
- rpcCallTestDelayDuration :: Double
- loadRpcCallTestDelay :: JSValue -> Result RpcCallTestDelay
- saveRpcCallTestDelay :: RpcCallTestDelay -> JSValue
- toDictRpcCallTestDelay :: RpcCallTestDelay -> [(String, JSValue)]
- data RpcResultTestDelay = RpcResultTestDelay
Base RPC functionality and types
Data type for RPC error reporting.
Constructors
CurlDisabledError | |
CurlLayerError Node String | |
JsonDecodeError String | |
RpcResultError String | |
OfflineNodeError Node |
explainRpcError :: RpcError -> StringSource
Provide explanation to RPC errors.
data RpcTimeout Source
Instances
Bounded RpcTimeout | |
Enum RpcTimeout | |
Eq RpcTimeout | |
Ord RpcTimeout | |
Show RpcTimeout |
rpcTimeoutFromRaw :: forall m. Monad m => Int -> m RpcTimeoutSource
rpcTimeoutToRaw :: RpcTimeout -> IntSource
class JSON a => RpcCall a whereSource
A generic class for RPC calls.
Methods
rpcCallName :: a -> StringSource
Give the (Python) name of the procedure.
rpcCallTimeout :: a -> IntSource
Calculate the timeout value for the call execution.
rpcCallData :: Node -> a -> StringSource
Prepare arguments of the call to be send as POST.
rpcCallAcceptOffline :: a -> BoolSource
Whether we accept offline nodes when making a call.
class (RpcCall a, JSON b) => Rpc a b | a -> b, b -> a whereSource
Generic class that ensures matching RPC call with its respective result.
Methods
rpcResultFill :: a -> JSValue -> ERpcError bSource
Create a result based on the received HTTP response.
Instances
data HttpClientRequest Source
Constructors
HttpClientRequest | |
Fields
|
executeHttpRequest :: Node -> ERpcError HttpClientRequest -> IO (ERpcError String)Source
prepareUrl :: RpcCall a => Node -> a -> StringSource
prepareHttpRequest :: RpcCall a => Node -> a -> ERpcError HttpClientRequestSource
parseHttpResponse :: Rpc a b => a -> ERpcError String -> ERpcError bSource
executeRpcCall :: Rpc a b => [Node] -> a -> IO [(Node, ERpcError b)]Source
Execute RPC call for many nodes in parallel.
sanitizeDictResults :: [(String, Result a)] -> ERpcError [(String, a)]Source
fromJResultToRes :: Result a -> (a -> b) -> ERpcError bSource
fromJSValueToRes :: JSON a => JSValue -> (a -> b) -> ERpcError bSource
RPC calls and results
Instance info
data RpcCallInstanceInfo Source
InstanceInfo Returns information about a single instance.
Constructors
RpcCallInstanceInfo | |
Fields
|
loadRpcCallInstanceInfo :: JSValue -> Result RpcCallInstanceInfoSource
saveRpcCallInstanceInfo :: RpcCallInstanceInfo -> JSValueSource
toDictRpcCallInstanceInfo :: RpcCallInstanceInfo -> [(String, JSValue)]Source
data InstanceInfo Source
Constructors
InstanceInfo | |
Fields
|
Instances
Eq InstanceInfo | |
Show InstanceInfo | |
JSON InstanceInfo |
loadInstanceInfo :: JSValue -> Result InstanceInfoSource
saveInstanceInfo :: InstanceInfo -> JSValueSource
toDictInstanceInfo :: InstanceInfo -> [(String, JSValue)]Source
data RpcResultInstanceInfo Source
Constructors
RpcResultInstanceInfo | |
Fields
|
Instances
loadRpcResultInstanceInfo :: JSValue -> Result RpcResultInstanceInfoSource
saveRpcResultInstanceInfo :: RpcResultInstanceInfo -> JSValueSource
toDictRpcResultInstanceInfo :: RpcResultInstanceInfo -> [(String, JSValue)]Source
AllInstancesInfo
data RpcCallAllInstancesInfo Source
AllInstancesInfo Returns information about all running instances on the given nodes
Constructors
RpcCallAllInstancesInfo | |
Fields |
loadRpcCallAllInstancesInfo :: JSValue -> Result RpcCallAllInstancesInfoSource
saveRpcCallAllInstancesInfo :: RpcCallAllInstancesInfo -> JSValueSource
toDictRpcCallAllInstancesInfo :: RpcCallAllInstancesInfo -> [(String, JSValue)]Source
data RpcResultAllInstancesInfo Source
Constructors
RpcResultAllInstancesInfo | |
Fields
|
loadRpcResultAllInstancesInfo :: JSValue -> Result RpcResultAllInstancesInfoSource
saveRpcResultAllInstancesInfo :: RpcResultAllInstancesInfo -> JSValueSource
toDictRpcResultAllInstancesInfo :: RpcResultAllInstancesInfo -> [(String, JSValue)]Source
InstanceList
data RpcCallInstanceList Source
InstanceList Returns the list of running instances on the given nodes.
Constructors
RpcCallInstanceList | |
Fields |
Instances
loadRpcCallInstanceList :: JSValue -> Result RpcCallInstanceListSource
saveRpcCallInstanceList :: RpcCallInstanceList -> JSValueSource
toDictRpcCallInstanceList :: RpcCallInstanceList -> [(String, JSValue)]Source
data RpcResultInstanceList Source
Constructors
RpcResultInstanceList | |
Fields
|
Instances
loadRpcResultInstanceList :: JSValue -> Result RpcResultInstanceListSource
saveRpcResultInstanceList :: RpcResultInstanceList -> JSValueSource
toDictRpcResultInstanceList :: RpcResultInstanceList -> [(String, JSValue)]Source
NodeInfo
data RpcCallNodeInfo Source
NodeInfo Return node information.
Constructors
RpcCallNodeInfo | |
Fields
|
Instances
Eq RpcCallNodeInfo | |
Show RpcCallNodeInfo | |
Arbitrary RpcCallNodeInfo | |
JSON RpcCallNodeInfo | |
RpcCall RpcCallNodeInfo | |
Rpc RpcCallNodeInfo RpcResultNodeInfo |
loadRpcCallNodeInfo :: JSValue -> Result RpcCallNodeInfoSource
saveRpcCallNodeInfo :: RpcCallNodeInfo -> JSValueSource
toDictRpcCallNodeInfo :: RpcCallNodeInfo -> [(String, JSValue)]Source
Constructors
VgInfo | |
Fields
|
loadVgInfo :: JSValue -> Result VgInfoSource
saveVgInfo :: VgInfo -> JSValueSource
toDictVgInfo :: VgInfo -> [(String, JSValue)]Source
We only provide common fields as described in hv_base.py.
Constructors
HvInfo | |
Fields
|
loadHvInfo :: JSValue -> Result HvInfoSource
saveHvInfo :: HvInfo -> JSValueSource
toDictHvInfo :: HvInfo -> [(String, JSValue)]Source
data RpcResultNodeInfo Source
Constructors
RpcResultNodeInfo | |
Fields
|
Instances
loadRpcResultNodeInfo :: JSValue -> Result RpcResultNodeInfoSource
saveRpcResultNodeInfo :: RpcResultNodeInfo -> JSValueSource
toDictRpcResultNodeInfo :: RpcResultNodeInfo -> [(String, JSValue)]Source
Version
data RpcCallVersion Source
Version Query node version. Note: We can't use THH as it does not know what to do with empty dict
Constructors
RpcCallVersion | |
Instances
data RpcResultVersion Source
Constructors
RpcResultVersion | |
Fields
|
Instances
loadRpcResultVersion :: JSValue -> Result RpcResultVersionSource
saveRpcResultVersion :: RpcResultVersion -> JSValueSource
toDictRpcResultVersion :: RpcResultVersion -> [(String, JSValue)]Source
StorageList
data StorageField Source
StorageList
Constructors
SFUsed | |
SFName | |
SFAllocatable | |
SFFree | |
SFSize |
Instances
Bounded StorageField | |
Enum StorageField | |
Eq StorageField | |
Ord StorageField | |
Show StorageField | |
JSON StorageField |
storageFieldFromRaw :: forall m. Monad m => String -> m StorageFieldSource
storageFieldToRaw :: StorageField -> StringSource
data RpcCallStorageList Source
Constructors
RpcCallStorageList | |
Fields
|
loadRpcCallStorageList :: JSValue -> Result RpcCallStorageListSource
saveRpcCallStorageList :: RpcCallStorageList -> JSValueSource
toDictRpcCallStorageList :: RpcCallStorageList -> [(String, JSValue)]Source
data RpcResultStorageList Source
Constructors
RpcResultStorageList | |
Fields
|
Instances
loadRpcResultStorageList :: JSValue -> Result RpcResultStorageListSource
saveRpcResultStorageList :: RpcResultStorageList -> JSValueSource
toDictRpcResultStorageList :: RpcResultStorageList -> [(String, JSValue)]Source
TestDelay
data RpcCallTestDelay Source
Call definition for test delay.
Constructors
RpcCallTestDelay | |
Fields
|
Instances
loadRpcCallTestDelay :: JSValue -> Result RpcCallTestDelaySource
saveRpcCallTestDelay :: RpcCallTestDelay -> JSValueSource
toDictRpcCallTestDelay :: RpcCallTestDelay -> [(String, JSValue)]Source
data RpcResultTestDelay Source
Result definition for test delay.
Constructors
RpcResultTestDelay |
Instances
Show RpcResultTestDelay | |
JSON RpcResultTestDelay | Custom JSON instance for null result. |
Rpc RpcCallTestDelay RpcResultTestDelay |