Skip to content
This repository was archived by the owner on Mar 1, 2023. It is now read-only.

Commit c81f52f

Browse files
committed
snapshot metadata added
1 parent 6a726e1 commit c81f52f

File tree

7 files changed

+51
-6
lines changed

7 files changed

+51
-6
lines changed

docs/resources/gcore_snapshot.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ resource "gcore_snapshot" "snapshot" {
2626
name = "snapshot example"
2727
volume_id = "28e9edcb-1593-41fe-971b-da729c6ec301"
2828
description = "snapshot example description"
29+
metadata = {
30+
env = "test"
31+
}
2932
}
3033
```
3134

@@ -42,6 +45,7 @@ resource "gcore_snapshot" "snapshot" {
4245
- **description** (String)
4346
- **id** (String) The ID of this resource.
4447
- **last_updated** (String)
48+
- **metadata** (Map of String)
4549
- **project_id** (Number)
4650
- **project_name** (String)
4751
- **region_id** (Number)

examples/resources/gcore_snapshot/resource.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ resource "gcore_snapshot" "snapshot" {
1111
name = "snapshot example"
1212
volume_id = "28e9edcb-1593-41fe-971b-da729c6ec301"
1313
description = "snapshot example description"
14+
metadata = {
15+
env = "test"
16+
}
1417
}
1518

1619

gcore/resource_gcore_k8s.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,6 @@ func resourceK8sUpdate(ctx context.Context, d *schema.ResourceData, m interface{
464464
if d.HasChange("pool.0.node_count") {
465465
resizeOpts := clusters.ResizeOpts{
466466
NodeCount: pool["node_count"].(int),
467-
Pool: poolID,
468467
}
469468
results, err := clusters.Resize(client, clusterID, poolID, resizeOpts).Extract()
470469
if err != nil {

gcore/resource_gcore_k8s_pool.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,6 @@ func resourceK8sPoolUpdate(ctx context.Context, d *schema.ResourceData, m interf
247247
if d.HasChange("node_count") {
248248
resizeOpts := clusters.ResizeOpts{
249249
NodeCount: d.Get("node_count").(int),
250-
Pool: poolID,
251250
}
252251
results, err := clusters.Resize(client, clusterID, poolID, resizeOpts).Extract()
253252
if err != nil {

gcore/resource_gcore_snapshot.go

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,14 @@ func resourceSnapshot() *schema.Resource {
9393
Required: true,
9494
ForceNew: true,
9595
},
96+
"metadata": &schema.Schema{
97+
Type: schema.TypeMap,
98+
Optional: true,
99+
Computed: true,
100+
Elem: &schema.Schema{
101+
Type: schema.TypeString,
102+
},
103+
},
96104
"last_updated": &schema.Schema{
97105
Type: schema.TypeString,
98106
Optional: true,
@@ -174,6 +182,9 @@ func resourceSnapshotRead(ctx context.Context, d *schema.ResourceData, m interfa
174182
d.Set("volume_id", snapshot.VolumeID)
175183
d.Set("region_id", snapshot.RegionID)
176184
d.Set("project_id", snapshot.ProjectID)
185+
if err := d.Set("metadata", snapshot.Metadata); err != nil {
186+
return diag.FromErr(err)
187+
}
177188

178189
log.Println("[DEBUG] Finish snapshot reading")
179190
return diags
@@ -182,7 +193,24 @@ func resourceSnapshotRead(ctx context.Context, d *schema.ResourceData, m interfa
182193
func resourceSnapshotUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
183194
log.Println("[DEBUG] Start snapshot updating")
184195
snapshotID := d.Id()
185-
log.Printf("[DEBUG] Snapshot id = %s", snapshotID)
196+
if d.HasChange("metadata") {
197+
config := m.(*Config)
198+
provider := config.Provider
199+
client, err := CreateClient(provider, d, snapshotsPoint, versionPointV1)
200+
if err != nil {
201+
return diag.FromErr(err)
202+
}
203+
204+
newMeta := prepareRawMetadata(d.Get("metadata").(map[string]interface{}))
205+
metadata := make([]snapshots.MetadataOpts, 0, len(newMeta))
206+
for k, v := range newMeta {
207+
metadata = append(metadata, snapshots.MetadataOpts{Key: k, Value: v})
208+
}
209+
opts := snapshots.MetadataSetOpts{Metadata: metadata}
210+
if _, err := snapshots.MetadataReplace(client, snapshotID, opts).Extract(); err != nil {
211+
return diag.FromErr(err)
212+
}
213+
}
186214
d.Set("last_updated", time.Now().Format(time.RFC850))
187215
log.Println("[DEBUG] Finish snapshot updating")
188216
return resourceSnapshotRead(ctx, d, m)
@@ -233,6 +261,18 @@ func getSnapshotData(d *schema.ResourceData) (*snapshots.CreateOpts, error) {
233261
snapshotData.Name = d.Get("name").(string)
234262
snapshotData.VolumeID = d.Get("volume_id").(string)
235263
snapshotData.Description = d.Get("description").(string)
264+
metadataRaw := d.Get("metadata").(map[string]interface{})
265+
if len(metadataRaw) > 0 {
266+
snapshotData.Metadata = prepareRawMetadata(metadataRaw)
267+
}
236268

237269
return &snapshotData, nil
238270
}
271+
272+
func prepareRawMetadata(raw map[string]interface{}) map[string]string {
273+
meta := make(map[string]string, len(raw))
274+
for k, v := range raw {
275+
meta[k] = v.(string)
276+
}
277+
return meta
278+
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
github.com/G-Core/g-dns-sdk-go v0.1.0
77
github.com/G-Core/gcorelabs-storage-sdk-go v0.0.9
88
github.com/G-Core/gcorelabscdn-go v0.0.0-20210503173228-b4ac8b2402ff
9-
github.com/G-Core/gcorelabscloud-go v0.4.15
9+
github.com/G-Core/gcorelabscloud-go v0.4.26
1010
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320
1111
github.com/hashicorp/terraform-plugin-docs v0.4.0 // indirect
1212
github.com/hashicorp/terraform-plugin-sdk/v2 v2.7.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ github.com/G-Core/gcorelabs-storage-sdk-go v0.0.9 h1:6uyKbknI8Q2pIJApPBf6JA0CN5O
4747
github.com/G-Core/gcorelabs-storage-sdk-go v0.0.9/go.mod h1:BZef79y4G28n8ic3x6iQWbW+mtpHPSUyJRfIRSkeAJw=
4848
github.com/G-Core/gcorelabscdn-go v0.0.0-20210503173228-b4ac8b2402ff h1:kIH66Shwb0Y9kvBgykpzmQn2soiHDTCJ/Rr5cQQ1cOk=
4949
github.com/G-Core/gcorelabscdn-go v0.0.0-20210503173228-b4ac8b2402ff/go.mod h1:iSGXaTvZBzDHQW+rKFS918BgFVpONcyLEijwh8WsXpE=
50-
github.com/G-Core/gcorelabscloud-go v0.4.15 h1:cu1GUGiUaGQlljlxRACqNvr6eKx2MCyEXyB8zEVcH50=
51-
github.com/G-Core/gcorelabscloud-go v0.4.15/go.mod h1:Z1MF80mWagEUrxygtYkvW/MJEYNmIUPsIEYBB3cKjOM=
50+
github.com/G-Core/gcorelabscloud-go v0.4.26 h1:jClzBf/JG9vX426Qjb+2IFFFSUF5N3E9JbjxaxuVuto=
51+
github.com/G-Core/gcorelabscloud-go v0.4.26/go.mod h1:Z1MF80mWagEUrxygtYkvW/MJEYNmIUPsIEYBB3cKjOM=
5252
github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg=
5353
github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
5454
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=

0 commit comments

Comments
 (0)