Skip to content

Commit

Permalink
Fix ibm_database: Enhance error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
kavya498 authored and hkantare committed Aug 16, 2021
1 parent aa4d4d5 commit 6b1aaa4
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 30 deletions.
2 changes: 1 addition & 1 deletion ibm/data_source_ibm_database_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
)

func TestAccIBMDatabaseDataSource_basic(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
testName := fmt.Sprintf("tf-Pgress-%s", acctest.RandString(16))
Expand Down
24 changes: 10 additions & 14 deletions ibm/resource_ibm_database.go
Original file line number Diff line number Diff line change
Expand Up @@ -1037,18 +1037,14 @@ func resourceIBMDatabaseInstanceCreate(d *schema.ResourceData, meta interface{})
if err != nil {
return fmt.Errorf("[ERROR] Error creating database instance: %s %s", err, response)
}

// Moved d.SetId(instance.ID) to after waiting for resource to finish creation. Otherwise Terraform initates depedent tasks too early.
// Original flow had SetId here as its required as input to waitForDatabaseInstanceCreate
d.SetId(*instance.ID)

_, err = waitForDatabaseInstanceCreate(d, meta, *instance.ID)
if err != nil {
return fmt.Errorf(
"[ERROR] Error waiting for create database instance (%s) to complete: %s", *instance.ID, err)
}

d.SetId(*instance.ID)

if node_count, ok := d.GetOk("node_count"); ok {
if initialNodeCount != node_count {
icdClient, err := meta.(ClientSession).ICDAPI()
Expand Down Expand Up @@ -1321,7 +1317,7 @@ func resourceIBMDatabaseInstanceRead(d *schema.ResourceData, meta interface{}) e

autoSclaingGroup, err := icdClient.AutoScaling().GetAutoScaling(icdId, "member")
if err != nil {
return fmt.Errorf("[ERROR] Error getting database groups: %s", err)
return fmt.Errorf("[ERROR] Error getting database autoscaling groups: %s", err)
}
d.Set("auto_scaling", flattenICDAutoScalingGroup(autoSclaingGroup))

Expand Down Expand Up @@ -1843,12 +1839,12 @@ func waitForDatabaseInstanceCreate(d *schema.ResourceData, meta interface{}, ins
instance, response, err := rsConClient.GetResourceInstance(&rsInst)
if err != nil || instance == nil {
if apiErr, ok := err.(bmxerror.RequestFailure); ok && apiErr.StatusCode() == 404 {
return nil, "", fmt.Errorf("[ERROR] The resource instance %s does not exist anymore: %v %s", d.Id(), err, response)
return nil, "", fmt.Errorf("[ERROR] The resource instance %s does not exist anymore: %s %s", d.Id(), err, response)
}
return nil, "", err
return nil, "", fmt.Errorf("[ERROR] GetResourceInstance on %s failed with error %s %s", d.Id(), err, response)
}
if *instance.State == databaseInstanceFailStatus {
return *instance, *instance.State, fmt.Errorf("[ERROR] The resource instance %s failed: %v %s", d.Id(), err, response)
return *instance, *instance.State, fmt.Errorf("[ERROR] The resource instance %s failed: %s %s", d.Id(), err, response)
}
return *instance, *instance.State, nil
},
Expand Down Expand Up @@ -1877,12 +1873,12 @@ func waitForDatabaseInstanceUpdate(d *schema.ResourceData, meta interface{}) (in
instance, response, err := rsConClient.GetResourceInstance(&rsInst)
if err != nil {
if apiErr, ok := err.(bmxerror.RequestFailure); ok && apiErr.StatusCode() == 404 {
return nil, "", fmt.Errorf("[ERROR] The resource instance %s does not exist anymore: %v %s", d.Id(), err, response)
return nil, "", fmt.Errorf("[ERROR] The resource instance %s does not exist anymore: %s %s", d.Id(), err, response)
}
return nil, "", err
return nil, "", fmt.Errorf("[ERROR] GetResourceInstance on %s failed with error %s %s", d.Id(), err, response)
}
if *instance.State == databaseInstanceFailStatus {
return *instance, *instance.State, fmt.Errorf("[ERROR] The resource instance %s failed: %v %s", d.Id(), err, response)
return *instance, *instance.State, fmt.Errorf("[ERROR] The resource instance %s failed: %s %s", d.Id(), err, response)
}
return *instance, *instance.State, nil
},
Expand Down Expand Up @@ -1944,10 +1940,10 @@ func waitForDatabaseInstanceDelete(d *schema.ResourceData, meta interface{}) (in
if apiErr, ok := err.(bmxerror.RequestFailure); ok && apiErr.StatusCode() == 404 {
return instance, databaseInstanceSuccessStatus, nil
}
return nil, "", err
return nil, "", fmt.Errorf("[ERROR] GetResourceInstance on %s failed with error %s %s", d.Id(), err, response)
}
if *instance.State == databaseInstanceFailStatus {
return instance, *instance.State, fmt.Errorf("[ERROR] The resource instance %s failed to delete: %v %s", d.Id(), err, response)
return instance, *instance.State, fmt.Errorf("[ERROR] The resource instance %s failed to delete: %s %s", d.Id(), err, response)
}
return *instance, *instance.State, nil
},
Expand Down
6 changes: 3 additions & 3 deletions ibm/resource_ibm_database_elasticsearch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
)

func TestAccIBMDatabaseInstance_Elasticsearch_Basic(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
rnd := fmt.Sprintf("tf-Es-%d", acctest.RandIntRange(10, 100))
Expand Down Expand Up @@ -84,7 +84,7 @@ func TestAccIBMDatabaseInstance_Elasticsearch_Basic(t *testing.T) {
}

func TestAccIBMDatabaseInstance_Elasticsearch_Node(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
rnd := fmt.Sprintf("tf-Es-%d", acctest.RandIntRange(10, 100))
Expand Down Expand Up @@ -182,7 +182,7 @@ func TestAccIBMDatabaseInstance_Elasticsearch_Node(t *testing.T) {
// TestAccIBMDatabaseInstance_CreateAfterManualDestroy not required as tested by resource_instance tests

func TestAccIBMDatabaseInstanceElasticsearchImport(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
serviceName := fmt.Sprintf("tf-Es-%d", acctest.RandIntRange(10, 100))
Expand Down
4 changes: 2 additions & 2 deletions ibm/resource_ibm_database_etcd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
)

func TestAccIBMDatabaseInstance_Etcd_Basic(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
rnd := fmt.Sprintf("tf-Etcd-%d", acctest.RandIntRange(10, 100))
Expand Down Expand Up @@ -81,7 +81,7 @@ func TestAccIBMDatabaseInstance_Etcd_Basic(t *testing.T) {
// TestAccIBMDatabaseInstance_CreateAfterManualDestroy not required as tested by resource_instance tests

func TestAccIBMDatabaseInstanceEtcdImport(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
serviceName := fmt.Sprintf("tf-Etcd-%d", acctest.RandIntRange(10, 100))
Expand Down
4 changes: 2 additions & 2 deletions ibm/resource_ibm_database_mongodb_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
)

func TestAccIBMDatabaseInstanceMongodbBasic(t *testing.T) {
////t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
rnd := fmt.Sprintf("tf-Mongo-%d", acctest.RandIntRange(10, 100))
Expand Down Expand Up @@ -88,7 +88,7 @@ func TestAccIBMDatabaseInstanceMongodbBasic(t *testing.T) {
// TestAccIBMDatabaseInstance_CreateAfterManualDestroy not required as tested by resource_instance tests

func TestAccIBMDatabaseInstanceMongodbImport(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
serviceName := fmt.Sprintf("tf-Mongo-%d", acctest.RandIntRange(10, 100))
Expand Down
6 changes: 3 additions & 3 deletions ibm/resource_ibm_database_postgresql_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import (
)

func TestAccIBMDatabaseInstance_Postgres_Basic(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
rnd := fmt.Sprintf("tf-Pgress-%d", acctest.RandIntRange(10, 100))
Expand Down Expand Up @@ -104,7 +104,7 @@ func TestAccIBMDatabaseInstance_Postgres_Basic(t *testing.T) {
}

func TestAccIBMDatabaseInstance_Postgres_Node(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
rnd := fmt.Sprintf("tf-Pgress-%d", acctest.RandIntRange(10, 100))
Expand Down Expand Up @@ -212,7 +212,7 @@ func TestAccIBMDatabaseInstance_Postgres_Node(t *testing.T) {
// TestAccIBMDatabaseInstance_CreateAfterManualDestroy not required as tested by resource_instance tests

func TestAccIBMDatabaseInstancePostgresImport(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
serviceName := fmt.Sprintf("tf-Pgress-%d", acctest.RandIntRange(10, 100))
Expand Down
4 changes: 2 additions & 2 deletions ibm/resource_ibm_database_rabbitmq_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
)

func TestAccIBMDatabaseInstance_Rabbitmq_Basic(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
rnd := fmt.Sprintf("tf-Rmq-%d", acctest.RandIntRange(10, 100))
Expand Down Expand Up @@ -86,7 +86,7 @@ func TestAccIBMDatabaseInstance_Rabbitmq_Basic(t *testing.T) {
// TestAccIBMDatabaseInstance_CreateAfterManualDestroy not required as tested by resource_instance tests

func TestAccIBMDatabaseInstanceRabbitmqImport(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
serviceName := fmt.Sprintf("tf-Rmq-%d", acctest.RandIntRange(10, 100))
Expand Down
6 changes: 3 additions & 3 deletions ibm/resource_ibm_database_redis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
)

func TestAccIBMDatabaseInstance_Redis_Basic(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
rnd := fmt.Sprintf("tf-redis-%d", acctest.RandIntRange(10, 100))
Expand Down Expand Up @@ -74,7 +74,7 @@ func TestAccIBMDatabaseInstance_Redis_Basic(t *testing.T) {
// TestAccIBMDatabaseInstance_CreateAfterManualDestroy not required as tested by resource_instance tests

func TestAccIBMDatabaseInstanceRedisImport(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
serviceName := fmt.Sprintf("tf-redis-%d", acctest.RandIntRange(10, 100))
Expand Down Expand Up @@ -112,7 +112,7 @@ func TestAccIBMDatabaseInstanceRedisImport(t *testing.T) {
}

func TestAccIBMDatabaseInstanceRedisKP_Encrypt(t *testing.T) {
//t.Parallel()
t.Parallel()
databaseResourceGroup := "default"
var databaseInstanceOne string
rnd := fmt.Sprintf("tf-redis-%d", acctest.RandIntRange(10, 100))
Expand Down

0 comments on commit 6b1aaa4

Please sign in to comment.