diff --git a/pkg/webhook/validate.go b/pkg/webhook/validate.go index f5b010e759..455fafab50 100644 --- a/pkg/webhook/validate.go +++ b/pkg/webhook/validate.go @@ -210,19 +210,13 @@ func staticValidateSriovNetworkNodePolicy(cr *sriovnetworkv1.SriovNetworkNodePol if (cr.Spec.VdpaType == constants.VdpaTypeVirtio || cr.Spec.VdpaType == constants.VdpaTypeVhost) && cr.Spec.EswitchMode != sriovnetworkv1.ESwithModeSwitchDev { return false, fmt.Errorf("vdpa requires the device to be configured in switchdev mode") } - - // Externally created: we don't support ExternallyManaged + EswitchMode - //TODO: if needed we will need to add this in the future as today EswitchMode is for HWOFFLOAD - if cr.Spec.ExternallyManaged && cr.Spec.EswitchMode == sriovnetworkv1.ESwithModeSwitchDev { - return false, fmt.Errorf("ExternallyManaged doesn't support the device to be configured in switchdev mode") - } - return true, nil } func dynamicValidateSriovNetworkNodePolicy(cr *sriovnetworkv1.SriovNetworkNodePolicy) (bool, error) { nodesSelected = false interfaceSelected = false + nodeInterfaceErrorList := make(map[string][]string) nodeList, err := kubeclient.CoreV1().Nodes().List(context.Background(), metav1.ListOptions{ LabelSelector: labels.Set(cr.Spec.NodeSelector).String(), @@ -241,7 +235,7 @@ func dynamicValidateSriovNetworkNodePolicy(cr *sriovnetworkv1.SriovNetworkNodePo for _, node := range nodeList.Items { if cr.Selected(&node) { nodesSelected = true - err = validatePolicyForNodeStateAndPolicy(nsList, npList, &node, cr) + err = validatePolicyForNodeStateAndPolicy(nsList, npList, &node, cr, nodeInterfaceErrorList) if err != nil { return false, err } @@ -252,20 +246,31 @@ func dynamicValidateSriovNetworkNodePolicy(cr *sriovnetworkv1.SriovNetworkNodePo return false, fmt.Errorf("no matched node is selected by the nodeSelector in CR %s", cr.GetName()) } if !interfaceSelected { + for nodeName, messages := range nodeInterfaceErrorList { + for _, message := range messages { + glog.V(2).Infof("%s: %s", nodeName, message) + } + } return false, fmt.Errorf("no supported NIC is selected by the nicSelector in CR %s", cr.GetName()) } return true, nil } -func validatePolicyForNodeStateAndPolicy(nsList *sriovnetworkv1.SriovNetworkNodeStateList, npList *sriovnetworkv1.SriovNetworkNodePolicyList, node *corev1.Node, cr *sriovnetworkv1.SriovNetworkNodePolicy) error { +func validatePolicyForNodeStateAndPolicy(nsList *sriovnetworkv1.SriovNetworkNodeStateList, npList *sriovnetworkv1.SriovNetworkNodePolicyList, node *corev1.Node, cr *sriovnetworkv1.SriovNetworkNodePolicy, nodeInterfaceErrorList map[string][]string) error { for _, ns := range nsList.Items { if ns.GetName() == node.GetName() { - if err := validatePolicyForNodeState(cr, &ns, node); err != nil { - return fmt.Errorf("%s node(%s)", err.Error(), node.Name) + interfaceAndErrorList, err := validatePolicyForNodeState(cr, &ns, node) + if err != nil { + return err } + if interfaceAndErrorList != nil { + nodeInterfaceErrorList[ns.GetName()] = interfaceAndErrorList + } + break } } + // validate current policy against policies in API (may not be converted to SriovNetworkNodeState yet) for _, np := range npList.Items { if np.GetName() != cr.GetName() && np.Selected(node) { @@ -277,42 +282,38 @@ func validatePolicyForNodeStateAndPolicy(nsList *sriovnetworkv1.SriovNetworkNode return nil } -func validatePolicyForNodeState(policy *sriovnetworkv1.SriovNetworkNodePolicy, state *sriovnetworkv1.SriovNetworkNodeState, node *corev1.Node) error { +func validatePolicyForNodeState(policy *sriovnetworkv1.SriovNetworkNodePolicy, state *sriovnetworkv1.SriovNetworkNodeState, node *corev1.Node) ([]string, error) { + glog.V(2).Infof("validatePolicyForNodeState(): validate policy %s for node %s.", policy.GetName(), state.GetName()) + interfaceSelectedForNode := false + var noInterfacesSelectedLog []string for _, iface := range state.Status.Interfaces { err := validateNicModel(&policy.Spec.NicSelector, &iface, node) if err == nil { interfaceSelected = true + interfaceSelectedForNode = true if policy.GetName() != constants.DefaultPolicyName && policy.Spec.NumVfs == 0 { - return fmt.Errorf("numVfs(%d) in CR %s is not allowed", policy.Spec.NumVfs, policy.GetName()) + return nil, fmt.Errorf("numVfs(%d) in CR %s is not allowed", policy.Spec.NumVfs, policy.GetName()) } if policy.Spec.NumVfs > iface.TotalVfs && iface.Vendor == IntelID { - return fmt.Errorf("numVfs(%d) in CR %s exceed the maximum allowed value(%d) interface(%s)", policy.Spec.NumVfs, policy.GetName(), iface.TotalVfs, iface.Name) + return nil, fmt.Errorf("numVfs(%d) in CR %s exceed the maximum allowed value(%d)", policy.Spec.NumVfs, policy.GetName(), iface.TotalVfs) } if policy.Spec.NumVfs > MlxMaxVFs && iface.Vendor == MellanoxID { - return fmt.Errorf("numVfs(%d) in CR %s exceed the maximum allowed value(%d) interface(%s)", policy.Spec.NumVfs, policy.GetName(), MlxMaxVFs, iface.Name) - } - - // Externally create validations - if policy.Spec.ExternallyManaged { - if policy.Spec.NumVfs > iface.NumVfs { - return fmt.Errorf("numVfs(%d) in CR %s is higher than the virtual functions allocated for the PF externally value(%d)", policy.Spec.NumVfs, policy.GetName(), iface.NumVfs) - } - - if policy.Spec.Mtu != 0 && policy.Spec.Mtu > iface.Mtu { - return fmt.Errorf("MTU(%d) in CR %s is higher than the MTU for the PF externally value(%d)", policy.Spec.Mtu, policy.GetName(), iface.Mtu) - } - - if policy.Spec.LinkType != "" && strings.ToLower(policy.Spec.LinkType) != strings.ToLower(iface.LinkType) { - return fmt.Errorf("LinkType(%s) in CR %s is not equal to the LinkType for the PF externally value(%s)", policy.Spec.LinkType, policy.GetName(), iface.LinkType) - } + return nil, fmt.Errorf("numVfs(%d) in CR %s exceed the maximum allowed value(%d)", policy.Spec.NumVfs, policy.GetName(), MlxMaxVFs) } // vdpa: only mellanox cards are supported if (policy.Spec.VdpaType == constants.VdpaTypeVirtio || policy.Spec.VdpaType == constants.VdpaTypeVhost) && iface.Vendor != MellanoxID { - return fmt.Errorf("vendor(%s) in CR %s not supported for vdpa interface(%s)", iface.Vendor, policy.GetName(), iface.Name) + return nil, fmt.Errorf("vendor(%s) in CR %s not supported for vdpa", iface.Vendor, policy.GetName()) } + } else { + errorMessage := fmt.Sprintf("Interface: %s was not selected, since NIC model could not be validated due to the following error: %s \n", iface.Name, err) + noInterfacesSelectedLog = append(noInterfacesSelectedLog, errorMessage) } } - return nil + + if !interfaceSelectedForNode { + return noInterfacesSelectedLog, nil + } + return nil, nil } func validatePolicyForNodePolicy(current *sriovnetworkv1.SriovNetworkNodePolicy, previous *sriovnetworkv1.SriovNetworkNodePolicy) error { @@ -347,22 +348,6 @@ func validatePfNames(current *sriovnetworkv1.SriovNetworkNodePolicy, previous *s // since it should already be evaluated in previous run. preName, preRngSt, preRngEnd, _ := sriovnetworkv1.ParsePFName(prePf) if curName == preName { - // reject policy with externallyManage if there is a policy on the same PF without it - if current.Spec.ExternallyManaged != previous.Spec.ExternallyManaged { - return fmt.Errorf("externallyManage is inconsistent with existing policy %s", previous.GetName()) - } - - // reject policy with externallyManage if there is a policy on the same PF with switch dev - if current.Spec.ExternallyManaged && previous.Spec.EswitchMode == sriovnetworkv1.ESwithModeSwitchDev { - return fmt.Errorf("externallyManage overlap with switchdev mode in existing policy %s", previous.GetName()) - } - - // reject policy with externallyManage if there is a policy on the same PF with switch dev - if previous.Spec.ExternallyManaged && current.Spec.EswitchMode == sriovnetworkv1.ESwithModeSwitchDev { - return fmt.Errorf("switchdev overlap with externallyManage mode in existing policy %s", previous.GetName()) - } - - // Check for overlapping ranges if curRngEnd < preRngSt || curRngSt > preRngEnd { return nil } else { diff --git a/pkg/webhook/validate_test.go b/pkg/webhook/validate_test.go index 376a06be83..a3d8282903 100644 --- a/pkg/webhook/validate_test.go +++ b/pkg/webhook/validate_test.go @@ -74,7 +74,6 @@ func newNodeState() *SriovNetworkNodeState { Vendor: "8086", NumVfs: 4, TotalVfs: 64, - LinkType: "ETH", }, { VFs: []VirtualFunction{ @@ -88,7 +87,6 @@ func newNodeState() *SriovNetworkNodeState { Vendor: "8086", NumVfs: 4, TotalVfs: 64, - LinkType: "ETH", }, { VFs: []VirtualFunction{ @@ -102,7 +100,6 @@ func newNodeState() *SriovNetworkNodeState { Vendor: "8086", NumVfs: 4, TotalVfs: 64, - LinkType: "ETH", }, }, }, @@ -256,7 +253,7 @@ func TestValidatePolicyForNodeStateWithValidPolicy(t *testing.T) { }, } g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) + _, err := validatePolicyForNodeState(policy, state, NewNode()) g.Expect(err).NotTo(HaveOccurred()) } @@ -282,320 +279,8 @@ func TestValidatePolicyForNodeStateWithInvalidNumVfsPolicy(t *testing.T) { }, } g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).To(MatchError("numVfs(65) in CR p1 exceed the maximum allowed value(64) interface(ens803f0)")) -} - -func TestValidatePolicyForNodeStateWithInvalidNumVfsExternallyCreated(t *testing.T) { - state := newNodeState() - policy := &SriovNetworkNodePolicy{ - ObjectMeta: metav1.ObjectMeta{ - Name: "p1", - }, - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - PfNames: []string{"ens803f0"}, - RootDevices: []string{"0000:86:00.0"}, - Vendor: "8086", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 5, - Priority: 99, - ResourceName: "p0", - ExternallyManaged: true, - }, - } - g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).To(MatchError(ContainSubstring(fmt.Sprintf("numVfs(%d) in CR %s is higher than the virtual functions allocated for the PF externally value(%d)", policy.Spec.NumVfs, policy.GetName(), state.Status.Interfaces[0].NumVfs)))) -} - -func TestValidatePolicyForNodeStateWithValidNumVfsExternallyCreated(t *testing.T) { - state := newNodeState() - policy := &SriovNetworkNodePolicy{ - ObjectMeta: metav1.ObjectMeta{ - Name: "p1", - }, - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - PfNames: []string{"ens803f0"}, - RootDevices: []string{"0000:86:00.0"}, - Vendor: "8086", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 4, - Priority: 99, - ResourceName: "p0", - ExternallyManaged: true, - }, - } - g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).ToNot(HaveOccurred()) -} - -func TestValidatePolicyForNodeStateWithValidLowerNumVfsExternallyCreated(t *testing.T) { - state := newNodeState() - policy := &SriovNetworkNodePolicy{ - ObjectMeta: metav1.ObjectMeta{ - Name: "p1", - }, - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - PfNames: []string{"ens803f0"}, - RootDevices: []string{"0000:86:00.0"}, - Vendor: "8086", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 3, - Priority: 99, - ResourceName: "p0", - ExternallyManaged: true, - }, - } - g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).ToNot(HaveOccurred()) -} - -func TestValidatePolicyForNodePolicyWithOutExternallyManageConflict(t *testing.T) { - appliedPolicy := newNodePolicy() - appliedPolicy.Spec.ExternallyManaged = true - policy := &SriovNetworkNodePolicy{ - ObjectMeta: metav1.ObjectMeta{ - Name: "p0", - }, - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - PfNames: []string{"ens803f1#3-4"}, - Vendor: "8086", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 63, - Priority: 99, - ResourceName: "p0", - ExternallyManaged: true, - }, - } - g := NewGomegaWithT(t) - err := validatePolicyForNodePolicy(policy, appliedPolicy) - g.Expect(err).ToNot(HaveOccurred()) -} - -func TestValidatePolicyForNodePolicyWithExternallyManageConflict(t *testing.T) { - appliedPolicy := newNodePolicy() - policy := &SriovNetworkNodePolicy{ - ObjectMeta: metav1.ObjectMeta{ - Name: "p0", - }, - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - PfNames: []string{"ens803f1#3-4"}, - Vendor: "8086", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 63, - Priority: 99, - ResourceName: "p0", - ExternallyManaged: true, - }, - } - g := NewGomegaWithT(t) - err := validatePolicyForNodePolicy(policy, appliedPolicy) - g.Expect(err).To(MatchError(ContainSubstring(fmt.Sprintf("externallyManage is inconsistent with existing policy %s", appliedPolicy.ObjectMeta.Name)))) -} - -func TestValidatePolicyForNodePolicyWithExternallyManageConflictWithSwitchDev(t *testing.T) { - appliedPolicy := newNodePolicy() - appliedPolicy.Spec.EswitchMode = ESwithModeSwitchDev - - policy := &SriovNetworkNodePolicy{ - ObjectMeta: metav1.ObjectMeta{ - Name: "p0", - }, - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - PfNames: []string{"ens803f1#3-4"}, - Vendor: "8086", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 63, - Priority: 99, - ResourceName: "p0", - ExternallyManaged: true, - }, - } - g := NewGomegaWithT(t) - err := validatePolicyForNodePolicy(policy, appliedPolicy) - g.Expect(err).To(HaveOccurred()) -} - -func TestValidatePolicyForNodePolicyWithSwitchDevConflictWithExternallyManage(t *testing.T) { - appliedPolicy := newNodePolicy() - appliedPolicy.Spec.ExternallyManaged = true - - policy := &SriovNetworkNodePolicy{ - ObjectMeta: metav1.ObjectMeta{ - Name: "p0", - }, - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - PfNames: []string{"ens803f1#3-4"}, - Vendor: "8086", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 63, - Priority: 99, - ResourceName: "p0", - EswitchMode: ESwithModeSwitchDev, - }, - } - g := NewGomegaWithT(t) - err := validatePolicyForNodePolicy(policy, appliedPolicy) - g.Expect(err).To(HaveOccurred()) -} - -func TestValidatePolicyForNodeStateWithExternallyManageAndMTU(t *testing.T) { - state := newNodeState() - policy := &SriovNetworkNodePolicy{ - ObjectMeta: metav1.ObjectMeta{ - Name: "p1", - }, - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - PfNames: []string{"ens803f0"}, - RootDevices: []string{"0000:86:00.0"}, - Vendor: "8086", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 4, - Priority: 99, - ResourceName: "p0", - ExternallyManaged: true, - Mtu: 1500, - }, - } - g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).ToNot(HaveOccurred()) -} - -func TestValidatePolicyForNodeStateWithExternallyManageAndDifferentMTU(t *testing.T) { - state := newNodeState() - policy := &SriovNetworkNodePolicy{ - ObjectMeta: metav1.ObjectMeta{ - Name: "p1", - }, - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - PfNames: []string{"ens803f0"}, - RootDevices: []string{"0000:86:00.0"}, - Vendor: "8086", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 4, - Priority: 99, - ResourceName: "p0", - ExternallyManaged: true, - Mtu: 9000, - }, - } - g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).To(HaveOccurred()) -} - -func TestValidatePolicyForNodeStateWithExternallyManageAndLinkType(t *testing.T) { - state := newNodeState() - policy := &SriovNetworkNodePolicy{ - ObjectMeta: metav1.ObjectMeta{ - Name: "p1", - }, - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - PfNames: []string{"ens803f0"}, - RootDevices: []string{"0000:86:00.0"}, - Vendor: "8086", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 4, - Priority: 99, - ResourceName: "p0", - ExternallyManaged: true, - LinkType: "ETH", - }, - } - g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).ToNot(HaveOccurred()) - - policy.Spec.LinkType = "eth" - err = validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).ToNot(HaveOccurred()) - - policy.Spec.LinkType = "ETH" - state.Status.Interfaces[0].LinkType = "eth" - err = validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).ToNot(HaveOccurred()) -} - -func TestValidatePolicyForNodeStateWithExternallyManageAndDifferentLinkType(t *testing.T) { - state := newNodeState() - policy := &SriovNetworkNodePolicy{ - ObjectMeta: metav1.ObjectMeta{ - Name: "p1", - }, - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - PfNames: []string{"ens803f0"}, - RootDevices: []string{"0000:86:00.0"}, - Vendor: "8086", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 4, - Priority: 99, - ResourceName: "p0", - ExternallyManaged: true, - Mtu: 9000, - LinkType: "IB", - }, - } - g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).To(HaveOccurred()) + _, err := validatePolicyForNodeState(policy, state, NewNode()) + g.Expect(err).To(MatchError(ContainSubstring(fmt.Sprintf("numVfs(%d) in CR %s exceed the maximum allowed value(%d)", policy.Spec.NumVfs, policy.GetName(), state.Status.Interfaces[0].TotalVfs)))) } func TestValidatePolicyForNodePolicyWithOverlappedVfRange(t *testing.T) { @@ -947,30 +632,6 @@ func TestStaticValidateSriovNetworkNodePolicyVhostVdpaMustSpecifySwitchDev(t *te g.Expect(ok).To(Equal(false)) } -func TestStaticValidateSriovNetworkNodePolicyWithExternallyCreatedAndSwitchDev(t *testing.T) { - policy := &SriovNetworkNodePolicy{ - Spec: SriovNetworkNodePolicySpec{ - DeviceType: "netdevice", - NicSelector: SriovNetworkNicSelector{ - Vendor: "8086", - DeviceID: "158b", - }, - NodeSelector: map[string]string{ - "feature.node.kubernetes.io/network-sriov.capable": "true", - }, - NumVfs: 63, - Priority: 99, - ResourceName: "p0", - EswitchMode: "switchdev", - ExternallyManaged: true, - }, - } - g := NewGomegaWithT(t) - ok, err := staticValidateSriovNetworkNodePolicy(policy) - g.Expect(err).To(HaveOccurred()) - g.Expect(ok).To(BeFalse()) -} - func TestValidatePolicyForNodeStateVirtioVdpaWithNotSupportedVendor(t *testing.T) { state := newNodeState() policy := &SriovNetworkNodePolicy{ @@ -994,8 +655,8 @@ func TestValidatePolicyForNodeStateVirtioVdpaWithNotSupportedVendor(t *testing.T }, } g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).To(MatchError("vendor(8086) in CR p1 not supported for vdpa interface(ens803f0)")) + _, err := validatePolicyForNodeState(policy, state, NewNode()) + g.Expect(err).To(MatchError(ContainSubstring(fmt.Sprintf("vendor(%s) in CR %s not supported for vdpa", state.Status.Interfaces[0].Vendor, policy.Name)))) } func TestValidatePolicyForNodeStateVhostVdpaWithNotSupportedVendor(t *testing.T) { @@ -1021,8 +682,8 @@ func TestValidatePolicyForNodeStateVhostVdpaWithNotSupportedVendor(t *testing.T) }, } g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) - g.Expect(err).To(MatchError("vendor(8086) in CR p1 not supported for vdpa interface(ens803f0)")) + _, err := validatePolicyForNodeState(policy, state, NewNode()) + g.Expect(err).To(MatchError(ContainSubstring(fmt.Sprintf("vendor(%s) in CR %s not supported for vdpa", state.Status.Interfaces[0].Vendor, policy.Name)))) } func TestValidatePolicyForNodeStateWithInvalidDevice(t *testing.T) { @@ -1048,7 +709,7 @@ func TestValidatePolicyForNodeStateWithInvalidDevice(t *testing.T) { g.Expect(err).ToNot(HaveOccurred()) g.Expect(cfg).ToNot(BeNil()) kubeclient = kubernetes.NewForConfigOrDie(cfg) - err = validatePolicyForNodeState(policy, state, NewNode()) + _, err = validatePolicyForNodeState(policy, state, NewNode()) g.Expect(err).NotTo(HaveOccurred()) } @@ -1070,7 +731,7 @@ func TestValidatePolicyForNodeStateWithInvalidPfName(t *testing.T) { }, } g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) + _, err := validatePolicyForNodeState(policy, state, NewNode()) g.Expect(err).NotTo(HaveOccurred()) g.Expect(interfaceSelected).To(Equal(false)) } @@ -1093,7 +754,7 @@ func TestValidatePolicyForNodeStateWithValidPfName(t *testing.T) { }, } g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) + _, err := validatePolicyForNodeState(policy, state, NewNode()) g.Expect(err).NotTo(HaveOccurred()) g.Expect(interfaceSelected).To(Equal(true)) } @@ -1133,7 +794,7 @@ func TestValidatePolicyForNodeStateWithValidNetFilter(t *testing.T) { }, } g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) + _, err := validatePolicyForNodeState(policy, state, NewNode()) g.Expect(err).NotTo(HaveOccurred()) g.Expect(interfaceSelected).To(Equal(true)) } @@ -1197,7 +858,7 @@ func TestValidatePolicyForNodeStateWithValidVFAndNetFilter(t *testing.T) { }, } g := NewGomegaWithT(t) - err := validatePolicyForNodeState(policy, state, NewNode()) + _, err := validatePolicyForNodeState(policy, state, NewNode()) g.Expect(err).NotTo(HaveOccurred()) g.Expect(interfaceSelected).To(Equal(true)) }