Revision c3f8cb12 htools/Ganeti/HTools/IAlloc.hs

b/htools/Ganeti/HTools/IAlloc.hs
30 30
  ) where
31 31

  
32 32
import Data.Either ()
33
import Data.Maybe (fromMaybe, isJust)
33
import Data.Maybe (fromMaybe)
34 34
import Data.List
35 35
import Control.Monad
36 36
import Text.JSON (JSObject, JSValue(JSArray),
......
46 46
import qualified Ganeti.Constants as C
47 47
import Ganeti.HTools.CLI
48 48
import Ganeti.HTools.Loader
49
import Ganeti.HTools.ExtLoader (loadExternalData)
50 49
import Ganeti.HTools.JSON
51 50
import Ganeti.HTools.Types
52 51

  
......
325 324
                formatNodeEvac gl nl il
326 325

  
327 326
-- | Reads the request from the data file(s).
328
readRequest :: Options -> [String] -> IO Request
329
readRequest opts args = do
330
  when (null args) $ do
331
    hPutStrLn stderr "Error: this program needs an input file."
332
    exitWith $ ExitFailure 1
333

  
334
  input_data <- readFile (head args)
335
  r1 <- case parseData input_data of
336
          Bad err -> do
337
            hPutStrLn stderr $ "Error: " ++ err
338
            exitWith $ ExitFailure 1
339
          Ok (fix_msgs, rq) -> maybeShowWarnings fix_msgs >> return rq
340
  if isJust (optDataFile opts) ||  (not . null . optNodeSim) opts
341
    then do
342
      cdata <- loadExternalData opts
343
      let Request rqt _ = r1
344
      return $ Request rqt cdata
345
    else return r1
327
readRequest :: FilePath -> IO Request
328
readRequest fp = do
329
  input_data <- readFile fp
330
  case parseData input_data of
331
    Bad err -> do
332
      hPutStrLn stderr $ "Error: " ++ err
333
      exitWith $ ExitFailure 1
334
    Ok (fix_msgs, rq) -> maybeShowWarnings fix_msgs >> return rq
346 335

  
347 336
-- | Main iallocator pipeline.
348 337
runIAllocator :: Request -> (Maybe (Node.List, Instance.List), String)

Also available in: Unified diff