diff --git a/SPEC.md b/SPEC.md index eee34ee4..3c0c3e21 100644 --- a/SPEC.md +++ b/SPEC.md @@ -562,6 +562,7 @@ For certain operations, plugins must output result information. The output shoul ### ADD Success Plugins must output a JSON object with the following keys upon a successful `ADD` operation: +All keys are optional other than `cniVersion`. - `cniVersion`: The same version supplied on input - the string "1.1.0" - `interfaces`: An array of all interfaces created by the attachment, including any host-level interfaces: diff --git a/libcni/api_test.go b/libcni/api_test.go index 26852f39..fb760671 100644 --- a/libcni/api_test.go +++ b/libcni/api_test.go @@ -311,8 +311,7 @@ var _ = Describe("Invoking plugins", func() { debug = &noop_debug.Debug{ ReportResult: `{ "cniVersion": "` + version.Current() + `", - "ips": [{"address": "10.1.2.3/24"}], - "dns": {} + "ips": [{"address": "10.1.2.3/24"}] }`, } Expect(debug.WriteDebug(debugFilePath)).To(Succeed()) @@ -1001,7 +1000,7 @@ var _ = Describe("Invoking plugins", func() { }, }, // DNS injected by last plugin - DNS: types.DNS{ + DNS: &types.DNS{ Nameservers: []string{"1.2.3.4"}, }, })) diff --git a/libcni/conf_test.go b/libcni/conf_test.go index ea7104f2..1de76389 100644 --- a/libcni/conf_test.go +++ b/libcni/conf_test.go @@ -497,7 +497,7 @@ var _ = Describe("Loading configuration from disk", func() { Expect(err).NotTo(HaveOccurred()) Expect(resultConfig).To(Equal(&libcni.NetworkConfig{ - Network: &types.NetConf{Name: "some-plugin", Type: "bridge", DNS: types.DNS{Nameservers: servers, Domain: "local"}}, + Network: &types.NetConf{Name: "some-plugin", Type: "bridge", DNS: &types.DNS{Nameservers: servers, Domain: "local"}}, Bytes: expectedPluginConfig, })) }) diff --git a/pkg/types/100/types.go b/pkg/types/100/types.go index d6d069f5..3ea6cbc7 100644 --- a/pkg/types/100/types.go +++ b/pkg/types/100/types.go @@ -92,7 +92,7 @@ type Result struct { Interfaces []*Interface `json:"interfaces,omitempty"` IPs []*IPConfig `json:"ips,omitempty"` Routes []*types.Route `json:"routes,omitempty"` - DNS types.DNS `json:"dns,omitempty"` + DNS *types.DNS `json:"dns,omitempty"` } // Note: DNS should be omit if DNS is empty but default Marshal function @@ -168,7 +168,7 @@ func convertFrom04x(from types.Result, toVersion string) (types.Result, error) { fromResult := from.(*types040.Result) toResult := &Result{ CNIVersion: toVersion, - DNS: *fromResult.DNS.Copy(), + DNS: fromResult.DNS.Copy(), Routes: []*types.Route{}, } for _, fromIntf := range fromResult.Interfaces { diff --git a/pkg/types/100/types_test.go b/pkg/types/100/types_test.go index 3bd50bd7..4078ac67 100644 --- a/pkg/types/100/types_test.go +++ b/pkg/types/100/types_test.go @@ -72,7 +72,7 @@ func testResult() *current.Result { {Dst: *routev4, GW: routegwv4}, {Dst: *routev6, GW: routegwv6}, }, - DNS: types.DNS{ + DNS: &types.DNS{ Nameservers: []string{"1.2.3.4", "1::cafe"}, Domain: "acompany.com", Search: []string{"somedomain.com", "otherdomain.net"}, diff --git a/pkg/types/types.go b/pkg/types/types.go index 58b57947..440991b4 100644 --- a/pkg/types/types.go +++ b/pkg/types/types.go @@ -64,7 +64,7 @@ type NetConf struct { Type string `json:"type,omitempty"` Capabilities map[string]bool `json:"capabilities,omitempty"` IPAM IPAM `json:"ipam,omitempty"` - DNS DNS `json:"dns,omitempty"` + DNS *DNS `json:"dns,omitempty"` RawPrevResult map[string]interface{} `json:"prevResult,omitempty"` PrevResult Result `json:"-"` diff --git a/pkg/types/types_test.go b/pkg/types/types_test.go index ee0a829c..5f554167 100644 --- a/pkg/types/types_test.go +++ b/pkg/types/types_test.go @@ -179,7 +179,7 @@ var _ = Describe("Types", func() { Gateway: net.ParseIP("abcd:1234:ffff::1"), }, }, - DNS: types.DNS{ + DNS: &types.DNS{ Nameservers: []string{"1.2.3.4", "1::cafe"}, Domain: "acompany.com", Search: []string{"somedomain.com", "otherdomain.net"},