@@ -3343,14 +3343,20 @@ func (p *portworx) StartBackup(backup *storkapi.ApplicationBackup,
3343
3343
}
3344
3344
return true , nil
3345
3345
})
3346
-
3347
3346
if err != nil || cloudBackupCreateErr != nil {
3348
3347
if isCloudBackupServerBusyError (cloudBackupCreateErr ) {
3349
- return volumeInfos , & storkvolume.ErrStorageProviderBusy {Reason : cloudBackupCreateErr .Error ()}
3348
+ volumeInfo .Status = storkapi .ApplicationBackupStatusFailed
3349
+ volumeInfo .Reason = cloudBackupCreateErr .Error ()
3350
+ volumeInfos = append (volumeInfos , volumeInfo )
3351
+ continue
3350
3352
}
3351
3353
if _ , ok := cloudBackupCreateErr .(* ost_errors.ErrExists ); ! ok {
3352
- return nil , fmt .Errorf ("failed to start backup for %v (%v/%v): %v" ,
3354
+ volumeInfo .Status = storkapi .ApplicationBackupStatusFailed
3355
+ volumeInfo .Reason = fmt .Sprintf ("%v" , cloudBackupCreateErr )
3356
+ volumeInfos = append (volumeInfos , volumeInfo )
3357
+ logrus .Infof ("failed to start backup for %v (%v/%v): %v" ,
3353
3358
volume , pvc .Namespace , pvc .Name , cloudBackupCreateErr )
3359
+ continue
3354
3360
}
3355
3361
} else if err == nil {
3356
3362
// Only add volumeInfos if this was a successful backup
@@ -3371,31 +3377,53 @@ func (p *portworx) GetBackupStatus(backup *storkapi.ApplicationBackup) ([]*stork
3371
3377
volumeInfos := make ([]* storkapi.ApplicationBackupVolumeInfo , 0 )
3372
3378
for _ , vInfo := range backup .Status .Volumes {
3373
3379
if vInfo .DriverName != storkvolume .PortworxDriverName {
3380
+ volumeInfos = append (volumeInfos , vInfo )
3381
+ continue
3382
+ }
3383
+ // Skip for volumes which are in failed state as there is no need to proceed
3384
+ // further and we have to return the orginal volInfo back to caller
3385
+ if vInfo .Status == storkapi .ApplicationBackupStatusFailed {
3386
+ volumeInfos = append (volumeInfos , vInfo )
3374
3387
continue
3375
3388
}
3376
3389
token , err := p .getUserToken (vInfo .Options , vInfo .Namespace )
3377
3390
if err != nil {
3378
- return nil , fmt .Errorf ("failed to fetch portworx user token: %v" , err )
3391
+ logrus .Errorf ("failed to fetch portworx user token: %v" , err )
3392
+ vInfo .Reason = fmt .Sprintf ("failed to fetch portworx user token: %v" , err )
3393
+ vInfo .Status = storkapi .ApplicationBackupStatusFailed
3394
+ volumeInfos = append (volumeInfos , vInfo )
3395
+ continue
3379
3396
}
3380
3397
volDriver , ok := driverMap [token ]
3381
3398
if ! ok {
3382
3399
volDriver , _ , err = p .getUserVolDriverFromToken (token )
3383
3400
if err != nil {
3384
- return nil , err
3401
+ vInfo .Status = storkapi .ApplicationBackupStatusFailed
3402
+ vInfo .Reason = fmt .Sprintf ("%v" , err )
3403
+ logrus .Errorf ("%v" , err )
3404
+ volumeInfos = append (volumeInfos , vInfo )
3405
+ continue
3385
3406
}
3386
3407
driverMap [token ] = volDriver
3387
3408
}
3388
3409
3389
3410
cloudBackupClient , err := p .getCloudBackupClient ()
3390
3411
if err != nil {
3391
- return nil , err
3412
+ vInfo .Status = storkapi .ApplicationBackupStatusFailed
3413
+ vInfo .Reason = fmt .Sprintf ("%v" , err )
3414
+ volumeInfos = append (volumeInfos , vInfo )
3415
+ logrus .Errorf ("%v" , err )
3392
3416
}
3393
3417
ctx , cancel := context .WithTimeout (context .Background (), cloudBackupTimeout )
3394
3418
defer cancel ()
3395
3419
if len (token ) > 0 {
3396
3420
ctx , err = p .addTokenToContext (ctx , token )
3397
3421
if err != nil {
3398
- return nil , err
3422
+ vInfo .Status = storkapi .ApplicationBackupStatusFailed
3423
+ vInfo .Reason = fmt .Sprintf ("%v" , err )
3424
+ volumeInfos = append (volumeInfos , vInfo )
3425
+ logrus .Errorf ("%v" , err )
3426
+
3399
3427
}
3400
3428
}
3401
3429
0 commit comments