From: Dan Williams Date: Sat, 17 Dec 2016 00:56:39 +0000 (-0600) Subject: api,libcni: add network config list-based plugin chaining X-Git-Url: https://git.halfball.org/?a=commitdiff_plain;h=13534e505c6b7d1904e27a199625d9a50c5ef97e;p=plugins.git api,libcni: add network config list-based plugin chaining Using a new ".configlist" file format that allows specifying a list of CNI network configurations to run, add new libcni helper functions to call each plugin in the list, injecting the overall name, CNI version, and previous plugin's Result structure into the configuration of the next plugin. --- diff --git a/types/types.go b/types/types.go index 17caa49..c1fddcd 100644 --- a/types/types.go +++ b/types/types.go @@ -59,14 +59,23 @@ func (n *IPNet) UnmarshalJSON(data []byte) error { type NetConf struct { CNIVersion string `json:"cniVersion,omitempty"` - Name string `json:"name,omitempty"` - Type string `json:"type,omitempty"` - IPAM struct { + Name string `json:"name,omitempty"` + Type string `json:"type,omitempty"` + PrevResult *Result `json:"prevResult,omitempty"` + IPAM struct { Type string `json:"type,omitempty"` } `json:"ipam,omitempty"` DNS DNS `json:"dns"` } +// NetConfList describes an ordered list of networks. +type NetConfList struct { + CNIVersion string `json:"cniVersion,omitempty"` + + Name string `json:"name,omitempty"` + Plugins []*NetConf `json:"plugins,omitempty"` +} + // Result is what gets returned from the plugin (via stdout) to the caller type Result struct { IP4 *IPConfig `json:"ip4,omitempty"`