Skip to content

Commit 52bce5c

Browse files
Terraform Team AutomationMaxrovr
authored andcommitted
Added - 9/24- Support for ZPR v1
1 parent 8e6011d commit 52bce5c

15 files changed

+155
-36
lines changed

examples/networking/vcn/vcn.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ provider "oci" {
2626
fingerprint = var.fingerprint
2727
private_key_path = var.private_key_path
2828
region = var.region
29+
auth = "SecurityToken"
30+
config_file_profile = "terraform-federation-test"
2931
ignore_defined_tags = ["testexamples-tag-namespace.tf-example-tag"]
3032
}
3133

@@ -34,6 +36,7 @@ resource "oci_core_vcn" "vcn" {
3436
dns_label = "vcn"
3537
compartment_id = var.compartment_ocid
3638
display_name = "vcn"
39+
security_attributes = {"sample-namespace.value": "examplevalue", "sample-namespace.mode": "examplemode"}
3740
}
3841

3942
output "vcn_id" {

internal/integrationtest/core_vcn_test.go

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,14 @@ var (
4545
}
4646

4747
CoreVcnRepresentation = map[string]interface{}{
48-
"cidr_block": acctest.Representation{RepType: acctest.Required, Create: `10.0.0.0/16`},
49-
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
50-
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`},
51-
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `displayName`, Update: `displayName2`},
52-
"dns_label": acctest.Representation{RepType: acctest.Optional, Create: `dnslabel`},
53-
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
54-
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreDefinedTagsChangesRep},
48+
"cidr_block": acctest.Representation{RepType: acctest.Required, Create: `10.0.0.0/16`},
49+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
50+
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`},
51+
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `displayName`, Update: `displayName2`},
52+
"dns_label": acctest.Representation{RepType: acctest.Optional, Create: `dnslabel`},
53+
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
54+
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreDefinedTagsChangesRep},
55+
"security_attributes": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.value": "somevalue", "vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.mode": "enforce"}, Update: map[string]string{"vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.value": "updatedValue", "vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.mode": "enforce"}},
5556
}
5657

5758
CoreVcnRequiredOnlyResourceDependencies = ``
@@ -106,15 +107,18 @@ func TestCoreVcnResource_basic(t *testing.T) {
106107
Config: config + compartmentIdVariableStr + VcnResourceDependencies +
107108
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Optional, acctest.Create,
108109
acctest.RepresentationCopyWithNewProperties(acctest.RepresentationCopyWithRemovedProperties(CoreVcnRepresentation, []string{"cidr_blocks"}), map[string]interface{}{
109-
"is_ipv6enabled": acctest.Representation{RepType: acctest.Optional, Create: `true`},
110-
})),
110+
"is_ipv6enabled": acctest.Representation{RepType: acctest.Optional, Create: `true`},
111+
"is_oracle_gua_allocation_enabled": acctest.Representation{RepType: acctest.Optional, Create: `true`}})),
111112
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
112113
resource.TestCheckResourceAttr(resourceName, "cidr_block", "10.0.0.0/16"),
113114
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
114115
resource.TestCheckResourceAttr(resourceName, "display_name", "displayName"),
115116
resource.TestCheckResourceAttr(resourceName, "dns_label", "dnslabel"),
116117
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
117118
resource.TestCheckResourceAttr(resourceName, "ipv6cidr_blocks.#", "1"),
119+
resource.TestCheckResourceAttr(resourceName, "security_attributes.vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.value", "somevalue"),
120+
resource.TestCheckResourceAttr(resourceName, "security_attributes.vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.mode", "enforce"),
121+
resource.TestCheckResourceAttr(resourceName, "is_oracle_gua_allocation_enabled", "true"),
118122
resource.TestCheckResourceAttrSet(resourceName, "id"),
119123
resource.TestCheckResourceAttrSet(resourceName, "state"),
120124

