diff --git a/Ganeti/HTools/Cluster.hs b/Ganeti/HTools/Cluster.hs index 5bba46e1401e5c71dd0cfa57b25d9292fb41101a..07d7c8e747f44b8462ea8cb9f4b46a134cd30597 100644 --- a/Ganeti/HTools/Cluster.hs +++ b/Ganeti/HTools/Cluster.hs @@ -760,11 +760,12 @@ loadData ndata idata = Node.create (read tm) (read nm) (read fm) (read td) (read fd))) Node.setIdx - {- instance file: name mem disk pnode snode -} + {- instance file: name mem disk status pnode snode -} (kti, il) = loadTabular idata - (\ (name:mem:dsk:pnode:snode:[]) -> + (\ (name:mem:dsk:status:pnode:snode:[]) -> (name, Instance.create (read mem) (read dsk) + status (fromJust $ lookup pnode ktn) (fromJust $ lookup snode ktn))) Instance.setIdx diff --git a/Ganeti/HTools/Instance.hs b/Ganeti/HTools/Instance.hs index 4dcb28d4dd41e3cd4b4289aeb1c360bfcc8aca8d..d115742e0ffce6d4c2bb57119672af2270414dac 100644 --- a/Ganeti/HTools/Instance.hs +++ b/Ganeti/HTools/Instance.hs @@ -6,18 +6,27 @@ intelligence is in the "Node" and "Cluster" modules. -} module Ganeti.HTools.Instance where -data Instance = Instance { mem :: Int -- ^ memory of the instance - , dsk :: Int -- ^ disk size of instance - , pnode :: Int -- ^ original primary node - , snode :: Int -- ^ original secondary node - , idx :: Int -- ^ internal index for book-keeping +data Instance = Instance { mem :: Int -- ^ memory of the instance + , dsk :: Int -- ^ disk size of instance + , running :: Bool -- ^ whether the instance + -- is running + , run_st :: String -- ^ original (text) run status + , pnode :: Int -- ^ original primary node + , snode :: Int -- ^ original secondary node + , idx :: Int -- ^ internal index for + -- book-keeping } deriving (Show) -create :: Int -> Int -> Int -> Int -> Instance -create mem_init dsk_init pn sn = +create :: Int -> Int -> String -> Int -> Int -> Instance +create mem_init dsk_init run_init pn sn = Instance { mem = mem_init, dsk = dsk_init, + running = case run_init of + "running" -> True + "ERROR_up" -> True + _ -> False, + run_st = run_init, pnode = pn, snode = sn, idx = -1 diff --git a/Ganeti/HTools/Rapi.hs b/Ganeti/HTools/Rapi.hs index ba1b5774996f973fec4180474a22f6b346bc5f95..c5e4df28f1f58d00443d4cb3ddbf9db5f7354433 100644 --- a/Ganeti/HTools/Rapi.hs +++ b/Ganeti/HTools/Rapi.hs @@ -151,10 +151,12 @@ parseInstance a = mem = case bep of Left _ -> getIntElement "admin_ram" a Right o -> getIntElement "memory" o + running = getStringElement "status" a in concatElems name $ concatElems (show `apply1` mem) $ concatElems (show `apply1` disk) $ + concatElems running $ concatElems pnode snode parseNode :: JSObject JSValue -> Either String String diff --git a/hscan.hs b/hscan.hs index 634cbe52c677f5a5fcb8f09927a529c70aad4b8e..37f72b068d6df21b94265d404f82a59235812475 100644 --- a/hscan.hs +++ b/hscan.hs @@ -99,8 +99,9 @@ serializeInstances il csf ktn kti = pnode = fromJust $ lookup (Instance.pnode inst) etn snode = fromJust $ lookup (Instance.snode inst) etn in - printf "%s|%d|%d|%s|%s" + printf "%s|%d|%d|%s|%s|%s" iname (Instance.mem inst) (Instance.dsk inst) + (Instance.run_st inst) pnode snode ) instances