From 3a5eb118ece7dbcb5904533e16fdac49e766c7f4 Mon Sep 17 00:00:00 2001 From: Mengling Ding Date: Thu, 3 Oct 2024 13:14:50 -0500 Subject: [PATCH] feat: error handling --- pkg/api/api_default_service.go | 10 +++++++--- pkg/common/status.go | 10 +++++++++- pkg/manager/manager.go | 20 ++++++-------------- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/pkg/api/api_default_service.go b/pkg/api/api_default_service.go index a5dbf1d..e5ca9b6 100644 --- a/pkg/api/api_default_service.go +++ b/pkg/api/api_default_service.go @@ -1004,9 +1004,13 @@ func (cfm *CfmApiService) HostsRenameById(ctx context.Context, hostId string, ne } // Make sure the newHostId doesn't exist - existHost, err := manager.GetHostById(ctx, newHostId) - if existHost != nil { - return formatErrorResp(ctx, err.(*common.RequestError)) + _, exist := manager.GetHostById(ctx, newHostId) + if exist == nil { + err := common.RequestError{ + StatusCode: common.StatusHostIdDuplicate, + Err: fmt.Errorf("the new name (%s) already exists", newHostId), + } + return formatErrorResp(ctx, &err) } //Rename the cxl host with the new id diff --git a/pkg/common/status.go b/pkg/common/status.go index 674002a..3f067e6 100644 --- a/pkg/common/status.go +++ b/pkg/common/status.go @@ -61,6 +61,8 @@ const ( StatusHostResyncFailure //409 StatusApplianceRenameFailure //409 + StatusBladeRenameFailure //409 + StatusHostRenameFailure //409 StatusApplianceIdDuplicate //409 StatusBladeIdDuplicate //409 @@ -180,6 +182,10 @@ func (e StatusCodeType) String() string { return "Host Id Already Exist" case StatusApplianceRenameFailure: return "Rename Appliance Failure" + case StatusBladeRenameFailure: + return "Rename Blade Failure" + case StatusHostRenameFailure: + return "Rename Host Failure" } return "Unknown" @@ -225,7 +231,9 @@ func (e StatusCodeType) HttpStatusCode() int { StatusBladeIdDuplicate, StatusPortIdDuplicate, StatusHostIdDuplicate, - StatusApplianceRenameFailure: + StatusApplianceRenameFailure, + StatusBladeRenameFailure, + StatusHostRenameFailure: return http.StatusConflict // 409 case StatusBackendInterfaceFailure, StatusBladeCreateSessionFailure, diff --git a/pkg/manager/manager.go b/pkg/manager/manager.go index ae8ef03..dc68f8f 100644 --- a/pkg/manager/manager.go +++ b/pkg/manager/manager.go @@ -140,9 +140,7 @@ func RenameAppliance(ctx context.Context, appliance *Appliance, newApplianceId s // delete appliance and the associated blades _, err := DeleteApplianceById(ctx, appliance.Id) if err != nil { - newErr := fmt.Errorf("failed to delete appliance [%s]: %w", appliance.Id, err) - logger.Error(newErr, "failure: delete appliance by id") - return nil, &common.RequestError{StatusCode: common.StatusApplianceDeleteSessionFailure, Err: newErr} + return nil, &common.RequestError{StatusCode: common.StatusApplianceDeleteSessionFailure, Err: err} } // add appliance back with the new id @@ -151,9 +149,7 @@ func RenameAppliance(ctx context.Context, appliance *Appliance, newApplianceId s } newAppliance, err := AddAppliance(ctx, &c) if err != nil { - newErr := fmt.Errorf("failed to add appliance [%s]: %w", newApplianceId, err) - logger.Error(newErr, "failure: add appliance with new id") - return nil, &common.RequestError{StatusCode: common.StatusApplianceCreateSessionFailure, Err: newErr} + return nil, &common.RequestError{StatusCode: common.StatusApplianceCreateSessionFailure, Err: err} } var failedBladeIds []string @@ -208,16 +204,12 @@ func RenameBlade(ctx context.Context, blade *Blade, newBladeId string) (*Blade, // delete blade _, err := appliance.DeleteBladeById(ctx, blade.Id) if err != nil { - newErr := fmt.Errorf("failed to delete blade [%s]: %w", blade.Id, err) - logger.Error(newErr, "failure: delete blade by id") - return nil, &common.RequestError{StatusCode: common.StatusBladeDeleteSessionFailure, Err: newErr} + return nil, &common.RequestError{StatusCode: common.StatusBladeRenameFailure, Err: err} } // Add the balde back with the new name newBlade, err := appliance.AddBlade(ctx, c) if err != nil { - newErr := fmt.Errorf("failed to add blade [%s]: %w", newBladeId, err) - logger.Error(newErr, "failure: add blade with new id") - return nil, &common.RequestError{StatusCode: common.StatusBladeCreateSessionFailure, Err: newErr} + return nil, &common.RequestError{StatusCode: common.StatusBladeRenameFailure, Err: err} } return newBlade, nil } @@ -387,13 +379,13 @@ func RenameHost(ctx context.Context, host *Host, newHostId string) (*Host, error // delete host _, err := DeleteHostById(ctx, host.Id) if err != nil { - return nil, err.(*common.RequestError) + return nil, &common.RequestError{StatusCode: common.StatusBladeRenameFailure, Err: err} } // Add the host back with the new name newHost, err := AddHost(ctx, c) if err != nil { - return nil, err.(*common.RequestError) + return nil, &common.RequestError{StatusCode: common.StatusBladeRenameFailure, Err: err} } return newHost, nil }