Skip to content

Commit 93716ca

Browse files
Naga Jahnavi KommareddySrividyaKamakshi
authored andcommitted
Added - Support for RMS - ZPR security attribute support for PE
1 parent 0affffb commit 93716ca

15 files changed

+390
-54
lines changed

examples/resourcemanager/create_private_endpoint.tf

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,13 @@ resource "oci_resourcemanager_private_endpoint" "rms_private_endpoint" {
8585
description = "rms_private_endpoint_description"
8686
vcn_id = oci_core_vcn.private_endpoint_integ_test_temp_vcn.id
8787
subnet_id = oci_core_subnet.private_endpoint_integ_test_temp_subnet.id
88+
security_attributes = {
89+
"oracle-zpr.maxegresscount.mode" = "enforce"
90+
"oracle-zpr.maxegresscount.value" = "42"
91+
}
92+
freeform_tags = {
93+
"freeformkey" = "freeformvalue"
94+
}
8895
}
8996

9097
// Resolves the private IP of the customer's private endpoint to a NAT IP. Used as the host address in the "remote-exec" resource
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
variable "tenancy_ocid" {}
2+
variable "compartment_ocid" {}
3+
variable "region" {}
4+
variable "auth" {}
5+
variable "config_file_profile" {}
6+
variable "user_ocid" {
7+
}
8+
variable "fingerprint" {
9+
}
10+
variable "private_key_path" {
11+
}
12+
13+
provider "oci" {
14+
tenancy_ocid = var.tenancy_ocid
15+
user_ocid = var.user_ocid
16+
fingerprint = var.fingerprint
17+
private_key_path = var.private_key_path
18+
region = var.region
19+
}
20+
21+
# Locals and data
22+
locals {
23+
vcn_cidr_block = "10.12.0.0/16"
24+
default_shape_name = "VM.Standard.E3.Flex"
25+
operating_system = "Oracle Linux"
26+
operating_system_version = "8"
27+
tcp_protocol = 6
28+
}
29+
30+
resource "oci_core_vcn" "test_vcn" {
31+
cidr_block = local.vcn_cidr_block
32+
compartment_id = var.compartment_ocid
33+
display_name = "test_vcn"
34+
}
35+
36+
resource "oci_core_subnet" "test_subnet" {
37+
compartment_id = var.compartment_ocid
38+
vcn_id = oci_core_vcn.test_vcn.id
39+
display_name = "test_subnet"
40+
prohibit_public_ip_on_vnic = true
41+
cidr_block = cidrsubnet(local.vcn_cidr_block, 8, 1)
42+
}
43+
44+
resource "oci_resourcemanager_private_endpoint" "my_private_endpoint" {
45+
compartment_id = var.compartment_ocid
46+
display_name = "my_private_endpoint"
47+
description = "Example"
48+
vcn_id = oci_core_vcn.test_vcn.id
49+
subnet_id = oci_core_subnet.test_subnet.id
50+
/*security_attributes = {
51+
"oracle-zpr.maxegresscount.mode" = "enforce"
52+
"oracle-zpr.maxegresscount.value" = "42"
53+
}*/
54+
}
55+
56+
data "oci_identity_availability_domains" "ads" { compartment_id = var.tenancy_ocid }
57+
58+
data "oci_core_images" "ol" {
59+
compartment_id = var.compartment_ocid
60+
operating_system = local.operating_system
61+
operating_system_version = local.operating_system_version
62+
shape = local.default_shape_name
63+
}
64+
65+
resource "tls_private_key" "ssh" { algorithm = "RSA" }
66+
67+
resource "oci_core_instance" "test_instance" {
68+
compartment_id = var.compartment_ocid
69+
display_name = "test_instance"
70+
availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name
71+
shape = local.default_shape_name
72+
create_vnic_details {
73+
subnet_id = oci_core_subnet.test_subnet.id
74+
assign_public_ip = false
75+
}
76+
extended_metadata = {
77+
ssh_authorized_keys = tls_private_key.ssh.public_key_openssh
78+
}
79+
source_details {
80+
source_id = data.oci_core_images.ol.images[0].id
81+
source_type = "image"
82+
}
83+
shape_config {
84+
memory_in_gbs = 4
85+
ocpus = 1
86+
}
87+
}
88+
89+
data "oci_resourcemanager_private_endpoint_reachable_ip" "instance_ip" {
90+
private_endpoint_id = oci_resourcemanager_private_endpoint.my_private_endpoint.id
91+
private_ip = oci_core_instance.test_instance.private_ip
92+
}
93+
94+
output "reachable_ip" {
95+
value = data.oci_resourcemanager_private_endpoint_reachable_ip.instance_ip.ip_address
96+
}

internal/integrationtest/resourcemanager_private_endpoint_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727

