Skip to content

Commit 00115c5

Browse files
alex-muiravinitp
authored andcommitted
Added - Support for Partial exemption for Cancel a full or incremental running backup Cancel a running full or incremental backup
1 parent 854f0ac commit 00115c5

File tree

6 files changed

+474
-2
lines changed

6 files changed

+474
-2
lines changed
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
package integrationtest
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"testing"
7+
"time"
8+
9+
"github.com/oracle/terraform-provider-oci/internal/acctest"
10+
"github.com/oracle/terraform-provider-oci/internal/client"
11+
"github.com/oracle/terraform-provider-oci/internal/utils"
12+
13+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
14+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
15+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
16+
"github.com/oracle/oci-go-sdk/v65/common"
17+
oci_database "github.com/oracle/oci-go-sdk/v65/database"
18+
19+
"github.com/oracle/terraform-provider-oci/httpreplay"
20+
)
21+
22+
var (
23+
DatabaseCancelExacsBackupDatabaseRepresentation = map[string]interface{}{
24+
"backup_id": acctest.Representation{RepType: acctest.Required, Create: `unknown`},
25+
"cancel_backup_trigger": acctest.Representation{RepType: acctest.Optional, Create: `1`},
26+
}
27+
28+
GetBackupIdDataSourceRepresentation = map[string]interface{}{
29+
"database_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_database_database.test_database.id}`},
30+
}
31+
32+
DatabaseCancelExacsBackupDatabaseResourceDependencies = DatabaseDatabaseResourceDependencies +
33+
acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Optional, acctest.Create, DatabaseDatabaseRepresentation)
34+
)
35+
36+
func TestDatabaseExacsCancelDatabaseResource_basic(t *testing.T) {
37+
httpreplay.SetScenario("TestDatabaseExacsCancelDatabaseResource_basic")
38+
defer httpreplay.SaveScenario()
39+
40+
provider := acctest.TestAccProvider
41+
config := acctest.ProviderTestConfig()
42+
43+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
44+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
45+
46+
resourceName := "oci_database_cancel_backup.test_cancel_backup"
47+
databaseName := "oci_database_database.test_database"
48+
listBackupName := "data.oci_database_backups.test_backups"
49+
50+
var resId string
51+
// Save TF content to create resource with optional properties. This has to be exactly the same as the config part in the "create with optionals" step in the test.
52+
acctest.SaveConfigContent(config+compartmentIdVariableStr+DatabaseCancelExacsBackupDatabaseResourceDependencies+
53+
acctest.GenerateResourceFromRepresentationMap("oci_database_cancel_backup", "test_cancel_backup", acctest.Optional, acctest.Create, DatabaseCancelExacsBackupDatabaseRepresentation), "database", "backup", t)
54+
55+
resource.Test(t, resource.TestCase{
56+
PreCheck: func() { acctest.PreCheck(t) },
57+
Providers: map[string]*schema.Provider{
58+
"oci": provider,
59+
},
60+
Steps: []resource.TestStep{
61+
62+
// verify Create
63+
{
64+
Config: config + compartmentIdVariableStr + DatabaseCancelExacsBackupDatabaseResourceDependencies,
65+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
66+
resource.TestCheckResourceAttr(databaseName, "db_backup_config.0.auto_backup_enabled", "true"),
67+
68+
func(s *terraform.State) (err error) {
69+
resId, err = acctest.FromInstanceState(s, databaseName, "id")
70+
return err
71+
},
72+
),
73+
},
74+
// verify create
75+
{
76+
PreConfig: acctest.WaitTillCondition(acctest.TestAccProvider, &resId, databaseWaitTillBackupInProgressConditionExa, time.Duration(2*time.Minute),
77+
databaseResponseFetchOperationExa, "database", true),
78+
Config: config + compartmentIdVariableStr + DatabaseCancelExacsBackupDatabaseResourceDependencies + acctest.GenerateDataSourceFromRepresentationMap("oci_database_backups", "test_backups", acctest.Optional, acctest.Update, GetBackupIdDataSourceRepresentation),
79+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
80+
resource.TestCheckResourceAttr(listBackupName, "backups.#", "1"),
81+
),
82+
},
83+
{
84+
Config: config + compartmentIdVariableStr + DatabaseCancelExacsBackupDatabaseResourceDependencies +
85+
acctest.GenerateDataSourceFromRepresentationMap("oci_database_backups", "test_backups", acctest.Optional, acctest.Update, GetBackupIdDataSourceRepresentation) +
86+
acctest.GenerateResourceFromRepresentationMap("oci_database_cancel_backup", "test_cancel_backup", acctest.Required, acctest.Create,
87+
acctest.RepresentationCopyWithNewProperties(acctest.RepresentationCopyWithRemovedProperties(DatabaseCancelExacsBackupDatabaseRepresentation, []string{"backup_id"}), map[string]interface{}{
88+
"backup_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_backups.test_backups.backups.0.id}`},
89+
})),
90+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
91+
resource.TestCheckResourceAttrSet(resourceName, "backup_id"),
92+
),
93+
},
94+
{
95+
Config: config + compartmentIdVariableStr + DatabaseCancelExacsBackupDatabaseResourceDependencies +
96+
acctest.GenerateDataSourceFromRepresentationMap("oci_database_backups", "test_backups", acctest.Optional, acctest.Update, GetBackupIdDataSourceRepresentation) +
97+
acctest.GenerateResourceFromRepresentationMap("oci_database_cancel_backup", "test_cancel_backup", acctest.Optional, acctest.Create,
98+
acctest.RepresentationCopyWithNewProperties(acctest.RepresentationCopyWithRemovedProperties(DatabaseCancelExacsBackupDatabaseRepresentation, []string{"backup_id"}), map[string]interface{}{
99+
"backup_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_backups.test_backups.backups.0.id}`},
100+
})),
101+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
102+
resource.TestCheckResourceAttrSet(resourceName, "backup_id"),
103+
resource.TestCheckResourceAttrSet(resourceName, "cancel_backup_trigger"),
104+
),
105+
},
106+
},
107+
})
108+
}
109+
110+
func databaseWaitTillBackupInProgressConditionExa(response common.OCIOperationResponse) bool {
111+
if databaseResponse, ok := response.Response.(oci_database.GetDatabaseResponse); ok {
112+
fmt.Print("Checking whether the state of resource is BACKUP_IN_PROGRESS: ", databaseResponse.LifecycleState == oci_database.DatabaseLifecycleStateBackupInProgress, "\n")
113+
return (databaseResponse.LifecycleState != oci_database.DatabaseLifecycleStateBackupInProgress)
114+
}
115+
return false
116+
}
117+
118+
func databaseResponseFetchOperationExa(client *client.OracleClients, resourceId *string, retryPolicy *common.RetryPolicy) error {
119+
_, err := client.DatabaseClient().GetDatabase(context.Background(), oci_database.GetDatabaseRequest{
120+
DatabaseId: resourceId,
121+
RequestMetadata: common.RequestMetadata{
122+
RetryPolicy: retryPolicy,
123+
},
124+
})
125+
return err
126+
}

0 commit comments

Comments
 (0)