From fc642ca87bca811e0312b7a824a0a5ef99127dcf Mon Sep 17 00:00:00 2001 From: Kiran Meduri Date: Tue, 26 Oct 2021 20:02:09 -0700 Subject: [PATCH] fix: Handle minor version with '+' when determining ingress mode (#1529) Signed-off-by: Kiran Meduri --- utils/ingress/ingress.go | 9 ++++++++- utils/ingress/ingress_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/utils/ingress/ingress.go b/utils/ingress/ingress.go index e2662e0ddb..38027a7624 100644 --- a/utils/ingress/ingress.go +++ b/utils/ingress/ingress.go @@ -277,7 +277,14 @@ func DetermineIngressMode(apiVersion string, d discovery.ServerVersionInterface) } minor, err := strconv.Atoi(ver.Minor) if err != nil { - return 0, err + if strings.HasSuffix(ver.Minor, "+") { + minor, err = strconv.Atoi(ver.Minor[0 : len(ver.Minor)-1]) + if err != nil { + return 0, err + } + } else { + return 0, err + } } if major > 1 { return IngressModeNetworking, nil diff --git a/utils/ingress/ingress_test.go b/utils/ingress/ingress_test.go index 36a013ee4a..eaca7e6a86 100644 --- a/utils/ingress/ingress_test.go +++ b/utils/ingress/ingress_test.go @@ -329,6 +329,12 @@ func TestDetermineIngressMode(t *testing.T) { faKeDiscovery: newFakeDiscovery("1", "18", nil), expectedMode: IngressModeExtensions, }, + { + name: "will return networking mode if server minor version has '+' suffix, e.g. 1.19+", + apiVersion: "", + faKeDiscovery: newFakeDiscovery("1", "19+", nil), + expectedMode: IngressModeNetworking, + }, { name: "will return error if fails to retrieve server version", apiVersion: "", @@ -358,6 +364,28 @@ func TestDetermineIngressMode(t *testing.T) { Err: errors.New("invalid syntax"), }, }, + { + name: "will return error if fails to parse minor version with '+' suffix, e.g. 1.wrong+", + apiVersion: "", + faKeDiscovery: newFakeDiscovery("1", "wrong+", nil), + expectedMode: 0, + expectedError: &strconv.NumError{ + Func: "Atoi", + Num: "wrong", + Err: errors.New("invalid syntax"), + }, + }, + { + name: "will return error if fails to parse minor version with just '+'", + apiVersion: "", + faKeDiscovery: newFakeDiscovery("1", "+", nil), + expectedMode: 0, + expectedError: &strconv.NumError{ + Func: "Atoi", + Num: "", + Err: errors.New("invalid syntax"), + }, + }, } for _, c := range cases { c := c // necessary to ensure all test cases are executed when running in parallel mode