Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
41 lines (32 sloc) 1.804 kb
module Main (main) where
-- This is a diagnostic program that will
-- give you feedback about what it sees
-- as your current configuration of Cloud Haskell.
-- If your program isn't able to talk to remote
-- nodes, run this program to check your configuration.
import Remote (remoteInit, getPeers, getSelfNode, ProcessM)
import Remote.Process (hostFromNid,getConfig,cfgNetworkMagic,cfgKnownHosts,cfgPeerDiscoveryPort)
import qualified Data.Map as Map (elems)
import Control.Monad.Trans (liftIO)
import Data.List (intercalate,nub)
s :: String -> ProcessM ()
s = liftIO . putStrLn
orNone :: [String] -> String
orNone [] = "None"
orNone a = intercalate "," a
initialProcess myRole =
do s "Cloud Haskell diagnostics\n"
mynid <- getSelfNode
peers <- getPeers
cfg <- getConfig
s $ "I seem to be running on host \""++hostFromNid mynid++"\".\nIf that's wrong, set it using the cfgHostName option.\n"
s $ "My role is \""++myRole++"\".\nIf that's wrong, set it using the cfgRole option.\n"
s $ "My magic is \""++cfgNetworkMagic cfg++"\".\nIf that's wrong, set it using the cfgNetworkMagic option.\n"
s $ "I will look for nodes on the following hosts: " ++ orNone (cfgKnownHosts cfg)
s $ if cfgPeerDiscoveryPort cfg > 0
then "I will also look for nodes on the local network."
else "I will not look for nodes on the local network other than those named above."
let hosts = orNone $ nub $ map (hostFromNid) (concat $ Map.elems peers)
s $ "I have found nodes on the following hosts: "++hosts++".\nIf I'm not finding all the nodes you expected, make sure they:"
s $ "\tare running\n\tare not behind a firewall\n\thave the same magic\n\tare listed in cfgKnownHosts"
main = remoteInit (Just "config") [] initialProcess
Jump to Line
Something went wrong with that request. Please try again.