On Mon, Nov 02, 2015 at 01:22:29PM +0100, Oleg Ponomarev wrote: > Please add a comment describing what is "sor" somewhere in the > Luxi.hs because it's not clear. > > Rest LGTM.
I propose to include the following interdiff. commit 986df14d101691a5c828a7ea4a37ebcdd6c687f2 Author: Klaus Aehlig <[email protected]> Date: Mon Nov 2 13:34:06 2015 +0100 Interdiff [PATCH master 3/4] Honor the --state-of-record option in the luxi backend diff --git a/src/Ganeti/HTools/Backend/Luxi.hs b/src/Ganeti/HTools/Backend/Luxi.hs index 215fd5c..08fe2a3 100644 --- a/src/Ganeti/HTools/Backend/Luxi.hs +++ b/src/Ganeti/HTools/Backend/Luxi.hs @@ -135,14 +135,14 @@ queryGroups :: L.Client -> IO (Result JSValue) queryGroups = liftM errToResult . L.callMethod queryGroupsMsg -- | Parse a instance list in JSON format. -getInstances :: Bool +getInstances :: Bool -- ^ use only state-of-record (SoR) data -> NameAssoc -> JSValue -> Result [(String, Instance.Instance)] getInstances sor ktn arr = L.extractArray arr >>= mapM (parseInstance sor ktn) -- | Construct an instance from a JSON object. -parseInstance :: Bool +parseInstance :: Bool -- ^ use only state-of-record (SoR) data -> NameAssoc -> [(JSValue, JSValue)] -> Result (String, Instance.Instance) @@ -154,6 +154,8 @@ parseInstance sor ktn xdisk <- convert "disk_usage" disk xmem <- case (sor, oram) of -- FIXME: remove the "guessing" (False, (_, JSRational _ _)) -> convert "oper_ram" oram + -- Note: "oper_ram" is live data; we only use it if not told + -- to restrict to state-of-record data _ -> convert "be/memory" mem xvcpus <- convert "be/vcpus" vcpus xpnode <- convert "pnode" pnode >>= lookupNode ktn xname @@ -277,7 +279,7 @@ readData master = -- | Converts the output of 'readData' into the internal cluster -- representation. -parseData :: Bool +parseData :: Bool -- ^ use only state-of-record (SoR) data -> (Result JSValue, Result JSValue, Result JSValue, Result JSValue) -> Result ClusterData parseData sor (groups, nodes, instances, cinfo) = do @@ -292,7 +294,7 @@ parseData sor (groups, nodes, instances, cinfo) = do return (ClusterData group_idx node_idx' inst_idx ctags cpol) -- | Top level function for data loading. -loadData :: Bool -- ^ use only state-of-record data +loadData :: Bool -- ^ use only state-of-record (SoR) data -> String -- ^ Unix socket to use as source -> IO (Result ClusterData) loadData sor = fmap (parseData sor) . readData -- Klaus Aehlig Google Germany GmbH, Dienerstr. 12, 80331 Muenchen Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Geschaeftsfuehrer: Matthew Scott Sucherman, Paul Terence Manicle