@@ -132,7 +136,7 @@ func TestCoreVcnResource_basic(t *testing.T) {
132136
{
133137
Config: config + compartmentIdVariableStr + VcnResourceDependencies +
134138
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(CoreVcnRepresentation, map[string]interface{}{
135-
"ipv6private_cidr_blocks": acctest.Representation{RepType: acctest.Required, Create: []string{`2000:1000::/52`}},
139+
"ipv6private_cidr_blocks": acctest.Representation{RepType: acctest.Required, Update: []string{`2000:1000::/52`}},
136140
})),
137141
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
138142
resource.TestCheckResourceAttr(resourceName, "cidr_block", "10.0.0.0/16"),
@@ -141,6 +145,10 @@ func TestCoreVcnResource_basic(t *testing.T) {
141145
resource.TestCheckResourceAttr(resourceName, "dns_label", "dnslabel"),
142146
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
143147
resource.TestCheckResourceAttr(resourceName, "ipv6cidr_blocks.#", "1"),
148+
resource.TestCheckResourceAttr(resourceName, "security_attributes.vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.value", "updatedValue"),
149+
resource.TestCheckResourceAttr(resourceName, "security_attributes.vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.mode", "enforce"),
150+
resource.TestCheckResourceAttr(resourceName, "is_oracle_gua_allocation_enabled", "true"),
151+
resource.TestCheckResourceAttr(resourceName, "ipv6private_cidr_blocks.#", "1"),
144152
resource.TestCheckResourceAttrSet(resourceName, "id"),
145153
resource.TestCheckResourceAttrSet(resourceName, "state"),
146154

@@ -170,6 +178,8 @@ func TestCoreVcnResource_basic(t *testing.T) {
170178
resource.TestCheckResourceAttr(resourceName, "dns_label", "dnslabel"),
171179
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
172180
resource.TestCheckResourceAttr(resourceName, "ipv6cidr_blocks.#", "1"),
181+
resource.TestCheckResourceAttr(resourceName, "is_oracle_gua_allocation_enabled", "true"),
182+
resource.TestCheckResourceAttr(resourceName, "security_attributes.%", "2"),
173183
resource.TestCheckResourceAttrSet(resourceName, "id"),
174184
resource.TestCheckResourceAttrSet(resourceName, "state"),
175185

@@ -186,16 +196,18 @@ func TestCoreVcnResource_basic(t *testing.T) {
186196
// verify updates to updatable parameters
187197
{
188198
Config: config + compartmentIdVariableStr + VcnResourceDependencies +
189-
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(CoreVcnRepresentation, map[string]interface{}{
190-
"is_ipv6enabled": acctest.Representation{RepType: acctest.Optional, Update: `true`},
191-
})),
199+
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Optional, acctest.Update, CoreVcnRepresentation),
192200
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
193201
resource.TestCheckResourceAttr(resourceName, "cidr_block", "10.0.0.0/16"),
194202
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
195203
resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"),
196204
resource.TestCheckResourceAttr(resourceName, "dns_label", "dnslabel"),
197205
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
198206
resource.TestCheckResourceAttr(resourceName, "ipv6cidr_blocks.#", "1"),
207+
resource.TestCheckResourceAttr(resourceName, "security_attributes.vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.value", "updatedValue"),
208+
resource.TestCheckResourceAttr(resourceName, "security_attributes.vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.mode", "enforce"),
209+
resource.TestCheckResourceAttr(resourceName, "is_oracle_gua_allocation_enabled", "true"),
210+
resource.TestCheckResourceAttr(resourceName, "is_ipv6enabled", "true"),
199211
resource.TestCheckResourceAttrSet(resourceName, "id"),
200212
resource.TestCheckResourceAttrSet(resourceName, "state"),
201213

@@ -213,9 +225,7 @@ func TestCoreVcnResource_basic(t *testing.T) {
213225
Config: config +
214226
acctest.GenerateDataSourceFromRepresentationMap("oci_core_vcns", "test_vcns", acctest.Optional, acctest.Update, CoreCoreVcnDataSourceRepresentation) +
215227
compartmentIdVariableStr + VcnResourceDependencies +
216-
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(CoreVcnRepresentation, map[string]interface{}{
217-
"is_ipv6enabled": acctest.Representation{RepType: acctest.Optional, Update: `true`},
218-
})),
228+
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Optional, acctest.Update, CoreVcnRepresentation),
219229
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
220230
resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId),
221231
resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName2"),
@@ -231,6 +241,7 @@ func TestCoreVcnResource_basic(t *testing.T) {
231241
resource.TestCheckResourceAttr(datasourceName, "virtual_networks.0.dns_label", "dnslabel"),
232242
resource.TestCheckResourceAttr(datasourceName, "virtual_networks.0.freeform_tags.%", "1"),
233243
resource.TestCheckResourceAttr(datasourceName, "virtual_networks.0.ipv6cidr_blocks.#", "1"),
244+
resource.TestCheckResourceAttr(datasourceName, "virtual_networks.0.security_attributes.%", "2"),
234245
resource.TestCheckResourceAttrSet(datasourceName, "virtual_networks.0.id"),
235246
resource.TestCheckResourceAttrSet(datasourceName, "virtual_networks.0.state"),
236247
resource.TestCheckResourceAttrSet(datasourceName, "virtual_networks.0.time_created"),
@@ -242,9 +253,7 @@ func TestCoreVcnResource_basic(t *testing.T) {
242253
Config: config +
243254
acctest.GenerateDataSourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreCoreVcnSingularDataSourceRepresentation) +
244255
compartmentIdVariableStr + VcnResourceDependencies +
245-
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(CoreVcnRepresentation, map[string]interface{}{
246-
"is_ipv6enabled": acctest.Representation{RepType: acctest.Optional, Create: `true`},
247-
})),
256+
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Optional, acctest.Update, CoreVcnRepresentation),
248257
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
249258
resource.TestCheckResourceAttrSet(singularDatasourceName, "vcn_id"),
250259

