Skip to content

Commit 3e4bfa9

Browse files
aviribAvi Ribchinsky
andauthored
Get secret by name (IBM-Cloud#4825)
* Get secret by name * Applying review comments * Added test cases for get secret by name * Added test cases for get secret by name * Updated documentation --------- Co-authored-by: Avi Ribchinsky <[email protected]>
1 parent 8126a34 commit 3e4bfa9

24 files changed

+462
-292
lines changed

.secrets.baseline

Lines changed: 17 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,8 @@
33
"files": "go.mod|go.sum|.*.map|^.secrets.baseline$",
44
"lines": null
55
},
6-
"generated_at": "2023-09-19T16:31:40Z",
6+
"generated_at": "2023-09-27T10:48:50Z",
77
"plugins_used": [
8-
{
9-
"name": "AWSKeyDetector"
10-
},
118
{
129
"name": "ArtifactoryDetector"
1310
},
@@ -21,12 +18,6 @@
2118
{
2219
"name": "BasicAuthDetector"
2320
},
24-
{
25-
"name": "BoxDetector"
26-
},
27-
{
28-
"name": "CloudantDetector"
29-
},
3021
{
3122
"ghe_instance": "github.ibm.com",
3223
"name": "GheDetector"
@@ -51,9 +42,6 @@
5142
"keyword_exclude": null,
5243
"name": "KeywordDetector"
5344
},
54-
{
55-
"name": "MailchimpDetector"
56-
},
5745
{
5846
"name": "NpmDetector"
5947
},
@@ -68,12 +56,6 @@
6856
},
6957
{
7058
"name": "SquareOAuthDetector"
71-
},
72-
{
73-
"name": "StripeDetector"
74-
},
75-
{
76-
"name": "TwilioKeyDetector"
7759
}
7860
],
7961
"results": {
@@ -742,23 +724,23 @@
742724
"hashed_secret": "731438016c5ab94431f61820f35e3ae5f8ad6004",
743725
"is_secret": false,
744726
"is_verified": false,
745-
"line_number": 353,
727+
"line_number": 355,
746728
"type": "Secret Keyword",
747729
"verified_result": null
748730
},
749731
{
750732
"hashed_secret": "12da2e35d6b50c902c014f1ab9e3032650368df7",
751733
"is_secret": false,
752734
"is_verified": false,
753-
"line_number": 359,
735+
"line_number": 361,
754736
"type": "Secret Keyword",
755737
"verified_result": null
756738
},
757739
{
758740
"hashed_secret": "813274ccae5b6b509379ab56982d862f7b5969b6",
759741
"is_secret": false,
760742
"is_verified": false,
761-
"line_number": 1065,
743+
"line_number": 1072,
762744
"type": "Base64 High Entropy String",
763745
"verified_result": null
764746
}
@@ -846,15 +828,15 @@
846828
"hashed_secret": "c8b6f5ef11b9223ac35a5663975a466ebe7ebba9",
847829
"is_secret": false,
848830
"is_verified": false,
849-
"line_number": 1763,
831+
"line_number": 1766,
850832
"type": "Secret Keyword",
851833
"verified_result": null
852834
},
853835
{
854836
"hashed_secret": "8abf4899c01104241510ba87685ad4de76b0c437",
855837
"is_secret": false,
856838
"is_verified": false,
857-
"line_number": 1769,
839+
"line_number": 1772,
858840
"type": "Secret Keyword",
859841
"verified_result": null
860842
}
@@ -3014,15 +2996,15 @@
30142996
"hashed_secret": "3046d9f6cfaaeea6eed9bb7a4ab010fe49b0cfd4",
30152997
"is_secret": false,
30162998
"is_verified": false,
3017-
"line_number": 177,
2999+
"line_number": 181,
30183000
"type": "Secret Keyword",
30193001
"verified_result": null
30203002
},
30213003
{
30223004
"hashed_secret": "b732fb611fd46a38e8667f9972e0cde777fbe37f",
30233005
"is_secret": false,
30243006
"is_verified": false,
3025-
"line_number": 317,
3007+
"line_number": 308,
30263008
"type": "Secret Keyword",
30273009
"verified_result": null
30283010
}
@@ -3070,15 +3052,15 @@
30703052
"hashed_secret": "3046d9f6cfaaeea6eed9bb7a4ab010fe49b0cfd4",
30713053
"is_secret": false,
30723054
"is_verified": false,
3073-
"line_number": 189,
3055+
"line_number": 193,
30743056
"type": "Secret Keyword",
30753057
"verified_result": null
30763058
},
30773059
{
30783060
"hashed_secret": "b732fb611fd46a38e8667f9972e0cde777fbe37f",
30793061
"is_secret": false,
30803062
"is_verified": false,
3081-
"line_number": 345,
3063+
"line_number": 335,
30823064
"type": "Secret Keyword",
30833065
"verified_result": null
30843066
}
@@ -3088,15 +3070,15 @@
30883070
"hashed_secret": "3046d9f6cfaaeea6eed9bb7a4ab010fe49b0cfd4",
30893071
"is_secret": false,
30903072
"is_verified": false,
3091-
"line_number": 227,
3073+
"line_number": 231,
30923074
"type": "Secret Keyword",
30933075
"verified_result": null
30943076
},
30953077
{
30963078
"hashed_secret": "b732fb611fd46a38e8667f9972e0cde777fbe37f",
30973079
"is_secret": false,
30983080
"is_verified": false,
3099-
"line_number": 420,
3081+
"line_number": 410,
31003082
"type": "Secret Keyword",
31013083
"verified_result": null
31023084
}
@@ -3142,15 +3124,15 @@
31423124
"hashed_secret": "3046d9f6cfaaeea6eed9bb7a4ab010fe49b0cfd4",
31433125
"is_secret": false,
31443126
"is_verified": false,
3145-
"line_number": 292,
3127+
"line_number": 296,
31463128
"type": "Secret Keyword",
31473129
"verified_result": null
31483130
},
31493131
{
31503132
"hashed_secret": "b732fb611fd46a38e8667f9972e0cde777fbe37f",
31513133
"is_secret": false,
31523134
"is_verified": false,
3153-
"line_number": 489,
3135+
"line_number": 479,
31543136
"type": "Secret Keyword",
31553137
"verified_result": null
31563138
}
@@ -3272,15 +3254,15 @@
32723254
"hashed_secret": "3046d9f6cfaaeea6eed9bb7a4ab010fe49b0cfd4",
32733255
"is_secret": false,
32743256
"is_verified": false,
3275-
"line_number": 154,
3257+
"line_number": 158,
32763258
"type": "Secret Keyword",
32773259
"verified_result": null
32783260
},
32793261
{
32803262
"hashed_secret": "b732fb611fd46a38e8667f9972e0cde777fbe37f",
32813263
"is_secret": false,
32823264
"is_verified": false,
3283-
"line_number": 283,
3265+
"line_number": 274,
32843266
"type": "Secret Keyword",
32853267
"verified_result": null
32863268
}
@@ -4201,14 +4183,6 @@
42014183
"line_number": 24,
42024184
"type": "Secret Keyword",
42034185
"verified_result": null
4204-
},
4205-
{
4206-
"hashed_secret": "69d7a780b792608707bd8579c295cb5028505f0b",
4207-
"is_secret": false,
4208-
"is_verified": false,
4209-
"line_number": 24,
4210-
"type": "Box Credentials",
4211-
"verified_result": null
42124186
}
42134187
],
42144188
"website/docs/r/en_destination_ios.html.markdown": [
@@ -4758,7 +4732,7 @@
47584732
}
47594733
]
47604734
},
4761-
"version": "0.13.1+ibm.52.dss",
4735+
"version": "0.13.1+ibm.61.dss",
47624736
"word_list": {
47634737
"file": null,
47644738
"hash": null

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ require (
2929
github.com/IBM/push-notifications-go-sdk v0.0.0-20210310100607-5790b96c47f5
3030
github.com/IBM/scc-go-sdk/v5 v5.1.2
3131
github.com/IBM/schematics-go-sdk v0.2.1
32-
github.com/IBM/secrets-manager-go-sdk/v2 v2.0.0
32+
github.com/IBM/secrets-manager-go-sdk/v2 v2.0.1
3333
github.com/IBM/vpc-beta-go-sdk v0.6.0
3434
github.com/IBM/vpc-go-sdk v0.42.0
3535
github.com/ScaleFT/sshkeys v0.0.0-20200327173127-6142f742bca5

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,8 @@ github.com/IBM/scc-go-sdk/v5 v5.1.2 h1:9axGtNlP3bHhoE9yJgCuc+g5/VdyhYqfhZ5oS3ovC
166166
github.com/IBM/scc-go-sdk/v5 v5.1.2/go.mod h1:YtAVlzq10bwR82QX4ZavhDIwa1s85RuVO9N/KmXVcuk=
167167
github.com/IBM/schematics-go-sdk v0.2.1 h1:byATysGD+Z1k/wdtNqQmKALcAPjgSLuSyzcabh1jRAw=
168168
github.com/IBM/schematics-go-sdk v0.2.1/go.mod h1:Tw2OSAPdpC69AxcwoyqcYYaGTTW6YpERF9uNEU+BFRQ=
169-
github.com/IBM/secrets-manager-go-sdk/v2 v2.0.0 h1:Lx4Bvim/MfoHEYR+n312bty5DirAJypBGGS9YZo3zCw=
170-
github.com/IBM/secrets-manager-go-sdk/v2 v2.0.0/go.mod h1:jagqWmjZ0zUEqh5jdGB42ApSQS40fu2LWw6pdg8JJko=
169+
github.com/IBM/secrets-manager-go-sdk/v2 v2.0.1 h1:0Ouu31RsuOLdH26oNsnPErEjctWTplLEIXxwExnTZT0=
170+
github.com/IBM/secrets-manager-go-sdk/v2 v2.0.1/go.mod h1:jagqWmjZ0zUEqh5jdGB42ApSQS40fu2LWw6pdg8JJko=
171171
github.com/IBM/vpc-beta-go-sdk v0.6.0 h1:wfM3AcW3zOM3xsRtZ+EA6+sESlGUjQ6Yf4n5QQyz4uc=
172172
github.com/IBM/vpc-beta-go-sdk v0.6.0/go.mod h1:fzHDAQIqH/5yJmYsKodKHLcqxMDT+yfH6vZjdiw8CQA=
173173
github.com/Jeffail/gabs v1.1.1 h1:V0uzR08Hj22EX8+8QMhyI9sX2hwRu+/RJhJUmnwda/E=

ibm/service/secretsmanager/data_source_ibm_sm_arbitrary_secret.go

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,9 @@ package secretsmanager
66
import (
77
"context"
88
"fmt"
9-
"log"
10-
119
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1210
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1311

14-
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
1512
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
1613
"github.com/IBM/secrets-manager-go-sdk/v2/secretsmanagerv2"
1714
)
@@ -22,9 +19,11 @@ func DataSourceIbmSmArbitrarySecret() *schema.Resource {
2219

2320
Schema: map[string]*schema.Schema{
2421
"secret_id": &schema.Schema{
25-
Type: schema.TypeString,
26-
Required: true,
27-
Description: "The ID of the secret.",
22+
Type: schema.TypeString,
23+
Optional: true,
24+
Computed: true,
25+
ExactlyOneOf: []string{"secret_id", "name"},
26+
Description: "The ID of the secret.",
2827
},
2928
"created_by": &schema.Schema{
3029
Type: schema.TypeString,
@@ -73,15 +72,24 @@ func DataSourceIbmSmArbitrarySecret() *schema.Resource {
7372
Description: "The number of locks of the secret.",
7473
},
7574
"name": &schema.Schema{
76-
Type: schema.TypeString,
77-
Computed: true,
78-
Description: "The human-readable name of your secret.",
75+
Type: schema.TypeString,
76+
Optional: true,
77+
Computed: true,
78+
ExactlyOneOf: []string{"secret_id", "name"},
79+
RequiredWith: []string{"secret_group_name"},
80+
Description: "The human-readable name of your secret.",
7981
},
8082
"secret_group_id": &schema.Schema{
8183
Type: schema.TypeString,
8284
Computed: true,
8385
Description: "A v4 UUID identifier, or `default` secret group.",
8486
},
87+
"secret_group_name": &schema.Schema{
88+
Type: schema.TypeString,
89+
Optional: true,
90+
RequiredWith: []string{"name"},
91+
Description: "The human-readable name of your secret group.",
92+
},
8593
"secret_type": &schema.Schema{
8694
Type: schema.TypeString,
8795
Computed: true,
@@ -123,29 +131,16 @@ func DataSourceIbmSmArbitrarySecret() *schema.Resource {
123131
}
124132

125133
func dataSourceIbmSmArbitrarySecretRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
126-
secretsManagerClient, err := meta.(conns.ClientSession).SecretsManagerV2()
127-
if err != nil {
128-
return diag.FromErr(err)
129-
}
130-
131-
region := getRegion(secretsManagerClient, d)
132-
instanceId := d.Get("instance_id").(string)
133-
secretsManagerClient = getClientWithInstanceEndpoint(secretsManagerClient, instanceId, region, getEndpointType(secretsManagerClient, d))
134-
135-
getSecretOptions := &secretsmanagerv2.GetSecretOptions{}
136-
137-
secretId := d.Get("secret_id").(string)
138-
getSecretOptions.SetID(secretId)
139134

140-
secretIntf, response, err := secretsManagerClient.GetSecretWithContext(context, getSecretOptions)
141-
if err != nil {
142-
log.Printf("[DEBUG] GetSecretWithContext failed %s\n%s", err, response)
143-
return diag.FromErr(fmt.Errorf("GetSecretWithContext failed %s\n%s", err, response))
135+
secret, region, instanceId, diagError := getSecretByIdOrByName(context, d, meta, ArbitrarySecretType)
136+
if diagError != nil {
137+
return diagError
144138
}
145-
arbitrarySecret := secretIntf.(*secretsmanagerv2.ArbitrarySecret)
146139

147-
d.SetId(fmt.Sprintf("%s/%s/%s", region, instanceId, secretId))
140+
arbitrarySecret := secret.(*secretsmanagerv2.ArbitrarySecret)
141+
d.SetId(fmt.Sprintf("%s/%s/%s", region, instanceId, *arbitrarySecret.ID))
148142

143+
var err error
149144
if err = d.Set("region", region); err != nil {
150145
return diag.FromErr(fmt.Errorf("Error setting region: %s", err))
151146
}

ibm/service/secretsmanager/data_source_ibm_sm_arbitrary_secret_test.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ func TestAccIbmSmArbitrarySecretDataSourceBasic(t *testing.T) {
2929
resource.TestCheckResourceAttrSet("data.ibm_sm_arbitrary_secret.sm_arbitrary_secret", "secret_type"),
3030
resource.TestCheckResourceAttrSet("data.ibm_sm_arbitrary_secret.sm_arbitrary_secret", "updated_at"),
3131
resource.TestCheckResourceAttrSet("data.ibm_sm_arbitrary_secret.sm_arbitrary_secret", "versions_total"),
32+
resource.TestCheckResourceAttrSet("data.ibm_sm_arbitrary_secret.sm_arbitrary_secret_by_name", "name"),
33+
resource.TestCheckResourceAttrSet("data.ibm_sm_arbitrary_secret.sm_arbitrary_secret_by_name", "secret_group_name"),
3234
),
3335
},
3436
},
@@ -53,5 +55,12 @@ func testAccCheckIbmSmArbitrarySecretDataSourceConfigBasic() string {
5355
region = "%s"
5456
secret_id = ibm_sm_arbitrary_secret.sm_arbitrary_secret_instance.secret_id
5557
}
56-
`, acc.SecretsManagerInstanceID, acc.SecretsManagerInstanceRegion, acc.SecretsManagerInstanceID, acc.SecretsManagerInstanceRegion)
58+
59+
data "ibm_sm_arbitrary_secret" "sm_arbitrary_secret_by_name" {
60+
instance_id = "%s"
61+
region = "%s"
62+
name = ibm_sm_arbitrary_secret.sm_arbitrary_secret_instance.name
63+
secret_group_name = "default"
64+
}
65+
`, acc.SecretsManagerInstanceID, acc.SecretsManagerInstanceRegion, acc.SecretsManagerInstanceID, acc.SecretsManagerInstanceRegion, acc.SecretsManagerInstanceID, acc.SecretsManagerInstanceRegion)
5766
}

0 commit comments

Comments
 (0)