Skip to content

Commit e9d796d

Browse files
authored
Merge pull request #34 from arangodb-managed/OAS-4312
OAS-4312 | Added disk performance support
2 parents 2037857 + 555b1c4 commit e9d796d

File tree

4 files changed

+65
-43
lines changed

4 files changed

+65
-43
lines changed

go.mod

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module github.com/arangodb-managed/terraform-provider-oasis
22

33
require (
4-
github.com/arangodb-managed/apis v0.72.5
4+
github.com/arangodb-managed/apis v0.73.1
55
github.com/arangodb-managed/log-helper v0.2.0
66
github.com/gogo/protobuf v1.3.0
77
github.com/hashicorp/hcl v1.0.0 // indirect
@@ -49,29 +49,29 @@ replace google.golang.org/api => google.golang.org/api v0.36.0
4949

5050
replace google.golang.org/grpc => google.golang.org/grpc v1.36.0
5151

52-
replace k8s.io/api => k8s.io/api v0.19.8
52+
replace k8s.io/api => k8s.io/api v0.21.8
5353

54-
replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.19.8
54+
replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.21.8
5555

56-
replace k8s.io/apimachinery => k8s.io/apimachinery v0.19.8
56+
replace k8s.io/apimachinery => k8s.io/apimachinery v0.21.8
5757

58-
replace k8s.io/apiserver => k8s.io/apiserver v0.19.8
58+
replace k8s.io/apiserver => k8s.io/apiserver v0.21.8
5959

60-
replace k8s.io/client-go => k8s.io/client-go v0.19.8
60+
replace k8s.io/client-go => k8s.io/client-go v0.21.8
6161

62-
replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.19.8
62+
replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.21.8
6363

64-
replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.19.8
64+
replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.21.8
6565

66-
replace k8s.io/code-generator => k8s.io/code-generator v0.19.8
66+
replace k8s.io/code-generator => k8s.io/code-generator v0.21.8
6767

68-
replace k8s.io/component-base => k8s.io/component-base v0.19.8
68+
replace k8s.io/component-base => k8s.io/component-base v0.21.8
6969

70-
replace k8s.io/kubernetes => k8s.io/kubernetes v1.19.8
70+
replace k8s.io/kubernetes => k8s.io/kubernetes v1.21.8
7171

72-
replace k8s.io/metrics => k8s.io/metrics v0.19.8
72+
replace k8s.io/metrics => k8s.io/metrics v0.21.8
7373

74-
replace sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.8.3
74+
replace sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.9.7
7575

7676
replace sourcegraph.com/sourcegraph/go-diff => github.com/sourcegraph/go-diff v0.5.0
7777

@@ -81,29 +81,29 @@ replace github.com/cilium/cilium => github.com/cilium/cilium v1.9.5
8181

8282
replace github.com/optiopay/kafka => github.com/optiopay/kafka v2.0.4+incompatible
8383

84-
replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.19.8
84+
replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.21.8
8585

86-
replace k8s.io/cri-api => k8s.io/cri-api v0.19.8
86+
replace k8s.io/cri-api => k8s.io/cri-api v0.21.8
8787

88-
replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.19.8
88+
replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.21.8
8989

90-
replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.19.8
90+
replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.21.8
9191

92-
replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.19.8
92+
replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.21.8
9393

94-
replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.19.8
94+
replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.21.8
9595

96-
replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.19.8
96+
replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.21.8
9797

98-
replace k8s.io/kubelet => k8s.io/kubelet v0.19.8
98+
replace k8s.io/kubelet => k8s.io/kubelet v0.21.8
9999

100-
replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.19.8
100+
replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.21.8
101101

102-
replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.19.8
102+
replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.21.8
103103

104104
replace google.golang.org/genproto => google.golang.org/genproto v0.0.0-20201211151036-40ec1c210f7a
105105

106-
replace k8s.io/kubectl => k8s.io/kubectl v0.19.8
106+
replace k8s.io/kubectl => k8s.io/kubectl v0.21.8
107107

108108
replace github.com/nats-io/nats.go => github.com/nats-io/nats.go v1.10.0
109109

@@ -116,3 +116,9 @@ replace github.com/prometheus-operator/prometheus-operator/pkg/client => github.
116116
replace github.com/prometheus-operator/prometheus-operator => github.com/prometheus-operator/prometheus-operator v0.47.1
117117

118118
replace go.uber.org/multierr => go.uber.org/multierr v1.6.1-0.20201027220001-0eb6eb5383b9
119+
120+
replace k8s.io/component-helpers => k8s.io/component-helpers v0.21.8
121+
122+
replace k8s.io/controller-manager => k8s.io/controller-manager v0.21.8
123+
124+
replace k8s.io/mount-utils => k8s.io/mount-utils v0.21.8

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFU
4545
github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
4646
github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0=
4747
github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk=
48-
github.com/arangodb-managed/apis v0.72.5 h1:hzE4xZNxSFpO/rhvMxxHz5LPbX4L+qQzWUdqM0TFqNw=
49-
github.com/arangodb-managed/apis v0.72.5/go.mod h1:dSEV+DTPdZNH06qVqFWA+F0OcaL2ePGEo+odyMaU72Y=
48+
github.com/arangodb-managed/apis v0.73.1 h1:jewiM4D0weW2epIZQeZttd7IEWHWV/dGltyMAYMF++s=
49+
github.com/arangodb-managed/apis v0.73.1/go.mod h1:dSEV+DTPdZNH06qVqFWA+F0OcaL2ePGEo+odyMaU72Y=
5050
github.com/arangodb-managed/log-helper v0.2.0 h1:QK85i0a+mGM++wK625Oe1z4HuXhvaN3vR/Nunwa1qAA=
5151
github.com/arangodb-managed/log-helper v0.2.0/go.mod h1:WJogNCCXWM5OQx/ZYvtRo/1zwm/IpKj+f4QVtM8hNJw=
5252
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=

pkg/resource_deployment.go

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//
22
// DISCLAIMER
33
//
4-
// Copyright 2020-2021 ArangoDB GmbH, Cologne, Germany
4+
// Copyright 2020-2022 ArangoDB GmbH, Cologne, Germany
55
//
66
// Licensed under the Apache License, Version 2.0 (the "License");
77
// you may not use this file except in compliance with the License.
@@ -17,11 +17,6 @@
1717
//
1818
// Copyright holder is ArangoDB GmbH, Cologne, Germany
1919
//
20-
// Author Gergely Brautigam
21-
// Author Robert Stam
22-
// Author Marcin Swiderski
23-
// Author Ewout Prangsma
24-
//
2520

2621
package pkg
2722

@@ -58,6 +53,7 @@ const (
5853
deplConfigurationMaximumNodeDiskSizeFieldName = "maximum_node_disk_size"
5954
deplNotificationConfigurationFieldName = "notification_settings"
6055
deplNotificationConfigurationEmailAddressesFieldName = "email_addresses"
56+
deplDiskPerformanceFieldName = "disk_performance"
6157
)
6258

6359
func resourceDeployment() *schema.Resource {
@@ -209,6 +205,11 @@ func resourceDeployment() *schema.Resource {
209205
},
210206
},
211207
},
208+
209+
deplDiskPerformanceFieldName: {
210+
Type: schema.TypeString,
211+
Optional: true,
212+
},
212213
},
213214
}
214215
}
@@ -368,6 +369,7 @@ func expandDeploymentResource(d *schema.ResourceData, defaultProject string) (*d
368369
sec securityFields
369370
err error
370371
notificationSetting *data.Deployment_NotificationSettings
372+
diskPerformanceID string
371373
)
372374
if v, ok := d.GetOk(deplNameFieldName); ok {
373375
name = v.(string)
@@ -414,6 +416,9 @@ func expandDeploymentResource(d *schema.ResourceData, defaultProject string) (*d
414416
MaximumNodeDiskSize: int32(conf.maximumNodeDiskSize),
415417
}
416418
}
419+
if v, ok := d.GetOk(deplDiskPerformanceFieldName); ok {
420+
diskPerformanceID = v.(string)
421+
}
417422

