Skip to content

Commit 789d149

Browse files
Rajarajan Veluchamyvsin12
authored andcommitted
Bug Fix - Make secret version optional and computed for cross connects
1 parent f9559b1 commit 789d149

File tree

5 files changed

+100
-27
lines changed

5 files changed

+100
-27
lines changed

examples/fast_connect/cross_connect.tf

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
22
// Licensed under the Mozilla Public License v2.0
33

4+
variable "cross_connect_secret_version_cak" {
5+
default = null
6+
}
7+
8+
variable "cross_connect_secret_version_ckn" {
9+
default = null
10+
}
11+
412
resource "oci_core_cross_connect" "cross_connect" {
513
#Required
614
compartment_id = var.compartment_ocid
@@ -33,5 +41,28 @@ output "cross_connects" {
3341
value = data.oci_core_cross_connects.cross_connects.cross_connects
3442
}
3543

44+
resource "oci_core_cross_connect" "test_cross_connect_for_macsec" {
45+
compartment_id = var.compartment_ocid
46+
location_name = data.oci_core_cross_connect_locations.cross_connect_locations.cross_connect_locations[0].name
47+
port_speed_shape_name = data.oci_core_cross_connect_port_speed_shapes.cross_connect_port_speed_shapes.cross_connect_port_speed_shapes[0].name
48+
display_name = "MacSecTestForCrossConnect"
49+
is_active = true
50+
macsec_properties {
51+
#Required
52+
state = "ENABLED"
53+
#Optional
54+
encryption_cipher = "AES256_GCM"
55+
primary_key {
56+
#Required
57+
connectivity_association_key_secret_id = var.secret_ocid_cak
58+
connectivity_association_name_secret_id = var.secret_ocid_ckn
59+
#Optional, api will always create with current version, but can use to update
60+
connectivity_association_key_secret_version = var.cross_connect_secret_version_cak
61+
connectivity_association_name_secret_version = var.cross_connect_secret_version_ckn
62+
}
63+
is_unprotected_traffic_allowed = false
64+
65+
}
66+
}
3667

3768

internal/integrationtest/core_cross_connect_test.go

Lines changed: 62 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,10 @@ var (
4444
"values": acctest.Representation{RepType: acctest.Required, Create: []string{`${oci_core_cross_connect.test_cross_connect.id}`}},
4545
}
4646

47+
// for the required fields on create and update
4748
CoreCrossConnectRepresentation = map[string]interface{}{
4849
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
49-
"location_name": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_core_cross_connect_locations.test_cross_connect_locations.cross_connect_locations.1.name}`},
50+
"location_name": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_core_cross_connect_locations.test_cross_connect_locations.cross_connect_locations.0.name}`},
5051
"port_speed_shape_name": acctest.Representation{RepType: acctest.Required, Create: `10 Gbps`},
5152
"customer_reference_name": acctest.Representation{RepType: acctest.Optional, Create: `customerReferenceName`, Update: `customerReferenceName2`},
5253
"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")}`},
@@ -62,8 +63,10 @@ var (
6263
"primary_key": acctest.RepresentationGroup{RepType: acctest.Optional, Group: CoreCrossConnectMacsecPropertiesPrimaryKeyRepresentation},
6364
}
6465
CoreCrossConnectMacsecPropertiesPrimaryKeyRepresentation = map[string]interface{}{
65-
"connectivity_association_key_secret_id": acctest.Representation{RepType: acctest.Required, Create: `${var.secret_ocid_ckn}`},
66-
"connectivity_association_name_secret_id": acctest.Representation{RepType: acctest.Required, Create: `${var.secret_ocid_cak}`},
66+
"connectivity_association_key_secret_id": acctest.Representation{RepType: acctest.Required, Create: `${var.secret_ocid_cak}`},
67+
"connectivity_association_name_secret_id": acctest.Representation{RepType: acctest.Required, Create: `${var.secret_ocid_ckn}`},
68+
"connectivity_association_key_secret_version": acctest.Representation{RepType: acctest.Optional, Update: `${var.secret_version_cak}`},
69+
"connectivity_association_name_secret_version": acctest.Representation{RepType: acctest.Optional, Update: `${var.secret_version_ckn}`},
6770
}
6871

6972
CoreCrossConnectResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_core_cross_connect_group", "test_cross_connect_group", acctest.Required, acctest.Create, CoreCrossConnectGroupRepresentation) +
@@ -106,9 +109,9 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
106109
acctest.GenerateResourceFromRepresentationMap("oci_core_cross_connect", "test_cross_connect", acctest.Optional, acctest.Create, CoreCrossConnectRepresentation), "core", "crossConnect", t)
107110

108111
acctest.ResourceTest(t, testAccCheckCoreCrossConnectDestroy, []resource.TestStep{
109-
// verify Create
112+
// verify Create // Step:0
110113
{
111-
Config: config + compartmentIdVariableStr + CoreCrossConnectResourceDependencies + secretIdVariableStrCKN + secretIdVariableStrCAK +
114+
Config: config + compartmentIdVariableStr + CoreCrossConnectResourceDependencies + secretIdVariableStrCKN + secretIdVariableStrCAK + secretVersionStrCAK + secretVersionStrCKN +
112115
acctest.GenerateResourceFromRepresentationMap("oci_core_cross_connect", "test_cross_connect", acctest.Required, acctest.Create, CoreCrossConnectRepresentation),
113116
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
114117
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
@@ -123,11 +126,38 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
123126
),
124127
},
125128

126-
// delete before next Create
129+
// verify updates to macsec parameters // Step:1
130+
{
131+
Config: config + compartmentIdVariableStr + CoreCrossConnectResourceDependencies + secretIdVariableStrCKN + secretIdVariableStrCAK + secretVersionStrCKN + secretVersionStrCAK +
132+
acctest.GenerateResourceFromRepresentationMap("oci_core_cross_connect", "test_cross_connect", acctest.Optional, acctest.Update, CoreCrossConnectRepresentation),
133+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
134+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.#", "1"),
135+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.encryption_cipher", "AES256_GCM_XPN"),
136+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.is_unprotected_traffic_allowed", "true"),
137+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.#", "1"),
138+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_id", secretIdCAK),
139+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_id", secretIdCKN),
140+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_version", secretVersionCAK),
141+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_version", secretVersionCKN),
142+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.state", "ENABLED"),
143+
resource.TestCheckResourceAttr(resourceName, "port_speed_shape_name", "10 Gbps"),
144+
resource.TestCheckResourceAttr(resourceName, "state", "PROVISIONED"),
145+
146+
func(s *terraform.State) (err error) {
147+
resId2, err = acctest.FromInstanceState(s, resourceName, "id")
148+
if resId != resId2 {
149+
return fmt.Errorf("Resource recreated when it was supposed to be updated.")
150+
}
151+
return err
152+
},
153+
),
154+
},
155+
// delete before next Create // Step:2
127156
{
128157
Config: config + compartmentIdVariableStr + CoreCrossConnectResourceDependencies,
129158
},
130-
// verify Create with optionals
159+
160+
// verify Create with optionals // Step:3
131161
{
132162
Config: config + compartmentIdVariableStr + CoreCrossConnectResourceDependencies + secretIdVariableStrCKN + secretIdVariableStrCAK +
133163
acctest.GenerateResourceFromRepresentationMap("oci_core_cross_connect", "test_cross_connect", acctest.Optional, acctest.Create, CoreCrossConnectRepresentation),
@@ -141,8 +171,8 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
141171
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.encryption_cipher", "AES256_GCM"),
142172
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.is_unprotected_traffic_allowed", "false"),
143173
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.#", "1"),
144-
resource.TestCheckResourceAttrSet(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_id"),
145-
resource.TestCheckResourceAttrSet(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_id"),
174+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_id", secretIdCAK),
175+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_id", secretIdCKN),
146176
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.state", "ENABLED"),
147177
resource.TestCheckResourceAttr(resourceName, "port_speed_shape_name", "10 Gbps"),
148178
resource.TestCheckResourceAttr(resourceName, "state", "PROVISIONED"),
@@ -159,7 +189,7 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
159189
),
160190
},
161191

162-
// verify Update to the compartment (the compartment will be switched back in the next step)
192+
// verify Update to the compartment (the compartment will be switched back in the next step) // Step:4
163193
{
164194
Config: config + compartmentIdVariableStr + compartmentIdUVariableStr + CoreCrossConnectResourceDependencies + secretIdVariableStrCKN + secretIdVariableStrCAK + secretVersionStrCAK + secretVersionStrCKN +
165195
acctest.GenerateResourceFromRepresentationMap("oci_core_cross_connect", "test_cross_connect", acctest.Optional, acctest.Create,
@@ -175,8 +205,10 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
175205
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.encryption_cipher", "AES256_GCM"),
176206
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.is_unprotected_traffic_allowed", "false"),
177207
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.#", "1"),
178-
resource.TestCheckResourceAttrSet(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_id"),
179-
resource.TestCheckResourceAttrSet(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_id"),
208+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_id", secretIdCAK),
209+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_id", secretIdCKN),
210+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_version", secretVersionCAK),
211+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_version", secretVersionCKN),
180212
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.state", "ENABLED"),
181213
resource.TestCheckResourceAttr(resourceName, "port_speed_shape_name", "10 Gbps"),
182214

@@ -190,7 +222,7 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
190222
),
191223
},
192224

193-
// verify updates to updatable parameters
225+
// verify updates to updatable parameters // Step:5
194226
{
195227
Config: config + compartmentIdVariableStr + CoreCrossConnectResourceDependencies + secretIdVariableStrCKN + secretIdVariableStrCAK + secretVersionStrCAK + secretVersionStrCKN +
196228
acctest.GenerateResourceFromRepresentationMap("oci_core_cross_connect", "test_cross_connect", acctest.Optional, acctest.Update, CoreCrossConnectRepresentation),
@@ -204,8 +236,10 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
204236
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.encryption_cipher", "AES256_GCM_XPN"),
205237
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.is_unprotected_traffic_allowed", "true"),
206238
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.#", "1"),
207-
resource.TestCheckResourceAttrSet(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_id"),
208-
resource.TestCheckResourceAttrSet(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_id"),
239+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_id", secretIdCAK),
240+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_id", secretIdCKN),
241+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_version", secretVersionCAK),
242+
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_version", secretVersionCKN),
209243
resource.TestCheckResourceAttr(resourceName, "macsec_properties.0.state", "ENABLED"),
210244
resource.TestCheckResourceAttr(resourceName, "port_speed_shape_name", "10 Gbps"),
211245
resource.TestCheckResourceAttr(resourceName, "state", "PROVISIONED"),
@@ -219,11 +253,11 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
219253
},
220254
),
221255
},
222-
// verify datasource
256+
// verify datasource // Step:6
223257
{
224258
Config: config +
225259
acctest.GenerateDataSourceFromRepresentationMap("oci_core_cross_connects", "test_cross_connects", acctest.Optional, acctest.Update, CoreCoreCrossConnectDataSourceRepresentation) +
226-
compartmentIdVariableStr + CoreCrossConnectResourceDependencies + secretIdVariableStrCKN + secretIdVariableStrCAK + secretVersionStrCAK + secretVersionStrCKN +
260+
compartmentIdVariableStr + CoreCrossConnectResourceDependencies + secretIdVariableStrCKN + secretIdVariableStrCAK + secretVersionStrCKN + secretVersionStrCAK +
227261
acctest.GenerateResourceFromRepresentationMap("oci_core_cross_connect", "test_cross_connect", acctest.Optional, acctest.Update, CoreCrossConnectRepresentation),
228262
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
229263
resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId),
@@ -240,10 +274,10 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
240274
resource.TestCheckResourceAttr(datasourceName, "cross_connects.0.macsec_properties.0.encryption_cipher", "AES256_GCM_XPN"),
241275
resource.TestCheckResourceAttr(datasourceName, "cross_connects.0.macsec_properties.0.is_unprotected_traffic_allowed", "true"),
242276
resource.TestCheckResourceAttr(datasourceName, "cross_connects.0.macsec_properties.0.primary_key.#", "1"),
243-
resource.TestCheckResourceAttrSet(datasourceName, "cross_connects.0.macsec_properties.0.primary_key.0.connectivity_association_key_secret_id"),
244-
resource.TestCheckResourceAttrSet(datasourceName, "cross_connects.0.macsec_properties.0.primary_key.0.connectivity_association_key_secret_version"),
245-
resource.TestCheckResourceAttrSet(datasourceName, "cross_connects.0.macsec_properties.0.primary_key.0.connectivity_association_name_secret_id"),
246-
resource.TestCheckResourceAttrSet(datasourceName, "cross_connects.0.macsec_properties.0.primary_key.0.connectivity_association_name_secret_version"),
277+
resource.TestCheckResourceAttr(datasourceName, "cross_connects.0.macsec_properties.0.primary_key.0.connectivity_association_key_secret_id", secretIdCAK),
278+
resource.TestCheckResourceAttr(datasourceName, "cross_connects.0.macsec_properties.0.primary_key.0.connectivity_association_key_secret_version", secretVersionCAK),
279+
resource.TestCheckResourceAttr(datasourceName, "cross_connects.0.macsec_properties.0.primary_key.0.connectivity_association_name_secret_id", secretIdCKN),
280+
resource.TestCheckResourceAttr(datasourceName, "cross_connects.0.macsec_properties.0.primary_key.0.connectivity_association_name_secret_version", secretVersionCKN),
247281
resource.TestCheckResourceAttrSet(datasourceName, "cross_connects.0.oci_logical_device_name"),
248282
resource.TestCheckResourceAttrSet(datasourceName, "cross_connects.0.oci_physical_device_name"),
249283
resource.TestCheckResourceAttr(datasourceName, "cross_connects.0.macsec_properties.0.state", "ENABLED"),
@@ -254,11 +288,11 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
254288
resource.TestCheckResourceAttr(datasourceName, "cross_connects.0.state", "PROVISIONED"),
255289
),
256290
},
257-
// verify singular datasource
291+
// verify singular datasource // Step:7
258292
{
259293
Config: config +
260294
acctest.GenerateDataSourceFromRepresentationMap("oci_core_cross_connect", "test_cross_connect", acctest.Required, acctest.Create, CoreCoreCrossConnectSingularDataSourceRepresentation) +
261-
compartmentIdVariableStr + CoreCrossConnectResourceConfig + secretIdVariableStrCKN + secretIdVariableStrCAK + secretVersionStrCAK + secretVersionStrCKN,
295+
compartmentIdVariableStr + CoreCrossConnectResourceConfig + secretIdVariableStrCKN + secretIdVariableStrCAK + secretVersionStrCKN + secretVersionStrCAK,
262296
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
263297
resource.TestCheckResourceAttrSet(singularDatasourceName, "cross_connect_id"),
264298

@@ -272,8 +306,10 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
272306
resource.TestCheckResourceAttr(singularDatasourceName, "macsec_properties.0.encryption_cipher", "AES256_GCM_XPN"),
273307
resource.TestCheckResourceAttr(singularDatasourceName, "macsec_properties.0.is_unprotected_traffic_allowed", "true"),
274308
resource.TestCheckResourceAttr(singularDatasourceName, "macsec_properties.0.primary_key.#", "1"),
275-
resource.TestCheckResourceAttrSet(singularDatasourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_version"),
276-
resource.TestCheckResourceAttrSet(singularDatasourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_version"),
309+
resource.TestCheckResourceAttr(singularDatasourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_id", secretIdCAK),
310+
resource.TestCheckResourceAttr(singularDatasourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_id", secretIdCKN),
311+
resource.TestCheckResourceAttr(singularDatasourceName, "macsec_properties.0.primary_key.0.connectivity_association_key_secret_version", secretVersionCAK),
312+
resource.TestCheckResourceAttr(singularDatasourceName, "macsec_properties.0.primary_key.0.connectivity_association_name_secret_version", secretVersionCKN),
277313
resource.TestCheckResourceAttrSet(singularDatasourceName, "oci_logical_device_name"),
278314
resource.TestCheckResourceAttrSet(singularDatasourceName, "oci_physical_device_name"),
279315
resource.TestCheckResourceAttr(singularDatasourceName, "macsec_properties.0.state", "ENABLED"),
@@ -284,7 +320,7 @@ func TestCoreCrossConnectResource_basic(t *testing.T) {
284320
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),
285321
),
286322
},
287-
// verify resource import
323+
// verify resource import // Step:8
288324
// import requires full configuration to handle cross connect dependency on cross connect Group during destroy
289325
{
290326
Config: config + CoreCrossConnectRequiredOnlyResource,

internal/service/core/core_cross_connect_resource.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,12 @@ func CoreCrossConnectResource() *schema.Resource {
128128
// Computed
129129
"connectivity_association_key_secret_version": {
130130
Type: schema.TypeString,
131+
Optional: true,
131132
Computed: true,
132133
},
133134
"connectivity_association_name_secret_version": {
134135
Type: schema.TypeString,
136+
Optional: true,
135137
Computed: true,
136138
},
137139
},

0 commit comments

Comments
 (0)