Skip to content

Commit c0df323

Browse files
hectorfloresfloressahilg11
authored andcommitted
Added - Capability to Add a SCAN Data Source as a Private DataSource to PAC, Added - Support of Network Security Groups, Added - Support Public ACL to whitelist OCI Services, Added - OAC access to Github
1 parent e8dfc06 commit c0df323

13 files changed

+384
-48
lines changed

examples/analytics/main.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ variable "idcs_access_token" {
2727
variable "kms_key_id" {
2828
}
2929

30+
variable "email_notification" {
31+
32+
}
33+
3034
provider "oci" {
3135
region = var.region
3236
tenancy_ocid = var.tenancy_ocid
@@ -76,6 +80,7 @@ resource "oci_analytics_analytics_instance" "test_oce_instance_public" {
7680
# Create a private access channel for the instance
7781
resource "oci_analytics_analytics_instance_private_access_channel" "test_private_access_channel" {
7882
#Required
83+
depends_on = [oci_analytics_analytics_instance.test_oce_instance_public]
7984
analytics_instance_id = oci_analytics_analytics_instance.test_oce_instance_public.id
8085
display_name = "ExamplePAC"
8186
subnet_id = oci_core_subnet.test_subnet.id
@@ -89,6 +94,7 @@ resource "oci_analytics_analytics_instance_private_access_channel" "test_private
8994
# Create a vanity url for the instance
9095
resource "oci_analytics_analytics_instance_vanity_url" "test_analytics_instances_vanity_url" {
9196
#Required
97+
depends_on = [oci_analytics_analytics_instance_private_access_channel.test_private_access_channel]
9298
analytics_instance_id = oci_analytics_analytics_instance.test_oce_instance_public.id
9399
ca_certificate = file("/path/to/the/file/RootCA.crt")
94100
hosts = ["analyticsdev.mycompany.com"]

internal/integrationtest/analytics_analytics_instance_private_access_channel_test.go

Lines changed: 57 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,35 @@ import (
2424
)
2525

2626
var (
27+
AnalyticsAnalyticsInstancePrivateAccessChannelRequiredOnlyResource = AnalyticsAnalyticsInstancePrivateAccessChannelResourceDependencies + acctest.GenerateResourceFromRepresentationMap("oci_analytics_analytics_instance_private_access_channel", "test_analytics_instance_private_access_channel", acctest.Required, acctest.Create, analyticsInstancePrivateAccessChannelRepresentation)
28+
2729
AnalyticsAnalyticsInstancePrivateAccessChannelResourceConfig = AnalyticsAnalyticsInstancePrivateAccessChannelResourceDependencies +
2830
acctest.GenerateResourceFromRepresentationMap("oci_analytics_analytics_instance_private_access_channel", "test_analytics_instance_private_access_channel", acctest.Optional, acctest.Update, analyticsInstancePrivateAccessChannelRepresentation)
2931

30-
AnalyticsAnalyticsInstancePrivateAccessChannelRequiredOnlyResource = acctest.GenerateResourceFromRepresentationMap("oci_analytics_analytics_instance_private_access_channel", "test_analytics_instance_private_access_channel", acctest.Required, acctest.Create, analyticsInstancePrivateAccessChannelRepresentation)
31-
3232
analyticsInstancePrivateAccessChannelRepresentation = map[string]interface{}{
33-
"analytics_instance_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_analytics_analytics_instance.test_analytics_instance.id}`},
34-
"display_name": acctest.Representation{RepType: acctest.Required, Create: `example_private_access_channel`, Update: `example_private_access_channel2`},
35-
"private_source_dns_zones": acctest.RepresentationGroup{RepType: acctest.Required, Group: analyticsInstancePrivateAccessChannelPrivateSourceDnsZonesRepresentation},
36-
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
37-
"vcn_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_vcn.test_vcn.id}`},
33+
"analytics_instance_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_analytics_analytics_instance.test_analytics_instance.id}`},
34+
"display_name": acctest.Representation{RepType: acctest.Required, Create: `example_private_access_channel`, Update: `example_private_access_channel2`},
35+
"private_source_dns_zones": acctest.RepresentationGroup{RepType: acctest.Required, Group: analyticsInstancePrivateAccessChannelPrivateSourceDnsZonesRepresentation},
36+
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
37+
"vcn_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_vcn.test_vcn.id}`, Update: `${oci_core_vcn.test_vcn.id}`},
38+
"network_security_group_ids": acctest.Representation{RepType: acctest.Optional, Create: []string{`${oci_core_network_security_group.test_network_security_group.id}`}, Update: []string{}},
39+
"private_source_scan_hosts": acctest.RepresentationGroup{RepType: acctest.Optional, Group: analyticsInstancePrivateAccessChannelPrivateSourceScanHostsRepresentation},
3840
}
3941
analyticsInstancePrivateAccessChannelPrivateSourceDnsZonesRepresentation = map[string]interface{}{
4042
"dns_zone": acctest.Representation{RepType: acctest.Required, Create: `terraformtest.oraclevcn.com`, Update: `terraformtest2.oraclevcn.com`},
4143
"description": acctest.Representation{RepType: acctest.Optional, Create: `Tenant VCN DNS Zone`, Update: `Tenant VCN DNS Zone 2`},
4244
}
45+
analyticsInstancePrivateAccessChannelPrivateSourceScanHostsRepresentation = map[string]interface{}{
46+
"scan_hostname": acctest.Representation{RepType: acctest.Required, Create: `scanHostname`, Update: `scanHostname2`},
47+
"scan_port": acctest.Representation{RepType: acctest.Required, Create: `10`, Update: `11`},
48+
"description": acctest.Representation{RepType: acctest.Optional, Create: `Example OCI SCAN label`, Update: `Example OCI SCAN label 2`},
49+
}
50+
51+
analyticsinstanceNameForPac = utils.RandomString(15, utils.CharsetWithoutDigits)
4352

44-
AnalyticsAnalyticsInstancePrivateAccessChannelResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_analytics_analytics_instance", "test_analytics_instance", acctest.Required, acctest.Create, analyticsInstanceRepresentation) +
53+
//Please note that for create oci_analytics_analytics_instance we have to change the instance name otherwise tests for analytics will fail with error: Instance name it is still in use even if instance got deleted successful
54+
AnalyticsAnalyticsInstancePrivateAccessChannelResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_analytics_analytics_instance", "test_analytics_instance", acctest.Required, acctest.Create, acctest.GetUpdatedRepresentationCopy("name", acctest.Representation{RepType: acctest.Required, Create: analyticsinstanceNameForPac}, analyticsInstanceRepresentation)) +
55+
acctest.GenerateResourceFromRepresentationMap("oci_core_network_security_group", "test_network_security_group", acctest.Required, acctest.Create, CoreNetworkSecurityGroupRepresentation) +
4556
acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) +
4657
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreVcnRepresentation)
4758
)
@@ -62,9 +73,8 @@ func TestAnalyticsAnalyticsInstancePrivateAccessChannelResource_basic(t *testing
6273
resourceName := "oci_analytics_analytics_instance_private_access_channel.test_analytics_instance_private_access_channel"
6374

6475
var resId, resId2 string
65-
// Save TF content to Create resource with only required properties. This has to be exactly the same as the config part in the create step in the test.
76+
// Save TF content to Create resource with only required properties. This has to be exactly the same as the config part in the Create step in the test.
6677
acctest.SaveConfigContent(config+compartmentIdVariableStr+AnalyticsAnalyticsInstancePrivateAccessChannelResourceDependencies+
67-
6878
acctest.GenerateResourceFromRepresentationMap("oci_analytics_analytics_instance_private_access_channel", "test_analytics_instance_private_access_channel", acctest.Required, acctest.Create, analyticsInstancePrivateAccessChannelRepresentation), "analytics", "analyticsInstancePrivateAccessChannel", t)
6979

7080
acctest.ResourceTest(t, testAccCheckAnalyticsAnalyticsInstancePrivateAccessChannelDestroy, []resource.TestStep{
@@ -82,7 +92,38 @@ func TestAnalyticsAnalyticsInstancePrivateAccessChannelResource_basic(t *testing
8292

8393
func(s *terraform.State) (err error) {
8494
resId, err = acctest.FromInstanceState(s, resourceName, "id")
85-
if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "false")); isEnableExportCompartment {
95+
return err
96+
},
97+
),
98+
},
99+
100+
// delete before next Create
101+
{
102+
Config: config + compartmentIdVariableStr + idcsAccessTokenVariableStr + AnalyticsAnalyticsInstancePrivateAccessChannelResourceDependencies,
103+
},
104+
// verify Create with optionals
105+
{
106+
Config: config + compartmentIdVariableStr + idcsAccessTokenVariableStr + AnalyticsAnalyticsInstancePrivateAccessChannelResourceDependencies +
107+
acctest.GenerateResourceFromRepresentationMap("oci_analytics_analytics_instance_private_access_channel", "test_analytics_instance_private_access_channel", acctest.Optional, acctest.Create, analyticsInstancePrivateAccessChannelRepresentation),
108+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
109+
resource.TestCheckResourceAttrSet(resourceName, "analytics_instance_id"),
110+
resource.TestCheckResourceAttr(resourceName, "display_name", "example_private_access_channel"),
111+
resource.TestCheckResourceAttrSet(resourceName, "ip_address"),
112+
resource.TestCheckResourceAttrSet(resourceName, "key"),
113+
resource.TestCheckResourceAttr(resourceName, "network_security_group_ids.#", "1"),
114+
resource.TestCheckResourceAttr(resourceName, "private_source_dns_zones.#", "1"),
115+
resource.TestCheckResourceAttr(resourceName, "private_source_dns_zones.0.description", "Tenant VCN DNS Zone"),
116+
resource.TestCheckResourceAttr(resourceName, "private_source_dns_zones.0.dns_zone", "terraformtest.oraclevcn.com"),
117+
resource.TestCheckResourceAttr(resourceName, "private_source_scan_hosts.#", "1"),
118+
resource.TestCheckResourceAttr(resourceName, "private_source_scan_hosts.0.description", "Example OCI SCAN label"),
119+
resource.TestCheckResourceAttr(resourceName, "private_source_scan_hosts.0.scan_hostname", "scanHostname"),
120+
resource.TestCheckResourceAttr(resourceName, "private_source_scan_hosts.0.scan_port", "10"),
121+
resource.TestCheckResourceAttrSet(resourceName, "subnet_id"),
122+
resource.TestCheckResourceAttrSet(resourceName, "vcn_id"),
123+
124+
func(s *terraform.State) (err error) {
125+
resId, err = acctest.FromInstanceState(s, resourceName, "id")
126+
if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment {
86127
if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil {
87128
return errExport
88129
}
@@ -102,9 +143,14 @@ func TestAnalyticsAnalyticsInstancePrivateAccessChannelResource_basic(t *testing
102143
resource.TestCheckResourceAttr(resourceName, "egress_source_ip_addresses.#", "2"),
103144
resource.TestCheckResourceAttrSet(resourceName, "ip_address"),
104145
resource.TestCheckResourceAttrSet(resourceName, "key"),
146+
resource.TestCheckResourceAttr(resourceName, "network_security_group_ids.#", "0"),
105147
resource.TestCheckResourceAttr(resourceName, "private_source_dns_zones.#", "1"),
106148
resource.TestCheckResourceAttr(resourceName, "private_source_dns_zones.0.description", "Tenant VCN DNS Zone 2"),
107149
resource.TestCheckResourceAttr(resourceName, "private_source_dns_zones.0.dns_zone", "terraformtest2.oraclevcn.com"),
150+
resource.TestCheckResourceAttr(resourceName, "private_source_scan_hosts.#", "1"),
151+
resource.TestCheckResourceAttr(resourceName, "private_source_scan_hosts.0.description", "Example OCI SCAN label 2"),
152+
resource.TestCheckResourceAttr(resourceName, "private_source_scan_hosts.0.scan_hostname", "scanHostname2"),
153+
resource.TestCheckResourceAttr(resourceName, "private_source_scan_hosts.0.scan_port", "11"),
108154
resource.TestCheckResourceAttrSet(resourceName, "subnet_id"),
109155
resource.TestCheckResourceAttrSet(resourceName, "vcn_id"),
110156

internal/integrationtest/analytics_analytics_instance_test.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,12 @@ var (
7575
"capacity_value": acctest.Representation{RepType: acctest.Required, Create: `2`},
7676
}
7777
analyticsInstanceNetworkEndpointDetailsRepresentation = map[string]interface{}{
78-
"network_endpoint_type": acctest.Representation{RepType: acctest.Required, Create: `PRIVATE`},
79-
"subnet_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_core_subnet.test_subnet.id}`},
80-
"vcn_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_core_vcn.test_vcn.id}`},
78+
"network_endpoint_type": acctest.Representation{RepType: acctest.Required, Create: `PRIVATE`},
79+
"network_security_group_ids": acctest.Representation{RepType: acctest.Optional, Create: []string{`${oci_core_network_security_group.test_network_security_group.id}`}},
80+
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
81+
"vcn_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_vcn.test_vcn.id}`},
8182
}
8283

83-
AnalyticsAnalyticsInstanceResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreVcnRepresentation) +
84-
KeyResourceDependencyConfig
8584
analyticsInstanceCapacityUpdateRepresentation = map[string]interface{}{
8685
"capacity_type": acctest.Representation{RepType: acctest.Required, Create: `OLPU_COUNT`},
8786
"capacity_value": acctest.Representation{RepType: acctest.Required, Create: `4`},
@@ -92,6 +91,11 @@ var (
9291
"display_name": acctest.Representation{RepType: acctest.Required, Create: vaultName},
9392
"vault_type": acctest.Representation{RepType: acctest.Required, Create: `DEFAULT`},
9493
}
94+
95+
AnalyticsAnalyticsInstanceResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_core_network_security_group", "test_network_security_group", acctest.Required, acctest.Create, CoreNetworkSecurityGroupRepresentation) +
96+
acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) +
97+
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreVcnRepresentation) +
98+
KeyResourceDependencyConfig
9599
)
96100

97101
// issue-routing-tag: analytics/default
@@ -118,7 +122,7 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
118122
singularDatasourceName := "data.oci_analytics_analytics_instance.test_analytics_instance"
119123

120124
var resId, resId2 string
121-
// 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.
125+
// 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.
122126
acctest.SaveConfigContent(config+compartmentIdVariableStr+AnalyticsAnalyticsInstanceResourceDependencies+
123127
acctest.GenerateResourceFromRepresentationMap("oci_analytics_analytics_instance", "test_analytics_instance", acctest.Optional, acctest.Create, analyticsInstanceRepresentation), "analytics", "analyticsInstance", t)
124128

@@ -186,7 +190,8 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
186190
},
187191
),
188192
},
189-
// verify update to the compartment (the compartment will be switched back in the next step)
193+
194+
// verify Update to the compartment (the compartment will be switched back in the next step)
190195
{
191196
Config: config + compartmentIdVariableStr + compartmentIdUVariableStr + idcsAccessTokenVariableStr + AnalyticsAnalyticsInstanceResourceDependencies +
192197
acctest.GenerateResourceFromRepresentationMap("oci_analytics_analytics_instance", "test_analytics_instance", acctest.Optional, acctest.Create,
@@ -198,7 +203,7 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
198203
resource.TestCheckResourceAttr(resourceName, "capacity.#", "1"),
199204
resource.TestCheckResourceAttr(resourceName, "capacity.0.capacity_type", "OLPU_COUNT"),
200205
resource.TestCheckResourceAttr(resourceName, "capacity.0.capacity_value", "2"),
201-
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
206+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentIdU),
202207
resource.TestCheckResourceAttr(resourceName, "defined_tags.%", "2"),
203208
resource.TestCheckResourceAttr(resourceName, "description", "description"),
204209
resource.TestCheckResourceAttr(resourceName, "email_notification", "emailNotification"),

internal/service/analytics/analytics_analytics_instance_data_source.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ func (s *AnalyticsAnalyticsInstanceDataSourceCrud) SetData() error {
104104

105105
if s.Res.NetworkEndpointDetails != nil {
106106
networkEndpointDetailsArray := []interface{}{}
107-
if networkEndpointDetailsMap := NetworkEndpointDetailsToMap(&s.Res.NetworkEndpointDetails); networkEndpointDetailsMap != nil {
107+
if networkEndpointDetailsMap := NetworkEndpointDetailsToMap(&s.Res.NetworkEndpointDetails, true); networkEndpointDetailsMap != nil {
108108
networkEndpointDetailsArray = append(networkEndpointDetailsArray, networkEndpointDetailsMap)
109109
}
110110
s.D.Set("network_endpoint_details", networkEndpointDetailsArray)

internal/service/analytics/analytics_analytics_instance_private_access_channel_data_source.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,20 @@ func (s *AnalyticsAnalyticsInstancePrivateAccessChannelDataSourceCrud) SetData()
8989
s.D.Set("key", *s.Res.Key)
9090
}
9191

92+
s.D.Set("network_security_group_ids", s.Res.NetworkSecurityGroupIds)
93+
9294
privateSourceDnsZones := []interface{}{}
9395
for _, item := range s.Res.PrivateSourceDnsZones {
9496
privateSourceDnsZones = append(privateSourceDnsZones, PrivateSourceDnsZoneToMap(item))
9597
}
9698
s.D.Set("private_source_dns_zones", privateSourceDnsZones)
9799

100+
privateSourceScanHosts := []interface{}{}
101+
for _, item := range s.Res.PrivateSourceScanHosts {
102+
privateSourceScanHosts = append(privateSourceScanHosts, PrivateSourceScanHostToMap(item))
103+
}
104+
s.D.Set("private_source_scan_hosts", privateSourceScanHosts)
105+
98106
if s.Res.SubnetId != nil {
99107
s.D.Set("subnet_id", *s.Res.SubnetId)
100108
}

0 commit comments

Comments
 (0)