@@ -19,6 +19,7 @@ import (
1919const (
2020 rancher2ReadyAnswer = "pong"
2121 rancher2RetriesWait = 5
22+ rancher2RKEK8sSystemImageVersion = "2.3.0"
2223 rancher2NodeTemplateChangeVersion = "2.3.3"
2324 rancher2NodeTemplateNewPrefix = "cattle-global-nt:nt-"
2425)
@@ -53,12 +54,14 @@ func (c *Config) GetRancherVersion() (string, error) {
5354 return c .RancherVersion , nil
5455 }
5556
56- client , err := c .ManagementClient ()
57- if err != nil {
58- return "" , fmt .Errorf ("[ERROR] Getting Rancher version: %s" , err )
57+ if c .Client .Management == nil {
58+ _ , err := c .ManagementClient ()
59+ if err != nil {
60+ return "" , err
61+ }
5962 }
6063
61- version , err := client .Setting .ByID ("server-version" )
64+ version , err := c . Client . Management .Setting .ByID ("server-version" )
6265 if err != nil {
6366 return "" , fmt .Errorf ("[ERROR] Getting Rancher version: %s" , err )
6467 }
@@ -69,27 +72,35 @@ func (c *Config) GetRancherVersion() (string, error) {
6972
7073func (c * Config ) isRancherReady () error {
7174 var err error
75+ var resp []byte
7276 url := RootURL (c .URL ) + "/ping"
7377 for i := 0 ; i <= c .Retries ; i ++ {
74- resp , err : = DoGet (url , "" , "" , c .CACerts , c .Insecure )
78+ resp , err = DoGet (url , "" , "" , c .CACerts , c .Insecure )
7579 if err == nil && rancher2ReadyAnswer == string (resp ) {
7680 return nil
7781 }
7882 time .Sleep (rancher2RetriesWait * time .Second )
7983 }
80- return fmt .Errorf ("Timeout, Rancher is not ready: %v" , err )
84+ return fmt .Errorf ("Rancher is not ready: %v" , err )
8185}
8286
8387func (c * Config ) getK8SDefaultVersion () (string , error ) {
8488 if len (c .K8SDefaultVersion ) > 0 {
8589 return c .K8SDefaultVersion , nil
8690 }
8791
88- k8sVer , err := c .GetSettingValue ("k8s-version" )
92+ if c .Client .Management == nil {
93+ _ , err := c .ManagementClient ()
94+ if err != nil {
95+ return "" , err
96+ }
97+ }
98+
99+ k8sVer , err := c .Client .Management .Setting .ByID ("k8s-version" )
89100 if err != nil {
90101 return "" , err
91102 }
92- c .K8SDefaultVersion = k8sVer
103+ c .K8SDefaultVersion = k8sVer . Value
93104 return c .K8SDefaultVersion , nil
94105}
95106
@@ -98,12 +109,18 @@ func (c *Config) getK8SVersions() ([]string, error) {
98109 return c .K8SSupportedVersions , nil
99110 }
100111
101- client , err := c .ManagementClient ()
102- if err != nil {
103- return nil , fmt .Errorf ("[ERROR] Getting K8s versions: %s" , err )
112+ if c .Client .Management == nil {
113+ _ , err := c .ManagementClient ()
114+ if err != nil {
115+ return nil , err
116+ }
104117 }
105118
106- RKEK8sSystemImageCollection , err := client .RKEK8sSystemImage .ListAll (NewListOpts (nil ))
119+ if ok , _ := c .IsRancherVersionLessThan (rancher2RKEK8sSystemImageVersion ); ok {
120+ return nil , nil
121+ }
122+
123+ RKEK8sSystemImageCollection , err := c .Client .Management .RKEK8sSystemImage .ListAll (NewListOpts (nil ))
107124 if err != nil {
108125 return nil , fmt .Errorf ("[ERROR] Listing RKE K8s System Images: %s" , err )
109126 }
@@ -197,6 +214,11 @@ func (c *Config) ManagementClient() (*managementClient.Client, error) {
197214 return c .Client .Management , nil
198215 }
199216
217+ err := c .isRancherReady ()
218+ if err != nil {
219+ return nil , err
220+ }
221+
200222 // Setup the management client
201223 options := c .CreateClientOpts ()
202224 mClient , err := managementClient .NewClient (options )
@@ -205,6 +227,15 @@ func (c *Config) ManagementClient() (*managementClient.Client, error) {
205227 }
206228 c .Client .Management = mClient
207229
230+ rancher2ClusterRKEK8SDefaultVersion , err = c .getK8SDefaultVersion ()
231+ if err != nil {
232+ return nil , err
233+ }
234+ rancher2ClusterRKEK8SVersions , err = c .getK8SVersions ()
235+ if err != nil {
236+ return nil , err
237+ }
238+
208239 return c .Client .Management , nil
209240}
210241
@@ -221,6 +252,11 @@ func (c *Config) ClusterClient(id string) (*clusterClient.Client, error) {
221252 return c .Client .Cluster , nil
222253 }
223254
255+ err := c .isRancherReady ()
256+ if err != nil {
257+ return nil , err
258+ }
259+
224260 // Setup the cluster client
225261 options := c .CreateClientOpts ()
226262 options .URL = options .URL + "/clusters/" + id
@@ -247,6 +283,11 @@ func (c *Config) ProjectClient(id string) (*projectClient.Client, error) {
247283 return c .Client .Project , nil
248284 }
249285
286+ err := c .isRancherReady ()
287+ if err != nil {
288+ return nil , err
289+ }
290+
250291 // Setup the project client
251292 options := c .CreateClientOpts ()
252293 options .URL = options .URL + "/projects/" + id
0 commit comments