@@ -257,6 +266,8 @@ func TestCoreVcnResource_basic(t *testing.T) {
257266
resource.TestCheckResourceAttr(singularDatasourceName, "dns_label", "dnslabel"),
258267
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
259268
resource.TestCheckResourceAttr(singularDatasourceName, "ipv6cidr_blocks.#", "1"),
269+
resource.TestCheckResourceAttr(resourceName, "security_attributes.vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.value", "updatedValue"),
270+
resource.TestCheckResourceAttr(resourceName, "security_attributes.vcncp-canary-test-security-attribute-namespace-56.vcncp-canary-test-security-attribute-57.mode", "enforce"),
260271
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
261272
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
262273
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),
@@ -270,6 +281,7 @@ func TestCoreVcnResource_basic(t *testing.T) {
270281
ImportStateVerify: true,
271282
ImportStateVerifyIgnore: []string{
272283
"is_ipv6enabled",
284+
"is_oracle_gua_allocation_enabled",
273285
},
274286
ResourceName: resourceName,
275287
},

internal/integrationtest/core_vnic_attachment_resource_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ func (s *ResourceCoreVnicAttachmentTestSuite) TestAccResourceCoreVnicAttachment_
130130
defined_tags = "${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}"
131131
freeform_tags = { "Department" = "Finance" }
132132
nsg_ids = ["${oci_core_network_security_group.test_network_security_group1.id}", "${oci_core_network_security_group.test_network_security_group2.id}"]
133+
security_attributes = {"security-attribute-test-1.security-attribute.value" = "somevalue", "security-attribute-test-1.security-attribute.mode" = "enforce"}
133134
}
134135
}
135136
data "oci_core_vnic" "v" {
@@ -153,6 +154,7 @@ func (s *ResourceCoreVnicAttachmentTestSuite) TestAccResourceCoreVnicAttachment_
153154
resource.TestCheckResourceAttr(s.ResourceName, "create_vnic_details.0.display_name", "-tf-vnic-2"),
154155
resource.TestCheckResourceAttr(s.ResourceName, "create_vnic_details.0.nsg_ids.#", "2"),
155156
resource.TestCheckResourceAttrSet(s.VnicResourceName, "private_ip_address"),
157+
resource.TestCheckResourceAttr(s.VnicResourceName, "security_attributes.%", "2"),
156158
// @SDK 1/2018: Since we don't assign a public IP to this vnic, we will get a response from server
157159
// without a public_ip_address. Old SDK would have set it to empty, but new SDK will set it to nil.
158160
// Commenting out until we have a better way of handling this.

internal/service/core/core_vcn_data_source.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ func (s *CoreVcnDataSourceCrud) SetData() error {
110110

111111
s.D.Set("ipv6private_cidr_blocks", s.Res.Ipv6PrivateCidrBlocks)
112112

113+
if s.Res.SecurityAttributes != nil {
114+
s.D.Set("security_attributes", tfresource.SecurityAttributesToMap(s.Res.SecurityAttributes))
115+
}
116+
113117
s.D.Set("state", s.Res.LifecycleState)
114118

115119
if s.Res.TimeCreated != nil {

internal/service/core/core_vcn_resource.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,12 @@ func CoreVcnResource() *schema.Resource {
117117
Computed: true,
118118
// ForceNew: true,
119119
},
120+
"security_attributes": {
121+
Type: schema.TypeMap,
122+
Optional: true,
123+
Computed: true,
124+
Elem: schema.TypeString,
125+
},
120126

121127
// Computed
122128
"byoipv6cidr_blocks": {
@@ -317,6 +323,11 @@ func (s *CoreVcnResourceCrud) Create() error {
317323
request.IsOracleGuaAllocationEnabled = &tmp
318324
}
319325

326+
if securityAttributes, ok := s.D.GetOkExists("security_attributes"); ok {
327+
convertedAttributes := tfresource.MapToSecurityAttributes(securityAttributes.(map[string]interface{}))
328+
request.SecurityAttributes = convertedAttributes
329+
}
330+
320331
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "core")
321332

322333
response, err := s.Client.CreateVcn(context.Background(), request)
@@ -439,6 +450,11 @@ func (s *CoreVcnResourceCrud) Update() error {
439450
request.FreeformTags = tfresource.ObjectMapToStringMap(freeformTags.(map[string]interface{}))
440451
}
441452

453+
if securityAttributes, ok := s.D.GetOkExists("security_attributes"); ok {
454+
convertedAttributes := tfresource.MapToSecurityAttributes(securityAttributes.(map[string]interface{}))
455+
request.SecurityAttributes = convertedAttributes
456+
}
457+
442458
tmp := s.D.Id()
443459
request.VcnId = &tmp
444460

@@ -579,6 +595,8 @@ func (s *CoreVcnResourceCrud) SetData() error {
579595

580596
s.D.Set("ipv6private_cidr_blocks", s.Res.Ipv6PrivateCidrBlocks)
581597

598+
s.D.Set("security_attributes", tfresource.SecurityAttributesToMap(s.Res.SecurityAttributes))
599+
582600
if s.Res.Ipv6CidrBlocks != nil && len(s.Res.Ipv6CidrBlocks) > 0 {
583601
s.D.Set("is_ipv6enabled", true)
584602
} else {

internal/service/core/core_vcns_data_source.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,10 @@ func (s *CoreVcnsDataSourceCrud) SetData() error {
154154

155155
vcn["ipv6private_cidr_blocks"] = r.Ipv6PrivateCidrBlocks
156156

157+
if r.SecurityAttributes != nil {
158+
vcn["security_attributes"] = tfresource.SecurityAttributesToMap(r.SecurityAttributes)
159+
}
160+
157161
vcn["state"] = r.LifecycleState
158162

159163
if r.TimeCreated != nil {

internal/service/core/core_vnic_attachment_resource.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -542,8 +542,9 @@ func (s *CoreVnicAttachmentResourceCrud) mapToCreateVnicDetails(fieldKeyFormat s
542542
result.PrivateIp = &tmp
543543
}
544544

545-
if securityAttributes, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "security_attributes")); ok {
546-
result.SecurityAttributes = securityAttributes.(map[string]map[string]interface{})
545+
if securityAttributes, ok := s.D.GetOkExists("security_attributes"); ok {
546+
convertedAttributes := tfresource.MapToSecurityAttributes(securityAttributes.(map[string]interface{}))
547+
result.SecurityAttributes = convertedAttributes
547548
}
548549

549550
if skipSourceDestCheck, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "skip_source_dest_check")); ok {
@@ -607,6 +608,11 @@ func (s *CoreVnicAttachmentResourceCrud) mapToUpdateVnicDetails(fieldKeyFormat s
607608
result.SkipSourceDestCheck = &tmp
608609
}
609610

611+
if securityAttributes, ok := s.D.GetOkExists("security_attributes"); ok {
612+
convertedAttributes := tfresource.MapToSecurityAttributes(securityAttributes.(map[string]interface{}))
613+
result.SecurityAttributes = convertedAttributes
614+
}
615+
610616
return result, nil
611617
}
612618

@@ -667,7 +673,9 @@ func VnicDetailsToMap(obj *oci_core.Vnic, createVnicDetails map[string]interface
667673
result["private_ip"] = string(*obj.PrivateIp)
668674
}
669675

670-
result["security_attributes"] = obj.SecurityAttributes
676+
if obj.SecurityAttributes != nil {
677+
result["security_attributes"] = tfresource.SecurityAttributesToMap(obj.SecurityAttributes)
678+
}
671679

672680
if obj.SkipSourceDestCheck != nil {
673681
result["skip_source_dest_check"] = bool(*obj.SkipSourceDestCheck)

internal/service/core/core_vnic_data_source.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ func CoreVnicDataSource() *schema.Resource {
7878
Type: schema.TypeString,
7979
Computed: true,
8080
},
81+
"security_attributes": {
82+
Type: schema.TypeMap,
83+
Computed: true,
84+
Elem: schema.TypeString,
85+
},
8186
"skip_source_dest_check": {
8287
Type: schema.TypeBool,
8388
Computed: true,
@@ -188,6 +193,10 @@ func (s *CoreVnicDataSourceCrud) SetData() error {
188193
s.D.Set("public_ip_address", *s.Res.PublicIp)
189194
}
190195

196+
if s.Res.SecurityAttributes != nil {
197+
s.D.Set("security_attributes", tfresource.SecurityAttributesToMap(s.Res.SecurityAttributes))
198+
}
199+
191200
if s.Res.SkipSourceDestCheck != nil {
192201
s.D.Set("skip_source_dest_check", *s.Res.SkipSourceDestCheck)
193202
}

0 commit comments

Comments
 (0)