@@ -123,7 +123,55 @@ The only allowed value for now is "ALL_IPV4_RANGES".`,
123
123
},
124
124
},
125
125
},
126
- ConflictsWith : []string {"linked_vpn_tunnels" , "linked_router_appliance_instances" , "linked_vpc_network" },
126
+ ConflictsWith : []string {"linked_vpn_tunnels" , "linked_router_appliance_instances" , "linked_vpc_network" , "linked_producer_vpc_network" },
127
+ },
128
+ "linked_producer_vpc_network" : {
129
+ Type : schema .TypeList ,
130
+ Optional : true ,
131
+ ForceNew : true ,
132
+ Description : `Producer VPC network that is associated with the spoke.` ,
133
+ MaxItems : 1 ,
134
+ Elem : & schema.Resource {
135
+ Schema : map [string ]* schema.Schema {
136
+ "network" : {
137
+ Type : schema .TypeString ,
138
+ Required : true ,
139
+ ForceNew : true ,
140
+ DiffSuppressFunc : tpgresource .CompareSelfLinkOrResourceName ,
141
+ Description : `The URI of the Service Consumer VPC that the Producer VPC is peered with.` ,
142
+ },
143
+ "peering" : {
144
+ Type : schema .TypeString ,
145
+ Required : true ,
146
+ ForceNew : true ,
147
+ Description : `The name of the VPC peering between the Service Consumer VPC and the Producer VPC (defined in the Tenant project) which is added to the NCC hub. This peering must be in ACTIVE state.` ,
148
+ },
149
+ "exclude_export_ranges" : {
150
+ Type : schema .TypeList ,
151
+ Optional : true ,
152
+ ForceNew : true ,
153
+ Description : `IP ranges encompassing the subnets to be excluded from peering.` ,
154
+ Elem : & schema.Schema {
155
+ Type : schema .TypeString ,
156
+ },
157
+ },
158
+ "include_export_ranges" : {
159
+ Type : schema .TypeList ,
160
+ Optional : true ,
161
+ ForceNew : true ,
162
+ Description : `IP ranges allowed to be included from peering.` ,
163
+ Elem : & schema.Schema {
164
+ Type : schema .TypeString ,
165
+ },
166
+ },
167
+ "producer_network" : {
168
+ Type : schema .TypeString ,
169
+ Computed : true ,
170
+ Description : `The URI of the Producer VPC.` ,
171
+ },
172
+ },
173
+ },
174
+ ConflictsWith : []string {"linked_interconnect_attachments" , "linked_router_appliance_instances" , "linked_vpn_tunnels" , "linked_vpc_network" },
127
175
},
128
176
"linked_router_appliance_instances" : {
129
177
Type : schema .TypeList ,
@@ -173,7 +221,7 @@ The only allowed value for now is "ALL_IPV4_RANGES".`,
173
221
},
174
222
},
175
223
},
176
- ConflictsWith : []string {"linked_interconnect_attachments" , "linked_vpn_tunnels" , "linked_vpc_network" },
224
+ ConflictsWith : []string {"linked_interconnect_attachments" , "linked_vpn_tunnels" , "linked_vpc_network" , "linked_producer_vpc_network" },
177
225
},
178
226
"linked_vpc_network" : {
179
227
Type : schema .TypeList ,
@@ -210,7 +258,7 @@ The only allowed value for now is "ALL_IPV4_RANGES".`,
210
258
},
211
259
},
212
260
},
213
- ConflictsWith : []string {"linked_interconnect_attachments" , "linked_router_appliance_instances" , "linked_vpn_tunnels" },
261
+ ConflictsWith : []string {"linked_interconnect_attachments" , "linked_router_appliance_instances" , "linked_vpn_tunnels" , "linked_producer_vpc_network" },
214
262
},
215
263
"linked_vpn_tunnels" : {
216
264
Type : schema .TypeList ,
@@ -246,7 +294,7 @@ The only allowed value for now is "ALL_IPV4_RANGES".`,
246
294
},
247
295
},
248
296
},
249
- ConflictsWith : []string {"linked_interconnect_attachments" , "linked_router_appliance_instances" , "linked_vpc_network" },
297
+ ConflictsWith : []string {"linked_interconnect_attachments" , "linked_router_appliance_instances" , "linked_vpc_network" , "linked_producer_vpc_network" },
250
298
},
251
299
"create_time" : {
252
300
Type : schema .TypeString ,
@@ -343,6 +391,12 @@ func resourceNetworkConnectivitySpokeCreate(d *schema.ResourceData, meta interfa
343
391
} else if v , ok := d .GetOkExists ("linked_vpc_network" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (linkedVpcNetworkProp )) && (ok || ! reflect .DeepEqual (v , linkedVpcNetworkProp )) {
344
392
obj ["linkedVpcNetwork" ] = linkedVpcNetworkProp
345
393
}
394
+ linkedProducerVpcNetworkProp , err := expandNetworkConnectivitySpokeLinkedProducerVpcNetwork (d .Get ("linked_producer_vpc_network" ), d , config )
395
+ if err != nil {
396
+ return err
397
+ } else if v , ok := d .GetOkExists ("linked_producer_vpc_network" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (linkedProducerVpcNetworkProp )) && (ok || ! reflect .DeepEqual (v , linkedProducerVpcNetworkProp )) {
398
+ obj ["linkedProducerVpcNetwork" ] = linkedProducerVpcNetworkProp
399
+ }
346
400
labelsProp , err := expandNetworkConnectivitySpokeEffectiveLabels (d .Get ("effective_labels" ), d , config )
347
401
if err != nil {
348
402
return err
@@ -478,6 +532,9 @@ func resourceNetworkConnectivitySpokeRead(d *schema.ResourceData, meta interface
478
532
if err := d .Set ("linked_vpc_network" , flattenNetworkConnectivitySpokeLinkedVpcNetwork (res ["linkedVpcNetwork" ], d , config )); err != nil {
479
533
return fmt .Errorf ("Error reading Spoke: %s" , err )
480
534
}
535
+ if err := d .Set ("linked_producer_vpc_network" , flattenNetworkConnectivitySpokeLinkedProducerVpcNetwork (res ["linkedProducerVpcNetwork" ], d , config )); err != nil {
536
+ return fmt .Errorf ("Error reading Spoke: %s" , err )
537
+ }
481
538
if err := d .Set ("unique_id" , flattenNetworkConnectivitySpokeUniqueId (res ["uniqueId" ], d , config )); err != nil {
482
539
return fmt .Errorf ("Error reading Spoke: %s" , err )
483
540
}
@@ -835,6 +892,47 @@ func flattenNetworkConnectivitySpokeLinkedVpcNetworkIncludeExportRanges(v interf
835
892
return v
836
893
}
837
894
895
+ func flattenNetworkConnectivitySpokeLinkedProducerVpcNetwork (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
896
+ if v == nil {
897
+ return nil
898
+ }
899
+ original := v .(map [string ]interface {})
900
+ if len (original ) == 0 {
901
+ return nil
902
+ }
903
+ transformed := make (map [string ]interface {})
904
+ transformed ["network" ] =
905
+ flattenNetworkConnectivitySpokeLinkedProducerVpcNetworkNetwork (original ["network" ], d , config )
906
+ transformed ["peering" ] =
907
+ flattenNetworkConnectivitySpokeLinkedProducerVpcNetworkPeering (original ["peering" ], d , config )
908
+ transformed ["producer_network" ] =
909
+ flattenNetworkConnectivitySpokeLinkedProducerVpcNetworkProducerNetwork (original ["producerNetwork" ], d , config )
910
+ transformed ["include_export_ranges" ] =
911
+ flattenNetworkConnectivitySpokeLinkedProducerVpcNetworkIncludeExportRanges (original ["includeExportRanges" ], d , config )
912
+ transformed ["exclude_export_ranges" ] =
913
+ flattenNetworkConnectivitySpokeLinkedProducerVpcNetworkExcludeExportRanges (original ["excludeExportRanges" ], d , config )
914
+ return []interface {}{transformed }
915
+ }
916
+ func flattenNetworkConnectivitySpokeLinkedProducerVpcNetworkNetwork (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
917
+ return v
918
+ }
919
+
920
+ func flattenNetworkConnectivitySpokeLinkedProducerVpcNetworkPeering (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
921
+ return v
922
+ }
923
+
924
+ func flattenNetworkConnectivitySpokeLinkedProducerVpcNetworkProducerNetwork (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
925
+ return v
926
+ }
927
+
928
+ func flattenNetworkConnectivitySpokeLinkedProducerVpcNetworkIncludeExportRanges (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
929
+ return v
930
+ }
931
+
932
+ func flattenNetworkConnectivitySpokeLinkedProducerVpcNetworkExcludeExportRanges (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
933
+ return v
934
+ }
935
+
838
936
func flattenNetworkConnectivitySpokeUniqueId (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
839
937
return v
840
938
}
@@ -1087,6 +1185,73 @@ func expandNetworkConnectivitySpokeLinkedVpcNetworkIncludeExportRanges(v interfa
1087
1185
return v , nil
1088
1186
}
1089
1187
1188
+ func expandNetworkConnectivitySpokeLinkedProducerVpcNetwork (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1189
+ l := v .([]interface {})
1190
+ if len (l ) == 0 || l [0 ] == nil {
1191
+ return nil , nil
1192
+ }
1193
+ raw := l [0 ]
1194
+ original := raw .(map [string ]interface {})
1195
+ transformed := make (map [string ]interface {})
1196
+
1197
+ transformedNetwork , err := expandNetworkConnectivitySpokeLinkedProducerVpcNetworkNetwork (original ["network" ], d , config )
1198
+ if err != nil {
1199
+ return nil , err
1200
+ } else if val := reflect .ValueOf (transformedNetwork ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1201
+ transformed ["network" ] = transformedNetwork
1202
+ }
1203
+
1204
+ transformedPeering , err := expandNetworkConnectivitySpokeLinkedProducerVpcNetworkPeering (original ["peering" ], d , config )
1205
+ if err != nil {
1206
+ return nil , err
1207
+ } else if val := reflect .ValueOf (transformedPeering ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1208
+ transformed ["peering" ] = transformedPeering
1209
+ }
1210
+
1211
+ transformedProducerNetwork , err := expandNetworkConnectivitySpokeLinkedProducerVpcNetworkProducerNetwork (original ["producer_network" ], d , config )
1212
+ if err != nil {
1213
+ return nil , err
1214
+ } else if val := reflect .ValueOf (transformedProducerNetwork ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1215
+ transformed ["producerNetwork" ] = transformedProducerNetwork
1216
+ }
1217
+
1218
+ transformedIncludeExportRanges , err := expandNetworkConnectivitySpokeLinkedProducerVpcNetworkIncludeExportRanges (original ["include_export_ranges" ], d , config )
1219
+ if err != nil {
1220
+ return nil , err
1221
+ } else if val := reflect .ValueOf (transformedIncludeExportRanges ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1222
+ transformed ["includeExportRanges" ] = transformedIncludeExportRanges
1223
+ }
1224
+
1225
+ transformedExcludeExportRanges , err := expandNetworkConnectivitySpokeLinkedProducerVpcNetworkExcludeExportRanges (original ["exclude_export_ranges" ], d , config )
1226
+ if err != nil {
1227
+ return nil , err
1228
+ } else if val := reflect .ValueOf (transformedExcludeExportRanges ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1229
+ transformed ["excludeExportRanges" ] = transformedExcludeExportRanges
1230
+ }
1231
+
1232
+ return transformed , nil
1233
+ }
1234
+
1235
+ func expandNetworkConnectivitySpokeLinkedProducerVpcNetworkNetwork (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1236
+ return v , nil
1237
+ }
1238
+
1239
+ func expandNetworkConnectivitySpokeLinkedProducerVpcNetworkPeering (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1240
+ return v , nil
1241
+ }
1242
+
1243
+ func expandNetworkConnectivitySpokeLinkedProducerVpcNetworkProducerNetwork (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1244
+ return v , nil
1245
+ }
1246
+
1247
+ func expandNetworkConnectivitySpokeLinkedProducerVpcNetworkIncludeExportRanges (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1248
+ return v , nil
1249
+ }
1250
+
1251
+ func expandNetworkConnectivitySpokeLinkedProducerVpcNetworkExcludeExportRanges (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1252
+ return v , nil
1253
+ }
1254
+
1090
1255
func expandNetworkConnectivitySpokeEffectiveLabels (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (map [string ]string , error ) {
1091
1256
if v == nil {
1092
1257
return map [string ]string {}, nil
0 commit comments