From d796baea27cb7238046ca769d239623e1ab73c6b Mon Sep 17 00:00:00 2001 From: Yassine TIJANI Date: Tue, 13 Aug 2019 12:05:24 +0200 Subject: [PATCH] move service helpers to k8s.io/cloud-provider Signed-off-by: Yassine TIJANI --- pkg/apis/core/helper/helpers.go | 28 ------------------- pkg/apis/core/v1/helper/helpers.go | 12 +------- pkg/controller/service/BUILD | 1 - pkg/controller/service/service_controller.go | 5 ++-- pkg/proxy/userspace/BUILD | 2 +- pkg/proxy/userspace/proxier.go | 4 +-- .../cloud-provider/service/helpers/helper.go | 27 ++++++++++++++++++ 7 files changed, 33 insertions(+), 46 deletions(-) diff --git a/pkg/apis/core/helper/helpers.go b/pkg/apis/core/helper/helpers.go index 835e2cbf19b..e93803dd1d4 100644 --- a/pkg/apis/core/helper/helpers.go +++ b/pkg/apis/core/helper/helpers.go @@ -281,34 +281,6 @@ func IsStandardFinalizerName(str string) bool { return standardFinalizers.Has(str) } -// LoadBalancerStatusEqual checks if the status of the load balancer is equal to the target status -// TODO: make method on LoadBalancerStatus? -func LoadBalancerStatusEqual(l, r *core.LoadBalancerStatus) bool { - return ingressSliceEqual(l.Ingress, r.Ingress) -} - -func ingressSliceEqual(lhs, rhs []core.LoadBalancerIngress) bool { - if len(lhs) != len(rhs) { - return false - } - for i := range lhs { - if !ingressEqual(&lhs[i], &rhs[i]) { - return false - } - } - return true -} - -func ingressEqual(lhs, rhs *core.LoadBalancerIngress) bool { - if lhs.IP != rhs.IP { - return false - } - if lhs.Hostname != rhs.Hostname { - return false - } - return true -} - // GetAccessModesAsString returns a string representation of an array of access modes. // modes, when present, are always in the same order: RWO,ROX,RWX. func GetAccessModesAsString(modes []core.PersistentVolumeAccessMode) string { diff --git a/pkg/apis/core/v1/helper/helpers.go b/pkg/apis/core/v1/helper/helpers.go index e1dff4fdcf3..7a573a5227c 100644 --- a/pkg/apis/core/v1/helper/helpers.go +++ b/pkg/apis/core/v1/helper/helpers.go @@ -21,7 +21,7 @@ import ( "fmt" "strings" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" @@ -135,16 +135,6 @@ func ingressEqual(lhs, rhs *v1.LoadBalancerIngress) bool { return true } -// TODO: make method on LoadBalancerStatus? -func LoadBalancerStatusDeepCopy(lb *v1.LoadBalancerStatus) *v1.LoadBalancerStatus { - c := &v1.LoadBalancerStatus{} - c.Ingress = make([]v1.LoadBalancerIngress, len(lb.Ingress)) - for i := range lb.Ingress { - c.Ingress[i] = lb.Ingress[i] - } - return c -} - // GetAccessModesAsString returns a string representation of an array of access modes. // modes, when present, are always in the same order: RWO,ROX,RWX. func GetAccessModesAsString(modes []v1.PersistentVolumeAccessMode) string { diff --git a/pkg/controller/service/BUILD b/pkg/controller/service/BUILD index 4622f4737d9..9355be1432e 100644 --- a/pkg/controller/service/BUILD +++ b/pkg/controller/service/BUILD @@ -10,7 +10,6 @@ go_library( importpath = "k8s.io/kubernetes/pkg/controller/service", visibility = ["//visibility:public"], deps = [ - "//pkg/apis/core/v1/helper:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", diff --git a/pkg/controller/service/service_controller.go b/pkg/controller/service/service_controller.go index 6a475e2efb9..30562f59822 100644 --- a/pkg/controller/service/service_controller.go +++ b/pkg/controller/service/service_controller.go @@ -42,7 +42,6 @@ import ( servicehelper "k8s.io/cloud-provider/service/helpers" "k8s.io/component-base/metrics/prometheus/ratelimiter" "k8s.io/klog" - v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper" ) const ( @@ -316,7 +315,7 @@ func (s *ServiceController) syncLoadBalancerIfNeeded(service *v1.Service, key st // which may involve service interruption. Also, we would like user-friendly events. // Save the state so we can avoid a write if it doesn't change - previousStatus := v1helper.LoadBalancerStatusDeepCopy(&service.Status.LoadBalancer) + previousStatus := service.Status.LoadBalancer.DeepCopy() var newStatus *v1.LoadBalancerStatus var op loadBalancerOperation var err error @@ -866,7 +865,7 @@ func removeString(slice []string, s string) []string { // patchStatus patches the service with the given LoadBalancerStatus. func (s *ServiceController) patchStatus(service *v1.Service, previousStatus, newStatus *v1.LoadBalancerStatus) error { - if v1helper.LoadBalancerStatusEqual(previousStatus, newStatus) { + if servicehelper.LoadBalancerStatusEqual(previousStatus, newStatus) { return nil } diff --git a/pkg/proxy/userspace/BUILD b/pkg/proxy/userspace/BUILD index 0d756475daf..d3ca798340e 100644 --- a/pkg/proxy/userspace/BUILD +++ b/pkg/proxy/userspace/BUILD @@ -19,7 +19,6 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/proxy/userspace", deps = [ - "//pkg/apis/core/v1/helper:go_default_library", "//pkg/proxy:go_default_library", "//pkg/proxy/config:go_default_library", "//pkg/proxy/util:go_default_library", @@ -34,6 +33,7 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library", "//vendor/k8s.io/klog:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ] + select({ diff --git a/pkg/proxy/userspace/proxier.go b/pkg/proxy/userspace/proxier.go index 5639df3527c..9afa4c0adc7 100644 --- a/pkg/proxy/userspace/proxier.go +++ b/pkg/proxy/userspace/proxier.go @@ -32,8 +32,8 @@ import ( utilnet "k8s.io/apimachinery/pkg/util/net" "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/sets" + servicehelper "k8s.io/cloud-provider/service/helpers" "k8s.io/klog" - "k8s.io/kubernetes/pkg/apis/core/v1/helper" "k8s.io/kubernetes/pkg/proxy" "k8s.io/kubernetes/pkg/proxy/config" utilproxy "k8s.io/kubernetes/pkg/proxy/util" @@ -673,7 +673,7 @@ func sameConfig(info *ServiceInfo, service *v1.Service, port *v1.ServicePort) bo if !ipsEqual(info.externalIPs, service.Spec.ExternalIPs) { return false } - if !helper.LoadBalancerStatusEqual(&info.loadBalancerStatus, &service.Status.LoadBalancer) { + if !servicehelper.LoadBalancerStatusEqual(&info.loadBalancerStatus, &service.Status.LoadBalancer) { return false } if info.sessionAffinityType != service.Spec.SessionAffinity { diff --git a/staging/src/k8s.io/cloud-provider/service/helpers/helper.go b/staging/src/k8s.io/cloud-provider/service/helpers/helper.go index 524880d0d13..3f711d55037 100644 --- a/staging/src/k8s.io/cloud-provider/service/helpers/helper.go +++ b/staging/src/k8s.io/cloud-provider/service/helpers/helper.go @@ -115,3 +115,30 @@ func HasLBFinalizer(service *v1.Service) bool { } return false } + +// LoadBalancerStatusEqual checks if load balancer status are equal +func LoadBalancerStatusEqual(l, r *v1.LoadBalancerStatus) bool { + return ingressSliceEqual(l.Ingress, r.Ingress) +} + +func ingressSliceEqual(lhs, rhs []v1.LoadBalancerIngress) bool { + if len(lhs) != len(rhs) { + return false + } + for i := range lhs { + if !ingressEqual(&lhs[i], &rhs[i]) { + return false + } + } + return true +} + +func ingressEqual(lhs, rhs *v1.LoadBalancerIngress) bool { + if lhs.IP != rhs.IP { + return false + } + if lhs.Hostname != rhs.Hostname { + return false + } + return true +}