2828
var (
2929
ResourcemanagerPrivateEndpointRequiredOnlyResource = acctest.GenerateResourceFromRepresentationMap("oci_resourcemanager_private_endpoint", "test_rms_private_endpoint", acctest.Required, acctest.Create, ResourceManagerprivateEndpointRepresentation)
30-
30+
// dummy change
3131
ResourcemanagerPrivateEndpointResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_resourcemanager_private_endpoint", "test_rms_private_endpoint", acctest.Optional, acctest.Update, ResourceManagerprivateEndpointRepresentation)
3232

3333
ResourcemanagerResourcemanagerPrivateEndpointSingularDataSourceRepresentation = map[string]interface{}{
@@ -55,7 +55,8 @@ var (
5555
"dns_zones": acctest.Representation{RepType: acctest.Optional, Create: []string{`dnsZones`}, Update: []string{`dnsZones2`}},
5656
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
5757
"is_used_with_configuration_source_provider": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`},
58-
"nsg_id_list": acctest.Representation{RepType: acctest.Optional, Create: []string{`nsgIdList`}, Update: []string{`nsgIdList2`}},
58+
"nsg_id_list": acctest.Representation{RepType: acctest.Optional, Create: []string{`nsgIdList`}, Update: []string{`nsgIdList2`}},
59+
"security_attributes": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"oracle-zpr.maxegresscount.value": "42", "oracle-zpr.maxegresscount.mode": "enforce"}, Update: map[string]string{"oracle-zpr.maxegresscount.value": "updatedValue", "oracle-zpr.maxegresscount.mode": "enforce"}},
5960
}
6061

6162
ResourcemanagerPrivateEndpointResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) +
@@ -121,6 +122,7 @@ func TestResourcemanagerPrivateEndpointResource_basic(t *testing.T) {
121122
resource.TestCheckResourceAttrSet(resourceName, "id"),
122123
resource.TestCheckResourceAttr(resourceName, "is_used_with_configuration_source_provider", "false"),
123124
resource.TestCheckResourceAttr(resourceName, "nsg_id_list.#", "1"),
125+
resource.TestCheckResourceAttr(resourceName, "security_attributes.%", "1"),
124126
resource.TestCheckResourceAttrSet(resourceName, "subnet_id"),
125127
resource.TestCheckResourceAttrSet(resourceName, "vcn_id"),
126128

@@ -152,6 +154,7 @@ func TestResourcemanagerPrivateEndpointResource_basic(t *testing.T) {
152154
resource.TestCheckResourceAttrSet(resourceName, "id"),
153155
resource.TestCheckResourceAttr(resourceName, "is_used_with_configuration_source_provider", "false"),
154156
resource.TestCheckResourceAttr(resourceName, "nsg_id_list.#", "1"),
157+
resource.TestCheckResourceAttr(resourceName, "security_attributes.%", "1"),
155158
resource.TestCheckResourceAttrSet(resourceName, "subnet_id"),
156159
resource.TestCheckResourceAttrSet(resourceName, "vcn_id"),
157160

@@ -178,6 +181,7 @@ func TestResourcemanagerPrivateEndpointResource_basic(t *testing.T) {
178181
resource.TestCheckResourceAttrSet(resourceName, "id"),
179182
resource.TestCheckResourceAttr(resourceName, "is_used_with_configuration_source_provider", "true"),
180183
resource.TestCheckResourceAttr(resourceName, "nsg_id_list.#", "1"),
184+
resource.TestCheckResourceAttr(resourceName, "security_attributes.%", "1"),
181185
resource.TestCheckResourceAttrSet(resourceName, "subnet_id"),
182186
resource.TestCheckResourceAttrSet(resourceName, "vcn_id"),
183187

@@ -222,6 +226,7 @@ func TestResourcemanagerPrivateEndpointResource_basic(t *testing.T) {
222226
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
223227
resource.TestCheckResourceAttr(singularDatasourceName, "is_used_with_configuration_source_provider", "true"),
224228
resource.TestCheckResourceAttr(singularDatasourceName, "nsg_id_list.#", "1"),
229+
resource.TestCheckResourceAttr(singularDatasourceName, "security_attributes.%", "1"),
225230
resource.TestCheckResourceAttr(singularDatasourceName, "source_ips.#", "1"),
226231
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
227232
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),

internal/integrationtest/resourcemanager_stack_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ func TestResourcemanagerStackResource_basic(t *testing.T) {
7676
Providers: map[string]*schema.Provider{
7777
"oci": provider,
7878
},
79+
// verify singular datasource
7980
Steps: []resource.TestStep{
8081
// verify datasource
8182
{

internal/service/resourcemanager/resourcemanager_private_endpoint_data_source.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ func (s *ResourcemanagerPrivateEndpointDataSourceCrud) SetData() error {
9292

9393
s.D.Set("nsg_id_list", s.Res.NsgIdList)
9494

95+
s.D.Set("security_attributes", s.Res.SecurityAttributes)
96+
9597
s.D.Set("source_ips", s.Res.SourceIps)
9698

9799
s.D.Set("state", s.Res.LifecycleState)
@@ -100,6 +102,10 @@ func (s *ResourcemanagerPrivateEndpointDataSourceCrud) SetData() error {
100102
s.D.Set("subnet_id", *s.Res.SubnetId)
101103
}
102104

105+
if s.Res.SystemTags != nil {
106+
s.D.Set("system_tags", tfresource.SystemTagsToMap(s.Res.SystemTags))
107+
}
108+
103109
if s.Res.TimeCreated != nil {
104110
s.D.Set("time_created", s.Res.TimeCreated.String())
105111
}

0 commit comments

Comments
 (0)