Skip to content

Commit 9ce515c

Browse files
committed
odb network refactored according to feedback received for exadata-infra
1 parent fed98fd commit 9ce515c

File tree

9 files changed

+470
-418
lines changed

9 files changed

+470
-418
lines changed

internal/service/odb/network.go

Lines changed: 167 additions & 186 deletions
Large diffs are not rendered by default.

internal/service/odb/network_data_source.go

Lines changed: 17 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
//Copyright © 2025, Oracle and/or its affiliates. All rights reserved.
1+
//Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
22

33
package odb
44

55
import (
66
"context"
77
"github.com/aws/aws-sdk-go-v2/service/odb"
88
odbtypes "github.com/aws/aws-sdk-go-v2/service/odb/types"
9-
"github.com/hashicorp/terraform-plugin-framework/attr"
9+
"github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes"
1010
"github.com/hashicorp/terraform-plugin-framework/datasource"
1111
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
1212
"github.com/hashicorp/terraform-plugin-framework/types"
@@ -16,11 +16,11 @@ import (
1616
fwtypes "github.com/hashicorp/terraform-provider-aws/internal/framework/types"
1717
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
1818
"github.com/hashicorp/terraform-provider-aws/names"
19-
"time"
2019
)
2120

2221
// Function annotations are used for datasource registration to the Provider. DO NOT EDIT.
2322
// @FrameworkDataSource("aws_odb_network", name="Network")
23+
// @Tags(identifierAttribute="arn")
2424
func newDataSourceNetwork(context.Context) (datasource.DataSourceWithConfigure, error) {
2525
return &dataSourceNetwork{}, nil
2626
}
@@ -33,8 +33,6 @@ type dataSourceNetwork struct {
3333
framework.DataSourceWithModel[odbNetworkDataSourceModel]
3434
}
3535

36-
var OdbNetworkDataSource dataSourceNetwork
37-
3836
func (d *dataSourceNetwork) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) {
3937
statusType := fwtypes.StringEnumType[odbtypes.ResourceStatus]()
4038
resp.Schema = schema.Schema{
@@ -112,61 +110,19 @@ func (d *dataSourceNetwork) Schema(ctx context.Context, req datasource.SchemaReq
112110
},
113111
"created_at": schema.StringAttribute{
114112
Computed: true,
113+
CustomType: timetypes.RFC3339Type{},
115114
Description: "The date and time when the ODB network was created.",
116115
},
117-
"managed_services": schema.ObjectAttribute{
116+
"managed_services": schema.ListAttribute{
118117
Computed: true,
119-
CustomType: fwtypes.NewObjectTypeOf[odbNetworkManagedServicesDataSourceModel](ctx),
118+
CustomType: fwtypes.NewListNestedObjectTypeOf[odbNetworkManagedServicesDataSourceModel](ctx),
120119
Description: "The managed services configuration for the ODB network.",
121-
AttributeTypes: map[string]attr.Type{
122-
"service_network_arn": types.StringType,
123-
"resource_gateway_arn": types.StringType,
124-
"managed_service_ipv4_cidrs": types.ListType{
125-
ElemType: types.StringType,
126-
},
127-
"service_network_endpoint": types.ObjectType{
128-
AttrTypes: map[string]attr.Type{
129-
"vpc_endpoint_id": types.StringType,
130-
"vpc_endpoint_type": fwtypes.StringEnumType[odbtypes.VpcEndpointType](),
131-
},
132-
},
133-
"managed_s3_backup_access": types.ObjectType{
134-
AttrTypes: map[string]attr.Type{
135-
"status": fwtypes.StringEnumType[odbtypes.ResourceStatus](),
136-
"ipv4_addresses": types.ListType{
137-
ElemType: types.StringType,
138-
},
139-
},
140-
},
141-
"zero_tl_access": types.ObjectType{
142-
AttrTypes: map[string]attr.Type{
143-
"status": fwtypes.StringEnumType[odbtypes.ManagedResourceStatus](),
144-
"cidr": types.StringType,
145-
},
146-
},
147-
"s3_access": types.ObjectType{
148-
AttrTypes: map[string]attr.Type{
149-
"status": fwtypes.StringEnumType[odbtypes.ManagedResourceStatus](),
150-
"ipv4_addresses": types.ListType{
151-
ElemType: types.StringType,
152-
},
153-
"domain_name": types.StringType,
154-
"s3_policy_document": types.StringType,
155-
},
156-
},
157-
},
158120
},
159121
names.AttrTags: tftags.TagsAttributeComputedOnly(),
160122
"oci_dns_forwarding_configs": schema.ListAttribute{
161123
Computed: true,
162-
Description: "The DNS resolver endpoint in OCI for forwarding DNS queries for the ociPrivateZone domain.",
163124
CustomType: fwtypes.NewListNestedObjectTypeOf[odbNwkOciDnsForwardingConfigDataSourceModel](ctx),
164-
ElementType: types.ObjectType{
165-
AttrTypes: map[string]attr.Type{
166-
"domain_name": types.StringType,
167-
"oci_dns_listener_ip": types.StringType,
168-
},
169-
},
125+
Description: "The DNS resolver endpoint in OCI for forwarding DNS queries for the ociPrivateZone domain.",
170126
},
171127
},
172128
}
@@ -192,13 +148,10 @@ func (d *dataSourceNetwork) Read(ctx context.Context, req datasource.ReadRequest
192148
)
193149
return
194150
}
195-
196-
data.CreatedAt = types.StringValue(out.OdbNetwork.CreatedAt.Format(time.RFC3339))
197-
resp.Diagnostics.Append(flex.Flatten(ctx, out.OdbNetwork, &data, flex.WithIgnoredFieldNamesAppend("CreatedAt"))...)
151+
resp.Diagnostics.Append(flex.Flatten(ctx, out.OdbNetwork, &data)...)
198152
if resp.Diagnostics.HasError() {
199153
return
200154
}
201-
202155
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
203156
}
204157

