29 lines
870 B
Go
29 lines
870 B
Go
package sdk
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/portainer/portainer/api/kubernetes"
|
|
"github.com/rs/zerolog/log"
|
|
"helm.sh/helm/v4/pkg/postrenderer"
|
|
)
|
|
|
|
// Ensure appLabelsPostRenderer implements the postrender.PostRenderer interface.
|
|
var _ postrenderer.PostRenderer = &appLabelsPostRenderer{}
|
|
|
|
// appLabelsPostRenderer is an in-process Helm post-renderer that injects
|
|
// Portainer app labels into every Kubernetes resource in the rendered manifests.
|
|
type appLabelsPostRenderer struct {
|
|
labels map[string]string
|
|
}
|
|
|
|
func (r *appLabelsPostRenderer) Run(renderedManifests *bytes.Buffer) (*bytes.Buffer, error) {
|
|
labeled, err := kubernetes.AddAppLabels(renderedManifests.Bytes(), r.labels)
|
|
if err != nil {
|
|
log.Debug().Err(err).Interface("labels", r.labels).Msg("Failed to add app labels to rendered manifests")
|
|
return nil, err
|
|
}
|
|
|
|
return bytes.NewBuffer(labeled), nil
|
|
}
|