From c216aa119441eb0f8aac4eaf1cf2b4dfaed386c1 Mon Sep 17 00:00:00 2001 From: Jason Morrow Date: Mon, 16 Feb 2026 09:24:27 -0500 Subject: [PATCH] Add queue to RunnerRegister --- .changes/unreleased/Feature-20260217-165944.yaml | 3 +++ src/cmd/faktory.go | 2 +- src/cmd/root.go | 2 ++ src/cmd/run.go | 9 +++++++-- src/cmd/test.go | 2 +- src/go.mod | 8 +++----- src/go.sum | 16 ++++------------ src/pkg/api.go | 2 +- src/pkg/faktoryRunnerAppendJobLogProcessor.go | 2 +- src/pkg/faktorySetOutcomeProcessor.go | 2 +- src/pkg/k8s.go | 5 +++-- src/pkg/k8s_test.go | 2 +- src/pkg/leaderElection.go | 2 +- src/pkg/opslevelAppendLogProcessor.go | 2 +- src/pkg/sanitizeLogProcessor.go | 2 +- src/pkg/sanitizeLogProcessor_test.go | 2 +- src/pkg/setOutcomeVarLogProcessor.go | 2 +- 17 files changed, 33 insertions(+), 32 deletions(-) create mode 100644 .changes/unreleased/Feature-20260217-165944.yaml diff --git a/.changes/unreleased/Feature-20260217-165944.yaml b/.changes/unreleased/Feature-20260217-165944.yaml new file mode 100644 index 0000000..c213de1 --- /dev/null +++ b/.changes/unreleased/Feature-20260217-165944.yaml @@ -0,0 +1,3 @@ +kind: Feature +body: Add the ability to register the runner for a given queue. +time: 2026-02-17T16:59:44.911992-05:00 diff --git a/src/cmd/faktory.go b/src/cmd/faktory.go index aa755d2..888193c 100644 --- a/src/cmd/faktory.go +++ b/src/cmd/faktory.go @@ -9,7 +9,7 @@ import ( worker "github.com/contribsys/faktory_worker_go" "github.com/mitchellh/mapstructure" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/opslevel/opslevel-runner/pkg" "github.com/rs/zerolog/log" "github.com/spf13/viper" diff --git a/src/cmd/root.go b/src/cmd/root.go index 3ad5e69..d47b52b 100644 --- a/src/cmd/root.go +++ b/src/cmd/root.go @@ -51,6 +51,7 @@ func init() { rootCmd.PersistentFlags().Int("job-pod-log-max-interval", 30, "The max amount of time between when pod logs are shipped to OpsLevel. Works in tandem with 'job-pod-log-max-size'") rootCmd.PersistentFlags().Int("job-pod-log-max-size", 1000000, "The max amount in bytes to buffer before pod logs are shipped to OpsLevel. Works in tandem with 'job-pod-log-max-interval'") rootCmd.PersistentFlags().Bool("job-agent-mode", false, "Enable agent mode with privileged security context for Container-in-Container support. WARNING: This grants elevated privileges and should only be enabled for trusted workloads.") + rootCmd.PersistentFlags().String("queue", "", "The queue this runner should process jobs from. Empty means the default queue.") rootCmd.PersistentFlags().String("runner-pod-name", "", "overrides environment variable 'RUNNER_POD_NAME'") rootCmd.PersistentFlags().String("runner-pod-namespace", "default", "The kubernetes namespace the runner pod is deployed in. Overrides environment variable 'RUNNER_POD_NAMESPACE'") @@ -73,6 +74,7 @@ func init() { viper.BindEnv("job-pod-log-max-interval", "OPSLEVEL_JOB_POD_LOG_MAX_INTERVAL") viper.BindEnv("job-pod-log-max-size", "OPSLEVEL_JOB_POD_LOG_MAX_SIZE") viper.BindEnv("job-agent-mode", "OPSLEVEL_JOB_AGENT_MODE") + viper.BindEnv("queue", "OPSLEVEL_QUEUE") viper.BindEnv("runner-pod-name", "RUNNER_POD_NAME") viper.BindEnv("runner-pod-namespace", "RUNNER_POD_NAMESPACE") diff --git a/src/cmd/run.go b/src/cmd/run.go index d90f603..392fc18 100644 --- a/src/cmd/run.go +++ b/src/cmd/run.go @@ -11,7 +11,7 @@ import ( "github.com/opslevel/opslevel-runner/signal" "github.com/getsentry/sentry-go" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/opslevel/opslevel-runner/pkg" "github.com/rs/zerolog/log" "github.com/spf13/cobra" @@ -53,7 +53,12 @@ func doRun(cmd *cobra.Command, args []string) { runFaktory() case "api": client := pkg.NewGraphClient() - runner, err := client.RunnerRegister() + var registerArgs []string + if queue := viper.GetString("queue"); queue != "" { + log.Info().Str("queue", queue).Msg("Registering with queue") + registerArgs = append(registerArgs, queue) + } + runner, err := client.RunnerRegister(registerArgs...) pkg.CheckErr(err) pkg.StartMetricsServer(string(runner.Id), viper.GetInt("metrics-port")) diff --git a/src/cmd/test.go b/src/cmd/test.go index 0db202e..12f57fb 100644 --- a/src/cmd/test.go +++ b/src/cmd/test.go @@ -7,7 +7,7 @@ import ( "os" "time" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/opslevel/opslevel-runner/pkg" "github.com/opslevel/opslevel-runner/signal" "github.com/rs/zerolog/log" diff --git a/src/go.mod b/src/go.mod index 007de5c..266dfef 100644 --- a/src/go.mod +++ b/src/go.mod @@ -10,7 +10,7 @@ require ( github.com/getsentry/sentry-go v0.29.1 github.com/go-resty/resty/v2 v2.17.1 github.com/mitchellh/mapstructure v1.5.0 - github.com/opslevel/opslevel-go/v2024 v2024.12.24 + github.com/opslevel/opslevel-go/v2026 v2026.2.18 github.com/prometheus/client_golang v1.20.5 github.com/rocktavious/autopilot/v2023 v2023.12.7 github.com/rs/zerolog v1.34.0 @@ -28,7 +28,7 @@ require ( require ( dario.cat/mergo v1.0.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect - github.com/Masterminds/semver/v3 v3.3.0 // indirect + github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/Masterminds/sprig/v3 v3.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -54,8 +54,6 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/gosimple/slug v1.15.0 // indirect github.com/gosimple/unidecode v1.0.1 // indirect - github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-retryablehttp v0.7.8 // indirect github.com/hasura/go-graphql-client v0.15.1 // indirect github.com/huandu/xstrings v1.5.0 // indirect github.com/imdario/mergo v0.3.16 // indirect @@ -108,4 +106,4 @@ require ( sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect ) -//replace github.com/opslevel/opslevel-go/v2024 => ./submodules/opslevel-go +// replace github.com/opslevel/opslevel-go/v2026 => /Users/jason/workspace/opslevel-go diff --git a/src/go.sum b/src/go.sum index 3c30c31..e6de8d6 100644 --- a/src/go.sum +++ b/src/go.sum @@ -2,8 +2,8 @@ dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= -github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= @@ -29,8 +29,6 @@ github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxER github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= @@ -92,12 +90,6 @@ github.com/gosimple/slug v1.15.0 h1:wRZHsRrRcs6b0XnxMUBM6WK1U1Vg5B0R7VkIf1Xzobo= github.com/gosimple/slug v1.15.0/go.mod h1:UiRaFH+GEilHstLUmcBgWcI42viBN7mAb818JrYOeFQ= github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o= github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOnHzpgWw4Awc= -github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= -github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48= -github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw= github.com/hasura/go-graphql-client v0.15.1 h1:mCb5I+8Bk3FU3GKWvf/zDXkTh7FbGlqJmP3oisBdnN8= github.com/hasura/go-graphql-client v0.15.1/go.mod h1:jfSZtBER3or+88Q9vFhWHiFMPppfYILRyl+0zsgPIIw= github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= @@ -157,8 +149,8 @@ github.com/onsi/gomega v1.31.0 h1:54UJxxj6cPInHS3a35wm6BK/F9nHYueZ1NVujHDrnXE= github.com/onsi/gomega v1.31.0/go.mod h1:DW9aCi7U6Yi40wNVAvT6kzFnEVEI5n3DloYBiKiT6zk= github.com/opslevel/moredefaults v0.0.0-20240529152742-17d1318a3c12 h1:OQZ3W8kbyCcdS8QUWFTnZd6xtdkfhdckc7Paro7nXio= github.com/opslevel/moredefaults v0.0.0-20240529152742-17d1318a3c12/go.mod h1:g2GSXVP6LO+5+AIsnMRPN+BeV86OXuFRTX7HXCDtYeI= -github.com/opslevel/opslevel-go/v2024 v2024.12.24 h1:yqByehj/HBKcHV2xnZK9ozAhE+qQfXSWxtp6KLS1f9s= -github.com/opslevel/opslevel-go/v2024 v2024.12.24/go.mod h1:cIwzFyu8HURaGdZKWtKn4pijsyYs8xP8uuDwqgohWgo= +github.com/opslevel/opslevel-go/v2026 v2026.2.18 h1:uNGxdtLY5FFhT3GN2r2jpdOGqLu4fVQ/DdHd+t09HC4= +github.com/opslevel/opslevel-go/v2026 v2026.2.18/go.mod h1:FClwt6mxlVa2f4l+z/dUi5u8eYEiNJuSOWMhB6Y9JqI= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= diff --git a/src/pkg/api.go b/src/pkg/api.go index 476062e..ebd643f 100644 --- a/src/pkg/api.go +++ b/src/pkg/api.go @@ -8,7 +8,7 @@ import ( "github.com/go-resty/resty/v2" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/spf13/cobra" "github.com/spf13/viper" ) diff --git a/src/pkg/faktoryRunnerAppendJobLogProcessor.go b/src/pkg/faktoryRunnerAppendJobLogProcessor.go index 1478369..33038f8 100644 --- a/src/pkg/faktoryRunnerAppendJobLogProcessor.go +++ b/src/pkg/faktoryRunnerAppendJobLogProcessor.go @@ -6,7 +6,7 @@ import ( faktory "github.com/contribsys/faktory/client" faktoryWorker "github.com/contribsys/faktory_worker_go" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/rs/zerolog" ) diff --git a/src/pkg/faktorySetOutcomeProcessor.go b/src/pkg/faktorySetOutcomeProcessor.go index 16f1476..e8cf99c 100644 --- a/src/pkg/faktorySetOutcomeProcessor.go +++ b/src/pkg/faktorySetOutcomeProcessor.go @@ -6,7 +6,7 @@ import ( faktory "github.com/contribsys/faktory/client" faktoryWorker "github.com/contribsys/faktory_worker_go" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/rs/zerolog" ) diff --git a/src/pkg/k8s.go b/src/pkg/k8s.go index 55c34fd..ac7a6fa 100644 --- a/src/pkg/k8s.go +++ b/src/pkg/k8s.go @@ -24,7 +24,7 @@ import ( "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/remotecommand" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/rs/zerolog" "github.com/spf13/viper" ) @@ -126,6 +126,7 @@ func (s *JobRunner) getConfigMapObject(identifier string, job opslevel.RunnerJob for _, file := range job.Files { data[file.Name] = file.Contents } + immutable := true return &corev1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ Name: identifier, @@ -139,7 +140,7 @@ func (s *JobRunner) getConfigMapObject(identifier string, job opslevel.RunnerJob // }, //}, }, - Immutable: opslevel.RefOf(true), + Immutable: &immutable, Data: data, } } diff --git a/src/pkg/k8s_test.go b/src/pkg/k8s_test.go index 9454105..de7f9ba 100644 --- a/src/pkg/k8s_test.go +++ b/src/pkg/k8s_test.go @@ -4,7 +4,7 @@ import ( "context" "testing" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/rocktavious/autopilot/v2023" "github.com/rs/zerolog" corev1 "k8s.io/api/core/v1" diff --git a/src/pkg/leaderElection.go b/src/pkg/leaderElection.go index 9c159dd..51837e7 100644 --- a/src/pkg/leaderElection.go +++ b/src/pkg/leaderElection.go @@ -6,7 +6,7 @@ import ( "sync" "time" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/rs/zerolog/log" "github.com/spf13/viper" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" diff --git a/src/pkg/opslevelAppendLogProcessor.go b/src/pkg/opslevelAppendLogProcessor.go index 02f1946..33b5e6b 100644 --- a/src/pkg/opslevelAppendLogProcessor.go +++ b/src/pkg/opslevelAppendLogProcessor.go @@ -4,7 +4,7 @@ import ( "encoding/base64" "time" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/rs/zerolog" ) diff --git a/src/pkg/sanitizeLogProcessor.go b/src/pkg/sanitizeLogProcessor.go index 6fab322..46477a1 100644 --- a/src/pkg/sanitizeLogProcessor.go +++ b/src/pkg/sanitizeLogProcessor.go @@ -3,7 +3,7 @@ package pkg import ( "strings" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" ) type SanitizeLogProcessor struct { diff --git a/src/pkg/sanitizeLogProcessor_test.go b/src/pkg/sanitizeLogProcessor_test.go index 75deab9..44e3d98 100644 --- a/src/pkg/sanitizeLogProcessor_test.go +++ b/src/pkg/sanitizeLogProcessor_test.go @@ -3,7 +3,7 @@ package pkg import ( "testing" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/rocktavious/autopilot/v2023" ) diff --git a/src/pkg/setOutcomeVarLogProcessor.go b/src/pkg/setOutcomeVarLogProcessor.go index 4f0b686..62d9f0e 100644 --- a/src/pkg/setOutcomeVarLogProcessor.go +++ b/src/pkg/setOutcomeVarLogProcessor.go @@ -6,7 +6,7 @@ import ( "regexp" "strings" - "github.com/opslevel/opslevel-go/v2024" + "github.com/opslevel/opslevel-go/v2026" "github.com/rs/zerolog" )