Fix upgrade to Kubernetes v1.9.3+
This commit is contained in:
parent
d78ef491de
commit
c15336e97a
@ -20,6 +20,7 @@ go_library(
|
||||
"//pkg/cloudprovider/providers/vsphere/vclib:go_default_library",
|
||||
"//pkg/cloudprovider/providers/vsphere/vclib/diskmanagers:go_default_library",
|
||||
"//pkg/controller:go_default_library",
|
||||
"//pkg/util/version:go_default_library",
|
||||
"//vendor/github.com/golang/glog:go_default_library",
|
||||
"//vendor/github.com/vmware/govmomi/vim25:go_default_library",
|
||||
"//vendor/github.com/vmware/govmomi/vim25/mo:go_default_library",
|
||||
|
@ -76,7 +76,11 @@ func (nm *NodeManager) DiscoverNode(node *v1.Node) error {
|
||||
var globalErr *error
|
||||
|
||||
queueChannel = make(chan *VmSearch, QUEUE_SIZE)
|
||||
nodeUUID := GetUUIDFromProviderID(node.Spec.ProviderID)
|
||||
nodeUUID, err := GetNodeUUID(node)
|
||||
if err != nil {
|
||||
glog.Errorf("Node Discovery failed to get node uuid for node %s with error: %v", node.Name, err)
|
||||
return err
|
||||
}
|
||||
|
||||
glog.V(4).Infof("Discovering node %s with uuid %s", node.ObjectMeta.Name, nodeUUID)
|
||||
|
||||
|
@ -587,7 +587,8 @@ func (vs *VSphere) InstanceExistsByProviderID(ctx context.Context, providerID st
|
||||
return false, err
|
||||
}
|
||||
for _, node := range nodes {
|
||||
if node.VMUUID == GetUUIDFromProviderID(providerID) {
|
||||
// ProviderID is UUID for nodes v1.9.3+
|
||||
if node.VMUUID == GetUUIDFromProviderID(providerID) || node.NodeName == providerID {
|
||||
nodeName = node.NodeName
|
||||
break
|
||||
}
|
||||
|
@ -29,13 +29,14 @@ import (
|
||||
|
||||
"fmt"
|
||||
|
||||
"path/filepath"
|
||||
|
||||
"github.com/vmware/govmomi/vim25/mo"
|
||||
"io/ioutil"
|
||||
"k8s.io/api/core/v1"
|
||||
k8stypes "k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib"
|
||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/diskmanagers"
|
||||
"k8s.io/kubernetes/pkg/util/version"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -472,7 +473,12 @@ func (vs *VSphere) checkDiskAttached(ctx context.Context, nodes []k8stypes.NodeN
|
||||
if err != nil {
|
||||
return nodesToRetry, err
|
||||
}
|
||||
nodeUUID := strings.ToLower(GetUUIDFromProviderID(node.Spec.ProviderID))
|
||||
nodeUUID, err := GetNodeUUID(&node)
|
||||
if err != nil {
|
||||
glog.Errorf("Node Discovery failed to get node uuid for node %s with error: %v", node.Name, err)
|
||||
return nodesToRetry, err
|
||||
}
|
||||
nodeUUID = strings.ToLower(nodeUUID)
|
||||
glog.V(9).Infof("Verifying volume for node %s with nodeuuid %q: %s", nodeName, nodeUUID, vmMoMap)
|
||||
vclib.VerifyVolumePathsForVM(vmMoMap[nodeUUID], nodeVolumes[nodeName], convertToString(nodeName), attached)
|
||||
}
|
||||
@ -542,3 +548,32 @@ func GetVMUUID() (string, error) {
|
||||
func GetUUIDFromProviderID(providerID string) string {
|
||||
return strings.TrimPrefix(providerID, ProviderPrefix)
|
||||
}
|
||||
|
||||
func IsUUIDSupportedNode(node *v1.Node) (bool, error) {
|
||||
newVersion, err := version.ParseSemantic("v1.9.4")
|
||||
if err != nil {
|
||||
glog.Errorf("Failed to determine whether node %+v is old with error %v", node, err)
|
||||
return false, err
|
||||
}
|
||||
nodeVersion, err := version.ParseSemantic(node.Status.NodeInfo.KubeletVersion)
|
||||
if err != nil {
|
||||
glog.Errorf("Failed to determine whether node %+v is old with error %v", node, err)
|
||||
return false, err
|
||||
}
|
||||
if nodeVersion.LessThan(newVersion) {
|
||||
return true, nil
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
func GetNodeUUID(node *v1.Node) (string, error) {
|
||||
oldNode, err := IsUUIDSupportedNode(node)
|
||||
if err != nil {
|
||||
glog.Errorf("Failed to get node UUID for node %+v with error %v", node, err)
|
||||
return "", err
|
||||
}
|
||||
if oldNode {
|
||||
return node.Status.NodeInfo.SystemUUID, nil
|
||||
}
|
||||
return GetUUIDFromProviderID(node.Spec.ProviderID), nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user