Safe Haskell | None |
---|
Ganeti.Rpc
Contents
Description
Implementation of the RPC client.
Synopsis
- data RpcError
- = CurlLayerError String
- | JsonDecodeError String
- | RpcResultError String
- | OfflineNodeError
- explainRpcError :: RpcError -> String
- type ERpcError = Either RpcError
- class ArrayObject a => RpcCall a where
- rpcCallName :: a -> String
- rpcCallTimeout :: a -> Int
- rpcCallData :: a -> String
- rpcCallAcceptOffline :: a -> Bool
- class (RpcCall a, JSON b) => Rpc a b | a -> b, b -> a where
- rpcResultFill :: a -> JSValue -> ERpcError b
- rpcErrors :: [(a, ERpcError b)] -> [(a, RpcError)]
- logRpcErrors :: (MonadLog m, Show a) => [(a, ERpcError b)] -> m [(a, RpcError)]
- executeRpcCalls :: Rpc a b => [(Node, a)] -> IO [(Node, ERpcError b)]
- executeRpcCall :: Rpc a b => [Node] -> a -> IO [(Node, ERpcError b)]
- data Compressed
- packCompressed :: ByteString -> Compressed
- toCompressed :: String -> Compressed
- data RpcCallInstanceInfo = RpcCallInstanceInfo {
- rpcCallInstInfoInstance :: String
- rpcCallInstInfoHname :: Hypervisor
- data InstanceState
- data InstanceInfo = InstanceInfo {
- instInfoMemory :: Int
- instInfoState :: InstanceState
- instInfoVcpus :: Int
- instInfoTime :: Int
- data RpcResultInstanceInfo = RpcResultInstanceInfo {
- rpcResInstInfoInstInfo :: (Maybe InstanceInfo)
- data RpcCallAllInstancesInfo = RpcCallAllInstancesInfo {}
- data RpcResultAllInstancesInfo = RpcResultAllInstancesInfo {
- rpcResAllInstInfoInstances :: [(String, InstanceInfo)]
- data InstanceConsoleInfoParams = InstanceConsoleInfoParams {}
- data RpcCallInstanceConsoleInfo = RpcCallInstanceConsoleInfo {
- rpcCallInstConsInfoInstanceInfo :: [(String, InstanceConsoleInfoParams)]
- data InstanceConsoleInfo = InstanceConsoleInfo {
- instConsInfoInstance :: String
- instConsInfoKind :: String
- instConsInfoMessage :: (Maybe String)
- instConsInfoHost :: (Maybe String)
- instConsInfoPort :: (Maybe Int)
- instConsInfoUser :: (Maybe String)
- instConsInfoCommand :: (Maybe [String])
- instConsInfoDisplay :: (Maybe String)
- data RpcResultInstanceConsoleInfo = RpcResultInstanceConsoleInfo {
- rpcResInstConsInfoInstancesInfo :: [(String, InstanceConsoleInfo)]
- data RpcCallInstanceList = RpcCallInstanceList {}
- data RpcResultInstanceList = RpcResultInstanceList {
- rpcResInstListInstances :: [String]
- data RpcCallNodeInfo = RpcCallNodeInfo {}
- data StorageInfo = StorageInfo {
- storageInfoName :: String
- storageInfoType :: String
- storageInfoStorageFree :: (Maybe Int)
- storageInfoStorageSize :: (Maybe Int)
- data HvInfo = HvInfo {
- hvInfoHvVersion :: (Maybe [Int])
- hvInfoMemoryTotal :: Int
- hvInfoMemoryFree :: Int
- hvInfoMemoryDom0 :: Int
- hvInfoMemoryHv :: (Maybe Int)
- hvInfoCpuTotal :: Int
- hvInfoCpuNodes :: Int
- hvInfoCpuSockets :: Int
- hvInfoCpuDom0 :: Int
- data RpcResultNodeInfo = RpcResultNodeInfo {
- rpcResNodeInfoBootId :: String
- rpcResNodeInfoStorageInfo :: [StorageInfo]
- rpcResNodeInfoHvInfo :: [HvInfo]
- data RpcCallVersion = RpcCallVersion {
- data RpcResultVersion = RpcResultVersion {
- rpcResultVersionVersion :: Int
- data RpcCallStorageList = RpcCallStorageList {
- rpcCallStorageListSuName :: StorageType
- rpcCallStorageListSuArgs :: [String]
- rpcCallStorageListName :: String
- rpcCallStorageListFields :: [StorageField]
- data RpcResultStorageList = RpcResultStorageList {
- rpcResStorageListStorage :: [[(StorageField, JSValue)]]
- data RpcCallTestDelay = RpcCallTestDelay {
- rpcCallTestDelayDuration :: Double
- data RpcResultTestDelay = RpcResultTestDelay
- data RpcCallExportList = RpcCallExportList {
- data RpcResultExportList = RpcResultExportList {
- rpcResExportListExports :: [String]
- data RpcCallJobqueueUpdate = RpcCallJobqueueUpdate {
- rpcCallJobqueueUpdateFileName :: String
- rpcCallJobqueueUpdateContent :: String
- data RpcCallJobqueueRename = RpcCallJobqueueRename {
- rpcCallJobqueueRenameRename :: [(String, String)]
- data RpcCallSetWatcherPause = RpcCallSetWatcherPause {
- rpcCallSetWatcherPauseTime :: (Maybe ClockTime)
- data RpcCallSetDrainFlag = RpcCallSetDrainFlag {
- rpcCallSetDrainFlagValue :: Bool
- data RpcCallUploadFile = RpcCallUploadFile {
- rpcCallUploadFileFileName :: FilePath
- rpcCallUploadFileContent :: Compressed
- rpcCallUploadFileMode :: (Maybe FileMode)
- rpcCallUploadFileUid :: String
- rpcCallUploadFileGid :: String
- rpcCallUploadFileAtime :: ClockTime
- rpcCallUploadFileMtime :: ClockTime
- prepareRpcCallUploadFile :: RuntimeEnts -> FilePath -> ResultG RpcCallUploadFile
- data RpcCallWriteSsconfFiles = RpcCallWriteSsconfFiles {}
- data RpcCallNodeActivateMasterIp = RpcCallNodeActivateMasterIp {}
- data RpcResultNodeActivateMasterIp = RpcResultNodeActivateMasterIp {
- data RpcCallMasterNodeName = RpcCallMasterNodeName {
- data RpcResultMasterNodeName = RpcResultMasterNodeName {
- rpcResultMasterNodeNameMaster :: String
Base RPC functionality and types
Data type for RPC error reporting.
Constructors
CurlLayerError String | |
JsonDecodeError String | |
RpcResultError String | |
OfflineNodeError |
explainRpcError :: RpcError -> String Source #
Provide explanation to RPC errors.
class ArrayObject a => RpcCall a where Source #
A generic class for RPC calls.
Minimal complete definition
Methods
rpcCallName :: a -> String Source #
Give the (Python) name of the procedure.
rpcCallTimeout :: a -> Int Source #
Calculate the timeout value for the call execution.
rpcCallData :: a -> String Source #
Prepare arguments of the call to be send as POST.
rpcCallAcceptOffline :: a -> Bool Source #
Whether we accept offline nodes when making a call.
Instances
class (RpcCall a, JSON b) => Rpc a b | a -> b, b -> a where Source #
Generic class that ensures matching RPC call with its respective result.
Methods
rpcResultFill :: a -> JSValue -> ERpcError b Source #
Create a result based on the received HTTP response.
Instances
rpcErrors :: [(a, ERpcError b)] -> [(a, RpcError)] Source #
Scan the list of results produced by executeRpcCall and extract all the RPC errors.
logRpcErrors :: (MonadLog m, Show a) => [(a, ERpcError b)] -> m [(a, RpcError)] Source #
Scan the list of results produced by executeRpcCall and log all the RPC errors. Returns the list of errors for further processing.
executeRpcCalls :: Rpc a b => [(Node, a)] -> IO [(Node, ERpcError b)] Source #
Execute multiple distinct RPC calls in parallel
executeRpcCall :: Rpc a b => [Node] -> a -> IO [(Node, ERpcError b)] Source #
Execute an RPC call for many nodes in parallel. NB this computes the RPC call payload string only once.
data Compressed Source #
An opaque data type for representing data that might be compressed over the wire.
On Python side it is decompressed by backend._Decompress
.
Instances
Eq Compressed # | |
Defined in Ganeti.Rpc | |
Ord Compressed # | |
Defined in Ganeti.Rpc Methods compare :: Compressed -> Compressed -> Ordering (<) :: Compressed -> Compressed -> Bool (<=) :: Compressed -> Compressed -> Bool (>) :: Compressed -> Compressed -> Bool (>=) :: Compressed -> Compressed -> Bool max :: Compressed -> Compressed -> Compressed min :: Compressed -> Compressed -> Compressed | |
Show Compressed # | |
Defined in Ganeti.Rpc Methods showsPrec :: Int -> Compressed -> ShowS show :: Compressed -> String showList :: [Compressed] -> ShowS | |
JSON Compressed # | |
Defined in Ganeti.Rpc Methods readJSON :: JSValue -> Result Compressed showJSON :: Compressed -> JSValue readJSONs :: JSValue -> Result [Compressed] showJSONs :: [Compressed] -> JSValue | |
Arbitrary Compressed | |
Defined in Test.Ganeti.Rpc |
packCompressed :: ByteString -> Compressed Source #
toCompressed :: String -> Compressed Source #
RPC calls and results
Instance info
data RpcCallInstanceInfo Source #
Returns information about a single instance
Constructors
RpcCallInstanceInfo | |
Fields
|
Instances
data InstanceState Source #
Constructors
InstanceStateRunning | |
InstanceStateShutdown |
Instances
data InstanceInfo Source #
Constructors
InstanceInfo | |
Fields
|
Instances
Eq InstanceInfo # | |
Defined in Ganeti.Rpc | |
Show InstanceInfo # | |
Defined in Ganeti.Rpc Methods showsPrec :: Int -> InstanceInfo -> ShowS show :: InstanceInfo -> String showList :: [InstanceInfo] -> ShowS | |
JSON InstanceInfo # | |
Defined in Ganeti.Rpc Methods readJSON :: JSValue -> Result InstanceInfo showJSON :: InstanceInfo -> JSValue readJSONs :: JSValue -> Result [InstanceInfo] showJSONs :: [InstanceInfo] -> JSValue | |
ArrayObject InstanceInfo # | |
Defined in Ganeti.Rpc Methods toJSArray :: InstanceInfo -> [JSValue] Source # fromJSArray :: [JSValue] -> Result InstanceInfo Source # | |
DictObject InstanceInfo # | |
Defined in Ganeti.Rpc Methods toDict :: InstanceInfo -> [(String, JSValue)] Source # fromDictWKeys :: [(String, JSValue)] -> WriterT UsedKeys Result InstanceInfo Source # fromDict :: [(String, JSValue)] -> Result InstanceInfo Source # |
data RpcResultInstanceInfo Source #
Constructors
RpcResultInstanceInfo | |
Fields
|
Instances
AllInstancesInfo
data RpcCallAllInstancesInfo Source #
Returns information about all running instances on the given nodes
Constructors
RpcCallAllInstancesInfo | |
Fields |
Instances
data RpcResultAllInstancesInfo Source #
Constructors
RpcResultAllInstancesInfo | |
Fields
|
Instances
InstanceConsoleInfo
data InstanceConsoleInfoParams Source #
Returns information about how to access instances on the given node
Constructors
InstanceConsoleInfoParams | |
Instances
data RpcCallInstanceConsoleInfo Source #
Constructors
RpcCallInstanceConsoleInfo | |
Fields
|
Instances
data InstanceConsoleInfo Source #
Constructors
InstanceConsoleInfo | |
Fields
|
Instances
data RpcResultInstanceConsoleInfo Source #
Constructors
RpcResultInstanceConsoleInfo | |
Fields
|
Instances
InstanceList
data RpcCallInstanceList Source #
Returns the list of running instances on the given nodes
Constructors
RpcCallInstanceList | |
Fields |
Instances
data RpcResultInstanceList Source #
Constructors
RpcResultInstanceList | |
Fields
|
Instances
NodeInfo
data RpcCallNodeInfo Source #
Returns node information
Constructors
RpcCallNodeInfo | |
Fields |
Instances
data StorageInfo Source #
Constructors
StorageInfo | |
Fields
|
Instances
Eq StorageInfo # | |
Defined in Ganeti.Rpc | |
Show StorageInfo # | |
Defined in Ganeti.Rpc Methods showsPrec :: Int -> StorageInfo -> ShowS show :: StorageInfo -> String showList :: [StorageInfo] -> ShowS | |
JSON StorageInfo # | |
Defined in Ganeti.Rpc Methods readJSON :: JSValue -> Result StorageInfo showJSON :: StorageInfo -> JSValue readJSONs :: JSValue -> Result [StorageInfo] showJSONs :: [StorageInfo] -> JSValue | |
ArrayObject StorageInfo # | |
Defined in Ganeti.Rpc Methods toJSArray :: StorageInfo -> [JSValue] Source # fromJSArray :: [JSValue] -> Result StorageInfo Source # | |
DictObject StorageInfo # | |
Defined in Ganeti.Rpc Methods toDict :: StorageInfo -> [(String, JSValue)] Source # fromDictWKeys :: [(String, JSValue)] -> WriterT UsedKeys Result StorageInfo Source # fromDict :: [(String, JSValue)] -> Result StorageInfo Source # |
Common fields (as described in hv_base.py) are mandatory, other fields are optional.
Constructors
HvInfo | |
Fields
|
Instances
Eq HvInfo # | |
Show HvInfo # | |
JSON HvInfo # | |
ArrayObject HvInfo # | |
Defined in Ganeti.Rpc | |
DictObject HvInfo # | |
data RpcResultNodeInfo Source #
Constructors
RpcResultNodeInfo | |
Fields
|
Instances
Version
data RpcCallVersion Source #
Query node version.
Constructors
RpcCallVersion | |
Instances
data RpcResultVersion Source #
Query node reply.
Constructors
RpcResultVersion | |
Fields
|
Instances
StorageList
data RpcCallStorageList Source #
Constructors
RpcCallStorageList | |
Fields
|
Instances
data RpcResultStorageList Source #
Constructors
RpcResultStorageList | |
Fields
|
Instances
TestDelay
data RpcCallTestDelay Source #
Call definition for test delay.
Constructors
RpcCallTestDelay | |
Fields
|
Instances
data RpcResultTestDelay Source #
Result definition for test delay.
Constructors
RpcResultTestDelay |
Instances
Show RpcResultTestDelay # | |
Defined in Ganeti.Rpc Methods showsPrec :: Int -> RpcResultTestDelay -> ShowS show :: RpcResultTestDelay -> String showList :: [RpcResultTestDelay] -> ShowS | |
JSON RpcResultTestDelay # | Custom JSON instance for null result. |
Defined in Ganeti.Rpc Methods readJSON :: JSValue -> Result RpcResultTestDelay showJSON :: RpcResultTestDelay -> JSValue readJSONs :: JSValue -> Result [RpcResultTestDelay] showJSONs :: [RpcResultTestDelay] -> JSValue | |
Rpc RpcCallTestDelay RpcResultTestDelay # | |
Defined in Ganeti.Rpc Methods rpcResultFill :: RpcCallTestDelay -> JSValue -> ERpcError RpcResultTestDelay Source # |
ExportList
data RpcCallExportList Source #
Call definition for export list.
Constructors
RpcCallExportList | |
Instances
data RpcResultExportList Source #
Result definition for export list.
Constructors
RpcResultExportList | |
Fields
|
Instances
Job Queue Replication
data RpcCallJobqueueUpdate Source #
Update a job queue file
Constructors
RpcCallJobqueueUpdate | |
Fields
|
Instances
data RpcCallJobqueueRename Source #
Rename a file in the job queue
Constructors
RpcCallJobqueueRename | |
Fields
|
Instances
Watcher Status Update
data RpcCallSetWatcherPause Source #
Set the watcher status
Constructors
RpcCallSetWatcherPause | |
Fields
|
Instances
Queue drain status
data RpcCallSetDrainFlag Source #
Set the queu drain flag
Constructors
RpcCallSetDrainFlag | |
Fields
|
Instances
Configuration files upload to nodes
data RpcCallUploadFile Source #
Upload a configuration file to nodes
Constructors
RpcCallUploadFile | |
Fields
|
Instances
prepareRpcCallUploadFile :: RuntimeEnts -> FilePath -> ResultG RpcCallUploadFile Source #
Reads a file and constructs the corresponding RpcCallUploadFile
value.
data RpcCallWriteSsconfFiles Source #
Upload ssconf files to nodes
Constructors
RpcCallWriteSsconfFiles | |
Fields |
Instances
data RpcCallNodeActivateMasterIp Source #
Activate the master IP address
Constructors
RpcCallNodeActivateMasterIp | |
Instances
data RpcResultNodeActivateMasterIp Source #
Constructors
RpcResultNodeActivateMasterIp | |
Instances
data RpcCallMasterNodeName Source #
Ask who the node believes is the master.
Constructors
RpcCallMasterNodeName | |
Instances
data RpcResultMasterNodeName Source #
Constructors
RpcResultMasterNodeName | |
Fields
|