Skip to content

Commit 5f7893b

Browse files
authored
Merge branch 'master' into projectalert
2 parents edd5b63 + ece0bfc commit 5f7893b

27 files changed

Lines changed: 784 additions & 44 deletions

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## 1.9.0 (Unreleased)
1+
## 1.8.3 (Unreleased)
22

33
FEATURES:
44

@@ -11,6 +11,11 @@ ENHANCEMENTS:
1111
BUG FIXES:
1212

1313
* Fix project alert group and alert rule datasource and resoruce documentation
14+
* Added `version` argument to `cluster_monitoring_input` argument on `rancher2_cluster` and `rancher2_project` resources
15+
16+
BUG FIXES:
17+
18+
* Fixed rancher timeout on bootstrapping
1419

1520
## 1.8.2 (April 02, 2020)
1621

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_cloud_credential.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ func resourceRancher2CloudCredentialUpdate(d *schema.ResourceData, meta interfac
133133
update["azurecredentialConfig"] = expandCloudCredentialAzure(d.Get("azure_credential_config").([]interface{}))
134134
case digitaloceanConfigDriver:
135135
update["digitaloceancredentialConfig"] = expandCloudCredentialDigitalocean(d.Get("digitalocean_credential_config").([]interface{}))
136+
case linodeConfigDriver:
137+
update["linodecredentialConfig"] = expandCloudCredentialLinode(d.Get("linode_credential_config").([]interface{}))
136138
case openstackConfigDriver:
137139
update["openstackcredentialConfig"] = expandCloudCredentialOpenstack(d.Get("openstack_credential_config").([]interface{}))
138140
case vmwarevsphereConfigDriver:

rancher2/resource_rancher2_cloud_credential_test.go

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,35 @@ resource "rancher2_cloud_credential" "foo" {
107107
digitalocean_credential_config {
108108
access_token = "XXXXXXXXXXXXXXXXXXXX"
109109
}
110+
}
111+
`
112+
testAccRancher2CloudCredentialConfigLinode = `
113+
resource "rancher2_cloud_credential" "foo" {
114+
name = "foo"
115+
description= "Terraform cloudCredential acceptance test"
116+
linode_credential_config {
117+
token = "XXXXXXXXXXXXXXXXXXXX"
118+
}
119+
}
120+
`
121+
122+
testAccRancher2CloudCredentialUpdateConfigLinode = `
123+
resource "rancher2_cloud_credential" "foo" {
124+
name = "foo"
125+
description= "Terraform cloudCredential acceptance test - updated"
126+
linode_credential_config {
127+
token = "YYYYYYYYYYYYYYYYYYYY"
128+
}
129+
}
130+
`
131+
132+
testAccRancher2CloudCredentialRecreateConfigLinode = `
133+
resource "rancher2_cloud_credential" "foo" {
134+
name = "foo"
135+
description= "Terraform cloudCredential acceptance test"
136+
linode_credential_config {
137+
token = "XXXXXXXXXXXXXXXXXXXX"
138+
}
110139
}
111140
`
112141
testAccRancher2CloudCredentialConfigOpenstack = `
@@ -361,6 +390,68 @@ func TestAccRancher2CloudCredential_disappears_Digitalocean(t *testing.T) {
361390
})
362391
}
363392

393+
func TestAccRancher2CloudCredential_basic_Linode(t *testing.T) {
394+
var cloudCredential *CloudCredential
395+
396+
resource.Test(t, resource.TestCase{
397+
PreCheck: func() { testAccPreCheck(t) },
398+
Providers: testAccProviders,
399+
CheckDestroy: testAccCheckRancher2CloudCredentialDestroy,
400+
Steps: []resource.TestStep{
401+
resource.TestStep{
402+
Config: testAccRancher2CloudCredentialConfigLinode,
403+
Check: resource.ComposeTestCheckFunc(
404+
testAccCheckRancher2CloudCredentialExists(testAccRancher2CloudCredentialType+".foo", cloudCredential),
405+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "name", "foo"),
406+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "description", "Terraform cloudCredential acceptance test"),
407+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "driver", linodeConfigDriver),
408+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "linode_credential_config.0.token", "XXXXXXXXXXXXXXXXXXXX"),
409+
),
410+
},
411+
resource.TestStep{
412+
Config: testAccRancher2CloudCredentialUpdateConfigLinode,
413+
Check: resource.ComposeTestCheckFunc(
414+
testAccCheckRancher2CloudCredentialExists(testAccRancher2CloudCredentialType+".foo", cloudCredential),
415+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "name", "foo"),
416+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "description", "Terraform cloudCredential acceptance test - updated"),
417+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "driver", linodeConfigDriver),
418+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "linode_credential_config.0.token", "YYYYYYYYYYYYYYYYYYYY"),
419+
),
420+
},
421+
resource.TestStep{
422+
Config: testAccRancher2CloudCredentialRecreateConfigLinode,
423+
Check: resource.ComposeTestCheckFunc(
424+
testAccCheckRancher2CloudCredentialExists(testAccRancher2CloudCredentialType+".foo", cloudCredential),
425+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "name", "foo"),
426+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "description", "Terraform cloudCredential acceptance test"),
427+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "driver", linodeConfigDriver),
428+
resource.TestCheckResourceAttr(testAccRancher2CloudCredentialType+".foo", "linode_credential_config.0.token", "XXXXXXXXXXXXXXXXXXXX"),
429+
),
430+
},
431+
},
432+
})
433+
}
434+
435+
func TestAccRancher2CloudCredential_disappears_Linode(t *testing.T) {
436+
var cloudCredential *CloudCredential
437+
438+
resource.Test(t, resource.TestCase{
439+
PreCheck: func() { testAccPreCheck(t) },
440+
Providers: testAccProviders,
441+
CheckDestroy: testAccCheckRancher2CloudCredentialDestroy,
442+
Steps: []resource.TestStep{
443+
resource.TestStep{
444+
Config: testAccRancher2CloudCredentialConfigLinode,
445+
Check: resource.ComposeTestCheckFunc(
446+
testAccCheckRancher2CloudCredentialExists(testAccRancher2CloudCredentialType+".foo", cloudCredential),
447+
testAccRancher2CloudCredentialDisappears(cloudCredential),
448+
),
449+
ExpectNonEmptyPlan: true,
450+
},
451+
},
452+
})
453+
}
454+
364455
func TestAccRancher2CloudCredential_basic_Openstack(t *testing.T) {
365456
var cloudCredential *CloudCredential
366457

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_node_template.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ func resourceRancher2NodeTemplateUpdate(d *schema.ResourceData, meta interface{}
146146
update["azureConfig"] = expandAzureConfig(d.Get("azure_config").([]interface{}))
147147
case digitaloceanConfigDriver:
148148
update["digitaloceanConfig"] = expandDigitaloceanConfig(d.Get("digitalocean_config").([]interface{}))
149+
case linodeConfigDriver:
150+
update["linodeConfig"] = expandLinodeConfig(d.Get("linode_config").([]interface{}))
149151
case openstackConfigDriver:
150152
update["openstackConfig"] = expandOpenstackConfig(d.Get("openstack_config").([]interface{}))
151153
case opennebulaConfigDriver:

0 commit comments

Comments
 (0)