mirror of https://github.com/k3s-io/k3s
Fix session out issue while creating volume and error message coming up while attaching the volume
parent
79e1da68d2
commit
94b45a9e84
|
@ -265,14 +265,33 @@ func (nm *NodeManager) GetNodeInfo(nodeName k8stypes.NodeName) (NodeInfo, error)
|
|||
return *nodeInfo, nil
|
||||
}
|
||||
|
||||
func (nm *NodeManager) GetNodeDetails() []NodeDetails {
|
||||
func (nm *NodeManager) GetNodeDetails() ([]NodeDetails, error) {
|
||||
nm.nodeInfoLock.RLock()
|
||||
defer nm.nodeInfoLock.RUnlock()
|
||||
var nodeDetails []NodeDetails
|
||||
vsphereSessionRefreshMap := make(map[string]bool)
|
||||
|
||||
// Create context
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
for nodeName, nodeInfo := range nm.nodeInfoMap {
|
||||
nodeDetails = append(nodeDetails, NodeDetails{nodeName, nodeInfo.vm})
|
||||
if vsphereSessionRefreshMap[nodeInfo.vcServer] {
|
||||
continue
|
||||
}
|
||||
vsphereInstance := nm.vsphereInstanceMap[nodeInfo.vcServer]
|
||||
if vsphereInstance == nil {
|
||||
err := fmt.Errorf("vSphereInstance for vc server %q not found while looking for vm %q", nodeInfo.vcServer, nodeInfo.vm)
|
||||
return nil, err
|
||||
}
|
||||
err := vsphereInstance.conn.Connect(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
vsphereSessionRefreshMap[nodeInfo.vcServer] = true
|
||||
}
|
||||
return nodeDetails
|
||||
return nodeDetails, nil
|
||||
}
|
||||
|
||||
func (nm *NodeManager) addNodeInfo(nodeName string, nodeInfo *NodeInfo) {
|
||||
|
|
|
@ -639,7 +639,8 @@ func (vs *VSphere) InstanceID(nodeName k8stypes.NodeName) (string, error) {
|
|||
|
||||
instanceID, err := instanceIDInternal()
|
||||
if err != nil {
|
||||
isManagedObjectNotFoundError, err := vs.retry(nodeName, err)
|
||||
var isManagedObjectNotFoundError bool
|
||||
isManagedObjectNotFoundError, err = vs.retry(nodeName, err)
|
||||
if isManagedObjectNotFoundError {
|
||||
if err == nil {
|
||||
glog.V(4).Infof("InstanceID: Found node %q", convertToString(nodeName))
|
||||
|
@ -729,14 +730,17 @@ func (vs *VSphere) AttachDisk(vmDiskPath string, storagePolicyName string, nodeN
|
|||
requestTime := time.Now()
|
||||
diskUUID, err = attachDiskInternal(vmDiskPath, storagePolicyName, nodeName)
|
||||
if err != nil {
|
||||
isManagedObjectNotFoundError, err := vs.retry(nodeName, err)
|
||||
var isManagedObjectNotFoundError bool
|
||||
isManagedObjectNotFoundError, err = vs.retry(nodeName, err)
|
||||
if isManagedObjectNotFoundError {
|
||||
if err == nil {
|
||||
glog.V(4).Infof("AttachDisk: Found node %q", convertToString(nodeName))
|
||||
diskUUID, err = attachDiskInternal(vmDiskPath, storagePolicyName, nodeName)
|
||||
glog.V(4).Infof("AttachDisk: Retry: diskUUID %s, err +%v", convertToString(nodeName), diskUUID, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
glog.V(4).Infof("AttachDisk executed for node %s and volume %s with diskUUID %s. Err: %s", convertToString(nodeName), vmDiskPath, diskUUID, err)
|
||||
vclib.RecordvSphereMetric(vclib.OperationAttachVolume, requestTime, err)
|
||||
return diskUUID, err
|
||||
}
|
||||
|
@ -792,7 +796,8 @@ func (vs *VSphere) DetachDisk(volPath string, nodeName k8stypes.NodeName) error
|
|||
requestTime := time.Now()
|
||||
err := detachDiskInternal(volPath, nodeName)
|
||||
if err != nil {
|
||||
isManagedObjectNotFoundError, err := vs.retry(nodeName, err)
|
||||
var isManagedObjectNotFoundError bool
|
||||
isManagedObjectNotFoundError, err = vs.retry(nodeName, err)
|
||||
if isManagedObjectNotFoundError {
|
||||
if err == nil {
|
||||
err = detachDiskInternal(volPath, nodeName)
|
||||
|
@ -847,7 +852,8 @@ func (vs *VSphere) DiskIsAttached(volPath string, nodeName k8stypes.NodeName) (b
|
|||
requestTime := time.Now()
|
||||
isAttached, err := diskIsAttachedInternal(volPath, nodeName)
|
||||
if err != nil {
|
||||
isManagedObjectNotFoundError, err := vs.retry(nodeName, err)
|
||||
var isManagedObjectNotFoundError bool
|
||||
isManagedObjectNotFoundError, err = vs.retry(nodeName, err)
|
||||
if isManagedObjectNotFoundError {
|
||||
if err == vclib.ErrNoVMFound {
|
||||
isAttached, err = false, nil
|
||||
|
|
|
@ -187,8 +187,13 @@ func getAccessibleDatastores(ctx context.Context, nodeVmDetail *NodeDetails, nod
|
|||
|
||||
// Get all datastores accessible for the virtual machine object.
|
||||
func getSharedDatastoresInK8SCluster(ctx context.Context, dc *vclib.Datacenter, nodeManager *NodeManager) ([]*vclib.DatastoreInfo, error) {
|
||||
nodeVmDetails := nodeManager.GetNodeDetails()
|
||||
if nodeVmDetails == nil || len(nodeVmDetails) == 0 {
|
||||
nodeVmDetails, err := nodeManager.GetNodeDetails()
|
||||
if err != nil {
|
||||
glog.Errorf("Error while obtaining Kubernetes node nodeVmDetail details. error : %+v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if len(nodeVmDetails) == 0 {
|
||||
msg := fmt.Sprintf("Kubernetes node nodeVmDetail details is empty. nodeVmDetails : %+v", nodeVmDetails)
|
||||
glog.Error(msg)
|
||||
return nil, fmt.Errorf(msg)
|
||||
|
@ -210,7 +215,7 @@ func getSharedDatastoresInK8SCluster(ctx context.Context, dc *vclib.Datacenter,
|
|||
}
|
||||
}
|
||||
glog.V(9).Infof("sharedDatastores : %+v", sharedDatastores)
|
||||
sharedDatastores, err := getDatastoresForEndpointVC(ctx, dc, sharedDatastores)
|
||||
sharedDatastores, err = getDatastoresForEndpointVC(ctx, dc, sharedDatastores)
|
||||
if err != nil {
|
||||
glog.Errorf("Failed to get shared datastores from endpoint VC. err: %+v", err)
|
||||
return nil, err
|
||||
|
|
Loading…
Reference in New Issue