Skip to content

Commit ece0bfc

Browse files
authored
Merge pull request #306 from rawmind0/clusterupgrade
Fixed rancher timeout on bootstrapping and added monitoring version on rancher2_cluster
2 parents 9e200f1 + 5b2ae91 commit ece0bfc

11 files changed

Lines changed: 90 additions & 37 deletions

CHANGELOG.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
1-
## 1.9.0 (Unreleased)
1+
## 1.8.3 (Unreleased)
2+
3+
FEATURES:
4+
5+
6+
7+
ENHANCEMENTS:
8+
9+
* Added `version` argument to `cluster_monitoring_input` argument on `rancher2_cluster` and `rancher2_project` resources
10+
11+
BUG FIXES:
12+
13+
* Fixed rancher timeout on bootstrapping
14+
215
## 1.8.2 (April 02, 2020)
316

417
FEATURES:

rancher2/config.go

Lines changed: 53 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
const (
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

7073
func (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

8387
func (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

rancher2/provider.go

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func Provider() terraform.ResourceProvider {
8585
Optional: true,
8686
Default: 5,
8787
Description: descriptions["retries"],
88-
ValidateFunc: validation.IntBetween(1, 100),
88+
ValidateFunc: validation.IntBetween(1, 1000),
8989
},
9090
},
9191

@@ -218,13 +218,6 @@ func providerValidateConfig(config *Config) (*Config, error) {
218218
}
219219

220220
config.URL = NormalizeURL(config.URL)
221-
222-
if len(config.URL) > 0 {
223-
err := config.isRancherReady()
224-
if err != nil {
225-
return &Config{}, err
226-
}
227-
}
228221
if config.Bootstrap {
229222
// If bootstrap tokenkey accesskey nor secretkey can be provided
230223
if config.TokenKey != providerDefaultEmptyString {
@@ -235,17 +228,6 @@ func providerValidateConfig(config *Config) (*Config, error) {
235228
if config.TokenKey == providerDefaultEmptyString {
236229
return &Config{}, fmt.Errorf("[ERROR] No token_key nor access_key and secret_key are provided")
237230
}
238-
if len(config.URL) > 0 {
239-
var err error
240-
rancher2ClusterRKEK8SDefaultVersion, err = config.getK8SDefaultVersion()
241-
if err != nil {
242-
return &Config{}, err
243-
}
244-
rancher2ClusterRKEK8SVersions, err = config.getK8SVersions()
245-
if err != nil {
246-
return &Config{}, err
247-
}
248-
}
249231
}
250232

251233
return config, nil

rancher2/resource_rancher2_cluster.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ func resourceRancher2ClusterRead(d *schema.ResourceData, meta interface{}) error
142142

143143
if monitoringOutput != nil && len(monitoringOutput.Answers) > 0 {
144144
monitoringInput.Answers = monitoringOutput.Answers
145+
monitoringInput.Version = monitoringOutput.Version
145146
}
146147
}
147148

rancher2/resource_rancher2_project.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ func resourceRancher2ProjectRead(d *schema.ResourceData, meta interface{}) error
128128

129129
if monitoringOutput != nil && len(monitoringOutput.Answers) > 0 {
130130
monitoringInput.Answers = monitoringOutput.Answers
131+
monitoringInput.Version = monitoringOutput.Version
131132
}
132133
}
133134

rancher2/schema_monitoring_input.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ func monitoringInputFields() map[string]*schema.Schema {
1313
Optional: true,
1414
Description: "Answers for monitor input",
1515
},
16+
"version": {
17+
Type: schema.TypeString,
18+
Optional: true,
19+
Description: "Monitoring version",
20+
},
1621
}
1722

1823
return s

rancher2/schema_scheduled_cluster_scan.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ func scheduledClusterScanFields() map[string]*schema.Schema {
4545
"enabled": {
4646
Type: schema.TypeBool,
4747
Optional: true,
48-
Default: false,
4948
Description: "Enable scheduled cluster scan",
5049
},
5150
"scan_config": {

rancher2/structure_monitoring_input.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ func flattenMonitoringInput(in *managementClient.MonitoringInput) []interface{}
1717
obj["answers"] = toMapInterface(in.Answers)
1818
}
1919

20+
if len(in.Version) > 0 {
21+
obj["version"] = in.Version
22+
}
23+
2024
return []interface{}{obj}
2125
}
2226

@@ -33,5 +37,9 @@ func expandMonitoringInput(p []interface{}) *managementClient.MonitoringInput {
3337
obj.Answers = toMapString(v)
3438
}
3539

40+
if v, ok := in["version"].(string); ok && len(v) > 0 {
41+
obj.Version = v
42+
}
43+
3644
return obj
3745
}

website/docs/index.html.markdown

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ The provider can be configured in 2 modes:
2121
# Configure the Rancher2 provider to admin
2222
provider "rancher2" {
2323
api_url = "https://rancher.my-domain.com"
24-
access_key = "${var.rancher2_access_key}"
25-
secret_key = "${var.rancher2_secret_key}"
24+
access_key = var.rancher2_access_key
25+
secret_key = var.rancher2_secret_key
2626
}
2727
```
2828

@@ -56,8 +56,8 @@ resource "rancher2_bootstrap" "admin" {
5656
provider "rancher2" {
5757
alias = "admin"
5858
59-
api_url = "${rancher2_bootstrap.admin.url}"
60-
token_key = "${rancher2_bootstrap.admin.token}"
59+
api_url = rancher2_bootstrap.admin.url
60+
token_key = rancher2_bootstrap.admin.token
6161
insecure = true
6262
}
6363

website/docs/r/cluster.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ resource "rancher2_cluster" "foo-custom" {
9696
"prometheus.resources.core.requests.memory" = "750Mi"
9797
"prometheus.retention" = "12h"
9898
}
99+
version = "0.1.0"
99100
}
100101
}
101102
```
@@ -955,6 +956,7 @@ The following arguments are supported:
955956
#### Arguments
956957

957958
* `answers` - (Optional/Computed) Key/value answers for monitor input (map)
959+
* `version` - (Optional) rancher-monitoring chart version (string)
958960

959961
### `cluster_template_answers`
960962

0 commit comments

Comments
 (0)