From 350bb8acd40d839229bf366e5cee03fd53e24b90 Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Thu, 19 Dec 2024 19:49:47 -0800 Subject: [PATCH] Change to use NotifyContext method --- cmd/kar/app/root.go | 18 +++++++----------- cmd/kar/main.go | 21 ++++++++++++--------- internal/runner.go | 2 +- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/cmd/kar/app/root.go b/cmd/kar/app/root.go index 0e2cddb..be2db28 100644 --- a/cmd/kar/app/root.go +++ b/cmd/kar/app/root.go @@ -23,7 +23,7 @@ import ( "github.com/spf13/cobra" ) -func NewRootCommand(ctx context.Context, cmdOptions Opts) *cobra.Command { +func NewRootCommand(ctx context.Context, runner *runner.Runner, opts Opts) *cobra.Command { cmd := &cobra.Command{ Use: "kar", Short: "Tool that creates a GitHub Self-Host runner with Kubevirt Virtual Machine Instance", @@ -31,24 +31,20 @@ func NewRootCommand(ctx context.Context, cmdOptions Opts) *cobra.Command { return initializeConfig(cmd) }, RunE: func(_ *cobra.Command, _ []string) error { - return run(ctx, cmdOptions) + return run(ctx, runner, opts) }, } - installFlags(cmd.Flags(), &cmdOptions) + installFlags(cmd.Flags(), &opts) return cmd } -func run(ctx context.Context, c Opts) error { - ctx, cancel := context.WithCancel(ctx) - defer cancel() +func run(ctx context.Context, runner *runner.Runner, opts Opts) error { + runner.CreateResources(ctx, opts.vmTemplate, opts.runnerName, opts.jsonConfig) + defer runner.DeleteResources(ctx) - runnerClient := runner.NewRunner() - runnerClient.CreateResources(ctx, c.vmTemplate, c.runnerName, c.jsonConfig) - defer runnerClient.DeleteResources(ctx) - - runnerClient.WaitForVirtualMachineInstance(ctx) + runner.WaitForVirtualMachineInstance(ctx) return nil } diff --git a/cmd/kar/main.go b/cmd/kar/main.go index 7f67ef5..9336c87 100644 --- a/cmd/kar/main.go +++ b/cmd/kar/main.go @@ -21,26 +21,29 @@ import ( "log" "os" "os/signal" - "syscall" "github.com/electrocucaracha/kubevirt-actions-runner/cmd/kar/app" + runner "github.com/electrocucaracha/kubevirt-actions-runner/internal" "github.com/pkg/errors" ) func main() { - ctx, cancel := context.WithCancel(context.Background()) - signalChan := make(chan os.Signal, 1) - signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM) + var opts app.Opts + + runner := runner.NewRunner() + + ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) + defer stop() go func() { - <-signalChan - cancel() + <-ctx.Done() + runner.DeleteResources(ctx) + stop() }() - var opts app.Opts - rootCmd := app.NewRootCommand(ctx, opts) + rootCmd := app.NewRootCommand(ctx, runner, opts) if err := rootCmd.Execute(); err != nil && !errors.Is(errors.Cause(err), context.Canceled) { - log.Fatalln(err.Error()) + log.Panicln(err.Error()) } } diff --git a/internal/runner.go b/internal/runner.go index e8d061c..7b3fbbb 100644 --- a/internal/runner.go +++ b/internal/runner.go @@ -45,7 +45,7 @@ type Runner struct { virtualMachineInstance string } -func (rc Runner) getResources(ctx context.Context, vmTemplate, runnerName, jitConfig string) ( +func (rc *Runner) getResources(ctx context.Context, vmTemplate, runnerName, jitConfig string) ( *v1.VirtualMachineInstance, *v1beta1.DataVolume, ) { virtualMachine, err := rc.virtClient.VirtualMachine(rc.namespace).Get(