Skip to content

Commit 9e443f3

Browse files
Terraform Team Automationsagarp337
authored andcommitted
Added - Support for ADB-S: Ability to Set Custom Private IP During PE Provisioning
1 parent 55f457c commit 9e443f3

File tree

6 files changed

+92
-14
lines changed

6 files changed

+92
-14
lines changed

examples/database/adb/autonomous_database.tf

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,43 @@ resource "oci_database_autonomous_database" "autonomous_database_from_backup_lat
153153
whitelisted_ips = ["1.1.1.1/28"]
154154
}
155155

156+
resource "oci_core_vcn" "test_vcn" {
157+
cidr_block = "10.0.0.0/16"
158+
compartment_id = var.compartment_ocid
159+
display_name = "test_vcn"
160+
}
161+
162+
resource "oci_core_subnet" "test_subnet" {
163+
cidr_block = "10.0.0.0/24"
164+
compartment_id = var.compartment_ocid
165+
vcn_id = oci_core_vcn.test_vcn.id
166+
display_name = "test_vcn"
167+
}
168+
169+
resource "oci_database_autonomous_database" "autonomous_database_private_ip" {
170+
#Required
171+
admin_password = random_string.autonomous_database_admin_password.result
172+
compartment_id = var.compartment_ocid
173+
cpu_core_count = "1"
174+
data_storage_size_in_tbs = "1"
175+
db_name = "adbdbip"
176+
177+
#Optional
178+
db_version = data.oci_database_autonomous_db_versions.test_autonomous_db_versions.autonomous_db_versions[0].version
179+
db_workload = var.autonomous_database_db_workload
180+
display_name = "example_autonomous_database"
181+
freeform_tags = var.autonomous_database_freeform_tags
182+
is_auto_scaling_enabled = "true"
183+
is_auto_scaling_for_storage_enabled = "true"
184+
license_model = var.autonomous_database_license_model
185+
is_preview_version_with_service_terms_accepted = "false"
186+
character_set = "AL32UTF8"
187+
ncharacter_set = "AL16UTF16"
188+
private_endpoint_ip = "10.0.0.97"
189+
subnet_id = oci_core_subnet.test_subnet.id
190+
nsg_ids = ["test-bn-nsg-id-1"]
191+
}
192+
156193
data "oci_database_autonomous_databases" "autonomous_databases" {
157194
#Required
158195
compartment_id = var.compartment_ocid

internal/integrationtest/database_autonomous_database_resource_test.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ var (
160160
map[string]interface{}{
161161
"nsg_ids": acctest.Representation{RepType: acctest.Optional, Create: []string{`${oci_core_network_security_group.test_network_security_group.id}`}, Update: []string{`${oci_core_network_security_group.test_network_security_group.id}`, `${oci_core_network_security_group.test_network_security_group2.id}`}},
162162
"private_endpoint_label": acctest.Representation{RepType: acctest.Optional, Create: `xlx4fc9y`},
163+
"private_endpoint_ip": acctest.Representation{RepType: acctest.Optional, Create: `10.0.0.97`},
163164
"subnet_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_core_subnet.test_subnet.id}`},
164165
}), []string{"whitelisted_ips", "scheduled_operations"})
165166

