loadNode (name:tm:nm:fm:td:fd:fo:[]) = do
new_node <-
if any (== "?") [tm,nm,fm,td,fd] || fo == "Y" then
- return $ Node.create 0 0 0 0 0 True
+ return $ Node.create name 0 0 0 0 0 True
else do
vtm <- tryRead name tm
vnm <- tryRead name nm
vfm <- tryRead name fm
vtd <- tryRead name td
vfd <- tryRead name fd
- return $ Node.create vtm vnm vfm vtd vfd False
+ return $ Node.create name vtm vnm vfm vtd vfd False
return (name, new_node)
loadNode s = fail $ "Invalid/incomplete node data: '" ++ (show s) ++ "'"
vdsk <- tryRead name dsk
when (sidx == pidx) $ fail $ "Instance " ++ name ++
" has same primary and secondary node - " ++ pnode
- let newinst = Instance.create vmem vdsk status pidx sidx
+ let newinst = Instance.create name vmem vdsk status pidx sidx
return (name, newinst)
loadInst _ s = fail $ "Invalid/incomplete instance data: '" ++ (show s) ++ "'"
supplied conversion function.
-}
-loadTabular :: (Monad m) => String -> ([String] -> m (String, a))
- -> (a -> Int -> a) -> m ([(String, Int)], [(Int, a)])
-loadTabular text_data convert_fn set_fn = do
+loadTabular :: (Monad m, Element a) =>
+ String -> ([String] -> m (String, a))
+ -> m ([(String, Int)], [(Int, a)])
+loadTabular text_data convert_fn = do
let lines_data = lines text_data
rows = map (sepSplit '|') lines_data
kerows <- mapM convert_fn rows
- return $ assignIndices set_fn kerows
+ return $ assignIndices kerows
loadData :: String -- ^ Node data in string format
-> String -- ^ Instance data in string format
idata <- readFile ifile
return $ do
{- node file: name t_mem n_mem f_mem t_disk f_disk -}
- (ktn, nl) <- loadTabular ndata loadNode Node.setIdx
+ (ktn, nl) <- loadTabular ndata loadNode
{- instance file: name mem disk status pnode snode -}
- (kti, il) <- loadTabular idata (loadInst ktn) Instance.setIdx
+ (kti, il) <- loadTabular idata (loadInst ktn)
return (ktn, nl, kti, il)