Hi Daniil, Victor, One small comment on the first questions.
Of course, cluster config files are valid for Rapi backend. But that doesn't mean that we don't need to have a default value for 'networks' in Rapi. Obviously, Rapi deal with user-generated json files and behavioral change might break some installations. And regarding your patch. Note, that querying for "networks" is not implemented yet neither in query.py nor in Query/Group.hs. Don't forget to implement this functionality. Good luck, Oleg On Tue, Mar 22, 2016 at 5:45 PM 'Viktor Bachraty' via ganeti-devel < [email protected]> wrote: > Hi Daniil, > > Thanks for working on issue 475. > > On Tue, Mar 22, 2016 at 10:25 AM, Даниил Лещёв <[email protected]> wrote: > >> Hi everybody, >> >> At the moment I'm dealing with issue 475 ( >> https://code.google.com/p/ganeti/issues/detail?id=475), and have got >> number of questions. >> 1) Are cluster config files from test/data/htools valid for Rapi backend? >> If so, do we really need default val for nets field or 'networks' field >> will always exist (even empty)? I think it's not so, because for example >> test/data/htools/rapi/groups.json hasn't this field. >> > > Yes those should be valid json files. You can verify this by actually > querying Rapi on a running cluster where you add and configure a network. > Also "gnt-groups list" might be helpful here. > > 2) Do we need to generate some fake networks at Simu backend or it's >> suitable to just leave it empty in createGroup function? >> > > Would be nice to extend the data files loaded in the Simu backend with > network data. > > I will be happy to hear any your comments. >> At the moment, my diff is: >> >> 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) >> >> >> Regards, >> Daniil Leshchev >> >
