Skip to content

Commit a30a142

Browse files
vijaypsi-463NagendraNigade
authored andcommitted
Added - Support IORM operation on CloudVmCluster
Squashed commit of the following: commit 979704eb51fc334912f6ee81f690f0230394093b Author: Vijay Pratap Singh <[email protected]> Date: Thu Apr 14 04:02:22 2022 +0000 Update go-sdk-version commit ebeea5e7fb0dd3bc27ae8ef5ecea5a132e594674 Author: Vijay Pratap Singh <[email protected]> Date: Wed Mar 30 06:58:29 2022 +0000 Rebase and Update go-sdk version commit 35cec7f1b27c229c998e7aaa028a57f4ff04c339 Author: Vijay Pratap Singh <[email protected]> Date: Tue Mar 22 16:37:31 2022 +0000 Update go-sdk Version commit 1312d176f431413d16b13da02b0dcbb50a842fc5 Author: Vijay Pratap Singh <[email protected]> Date: Tue Mar 22 12:11:05 2022 +0000 Adding subcategory commit d7a8c4afb0ed8ed977b1429dbe561f74074dd410 Author: Vijay Pratap Singh <[email protected]> Date: Sat Mar 12 05:18:51 2022 +0000 Add .html.markdown commit 6fe58f492d9b670e6ee2c87757058862d2aa6418 Author: Vijay Pratap Singh <[email protected]> Date: Fri Mar 11 16:19:49 2022 +0000 Adding issue routing tag commit a2403cfd31be961a555b48252d486a3398814ce2 Author: Vijay Pratap Singh <[email protected]> Date: Wed Mar 9 07:41:42 2022 +0000 Resolve Build error and comments commit 0230696e3888857684bad7e31745858bb6d5f9c9 Author: Vijay Pratap Singh <[email protected]> Date: Fri Mar 4 09:05:29 2022 +0000 Support IORM in CVM commit 4c8dd7da1d8c0ac1eb2ef9ebfeedd45345fd17ed Author: Vijay Pratap Singh <[email protected]> Date: Fri Mar 4 08:07:07 2022 +0000 Support IORM in CVM commit 8cae05ab076a7134c3fd7867423fa34347509cbb Author: Vijay Pratap Singh <[email protected]> Date: Tue Mar 1 09:29:03 2022 +0000 IORM support in CVM commit 75e4dbefcd1816b99463d771ca38b73b8d1823e6 Author: Vijay Pratap Singh <[email protected]> Date: Tue Mar 1 06:35:42 2022 +0000 Working Test for IORM CVM support commit 74a7ab77a633fe04ac5d23e4d3410e17f3dbd92b Author: Vijay Pratap Singh <[email protected]> Date: Mon Feb 7 18:09:29 2022 +0000 IORM support in CVM
1 parent 7bbde32 commit a30a142

10 files changed

+650
-0
lines changed

examples/database/db_systems/db_exacs/datasources.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ data "oci_database_db_system_shapes" "test_db_system_shapes" {
1515
values = [var.db_system_shape]
1616
}
1717
}
18+
19+
data "oci_database_cloud_vm_cluster_iorm_config" "test_cloud_vm_cluster_iorm_config" {
20+
cloud_vm_cluster_id = oci_database_cloud_vm_cluster_iorm_config.test_cloud_vm_cluster_iorm_config.cloud_vm_cluster_id
21+
}

