diff --git a/pkg/controller/qos_policy.go b/pkg/controller/qos_policy.go index 4866b6d6032..7f97d0dbb1f 100644 --- a/pkg/controller/qos_policy.go +++ b/pkg/controller/qos_policy.go @@ -10,7 +10,7 @@ import ( "github.com/kubeovn/kube-ovn/pkg/util" k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/tools/cache" @@ -354,13 +354,13 @@ func (c *Controller) handleUpdateQoSPolicy(key string) error { } // should delete if !cachedQos.DeletionTimestamp.IsZero() { - eips, err := c.config.KubeOvnClient.KubeovnV1().IptablesEIPs().List(context.Background(), - metav1.ListOptions{LabelSelector: fields.OneTermEqualSelector(util.QoSLabel, key).String()}) + eips, err := c.iptablesEipsLister.List( + labels.SelectorFromSet(labels.Set{util.QoSLabel: key})) if err != nil { klog.Errorf("failed to get eip list, %v", err) return err } - if len(eips.Items) != 0 { + if len(eips) != 0 { err = fmt.Errorf("qos policy %s is being used", key) klog.Error(err) return err @@ -402,16 +402,16 @@ func (c *Controller) handleUpdateQoSPolicy(key string) error { } else { if cachedQos.Status.BindingType == kubeovnv1.QoSBindingTypeEIP { // filter to eip - eips, err := c.config.KubeOvnClient.KubeovnV1().IptablesEIPs().List(context.Background(), - metav1.ListOptions{LabelSelector: fields.OneTermEqualSelector(util.QoSLabel, key).String()}) + eips, err := c.iptablesEipsLister.List( + labels.SelectorFromSet(labels.Set{util.QoSLabel: key})) if err != nil { klog.Errorf("failed to get eip list, %v", err) return err } - if len(eips.Items) == 0 { + if len(eips) == 0 { // not thing to do - } else if len(eips.Items) == 1 { - eip := &eips.Items[0] + } else if len(eips) == 1 { + eip := eips[0] if err = c.reconcileEIPBandtithLimitRules(eip, added, deleted, updated); err != nil { klog.Errorf("failed to reconcile eip %s bandwidth limit rules, %v", eip.Name, err) return err diff --git a/pkg/controller/subnet.go b/pkg/controller/subnet.go index a4ce60c14c0..0e19da40988 100644 --- a/pkg/controller/subnet.go +++ b/pkg/controller/subnet.go @@ -1870,13 +1870,12 @@ func calcDualSubnetStatusIP(subnet *kubeovnv1.Subnet, c *Controller) error { usingIPs += float64(len(vips.Items)) if subnet.Name == util.VpcExternalNet { - eips, err := c.config.KubeOvnClient.KubeovnV1().IptablesEIPs().List(context.Background(), metav1.ListOptions{ - LabelSelector: fields.OneTermEqualSelector(util.SubnetNameLabel, subnet.Name).String(), - }) + eips, err := c.iptablesEipsLister.List( + labels.SelectorFromSet(labels.Set{util.SubnetNameLabel: subnet.Name})) if err != nil { return err } - usingIPs += float64(len(eips.Items)) + usingIPs += float64(len(eips)) } v4availableIPs = v4availableIPs - usingIPs if v4availableIPs < 0 { @@ -1942,13 +1941,12 @@ func calcSubnetStatusIP(subnet *kubeovnv1.Subnet, c *Controller) error { } usingIPs += float64(len(vips.Items)) if subnet.Name == util.VpcExternalNet { - eips, err := c.config.KubeOvnClient.KubeovnV1().IptablesEIPs().List(context.Background(), metav1.ListOptions{ - LabelSelector: fields.OneTermEqualSelector(util.SubnetNameLabel, subnet.Name).String(), - }) + eips, err := c.iptablesEipsLister.List( + labels.SelectorFromSet(labels.Set{util.SubnetNameLabel: subnet.Name})) if err != nil { return err } - usingIPs += float64(len(eips.Items)) + usingIPs += float64(len(eips)) } availableIPs = availableIPs - usingIPs diff --git a/pkg/controller/vpc_nat_gateway.go b/pkg/controller/vpc_nat_gateway.go index 9ebfbc747b1..2c7421fe135 100644 --- a/pkg/controller/vpc_nat_gateway.go +++ b/pkg/controller/vpc_nat_gateway.go @@ -395,13 +395,13 @@ func (c *Controller) handleUpdateVpcEip(natGwKey string) error { klog.Error(err) return err } - eips, err := c.config.KubeOvnClient.KubeovnV1().IptablesEIPs().List(context.Background(), metav1.ListOptions{}) + eips, err := c.iptablesEipsLister.List(labels.Everything()) if err != nil { err = fmt.Errorf("failed to get eip list, %v", err) klog.Error(err) return err } - for _, eip := range eips.Items { + for _, eip := range eips { if eip.Spec.NatGwDp == natGwKey && eip.Status.Redo != NAT_GW_CREATED_AT && eip.Annotations[util.VpcNatAnnotation] == "" { klog.V(3).Infof("redo eip %s", eip.Name) if err = c.patchEipStatus(eip.Name, "", NAT_GW_CREATED_AT, "", "", false); err != nil { diff --git a/pkg/controller/vpc_nat_gw_eip.go b/pkg/controller/vpc_nat_gw_eip.go index 62e6d2cba6a..2fe715d4c85 100644 --- a/pkg/controller/vpc_nat_gw_eip.go +++ b/pkg/controller/vpc_nat_gw_eip.go @@ -9,6 +9,7 @@ import ( k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/tools/cache" @@ -504,14 +505,14 @@ func (c *Controller) addEipQoS(eip *kubeovnv1.IptablesEIP, v4ip string) error { var err error qosPolicy, err := c.config.KubeOvnClient.KubeovnV1().QoSPolicies().Get(context.Background(), eip.Spec.QoSPolicy, metav1.GetOptions{}) if !qosPolicy.Status.Shared { - eips, err := c.config.KubeOvnClient.KubeovnV1().IptablesEIPs().List(context.Background(), - metav1.ListOptions{LabelSelector: fields.OneTermEqualSelector(util.QoSLabel, qosPolicy.Name).String()}) + eips, err := c.iptablesEipsLister.List( + labels.SelectorFromSet(labels.Set{util.QoSLabel: qosPolicy.Name})) if err != nil { klog.Errorf("failed to get eip list, %v", err) return err } - if len(eips.Items) != 0 { - if eips.Items[0].Name != eip.Name { + if len(eips) != 0 { + if eips[0].Name != eip.Name { err := fmt.Errorf("not support unshared qos policy %s to related to multiple eip", eip.Spec.QoSPolicy) klog.Error(err) return err