From 19fa57bca35c14550c493a74994264fbe96ec81b Mon Sep 17 00:00:00 2001 From: Yassine TIJANI Date: Mon, 26 Aug 2019 15:25:16 +0100 Subject: [PATCH] remove dependency to pkg/features on service controller package Signed-off-by: Yassine TIJANI --- pkg/controller/service/BUILD | 2 -- pkg/controller/service/service_controller.go | 17 +++++++++++++---- .../service/service_controller_test.go | 5 ++--- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/pkg/controller/service/BUILD b/pkg/controller/service/BUILD index 7dc61692236..f538183fbab 100644 --- a/pkg/controller/service/BUILD +++ b/pkg/controller/service/BUILD @@ -17,7 +17,6 @@ go_library( deps = [ "//pkg/apis/core/v1/helper:go_default_library", "//pkg/controller:go_default_library", - "//pkg/features:go_default_library", "//pkg/util/metrics:go_default_library", "//pkg/util/slice:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", @@ -52,7 +51,6 @@ go_test( deps = [ "//pkg/api/testapi:go_default_library", "//pkg/controller:go_default_library", - "//pkg/features: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/apis/meta/v1:go_default_library", diff --git a/pkg/controller/service/service_controller.go b/pkg/controller/service/service_controller.go index 8fd896bfcc2..b87fd52dbc3 100644 --- a/pkg/controller/service/service_controller.go +++ b/pkg/controller/service/service_controller.go @@ -43,7 +43,6 @@ import ( "k8s.io/klog" v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper" "k8s.io/kubernetes/pkg/controller" - kubefeatures "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/util/metrics" "k8s.io/kubernetes/pkg/util/slice" ) @@ -67,6 +66,16 @@ const ( // LabelNodeRoleExcludeBalancer specifies that the node should be // exclude from load balancers created by a cloud provider. LabelNodeRoleExcludeBalancer = "alpha.service-controller.kubernetes.io/exclude-balancer" + + // serviceNodeExclusionFeature is the feature gate name that + // enables nodes to exclude themselves from service load balancers + // originated from: https://github.com/kubernetes/kubernetes/blob/28e800245e/pkg/features/kube_features.go#L178 + serviceNodeExclusionFeature = "ServiceNodeExclusion" + + // ServiceLoadBalancerFinalizerFeature is the feature gate name that + // enables Finalizer Protection for Service LoadBalancers. + // orginated from: https://github.com/kubernetes/kubernetes/blob/28e800245e/pkg/features/kube_features.go#L433 + serviceLoadBalancerFinalizerFeature = "ServiceLoadBalancerFinalizer" ) type cachedService struct { @@ -150,7 +159,7 @@ func New( } }, DeleteFunc: func(old interface{}) { - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.ServiceLoadBalancerFinalizer) { + if utilfeature.DefaultFeatureGate.Enabled(serviceLoadBalancerFinalizerFeature) { // No need to handle deletion event if finalizer feature gate is // enabled. Because the deletion would be handled by the update // path when the deletion timestamp is added. @@ -327,7 +336,7 @@ func (s *ServiceController) syncLoadBalancerIfNeeded(service *v1.Service, key st op = ensureLoadBalancer klog.V(2).Infof("Ensuring load balancer for service %s", key) s.eventRecorder.Event(service, v1.EventTypeNormal, "EnsuringLoadBalancer", "Ensuring load balancer") - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.ServiceLoadBalancerFinalizer) { + if utilfeature.DefaultFeatureGate.Enabled(serviceLoadBalancerFinalizerFeature) { // Always try to add finalizer prior to load balancer creation. // It will be a no-op if finalizer already exists. // Note this also retrospectively puts on finalizer if the cluster @@ -623,7 +632,7 @@ func getNodeConditionPredicate() corelisters.NodeConditionPredicate { return false } - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.ServiceNodeExclusion) { + if utilfeature.DefaultFeatureGate.Enabled(serviceNodeExclusionFeature) { if _, hasExcludeBalancerLabel := node.Labels[LabelNodeRoleExcludeBalancer]; hasExcludeBalancerLabel { return false } diff --git a/pkg/controller/service/service_controller_test.go b/pkg/controller/service/service_controller_test.go index e7515954ef1..32ae1494fb5 100644 --- a/pkg/controller/service/service_controller_test.go +++ b/pkg/controller/service/service_controller_test.go @@ -25,7 +25,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -42,7 +42,6 @@ import ( featuregatetesting "k8s.io/component-base/featuregate/testing" "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/controller" - "k8s.io/kubernetes/pkg/features" ) const region = "us-central" @@ -308,7 +307,7 @@ func TestSyncLoadBalancerIfNeeded(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.ServiceLoadBalancerFinalizer, tc.enableFeatureGate)() + defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, serviceLoadBalancerFinalizerFeature, tc.enableFeatureGate)() controller, cloud, client := newController() cloud.Exists = tc.lbExists