Make IAlloc.loadData return maps
[ganeti-local] / Ganeti / HTools / Text.hs
index f643e5f..7c85db3 100644 (file)
@@ -12,6 +12,7 @@ import Control.Monad
 
 import Ganeti.HTools.Utils
 import Ganeti.HTools.Loader
+import Ganeti.HTools.Types
 import qualified Ganeti.HTools.Node as Node
 import qualified Ganeti.HTools.Instance as Instance
 
@@ -30,14 +31,14 @@ loadNode :: (Monad m) => [String] -> m (String, Node.Node)
 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) ++ "'"
 
@@ -52,7 +53,7 @@ loadInst ktn (name:mem:dsk:status:pnode:snode:[]) = do
   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) ++ "'"
 
@@ -63,13 +64,14 @@ This function converts a text in tabular format as generated by
 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
@@ -80,7 +82,7 @@ loadData nfile ifile = do -- IO monad
   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)