remove dependency to pkg/features on service controller package

Signed-off-by: Yassine TIJANI <ytijani@vmware.com>
This commit is contained in:
Yassine TIJANI 2019-08-26 15:25:16 +01:00
parent 18d7f8839d
commit 19fa57bca3
3 changed files with 15 additions and 9 deletions

View File

@ -17,7 +17,6 @@ go_library(
deps = [ deps = [
"//pkg/apis/core/v1/helper:go_default_library", "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/controller:go_default_library", "//pkg/controller:go_default_library",
"//pkg/features:go_default_library",
"//pkg/util/metrics:go_default_library", "//pkg/util/metrics:go_default_library",
"//pkg/util/slice:go_default_library", "//pkg/util/slice:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library",
@ -52,7 +51,6 @@ go_test(
deps = [ deps = [
"//pkg/api/testapi:go_default_library", "//pkg/api/testapi:go_default_library",
"//pkg/controller: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/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/errors: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", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",

View File

@ -43,7 +43,6 @@ import (
"k8s.io/klog" "k8s.io/klog"
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper" v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller"
kubefeatures "k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/util/metrics" "k8s.io/kubernetes/pkg/util/metrics"
"k8s.io/kubernetes/pkg/util/slice" "k8s.io/kubernetes/pkg/util/slice"
) )
@ -67,6 +66,16 @@ const (
// LabelNodeRoleExcludeBalancer specifies that the node should be // LabelNodeRoleExcludeBalancer specifies that the node should be
// exclude from load balancers created by a cloud provider. // exclude from load balancers created by a cloud provider.
LabelNodeRoleExcludeBalancer = "alpha.service-controller.kubernetes.io/exclude-balancer" 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 { type cachedService struct {
@ -150,7 +159,7 @@ func New(
} }
}, },
DeleteFunc: func(old interface{}) { 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 // No need to handle deletion event if finalizer feature gate is
// enabled. Because the deletion would be handled by the update // enabled. Because the deletion would be handled by the update
// path when the deletion timestamp is added. // path when the deletion timestamp is added.
@ -327,7 +336,7 @@ func (s *ServiceController) syncLoadBalancerIfNeeded(service *v1.Service, key st
op = ensureLoadBalancer op = ensureLoadBalancer
klog.V(2).Infof("Ensuring load balancer for service %s", key) klog.V(2).Infof("Ensuring load balancer for service %s", key)
s.eventRecorder.Event(service, v1.EventTypeNormal, "EnsuringLoadBalancer", "Ensuring load balancer") 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. // Always try to add finalizer prior to load balancer creation.
// It will be a no-op if finalizer already exists. // It will be a no-op if finalizer already exists.
// Note this also retrospectively puts on finalizer if the cluster // Note this also retrospectively puts on finalizer if the cluster
@ -623,7 +632,7 @@ func getNodeConditionPredicate() corelisters.NodeConditionPredicate {
return false return false
} }
if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.ServiceNodeExclusion) { if utilfeature.DefaultFeatureGate.Enabled(serviceNodeExclusionFeature) {
if _, hasExcludeBalancerLabel := node.Labels[LabelNodeRoleExcludeBalancer]; hasExcludeBalancerLabel { if _, hasExcludeBalancerLabel := node.Labels[LabelNodeRoleExcludeBalancer]; hasExcludeBalancerLabel {
return false return false
} }

View File

@ -25,7 +25,7 @@ import (
"testing" "testing"
"time" "time"
"k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
@ -42,7 +42,6 @@ import (
featuregatetesting "k8s.io/component-base/featuregate/testing" featuregatetesting "k8s.io/component-base/featuregate/testing"
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/features"
) )
const region = "us-central" const region = "us-central"
@ -308,7 +307,7 @@ func TestSyncLoadBalancerIfNeeded(t *testing.T) {
for _, tc := range testCases { for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) { 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() controller, cloud, client := newController()
cloud.Exists = tc.lbExists cloud.Exists = tc.lbExists