mirror of
https://github.com/rancher/steve.git
synced 2025-07-15 07:32:17 +00:00
59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
package helm
|
|
|
|
import (
|
|
"github.com/rancher/apiserver/pkg/types"
|
|
"github.com/rancher/steve/pkg/attributes"
|
|
"github.com/rancher/steve/pkg/schema/converter"
|
|
"github.com/sirupsen/logrus"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
)
|
|
|
|
func DropHelmData(request *types.APIRequest, resource *types.RawResource) {
|
|
data := resource.APIObject.Data()
|
|
if data.String("metadata", "labels", "owner") == "helm" ||
|
|
data.String("metadata", "labels", "OWNER") == "TILLER" {
|
|
if data.String("data", "release") != "" {
|
|
delete(data.Map("data"), "release")
|
|
}
|
|
}
|
|
}
|
|
|
|
func FormatRelease(request *types.APIRequest, resource *types.RawResource) {
|
|
obj, ok := resource.APIObject.Object.(runtime.Object)
|
|
if !ok {
|
|
return
|
|
}
|
|
|
|
release, err := ToRelease(obj, SchemeBasedNamespaceLookup(request.Schemas))
|
|
if err == ErrNotHelmRelease {
|
|
return
|
|
} else if err != nil {
|
|
logrus.Errorf("failed to render helm release: %v", err)
|
|
return
|
|
}
|
|
|
|
var (
|
|
data = resource.APIObject.Data()
|
|
namespace = data.String("metadata", "namespace")
|
|
name = data.String("metadata", "name")
|
|
)
|
|
|
|
switch data.String("kind") {
|
|
case "Secret":
|
|
resource.ID = namespace + "/s:" + name
|
|
case "ConfigMap":
|
|
resource.ID = namespace + "/c:" + name
|
|
}
|
|
|
|
resource.Links["self"] = request.URLBuilder.ResourceLink(request.Schema, resource.ID)
|
|
resource.APIObject.Object = release
|
|
}
|
|
|
|
func SchemeBasedNamespaceLookup(schemas *types.APISchemas) IsNamespaced {
|
|
return func(gvk schema.GroupVersionKind) bool {
|
|
schema := schemas.LookupSchema(converter.GVKToSchemaID(gvk))
|
|
return schema != nil && attributes.Namespaced(schema)
|
|
}
|
|
}
|