diff --git a/.golangci.yml b/.golangci.yml index 9da212d..22deb05 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -48,9 +48,9 @@ linters: - pkg: k8s.io/client-go/kubernetes/scheme alias: clientgoscheme - pkg: k8s.io/apimachinery/pkg/runtime - alias: apimachineryruntime + alias: kruntime - pkg: k8s.io/apimachinery/pkg/util/runtime - alias: utilruntime + alias: kruntimeutil - pkg: sigs.k8s.io/controller-runtime/pkg/metrics/server alias: metricsserver - pkg: k8s.io/apimachinery/pkg/apis/meta/v1 diff --git a/cmd/main.go b/cmd/main.go index adaf94f..be4f470 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -13,11 +13,12 @@ import ( "fmt" "os" "path/filepath" + "runtime" "strings" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/runtime" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" + kruntime "k8s.io/apimachinery/pkg/runtime" + kruntimeutil "k8s.io/apimachinery/pkg/util/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/certwatcher" @@ -39,18 +40,18 @@ import ( ) var ( - scheme = runtime.NewScheme() + scheme = kruntime.NewScheme() setupLog = ctrl.Log.WithName("setup") ) func init() { - utilruntime.Must(clientgoscheme.AddToScheme(scheme)) + kruntimeutil.Must(clientgoscheme.AddToScheme(scheme)) - utilruntime.Must(nbv1.AddToScheme(scheme)) - utilruntime.Must(corev1.AddToScheme(scheme)) - utilruntime.Must(gwv1.Install(scheme)) - utilruntime.Must(gwv1alpha2.Install(scheme)) - utilruntime.Must(nbv1alpha1.AddToScheme(scheme)) + kruntimeutil.Must(nbv1.AddToScheme(scheme)) + kruntimeutil.Must(corev1.AddToScheme(scheme)) + kruntimeutil.Must(gwv1.Install(scheme)) + kruntimeutil.Must(gwv1alpha2.Install(scheme)) + kruntimeutil.Must(nbv1alpha1.AddToScheme(scheme)) // +kubebuilder:scaffold:scheme } @@ -216,7 +217,7 @@ func main() { nbClient := netbird.NewWithOptions( netbird.WithManagementURL(managementURL), netbird.WithBearerToken(netbirdAPIKey), - netbird.WithUserAgent("netbird-operator"), + netbird.WithUserAgent(fmt.Sprintf("netbird-operator/%s (%s/%s)", version.BuildVersion(), runtime.GOOS, runtime.GOARCH)), ) if err = (&controller.NBRoutingPeerReconciler{ diff --git a/internal/version/version.go b/internal/version/version.go index c5c0b60..4bdeb74 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -2,6 +2,36 @@ package version +import ( + "runtime/debug" +) + func ClientImage() string { return "ghcr.io/netbirdio/netbird:0.70.4@sha256:3a28b9f7f32875c6a35f952ca7e9cb688b1e610365365ff55f6e790da3950f55" } + +func BuildVersion() string { + bi, ok := debug.ReadBuildInfo() + if !ok { + return "unknown" + } + + modified := true + for _, s := range bi.Settings { + if s.Key == "vcs.modified" { + if s.Value == "false" { + modified = false + } + break + } + } + + develVersion := "devel" + if modified { + return develVersion + } + if bi.Main.Version == "" { + return develVersion + } + return bi.Main.Version +} diff --git a/internal/webhook/v1/webhook_suite_test.go b/internal/webhook/v1/webhook_suite_test.go index 0a33423..bcb7a28 100644 --- a/internal/webhook/v1/webhook_suite_test.go +++ b/internal/webhook/v1/webhook_suite_test.go @@ -16,7 +16,7 @@ import ( . "github.com/onsi/gomega" admissionv1 "k8s.io/api/admission/v1" corev1 "k8s.io/api/core/v1" - apimachineryruntime "k8s.io/apimachinery/pkg/runtime" + kruntime "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/rest" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" @@ -53,7 +53,7 @@ var _ = BeforeSuite(func() { ctx, cancel = context.WithCancel(context.TODO()) var err error - scheme := apimachineryruntime.NewScheme() + scheme := kruntime.NewScheme() err = corev1.AddToScheme(scheme) Expect(err).NotTo(HaveOccurred())