Skip to content

Commit 9abc9e3

Browse files
authored
Secrets Manager fixes (IBM-Cloud#6460)
1 parent 4e5a13e commit 9abc9e3

8 files changed

+37
-225
lines changed

ibm/service/secretsmanager/data_source_ibm_sm_configurations.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@ func dataSourceIbmSmConfigurationsConfigurationMetadataToMap(model secretsmanage
288288
return dataSourceIbmSmConfigurationsPrivateCertificateConfigurationIntermediateCAMetadataToMap(model.(*secretsmanagerv2.PrivateCertificateConfigurationIntermediateCAMetadata))
289289
} else if _, ok := model.(*secretsmanagerv2.PrivateCertificateConfigurationTemplateMetadata); ok {
290290
return dataSourceIbmSmConfigurationsPrivateCertificateConfigurationTemplateMetadataToMap(model.(*secretsmanagerv2.PrivateCertificateConfigurationTemplateMetadata))
291+
} else if _, ok := model.(*secretsmanagerv2.CustomCredentialsConfigurationMetadata); ok {
292+
return dataSourceIbmSmConfigurationsCustomCredentialsConfigurationMetadataToMap(model.(*secretsmanagerv2.CustomCredentialsConfigurationMetadata))
291293
} else if _, ok := model.(*secretsmanagerv2.ConfigurationMetadata); ok {
292294
modelMap := make(map[string]interface{})
293295
model := model.(*secretsmanagerv2.ConfigurationMetadata)
@@ -574,3 +576,26 @@ func dataSourceIbmSmConfigurationsPrivateCertificateConfigurationTemplateMetadat
574576
}
575577
return modelMap, nil
576578
}
579+
580+
func dataSourceIbmSmConfigurationsCustomCredentialsConfigurationMetadataToMap(model *secretsmanagerv2.CustomCredentialsConfigurationMetadata) (map[string]interface{}, error) {
581+
modelMap := make(map[string]interface{})
582+
if model.ConfigType != nil {
583+
modelMap["config_type"] = *model.ConfigType
584+
}
585+
if model.Name != nil {
586+
modelMap["name"] = *model.Name
587+
}
588+
if model.SecretType != nil {
589+
modelMap["secret_type"] = *model.SecretType
590+
}
591+
if model.CreatedBy != nil {
592+
modelMap["created_by"] = *model.CreatedBy
593+
}
594+
if model.CreatedAt != nil {
595+
modelMap["created_at"] = model.CreatedAt.String()
596+
}
597+
if model.UpdatedAt != nil {
598+
modelMap["updated_at"] = model.UpdatedAt.String()
599+
}
600+
return modelMap, nil
601+
}

