Skip to content

Commit 331811d

Browse files
committed
Update oracle_exadata_infrastructure to follow oracledatabase 2025-03-01
1 parent 46d2be6 commit 331811d

7 files changed

+117
-22
lines changed

internal/services/oracle/oracle_cloud_vm_cluster_data_source.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"github.com/hashicorp/go-azure-helpers/lang/response"
1212
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
1313
"github.com/hashicorp/go-azure-helpers/resourcemanager/location"
14-
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2024-06-01/cloudvmclusters"
14+
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2025-03-01/cloudvmclusters"
1515
"github.com/hashicorp/terraform-provider-azurerm/internal/sdk"
1616
"github.com/hashicorp/terraform-provider-azurerm/internal/services/oracle/validate"
1717
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
@@ -29,6 +29,7 @@ type CloudVmClusterDataModel struct {
2929
CloudExadataInfrastructureId string `tfschema:"cloud_exadata_infrastructure_id"`
3030
ClusterName string `tfschema:"cluster_name"`
3131
CompartmentId string `tfschema:"compartment_id"`
32+
ComputeModel string `tfschema:"compute_model"`
3233
ComputeNodes []string `tfschema:"compute_nodes"`
3334
CpuCoreCount int64 `tfschema:"cpu_core_count"`
3435
DataCollectionOptions []DataCollectionOptionsModel `tfschema:"data_collection_options"`
@@ -131,6 +132,11 @@ func (d CloudVmClusterDataSource) Attributes() map[string]*pluginsdk.Schema {
131132
Computed: true,
132133
},
133134

135+
"compute_model": {
136+
Type: pluginsdk.TypeString,
137+
Computed: true,
138+
},
139+
134140
"compute_nodes": {
135141
Type: pluginsdk.TypeList,
136142
Computed: true,
@@ -440,7 +446,7 @@ func (d CloudVmClusterDataSource) Read() sdk.ResourceFunc {
440446
return sdk.ResourceFunc{
441447
Timeout: 5 * time.Minute,
442448
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
443-
client := metadata.Client.Oracle.OracleClient.CloudVMClusters
449+
client := metadata.Client.Oracle.OracleClient25.CloudVMClusters
444450
subscriptionId := metadata.Client.Account.SubscriptionId
445451

446452
var state CloudVmClusterDataModel
@@ -466,6 +472,7 @@ func (d CloudVmClusterDataSource) Read() sdk.ResourceFunc {
466472
state.CloudExadataInfrastructureId = props.CloudExadataInfrastructureId
467473
state.ClusterName = pointer.From(props.ClusterName)
468474
state.CompartmentId = pointer.From(props.CompartmentId)
475+
state.ComputeModel = string(pointer.From(props.ComputeModel))
469476
state.ComputeNodes = pointer.From(props.ComputeNodes)
470477
state.CpuCoreCount = props.CpuCoreCount
471478
state.DataStoragePercentage = pointer.From(props.DataStoragePercentage)

internal/services/oracle/oracle_cloud_vm_cluster_resource.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import (
1212
"github.com/hashicorp/go-azure-helpers/lang/response"
1313
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonids"
1414
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
15-
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2024-06-01/cloudexadatainfrastructures"
16-
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2024-06-01/cloudvmclusters"
15+
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2025-03-01/cloudexadatainfrastructures"
16+
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2025-03-01/cloudvmclusters"
1717
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1818
"github.com/hashicorp/terraform-provider-azurerm/internal/sdk"
1919
"github.com/hashicorp/terraform-provider-azurerm/internal/services/oracle/validate"
@@ -316,7 +316,7 @@ func (r CloudVmClusterResource) Create() sdk.ResourceFunc {
316316
return sdk.ResourceFunc{
317317
Timeout: 24 * time.Hour,
318318
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
319-
client := metadata.Client.Oracle.OracleClient.CloudVMClusters
319+
client := metadata.Client.Oracle.OracleClient25.CloudVMClusters
320320
subscriptionId := metadata.Client.Account.SubscriptionId
321321

322322
var model CloudVmClusterResourceModel
@@ -414,7 +414,7 @@ func (r CloudVmClusterResource) Update() sdk.ResourceFunc {
414414
return sdk.ResourceFunc{
415415
Timeout: 30 * time.Minute,
416416
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
417-
client := metadata.Client.Oracle.OracleClient.CloudVMClusters
417+
client := metadata.Client.Oracle.OracleClient25.CloudVMClusters
418418
id, err := cloudvmclusters.ParseCloudVMClusterID(metadata.ResourceData.Id())
419419
if err != nil {
420420
return err
@@ -453,7 +453,7 @@ func (CloudVmClusterResource) Read() sdk.ResourceFunc {
453453
return err
454454
}
455455

456-
client := metadata.Client.Oracle.OracleClient.CloudVMClusters
456+
client := metadata.Client.Oracle.OracleClient25.CloudVMClusters
457457
resp, err := client.Get(ctx, *id)
458458
if err != nil {
459459
if response.WasNotFound(resp.HttpResponse) {
@@ -520,7 +520,7 @@ func (CloudVmClusterResource) Delete() sdk.ResourceFunc {
520520
return sdk.ResourceFunc{
521521
Timeout: 30 * time.Minute,
522522
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
523-
client := metadata.Client.Oracle.OracleClient.CloudVMClusters
523+
client := metadata.Client.Oracle.OracleClient25.CloudVMClusters
524524

525525
id, err := cloudvmclusters.ParseCloudVMClusterID(metadata.ResourceData.Id())
526526
if err != nil {

internal/services/oracle/oracle_db_servers_data_source.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"github.com/hashicorp/go-azure-helpers/lang/pointer"
1111
"github.com/hashicorp/go-azure-helpers/lang/response"
1212
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
13-
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2024-06-01/dbservers"
13+
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2025-03-01/dbservers"
1414
"github.com/hashicorp/terraform-provider-azurerm/internal/sdk"
1515
"github.com/hashicorp/terraform-provider-azurerm/internal/services/oracle/validate"
1616
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
@@ -28,6 +28,7 @@ type DBServerDataModel struct {
2828
AutonomousVMClusterIds []string `tfschema:"autonomous_vm_cluster_ids"`
2929
AutonomousVirtualMachineIds []string `tfschema:"autonomous_virtual_machine_ds"`
3030
CompartmentId string `tfschema:"compartment_id"`
31+
ComputeModel string `tfschema:"compute_model"`
3132
CpuCoreCount int64 `tfschema:"cpu_core_count"`
3233
DbNodeIds []string `tfschema:"db_node_ids"`
3334
DbNodeStorageSizeInGbs int64 `tfschema:"db_node_storage_size_in_gbs"`
@@ -85,6 +86,11 @@ func (d DBServersDataSource) Attributes() map[string]*pluginsdk.Schema {
8586
Computed: true,
8687
},
8788

89+
"compute_model": {
90+
Type: pluginsdk.TypeString,
91+
Computed: true,
92+
},
93+
8894
"cpu_core_count": {
8995
Type: pluginsdk.TypeInt,
9096
Computed: true,
@@ -187,7 +193,7 @@ func (d DBServersDataSource) Read() sdk.ResourceFunc {
187193
return sdk.ResourceFunc{
188194
Timeout: 5 * time.Minute,
189195
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
190-
client := metadata.Client.Oracle.OracleClient.DbServers
196+
client := metadata.Client.Oracle.OracleClient25.DbServers
191197
subscriptionId := metadata.Client.Account.SubscriptionId
192198

193199
var state DBServersDataModel
@@ -212,6 +218,7 @@ func (d DBServersDataSource) Read() sdk.ResourceFunc {
212218
AutonomousVMClusterIds: pointer.From(props.AutonomousVMClusterIds),
213219
AutonomousVirtualMachineIds: pointer.From(props.AutonomousVirtualMachineIds),
214220
CompartmentId: pointer.From(props.CompartmentId),
221+
ComputeModel: string(pointer.From(props.ComputeModel)),
215222
CpuCoreCount: pointer.From(props.CpuCoreCount),
216223
DbNodeIds: pointer.From(props.DbNodeIds),
217224
DbNodeStorageSizeInGbs: pointer.From(props.DbNodeStorageSizeInGbs),

internal/services/oracle/oracle_exadata_infrastructure_data_source.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
1313
"github.com/hashicorp/go-azure-helpers/resourcemanager/location"
1414
"github.com/hashicorp/go-azure-helpers/resourcemanager/zones"
15-
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2024-06-01/cloudexadatainfrastructures"
15+
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2025-03-01/cloudexadatainfrastructures"
1616
"github.com/hashicorp/terraform-provider-azurerm/internal/sdk"
1717
"github.com/hashicorp/terraform-provider-azurerm/internal/services/oracle/validate"
1818
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
@@ -32,8 +32,10 @@ type ExadataInfraDataModel struct {
3232
AdditionalStorageCount int64 `tfschema:"additional_storage_count"`
3333
AvailableStorageSizeInGbs int64 `tfschema:"available_storage_size_in_gbs"`
3434
ComputeCount int64 `tfschema:"compute_count"`
35+
ComputeModel string `tfschema:"compute_model"`
3536
CpuCount int64 `tfschema:"cpu_count"`
3637
CustomerContacts []string `tfschema:"customer_contacts"`
38+
DatabaseServerType string `tfschema:"database_server_type"`
3739
DataStorageSizeInTbs float64 `tfschema:"data_storage_size_in_tbs"`
3840
DbNodeStorageSizeInGbs int64 `tfschema:"db_node_storage_size_in_gbs"`
3941
DbServerVersion string `tfschema:"db_server_version"`
@@ -55,6 +57,7 @@ type ExadataInfraDataModel struct {
5557
Ocid string `tfschema:"ocid"`
5658
Shape string `tfschema:"shape"`
5759
StorageCount int64 `tfschema:"storage_count"`
60+
StorageServerType string `tfschema:"storage_server_type"`
5861
StorageServerVersion string `tfschema:"storage_server_version"`
5962
TimeCreated string `tfschema:"time_created"`
6063
TotalStorageSizeInGbs int64 `tfschema:"total_storage_size_in_gbs"`
@@ -114,6 +117,11 @@ func (d ExadataInfraDataSource) Attributes() map[string]*pluginsdk.Schema {
114117
Computed: true,
115118
},
116119

120+
"compute_model": {
121+
Type: pluginsdk.TypeString,
122+
Computed: true,
123+
},
124+
117125
"cpu_count": {
118126
Type: pluginsdk.TypeInt,
119127
Computed: true,
@@ -127,6 +135,11 @@ func (d ExadataInfraDataSource) Attributes() map[string]*pluginsdk.Schema {
127135
},
128136
},
129137

138+
"database_server_type": {
139+
Type: pluginsdk.TypeString,
140+
Computed: true,
141+
},
142+
130143
"data_storage_size_in_tbs": {
131144
Type: pluginsdk.TypeFloat,
132145
Computed: true,
@@ -320,6 +333,11 @@ func (d ExadataInfraDataSource) Attributes() map[string]*pluginsdk.Schema {
320333
Computed: true,
321334
},
322335

336+
"storage_server_type": {
337+
Type: pluginsdk.TypeString,
338+
Computed: true,
339+
},
340+
323341
"storage_server_version": {
324342
Type: pluginsdk.TypeString,
325343
Computed: true,
@@ -357,7 +375,7 @@ func (d ExadataInfraDataSource) Read() sdk.ResourceFunc {
357375
return sdk.ResourceFunc{
358376
Timeout: 5 * time.Minute,
359377
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
360-
client := metadata.Client.Oracle.OracleClient.CloudExadataInfrastructures
378+
client := metadata.Client.Oracle.OracleClient25.CloudExadataInfrastructures
361379
subscriptionId := metadata.Client.Account.SubscriptionId
362380

363381
var state ExadataInfraDataModel
@@ -409,7 +427,9 @@ func (d ExadataInfraDataSource) Read() sdk.ResourceFunc {
409427
state.StorageCount = pointer.From(props.StorageCount)
410428
state.StorageServerVersion = pointer.From(props.StorageServerVersion)
411429
state.TimeCreated = pointer.From(props.TimeCreated)
412-
state.TotalStorageSizeInGbs = pointer.From(props.TotalStorageSizeInGbs)
430+
state.ComputeModel = string(pointer.From(props.ComputeModel))
431+
state.DatabaseServerType = pointer.From(props.DatabaseServerType)
432+
state.StorageServerType = pointer.From(props.StorageServerType)
413433
}
414434
}
415435

internal/services/oracle/oracle_exadata_infrastructure_resource.go

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
1313
"github.com/hashicorp/go-azure-helpers/resourcemanager/location"
1414
"github.com/hashicorp/go-azure-helpers/resourcemanager/zones"
15-
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2024-06-01/cloudexadatainfrastructures"
15+
"github.com/hashicorp/go-azure-sdk/resource-manager/oracledatabase/2025-03-01/cloudexadatainfrastructures"
1616
"github.com/hashicorp/terraform-provider-azurerm/internal/sdk"
1717
"github.com/hashicorp/terraform-provider-azurerm/internal/services/oracle/validate"
1818
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
@@ -37,8 +37,10 @@ type ExadataInfraResourceModel struct {
3737
StorageCount int64 `tfschema:"storage_count"`
3838

3939
// Optional
40-
CustomerContacts []string `tfschema:"customer_contacts"`
41-
MaintenanceWindow []MaintenanceWindowModel `tfschema:"maintenance_window"`
40+
DatabaseServerType string `tfschema:"database_server_type"`
41+
StorageServerType string `tfschema:"storage_server_type"`
42+
CustomerContacts []string `tfschema:"customer_contacts"`
43+
MaintenanceWindow []MaintenanceWindowModel `tfschema:"maintenance_window"`
4244
}
4345

4446
func (ExadataInfraResource) Arguments() map[string]*pluginsdk.Schema {
@@ -63,6 +65,14 @@ func (ExadataInfraResource) Arguments() map[string]*pluginsdk.Schema {
6365
ForceNew: true,
6466
},
6567

68+
"database_server_type": {
69+
Type: pluginsdk.TypeString,
70+
Optional: true,
71+
Computed: true,
72+
ForceNew: true,
73+
ValidateFunc: validate.DatabaseServerType,
74+
},
75+
6676
"display_name": {
6777
Type: pluginsdk.TypeString,
6878
Required: true,
@@ -172,6 +182,14 @@ func (ExadataInfraResource) Arguments() map[string]*pluginsdk.Schema {
172182
},
173183
},
174184

185+
"storage_server_type": {
186+
Type: pluginsdk.TypeString,
187+
Optional: true,
188+
Computed: true,
189+
ForceNew: true,
190+
ValidateFunc: validate.StorageServerType,
191+
},
192+
175193
"tags": commonschema.Tags(),
176194

177195
"zones": commonschema.ZonesMultipleRequiredForceNew(),
@@ -194,7 +212,7 @@ func (r ExadataInfraResource) Create() sdk.ResourceFunc {
194212
return sdk.ResourceFunc{
195213
Timeout: 120 * time.Minute,
196214
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
197-
client := metadata.Client.Oracle.OracleClient.CloudExadataInfrastructures
215+
client := metadata.Client.Oracle.OracleClient25.CloudExadataInfrastructures
198216
subscriptionId := metadata.Client.Account.SubscriptionId
199217

200218
var model ExadataInfraResourceModel
@@ -227,7 +245,12 @@ func (r ExadataInfraResource) Create() sdk.ResourceFunc {
227245
CustomerContacts: pointer.To(ExpandCustomerContacts(model.CustomerContacts)),
228246
},
229247
}
230-
248+
if len(model.DatabaseServerType) > 0 {
249+
param.Properties.DatabaseServerType = pointer.To(model.DatabaseServerType)
250+
}
251+
if len(model.StorageServerType) > 0 {
252+
param.Properties.StorageServerType = pointer.To(model.StorageServerType)
253+
}
231254
if len(model.MaintenanceWindow) > 0 {
232255
param.Properties.MaintenanceWindow = &cloudexadatainfrastructures.MaintenanceWindow{
233256
DaysOfWeek: pointer.To(ExpandDayOfWeekTo(model.MaintenanceWindow[0].DaysOfWeek)),
@@ -254,7 +277,7 @@ func (r ExadataInfraResource) Update() sdk.ResourceFunc {
254277
return sdk.ResourceFunc{
255278
Timeout: 30 * time.Minute,
256279
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
257-
client := metadata.Client.Oracle.OracleClient.CloudExadataInfrastructures
280+
client := metadata.Client.Oracle.OracleClient25.CloudExadataInfrastructures
258281
id, err := cloudexadatainfrastructures.ParseCloudExadataInfrastructureID(metadata.ResourceData.Id())
259282
if err != nil {
260283
return err
@@ -288,7 +311,7 @@ func (ExadataInfraResource) Read() sdk.ResourceFunc {
288311
return sdk.ResourceFunc{
289312
Timeout: 5 * time.Minute,
290313
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
291-
client := metadata.Client.Oracle.OracleClient.CloudExadataInfrastructures
314+
client := metadata.Client.Oracle.OracleClient25.CloudExadataInfrastructures
292315

293316
id, err := cloudexadatainfrastructures.ParseCloudExadataInfrastructureID(metadata.ResourceData.Id())
294317
if err != nil {
@@ -324,6 +347,8 @@ func (ExadataInfraResource) Read() sdk.ResourceFunc {
324347
state.StorageCount = pointer.From(props.StorageCount)
325348
state.Shape = props.Shape
326349
state.MaintenanceWindow = FlattenMaintenanceWindow(props.MaintenanceWindow)
350+
state.DatabaseServerType = pointer.ToString(props.DatabaseServerType)
351+
state.StorageServerType = pointer.ToString(props.StorageServerType)
327352
}
328353
}
329354

@@ -336,7 +361,7 @@ func (ExadataInfraResource) Delete() sdk.ResourceFunc {
336361
return sdk.ResourceFunc{
337362
Timeout: 60 * time.Minute,
338363
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
339-
client := metadata.Client.Oracle.OracleClient.CloudExadataInfrastructures
364+
client := metadata.Client.Oracle.OracleClient25.CloudExadataInfrastructures
340365

341366
id, err := cloudexadatainfrastructures.ParseCloudExadataInfrastructureID(metadata.ResourceData.Id())
342367
if err != nil {

internal/services/oracle/oracle_exadata_infrastructure_resource_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ func TestExaInfra_complete(t *testing.T) {
5353
Config: r.complete(data),
5454
Check: acceptance.ComposeTestCheckFunc(
5555
check.That(data.ResourceName).ExistsInAzure(r),
56+
check.That(data.ResourceName).Key("shape").HasValue("Exadata.X11M"),
57+
check.That(data.ResourceName).Key("database_server_type").HasValue("X11M"),
58+
check.That(data.ResourceName).Key("storage_server_type").HasValue("X11M-HC"),
5659
),
5760
},
5861
data.ImportStep(),
@@ -129,11 +132,14 @@ resource "azurerm_oracle_exadata_infrastructure" "test" {
129132
resource_group_name = azurerm_resource_group.test.name
130133
compute_count = "2"
131134
display_name = "OFakeacctest%[2]d"
132-
shape = "Exadata.X9M"
135+
shape = "Exadata.X11M"
133136
storage_count = "3"
134137
zones = ["3"]
135138
customer_contacts = ["[email protected]"]
136139
140+
database_server_type = "X11M"
141+
storage_server_type = "X11M-HC"
142+
137143
maintenance_window {
138144
days_of_week = ["Monday"]
139145
hours_of_day = [4]

internal/services/oracle/validate/cloud_vm_cluster.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,33 @@ func SystemVersion(i interface{}, k string) (warnings []string, errors []error)
115115

116116
return
117117
}
118+
119+
func DatabaseServerType(i interface{}, k string) (warnings []string, errors []error) {
120+
v, ok := i.(string)
121+
if !ok {
122+
errors = append(errors, fmt.Errorf("expected type of %s to be string", k))
123+
return
124+
}
125+
126+
if len(v) < 1 || len(v) > 255 {
127+
errors = append(errors, fmt.Errorf("databse_server_type must be %d to %d characters", 1, 255))
128+
return
129+
}
130+
131+
return
132+
}
133+
134+
func StorageServerType(i interface{}, k string) (warnings []string, errors []error) {
135+
v, ok := i.(string)
136+
if !ok {
137+
errors = append(errors, fmt.Errorf("expected type of %s to be string", k))
138+
return
139+
}
140+
141+
if len(v) < 1 || len(v) > 255 {
142+
errors = append(errors, fmt.Errorf("storage_server_type must be %d to %d characters", 1, 255))
143+
return
144+
}
145+
146+
return
147+
}

0 commit comments

Comments
 (0)