@@ -223,8 +176,8 @@ type odbNetworkDataSourceModel struct {
223176
PercentProgress types.Float64 `tfsdk:"percent_progress"`
224177
Status fwtypes.StringEnum[odbtypes.ResourceStatus] `tfsdk:"status"`
225178
StatusReason types.String `tfsdk:"status_reason"`
226-
CreatedAt types.String `tfsdk:"created_at"`
227-
ManagedServices fwtypes.ObjectValueOf[odbNetworkManagedServicesDataSourceModel] `tfsdk:"managed_services"`
179+
CreatedAt timetypes.RFC3339 `tfsdk:"created_at"`
180+
ManagedServices fwtypes.ListNestedObjectValueOf[odbNetworkManagedServicesDataSourceModel] `tfsdk:"managed_services"`
228181
Tags tftags.Map `tfsdk:"tags"`
229182
}
230183

@@ -234,13 +187,13 @@ type odbNwkOciDnsForwardingConfigDataSourceModel struct {
234187
}
235188

236189
type odbNetworkManagedServicesDataSourceModel struct {
237-
ServiceNetworkArn types.String `tfsdk:"service_network_arn"`
238-
ResourceGatewayArn types.String `tfsdk:"resource_gateway_arn"`
239-
ManagedServicesIpv4Cidrs fwtypes.ListOfString `tfsdk:"managed_service_ipv4_cidrs"`
240-
ServiceNetworkEndpoint fwtypes.ObjectValueOf[serviceNetworkEndpointOdbNetworkDataSourceModel] `tfsdk:"service_network_endpoint"`
241-
ManagedS3BackupAccess fwtypes.ObjectValueOf[managedS3BackupAccessOdbNetworkDataSourceModel] `tfsdk:"managed_s3_backup_access"`
242-
ZeroEtlAccess fwtypes.ObjectValueOf[zeroEtlAccessOdbNetworkDataSourceModel] `tfsdk:"zero_tl_access"`
243-
S3Access fwtypes.ObjectValueOf[s3AccessOdbNetworkDataSourceModel] `tfsdk:"s3_access"`
190+
ServiceNetworkArn types.String `tfsdk:"service_network_arn"`
191+
ResourceGatewayArn types.String `tfsdk:"resource_gateway_arn"`
192+
ManagedServicesIpv4Cidrs fwtypes.ListOfString `tfsdk:"managed_service_ipv4_cidrs"`
193+
ServiceNetworkEndpoint fwtypes.ListNestedObjectValueOf[serviceNetworkEndpointOdbNetworkDataSourceModel] `tfsdk:"service_network_endpoint"`
194+
ManagedS3BackupAccess fwtypes.ListNestedObjectValueOf[managedS3BackupAccessOdbNetworkDataSourceModel] `tfsdk:"managed_s3_backup_access"`
195+
ZeroEtlAccess fwtypes.ListNestedObjectValueOf[zeroEtlAccessOdbNetworkDataSourceModel] `tfsdk:"zero_tl_access"`
196+
S3Access fwtypes.ListNestedObjectValueOf[s3AccessOdbNetworkDataSourceModel] `tfsdk:"s3_access"`
244197
}
245198

