-
Notifications
You must be signed in to change notification settings - Fork 647
/
data_source_ibm_sm_secret_groups.go
135 lines (119 loc) · 4.38 KB
/
data_source_ibm_sm_secret_groups.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// Copyright IBM Corp. 2022 All Rights Reserved.
// Licensed under the Mozilla Public License v2.0
package secretsmanager
import (
"context"
"fmt"
"log"
"time"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
"github.com/IBM/secrets-manager-go-sdk/v2/secretsmanagerv2"
)
func DataSourceIbmSmSecretGroups() *schema.Resource {
return &schema.Resource{
ReadContext: dataSourceIbmSmSecretGroupsRead,
Schema: map[string]*schema.Schema{
"secret_groups": &schema.Schema{
Type: schema.TypeList,
Computed: true,
Description: "A collection of secret groups.",
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"id": &schema.Schema{
Type: schema.TypeString,
Computed: true,
Description: "A v4 UUID identifier.",
},
"name": &schema.Schema{
Type: schema.TypeString,
Computed: true,
Description: "The name of your secret group.",
},
"description": &schema.Schema{
Type: schema.TypeString,
Computed: true,
Description: "An extended description of your secret group.To protect your privacy, do not use personal data, such as your name or location, as a description for your secret group.",
},
"created_at": &schema.Schema{
Type: schema.TypeString,
Computed: true,
Description: "The date that a resource was created. The date format follows RFC 3339.",
},
"updated_at": &schema.Schema{
Type: schema.TypeString,
Computed: true,
Description: "The date that a resource was recently modified. The date format follows RFC 3339.",
},
},
},
},
"total_count": &schema.Schema{
Type: schema.TypeInt,
Computed: true,
Description: "The total number of resources in a collection.",
},
},
}
}
func dataSourceIbmSmSecretGroupsRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
secretsManagerClient, err := meta.(conns.ClientSession).SecretsManagerV2()
if err != nil {
return diag.FromErr(err)
}
region := getRegion(secretsManagerClient, d)
instanceId := d.Get("instance_id").(string)
secretsManagerClient = getClientWithInstanceEndpoint(secretsManagerClient, instanceId, region, getEndpointType(secretsManagerClient, d))
listSecretGroupsOptions := &secretsmanagerv2.ListSecretGroupsOptions{}
secretGroupCollection, response, err := secretsManagerClient.ListSecretGroupsWithContext(context, listSecretGroupsOptions)
if err != nil {
log.Printf("[DEBUG] ListSecretGroupsWithContext failed %s\n%s", err, response)
return diag.FromErr(fmt.Errorf("ListSecretGroupsWithContext failed %s\n%s", err, response))
}
d.SetId(fmt.Sprintf("%s/%s", region, instanceId))
secretGroups := []map[string]interface{}{}
if secretGroupCollection.SecretGroups != nil {
for _, modelItem := range secretGroupCollection.SecretGroups {
modelMap, err := dataSourceIbmSmSecretGroupsSecretGroupToMap(&modelItem)
if err != nil {
return diag.FromErr(err)
}
secretGroups = append(secretGroups, modelMap)
}
}
if err = d.Set("secret_groups", secretGroups); err != nil {
return diag.FromErr(fmt.Errorf("Error setting secret_groups %s", err))
}
if err = d.Set("total_count", flex.IntValue(secretGroupCollection.TotalCount)); err != nil {
return diag.FromErr(fmt.Errorf("Error setting total_count: %s", err))
}
if err = d.Set("region", region); err != nil {
return diag.FromErr(fmt.Errorf("Error setting region: %s", err))
}
return nil
}
// dataSourceIbmSmSecretGroupsID returns a reasonable ID for the list.
func dataSourceIbmSmSecretGroupsID(d *schema.ResourceData) string {
return time.Now().UTC().String()
}
func dataSourceIbmSmSecretGroupsSecretGroupToMap(model *secretsmanagerv2.SecretGroup) (map[string]interface{}, error) {
modelMap := make(map[string]interface{})
if model.ID != nil {
modelMap["id"] = *model.ID
}
if model.Name != nil {
modelMap["name"] = *model.Name
}
if model.Description != nil {
modelMap["description"] = *model.Description
}
if model.CreatedAt != nil {
modelMap["created_at"] = model.CreatedAt.String()
}
if model.UpdatedAt != nil {
modelMap["updated_at"] = model.UpdatedAt.String()
}
return modelMap, nil
}