, RpcCallVersion(..)
, RpcResultVersion(..)
- , StorageType(..)
, StorageField(..)
, RpcCallStorageList(..)
, RpcResultStorageList(..)
import Control.Arrow (second)
import qualified Text.JSON as J
import Text.JSON.Pretty (pp_value)
-import Text.JSON (makeObj)
#ifndef NO_CURL
import Network.Curl
import qualified Ganeti.Constants as C
import Ganeti.Objects
import Ganeti.THH
+import Ganeti.Types
import Ganeti.Compat
-import Ganeti.JSON
-- * Base RPC functionality and types
-- | The curl options used for RPC.
curlOpts :: [CurlOption]
curlOpts = [ CurlFollowLocation False
- , CurlCAInfo P.nodedCertFile
, CurlSSLVerifyHost 0
, CurlSSLVerifyPeer True
, CurlSSLCertType "PEM"
- , CurlSSLCert P.nodedCertFile
, CurlSSLKeyType "PEM"
- , CurlSSLKey P.nodedCertFile
, CurlConnectTimeout (fromIntegral C.rpcConnectTimeout)
]
#endif
executeHttpRequest _ _ = return $ Left CurlDisabledError
#else
executeHttpRequest node (Right request) = do
+ cert_file <- P.nodedCertFile
let reqOpts = [ CurlTimeout (fromIntegral $ requestTimeout request)
, CurlPostFields [requestPostData request]
+ , CurlSSLCert cert_file
+ , CurlSSLKey cert_file
+ , CurlCAInfo cert_file
]
url = requestUrl request
-- FIXME: This is very similar to getUrl in Htools/Rapi.hs
-- Query node version.
-- Note: We can't use THH as it does not know what to do with empty dict
data RpcCallVersion = RpcCallVersion {}
- deriving (Show, Read, Eq)
+ deriving (Show, Eq)
instance J.JSON RpcCallVersion where
showJSON _ = J.JSNull
-- ** StorageList
-- | StorageList
--- Get list of storage units.
--- FIXME: This may be moved to Objects
-$(declareSADT "StorageType"
- [ ( "STLvmPv", 'C.stLvmPv )
- , ( "STFile", 'C.stFile )
- , ( "STLvmVg", 'C.stLvmVg )
- ])
-$(makeJSONInstance ''StorageType)
-- FIXME: This may be moved to Objects
$(declareSADT "StorageField"