1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-19 21:39:40 +02:00
portainer/pkg/libkubectl/apply.go

36 lines
878 B
Go
Raw Normal View History

package libkubectl
import (
"bytes"
"context"
"fmt"
"k8s.io/kubectl/pkg/cmd/apply"
cmdutil "k8s.io/kubectl/pkg/cmd/util"
)
func (c *Client) Apply(ctx context.Context, manifests []string) (string, error) {
buf := new(bytes.Buffer)
var fatalErr error
cmdutil.BehaviorOnFatal(func(msg string, code int) {
fatalErr = newKubectlFatalError(code, msg)
})
defer cmdutil.DefaultBehaviorOnFatal()
cmd := apply.NewCmdApply("kubectl", c.factory, c.streams)
cmd.SetArgs(resourcesToArgs(manifests))
cmd.SetOut(buf)
err := cmd.ExecuteContext(ctx)
// check for the fatal error first so we don't return the error from the command execution
if fatalErr != nil {
return "", fatalErr
}
// if there is no fatal error, return the error from the command execution
if err != nil {
return "", fmt.Errorf("error applying resources: %w", err)
}
return buf.String(), nil
}