Skip to content

Commit

Permalink
fix vd_controller
Browse files Browse the repository at this point in the history
Signed-off-by: dmitry.lopatin <dmitry.lopatin@flant.com>
  • Loading branch information
LopatinDmitr committed Oct 22, 2024
1 parent 0e0497e commit 5973f51
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,16 @@ func (ds HTTPDataSource) Sync(ctx context.Context, vd *virtv2.VirtualDisk) (bool
return false, err
}

clusterDefaultSC, err := ds.diskService.GetDefaultStorageClass(ctx)
if updated, err := setConditionFromStorageClassError(err, vd, &condition); err != nil || updated {
return false, err
}

sc, err := ds.storageClassService.GetStorageClass(vd.Spec.PersistentVolumeClaim.StorageClass, clusterDefaultSC.Name)
if updated, err := setConditionFromStorageClassError(err, vd, &condition); err != nil || updated {
return false, err
}

switch {
case isDiskProvisioningFinished(condition):
log.Debug("Disk provisioning finished: clean up")
Expand Down Expand Up @@ -200,16 +210,6 @@ func (ds HTTPDataSource) Sync(ctx context.Context, vd *virtv2.VirtualDisk) (bool

source := ds.getSource(supgen, ds.statService.GetDVCRImageName(pod))

clusterDefaultSC, err := ds.diskService.GetDefaultStorageClass(ctx)
if updated, err := setPhaseConditionFromStorageError(err, vd, &condition); err != nil || updated {
return false, err
}

sc, err := ds.storageClassService.GetStorageClass(vd.Spec.PersistentVolumeClaim.StorageClass, clusterDefaultSC.Name)
if updated, err := setPhaseConditionFromStorageError(err, vd, &condition); err != nil || updated {
return false, err
}

err = ds.diskService.Start(ctx, diskSize, sc, source, vd, supgen)
if updated, err := setPhaseConditionFromStorageError(err, vd, &condition); err != nil || updated {
return false, err
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,25 @@ type CheckImportProcess interface {
CheckImportProcess(ctx context.Context, dv *cdiv1.DataVolume, pvc *corev1.PersistentVolumeClaim) error
}

func setConditionFromStorageClassError(err error, vd *virtv2.VirtualDisk, condition *metav1.Condition) (bool, error) {
switch {
case err == nil:
return false, nil
case errors.Is(err, service.ErrDefaultStorageClassNotFound):
condition.Status = metav1.ConditionFalse
condition.Reason = vdcondition.ProvisioningFailed
condition.Message = "Default StorageClass not found in the cluster: please provide a StorageClass name or set a default StorageClass."
return true, nil
case errors.Is(err, service.ErrStorageClassNotAvailable):
condition.Status = metav1.ConditionFalse
condition.Reason = vdcondition.ProvisioningFailed
condition.Message = "Provided StorageClass not available."
return true, nil
default:
return false, err
}
}

func setPhaseConditionFromStorageError(err error, vd *virtv2.VirtualDisk, condition *metav1.Condition) (bool, error) {
switch {
case err == nil:
Expand Down

0 comments on commit 5973f51

Please sign in to comment.