@@ -1213,6 +1214,7 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T
12131214
resource.TestCheckResourceAttr(resourceName, "is_dedicated", "false"),
12141215
resource.TestCheckResourceAttr(resourceName, "is_preview_version_with_service_terms_accepted", "false"),
12151216
resource.TestCheckResourceAttr(resourceName, "license_model", "LICENSE_INCLUDED"),
1217+
resource.TestCheckResourceAttr(resourceName, "private_endpoint_ip", "10.0.0.97"),
12161218
resource.TestCheckResourceAttr(resourceName, "private_endpoint_label", "xlx4fc9y"),
12171219
resource.TestCheckResourceAttr(resourceName, "nsg_ids.#", "1"),
12181220
//resource.TestCheckResourceAttrSet(resourceName, "private_endpoint"),
@@ -1325,6 +1327,7 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T
13251327
resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.is_preview"),
13261328
resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.nsg_ids.#", "1"),
13271329
//resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.private_endpoint"),
1330+
resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.private_endpoint_ip", "10.0.0.97"),
13281331
resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.private_endpoint_label", "xlx4fc9y"),
13291332
resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.state"),
13301333
resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.subnet_id"),
@@ -1359,13 +1362,15 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T
13591362
resource.TestCheckResourceAttrSet(singularDatasourceName, "is_preview"),
13601363
resource.TestCheckResourceAttr(singularDatasourceName, "nsg_ids.#", "1"),
13611364
//resource.TestCheckResourceAttrSet(singularDatasourceName, "private_endpoint"),
1365+
resource.TestCheckResourceAttr(singularDatasourceName, "private_endpoint_ip", "10.0.0.97"),
13621366
resource.TestCheckResourceAttr(singularDatasourceName, "private_endpoint_label", "xlx4fc9y"),
13631367
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
13641368
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),
13651369
resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"),
13661370
resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"),
13671371
),
13681372
},
1373+
13691374
//5. delete before next Create
13701375
{
13711376
Config: config + compartmentIdVariableStr + AutonomousDatabasePrivateEndpointResourceDependencies,
@@ -1450,8 +1455,9 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T
14501455
Config: config + compartmentIdVariableStr + AutonomousDatabasePrivateEndpointResourceDependencies +
14511456
acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Create,
14521457
acctest.RepresentationCopyWithNewProperties(autonomousDatabasePrivateEndpointRepresentation, map[string]interface{}{
1453-
"db_version": acctest.Representation{RepType: acctest.Optional, Create: `19c`},
1454-
"data_safe_status": acctest.Representation{RepType: acctest.Optional, Create: `REGISTERED`},
1458+
"private_endpoint_ip": acctest.Representation{RepType: acctest.Optional, Create: `10.0.0.97`},
1459+
"db_version": acctest.Representation{RepType: acctest.Optional, Create: `19c`},
1460+
"data_safe_status": acctest.Representation{RepType: acctest.Optional, Create: `REGISTERED`},
14551461
})),
14561462
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
14571463
resource.TestCheckResourceAttr(resourceName, "admin_password", "BEstrO0ng_#11"),
@@ -1467,6 +1473,7 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T
14671473
resource.TestCheckResourceAttr(resourceName, "is_dedicated", "false"),
14681474
resource.TestCheckResourceAttr(resourceName, "is_preview_version_with_service_terms_accepted", "false"),
14691475
resource.TestCheckResourceAttr(resourceName, "license_model", "LICENSE_INCLUDED"),
1476+
resource.TestCheckResourceAttr(resourceName, "private_endpoint_ip", "10.0.0.97"),
14701477
resource.TestCheckResourceAttr(resourceName, "private_endpoint_label", "xlx4fc9y"),
14711478
resource.TestCheckResourceAttr(resourceName, "nsg_ids.#", "1"),
14721479
//resource.TestCheckResourceAttrSet(resourceName, "private_endpoint"),
@@ -1503,6 +1510,7 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T
15031510
resource.TestCheckResourceAttr(resourceName, "is_dedicated", "false"),
15041511
resource.TestCheckResourceAttr(resourceName, "is_preview_version_with_service_terms_accepted", "false"),
15051512
resource.TestCheckResourceAttr(resourceName, "license_model", "LICENSE_INCLUDED"),
1513+
resource.TestCheckResourceAttr(resourceName, "private_endpoint_ip", "10.0.0.97"),
15061514
resource.TestCheckResourceAttr(resourceName, "private_endpoint_label", "xlx4fc9y"),
15071515
resource.TestCheckResourceAttr(resourceName, "nsg_ids.#", "1"),
15081516
resource.TestCheckResourceAttrSet(resourceName, "state"),
@@ -1523,6 +1531,7 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T
15231531
acctest.RepresentationCopyWithNewProperties(acctest.RepresentationCopyWithRemovedProperties(autonomousDatabasePrivateEndpointRepresentation, []string{"nsg_ids", "private_endpoint_label", "subnet_id"}), map[string]interface{}{
15241532
"nsg_ids": acctest.Representation{RepType: acctest.Optional, Create: []string{`${oci_core_network_security_group.test_network_security_group.id}`}, Update: []string{}},
15251533
"private_endpoint_label": acctest.Representation{RepType: acctest.Optional, Create: `null`},
1534+
"private_endpoint_ip": acctest.Representation{RepType: acctest.Optional, Create: `null`},
15261535
"subnet_id": acctest.Representation{RepType: acctest.Optional, Create: `null`},
15271536
"db_version": acctest.Representation{RepType: acctest.Optional, Create: `19c`, Update: `19c`},
15281537
})),
@@ -1541,6 +1550,7 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T
15411550
resource.TestCheckResourceAttr(resourceName, "is_preview_version_with_service_terms_accepted", "false"),
15421551
resource.TestCheckResourceAttr(resourceName, "license_model", "LICENSE_INCLUDED"),
15431552
resource.TestCheckResourceAttr(resourceName, "nsg_ids.#", "0"),
1553+
resource.TestCheckResourceAttr(resourceName, "private_endpoint_ip", "null"),
15441554
resource.TestCheckResourceAttr(resourceName, "private_endpoint_label", "null"),
15451555
resource.TestCheckResourceAttrSet(resourceName, "state"),
15461556
resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"),

