Skip to content

Commit b1294cb

Browse files
committed
Make failed manifest parse be shown less breaking
Relates to #328
1 parent a0bf59e commit b1294cb

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

pkg/dashboard/handlers/helmHandlers.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
78
v1 "k8s.io/apimachinery/pkg/apis/testapigroup/v1"
89
"net/http"
910
"sort"
@@ -133,8 +134,19 @@ func (h *HelmHandler) Resources(c *gin.Context) {
133134

134135
res, err := objects.ParseManifests(rel.Orig.Manifest)
135136
if err != nil {
136-
_ = c.AbortWithError(http.StatusInternalServerError, err)
137-
return
137+
res = append(res, &v1.Carp{
138+
TypeMeta: metav1.TypeMeta{Kind: "ManifestParseError"},
139+
ObjectMeta: metav1.ObjectMeta{
140+
Name: err.Error(),
141+
},
142+
Spec: v1.CarpSpec{},
143+
Status: v1.CarpStatus{
144+
Phase: "BrokenManifest",
145+
Message: err.Error(),
146+
},
147+
})
148+
//_ = c.AbortWithError(http.StatusInternalServerError, err)
149+
//return
138150
}
139151

140152
if c.Query("health") != "" { // we need to query k8s for health status

pkg/dashboard/objects/data.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"helm.sh/helm/v3/pkg/release"
2121
v1 "k8s.io/apimachinery/pkg/apis/testapigroup/v1"
2222
"k8s.io/client-go/tools/clientcmd"
23+
//"sigs.k8s.io/yaml"
2324
)
2425

2526
type DataLayer struct {
@@ -113,20 +114,20 @@ func ParseManifests(out string) ([]*v1.Carp, error) {
113114
}
114115

115116
if err != nil {
116-
return nil, errorx.Decorate(err, "failed to parse manifest document #%d", len(res)+1)
117+
return res, errorx.Decorate(err, "failed to parse manifest document #%d", len(res)+1)
117118
}
118119

119120
// k8s libs uses only JSON tags defined, say hello to https://github.com/go-yaml/yaml/issues/424
120121
// we can juggle it
121122
jsoned, err := json.Marshal(tmp)
122123
if err != nil {
123-
return nil, err
124+
return res, err
124125
}
125126

126127
var doc v1.Carp
127128
err = json.Unmarshal(jsoned, &doc)
128129
if err != nil {
129-
return nil, err
130+
return res, err
130131
}
131132

132133
if doc.Kind == "" {

0 commit comments

Comments
 (0)