@@ -20,6 +20,7 @@ import (
20
20
"fmt"
21
21
"io"
22
22
"net/http"
23
+ "strconv"
23
24
"strings"
24
25
25
26
"github.com/aws/aws-sdk-go/aws"
@@ -29,7 +30,6 @@ import (
29
30
"github.com/pkg/errors"
30
31
31
32
ec2service "sigs.k8s.io/cluster-api-provider-aws/pkg/cloud/services/ec2"
32
- "sigs.k8s.io/cluster-api/test/framework/kubernetesversions"
33
33
)
34
34
35
35
const (
@@ -61,6 +61,37 @@ func getimageRegionList() []string {
61
61
}
62
62
}
63
63
64
+ // LatestPatchRelease returns the latest patch release matching.
65
+ func LatestPatchRelease (searchVersion string ) (string , error ) {
66
+ searchSemVer , err := semver .Make (strings .TrimPrefix (searchVersion , tagPrefix ))
67
+ if err != nil {
68
+ return "" , err
69
+ }
70
+ resp , err := http .Get (fmt .Sprintf (latestStableReleaseURL , "-" + strconv .Itoa (int (searchSemVer .Major ))+ "." + strconv .Itoa (int (searchSemVer .Minor ))))
71
+ if err != nil {
72
+ return "" , err
73
+ }
74
+ defer resp .Body .Close ()
75
+ b , err := io .ReadAll (resp .Body )
76
+ if err != nil {
77
+ return "" , err
78
+ }
79
+
80
+ return strings .TrimSpace (string (b )), nil
81
+ }
82
+
83
+ // PreviousMinorRelease returns the latest patch release for the previous version
84
+ // of Kubernetes, e.g. v1.19.1 returns v1.18.8 as of Sep 2020.
85
+ func PreviousMinorRelease (searchVersion string ) (string , error ) {
86
+ semVer , err := semver .Make (strings .TrimPrefix (searchVersion , tagPrefix ))
87
+ if err != nil {
88
+ return "" , err
89
+ }
90
+ semVer .Minor --
91
+
92
+ return LatestPatchRelease (semVer .String ())
93
+ }
94
+
64
95
// getSupportedKubernetesVersions returns all possible k8s versions till last nth kubernetes release.
65
96
func getSupportedKubernetesVersions (lastNReleases int ) ([]string , error ) {
66
97
currentVersion , err := latestStableRelease ()
@@ -76,7 +107,7 @@ func getSupportedKubernetesVersions(lastNReleases int) ([]string, error) {
76
107
versionPatches = append (versionPatches , currentVersion )
77
108
78
109
for lastNReleases != 0 {
79
- currentVersion , err = kubernetesversions . PreviousMinorRelease (currentVersion )
110
+ currentVersion , err = PreviousMinorRelease (currentVersion )
80
111
if err != nil {
81
112
return nil , err
82
113
}
0 commit comments