...

Source file src/edge-infra.dev/pkg/sds/emergencyaccess/emulator/errorhandling.go

Documentation: edge-infra.dev/pkg/sds/emergencyaccess/emulator

     1  package emulator
     2  
     3  // This file contains all the api error handling functions
     4  import (
     5  	"errors"
     6  	"fmt"
     7  
     8  	"edge-infra.dev/pkg/lib/fog"
     9  	"edge-infra.dev/pkg/sds/emergencyaccess/apierror"
    10  	"edge-infra.dev/pkg/sds/lib/colors"
    11  
    12  	"github.com/go-logr/logr"
    13  )
    14  
    15  func (em Emulator) displayError(log logr.Logger, err error) {
    16  	log.Error(err, "error with last operation")
    17  	var apiErr apierror.APIError
    18  	if ok := errors.As(err, &apiErr); ok {
    19  		displayAPIErrorMessage(apiErr)
    20  		displayDetails(apiErr)
    21  		return
    22  	}
    23  	var userErr apierror.UserError
    24  	if ok := errors.As(err, &userErr); ok {
    25  		displayDetails(userErr)
    26  		return
    27  	}
    28  	// if the error is not an api error, display unknown error
    29  	fmt.Println(colors.Text("An unknown error occurred, check logs for details.", colors.FgRed))
    30  }
    31  
    32  func displayDetails(err apierror.UserError) {
    33  	if len(err.UserError()) == 0 {
    34  		return
    35  	}
    36  	fmt.Println(colors.Text("Details:", colors.FgRedBold))
    37  	for _, str := range err.UserError() {
    38  		fmt.Println(colors.Text("- %s", colors.FgRed, str))
    39  	}
    40  }
    41  
    42  func displayAPIErrorMessage(err apierror.APIError) {
    43  	fmt.Println(colors.Text("%s", colors.FgRed, err.Message()))
    44  }
    45  
    46  func (em Emulator) displaySessionError(err error) {
    47  	log := fog.FromContext(em.cls.GetSessionContext())
    48  	em.displayError(log, err)
    49  }
    50  

View as plain text