move pkg/controller/cloud/node_lifecycle_controller.go to k8s.io/cloud-provider/controllers/nodelifecycle for easier external consumption

Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>
This commit is contained in:
Andrew Sy Kim 2020-05-09 16:19:29 -04:00
parent 6d4a19b31c
commit 41dc075a85
12 changed files with 35 additions and 9 deletions

View File

@ -12,7 +12,6 @@ go_library(
"//cmd/cloud-controller-manager/app/config:go_default_library",
"//cmd/cloud-controller-manager/app/options:go_default_library",
"//cmd/controller-manager/app:go_default_library",
"//pkg/controller/cloud:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
@ -23,6 +22,7 @@ go_library(
"//staging/src/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library",
"//staging/src/k8s.io/cloud-provider:go_default_library",
"//staging/src/k8s.io/cloud-provider/controllers/node:go_default_library",
"//staging/src/k8s.io/cloud-provider/controllers/nodelifecycle:go_default_library",
"//staging/src/k8s.io/cloud-provider/controllers/route:go_default_library",
"//staging/src/k8s.io/cloud-provider/controllers/service:go_default_library",
"//staging/src/k8s.io/component-base/cli/flag:go_default_library",

View File

@ -28,11 +28,11 @@ import (
cloudprovider "k8s.io/cloud-provider"
cloudnodecontroller "k8s.io/cloud-provider/controllers/node"
cloudnodelifecyclecontroller "k8s.io/cloud-provider/controllers/nodelifecycle"
routecontroller "k8s.io/cloud-provider/controllers/route"
servicecontroller "k8s.io/cloud-provider/controllers/service"
"k8s.io/klog/v2"
cloudcontrollerconfig "k8s.io/kubernetes/cmd/cloud-controller-manager/app/config"
cloudcontrollers "k8s.io/kubernetes/pkg/controller/cloud"
netutils "k8s.io/utils/net"
utilfeature "k8s.io/apiserver/pkg/util/feature"
@ -65,7 +65,7 @@ func startCloudNodeController(ctx *cloudcontrollerconfig.CompletedConfig, cloud
func startCloudNodeLifecycleController(ctx *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (http.Handler, bool, error) {
// Start the cloudNodeLifecycleController
cloudNodeLifecycleController, err := cloudcontrollers.NewCloudNodeLifecycleController(
cloudNodeLifecycleController, err := cloudnodelifecyclecontroller.NewCloudNodeLifecycleController(
ctx.SharedInformers.Core().V1().Nodes(),
// cloud node lifecycle controller uses existing cluster role from node-controller
ctx.ClientBuilder.ClientOrDie("node-controller"),

View File

@ -49,7 +49,6 @@ go_library(
"//pkg/controller/certificates/rootcacertpublisher:go_default_library",
"//pkg/controller/certificates/signer:go_default_library",
"//pkg/controller/certificates/signer/config:go_default_library",
"//pkg/controller/cloud:go_default_library",
"//pkg/controller/clusterroleaggregation:go_default_library",
"//pkg/controller/cronjob:go_default_library",
"//pkg/controller/daemon:go_default_library",
@ -135,6 +134,7 @@ go_library(
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
"//staging/src/k8s.io/client-go/util/keyutil:go_default_library",
"//staging/src/k8s.io/cloud-provider:go_default_library",
"//staging/src/k8s.io/cloud-provider/controllers/nodelifecycle:go_default_library",
"//staging/src/k8s.io/cloud-provider/controllers/route:go_default_library",
"//staging/src/k8s.io/cloud-provider/controllers/service:go_default_library",
"//staging/src/k8s.io/component-base/cli/flag:go_default_library",

View File

@ -38,12 +38,12 @@ import (
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/metadata"
restclient "k8s.io/client-go/rest"
cloudnodelifecyclecontroller "k8s.io/cloud-provider/controllers/nodelifecycle"
routecontroller "k8s.io/cloud-provider/controllers/route"
servicecontroller "k8s.io/cloud-provider/controllers/service"
"k8s.io/component-base/metrics/prometheus/ratelimiter"
csitrans "k8s.io/csi-translation-lib"
"k8s.io/kubernetes/pkg/controller"
cloudcontroller "k8s.io/kubernetes/pkg/controller/cloud"
endpointcontroller "k8s.io/kubernetes/pkg/controller/endpoint"
"k8s.io/kubernetes/pkg/controller/garbagecollector"
namespacecontroller "k8s.io/kubernetes/pkg/controller/namespace"
@ -217,7 +217,7 @@ func startNodeLifecycleController(ctx ControllerContext) (http.Handler, bool, er
}
func startCloudNodeLifecycleController(ctx ControllerContext) (http.Handler, bool, error) {
cloudNodeLifecycleController, err := cloudcontroller.NewCloudNodeLifecycleController(
cloudNodeLifecycleController, err := cloudnodelifecyclecontroller.NewCloudNodeLifecycleController(
ctx.InformerFactory.Core().V1().Nodes(),
// cloud node lifecycle controller uses existing cluster role from node-controller
ctx.ClientBuilder.ClientOrDie("node-controller"),

View File

@ -50,7 +50,6 @@ pkg/controller/apis/config/v1alpha1
pkg/controller/certificates
pkg/controller/certificates/signer
pkg/controller/certificates/signer/config/v1alpha1
pkg/controller/cloud
pkg/controller/clusterroleaggregation
pkg/controller/daemon
pkg/controller/daemon/config/v1alpha1
@ -424,6 +423,7 @@ staging/src/k8s.io/client-go/util/testing
staging/src/k8s.io/client-go/util/workqueue
staging/src/k8s.io/cloud-provider
staging/src/k8s.io/cloud-provider/controllers/node
staging/src/k8s.io/cloud-provider/controllers/nodelifecycle
staging/src/k8s.io/cloud-provider/controllers/route
staging/src/k8s.io/code-generator/cmd/client-gen/args
staging/src/k8s.io/code-generator/cmd/client-gen/generators/fake

View File

@ -108,7 +108,6 @@ filegroup(
"//pkg/controller/apis/config:all-srcs",
"//pkg/controller/bootstrap:all-srcs",
"//pkg/controller/certificates:all-srcs",
"//pkg/controller/cloud:all-srcs",
"//pkg/controller/clusterroleaggregation:all-srcs",
"//pkg/controller/cronjob:all-srcs",
"//pkg/controller/daemon:all-srcs",

View File

@ -38,6 +38,7 @@ filegroup(
":package-srcs",
"//staging/src/k8s.io/cloud-provider/api:all-srcs",
"//staging/src/k8s.io/cloud-provider/controllers/node:all-srcs",
"//staging/src/k8s.io/cloud-provider/controllers/nodelifecycle:all-srcs",
"//staging/src/k8s.io/cloud-provider/controllers/route:all-srcs",
"//staging/src/k8s.io/cloud-provider/controllers/service:all-srcs",
"//staging/src/k8s.io/cloud-provider/fake:all-srcs",

View File

@ -3,7 +3,8 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "go_default_library",
srcs = ["node_lifecycle_controller.go"],
importpath = "k8s.io/kubernetes/pkg/controller/cloud",
importmap = "k8s.io/kubernetes/vendor/k8s.io/cloud-provider/controllers/nodelifecycle",
importpath = "k8s.io/cloud-provider/controllers/nodelifecycle",
visibility = ["//visibility:public"],
deps = [
"//staging/src/k8s.io/api/core/v1:go_default_library",

View File

@ -207,3 +207,26 @@ func shutdownInCloudProvider(ctx context.Context, cloud cloudprovider.Interface,
return shutdown, err
}
// ensureNodeExistsByProviderID checks if the instance exists by the provider id,
// If provider id in spec is empty it calls instanceId with node name to get provider id
func ensureNodeExistsByProviderID(ctx context.Context, instances cloudprovider.Instances, node *v1.Node) (bool, error) {
providerID := node.Spec.ProviderID
if providerID == "" {
var err error
providerID, err = instances.InstanceID(ctx, types.NodeName(node.Name))
if err != nil {
if err == cloudprovider.InstanceNotFound {
return false, nil
}
return false, err
}
if providerID == "" {
klog.Warningf("Cannot find valid providerID for node name %q, assuming non existence", node.Name)
return false, nil
}
}
return instances.InstanceExistsByProviderID(ctx, providerID)
}

View File

@ -5,6 +5,8 @@ module k8s.io/cloud-provider
go 1.13
require (
github.com/google/go-cmp v0.4.0
github.com/stretchr/testify v1.4.0
k8s.io/api v0.0.0
k8s.io/apimachinery v0.0.0
k8s.io/client-go v0.0.0