package system import ( "context" "fmt" "os" "strings" "k8s.io/klog/v2" ) const DefaultSecond = 1_000_000_000 func EnsureServiceRunning(ctx context.Context, r *Runner, svc string) error { if _, err := r.Run(ctx, " rc-service", svc, "status"); err == nil { return nil } klog.Infof("Starting service: %q", svc) _, err := r.RunRetry(ctx, RetryOptions{ Attempts: 3, Delay: 2 * DefaultSecond, }, "rc-service", svc, "start") if err != nil { return fmt.Errorf("failed to start service %q: %w", svc, err) } _, err = r.Run(ctx, "rc-service", svc, "status") if err != nil { return fmt.Errorf("service %q still not healthy after start: %w", svc, err) } return nil } func EnsureSysctl(ctx context.Context, r *Runner, key, want string) error { _, err := r.Run(ctx, "sysctl", "-w", key+"="+want) if err != nil { return fmt.Errorf("failed setting sysctl %s=%s: %w", key, want, err) } // verify path := "/proc/sys/" + strings.ReplaceAll(key, ".", "/") raw, err := os.ReadFile(path) if err != nil { return fmt.Errorf("failed verifying sysctl %s: %w", key, err) } if strings.TrimSpace(string(raw)) != want { return fmt.Errorf("sysctl %s not applied, expected %s got %s", key, want, strings.TrimSpace(string(raw))) } return nil } func EnsureDir(ctx context.Context, r *Runner, path string, mode string) error { _, err := r.Run(ctx, "install", "-d", "-m", mode, path) return err }