Skip to content

Commit 8df1ad2

Browse files
committed
handle 404 error for a nice output
1 parent 9dcab03 commit 8df1ad2

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

internal/cmd/beta/sfs/project-lock/describe/describe.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@ package describe
33
import (
44
"context"
55
"fmt"
6+
"net/http"
7+
8+
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
69

710
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
811
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
912
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
1013
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1114
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
15+
"github.com/stackitcloud/stackit-cli/internal/pkg/projectname"
1216
"github.com/stackitcloud/stackit-cli/internal/pkg/services/sfs/client"
1317
"github.com/stackitcloud/stackit-cli/internal/pkg/tables"
1418
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
@@ -46,10 +50,23 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
4650
return err
4751
}
4852

53+
projectLabel, err := projectname.GetProjectName(ctx, params.Printer, params.CliVersion, cmd)
54+
if err != nil {
55+
params.Printer.Debug(print.ErrorLevel, "get project name: %v", err)
56+
projectLabel = model.ProjectId
57+
} else if projectLabel == "" {
58+
projectLabel = model.ProjectId
59+
}
60+
4961
// Call API
5062
req := buildRequest(ctx, model, apiClient)
5163
resp, err := req.Execute()
5264
if err != nil {
65+
oapiErr, _ := err.(*oapierror.GenericOpenAPIError) //nolint:errorlint //complaining that error.As should be used to catch wrapped errors, but this error should not be wrapped
66+
if oapiErr.StatusCode == http.StatusNotFound {
67+
fmt.Printf("No active lock found for project %s\n", projectLabel)
68+
return nil
69+
}
5370
return fmt.Errorf("get lock status for project: %w", err)
5471
}
5572

0 commit comments

Comments
 (0)