examples/database/db_systems/db_exacs/resources.tf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,14 @@ resource "oci_database_backup" "test_backup" {
6060
database_id = oci_database_db_home.test_db_home_vm_cluster.database.0.id
6161
display_name = "FirstBackup"
6262
}
63+
64+
65+
resource "oci_database_cloud_vm_cluster_iorm_config" "test_cloud_vm_cluster_iorm_config" {
66+
cloud_vm_cluster_id = oci_database_cloud_vm_cluster.test_cloud_vm_cluster.id
67+
objective = "AUTO"
68+
69+
db_plans {
70+
db_name = "default"
71+
share = 1
72+
}
73+
}
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
package integrationtest
2+
3+
import (
4+
"fmt"
5+
"strconv"
6+
"testing"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
10+
11+
"github.com/terraform-providers/terraform-provider-oci/httpreplay"
12+
"github.com/terraform-providers/terraform-provider-oci/internal/acctest"
13+
"github.com/terraform-providers/terraform-provider-oci/internal/resourcediscovery"
14+
"github.com/terraform-providers/terraform-provider-oci/internal/utils"
15+
)
16+
17+
var (
18+
CloudVmClusterIormConfigRequiredOnlyResource = CloudVmClusterIormConfigResourceDependencies +
19+
acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_vm_cluster_iorm_config", "test_cloud_vm_cluster_iorm_config", acctest.Required, acctest.Create, cloudVmClusterIormConfigRepresentation)
20+
21+
CloudVmClusterIormConfigResourceConfig = CloudVmClusterIormConfigResourceDependencies +
22+
acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_vm_cluster_iorm_config", "test_cloud_vm_cluster_iorm_config", acctest.Optional, acctest.Update, cloudVmClusterIormConfigRepresentation)
23+
24+
cloudVmClusterIormConfigSingularDataSourceRepresentation = map[string]interface{}{
25+
"cloud_vm_cluster_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_cloud_vm_cluster.test_cloud_vm_cluster.id}`},
26+
}
27+
28+
cloudVmClusterIormConfigRepresentation = map[string]interface{}{
29+
"cloud_vm_cluster_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_cloud_vm_cluster.test_cloud_vm_cluster.id}`},
30+
"objective": acctest.Representation{RepType: acctest.Optional, Create: `AUTO`, Update: `BALANCED`},
31+
"db_plans": acctest.RepresentationGroup{RepType: acctest.Required, Group: dbPlanRepresentation},
32+
}
33+
34+
CloudVmClusterIormConfigResourceDependencies = AvailabilityDomainConfig + CloudVmClusterRequiredOnlyResource
35+
)
36+
37+
// issue-routing-tag: database/ExaCS
38+
func TestDatabaseCloudVmClusterIormConfigResource_basic(t *testing.T) {
39+
40+
httpreplay.SetScenario("TestDatabaseCloudVmClusterIormConfigResource_basic")
41+
defer httpreplay.SaveScenario()
42+
43+
config := acctest.ProviderTestConfig()
44+
45+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
46+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
47+
48+
resourceName := "oci_database_cloud_vm_cluster_iorm_config.test_cloud_vm_cluster_iorm_config"
49+
50+
singularDatasourceName := "data.oci_database_cloud_vm_cluster_iorm_config.test_cloud_vm_cluster_iorm_config"
51+
52+
var resId, resId2 string
53+
// 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.
54+
acctest.SaveConfigContent(config+compartmentIdVariableStr+CloudVmClusterIormConfigResourceDependencies+
55+
acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_vm_cluster_iorm_config", "test_cloud_vm_cluster_iorm_config", acctest.Optional, acctest.Create, cloudVmClusterIormConfigRepresentation), "database", "exadataIormConfig", t)
56+
57+
acctest.ResourceTest(t, nil, []resource.TestStep{
58+
// verify Create
59+
{
60+
Config: config + compartmentIdVariableStr + CloudVmClusterIormConfigResourceDependencies +
61+
acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_vm_cluster_iorm_config", "test_cloud_vm_cluster_iorm_config", acctest.Required, acctest.Create, cloudVmClusterIormConfigRepresentation),
62+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
63+
resource.TestCheckResourceAttrSet(resourceName, "cloud_vm_cluster_id"),
64+
resource.TestCheckResourceAttr(resourceName, "db_plans.#", "1"),
65+
66+
func(s *terraform.State) (err error) {
67+
resId, err = acctest.FromInstanceState(s, resourceName, "id")
68+
return err
69+
},
70+
),
71+
},
72+
73+
// delete before next Create
74+
{
75+
Config: config + compartmentIdVariableStr + CloudVmClusterIormConfigResourceDependencies,
76+
},
77+
// verify Create with optionals
78+
{
79+
Config: config + compartmentIdVariableStr + CloudVmClusterIormConfigResourceDependencies +
80+
acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_vm_cluster_iorm_config", "test_cloud_vm_cluster_iorm_config", acctest.Optional, acctest.Create, cloudVmClusterIormConfigRepresentation),
81+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
82+
resource.TestCheckResourceAttr(resourceName, "objective", "AUTO"),
83+
84+
func(s *terraform.State) (err error) {
85+
resId, err = acctest.FromInstanceState(s, resourceName, "id")
86+
if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment {
87+
if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil {
88+
return errExport
89+
}
90+
}
91+
return err
92+
},
93+
),
94+
},
95+
96+
// verify updates to updatable parameters
97+
{
98+
Config: config + compartmentIdVariableStr + CloudVmClusterIormConfigResourceDependencies +
99+
acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_vm_cluster_iorm_config", "test_cloud_vm_cluster_iorm_config", acctest.Optional, acctest.Update, cloudVmClusterIormConfigRepresentation),
100+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
101+
resource.TestCheckResourceAttrSet(resourceName, "cloud_vm_cluster_id"),
102+
resource.TestCheckResourceAttr(resourceName, "objective", "BALANCED"),
103+
resource.TestCheckResourceAttr(resourceName, "db_plans.#", "1"),
104+
105+
func(s *terraform.State) (err error) {
106+
resId2, err = acctest.FromInstanceState(s, resourceName, "id")
107+
if resId != resId2 {
108+
return fmt.Errorf("Resource recreated when it was supposed to be updated.")
109+
}
110+
return err
111+
},
112+
),
113+
},
114+
// verify singular datasource
115+
{
116+
Config: config +
117+
acctest.GenerateDataSourceFromRepresentationMap("oci_database_cloud_vm_cluster_iorm_config", "test_cloud_vm_cluster_iorm_config", acctest.Required, acctest.Create, cloudVmClusterIormConfigSingularDataSourceRepresentation) +
118+
compartmentIdVariableStr + CloudVmClusterIormConfigResourceConfig,
119+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
120+
resource.TestCheckResourceAttrSet(singularDatasourceName, "cloud_vm_cluster_id"),
121+
122+
resource.TestCheckResourceAttr(singularDatasourceName, "db_plans.#", "1"),
123+
resource.TestCheckResourceAttr(singularDatasourceName, "objective", "BALANCED"),
124+
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
125+
),
126+
},
127+
})
128+
}

