diff --git a/Ganeti/HTools/IAlloc.hs b/Ganeti/HTools/IAlloc.hs index 76776e7c506cbc54a8d7817cd28475a1d54eb51f..f6a27337089f88eb3b6f4fc353c135cfeef83736 100644 --- a/Ganeti/HTools/IAlloc.hs +++ b/Ganeti/HTools/IAlloc.hs @@ -43,7 +43,7 @@ parseBaseInstance n a = do x@(Ok _) -> x mem <- fromObj "memory" a let running = "running" - return $ (n, Instance.create mem disk running 0 0) + return $ (n, Instance.create n mem disk running 0 0) parseInstance :: NameAssoc -> String @@ -68,7 +68,7 @@ parseNode n a = do dfree <- fromObj "free_disk" a offline <- fromObj "offline" a drained <- fromObj "offline" a - return $ (name, Node.create mtotal mnode mfree dtotal dfree + return $ (name, Node.create n mtotal mnode mfree dtotal dfree (offline || drained)) parseData :: String -> Result Request diff --git a/Ganeti/HTools/Instance.hs b/Ganeti/HTools/Instance.hs index 96a7afe52ce8ad5a301904ba1e966592437520a4..f7b9b42d43d4e4d623c2678077467d0b5be80796 100644 --- a/Ganeti/HTools/Instance.hs +++ b/Ganeti/HTools/Instance.hs @@ -6,7 +6,8 @@ intelligence is in the "Node" and "Cluster" modules. -} module Ganeti.HTools.Instance where -data Instance = Instance { mem :: Int -- ^ memory of the instance +data Instance = Instance { name :: String -- ^ the instance name + , mem :: Int -- ^ memory of the instance , dsk :: Int -- ^ disk size of instance , running :: Bool -- ^ whether the instance -- is running @@ -20,9 +21,10 @@ data Instance = Instance { mem :: Int -- ^ memory of the instance -- | A simple name for the int, instance association list type AssocList = [(Int, Instance)] -create :: Int -> Int -> String -> Int -> Int -> Instance -create mem_init dsk_init run_init pn sn = +create :: String -> Int -> Int -> String -> Int -> Int -> Instance +create name_init mem_init dsk_init run_init pn sn = Instance { + name = name_init, mem = mem_init, dsk = dsk_init, running = case run_init of diff --git a/Ganeti/HTools/Node.hs b/Ganeti/HTools/Node.hs index c5856fbe793e0d439ca046dba590098d24769c2c..228107e5b8227107a86eb53427612a77cbd8e1d8 100644 --- a/Ganeti/HTools/Node.hs +++ b/Ganeti/HTools/Node.hs @@ -6,7 +6,7 @@ module Ganeti.HTools.Node ( - Node(failN1, idx, t_mem, n_mem, f_mem, t_dsk, f_dsk, + Node(failN1, name, idx, t_mem, n_mem, f_mem, t_dsk, f_dsk, p_mem, p_dsk, p_rem, plist, slist, offline) -- * Constructor @@ -38,7 +38,8 @@ import qualified Ganeti.HTools.Container as Container import qualified Ganeti.HTools.Instance as Instance import qualified Ganeti.HTools.PeerMap as PeerMap -data Node = Node { t_mem :: Double -- ^ total memory (MiB) +data Node = Node { name :: String -- ^ the node name + , t_mem :: Double -- ^ total memory (MiB) , n_mem :: Int -- ^ node memory (MiB) , f_mem :: Int -- ^ free memory (MiB) , x_mem :: Int -- ^ unaccounted memory (MiB) @@ -72,11 +73,12 @@ The index and the peers maps are empty, and will be need to be update later via the 'setIdx' and 'buildPeers' functions. -} -create :: Double -> Int -> Int -> Double -> Int -> Bool -> Node -create mem_t_init mem_n_init mem_f_init dsk_t_init dsk_f_init - offline_init = +create :: String -> Double -> Int -> Int -> Double -> Int -> Bool -> Node +create name_init mem_t_init mem_n_init mem_f_init + dsk_t_init dsk_f_init offline_init = Node { + name = name_init, t_mem = mem_t_init, n_mem = mem_n_init, f_mem = mem_f_init, diff --git a/Ganeti/HTools/Rapi.hs b/Ganeti/HTools/Rapi.hs index 58540e1dace10511290161e8495ba4905ce20214..6f20e7bf4553967a1ae6d707f84c81e598fe624a 100644 --- a/Ganeti/HTools/Rapi.hs +++ b/Ganeti/HTools/Rapi.hs @@ -63,7 +63,7 @@ parseInstance ktn a = do snode <- (if null snodes then return Node.noSecondary else readEitherString (head snodes) >>= lookupNode ktn name) running <- fromObj "status" a - let inst = Instance.create mem disk running pnode snode + let inst = Instance.create name mem disk running pnode snode return (name, inst) parseNode :: JSObject JSValue -> Result (String, Node.Node) @@ -71,7 +71,7 @@ parseNode a = do name <- fromObj "name" a offline <- fromObj "offline" a node <- (case offline of - True -> return $ Node.create 0 0 0 0 0 True + True -> return $ Node.create name 0 0 0 0 0 True _ -> do drained <- fromObj "drained" a mtotal <- fromObj "mtotal" a @@ -79,7 +79,7 @@ parseNode a = do mfree <- fromObj "mfree" a dtotal <- fromObj "dtotal" a dfree <- fromObj "dfree" a - return $ Node.create mtotal mnode mfree + return $ Node.create name mtotal mnode mfree dtotal dfree (offline || drained)) return (name, node) diff --git a/Ganeti/HTools/Text.hs b/Ganeti/HTools/Text.hs index a148c2b029673b74fafb50dd75b07ce032f92777..03ff5cf6b5e3d44f1acc7a5591ea6b8698a5bb33 100644 --- a/Ganeti/HTools/Text.hs +++ b/Ganeti/HTools/Text.hs @@ -31,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) ++ "'" @@ -53,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) ++ "'"