246199
type serviceNetworkEndpointOdbNetworkDataSourceModel struct {

internal/service/odb/network_data_source_test.go

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
1-
//Copyright © 2025, Oracle and/or its affiliates. All rights reserved.
1+
//Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
22

33
package odb_test
44

55
import (
66
"context"
77
"errors"
88
"fmt"
9+
"testing"
10+
911
"github.com/aws/aws-sdk-go-v2/aws"
1012
"github.com/aws/aws-sdk-go-v2/service/odb"
1113
odbtypes "github.com/aws/aws-sdk-go-v2/service/odb/types"
1214
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
1315
sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest"
16+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
1417
"github.com/hashicorp/terraform-plugin-testing/terraform"
18+
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
1519
"github.com/hashicorp/terraform-provider-aws/internal/conns"
1620
"github.com/hashicorp/terraform-provider-aws/internal/create"
1721
"github.com/hashicorp/terraform-provider-aws/internal/errs"
1822
tfodb "github.com/hashicorp/terraform-provider-aws/internal/service/odb"
1923
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
20-
"testing"
21-
22-
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
23-
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
2424
"github.com/hashicorp/terraform-provider-aws/names"
2525
)
2626

27-
type odbNetworkDataSourceTestCase struct {
27+
type odbNetworkDataSourceTest struct {
2828
}
2929

30-
var odbNetDSTest = odbNetworkDataSourceTestCase{}
30+
var odbNetworkDataSourceTestEntity = odbNetworkDataSourceTest{}
3131

32-
func TestAccODBOdbNetworkDataSource_basic(t *testing.T) {
32+
func TestAccODBNetworkDataSource_basic(t *testing.T) {
3333
ctx := acctest.Context(t)
3434
if testing.Short() {
3535
t.Skip("skipping long-running test in short mode")
@@ -41,14 +41,14 @@ func TestAccODBOdbNetworkDataSource_basic(t *testing.T) {
4141
resource.Test(t, resource.TestCase{
4242
PreCheck: func() {
4343
acctest.PreCheck(ctx, t)
44-
odbNetDSTest.testAccOdbNetworkDataSourcePreCheck(ctx, t)
44+
odbNetworkDataSourceTestEntity.testAccOdbNetworkDataSourcePreCheck(ctx, t)
4545
},
4646
ErrorCheck: acctest.ErrorCheck(t, names.ODBServiceID),
4747
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
48-
CheckDestroy: odbNetDSTest.testAccCheckOdbNetworkDataSourceDestroyed(ctx),
48+
CheckDestroy: odbNetworkDataSourceTestEntity.testAccCheckOdbNetworkDataSourceDestroyed(ctx),
4949
Steps: []resource.TestStep{
5050
{
51-
Config: odbNetDSTest.basicOdbNetworkDataSource(rName),
51+
Config: odbNetworkDataSourceTestEntity.basicOdbNetworkDataSource(rName),
5252
Check: resource.ComposeAggregateTestCheckFunc(
5353
resource.TestCheckResourceAttrPair(networkResource, "id", networkDataSource, "id"),
5454
),
@@ -57,15 +57,15 @@ func TestAccODBOdbNetworkDataSource_basic(t *testing.T) {
5757
})
5858
}
5959

60-
func (odbNetworkDataSourceTestCase) testAccCheckOdbNetworkDataSourceDestroyed(ctx context.Context) resource.TestCheckFunc {
60+
func (odbNetworkDataSourceTest) testAccCheckOdbNetworkDataSourceDestroyed(ctx context.Context) resource.TestCheckFunc {
6161
return func(s *terraform.State) error {
6262
conn := acctest.Provider.Meta().(*conns.AWSClient).ODBClient(ctx)
6363

6464
for _, rs := range s.RootModule().Resources {
6565
if rs.Type != "aws_odb_network" {
6666
continue
6767
}
68-
_, err := odbNetDSTest.findOdbNetwork(ctx, conn, rs.Primary.ID)
68+
_, err := odbNetworkDataSourceTestEntity.findOdbNetwork(ctx, conn, rs.Primary.ID)
6969
if tfresource.NotFound(err) {
7070
return nil
7171
}
@@ -80,7 +80,7 @@ func (odbNetworkDataSourceTestCase) testAccCheckOdbNetworkDataSourceDestroyed(ct
8080
}
8181
}
8282

83-
func (odbNetworkDataSourceTestCase) findOdbNetwork(ctx context.Context, conn *odb.Client, id string) (*odbtypes.OdbNetwork, error) {
83+
func (odbNetworkDataSourceTest) findOdbNetwork(ctx context.Context, conn *odb.Client, id string) (*odbtypes.OdbNetwork, error) {
8484
input := odb.GetOdbNetworkInput{
8585
OdbNetworkId: aws.String(id),
8686
}
@@ -104,19 +104,21 @@ func (odbNetworkDataSourceTestCase) findOdbNetwork(ctx context.Context, conn *od
104104
return out.OdbNetwork, nil
105105
}
106106

107-
func (odbNetworkDataSourceTestCase) basicOdbNetworkDataSource(rName string) string {
107+
func (odbNetworkDataSourceTest) basicOdbNetworkDataSource(rName string) string {
108108
networkRes := fmt.Sprintf(`
109109
110110
111+
112+
111113
resource "aws_odb_network" "test_resource" {
112-
display_name = %[1]q
114+
display_name = %[1]q
113115
availability_zone_id = "use1-az6"
114116
client_subnet_cidr = "10.2.0.0/24"
115117
backup_subnet_cidr = "10.2.1.0/24"
116-
s3_access = "DISABLED"
117-
zero_etl_access = "DISABLED"
118+
s3_access = "DISABLED"
119+
zero_etl_access = "DISABLED"
118120
tags = {
119-
"env"= "dev"
121+
"env" = "dev"
120122
}
121123
}
122124
@@ -125,10 +127,11 @@ data "aws_odb_network" "test" {
125127
id = aws_odb_network.test_resource.id
126128
}
127129
130+
128131
`, rName)
129132
return networkRes
130133
}
131-
func (odbNetworkDataSourceTestCase) testAccOdbNetworkDataSourcePreCheck(ctx context.Context, t *testing.T) {
134+
func (odbNetworkDataSourceTest) testAccOdbNetworkDataSourcePreCheck(ctx context.Context, t *testing.T) {
132135
conn := acctest.Provider.Meta().(*conns.AWSClient).ODBClient(ctx)
133136

134137
input := &odb.ListOdbNetworksInput{}

0 commit comments

Comments
 (0)