mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Fix error handling logic in vsphere volume provisioning
This commit is contained in:
parent
72be2f40b7
commit
1e5dc21c38
@ -1233,6 +1233,10 @@ func (vs *VSphere) CreateVolume(volumeOptions *vclib.VolumeOptions) (canonicalVo
|
|||||||
// If zone is specified, first get the datastores in the zone.
|
// If zone is specified, first get the datastores in the zone.
|
||||||
dsList, err = getDatastoresForZone(ctx, dc, vs.nodeManager, volumeOptions.Zone)
|
dsList, err = getDatastoresForZone(ctx, dc, vs.nodeManager, volumeOptions.Zone)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("Failed to find a shared datastore matching zone %s. err: %+v", volumeOptions.Zone, err)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
// If unable to get any datastore, fail the operation.
|
// If unable to get any datastore, fail the operation.
|
||||||
if len(dsList) == 0 {
|
if len(dsList) == 0 {
|
||||||
err := fmt.Errorf("Failed to find a shared datastore matching zone %s", volumeOptions.Zone)
|
err := fmt.Errorf("Failed to find a shared datastore matching zone %s", volumeOptions.Zone)
|
||||||
@ -1256,6 +1260,10 @@ func (vs *VSphere) CreateVolume(volumeOptions *vclib.VolumeOptions) (canonicalVo
|
|||||||
klog.V(4).Infof("Specified zone : %s", volumeOptions.Zone)
|
klog.V(4).Infof("Specified zone : %s", volumeOptions.Zone)
|
||||||
dsList, err = getDatastoresForZone(ctx, dc, vs.nodeManager, volumeOptions.Zone)
|
dsList, err = getDatastoresForZone(ctx, dc, vs.nodeManager, volumeOptions.Zone)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("Failed to find a shared datastore matching zone %s. err: %+v", volumeOptions.Zone, err)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
// If unable to get any datastore, fail the operation
|
// If unable to get any datastore, fail the operation
|
||||||
if len(dsList) == 0 {
|
if len(dsList) == 0 {
|
||||||
err := fmt.Errorf("Failed to find a shared datastore matching zone %s", volumeOptions.Zone)
|
err := fmt.Errorf("Failed to find a shared datastore matching zone %s", volumeOptions.Zone)
|
||||||
@ -1263,9 +1271,6 @@ func (vs *VSphere) CreateVolume(volumeOptions *vclib.VolumeOptions) (canonicalVo
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
datastore, err = getMostFreeDatastoreName(ctx, nil, dsList)
|
datastore, err = getMostFreeDatastoreName(ctx, nil, dsList)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Failed to get shared datastore: %+v", err)
|
klog.Errorf("Failed to get shared datastore: %+v", err)
|
||||||
@ -1290,6 +1295,7 @@ func (vs *VSphere) CreateVolume(volumeOptions *vclib.VolumeOptions) (canonicalVo
|
|||||||
klog.V(4).Infof("Validating if datastore %s is in zone %s ", datastore, volumeOptions.Zone)
|
klog.V(4).Infof("Validating if datastore %s is in zone %s ", datastore, volumeOptions.Zone)
|
||||||
sharedDsList, err = getDatastoresForZone(ctx, dc, vs.nodeManager, volumeOptions.Zone)
|
sharedDsList, err = getDatastoresForZone(ctx, dc, vs.nodeManager, volumeOptions.Zone)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
klog.Errorf("Failed to find a shared datastore matching zone %s. err: %+v", volumeOptions.Zone, err)
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
// Prepare error msg to be used later, if required.
|
// Prepare error msg to be used later, if required.
|
||||||
|
@ -264,7 +264,11 @@ func getDatastoresForZone(ctx context.Context, dc *vclib.Datacenter, nodeManager
|
|||||||
|
|
||||||
for _, host := range hosts {
|
for _, host := range hosts {
|
||||||
var hostSystemMo mo.HostSystem
|
var hostSystemMo mo.HostSystem
|
||||||
host.Properties(ctx, host.Reference(), []string{"datastore"}, &hostSystemMo)
|
err = host.Properties(ctx, host.Reference(), []string{"datastore"}, &hostSystemMo)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("Failed to get datastore property for host %s. err : %+v", host, err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
klog.V(4).Infof("Datastores mounted on host %s : %s", host, hostSystemMo.Datastore)
|
klog.V(4).Infof("Datastores mounted on host %s : %s", host, hostSystemMo.Datastore)
|
||||||
var dsRefList []types.ManagedObjectReference
|
var dsRefList []types.ManagedObjectReference
|
||||||
@ -278,7 +282,7 @@ func getDatastoresForZone(ctx context.Context, dc *vclib.Datacenter, nodeManager
|
|||||||
err = pc.Retrieve(ctx, dsRefList, properties, &dsMoList)
|
err = pc.Retrieve(ctx, dsRefList, properties, &dsMoList)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Failed to get Datastore managed objects from datastore objects."+
|
klog.Errorf("Failed to get Datastore managed objects from datastore objects."+
|
||||||
" dsObjList: %+v, properties: %+v, err: %v", dsRefList, properties, err)
|
" dsObjList: %+v, properties: %+v, err: %+v", dsRefList, properties, err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
klog.V(9).Infof("Datastore mo details: %+v", dsMoList)
|
klog.V(9).Infof("Datastore mo details: %+v", dsMoList)
|
||||||
|
Loading…
Reference in New Issue
Block a user