ibm/service/secretsmanager/resource_ibm_sm_arbitrary_secret.go

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ package secretsmanager
66
import (
77
"context"
88
"fmt"
9-
"github.com/IBM-Cloud/bluemix-go/bmxerror"
109
"github.com/go-openapi/strfmt"
11-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1210
"github.com/pkg/errors"
1311
"log"
1412
"strings"
@@ -177,48 +175,9 @@ func resourceIbmSmArbitrarySecretCreate(context context.Context, d *schema.Resou
177175
d.SetId(fmt.Sprintf("%s/%s/%s", region, instanceId, *secret.ID))
178176
d.Set("secret_id", *secret.ID)
179177

180-
_, err = waitForIbmSmArbitrarySecretCreate(secretsManagerClient, d)
181-
if err != nil {
182-
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Error waiting for resource IbmSmArbitrarySecret (%s) to be created: %s", d.Id(), err.Error()), ArbitrarySecretResourceName, "create")
183-
return tfErr.GetDiag()
184-
}
185-
186178
return resourceIbmSmArbitrarySecretRead(context, d, meta)
187179
}
188180

189-
func waitForIbmSmArbitrarySecretCreate(secretsManagerClient *secretsmanagerv2.SecretsManagerV2, d *schema.ResourceData) (interface{}, error) {
190-
getSecretOptions := &secretsmanagerv2.GetSecretOptions{}
191-
id := strings.Split(d.Id(), "/")
192-
secretId := id[2]
193-
194-
getSecretOptions.SetID(secretId)
195-
196-
stateConf := &resource.StateChangeConf{
197-
Pending: []string{"pre_activation"},
198-
Target: []string{"active"},
199-
Refresh: func() (interface{}, string, error) {
200-
stateObjIntf, response, err := secretsManagerClient.GetSecret(getSecretOptions)
201-
stateObj := stateObjIntf.(*secretsmanagerv2.ArbitrarySecret)
202-
if err != nil {
203-
if apiErr, ok := err.(bmxerror.RequestFailure); ok && apiErr.StatusCode() == 404 {
204-
return nil, "", fmt.Errorf("The instance %s does not exist anymore: %s\n%s", "getSecretOptions", err, response)
205-
}
206-
return nil, "", err
207-
}
208-
failStates := map[string]bool{"destroyed": true}
209-
if failStates[*stateObj.StateDescription] {
210-
return stateObj, *stateObj.StateDescription, fmt.Errorf("The instance %s failed: %s\n%s", "getSecretOptions", err, response)
211-
}
212-
return stateObj, *stateObj.StateDescription, nil
213-
},
214-
Timeout: d.Timeout(schema.TimeoutCreate),
215-
Delay: 0 * time.Second,
216-
MinTimeout: 5 * time.Second,
217-
}
218-
219-
return stateConf.WaitForState()
220-
}
221-
222181
func resourceIbmSmArbitrarySecretRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
223182
secretsManagerClient, endpointsFile, err := getSecretsManagerSession(meta.(conns.ClientSession))
224183
if err != nil {

ibm/service/secretsmanager/resource_ibm_sm_custom_credentials_secret.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,13 +294,13 @@ func waitForIbmSmCustomCredentialsSecretCreate(secretsManagerClient *secretsmana
294294
Target: []string{"active"},
295295
Refresh: func() (interface{}, string, error) {
296296
secretIntf, _, err := secretsManagerClient.GetSecret(getSecretOptions)
297-
secret := secretIntf.(*secretsmanagerv2.CustomCredentialsSecret)
298297
if err != nil {
299298
if apiErr, ok := err.(bmxerror.RequestFailure); ok && apiErr.StatusCode() == 404 {
300299
return nil, "", fmt.Errorf("The secret does not exist anymore")
301300
}
302301
return nil, "", err
303302
}
303+
secret := secretIntf.(*secretsmanagerv2.CustomCredentialsSecret)
304304
if *secret.StateDescription == "destroyed" {
305305
return secret, *secret.StateDescription, fmt.Errorf("Failed to get the secret %w", err)
306306
}

ibm/service/secretsmanager/resource_ibm_sm_iam_credentials_secret.go

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,10 @@ package secretsmanager
66
import (
77
"context"
88
"fmt"
9-
"github.com/IBM-Cloud/bluemix-go/bmxerror"
10-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
11-
"log"
12-
"strings"
13-
"time"
14-
159
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1610
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
11+
"log"
12+
"strings"
1713

1814
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
1915
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
@@ -256,49 +252,9 @@ func resourceIbmSmIamCredentialsSecretCreate(context context.Context, d *schema.
256252
d.SetId(fmt.Sprintf("%s/%s/%s", region, instanceId, *secret.ID))
257253
d.Set("secret_id", *secret.ID)
258254

259-
_, err = waitForIbmSmIamCredentialsSecretCreate(secretsManagerClient, d)
260-
if err != nil {
261-
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Error waiting for resource IbmSmIamCredentialsSecret (%s) to be created: %s", d.Id(), err.Error()), IAMCredentialsSecretResourceName, "create")
262-
return tfErr.GetDiag()
263-
}
264-
265255
return resourceIbmSmIamCredentialsSecretRead(context, d, meta)
266256
}
267257

268-
func waitForIbmSmIamCredentialsSecretCreate(secretsManagerClient *secretsmanagerv2.SecretsManagerV2, d *schema.ResourceData) (interface{}, error) {
269-
getSecretOptions := &secretsmanagerv2.GetSecretOptions{}
270-
271-
id := strings.Split(d.Id(), "/")
272-
secretId := id[2]
273-
274-
getSecretOptions.SetID(secretId)
275-
276-
stateConf := &resource.StateChangeConf{
277-
Pending: []string{"pre_activation"},
278-
Target: []string{"active"},
279-
Refresh: func() (interface{}, string, error) {
280-
stateObjIntf, response, err := secretsManagerClient.GetSecret(getSecretOptions)
281-
stateObj := stateObjIntf.(*secretsmanagerv2.IAMCredentialsSecret)
282-
if err != nil {
283-
if apiErr, ok := err.(bmxerror.RequestFailure); ok && apiErr.StatusCode() == 404 {
284-
return nil, "", fmt.Errorf("The instance %s does not exist anymore: %s\n%s", "getSecretOptions", err, response)
285-
}
286-
return nil, "", err
287-
}
288-
failStates := map[string]bool{"destroyed": true}
289-
if failStates[*stateObj.StateDescription] {
290-
return stateObj, *stateObj.StateDescription, fmt.Errorf("The instance %s failed: %s\n%s", "getSecretOptions", err, response)
291-
}
292-
return stateObj, *stateObj.StateDescription, nil
293-
},
294-
Timeout: d.Timeout(schema.TimeoutCreate),
295-
Delay: 0 * time.Second,
296-
MinTimeout: 5 * time.Second,
297-
}
298-
299-
return stateConf.WaitForState()
300-
}
301-
302258
func resourceIbmSmIamCredentialsSecretRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
303259
secretsManagerClient, endpointsFile, err := getSecretsManagerSession(meta.(conns.ClientSession))
304260
if err != nil {

ibm/service/secretsmanager/resource_ibm_sm_kv_secret.go

Lines changed: 4 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,14 @@ package secretsmanager
66
import (
77
"context"
88
"fmt"
9-
"github.com/IBM-Cloud/bluemix-go/bmxerror"
10-
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
11-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
12-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
13-
"log"
14-
"strings"
15-
"time"
16-
179
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
1810
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
1911
"github.com/IBM/go-sdk-core/v5/core"
2012
"github.com/IBM/secrets-manager-go-sdk/v2/secretsmanagerv2"
13+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
14+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
15+
"log"
16+
"strings"
2117
)
2218

2319
func ResourceIbmSmKvSecret() *schema.Resource {
@@ -168,49 +164,9 @@ func resourceIbmSmKvSecretCreate(context context.Context, d *schema.ResourceData
168164
d.SetId(fmt.Sprintf("%s/%s/%s", region, instanceId, *secret.ID))
169165
d.Set("secret_id", *secret.ID)
170166

171-
_, err = waitForIbmSmKvSecretCreate(secretsManagerClient, d)
172-
if err != nil {
173-
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Error waiting for resource IbmSmKvSecret (%s) to be created: %s", d.Id(), err.Error()), KvSecretResourceName, "create")
174-
return tfErr.GetDiag()
175-
}
176-
177167
return resourceIbmSmKvSecretRead(context, d, meta)
178168
}
179169

180-
func waitForIbmSmKvSecretCreate(secretsManagerClient *secretsmanagerv2.SecretsManagerV2, d *schema.ResourceData) (interface{}, error) {
181-
getSecretOptions := &secretsmanagerv2.GetSecretOptions{}
182-
183-
id := strings.Split(d.Id(), "/")
184-
secretId := id[2]
185-
186-
getSecretOptions.SetID(secretId)
187-
188-
stateConf := &resource.StateChangeConf{
189-
Pending: []string{"pre_activation"},
190-
Target: []string{"active"},
191-
Refresh: func() (interface{}, string, error) {
192-
stateObjIntf, response, err := secretsManagerClient.GetSecret(getSecretOptions)
193-
stateObj := stateObjIntf.(*secretsmanagerv2.KVSecret)
194-
if err != nil {
195-
if apiErr, ok := err.(bmxerror.RequestFailure); ok && apiErr.StatusCode() == 404 {
196-
return nil, "", fmt.Errorf("The instance %s does not exist anymore: %s\n%s", "getSecretOptions", err, response)
197-
}
198-
return nil, "", err
199-
}
200-
failStates := map[string]bool{"destroyed": true}
201-
if failStates[*stateObj.StateDescription] {
202-
return stateObj, *stateObj.StateDescription, fmt.Errorf("The instance %s failed: %s\n%s", "getSecretOptions", err, response)
203-
}
204-
return stateObj, *stateObj.StateDescription, nil
205-
},
206-
Timeout: d.Timeout(schema.TimeoutCreate),
207-
Delay: 0 * time.Second,
208-
MinTimeout: 5 * time.Second,
209-
}
210-
211-
return stateConf.WaitForState()
212-
}
213-
214170
func resourceIbmSmKvSecretRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
215171
secretsManagerClient, endpointsFile, err := getSecretsManagerSession(meta.(conns.ClientSession))
216172
if err != nil {

ibm/service/secretsmanager/resource_ibm_sm_private_certificate.go

Lines changed: 4 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,14 @@ package secretsmanager
66
import (
77
"context"
88
"fmt"
9-
"github.com/IBM-Cloud/bluemix-go/bmxerror"
10-
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
11-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
12-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
13-
"log"
14-
"strings"
15-
"time"
16-
179
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
1810
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
1911
"github.com/IBM/go-sdk-core/v5/core"
2012
"github.com/IBM/secrets-manager-go-sdk/v2/secretsmanagerv2"
13+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
14+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
15+
"log"
16+
"strings"
2117
)
2218

2319
func ResourceIbmSmPrivateCertificate() *schema.Resource {
@@ -353,49 +349,9 @@ func resourceIbmSmPrivateCertificateCreate(context context.Context, d *schema.Re
353349
d.SetId(fmt.Sprintf("%s/%s/%s", region, instanceId, *secret.ID))
354350
d.Set("secret_id", *secret.ID)
355351

356-
_, err = waitForIbmSmPrivateCertificateCreate(secretsManagerClient, d)
357-
if err != nil {
358-
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Error waiting for resource IbmSmPrivateCertificate (%s) to be created: %s", d.Id(), err.Error()), PrivateCertSecretResourceName, "create")
359-
return tfErr.GetDiag()
360-
}
361-
362352
return resourceIbmSmPrivateCertificateRead(context, d, meta)
363353
}
364354

365-
func waitForIbmSmPrivateCertificateCreate(secretsManagerClient *secretsmanagerv2.SecretsManagerV2, d *schema.ResourceData) (interface{}, error) {
366-
getSecretOptions := &secretsmanagerv2.GetSecretOptions{}
367-
368-
id := strings.Split(d.Id(), "/")
369-
secretId := id[2]
370-
371-
getSecretOptions.SetID(secretId)
372-
373-
stateConf := &resource.StateChangeConf{
374-
Pending: []string{"pre_activation"},
375-
Target: []string{"active"},
376-
Refresh: func() (interface{}, string, error) {
377-
stateObjIntf, response, err := secretsManagerClient.GetSecret(getSecretOptions)
378-
stateObj := stateObjIntf.(*secretsmanagerv2.PrivateCertificate)
379-
if err != nil {
380-
if apiErr, ok := err.(bmxerror.RequestFailure); ok && apiErr.StatusCode() == 404 {
381-
return nil, "", fmt.Errorf("The instance %s does not exist anymore: %s\n%s", "getSecretOptions", err, response)
382-
}
383-
return nil, "", err
384-
}
385-
failStates := map[string]bool{"destroyed": true}
386-
if failStates[*stateObj.StateDescription] {
387-
return stateObj, *stateObj.StateDescription, fmt.Errorf("The instance %s failed: %s\n%s", "getSecretOptions", err, response)
388-
}
389-
return stateObj, *stateObj.StateDescription, nil
390-
},
391-
Timeout: d.Timeout(schema.TimeoutCreate),
392-
Delay: 0 * time.Second,
393-
MinTimeout: 5 * time.Second,
394-
}
395-
396-
return stateConf.WaitForState()
397-
}
398-
399355
func resourceIbmSmPrivateCertificateRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
400356
secretsManagerClient, endpointsFile, err := getSecretsManagerSession(meta.(conns.ClientSession))
401357
if err != nil {

ibm/service/secretsmanager/resource_ibm_sm_public_certificate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,13 +469,13 @@ func waitForIbmSmPublicCertificateCreate(secretsManagerClient *secretsmanagerv2.
469469
Target: []string{targetStatus},
470470
Refresh: func() (interface{}, string, error) {
471471
stateObjIntf, response, err := secretsManagerClient.GetSecret(getSecretOptions)
472-
stateObj := stateObjIntf.(*secretsmanagerv2.PublicCertificate)
473472
if err != nil {
474473
if apiErr, ok := err.(bmxerror.RequestFailure); ok && apiErr.StatusCode() == 404 {
475474
return nil, "", fmt.Errorf("The instance %s does not exist anymore: %s\n%s", "getSecretOptions", err, response)
476475
}
477476
return nil, "", err
478477
}
478+
stateObj := stateObjIntf.(*secretsmanagerv2.PublicCertificate)
479479
failStates := map[string]bool{"destroyed": true}
480480
if failStates[*stateObj.StateDescription] {
481481
return stateObj, *stateObj.StateDescription, fmt.Errorf("The instance %s failed: %s\n%s", "getSecretOptions", err, response)

ibm/service/secretsmanager/resource_ibm_sm_username_password_secret.go

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ package secretsmanager
66
import (
77
"context"
88
"fmt"
9-
"github.com/IBM-Cloud/bluemix-go/bmxerror"
109
"github.com/go-openapi/strfmt"
11-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1210
"log"
1311
"strings"
1412
"time"
@@ -250,47 +248,9 @@ func resourceIbmSmUsernamePasswordSecretCreate(context context.Context, d *schem
250248
d.SetId(fmt.Sprintf("%s/%s/%s", region, instanceId, *secret.ID))
251249
d.Set("secret_id", *secret.ID)
252250

253-
_, err = waitForIbmSmUsernamePasswordSecretCreate(secretsManagerClient, d)
254-
if err != nil {
255-
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Error waiting for resource IbmSmUsernamePasswordSecret (%s) to be created: %s", d.Id(), err.Error()), UsernamePasswordSecretResourceName, "create")
256-
return tfErr.GetDiag()
257-
}
258-
259251
return resourceIbmSmUsernamePasswordSecretRead(context, d, meta)
260252
}
261253

262-
func waitForIbmSmUsernamePasswordSecretCreate(secretsManagerClient *secretsmanagerv2.SecretsManagerV2, d *schema.ResourceData) (interface{}, error) {
263-
getSecretOptions := &secretsmanagerv2.GetSecretOptions{}
264-
id := strings.Split(d.Id(), "/")
265-
secretId := id[2]
266-
getSecretOptions.SetID(secretId)
267-
268-
stateConf := &resource.StateChangeConf{
269-
Pending: []string{"pre_activation"},
270-
Target: []string{"active"},
271-
Refresh: func() (interface{}, string, error) {
272-
stateObjIntf, response, err := secretsManagerClient.GetSecret(getSecretOptions)
273-
stateObj := stateObjIntf.(*secretsmanagerv2.UsernamePasswordSecret)
274-
if err != nil {
275-
if apiErr, ok := err.(bmxerror.RequestFailure); ok && apiErr.StatusCode() == 404 {
276-
return nil, "", fmt.Errorf("The instance %s does not exist anymore: %s\n%s", "getSecretOptions", err, response)
277-
}
278-
return nil, "", err
279-
}
280-
failStates := map[string]bool{"destroyed": true}
281-
if failStates[*stateObj.StateDescription] {
282-
return stateObj, *stateObj.StateDescription, fmt.Errorf("The instance %s failed: %s\n%s", "getSecretOptions", err, response)
283-
}
284-
return stateObj, *stateObj.StateDescription, nil
285-
},
286-
Timeout: d.Timeout(schema.TimeoutCreate),
287-
Delay: 0 * time.Second,
288-
MinTimeout: 5 * time.Second,
289-
}
290-
291-
return stateConf.WaitForState()
292-
}
293-
294254
func resourceIbmSmUsernamePasswordSecretRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
295255
secretsManagerClient, endpointsFile, err := getSecretsManagerSession(meta.(conns.ClientSession))
296256
if err != nil {

0 commit comments

Comments
 (0)