418423
return &data.Deployment{
419424
Name: name,
@@ -432,6 +437,7 @@ func expandDeploymentResource(d *schema.ResourceData, defaultProject string) (*d
432437
},
433438
NotificationSettings: notificationSetting,
434439
DiskAutoSizeSettings: autoSizeSettings,
440+
DiskPerformanceId: diskPerformanceID,
435441
}, nil
436442
}
437443

@@ -557,13 +563,14 @@ func flattenDeployment(depl *data.Deployment) map[string]interface{} {
557563
notificationSetting := flattenNotificationSettings(depl)
558564

559565
result := map[string]interface{}{
560-
deplNameFieldName: depl.GetName(),
561-
deplProjectFieldName: depl.GetProjectId(),
562-
deplDescriptionFieldName: depl.GetDescription(),
563-
deplConfigurationFieldName: conf,
564-
deplLocationFieldName: loc,
565-
deplVersionFieldName: ver,
566-
deplSecurityFieldName: sec,
566+
deplNameFieldName: depl.GetName(),
567+
deplProjectFieldName: depl.GetProjectId(),
568+
deplDescriptionFieldName: depl.GetDescription(),
569+
deplConfigurationFieldName: conf,
570+
deplLocationFieldName: loc,
571+
deplVersionFieldName: ver,
572+
deplSecurityFieldName: sec,
573+
deplDiskPerformanceFieldName: depl.GetDiskPerformanceId(),
567574
}
568575
if notificationSetting != nil {
569576
result[deplNotificationConfigurationFieldName] = notificationSetting
@@ -701,6 +708,10 @@ func resourceDeploymentUpdate(d *schema.ResourceData, m interface{}) error {
701708
depl.NotificationSettings = settings
702709
}
703710

711+
if d.HasChange(deplDiskPerformanceFieldName) {
712+
depl.DiskPerformanceId = d.Get(deplDiskPerformanceFieldName).(string)
713+
}
714+
704715
if res, err := datac.UpdateDeployment(client.ctxWithToken, depl); err != nil {
705716
client.log.Error().Err(err).Msg("Failed to update deployment")
706717
return err

pkg/resource_deployment_test.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//
22
// DISCLAIMER
33
//
4-
// Copyright 2020-2021 ArangoDB GmbH, Cologne, Germany
4+
// Copyright 2020-2022 ArangoDB GmbH, Cologne, Germany
55
//
66
// Licensed under the Apache License, Version 2.0 (the "License");
77
// you may not use this file except in compliance with the License.
@@ -17,9 +17,6 @@
1717
//
1818
// Copyright holder is ArangoDB GmbH, Cologne, Germany
1919
//
20-
// Author Gergely Brautigam
21-
// Author Robert Stam
22-
//
2320

2421
package pkg
2522

@@ -61,6 +58,7 @@ func TestResourceDeployment(t *testing.T) {
6158
Config: testDeploymentConfig(res, name, pid),
6259
Check: resource.ComposeTestCheckFunc(
6360
resource.TestCheckResourceAttr("oasis_deployment."+res, deplNameFieldName, name),
61+
resource.TestCheckResourceAttr("oasis_deployment."+res, deplDiskPerformanceFieldName, "dp-3"),
6462
),
6563
},
6664
},
@@ -87,6 +85,7 @@ func TestFlattenDeploymentResource(t *testing.T) {
8785
DiskAutoSizeSettings: &data.Deployment_DiskAutoSizeSettings{
8886
MaximumNodeDiskSize: 40,
8987
},
88+
DiskPerformanceId: "dp-1",
9089
}
9190
flattened := flattenDeployment(depl)
9291
expected := map[string]interface{}{
@@ -119,6 +118,7 @@ func TestFlattenDeploymentResource(t *testing.T) {
119118
deplConfigurationMaximumNodeDiskSizeFieldName: 40,
120119
},
121120
},
121+
deplDiskPerformanceFieldName: "dp-1",
122122
}
123123
assert.Equal(t, expected, flattened)
124124
}
@@ -172,6 +172,7 @@ func TestFlattenDeploymentResourceDisableFoxxAuth(t *testing.T) {
172172
deplConfigurationNodeDiskSizeFieldName: 32,
173173
},
174174
},
175+
deplDiskPerformanceFieldName: "", // Not set
175176
}
176177
assert.Equal(t, expected, flattened)
177178
}
@@ -233,6 +234,7 @@ func TestFlattenDeploymentResourceNotificationSettings(t *testing.T) {
233234
deplNotificationConfigurationEmailAddressesFieldName: []string{"[email protected]"},
234235
},
235236
},
237+
deplDiskPerformanceFieldName: "",
236238
}
237239
assert.Equal(t, expected, flattened)
238240
}
@@ -258,6 +260,7 @@ func TestExpandingDeploymentResource(t *testing.T) {
258260
DiskAutoSizeSettings: &data.Deployment_DiskAutoSizeSettings{
259261
MaximumNodeDiskSize: 40,
260262
},
263+
DiskPerformanceId: "dp-2",
261264
}
262265
raw := map[string]interface{}{
263266
deplProjectFieldName: "123456789",
@@ -289,6 +292,7 @@ func TestExpandingDeploymentResource(t *testing.T) {
289292
deplConfigurationMaximumNodeDiskSizeFieldName: 40,
290293
},
291294
},
295+
deplDiskPerformanceFieldName: "dp-2",
292296
}
293297
s := resourceDeployment().Schema
294298
resourceData := schema.TestResourceDataRaw(t, s, raw)
@@ -420,6 +424,7 @@ func testDeploymentConfig(resource, name, project string) string {
420424
model = "oneshard"
421425
node_count = 3
422426
}
427+
disk_performance = "dp-3"
423428
}`, resource, name, project)
424429
}
425430

0 commit comments

Comments
 (0)