diff --git a/cmd/commands/root.go b/cmd/commands/root.go index f77f15bc..a4a81243 100644 --- a/cmd/commands/root.go +++ b/cmd/commands/root.go @@ -18,6 +18,7 @@ package command import ( "context" "fmt" + "regexp" "strings" "github.com/rook/kubectl-rook-ceph/pkg/exec" @@ -105,8 +106,18 @@ func PreValidationCheck(ctx context.Context, k8sclientset *k8sutil.Clientsets, o logging.Error(fmt.Errorf("CephCluster namespace '%s' does not exist. %v", cephClusterNamespace, err)) } - rookVersion := exec.RunCommandInOperatorPod(ctx, k8sclientset, "rook", []string{"version"}, operatorNamespace, cephClusterNamespace, true, false) + rookVersionOutput := exec.RunCommandInOperatorPod(ctx, k8sclientset, "rook", []string{"version"}, operatorNamespace, cephClusterNamespace, true, false) + rookVersion := trimGoVersionFromRookVersion(rookVersionOutput) if strings.Contains(rookVersion, "alpha") || strings.Contains(rookVersion, "beta") { logging.Warning("rook version '%s' is running a pre-release version of Rook.", rookVersion) + fmt.Println() } } + +func trimGoVersionFromRookVersion(rookVersion string) string { + re := regexp.MustCompile("(?m)[\r\n]+^.*go: go.*$") // remove the go version from the output + rookVersion = re.ReplaceAllString(rookVersion, "") + rookVersion = strings.TrimSpace(rookVersion) // remove any trailing newlines + + return rookVersion +} diff --git a/cmd/commands/root_test.go b/cmd/commands/root_test.go new file mode 100644 index 00000000..2cd5e4d0 --- /dev/null +++ b/cmd/commands/root_test.go @@ -0,0 +1,45 @@ +/* +Copyright 2023 The Rook Authors. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package command + +import "testing" + +func Test_trimGoVersionFromRookVersion(t *testing.T) { + type args struct { + rookVersion string + } + + sampleRookVersion := `rook: v1.11.0-alpha.0.420.gd9a17691c +go: go1.19.10s` + tests := []struct { + name string + args args + want string + }{ + { + name: "trim go version from rook version", + args: args{rookVersion: sampleRookVersion}, + want: "rook: v1.11.0-alpha.0.420.gd9a17691c", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := trimGoVersionFromRookVersion(tt.args.rookVersion); got != tt.want { + t.Errorf("trimGoVersionFromRookVersion() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/pkg/exec/exec.go b/pkg/exec/exec.go index 73d335ec..be792af9 100644 --- a/pkg/exec/exec.go +++ b/pkg/exec/exec.go @@ -51,7 +51,6 @@ func RunCommandInOperatorPod(ctx context.Context, clientsets *k8sutil.Clientsets if !returnOutput { return "" } - fmt.Println(stdout.String()) fmt.Print(stderr.String()) return stdout.String()