Pass actual types to node/instance constructors
authorIustin Pop <iustin@google.com>
Sat, 21 Mar 2009 23:12:29 +0000 (00:12 +0100)
committerIustin Pop <iustin@google.com>
Sat, 21 Mar 2009 23:12:29 +0000 (00:12 +0100)
This patch changes the parameters passed to the node and instance
constructors from generic Strings (which are then parsed via “read”) to
the actual used types, by converting them earlier in Cluster.loadData.

Ganeti/HTools/Cluster.hs
Ganeti/HTools/Instance.hs
Ganeti/HTools/Node.hs

index 93a5ce5..31b9e4e 100644 (file)
@@ -750,16 +750,19 @@ loadData :: String -- ^ Node data in text format
              String, NameList, NameList)
 loadData ndata idata =
     let
-    {- node file: name mem disk -}
+    {- node file: name t_mem f_mem t_disk f_disk -}
         (ktn, nl) = loadTabular ndata
-                    (\ (i:jt:jf:kt:kf:[]) -> (i, Node.create jt jf kt kf))
+                    (\ (name:tm:fm:td:fd:[]) ->
+                         (name,
+                          Node.create (read tm) (read fm) (read td) (read fd)))
                     Node.setIdx
     {- instance file: name mem disk pnode snode -}
         (kti, il) = loadTabular idata
-                    (\ (i:j:k:l:m:[]) -> (i,
-                                           Instance.create j k
-                                               (fromJust $ lookup l ktn)
-                                               (fromJust $ lookup m ktn)))
+                    (\ (name:mem:dsk:pnode:snode:[]) ->
+                         (name,
+                          Instance.create (read mem) (read dsk)
+                              (fromJust $ lookup pnode ktn)
+                              (fromJust $ lookup snode ktn)))
                     Instance.setIdx
         nl2 = fixNodes nl il
         il3 = Container.fromAssocList il
index 0e5d965..4dcb28d 100644 (file)
@@ -13,14 +13,15 @@ data Instance = Instance { mem :: Int   -- ^ memory of the instance
                          , idx :: Int   -- ^ internal index for book-keeping
                          } deriving (Show)
 
-create :: String -> String -> Int -> Int -> Instance
-create mem_init dsk_init pn sn = Instance {
-                              mem = read mem_init,
-                              dsk = read dsk_init,
-                              pnode = pn,
-                              snode = sn,
-                              idx = -1
-                            }
+create :: Int -> Int -> Int -> Int -> Instance
+create mem_init dsk_init pn sn =
+    Instance {
+          mem = mem_init,
+          dsk = dsk_init,
+          pnode = pn,
+          snode = sn,
+          idx = -1
+        }
 
 -- | Changes the primary node of the instance.
 setPri :: Instance  -- ^ the original instance
index e667ce3..5219778 100644 (file)
@@ -59,30 +59,25 @@ The index and the peers maps are empty, and will be need to be update
 later via the 'setIdx' and 'buildPeers' functions.
 
 -}
-create :: String -> String -> String -> String -> Node
+create :: Double -> Int -> Double -> Int -> Node
 create mem_t_init mem_f_init dsk_t_init dsk_f_init =
-    let mem_t = read mem_t_init
-        mem_f = read mem_f_init
-        dsk_t = read dsk_t_init
-        dsk_f = read dsk_f_init
-    in
-      Node
-      {
-       t_mem = read mem_t_init,
-       f_mem = read mem_f_init,
-       t_dsk = read dsk_t_init,
-       f_dsk = read dsk_f_init,
-       plist = [],
-       slist = [],
-       failN1 = True,
-       idx = -1,
-       peers = PeerMap.empty,
-       r_mem = 0,
-       p_mem = (fromIntegral mem_f) / (fromIntegral mem_t),
-       p_dsk = (fromIntegral dsk_f) / (fromIntegral dsk_t),
-       p_rem = 0,
-       offline = False
-      }
+    Node
+    {
+      t_mem = mem_t_init,
+      f_mem = mem_f_init,
+      t_dsk = dsk_t_init,
+      f_dsk = dsk_f_init,
+      plist = [],
+      slist = [],
+      failN1 = True,
+      idx = -1,
+      peers = PeerMap.empty,
+      r_mem = 0,
+      p_mem = (fromIntegral mem_f_init) / mem_t_init,
+      p_dsk = (fromIntegral dsk_f_init) / dsk_t_init,
+      p_rem = 0,
+      offline = False
+    }
 
 -- | Changes the index.
 -- This is used only during the building of the data structures.