From ce15129b9e10a5e4cc7c2e5c5f4e25273b33ba03 Mon Sep 17 00:00:00 2001 From: hui luo Date: Wed, 29 Aug 2018 09:39:48 -0700 Subject: [PATCH] add test to verify vsphere cloud provider report node hostname as in pull #67922 has modify vsphere cloud provider to report node hostname, this patch is to add the test for it. also fix an issue at InstanceID(), it suppose to return cloudprovider.InstanceNotFound when vm not found, after the fix, test TestInstance() can pass --- .../providers/vsphere/vsphere.go | 35 +++++-------------- .../providers/vsphere/vsphere_test.go | 10 ++++++ 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/pkg/cloudprovider/providers/vsphere/vsphere.go b/pkg/cloudprovider/providers/vsphere/vsphere.go index 5225ddd589b..abbe5d3081d 100644 --- a/pkg/cloudprovider/providers/vsphere/vsphere.go +++ b/pkg/cloudprovider/providers/vsphere/vsphere.go @@ -762,9 +762,6 @@ func (vs *VSphere) InstanceID(ctx context.Context, nodeName k8stypes.NodeName) ( } vm, err := vs.getVMFromNodeName(ctx, nodeName) if err != nil { - if err == vclib.ErrNoVMFound { - return "", cloudprovider.InstanceNotFound - } glog.Errorf("Failed to get VM object for node: %q. err: +%v", convertToString(nodeName), err) return "", err } @@ -782,9 +779,8 @@ func (vs *VSphere) InstanceID(ctx context.Context, nodeName k8stypes.NodeName) ( instanceID, err := instanceIDInternal() if err != nil { - var isManagedObjectNotFoundError bool - isManagedObjectNotFoundError, err = vs.retry(nodeName, err) - if isManagedObjectNotFoundError { + if vclib.IsManagedObjectNotFoundError(err) { + err = vs.nodeManager.RediscoverNode(nodeName) if err == nil { glog.V(4).Infof("InstanceID: Found node %q", convertToString(nodeName)) instanceID, err = instanceIDInternal() @@ -871,9 +867,8 @@ func (vs *VSphere) AttachDisk(vmDiskPath string, storagePolicyName string, nodeN requestTime := time.Now() diskUUID, err = attachDiskInternal(vmDiskPath, storagePolicyName, nodeName) if err != nil { - var isManagedObjectNotFoundError bool - isManagedObjectNotFoundError, err = vs.retry(nodeName, err) - if isManagedObjectNotFoundError { + if vclib.IsManagedObjectNotFoundError(err) { + err = vs.nodeManager.RediscoverNode(nodeName) if err == nil { glog.V(4).Infof("AttachDisk: Found node %q", convertToString(nodeName)) diskUUID, err = attachDiskInternal(vmDiskPath, storagePolicyName, nodeName) @@ -886,18 +881,6 @@ func (vs *VSphere) AttachDisk(vmDiskPath string, storagePolicyName string, nodeN return diskUUID, err } -func (vs *VSphere) retry(nodeName k8stypes.NodeName, err error) (bool, error) { - isManagedObjectNotFoundError := false - if err != nil { - if vclib.IsManagedObjectNotFoundError(err) { - isManagedObjectNotFoundError = true - glog.V(4).Infof("error %q ManagedObjectNotFound for node %q", err, convertToString(nodeName)) - err = vs.nodeManager.RediscoverNode(nodeName) - } - } - return isManagedObjectNotFoundError, err -} - // DetachDisk detaches given virtual disk volume from the compute running kubelet. func (vs *VSphere) DetachDisk(volPath string, nodeName k8stypes.NodeName) error { detachDiskInternal := func(volPath string, nodeName k8stypes.NodeName) error { @@ -942,9 +925,8 @@ func (vs *VSphere) DetachDisk(volPath string, nodeName k8stypes.NodeName) error requestTime := time.Now() err := detachDiskInternal(volPath, nodeName) if err != nil { - var isManagedObjectNotFoundError bool - isManagedObjectNotFoundError, err = vs.retry(nodeName, err) - if isManagedObjectNotFoundError { + if vclib.IsManagedObjectNotFoundError(err) { + err = vs.nodeManager.RediscoverNode(nodeName) if err == nil { err = detachDiskInternal(volPath, nodeName) } @@ -1000,9 +982,8 @@ func (vs *VSphere) DiskIsAttached(volPath string, nodeName k8stypes.NodeName) (b requestTime := time.Now() isAttached, err := diskIsAttachedInternal(volPath, nodeName) if err != nil { - var isManagedObjectNotFoundError bool - isManagedObjectNotFoundError, err = vs.retry(nodeName, err) - if isManagedObjectNotFoundError { + if vclib.IsManagedObjectNotFoundError(err) { + err = vs.nodeManager.RediscoverNode(nodeName) if err == vclib.ErrNoVMFound { isAttached, err = false, nil } else if err == nil { diff --git a/pkg/cloudprovider/providers/vsphere/vsphere_test.go b/pkg/cloudprovider/providers/vsphere/vsphere_test.go index 56a29e28022..0827e82817a 100644 --- a/pkg/cloudprovider/providers/vsphere/vsphere_test.go +++ b/pkg/cloudprovider/providers/vsphere/vsphere_test.go @@ -36,6 +36,7 @@ import ( vapi "github.com/vmware/govmomi/vapi/simulator" "github.com/vmware/govmomi/vapi/tags" "github.com/vmware/govmomi/vim25/mo" + "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/rand" "k8s.io/kubernetes/pkg/cloudprovider" @@ -527,6 +528,15 @@ func TestInstances(t *testing.T) { if err != nil { t.Fatalf("Instances.NodeAddresses(%s) failed: %s", nodeName, err) } + found := false + for _, addr := range addrs { + if addr.Type == v1.NodeHostName { + found = true + } + } + if found == false { + t.Fatalf("NodeAddresses does not report hostname, %s %s", nodeName, addrs) + } t.Logf("Found NodeAddresses(%s) = %s\n", nodeName, addrs) }