internal/provider/register_datasource.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,7 @@ func init() {
487487
RegisterDatasource("oci_database_cloud_exadata_infrastructures", tf_database.DatabaseCloudExadataInfrastructuresDataSource())
488488
RegisterDatasource("oci_database_cloud_vm_cluster", tf_database.DatabaseCloudVmClusterDataSource())
489489
RegisterDatasource("oci_database_cloud_vm_clusters", tf_database.DatabaseCloudVmClustersDataSource())
490+
RegisterDatasource("oci_database_cloud_vm_cluster_iorm_config", tf_database.DatabaseCloudVmClusterIormConfigDataSource())
490491
RegisterDatasource("oci_database_data_guard_association", tf_database.DatabaseDataGuardAssociationDataSource())
491492
RegisterDatasource("oci_database_data_guard_associations", tf_database.DatabaseDataGuardAssociationsDataSource())
492493
RegisterDatasource("oci_database_database", tf_database.DatabaseDatabaseDataSource())

internal/provider/register_resource.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ func init() {
265265
RegisterResource("oci_database_cloud_database_management", tf_database.DatabaseCloudDatabaseManagementResource())
266266
RegisterResource("oci_database_cloud_exadata_infrastructure", tf_database.DatabaseCloudExadataInfrastructureResource())
267267
RegisterResource("oci_database_cloud_vm_cluster", tf_database.DatabaseCloudVmClusterResource())
268+
RegisterResource("oci_database_cloud_vm_cluster_iorm_config", tf_database.DatabaseCloudVmClusterIormConfigResource())
268269
RegisterResource("oci_database_data_guard_association", tf_database.DatabaseDataGuardAssociationResource())
269270
RegisterResource("oci_database_database", tf_database.DatabaseDatabaseResource())
270271
RegisterResource("oci_database_database_software_image", tf_database.DatabaseDatabaseSoftwareImageResource())
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package database
2+
3+
import (
4+
"context"
5+
6+
"github.com/terraform-providers/terraform-provider-oci/internal/client"
7+
"github.com/terraform-providers/terraform-provider-oci/internal/tfresource"
8+
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10+
oci_database "github.com/oracle/oci-go-sdk/v65/database"
11+
)
12+
13+
func DatabaseCloudVmClusterIormConfigDataSource() *schema.Resource {
14+
fieldMap := make(map[string]*schema.Schema)
15+
fieldMap["cloud_vm_cluster_id"] = &schema.Schema{
16+
Type: schema.TypeString,
17+
Required: true,
18+
}
19+
return tfresource.GetSingularDataSourceItemSchema(DatabaseCloudVmClusterIormConfigResource(), fieldMap, readSingularDatabaseCloudVmClusterIormConfig)
20+
}
21+
22+
func readSingularDatabaseCloudVmClusterIormConfig(d *schema.ResourceData, m interface{}) error {
23+
sync := &DatabaseCloudVmClusterConfigDataSourceCrud{}
24+
sync.D = d
25+
sync.Client = m.(*client.OracleClients).DatabaseClient()
26+
27+
return tfresource.ReadResource(sync)
28+
}
29+
30+
type DatabaseCloudVmClusterConfigDataSourceCrud struct {
31+
D *schema.ResourceData
32+
Client *oci_database.DatabaseClient
33+
Res *oci_database.GetCloudVmClusterIormConfigResponse
34+
}
35+
36+
func (s *DatabaseCloudVmClusterConfigDataSourceCrud) VoidState() {
37+
s.D.SetId("")
38+
}
39+
40+
func (s *DatabaseCloudVmClusterConfigDataSourceCrud) Get() error {
41+
request := oci_database.GetCloudVmClusterIormConfigRequest{}
42+
43+
if cloudVmClusterId, ok := s.D.GetOkExists("cloud_vm_cluster_id"); ok {
44+
tmp := cloudVmClusterId.(string)
45+
request.CloudVmClusterId = &tmp
46+
}
47+
48+
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(false, "database")
49+
50+
response, err := s.Client.GetCloudVmClusterIormConfig(context.Background(), request)
51+
if err != nil {
52+
return err
53+
}
54+
55+
s.Res = &response
56+
return nil
57+
}
58+
59+
func (s *DatabaseCloudVmClusterConfigDataSourceCrud) SetData() error {
60+
if s.Res == nil {
61+
return nil
62+
}
63+
64+
s.D.SetId(tfresource.GenerateDataSourceHashID("DatabaseCloudVmClusterIormConfigDataSource-", DatabaseCloudVmClusterIormConfigDataSource(), s.D))
65+
66+
dbPlans := []interface{}{}
67+
for _, item := range s.Res.DbPlans {
68+
if configMap := dbIormConfigToMap(item); configMap != nil {
69+
dbPlans = append(dbPlans, configMap)
70+
}
71+
}
72+
s.D.Set("db_plans", dbPlans)
73+
74+
if s.Res.LifecycleDetails != nil {
75+
s.D.Set("lifecycle_details", *s.Res.LifecycleDetails)
76+
}
77+
78+
s.D.Set("objective", s.Res.Objective)
79+
80+
s.D.Set("state", s.Res.LifecycleState)
81+
82+
return nil
83+
}

0 commit comments

Comments
 (0)