mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Merge pull request #77839 from mcrute/migrate-fake-cp
Staging legacy fake cloud provider
This commit is contained in:
		@@ -50,7 +50,6 @@ pkg/apis/rbac/validation
 | 
			
		||||
pkg/apis/storage
 | 
			
		||||
pkg/apis/storage/v1
 | 
			
		||||
pkg/apis/storage/v1beta1
 | 
			
		||||
pkg/cloudprovider/providers/fake
 | 
			
		||||
pkg/cloudprovider/providers/photon
 | 
			
		||||
pkg/controller
 | 
			
		||||
pkg/controller/apis/config/v1alpha1
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,6 @@ filegroup(
 | 
			
		||||
    srcs = [
 | 
			
		||||
        ":package-srcs",
 | 
			
		||||
        "//pkg/cloudprovider/providers/cloudstack:all-srcs",
 | 
			
		||||
        "//pkg/cloudprovider/providers/fake:all-srcs",
 | 
			
		||||
        "//pkg/cloudprovider/providers/openstack:all-srcs",
 | 
			
		||||
        "//pkg/cloudprovider/providers/ovirt:all-srcs",
 | 
			
		||||
        "//pkg/cloudprovider/providers/photon:all-srcs",
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,6 @@ go_test(
 | 
			
		||||
    ],
 | 
			
		||||
    embed = [":go_default_library"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/cloudprovider/providers/fake:go_default_library",
 | 
			
		||||
        "//pkg/controller:go_default_library",
 | 
			
		||||
        "//pkg/controller/testutil:go_default_library",
 | 
			
		||||
        "//pkg/kubelet/apis:go_default_library",
 | 
			
		||||
@@ -60,6 +59,7 @@ go_test(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/record:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/fake:go_default_library",
 | 
			
		||||
        "//vendor/github.com/stretchr/testify/assert:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ import (
 | 
			
		||||
	"k8s.io/client-go/informers"
 | 
			
		||||
	"k8s.io/client-go/tools/record"
 | 
			
		||||
	cloudprovider "k8s.io/cloud-provider"
 | 
			
		||||
	fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
	fakecloud "k8s.io/cloud-provider/fake"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller/testutil"
 | 
			
		||||
	kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
 | 
			
		||||
@@ -135,7 +135,7 @@ func TestEnsureNodeExistsByProviderID(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	for _, tc := range testCases {
 | 
			
		||||
		t.Run(tc.testName, func(t *testing.T) {
 | 
			
		||||
			fc := &fakecloud.FakeCloud{
 | 
			
		||||
			fc := &fakecloud.Cloud{
 | 
			
		||||
				ExistsByProviderID: tc.existsByProviderID,
 | 
			
		||||
				Err:                tc.nodeNameErr,
 | 
			
		||||
				ErrByProviderID:    tc.providerIDErr,
 | 
			
		||||
@@ -199,7 +199,7 @@ func TestNodeInitialized(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	factory := informers.NewSharedInformerFactory(fnh, controller.NoResyncPeriodFunc())
 | 
			
		||||
 | 
			
		||||
	fakeCloud := &fakecloud.FakeCloud{
 | 
			
		||||
	fakeCloud := &fakecloud.Cloud{
 | 
			
		||||
		InstanceTypes: map[types.NodeName]string{
 | 
			
		||||
			types.NodeName("node0"): "t1.micro",
 | 
			
		||||
		},
 | 
			
		||||
@@ -264,7 +264,7 @@ func TestNodeIgnored(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	factory := informers.NewSharedInformerFactory(fnh, controller.NoResyncPeriodFunc())
 | 
			
		||||
 | 
			
		||||
	fakeCloud := &fakecloud.FakeCloud{
 | 
			
		||||
	fakeCloud := &fakecloud.Cloud{
 | 
			
		||||
		InstanceTypes: map[types.NodeName]string{
 | 
			
		||||
			types.NodeName("node0"): "t1.micro",
 | 
			
		||||
		},
 | 
			
		||||
@@ -336,7 +336,7 @@ func TestGCECondition(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	factory := informers.NewSharedInformerFactory(fnh, controller.NoResyncPeriodFunc())
 | 
			
		||||
 | 
			
		||||
	fakeCloud := &fakecloud.FakeCloud{
 | 
			
		||||
	fakeCloud := &fakecloud.Cloud{
 | 
			
		||||
		InstanceTypes: map[types.NodeName]string{
 | 
			
		||||
			types.NodeName("node0"): "t1.micro",
 | 
			
		||||
		},
 | 
			
		||||
@@ -421,7 +421,7 @@ func TestZoneInitialized(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	factory := informers.NewSharedInformerFactory(fnh, controller.NoResyncPeriodFunc())
 | 
			
		||||
 | 
			
		||||
	fakeCloud := &fakecloud.FakeCloud{
 | 
			
		||||
	fakeCloud := &fakecloud.Cloud{
 | 
			
		||||
		InstanceTypes: map[types.NodeName]string{
 | 
			
		||||
			types.NodeName("node0"): "t1.micro",
 | 
			
		||||
		},
 | 
			
		||||
@@ -511,7 +511,7 @@ func TestNodeAddresses(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	factory := informers.NewSharedInformerFactory(fnh, controller.NoResyncPeriodFunc())
 | 
			
		||||
 | 
			
		||||
	fakeCloud := &fakecloud.FakeCloud{
 | 
			
		||||
	fakeCloud := &fakecloud.Cloud{
 | 
			
		||||
		InstanceTypes: map[types.NodeName]string{},
 | 
			
		||||
		Addresses: []v1.NodeAddress{
 | 
			
		||||
			{
 | 
			
		||||
@@ -624,7 +624,7 @@ func TestNodeProvidedIPAddresses(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	factory := informers.NewSharedInformerFactory(fnh, controller.NoResyncPeriodFunc())
 | 
			
		||||
 | 
			
		||||
	fakeCloud := &fakecloud.FakeCloud{
 | 
			
		||||
	fakeCloud := &fakecloud.Cloud{
 | 
			
		||||
		InstanceTypes: map[types.NodeName]string{
 | 
			
		||||
			types.NodeName("node0"):           "t1.micro",
 | 
			
		||||
			types.NodeName("node0.aws.12345"): "t2.macro",
 | 
			
		||||
@@ -839,7 +839,7 @@ func TestNodeAddressesNotUpdate(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	factory := informers.NewSharedInformerFactory(fnh, controller.NoResyncPeriodFunc())
 | 
			
		||||
 | 
			
		||||
	fakeCloud := &fakecloud.FakeCloud{
 | 
			
		||||
	fakeCloud := &fakecloud.Cloud{
 | 
			
		||||
		InstanceTypes: map[types.NodeName]string{},
 | 
			
		||||
		Addresses: []v1.NodeAddress{
 | 
			
		||||
			{
 | 
			
		||||
@@ -914,7 +914,7 @@ func TestNodeProviderID(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	factory := informers.NewSharedInformerFactory(fnh, controller.NoResyncPeriodFunc())
 | 
			
		||||
 | 
			
		||||
	fakeCloud := &fakecloud.FakeCloud{
 | 
			
		||||
	fakeCloud := &fakecloud.Cloud{
 | 
			
		||||
		InstanceTypes: map[types.NodeName]string{},
 | 
			
		||||
		Addresses: []v1.NodeAddress{
 | 
			
		||||
			{
 | 
			
		||||
@@ -997,7 +997,7 @@ func TestNodeProviderIDAlreadySet(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	factory := informers.NewSharedInformerFactory(fnh, controller.NoResyncPeriodFunc())
 | 
			
		||||
 | 
			
		||||
	fakeCloud := &fakecloud.FakeCloud{
 | 
			
		||||
	fakeCloud := &fakecloud.Cloud{
 | 
			
		||||
		InstanceTypes: map[types.NodeName]string{},
 | 
			
		||||
		Addresses: []v1.NodeAddress{
 | 
			
		||||
			{
 | 
			
		||||
 
 | 
			
		||||
@@ -30,8 +30,8 @@ import (
 | 
			
		||||
	"k8s.io/client-go/kubernetes/fake"
 | 
			
		||||
	"k8s.io/client-go/kubernetes/scheme"
 | 
			
		||||
	"k8s.io/client-go/tools/record"
 | 
			
		||||
	fakecloud "k8s.io/cloud-provider/fake"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller/testutil"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -39,7 +39,7 @@ func Test_NodesDeleted(t *testing.T) {
 | 
			
		||||
	testcases := []struct {
 | 
			
		||||
		name        string
 | 
			
		||||
		fnh         *testutil.FakeNodeHandler
 | 
			
		||||
		fakeCloud   *fakecloud.FakeCloud
 | 
			
		||||
		fakeCloud   *fakecloud.Cloud
 | 
			
		||||
		deleteNodes []*v1.Node
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
@@ -66,7 +66,7 @@ func Test_NodesDeleted(t *testing.T) {
 | 
			
		||||
				DeletedNodes: []*v1.Node{},
 | 
			
		||||
				Clientset:    fake.NewSimpleClientset(),
 | 
			
		||||
			},
 | 
			
		||||
			fakeCloud: &fakecloud.FakeCloud{
 | 
			
		||||
			fakeCloud: &fakecloud.Cloud{
 | 
			
		||||
				ExistsByProviderID: false,
 | 
			
		||||
			},
 | 
			
		||||
			deleteNodes: []*v1.Node{
 | 
			
		||||
@@ -100,7 +100,7 @@ func Test_NodesDeleted(t *testing.T) {
 | 
			
		||||
				DeletedNodes: []*v1.Node{},
 | 
			
		||||
				Clientset:    fake.NewSimpleClientset(),
 | 
			
		||||
			},
 | 
			
		||||
			fakeCloud: &fakecloud.FakeCloud{
 | 
			
		||||
			fakeCloud: &fakecloud.Cloud{
 | 
			
		||||
				ExistsByProviderID: false,
 | 
			
		||||
				ErrByProviderID:    errors.New("err!"),
 | 
			
		||||
			},
 | 
			
		||||
@@ -133,7 +133,7 @@ func Test_NodesDeleted(t *testing.T) {
 | 
			
		||||
				DeletedNodes: []*v1.Node{},
 | 
			
		||||
				Clientset:    fake.NewSimpleClientset(),
 | 
			
		||||
			},
 | 
			
		||||
			fakeCloud: &fakecloud.FakeCloud{
 | 
			
		||||
			fakeCloud: &fakecloud.Cloud{
 | 
			
		||||
				ExistsByProviderID: true,
 | 
			
		||||
			},
 | 
			
		||||
			deleteNodes: []*v1.Node{},
 | 
			
		||||
@@ -162,7 +162,7 @@ func Test_NodesDeleted(t *testing.T) {
 | 
			
		||||
				DeletedNodes: []*v1.Node{},
 | 
			
		||||
				Clientset:    fake.NewSimpleClientset(),
 | 
			
		||||
			},
 | 
			
		||||
			fakeCloud: &fakecloud.FakeCloud{
 | 
			
		||||
			fakeCloud: &fakecloud.Cloud{
 | 
			
		||||
				ExistsByProviderID: false,
 | 
			
		||||
			},
 | 
			
		||||
			deleteNodes: []*v1.Node{
 | 
			
		||||
@@ -193,7 +193,7 @@ func Test_NodesDeleted(t *testing.T) {
 | 
			
		||||
				DeletedNodes: []*v1.Node{},
 | 
			
		||||
				Clientset:    fake.NewSimpleClientset(),
 | 
			
		||||
			},
 | 
			
		||||
			fakeCloud: &fakecloud.FakeCloud{
 | 
			
		||||
			fakeCloud: &fakecloud.Cloud{
 | 
			
		||||
				NodeShutdown:       false,
 | 
			
		||||
				ExistsByProviderID: true,
 | 
			
		||||
				ExtID: map[types.NodeName]string{
 | 
			
		||||
@@ -229,7 +229,7 @@ func Test_NodesDeleted(t *testing.T) {
 | 
			
		||||
				DeletedNodes: []*v1.Node{},
 | 
			
		||||
				Clientset:    fake.NewSimpleClientset(),
 | 
			
		||||
			},
 | 
			
		||||
			fakeCloud: &fakecloud.FakeCloud{
 | 
			
		||||
			fakeCloud: &fakecloud.Cloud{
 | 
			
		||||
				ExistsByProviderID: false,
 | 
			
		||||
			},
 | 
			
		||||
			deleteNodes: []*v1.Node{},
 | 
			
		||||
@@ -270,7 +270,7 @@ func Test_NodesShutdown(t *testing.T) {
 | 
			
		||||
	testcases := []struct {
 | 
			
		||||
		name         string
 | 
			
		||||
		fnh          *testutil.FakeNodeHandler
 | 
			
		||||
		fakeCloud    *fakecloud.FakeCloud
 | 
			
		||||
		fakeCloud    *fakecloud.Cloud
 | 
			
		||||
		updatedNodes []*v1.Node
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
@@ -297,7 +297,7 @@ func Test_NodesShutdown(t *testing.T) {
 | 
			
		||||
				UpdatedNodes: []*v1.Node{},
 | 
			
		||||
				Clientset:    fake.NewSimpleClientset(),
 | 
			
		||||
			},
 | 
			
		||||
			fakeCloud: &fakecloud.FakeCloud{
 | 
			
		||||
			fakeCloud: &fakecloud.Cloud{
 | 
			
		||||
				NodeShutdown:            true,
 | 
			
		||||
				ErrShutdownByProviderID: nil,
 | 
			
		||||
			},
 | 
			
		||||
@@ -349,7 +349,7 @@ func Test_NodesShutdown(t *testing.T) {
 | 
			
		||||
				UpdatedNodes: []*v1.Node{},
 | 
			
		||||
				Clientset:    fake.NewSimpleClientset(),
 | 
			
		||||
			},
 | 
			
		||||
			fakeCloud: &fakecloud.FakeCloud{
 | 
			
		||||
			fakeCloud: &fakecloud.Cloud{
 | 
			
		||||
				NodeShutdown:            false,
 | 
			
		||||
				ErrShutdownByProviderID: errors.New("err!"),
 | 
			
		||||
			},
 | 
			
		||||
@@ -379,7 +379,7 @@ func Test_NodesShutdown(t *testing.T) {
 | 
			
		||||
				UpdatedNodes: []*v1.Node{},
 | 
			
		||||
				Clientset:    fake.NewSimpleClientset(),
 | 
			
		||||
			},
 | 
			
		||||
			fakeCloud: &fakecloud.FakeCloud{
 | 
			
		||||
			fakeCloud: &fakecloud.Cloud{
 | 
			
		||||
				NodeShutdown:            false,
 | 
			
		||||
				ErrShutdownByProviderID: nil,
 | 
			
		||||
			},
 | 
			
		||||
@@ -409,7 +409,7 @@ func Test_NodesShutdown(t *testing.T) {
 | 
			
		||||
				UpdatedNodes: []*v1.Node{},
 | 
			
		||||
				Clientset:    fake.NewSimpleClientset(),
 | 
			
		||||
			},
 | 
			
		||||
			fakeCloud: &fakecloud.FakeCloud{
 | 
			
		||||
			fakeCloud: &fakecloud.Cloud{
 | 
			
		||||
				NodeShutdown:            true,
 | 
			
		||||
				ErrShutdownByProviderID: nil,
 | 
			
		||||
			},
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,6 @@ go_test(
 | 
			
		||||
    srcs = ["route_controller_test.go"],
 | 
			
		||||
    embed = [":go_default_library"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/cloudprovider/providers/fake:go_default_library",
 | 
			
		||||
        "//pkg/controller:go_default_library",
 | 
			
		||||
        "//pkg/controller/util/node:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
			
		||||
@@ -52,6 +51,7 @@ go_test(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/testing:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/fake:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@ import (
 | 
			
		||||
	"k8s.io/client-go/kubernetes/fake"
 | 
			
		||||
	core "k8s.io/client-go/testing"
 | 
			
		||||
	cloudprovider "k8s.io/cloud-provider"
 | 
			
		||||
	fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
	fakecloud "k8s.io/cloud-provider/fake"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller"
 | 
			
		||||
	nodeutil "k8s.io/kubernetes/pkg/controller/util/node"
 | 
			
		||||
)
 | 
			
		||||
@@ -226,9 +226,9 @@ func TestReconcile(t *testing.T) {
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	for i, testCase := range testCases {
 | 
			
		||||
		cloud := &fakecloud.FakeCloud{RouteMap: make(map[string]*fakecloud.FakeRoute)}
 | 
			
		||||
		cloud := &fakecloud.Cloud{RouteMap: make(map[string]*fakecloud.Route)}
 | 
			
		||||
		for _, route := range testCase.initialRoutes {
 | 
			
		||||
			fakeRoute := &fakecloud.FakeRoute{}
 | 
			
		||||
			fakeRoute := &fakecloud.Route{}
 | 
			
		||||
			fakeRoute.ClusterName = cluster
 | 
			
		||||
			fakeRoute.Route = *route
 | 
			
		||||
			cloud.RouteMap[route.Name] = fakeRoute
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,6 @@ go_test(
 | 
			
		||||
    embed = [":go_default_library"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/api/testapi:go_default_library",
 | 
			
		||||
        "//pkg/cloudprovider/providers/fake:go_default_library",
 | 
			
		||||
        "//pkg/controller:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
 | 
			
		||||
@@ -54,6 +53,7 @@ go_test(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/testing:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/record:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/fake:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -32,8 +32,8 @@ import (
 | 
			
		||||
	"k8s.io/client-go/kubernetes/fake"
 | 
			
		||||
	core "k8s.io/client-go/testing"
 | 
			
		||||
	"k8s.io/client-go/tools/record"
 | 
			
		||||
	fakecloud "k8s.io/cloud-provider/fake"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
			
		||||
	fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -52,8 +52,8 @@ func defaultExternalService() *v1.Service {
 | 
			
		||||
 | 
			
		||||
func alwaysReady() bool { return true }
 | 
			
		||||
 | 
			
		||||
func newController() (*ServiceController, *fakecloud.FakeCloud, *fake.Clientset) {
 | 
			
		||||
	cloud := &fakecloud.FakeCloud{}
 | 
			
		||||
func newController() (*ServiceController, *fakecloud.Cloud, *fake.Clientset) {
 | 
			
		||||
	cloud := &fakecloud.Cloud{}
 | 
			
		||||
	cloud.Region = region
 | 
			
		||||
 | 
			
		||||
	client := fake.NewSimpleClientset()
 | 
			
		||||
@@ -166,7 +166,7 @@ func TestCreateExternalLoadBalancer(t *testing.T) {
 | 
			
		||||
				t.Errorf("unexpected client actions: %v", actions)
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			var balancer *fakecloud.FakeBalancer
 | 
			
		||||
			var balancer *fakecloud.Balancer
 | 
			
		||||
			for k := range cloud.Balancers {
 | 
			
		||||
				if balancer == nil {
 | 
			
		||||
					b := cloud.Balancers[k]
 | 
			
		||||
@@ -205,7 +205,7 @@ func TestUpdateNodesInExternalLoadBalancer(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
	table := []struct {
 | 
			
		||||
		services            []*v1.Service
 | 
			
		||||
		expectedUpdateCalls []fakecloud.FakeUpdateBalancerCall
 | 
			
		||||
		expectedUpdateCalls []fakecloud.UpdateBalancerCall
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			// No services present: no calls should be made.
 | 
			
		||||
@@ -225,7 +225,7 @@ func TestUpdateNodesInExternalLoadBalancer(t *testing.T) {
 | 
			
		||||
			services: []*v1.Service{
 | 
			
		||||
				newService("s0", "333", v1.ServiceTypeLoadBalancer),
 | 
			
		||||
			},
 | 
			
		||||
			expectedUpdateCalls: []fakecloud.FakeUpdateBalancerCall{
 | 
			
		||||
			expectedUpdateCalls: []fakecloud.UpdateBalancerCall{
 | 
			
		||||
				{Service: newService("s0", "333", v1.ServiceTypeLoadBalancer), Hosts: nodes},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
@@ -236,7 +236,7 @@ func TestUpdateNodesInExternalLoadBalancer(t *testing.T) {
 | 
			
		||||
				newService("s1", "555", v1.ServiceTypeLoadBalancer),
 | 
			
		||||
				newService("s2", "666", v1.ServiceTypeLoadBalancer),
 | 
			
		||||
			},
 | 
			
		||||
			expectedUpdateCalls: []fakecloud.FakeUpdateBalancerCall{
 | 
			
		||||
			expectedUpdateCalls: []fakecloud.UpdateBalancerCall{
 | 
			
		||||
				{Service: newService("s0", "444", v1.ServiceTypeLoadBalancer), Hosts: nodes},
 | 
			
		||||
				{Service: newService("s1", "555", v1.ServiceTypeLoadBalancer), Hosts: nodes},
 | 
			
		||||
				{Service: newService("s2", "666", v1.ServiceTypeLoadBalancer), Hosts: nodes},
 | 
			
		||||
@@ -250,7 +250,7 @@ func TestUpdateNodesInExternalLoadBalancer(t *testing.T) {
 | 
			
		||||
				newService("s3", "999", v1.ServiceTypeLoadBalancer),
 | 
			
		||||
				newService("s4", "123", v1.ServiceTypeClusterIP),
 | 
			
		||||
			},
 | 
			
		||||
			expectedUpdateCalls: []fakecloud.FakeUpdateBalancerCall{
 | 
			
		||||
			expectedUpdateCalls: []fakecloud.UpdateBalancerCall{
 | 
			
		||||
				{Service: newService("s1", "888", v1.ServiceTypeLoadBalancer), Hosts: nodes},
 | 
			
		||||
				{Service: newService("s3", "999", v1.ServiceTypeLoadBalancer), Hosts: nodes},
 | 
			
		||||
			},
 | 
			
		||||
@@ -261,7 +261,7 @@ func TestUpdateNodesInExternalLoadBalancer(t *testing.T) {
 | 
			
		||||
				newService("s0", "234", v1.ServiceTypeLoadBalancer),
 | 
			
		||||
				nil,
 | 
			
		||||
			},
 | 
			
		||||
			expectedUpdateCalls: []fakecloud.FakeUpdateBalancerCall{
 | 
			
		||||
			expectedUpdateCalls: []fakecloud.UpdateBalancerCall{
 | 
			
		||||
				{Service: newService("s0", "234", v1.ServiceTypeLoadBalancer), Hosts: nodes},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
@@ -527,7 +527,7 @@ func TestSyncService(t *testing.T) {
 | 
			
		||||
func TestProcessServiceDeletion(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	var controller *ServiceController
 | 
			
		||||
	var cloud *fakecloud.FakeCloud
 | 
			
		||||
	var cloud *fakecloud.Cloud
 | 
			
		||||
	// Add a global svcKey name
 | 
			
		||||
	svcKey := "external-balancer"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,9 +19,9 @@ go_test(
 | 
			
		||||
    srcs = ["cloud_request_manager_test.go"],
 | 
			
		||||
    embed = [":go_default_library"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/cloudprovider/providers/fake:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/fake:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/diff"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
	"k8s.io/cloud-provider/fake"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func createNodeInternalIPAddress(address string) []v1.NodeAddress {
 | 
			
		||||
@@ -38,7 +38,7 @@ func createNodeInternalIPAddress(address string) []v1.NodeAddress {
 | 
			
		||||
 | 
			
		||||
func TestNodeAddressesDelay(t *testing.T) {
 | 
			
		||||
	syncPeriod := 100 * time.Millisecond
 | 
			
		||||
	cloud := &fake.FakeCloud{
 | 
			
		||||
	cloud := &fake.Cloud{
 | 
			
		||||
		Addresses: createNodeInternalIPAddress("10.0.1.12"),
 | 
			
		||||
		// Set the request delay so the manager timeouts and collects the node addresses later
 | 
			
		||||
		RequestDelay: 200 * time.Millisecond,
 | 
			
		||||
@@ -82,7 +82,7 @@ func TestNodeAddressesDelay(t *testing.T) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestNodeAddressesUsesLastSuccess(t *testing.T) {
 | 
			
		||||
	cloud := &fake.FakeCloud{}
 | 
			
		||||
	cloud := &fake.Cloud{}
 | 
			
		||||
	manager := NewSyncManager(cloud, "defaultNode", 0).(*cloudResourceSyncManager)
 | 
			
		||||
 | 
			
		||||
	// These tests are stateful and order dependant.
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,6 @@ go_test(
 | 
			
		||||
    srcs = ["setters_test.go"],
 | 
			
		||||
    embed = [":go_default_library"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/cloudprovider/providers/fake:go_default_library",
 | 
			
		||||
        "//pkg/kubelet/cm:go_default_library",
 | 
			
		||||
        "//pkg/kubelet/container:go_default_library",
 | 
			
		||||
        "//pkg/kubelet/container/testing:go_default_library",
 | 
			
		||||
@@ -62,6 +61,7 @@ go_test(
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/fake:go_default_library",
 | 
			
		||||
        "//vendor/github.com/google/cadvisor/info/v1:go_default_library",
 | 
			
		||||
        "//vendor/github.com/stretchr/testify/assert:go_default_library",
 | 
			
		||||
        "//vendor/github.com/stretchr/testify/require:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/diff"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/rand"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/uuid"
 | 
			
		||||
	fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
	fakecloud "k8s.io/cloud-provider/fake"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/kubelet/cm"
 | 
			
		||||
	kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
 | 
			
		||||
	kubecontainertest "k8s.io/kubernetes/pkg/kubelet/container/testing"
 | 
			
		||||
@@ -249,7 +249,7 @@ func TestNodeAddress(t *testing.T) {
 | 
			
		||||
			}
 | 
			
		||||
			hostname := testKubeletHostname
 | 
			
		||||
			externalCloudProvider := false
 | 
			
		||||
			cloud := &fakecloud.FakeCloud{
 | 
			
		||||
			cloud := &fakecloud.Cloud{
 | 
			
		||||
				Addresses: testCase.nodeAddresses,
 | 
			
		||||
				Err:       nil,
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,6 @@ go_test(
 | 
			
		||||
    srcs = ["azure_file_test.go"],
 | 
			
		||||
    embed = [":go_default_library"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/cloudprovider/providers/fake:go_default_library",
 | 
			
		||||
        "//pkg/util/mount:go_default_library",
 | 
			
		||||
        "//pkg/volume:go_default_library",
 | 
			
		||||
        "//pkg/volume/testing:go_default_library",
 | 
			
		||||
@@ -46,6 +45,7 @@ go_test(
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/fake:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/legacy-cloud-providers/azure:go_default_library",
 | 
			
		||||
        "//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ import (
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/types"
 | 
			
		||||
	"k8s.io/client-go/kubernetes/fake"
 | 
			
		||||
	fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
	fakecloud "k8s.io/cloud-provider/fake"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/util/mount"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/volume"
 | 
			
		||||
	volumetest "k8s.io/kubernetes/pkg/volume/testing"
 | 
			
		||||
@@ -119,7 +119,7 @@ func TestPluginWithoutCloudProvider(t *testing.T) {
 | 
			
		||||
func TestPluginWithOtherCloudProvider(t *testing.T) {
 | 
			
		||||
	tmpDir := getTestTempDir(t)
 | 
			
		||||
	defer os.RemoveAll(tmpDir)
 | 
			
		||||
	cloud := &fakecloud.FakeCloud{}
 | 
			
		||||
	cloud := &fakecloud.Cloud{}
 | 
			
		||||
	testPlugin(t, tmpDir, volumetest.NewFakeVolumeHostWithCloudProvider(tmpDir, nil, nil, cloud))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,6 @@ go_test(
 | 
			
		||||
    ],
 | 
			
		||||
    embed = [":go_default_library"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/cloudprovider/providers/fake:go_default_library",
 | 
			
		||||
        "//pkg/util/mount:go_default_library",
 | 
			
		||||
        "//pkg/volume:go_default_library",
 | 
			
		||||
        "//pkg/volume/testing:go_default_library",
 | 
			
		||||
@@ -54,6 +53,7 @@ go_test(
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/util/testing:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/fake:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/legacy-cloud-providers/vsphere:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/legacy-cloud-providers/vsphere/vclib:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/types"
 | 
			
		||||
	utiltesting "k8s.io/client-go/util/testing"
 | 
			
		||||
	cloudprovider "k8s.io/cloud-provider"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
	"k8s.io/cloud-provider/fake"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/util/mount"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/volume"
 | 
			
		||||
	volumetest "k8s.io/kubernetes/pkg/volume/testing"
 | 
			
		||||
@@ -203,7 +203,7 @@ func TestUnsupportedCloudProvider(t *testing.T) {
 | 
			
		||||
	}{
 | 
			
		||||
		{name: "nil cloudprovider", cloudProvider: nil},
 | 
			
		||||
		{name: "vSphere", cloudProvider: &vsphere.VSphere{}, success: true},
 | 
			
		||||
		{name: "fake cloudprovider", cloudProvider: &fake.FakeCloud{}},
 | 
			
		||||
		{name: "fake cloudprovider", cloudProvider: &fake.Cloud{}},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, tc := range testcases {
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@ filegroup(
 | 
			
		||||
    name = "all-srcs",
 | 
			
		||||
    srcs = [
 | 
			
		||||
        ":package-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/fake:all-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/node:all-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/service/helpers:all-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/volume:all-srcs",
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,8 @@ go_library(
 | 
			
		||||
        "doc.go",
 | 
			
		||||
        "fake.go",
 | 
			
		||||
    ],
 | 
			
		||||
    importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/fake",
 | 
			
		||||
    importmap = "k8s.io/kubernetes/vendor/k8s.io/cloud-provider/fake",
 | 
			
		||||
    importpath = "k8s.io/cloud-provider/fake",
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
 | 
			
		||||
@@ -16,4 +16,4 @@ limitations under the License.
 | 
			
		||||
 | 
			
		||||
// Package fake is a test-double implementation of cloudprovider
 | 
			
		||||
// Interface, LoadBalancer and Instances. It is useful for testing.
 | 
			
		||||
package fake // import "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
package fake // import "k8s.io/cloud-provider/fake"
 | 
			
		||||
@@ -31,8 +31,8 @@ import (
 | 
			
		||||
 | 
			
		||||
const defaultProviderName = "fake"
 | 
			
		||||
 | 
			
		||||
// FakeBalancer is a fake storage of balancer information
 | 
			
		||||
type FakeBalancer struct {
 | 
			
		||||
// Balancer is a fake storage of balancer information
 | 
			
		||||
type Balancer struct {
 | 
			
		||||
	Name           string
 | 
			
		||||
	Region         string
 | 
			
		||||
	LoadBalancerIP string
 | 
			
		||||
@@ -40,21 +40,22 @@ type FakeBalancer struct {
 | 
			
		||||
	Hosts          []*v1.Node
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type FakeUpdateBalancerCall struct {
 | 
			
		||||
// UpdateBalancerCall represents a fake call to update load balancers
 | 
			
		||||
type UpdateBalancerCall struct {
 | 
			
		||||
	Service *v1.Service
 | 
			
		||||
	Hosts   []*v1.Node
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var _ cloudprovider.Interface = (*FakeCloud)(nil)
 | 
			
		||||
var _ cloudprovider.Instances = (*FakeCloud)(nil)
 | 
			
		||||
var _ cloudprovider.LoadBalancer = (*FakeCloud)(nil)
 | 
			
		||||
var _ cloudprovider.Routes = (*FakeCloud)(nil)
 | 
			
		||||
var _ cloudprovider.Zones = (*FakeCloud)(nil)
 | 
			
		||||
var _ cloudprovider.PVLabeler = (*FakeCloud)(nil)
 | 
			
		||||
var _ cloudprovider.Clusters = (*FakeCloud)(nil)
 | 
			
		||||
var _ cloudprovider.Interface = (*Cloud)(nil)
 | 
			
		||||
var _ cloudprovider.Instances = (*Cloud)(nil)
 | 
			
		||||
var _ cloudprovider.LoadBalancer = (*Cloud)(nil)
 | 
			
		||||
var _ cloudprovider.Routes = (*Cloud)(nil)
 | 
			
		||||
var _ cloudprovider.Zones = (*Cloud)(nil)
 | 
			
		||||
var _ cloudprovider.PVLabeler = (*Cloud)(nil)
 | 
			
		||||
var _ cloudprovider.Clusters = (*Cloud)(nil)
 | 
			
		||||
 | 
			
		||||
// FakeCloud is a test-double implementation of Interface, LoadBalancer, Instances, and Routes. It is useful for testing.
 | 
			
		||||
type FakeCloud struct {
 | 
			
		||||
// Cloud is a test-double implementation of Interface, LoadBalancer, Instances, and Routes. It is useful for testing.
 | 
			
		||||
type Cloud struct {
 | 
			
		||||
	Exists bool
 | 
			
		||||
	Err    error
 | 
			
		||||
 | 
			
		||||
@@ -73,9 +74,9 @@ type FakeCloud struct {
 | 
			
		||||
	ClusterList   []string
 | 
			
		||||
	MasterName    string
 | 
			
		||||
	ExternalIP    net.IP
 | 
			
		||||
	Balancers     map[string]FakeBalancer
 | 
			
		||||
	UpdateCalls   []FakeUpdateBalancerCall
 | 
			
		||||
	RouteMap      map[string]*FakeRoute
 | 
			
		||||
	Balancers     map[string]Balancer
 | 
			
		||||
	UpdateCalls   []UpdateBalancerCall
 | 
			
		||||
	RouteMap      map[string]*Route
 | 
			
		||||
	Lock          sync.Mutex
 | 
			
		||||
	Provider      string
 | 
			
		||||
	addCallLock   sync.Mutex
 | 
			
		||||
@@ -85,12 +86,13 @@ type FakeCloud struct {
 | 
			
		||||
	RequestDelay time.Duration
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type FakeRoute struct {
 | 
			
		||||
// Route is a representation of an advanced routing rule.
 | 
			
		||||
type Route struct {
 | 
			
		||||
	ClusterName string
 | 
			
		||||
	Route       cloudprovider.Route
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) addCall(desc string) {
 | 
			
		||||
func (f *Cloud) addCall(desc string) {
 | 
			
		||||
	f.addCallLock.Lock()
 | 
			
		||||
	defer f.addCallLock.Unlock()
 | 
			
		||||
 | 
			
		||||
@@ -99,29 +101,32 @@ func (f *FakeCloud) addCall(desc string) {
 | 
			
		||||
	f.Calls = append(f.Calls, desc)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ClearCalls clears internal record of method calls to this FakeCloud.
 | 
			
		||||
func (f *FakeCloud) ClearCalls() {
 | 
			
		||||
// ClearCalls clears internal record of method calls to this Cloud.
 | 
			
		||||
func (f *Cloud) ClearCalls() {
 | 
			
		||||
	f.Calls = []string{}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Initialize passes a Kubernetes clientBuilder interface to the cloud provider
 | 
			
		||||
func (f *FakeCloud) Initialize(clientBuilder cloudprovider.ControllerClientBuilder, stop <-chan struct{}) {
 | 
			
		||||
func (f *Cloud) Initialize(clientBuilder cloudprovider.ControllerClientBuilder, stop <-chan struct{}) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) ListClusters(ctx context.Context) ([]string, error) {
 | 
			
		||||
// ListClusters lists the names of the available clusters.
 | 
			
		||||
func (f *Cloud) ListClusters(ctx context.Context) ([]string, error) {
 | 
			
		||||
	return f.ClusterList, f.Err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) Master(ctx context.Context, name string) (string, error) {
 | 
			
		||||
// Master gets back the address (either DNS name or IP address) of the master node for the cluster.
 | 
			
		||||
func (f *Cloud) Master(ctx context.Context, name string) (string, error) {
 | 
			
		||||
	return f.MasterName, f.Err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) Clusters() (cloudprovider.Clusters, bool) {
 | 
			
		||||
// Clusters returns a clusters interface.  Also returns true if the interface is supported, false otherwise.
 | 
			
		||||
func (f *Cloud) Clusters() (cloudprovider.Clusters, bool) {
 | 
			
		||||
	return f, true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ProviderName returns the cloud provider ID.
 | 
			
		||||
func (f *FakeCloud) ProviderName() string {
 | 
			
		||||
func (f *Cloud) ProviderName() string {
 | 
			
		||||
	if f.Provider == "" {
 | 
			
		||||
		return defaultProviderName
 | 
			
		||||
	}
 | 
			
		||||
@@ -129,33 +134,35 @@ func (f *FakeCloud) ProviderName() string {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// HasClusterID returns true if the cluster has a clusterID
 | 
			
		||||
func (f *FakeCloud) HasClusterID() bool {
 | 
			
		||||
func (f *Cloud) HasClusterID() bool {
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LoadBalancer returns a fake implementation of LoadBalancer.
 | 
			
		||||
// Actually it just returns f itself.
 | 
			
		||||
func (f *FakeCloud) LoadBalancer() (cloudprovider.LoadBalancer, bool) {
 | 
			
		||||
func (f *Cloud) LoadBalancer() (cloudprovider.LoadBalancer, bool) {
 | 
			
		||||
	return f, true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Instances returns a fake implementation of Instances.
 | 
			
		||||
//
 | 
			
		||||
// Actually it just returns f itself.
 | 
			
		||||
func (f *FakeCloud) Instances() (cloudprovider.Instances, bool) {
 | 
			
		||||
func (f *Cloud) Instances() (cloudprovider.Instances, bool) {
 | 
			
		||||
	return f, true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) Zones() (cloudprovider.Zones, bool) {
 | 
			
		||||
// Zones returns a zones interface. Also returns true if the interface is supported, false otherwise.
 | 
			
		||||
func (f *Cloud) Zones() (cloudprovider.Zones, bool) {
 | 
			
		||||
	return f, true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) Routes() (cloudprovider.Routes, bool) {
 | 
			
		||||
// Routes returns a routes interface along with whether the interface is supported.
 | 
			
		||||
func (f *Cloud) Routes() (cloudprovider.Routes, bool) {
 | 
			
		||||
	return f, true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetLoadBalancer is a stub implementation of LoadBalancer.GetLoadBalancer.
 | 
			
		||||
func (f *FakeCloud) GetLoadBalancer(ctx context.Context, clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error) {
 | 
			
		||||
func (f *Cloud) GetLoadBalancer(ctx context.Context, clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error) {
 | 
			
		||||
	status := &v1.LoadBalancerStatus{}
 | 
			
		||||
	status.Ingress = []v1.LoadBalancerIngress{{IP: f.ExternalIP.String()}}
 | 
			
		||||
 | 
			
		||||
@@ -163,17 +170,17 @@ func (f *FakeCloud) GetLoadBalancer(ctx context.Context, clusterName string, ser
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetLoadBalancerName is a stub implementation of LoadBalancer.GetLoadBalancerName.
 | 
			
		||||
func (f *FakeCloud) GetLoadBalancerName(ctx context.Context, clusterName string, service *v1.Service) string {
 | 
			
		||||
func (f *Cloud) GetLoadBalancerName(ctx context.Context, clusterName string, service *v1.Service) string {
 | 
			
		||||
	// TODO: replace DefaultLoadBalancerName to generate more meaningful loadbalancer names.
 | 
			
		||||
	return cloudprovider.DefaultLoadBalancerName(service)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EnsureLoadBalancer is a test-spy implementation of LoadBalancer.EnsureLoadBalancer.
 | 
			
		||||
// It adds an entry "create" into the internal method call record.
 | 
			
		||||
func (f *FakeCloud) EnsureLoadBalancer(ctx context.Context, clusterName string, service *v1.Service, nodes []*v1.Node) (*v1.LoadBalancerStatus, error) {
 | 
			
		||||
func (f *Cloud) EnsureLoadBalancer(ctx context.Context, clusterName string, service *v1.Service, nodes []*v1.Node) (*v1.LoadBalancerStatus, error) {
 | 
			
		||||
	f.addCall("create")
 | 
			
		||||
	if f.Balancers == nil {
 | 
			
		||||
		f.Balancers = make(map[string]FakeBalancer)
 | 
			
		||||
		f.Balancers = make(map[string]Balancer)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	name := f.GetLoadBalancerName(ctx, clusterName, service)
 | 
			
		||||
@@ -185,7 +192,7 @@ func (f *FakeCloud) EnsureLoadBalancer(ctx context.Context, clusterName string,
 | 
			
		||||
	}
 | 
			
		||||
	region := zone.Region
 | 
			
		||||
 | 
			
		||||
	f.Balancers[name] = FakeBalancer{name, region, spec.LoadBalancerIP, spec.Ports, nodes}
 | 
			
		||||
	f.Balancers[name] = Balancer{name, region, spec.LoadBalancerIP, spec.Ports, nodes}
 | 
			
		||||
 | 
			
		||||
	status := &v1.LoadBalancerStatus{}
 | 
			
		||||
	status.Ingress = []v1.LoadBalancerIngress{{IP: f.ExternalIP.String()}}
 | 
			
		||||
@@ -195,38 +202,42 @@ func (f *FakeCloud) EnsureLoadBalancer(ctx context.Context, clusterName string,
 | 
			
		||||
 | 
			
		||||
// UpdateLoadBalancer is a test-spy implementation of LoadBalancer.UpdateLoadBalancer.
 | 
			
		||||
// It adds an entry "update" into the internal method call record.
 | 
			
		||||
func (f *FakeCloud) UpdateLoadBalancer(ctx context.Context, clusterName string, service *v1.Service, nodes []*v1.Node) error {
 | 
			
		||||
func (f *Cloud) UpdateLoadBalancer(ctx context.Context, clusterName string, service *v1.Service, nodes []*v1.Node) error {
 | 
			
		||||
	f.addCall("update")
 | 
			
		||||
	f.UpdateCalls = append(f.UpdateCalls, FakeUpdateBalancerCall{service, nodes})
 | 
			
		||||
	f.UpdateCalls = append(f.UpdateCalls, UpdateBalancerCall{service, nodes})
 | 
			
		||||
	return f.Err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EnsureLoadBalancerDeleted is a test-spy implementation of LoadBalancer.EnsureLoadBalancerDeleted.
 | 
			
		||||
// It adds an entry "delete" into the internal method call record.
 | 
			
		||||
func (f *FakeCloud) EnsureLoadBalancerDeleted(ctx context.Context, clusterName string, service *v1.Service) error {
 | 
			
		||||
func (f *Cloud) EnsureLoadBalancerDeleted(ctx context.Context, clusterName string, service *v1.Service) error {
 | 
			
		||||
	f.addCall("delete")
 | 
			
		||||
	return f.Err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) AddSSHKeyToAllInstances(ctx context.Context, user string, keyData []byte) error {
 | 
			
		||||
// AddSSHKeyToAllInstances adds an SSH public key as a legal identity for all instances
 | 
			
		||||
// expected format for the key is standard ssh-keygen format: <protocol> <blob>
 | 
			
		||||
func (f *Cloud) AddSSHKeyToAllInstances(ctx context.Context, user string, keyData []byte) error {
 | 
			
		||||
	return cloudprovider.NotImplemented
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Implementation of Instances.CurrentNodeName
 | 
			
		||||
func (f *FakeCloud) CurrentNodeName(ctx context.Context, hostname string) (types.NodeName, error) {
 | 
			
		||||
// CurrentNodeName returns the name of the node we are currently running on
 | 
			
		||||
// On most clouds (e.g. GCE) this is the hostname, so we provide the hostname
 | 
			
		||||
func (f *Cloud) CurrentNodeName(ctx context.Context, hostname string) (types.NodeName, error) {
 | 
			
		||||
	return types.NodeName(hostname), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NodeAddresses is a test-spy implementation of Instances.NodeAddresses.
 | 
			
		||||
// It adds an entry "node-addresses" into the internal method call record.
 | 
			
		||||
func (f *FakeCloud) NodeAddresses(ctx context.Context, instance types.NodeName) ([]v1.NodeAddress, error) {
 | 
			
		||||
func (f *Cloud) NodeAddresses(ctx context.Context, instance types.NodeName) ([]v1.NodeAddress, error) {
 | 
			
		||||
	f.addCall("node-addresses")
 | 
			
		||||
	f.addressesMux.Lock()
 | 
			
		||||
	defer f.addressesMux.Unlock()
 | 
			
		||||
	return f.Addresses, f.Err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) SetNodeAddresses(nodeAddresses []v1.NodeAddress) {
 | 
			
		||||
// SetNodeAddresses sets the addresses for a node
 | 
			
		||||
func (f *Cloud) SetNodeAddresses(nodeAddresses []v1.NodeAddress) {
 | 
			
		||||
	f.addressesMux.Lock()
 | 
			
		||||
	defer f.addressesMux.Unlock()
 | 
			
		||||
	f.Addresses = nodeAddresses
 | 
			
		||||
@@ -234,7 +245,7 @@ func (f *FakeCloud) SetNodeAddresses(nodeAddresses []v1.NodeAddress) {
 | 
			
		||||
 | 
			
		||||
// NodeAddressesByProviderID is a test-spy implementation of Instances.NodeAddressesByProviderID.
 | 
			
		||||
// It adds an entry "node-addresses-by-provider-id" into the internal method call record.
 | 
			
		||||
func (f *FakeCloud) NodeAddressesByProviderID(ctx context.Context, providerID string) ([]v1.NodeAddress, error) {
 | 
			
		||||
func (f *Cloud) NodeAddressesByProviderID(ctx context.Context, providerID string) ([]v1.NodeAddress, error) {
 | 
			
		||||
	f.addCall("node-addresses-by-provider-id")
 | 
			
		||||
	f.addressesMux.Lock()
 | 
			
		||||
	defer f.addressesMux.Unlock()
 | 
			
		||||
@@ -242,39 +253,39 @@ func (f *FakeCloud) NodeAddressesByProviderID(ctx context.Context, providerID st
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// InstanceID returns the cloud provider ID of the node with the specified Name.
 | 
			
		||||
func (f *FakeCloud) InstanceID(ctx context.Context, nodeName types.NodeName) (string, error) {
 | 
			
		||||
func (f *Cloud) InstanceID(ctx context.Context, nodeName types.NodeName) (string, error) {
 | 
			
		||||
	f.addCall("instance-id")
 | 
			
		||||
	return f.ExtID[nodeName], nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// InstanceType returns the type of the specified instance.
 | 
			
		||||
func (f *FakeCloud) InstanceType(ctx context.Context, instance types.NodeName) (string, error) {
 | 
			
		||||
func (f *Cloud) InstanceType(ctx context.Context, instance types.NodeName) (string, error) {
 | 
			
		||||
	f.addCall("instance-type")
 | 
			
		||||
	return f.InstanceTypes[instance], nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// InstanceTypeByProviderID returns the type of the specified instance.
 | 
			
		||||
func (f *FakeCloud) InstanceTypeByProviderID(ctx context.Context, providerID string) (string, error) {
 | 
			
		||||
func (f *Cloud) InstanceTypeByProviderID(ctx context.Context, providerID string) (string, error) {
 | 
			
		||||
	f.addCall("instance-type-by-provider-id")
 | 
			
		||||
	return f.InstanceTypes[types.NodeName(providerID)], nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running.
 | 
			
		||||
// If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.
 | 
			
		||||
func (f *FakeCloud) InstanceExistsByProviderID(ctx context.Context, providerID string) (bool, error) {
 | 
			
		||||
func (f *Cloud) InstanceExistsByProviderID(ctx context.Context, providerID string) (bool, error) {
 | 
			
		||||
	f.addCall("instance-exists-by-provider-id")
 | 
			
		||||
	return f.ExistsByProviderID, f.ErrByProviderID
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// InstanceShutdownByProviderID returns true if the instances is in safe state to detach volumes
 | 
			
		||||
func (f *FakeCloud) InstanceShutdownByProviderID(ctx context.Context, providerID string) (bool, error) {
 | 
			
		||||
func (f *Cloud) InstanceShutdownByProviderID(ctx context.Context, providerID string) (bool, error) {
 | 
			
		||||
	f.addCall("instance-shutdown-by-provider-id")
 | 
			
		||||
	return f.NodeShutdown, f.ErrShutdownByProviderID
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// List is a test-spy implementation of Instances.List.
 | 
			
		||||
// It adds an entry "list" into the internal method call record.
 | 
			
		||||
func (f *FakeCloud) List(filter string) ([]types.NodeName, error) {
 | 
			
		||||
func (f *Cloud) List(filter string) ([]types.NodeName, error) {
 | 
			
		||||
	f.addCall("list")
 | 
			
		||||
	result := []types.NodeName{}
 | 
			
		||||
	for _, machine := range f.Machines {
 | 
			
		||||
@@ -285,7 +296,11 @@ func (f *FakeCloud) List(filter string) ([]types.NodeName, error) {
 | 
			
		||||
	return result, f.Err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) GetZone(ctx context.Context) (cloudprovider.Zone, error) {
 | 
			
		||||
// GetZone returns the Zone containing the current failure zone and locality region that the program is running in
 | 
			
		||||
// In most cases, this method is called from the kubelet querying a local metadata service to acquire its zone.
 | 
			
		||||
// For the case of external cloud providers, use GetZoneByProviderID or GetZoneByNodeName since GetZone
 | 
			
		||||
// can no longer be called from the kubelets.
 | 
			
		||||
func (f *Cloud) GetZone(ctx context.Context) (cloudprovider.Zone, error) {
 | 
			
		||||
	f.addCall("get-zone")
 | 
			
		||||
	return f.Zone, f.Err
 | 
			
		||||
}
 | 
			
		||||
@@ -293,7 +308,7 @@ func (f *FakeCloud) GetZone(ctx context.Context) (cloudprovider.Zone, error) {
 | 
			
		||||
// GetZoneByProviderID implements Zones.GetZoneByProviderID
 | 
			
		||||
// This is particularly useful in external cloud providers where the kubelet
 | 
			
		||||
// does not initialize node data.
 | 
			
		||||
func (f *FakeCloud) GetZoneByProviderID(ctx context.Context, providerID string) (cloudprovider.Zone, error) {
 | 
			
		||||
func (f *Cloud) GetZoneByProviderID(ctx context.Context, providerID string) (cloudprovider.Zone, error) {
 | 
			
		||||
	f.addCall("get-zone-by-provider-id")
 | 
			
		||||
	return f.Zone, f.Err
 | 
			
		||||
}
 | 
			
		||||
@@ -301,12 +316,13 @@ func (f *FakeCloud) GetZoneByProviderID(ctx context.Context, providerID string)
 | 
			
		||||
// GetZoneByNodeName implements Zones.GetZoneByNodeName
 | 
			
		||||
// This is particularly useful in external cloud providers where the kubelet
 | 
			
		||||
// does not initialize node data.
 | 
			
		||||
func (f *FakeCloud) GetZoneByNodeName(ctx context.Context, nodeName types.NodeName) (cloudprovider.Zone, error) {
 | 
			
		||||
func (f *Cloud) GetZoneByNodeName(ctx context.Context, nodeName types.NodeName) (cloudprovider.Zone, error) {
 | 
			
		||||
	f.addCall("get-zone-by-node-name")
 | 
			
		||||
	return f.Zone, f.Err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) ListRoutes(ctx context.Context, clusterName string) ([]*cloudprovider.Route, error) {
 | 
			
		||||
// ListRoutes lists all managed routes that belong to the specified clusterName
 | 
			
		||||
func (f *Cloud) ListRoutes(ctx context.Context, clusterName string) ([]*cloudprovider.Route, error) {
 | 
			
		||||
	f.Lock.Lock()
 | 
			
		||||
	defer f.Lock.Unlock()
 | 
			
		||||
	f.addCall("list-routes")
 | 
			
		||||
@@ -320,7 +336,10 @@ func (f *FakeCloud) ListRoutes(ctx context.Context, clusterName string) ([]*clou
 | 
			
		||||
	return routes, f.Err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) CreateRoute(ctx context.Context, clusterName string, nameHint string, route *cloudprovider.Route) error {
 | 
			
		||||
// CreateRoute creates the described managed route
 | 
			
		||||
// route.Name will be ignored, although the cloud-provider may use nameHint
 | 
			
		||||
// to create a more user-meaningful name.
 | 
			
		||||
func (f *Cloud) CreateRoute(ctx context.Context, clusterName string, nameHint string, route *cloudprovider.Route) error {
 | 
			
		||||
	f.Lock.Lock()
 | 
			
		||||
	defer f.Lock.Unlock()
 | 
			
		||||
	f.addCall("create-route")
 | 
			
		||||
@@ -329,7 +348,7 @@ func (f *FakeCloud) CreateRoute(ctx context.Context, clusterName string, nameHin
 | 
			
		||||
		f.Err = fmt.Errorf("route %q already exists", name)
 | 
			
		||||
		return f.Err
 | 
			
		||||
	}
 | 
			
		||||
	fakeRoute := FakeRoute{}
 | 
			
		||||
	fakeRoute := Route{}
 | 
			
		||||
	fakeRoute.Route = *route
 | 
			
		||||
	fakeRoute.Route.Name = name
 | 
			
		||||
	fakeRoute.ClusterName = clusterName
 | 
			
		||||
@@ -337,7 +356,9 @@ func (f *FakeCloud) CreateRoute(ctx context.Context, clusterName string, nameHin
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *FakeCloud) DeleteRoute(ctx context.Context, clusterName string, route *cloudprovider.Route) error {
 | 
			
		||||
// DeleteRoute deletes the specified managed route
 | 
			
		||||
// Route should be as returned by ListRoutes
 | 
			
		||||
func (f *Cloud) DeleteRoute(ctx context.Context, clusterName string, route *cloudprovider.Route) error {
 | 
			
		||||
	f.Lock.Lock()
 | 
			
		||||
	defer f.Lock.Unlock()
 | 
			
		||||
	f.addCall("delete-route")
 | 
			
		||||
@@ -350,8 +371,9 @@ func (f *FakeCloud) DeleteRoute(ctx context.Context, clusterName string, route *
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *FakeCloud) GetLabelsForVolume(ctx context.Context, pv *v1.PersistentVolume) (map[string]string, error) {
 | 
			
		||||
	if val, ok := c.VolumeLabelMap[pv.Name]; ok {
 | 
			
		||||
// GetLabelsForVolume returns the labels for a PersistentVolume
 | 
			
		||||
func (f *Cloud) GetLabelsForVolume(ctx context.Context, pv *v1.PersistentVolume) (map[string]string, error) {
 | 
			
		||||
	if val, ok := f.VolumeLabelMap[pv.Name]; ok {
 | 
			
		||||
		return val, nil
 | 
			
		||||
	}
 | 
			
		||||
	return nil, fmt.Errorf("label not found for volume")
 | 
			
		||||
@@ -21,10 +21,10 @@ go_test(
 | 
			
		||||
        "//cmd/kube-apiserver/app/testing:go_default_library",
 | 
			
		||||
        "//cmd/kube-controller-manager/app/testing:go_default_library",
 | 
			
		||||
        "//cmd/kube-scheduler/app/testing:go_default_library",
 | 
			
		||||
        "//pkg/cloudprovider/providers/fake:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apiserver/pkg/server:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apiserver/pkg/server/options:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/fake:go_default_library",
 | 
			
		||||
        "//test/integration/framework:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -31,11 +31,11 @@ import (
 | 
			
		||||
	"k8s.io/apiserver/pkg/server"
 | 
			
		||||
	"k8s.io/apiserver/pkg/server/options"
 | 
			
		||||
	"k8s.io/cloud-provider"
 | 
			
		||||
	"k8s.io/cloud-provider/fake"
 | 
			
		||||
	cloudctrlmgrtesting "k8s.io/kubernetes/cmd/cloud-controller-manager/app/testing"
 | 
			
		||||
	kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
 | 
			
		||||
	kubectrlmgrtesting "k8s.io/kubernetes/cmd/kube-controller-manager/app/testing"
 | 
			
		||||
	kubeschedulertesting "k8s.io/kubernetes/cmd/kube-scheduler/app/testing"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
	"k8s.io/kubernetes/test/integration/framework"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -321,5 +321,5 @@ func intPtr(x int) *int {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func fakeCloudProviderFactory(io.Reader) (cloudprovider.Interface, error) {
 | 
			
		||||
	return &fake.FakeCloud{}, nil
 | 
			
		||||
	return &fake.Cloud{}, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,6 @@ go_test(
 | 
			
		||||
    tags = ["integration"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/api/legacyscheme:go_default_library",
 | 
			
		||||
        "//pkg/cloudprovider/providers/fake:go_default_library",
 | 
			
		||||
        "//pkg/controller/volume/attachdetach:go_default_library",
 | 
			
		||||
        "//pkg/controller/volume/attachdetach/cache:go_default_library",
 | 
			
		||||
        "//pkg/controller/volume/persistentvolume:go_default_library",
 | 
			
		||||
@@ -38,6 +37,7 @@ go_test(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/rest:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/cache:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/reference:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/fake:go_default_library",
 | 
			
		||||
        "//test/integration/framework:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,7 @@ import (
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	restclient "k8s.io/client-go/rest"
 | 
			
		||||
	"k8s.io/client-go/tools/cache"
 | 
			
		||||
	fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
	fakecloud "k8s.io/cloud-provider/fake"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller/volume/attachdetach"
 | 
			
		||||
	volumecache "k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller/volume/persistentvolume"
 | 
			
		||||
@@ -422,7 +422,7 @@ func createAdClients(ns *v1.Namespace, t *testing.T, server *httptest.Server, sy
 | 
			
		||||
		Detachers:              nil,
 | 
			
		||||
	}
 | 
			
		||||
	plugins := []volume.VolumePlugin{plugin}
 | 
			
		||||
	cloud := &fakecloud.FakeCloud{}
 | 
			
		||||
	cloud := &fakecloud.Cloud{}
 | 
			
		||||
	informers := clientgoinformers.NewSharedInformerFactory(testClient, resyncPeriod)
 | 
			
		||||
	ctrl, err := attachdetach.NewAttachDetachController(
 | 
			
		||||
		testClient,
 | 
			
		||||
 
 | 
			
		||||
@@ -34,8 +34,8 @@ import (
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	restclient "k8s.io/client-go/rest"
 | 
			
		||||
	ref "k8s.io/client-go/tools/reference"
 | 
			
		||||
	fakecloud "k8s.io/cloud-provider/fake"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/legacyscheme"
 | 
			
		||||
	fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
 | 
			
		||||
	persistentvolumecontroller "k8s.io/kubernetes/pkg/controller/volume/persistentvolume"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/volume"
 | 
			
		||||
	volumetest "k8s.io/kubernetes/pkg/volume/testing"
 | 
			
		||||
@@ -1123,7 +1123,7 @@ func createClients(ns *v1.Namespace, t *testing.T, s *httptest.Server, syncPerio
 | 
			
		||||
		Detachers:              nil,
 | 
			
		||||
	}
 | 
			
		||||
	plugins := []volume.VolumePlugin{plugin}
 | 
			
		||||
	cloud := &fakecloud.FakeCloud{}
 | 
			
		||||
	cloud := &fakecloud.Cloud{}
 | 
			
		||||
	informers := informers.NewSharedInformerFactory(testClient, getSyncPeriod(syncPeriod))
 | 
			
		||||
	ctrl, err := persistentvolumecontroller.NewController(
 | 
			
		||||
		persistentvolumecontroller.ControllerParameters{
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							@@ -1536,6 +1536,7 @@ k8s.io/client-go/util/testing
 | 
			
		||||
k8s.io/client-go/util/workqueue
 | 
			
		||||
# k8s.io/cloud-provider v0.0.0 => ./staging/src/k8s.io/cloud-provider
 | 
			
		||||
k8s.io/cloud-provider
 | 
			
		||||
k8s.io/cloud-provider/fake
 | 
			
		||||
k8s.io/cloud-provider/node/helpers
 | 
			
		||||
k8s.io/cloud-provider/service/helpers
 | 
			
		||||
k8s.io/cloud-provider/volume
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user