internal/integrationtest/database_autonomous_database_test.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
202202
resource.TestCheckResourceAttr(resourceName, "is_dedicated", "false"),
203203
resource.TestCheckResourceAttr(resourceName, "is_local_data_guard_enabled", "false"),
204204
resource.TestCheckResourceAttr(resourceName, "is_remote_data_guard_enabled", "false"),
205-
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "0"),
205+
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "1"),
206206
resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "false"),
207207
resource.TestCheckResourceAttr(resourceName, "is_preview_version_with_service_terms_accepted", "false"),
208208
resource.TestCheckResourceAttrSet(resourceName, "kms_key_id"),
@@ -423,7 +423,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
423423
resource.TestCheckResourceAttr(resourceName, "permission_level", "UNRESTRICTED"),
424424
resource.TestCheckResourceAttr(resourceName, "is_local_data_guard_enabled", "false"),
425425
resource.TestCheckResourceAttr(resourceName, "is_remote_data_guard_enabled", "false"),
426-
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "0"),
426+
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "1"),
427427

428428
func(s *terraform.State) (err error) {
429429
resId2, err = acctest.FromInstanceState(s, resourceName, "id")
@@ -748,7 +748,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
748748
resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.time_maintenance_begin"),
749749
resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.time_maintenance_end"),
750750
resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.vault_id"),
751-
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "0"),
751+
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "1"),
752752
),
753753
},
754754
// verify singular datasource
@@ -789,7 +789,6 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
789789
resource.TestCheckResourceAttr(singularDatasourceName, "is_dedicated", "false"),
790790
resource.TestCheckResourceAttr(singularDatasourceName, "is_local_data_guard_enabled", "false"),
791791
resource.TestCheckResourceAttr(singularDatasourceName, "is_remote_data_guard_enabled", "false"),
792-
resource.TestCheckResourceAttr(singularDatasourceName, "local_standby_db.#", "0"),
793792
resource.TestCheckResourceAttrSet(singularDatasourceName, "is_preview"),
794793
resource.TestCheckResourceAttr(singularDatasourceName, "license_model", "LICENSE_INCLUDED"),
795794
// @Codegen: memory_per_oracle_compute_unit_in_gbs is used only by exacc at the moment
@@ -814,7 +813,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
814813
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_maintenance_end"),
815814
resource.TestCheckResourceAttr(resourceName, "is_local_data_guard_enabled", "false"),
816815
resource.TestCheckResourceAttr(resourceName, "is_remote_data_guard_enabled", "false"),
817-
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "0"),
816+
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "1"),
818817
),
819818
},
820819
// verify resource import
@@ -867,7 +866,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
867866
resource.TestCheckResourceAttrSet(resourceName, "state"),
868867
resource.TestCheckResourceAttr(resourceName, "is_local_data_guard_enabled", "false"),
869868
resource.TestCheckResourceAttr(resourceName, "is_remote_data_guard_enabled", "false"),
870-
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "0"),
869+
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "1"),
871870

