Thanks a lot, Viktor!
среда, 30 марта 2016 г., 16:42:11 UTC+3 пользователь Viktor Bachraty написал: > > LGTM. Thanks! I will push this patch later today. > > On Tuesday, March 29, 2016 at 5:50:58 PM UTC+1, Даниил Лещёв wrote: >> >> From: Daniil Leshchev <[email protected] <javascript:>> >> >> In accordance with issue #475: >> Implement extraction of 'networks' field in Rapi and Luxi backends. >> Add 'networks' field into Group query object. >> >> Signed-off-by: Daniil Leshchev <[email protected] <javascript:>> >> --- >> lib/query.py | 3 +++ >> src/Ganeti/HTools/Backend/Luxi.hs | 8 ++++---- >> src/Ganeti/HTools/Backend/Rapi.hs | 5 +++-- >> src/Ganeti/Query/Group.hs | 2 ++ >> 4 files changed, 12 insertions(+), 6 deletions(-) >> >> diff --git a/lib/query.py b/lib/query.py >> index 43d8fad..222c14f 100644 >> --- a/lib/query.py >> +++ b/lib/query.py >> @@ -2448,6 +2448,9 @@ def _BuildGroupFields(): >> (_MakeField("ipolicy", "InstancePolicy", QFT_OTHER, >> "Instance policy limitations (merged)"), >> GQ_CONFIG, 0, lambda ctx, _: ctx.group_ipolicy), >> + (_MakeField("networks", "Networks", QFT_OTHER, >> + "Node group networks"), >> + GQ_CONFIG, 0, _GetItemAttr("networks")), >> (_MakeField("custom_ipolicy", "CustomInstancePolicy", QFT_OTHER, >> "Custom instance policy limitations"), >> GQ_CONFIG, 0, _GetItemAttr("ipolicy")), >> diff --git a/src/Ganeti/HTools/Backend/Luxi.hs >> b/src/Ganeti/HTools/Backend/Luxi.hs >> index 5a3cb1d..2ac71e6 100644 >> --- a/src/Ganeti/HTools/Backend/Luxi.hs >> +++ b/src/Ganeti/HTools/Backend/Luxi.hs >> @@ -149,7 +149,7 @@ queryClusterInfoMsg = L.QueryClusterInfo >> queryGroupsMsg :: L.LuxiOp >> queryGroupsMsg = >> L.Query (Qlang.ItemTypeOpCode Qlang.QRGroup) >> - ["uuid", "name", "alloc_policy", "ipolicy", "tags"] >> + ["uuid", "name", "alloc_policy", "ipolicy", "tags", "networks"] >> Qlang.EmptyFilter >> >> -- | Wraper over 'callMethod' doing node query. >> @@ -276,15 +276,15 @@ getGroups jsv = extractArray jsv >>= mapM >> parseGroup >> >> -- | Parses a given group information. >> parseGroup :: [(JSValue, JSValue)] -> Result (String, Group.Group) >> -parseGroup [uuid, name, apol, ipol, tags] = do >> +parseGroup [uuid, name, apol, ipol, tags, nets] = do >> xname <- annotateResult "Parsing new group" (fromJValWithStatus name) >> let convert a = genericConvert "Group" xname a >> xuuid <- convert "uuid" uuid >> xapol <- convert "alloc_policy" apol >> xipol <- convert "ipolicy" ipol >> xtags <- convert "tags" tags >> - -- TODO: parse networks to which this group is connected >> - return (xuuid, Group.create xname xuuid xapol [] xipol xtags) >> + xnets <- convert "networks" nets >> + return (xuuid, Group.create xname xuuid xapol xnets xipol xtags) >> >> parseGroup v = fail ("Invalid group query result: " ++ show v) >> >> diff --git a/src/Ganeti/HTools/Backend/Rapi.hs >> b/src/Ganeti/HTools/Backend/Rapi.hs >> index df93d6a..ce1bb10 100644 >> --- a/src/Ganeti/HTools/Backend/Rapi.hs >> +++ b/src/Ganeti/HTools/Backend/Rapi.hs >> @@ -196,12 +196,13 @@ parseGroup :: JSRecord -> Result (String, >> Group.Group) >> parseGroup a = do >> name <- tryFromObj "Parsing new group" a "name" >> let extract s = tryFromObj ("Group '" ++ name ++ "'") a s >> + let extractDef s d = fromObjWithDefault a s d >> uuid <- extract "uuid" >> apol <- extract "alloc_policy" >> ipol <- extract "ipolicy" >> tags <- extract "tags" >> - -- TODO: parse networks to which this group is connected >> - return (uuid, Group.create name uuid apol [] ipol tags) >> + nets <- extractDef "networks" [] >> + return (uuid, Group.create name uuid apol nets ipol tags) >> >> -- | Parse cluster data from the info resource. >> parseCluster :: JSObject JSValue -> Result ([String], IPolicy, String) >> diff --git a/src/Ganeti/Query/Group.hs b/src/Ganeti/Query/Group.hs >> index 45bd81a..4989788 100644 >> --- a/src/Ganeti/Query/Group.hs >> +++ b/src/Ganeti/Query/Group.hs >> @@ -55,6 +55,8 @@ groupFields = >> , (FieldDefinition "custom_ipolicy" "CustomInstancePolicy" QFTOther >> "Custom instance policy limitations", >> FieldSimple (rsNormal . groupIpolicy), QffNormal) >> + , (FieldDefinition "networks" "Networks" QFTOther "Node group >> networks", >> + FieldSimple (rsNormal . groupNetworks), QffNormal) >> , (FieldDefinition "custom_ndparams" "CustomNDParams" QFTOther >> "Custom node parameters", >> FieldSimple (rsNormal . groupNdparams), QffNormal) >> -- >> 1.9.1 >> >>
