git.iko.soy/distributed-process
on master help sign in
Initialize SSH once
commit8496c310adbd13813bf93b5f3ec78e29d5da87f0 authorEdsko de Vries <edsko@well-typed.com> dateTue 31 Jul 2012, 14:35 (14 years ago) parent5585627
2 files changed+9−8
distributed-process-azure/src/Control/Distributed/Process/Backend/Azure.hs+2−7 distributed-process-azure/src/Control/Distributed/Process/Backend/Azure/CommandLine.hs+7−1
distributed-process-azure/src/Control/Distributed/Process/Backend/Azure.hs+2−7
@@ -33,9 +33,7 @@ import qualified Network.SSH.Client.LibSSH2 as SSH
3333 , readAllChannel
3434 )
3535import qualified Network.SSH.Client.LibSSH2.Foreign as SSH
36− ( initialize
37− , exit
38− , openChannelSession
36+ ( openChannelSession
3937 , retryIfNeeded
4038 , channelExecute
4139 , writeChannel
@@ -100,7 +98,6 @@ initializeBackend params = do
10098-- | Start a CH node on the given virtual machine
10199apiCopyToVM :: AzureParameters -> VirtualMachine -> IO ()
102100apiCopyToVM params (Azure.vmSshEndpoint -> Just ep) = do
103− _ <- SSH.initialize True
104101 _ <- SSH.withSSH2 (azureSshKnownHosts params)
105102 (azureSshPublicKey params)
106103 (azureSshPrivateKey params)
@@ -110,14 +107,13 @@ apiCopyToVM params (Azure.vmSshEndpoint -> Just ep) = do
110107 (read $ endpointPort ep) $ \fd s -> do
111108 SSH.scpSendFile fd s 0o700 (azureSshLocalPath params) (azureSshRemotePath params)
112109 -- SSH.execCommands fd s ["nohup /home/edsko/testservice >/dev/null 2>&1 &"]
113− SSH.exit
110+ return ()
114111apiCopyToVM _ _ =
115112 error "copyToVM: No SSH endpoint"
116113
117114apiCheckMD5 :: AzureParameters -> VirtualMachine -> IO Bool
118115apiCheckMD5 params (Azure.vmSshEndpoint -> Just ep) = do
119116 hash <- localHash params
120− _ <- SSH.initialize True
121117 match <- SSH.withSSH2 (azureSshKnownHosts params)
122118 (azureSshPublicKey params)
123119 (azureSshPrivateKey params)
@@ -131,7 +127,6 @@ apiCheckMD5 params (Azure.vmSshEndpoint -> Just ep) = do
131127 SSH.channelSendEOF ch
132128 SSH.readAllChannel fd ch
133129 return (r == 0)
134− SSH.exit
135130 return match
136131apiCheckMD5 _ _ =
137132 error "checkMD5: No SSH endpoint"
distributed-process-azure/src/Control/Distributed/Process/Backend/Azure/CommandLine.hs+7−1
@@ -3,6 +3,7 @@ import System.Environment (getArgs)
33import System.Exit (exitSuccess, exitFailure)
44import System.IO (hFlush, stdout)
55import Control.Monad (unless, forM, forM_)
6+import Control.Arrow (returnA)
67import Control.Distributed.Process.Backend.Azure
78 ( AzureParameters(azureSshUserName)
89 , defaultAzureParameters
@@ -12,7 +13,10 @@ import Control.Distributed.Process.Backend.Azure
1213 , VirtualMachine(vmName)
1314 , Backend(copyToVM, checkMD5)
1415 )
15−import Control.Arrow (returnA)
16+import qualified Network.SSH.Client.LibSSH2.Foreign as SSH
17+ ( initialize
18+ , exit
19+ )
1620import Control.Applicative ((<$>), (<*>), (<|>))
1721import Options.Applicative
1822 ( Parser
@@ -141,6 +145,7 @@ commandParser = subparser
141145
142146main :: IO ()
143147main = do
148+ _ <- SSH.initialize True
144149 cmd <- execParser opts
145150 case cmd of
146151 List {} -> do
@@ -168,6 +173,7 @@ main = do
168173 if and matches
169174 then exitSuccess
170175 else exitFailure
176+ SSH.exit
171177 where
172178 opts = info (helper <*> commandParser)
173179 ( fullDesc