872871
func(s *terraform.State) (err error) {
873872
resId, err = acctest.FromInstanceState(s, resourceName, "id")
@@ -903,7 +902,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
903902
resource.TestCheckResourceAttrSet(resourceName, "state"),
904903
resource.TestCheckResourceAttr(resourceName, "is_local_data_guard_enabled", "false"),
905904
resource.TestCheckResourceAttr(resourceName, "is_remote_data_guard_enabled", "false"),
906-
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "0"),
905+
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "1"),
907906

908907
func(s *terraform.State) (err error) {
909908
resId2, err = acctest.FromInstanceState(s, resourceName, "id")
@@ -979,7 +978,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
979978
resource.TestCheckResourceAttrSet(resourceName, "state"),
980979
resource.TestCheckResourceAttr(resourceName, "is_local_data_guard_enabled", "false"),
981980
resource.TestCheckResourceAttr(resourceName, "is_remote_data_guard_enabled", "false"),
982-
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "0"),
981+
resource.TestCheckResourceAttr(resourceName, "local_standby_db.#", "1"),
983982

984983
func(s *terraform.State) (err error) {
985984
resId, err = acctest.FromInstanceState(s, resourceName, "id")

internal/service/artifacts/artifacts_container_configuration_resource.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package artifacts
55

66
import (
77
"context"
8+
89
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
910

1011
oci_artifacts "github.com/oracle/oci-go-sdk/v65/artifacts"

internal/service/database/database_autonomous_database_resource.go

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,11 @@ func DatabaseAutonomousDatabaseResource() *schema.Resource {
259259
Optional: true,
260260
Computed: true,
261261
},
262+
"private_endpoint_ip": {
263+
Type: schema.TypeString,
264+
Optional: true,
265+
Computed: true,
266+
},
262267
"private_endpoint_label": {
263268
Type: schema.TypeString,
264269
Optional: true,
@@ -707,10 +712,6 @@ func DatabaseAutonomousDatabaseResource() *schema.Resource {
707712
Type: schema.TypeString,
708713
Computed: true,
709714
},
710-
"private_endpoint_ip": {
711-
Type: schema.TypeString,
712-
Computed: true,
713-
},
714715
"provisionable_cpus": {
715716
Type: schema.TypeList,
716717
Computed: true,
@@ -1373,6 +1374,11 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) Update() error {
13731374
request.PeerDbId = &tmp
13741375
}
13751376

1377+
if privateEndpointIp, ok := s.D.GetOkExists("private_endpoint_ip"); ok {
1378+
tmp := privateEndpointIp.(string)
1379+
request.PrivateEndpointIp = &tmp
1380+
}
1381+
13761382
if refreshableMode, ok := s.D.GetOkExists("refreshable_mode"); ok && s.D.HasChange("refreshable_mode") {
13771383
request.RefreshableMode = oci_database.UpdateAutonomousDatabaseDetailsRefreshableModeEnum(refreshableMode.(string))
13781384
}
@@ -2193,6 +2199,10 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) populateTopLevelPolymorphicCrea
21932199
tmp := float32(ocpuCount.(float64))
21942200
details.OcpuCount = &tmp
21952201
}
2202+
if privateEndpointIp, ok := s.D.GetOkExists("private_endpoint_ip"); ok {
2203+
tmp := privateEndpointIp.(string)
2204+
details.PrivateEndpointIp = &tmp
2205+
}
21962206
if privateEndpointLabel, ok := s.D.GetOkExists("private_endpoint_label"); ok {
21972207
tmp := privateEndpointLabel.(string)
21982208
details.PrivateEndpointLabel = &tmp
@@ -2411,6 +2421,10 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) populateTopLevelPolymorphicCrea
24112421
tmp := float32(ocpuCount.(float64))
24122422
details.OcpuCount = &tmp
24132423
}
2424+
if privateEndpointIp, ok := s.D.GetOkExists("private_endpoint_ip"); ok {
2425+
tmp := privateEndpointIp.(string)
2426+
details.PrivateEndpointIp = &tmp
2427+
}
24142428
if privateEndpointLabel, ok := s.D.GetOkExists("private_endpoint_label"); ok {
24152429
tmp := privateEndpointLabel.(string)
24162430
details.PrivateEndpointLabel = &tmp
@@ -2618,6 +2632,10 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) populateTopLevelPolymorphicCrea
26182632
tmp := float32(ocpuCount.(float64))
26192633
details.OcpuCount = &tmp
26202634
}
2635+
if privateEndpointIp, ok := s.D.GetOkExists("private_endpoint_ip"); ok {
2636+
tmp := privateEndpointIp.(string)
2637+
details.PrivateEndpointIp = &tmp
2638+
}
26212639
if privateEndpointLabel, ok := s.D.GetOkExists("private_endpoint_label"); ok {
26222640
tmp := privateEndpointLabel.(string)
26232641
details.PrivateEndpointLabel = &tmp
@@ -2810,6 +2828,10 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) populateTopLevelPolymorphicCrea
28102828
tmp := ocpuCount.(float32)
28112829
details.OcpuCount = &tmp
28122830
}
2831+
if privateEndpointIp, ok := s.D.GetOkExists("private_endpoint_ip"); ok {
2832+
tmp := privateEndpointIp.(string)
2833+
details.PrivateEndpointIp = &tmp
2834+
}
28132835
if privateEndpointLabel, ok := s.D.GetOkExists("private_endpoint_label"); ok {
28142836
tmp := privateEndpointLabel.(string)
28152837
details.PrivateEndpointLabel = &tmp
@@ -3020,6 +3042,10 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) populateTopLevelPolymorphicCrea
30203042
tmp := float32(ocpuCount.(float64))
30213043
details.OcpuCount = &tmp
30223044
}
3045+
if privateEndpointIp, ok := s.D.GetOkExists("private_endpoint_ip"); ok {
3046+
tmp := privateEndpointIp.(string)
3047+
details.PrivateEndpointIp = &tmp
3048+
}
30233049
if privateEndpointLabel, ok := s.D.GetOkExists("private_endpoint_label"); ok {
30243050
tmp := privateEndpointLabel.(string)
30253051
details.PrivateEndpointLabel = &tmp
@@ -3222,6 +3248,10 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) populateTopLevelPolymorphicCrea
32223248
tmp := float32(ocpuCount.(float64))
32233249
details.OcpuCount = &tmp
32243250
}
3251+
if privateEndpointIp, ok := s.D.GetOkExists("private_endpoint_ip"); ok {
3252+
tmp := privateEndpointIp.(string)
3253+
details.PrivateEndpointIp = &tmp
3254+
}
32253255
if privateEndpointLabel, ok := s.D.GetOkExists("private_endpoint_label"); ok {
32263256
tmp := privateEndpointLabel.(string)
32273257
details.PrivateEndpointLabel = &tmp

internal/service/datascience/datascience_models_data_source.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package datascience
55

66
import (
77
"context"
8+
89
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
910
oci_datascience "github.com/oracle/oci-go-sdk/v65/datascience"
1011
"github.com/oracle/terraform-provider-oci/internal/client"

0 commit comments

Comments
 (0)