penguin/monok8s

k8s image for Mono Gateway Dev Kit

clitools/pkg/controller/osupgrade/bootenv.go

raw ยท 607 bytes

package osupgrade

import (
	"context"
	"fmt"
	"os/exec"
)

type NextBootConfig struct {
	Key   string
	Value string
}

func SetNextBootEnv(ctx context.Context, cfg NextBootConfig) error {
	if cfg.Key == "" {
		return fmt.Errorf("boot env key is empty")
	}
	if cfg.Value == "" {
		return fmt.Errorf("boot env value is empty")
	}

	cmd := exec.CommandContext(
		ctx,
		"/proc/self/exe",
		"internal",
		"fw-setenv",
		"--key", cfg.Key,
		"--value", cfg.Value,
	)

	out, err := cmd.CombinedOutput()
	if err != nil {
		return fmt.Errorf("invoke internal fw-setenv: %w: %s", err, string(out))
	}

	return nil
}