From 7e58ac8c5b62d0ecc9ac5fa942a82f7ad0921afc Mon Sep 17 00:00:00 2001 From: banatm Date: Tue, 9 Jan 2018 08:36:26 +0000 Subject: [PATCH 1/2] Add: details to error messages in overlay_windows.go Fix: building json request to hns endpoints (Policies was malformed) --- pkg/hns/netconf.go | 6 +++++- plugins/main/windows/overlay/overlay_windows.go | 12 +++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/pkg/hns/netconf.go b/pkg/hns/netconf.go index 6e7cc6e6a..5a17a832f 100644 --- a/pkg/hns/netconf.go +++ b/pkg/hns/netconf.go @@ -40,7 +40,10 @@ func (n *NetConf) MarshalPolicies() []json.RawMessage { var result []json.RawMessage for _, policyArg := range n.AdditionalArgs { - if data, err := json.Marshal(policyArg); err == nil { + if !strings.EqualFold(policyArg.Type, "EndpointPolicy") { + continue + } + if data, err := json.Marshal(policyArg.Value); err == nil { result = append(result, data) } } @@ -48,6 +51,7 @@ func (n *NetConf) MarshalPolicies() []json.RawMessage { return result } + // ApplyOutboundNatPolicy applies NAT Policy in VFP using HNS // Simultaneously an exception is added for the network that has to be Nat'd func (n *NetConf) ApplyOutboundNatPolicy(nwToNat string) { diff --git a/plugins/main/windows/overlay/overlay_windows.go b/plugins/main/windows/overlay/overlay_windows.go index 6ea852542..7d667a916 100644 --- a/plugins/main/windows/overlay/overlay_windows.go +++ b/plugins/main/windows/overlay/overlay_windows.go @@ -64,12 +64,14 @@ func cmdAdd(args *skel.CmdArgs) error { if len(n.endpointMacPrefix) != 5 || n.endpointMacPrefix[2] != '-' { return fmt.Errorf("endpointMacPrefix [%v] is invalid, value must be of the format xx-xx", n.endpointMacPrefix) } + } else{ + n.endpointMacPrefix="0E-2A" } networkName := n.Name hnsNetwork, err := hcsshim.GetHNSNetworkByName(networkName) if err != nil { - return err + return fmt.Errorf("Error while GETHNSNewtorkByName(%v): %v",networkName,err) } if hnsNetwork == nil { @@ -86,13 +88,13 @@ func cmdAdd(args *skel.CmdArgs) error { // run the IPAM plugin and get back the config to apply r, err := ipam.ExecAdd(n.IPAM.Type, args.StdinData) if err != nil { - return nil, err + return nil, fmt.Errorf("Error while ipam.ExecAdd: %v",err) } // Convert whatever the IPAM result was into the current Result type result, err := current.NewResultFromResult(r) if err != nil { - return nil, err + return nil, fmt.Errorf("Error while NewResultFromResult: %v",err) } if len(result.IPs) == 0 { @@ -124,12 +126,12 @@ func cmdAdd(args *skel.CmdArgs) error { }) if err != nil { - return err + return fmt.Errorf("Error while ProvisionEndpoint(%v,%v,%v) :%v",epName, hnsNetwork.Id,args.ContainerID, err) } result, err := hns.ConstructResult(hnsNetwork, hnsEndpoint) if err != nil { - return err + return fmt.Errorf("Error while constructResult: %v",err) } return types.PrintResult(result, cniVersion) From 1942d53a524efc9dc084e65d3591b0a52318b5a4 Mon Sep 17 00:00:00 2001 From: banatm Date: Wed, 10 Jan 2018 10:34:29 +0000 Subject: [PATCH 2/2] fix: updated tests to cover netconf policy marshalling fix --- pkg/hns/netconf_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/hns/netconf_test.go b/pkg/hns/netconf_test.go index 9478decc4..ff25010a5 100644 --- a/pkg/hns/netconf_test.go +++ b/pkg/hns/netconf_test.go @@ -126,7 +126,7 @@ var _ = Describe("HNS NetConf", func() { n := NetConf{ AdditionalArgs: []policyArgument{ { - Type: "someType", + Type: "EndpointPolicy", Value: map[string]interface{}{ "someKey": "someValue", }, @@ -141,13 +141,13 @@ var _ = Describe("HNS NetConf", func() { } result := n.MarshalPolicies() - Expect(len(result)).To(Equal(2)) + Expect(len(result)).To(Equal(1)) - var policy policyArgument + var policy map[string]interface{} err := json.Unmarshal(result[0], &policy) Expect(err).ToNot(HaveOccurred()) - Expect(policy.Type).To(Equal("someType")) - Expect(policy.Value).To(HaveKeyWithValue("someKey", "someValue")) + Expect(policy).Should(HaveKey("someKey")) + Expect(policy["someKey"]).To(Equal("someValue")) }) })