Hi Daniil,

The diff looks good. Could you please aggregate it with the previous
changes and send the whole patch to the mailing list?

Sincerely,
Oleg

On Sun, Mar 27, 2016, 19:48 Даниил Лещёв <[email protected]> wrote:

> Hi Oleg, Viktor
>
>>
>> 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.
>>
>> I have added template code for "networks" field into Group object both in
> haskell and python source, so now my diff looks like that:
>
>
> 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)
>
>
>
> --
> С уважением,
> Лещёв Даниил.
>

Reply via email to