Commit ce15129b authored by hui luo's avatar hui luo

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
parent 11387279
...@@ -762,9 +762,6 @@ func (vs *VSphere) InstanceID(ctx context.Context, nodeName k8stypes.NodeName) ( ...@@ -762,9 +762,6 @@ func (vs *VSphere) InstanceID(ctx context.Context, nodeName k8stypes.NodeName) (
} }
vm, err := vs.getVMFromNodeName(ctx, nodeName) vm, err := vs.getVMFromNodeName(ctx, nodeName)
if err != nil { 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) glog.Errorf("Failed to get VM object for node: %q. err: +%v", convertToString(nodeName), err)
return "", err return "", err
} }
...@@ -782,9 +779,8 @@ func (vs *VSphere) InstanceID(ctx context.Context, nodeName k8stypes.NodeName) ( ...@@ -782,9 +779,8 @@ func (vs *VSphere) InstanceID(ctx context.Context, nodeName k8stypes.NodeName) (
instanceID, err := instanceIDInternal() instanceID, err := instanceIDInternal()
if err != nil { if err != nil {
var isManagedObjectNotFoundError bool if vclib.IsManagedObjectNotFoundError(err) {
isManagedObjectNotFoundError, err = vs.retry(nodeName, err) err = vs.nodeManager.RediscoverNode(nodeName)
if isManagedObjectNotFoundError {
if err == nil { if err == nil {
glog.V(4).Infof("InstanceID: Found node %q", convertToString(nodeName)) glog.V(4).Infof("InstanceID: Found node %q", convertToString(nodeName))
instanceID, err = instanceIDInternal() instanceID, err = instanceIDInternal()
...@@ -871,9 +867,8 @@ func (vs *VSphere) AttachDisk(vmDiskPath string, storagePolicyName string, nodeN ...@@ -871,9 +867,8 @@ func (vs *VSphere) AttachDisk(vmDiskPath string, storagePolicyName string, nodeN
requestTime := time.Now() requestTime := time.Now()
diskUUID, err = attachDiskInternal(vmDiskPath, storagePolicyName, nodeName) diskUUID, err = attachDiskInternal(vmDiskPath, storagePolicyName, nodeName)
if err != nil { if err != nil {
var isManagedObjectNotFoundError bool if vclib.IsManagedObjectNotFoundError(err) {
isManagedObjectNotFoundError, err = vs.retry(nodeName, err) err = vs.nodeManager.RediscoverNode(nodeName)
if isManagedObjectNotFoundError {
if err == nil { if err == nil {
glog.V(4).Infof("AttachDisk: Found node %q", convertToString(nodeName)) glog.V(4).Infof("AttachDisk: Found node %q", convertToString(nodeName))
diskUUID, err = attachDiskInternal(vmDiskPath, storagePolicyName, nodeName) diskUUID, err = attachDiskInternal(vmDiskPath, storagePolicyName, nodeName)
...@@ -886,18 +881,6 @@ func (vs *VSphere) AttachDisk(vmDiskPath string, storagePolicyName string, nodeN ...@@ -886,18 +881,6 @@ func (vs *VSphere) AttachDisk(vmDiskPath string, storagePolicyName string, nodeN
return diskUUID, err 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. // DetachDisk detaches given virtual disk volume from the compute running kubelet.
func (vs *VSphere) DetachDisk(volPath string, nodeName k8stypes.NodeName) error { func (vs *VSphere) DetachDisk(volPath string, nodeName k8stypes.NodeName) error {
detachDiskInternal := func(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 ...@@ -942,9 +925,8 @@ func (vs *VSphere) DetachDisk(volPath string, nodeName k8stypes.NodeName) error
requestTime := time.Now() requestTime := time.Now()
err := detachDiskInternal(volPath, nodeName) err := detachDiskInternal(volPath, nodeName)
if err != nil { if err != nil {
var isManagedObjectNotFoundError bool if vclib.IsManagedObjectNotFoundError(err) {
isManagedObjectNotFoundError, err = vs.retry(nodeName, err) err = vs.nodeManager.RediscoverNode(nodeName)
if isManagedObjectNotFoundError {
if err == nil { if err == nil {
err = detachDiskInternal(volPath, nodeName) err = detachDiskInternal(volPath, nodeName)
} }
...@@ -1000,9 +982,8 @@ func (vs *VSphere) DiskIsAttached(volPath string, nodeName k8stypes.NodeName) (b ...@@ -1000,9 +982,8 @@ func (vs *VSphere) DiskIsAttached(volPath string, nodeName k8stypes.NodeName) (b
requestTime := time.Now() requestTime := time.Now()
isAttached, err := diskIsAttachedInternal(volPath, nodeName) isAttached, err := diskIsAttachedInternal(volPath, nodeName)
if err != nil { if err != nil {
var isManagedObjectNotFoundError bool if vclib.IsManagedObjectNotFoundError(err) {
isManagedObjectNotFoundError, err = vs.retry(nodeName, err) err = vs.nodeManager.RediscoverNode(nodeName)
if isManagedObjectNotFoundError {
if err == vclib.ErrNoVMFound { if err == vclib.ErrNoVMFound {
isAttached, err = false, nil isAttached, err = false, nil
} else if err == nil { } else if err == nil {
......
...@@ -36,6 +36,7 @@ import ( ...@@ -36,6 +36,7 @@ import (
vapi "github.com/vmware/govmomi/vapi/simulator" vapi "github.com/vmware/govmomi/vapi/simulator"
"github.com/vmware/govmomi/vapi/tags" "github.com/vmware/govmomi/vapi/tags"
"github.com/vmware/govmomi/vim25/mo" "github.com/vmware/govmomi/vim25/mo"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/rand" "k8s.io/apimachinery/pkg/util/rand"
"k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/cloudprovider"
...@@ -527,6 +528,15 @@ func TestInstances(t *testing.T) { ...@@ -527,6 +528,15 @@ func TestInstances(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("Instances.NodeAddresses(%s) failed: %s", nodeName, err) 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) t.Logf("Found NodeAddresses(%s) = %s\n", nodeName, addrs)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment