Revision f9666f00

b/src/Ganeti/Query/Server.hs
33 33
import Control.Concurrent
34 34
import Control.Exception
35 35
import Control.Monad (forever, when, zipWithM, liftM)
36
import Control.Monad.IO.Class
36 37
import Data.Bits (bitSize)
37 38
import qualified Data.Set as Set (toList)
38 39
import Data.IORef
......
219 220
  answerEval <- sequence answer
220 221
  return . Ok . showJSON $ answerEval
221 222

  
222
handleCall qlock qstat cfg (SubmitJobToDrainedQueue ops) =
223
  do
223
handleCall qlock qstat cfg (SubmitJobToDrainedQueue ops) = runResultT $ do
224 224
    let mcs = Config.getMasterCandidates cfg
225
    jobid <- allocateJobId mcs qlock
226
    case jobid of
227
      Bad s -> return . Bad . GenericError $ s
228
      Ok jid -> do
229
        ts <- currentTimestamp
230
        job <- liftM (setReceivedTimestamp ts)
231
                 $ queuedJobFromOpCodes jid ops
232
        qDir <- queueDir
233
        write_result <- writeJobToDisk qDir job
234
        case write_result of
235
          Bad s -> return . Bad . GenericError $ s
236
          Ok () -> do
237
            _ <- replicateManyJobs qDir mcs [job]
238
            _ <- forkIO $ enqueueNewJobs qstat [job]
239
            return . Ok . showJSON . fromJobId $ jid
225
    jid <- mkResultT $ allocateJobId mcs qlock
226
    ts <- liftIO currentTimestamp
227
    job <- liftM (setReceivedTimestamp ts)
228
             $ queuedJobFromOpCodes jid ops
229
    qDir <- liftIO queueDir
230
    mkResultT $ writeJobToDisk qDir job
231
    liftIO $ replicateManyJobs qDir mcs [job]
232
    _ <- liftIO . forkIO $ enqueueNewJobs qstat [job]
233
    return . showJSON . fromJobId $ jid
240 234

  
241 235
handleCall qlock qstat cfg (SubmitJob ops) =
242 236
  do

Also available in: Unified diff