@@ -77,8 +77,8 @@ func ResourceNetworkConnectivityInternalRange() *schema.Resource {
77
77
"usage" : {
78
78
Type : schema .TypeString ,
79
79
Required : true ,
80
- ValidateFunc : verify .ValidateEnum ([]string {"FOR_VPC" , "EXTERNAL_TO_VPC" }),
81
- Description : `The type of usage set for this InternalRange. Possible values: ["FOR_VPC", "EXTERNAL_TO_VPC"]` ,
80
+ ValidateFunc : verify .ValidateEnum ([]string {"FOR_VPC" , "EXTERNAL_TO_VPC" , "FOR_MIGRATION" }),
81
+ Description : `The type of usage set for this InternalRange. Possible values: ["FOR_VPC", "EXTERNAL_TO_VPC", "FOR_MIGRATION" ]` ,
82
82
},
83
83
"description" : {
84
84
Type : schema .TypeString ,
@@ -101,6 +101,33 @@ func ResourceNetworkConnectivityInternalRange() *schema.Resource {
101
101
Please refer to the field 'effective_labels' for all of the labels present on the resource.` ,
102
102
Elem : & schema.Schema {Type : schema .TypeString },
103
103
},
104
+ "migration" : {
105
+ Type : schema .TypeList ,
106
+ Optional : true ,
107
+ ForceNew : true ,
108
+ Description : `Specification for migration with source and target resource names.` ,
109
+ MaxItems : 1 ,
110
+ Elem : & schema.Resource {
111
+ Schema : map [string ]* schema.Schema {
112
+ "source" : {
113
+ Type : schema .TypeString ,
114
+ Required : true ,
115
+ Description : `Resource path as an URI of the source resource, for example a subnet.
116
+ The project for the source resource should match the project for the
117
+ InternalRange.
118
+ An example /projects/{project}/regions/{region}/subnetworks/{subnet}` ,
119
+ },
120
+ "target" : {
121
+ Type : schema .TypeString ,
122
+ Required : true ,
123
+ Description : `Resource path of the target resource. The target project can be
124
+ different, as in the cases when migrating to peer networks. The resource
125
+ may not exist yet.
126
+ For example /projects/{project}/regions/{region}/subnetworks/{subnet}` ,
127
+ },
128
+ },
129
+ },
130
+ },
104
131
"overlaps" : {
105
132
Type : schema .TypeList ,
106
133
Optional : true ,
@@ -215,6 +242,12 @@ func resourceNetworkConnectivityInternalRangeCreate(d *schema.ResourceData, meta
215
242
} else if v , ok := d .GetOkExists ("overlaps" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (overlapsProp )) && (ok || ! reflect .DeepEqual (v , overlapsProp )) {
216
243
obj ["overlaps" ] = overlapsProp
217
244
}
245
+ migrationProp , err := expandNetworkConnectivityInternalRangeMigration (d .Get ("migration" ), d , config )
246
+ if err != nil {
247
+ return err
248
+ } else if v , ok := d .GetOkExists ("migration" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (migrationProp )) && (ok || ! reflect .DeepEqual (v , migrationProp )) {
249
+ obj ["migration" ] = migrationProp
250
+ }
218
251
labelsProp , err := expandNetworkConnectivityInternalRangeEffectiveLabels (d .Get ("effective_labels" ), d , config )
219
252
if err != nil {
220
253
return err
@@ -350,6 +383,9 @@ func resourceNetworkConnectivityInternalRangeRead(d *schema.ResourceData, meta i
350
383
if err := d .Set ("overlaps" , flattenNetworkConnectivityInternalRangeOverlaps (res ["overlaps" ], d , config )); err != nil {
351
384
return fmt .Errorf ("Error reading InternalRange: %s" , err )
352
385
}
386
+ if err := d .Set ("migration" , flattenNetworkConnectivityInternalRangeMigration (res ["migration" ], d , config )); err != nil {
387
+ return fmt .Errorf ("Error reading InternalRange: %s" , err )
388
+ }
353
389
if err := d .Set ("terraform_labels" , flattenNetworkConnectivityInternalRangeTerraformLabels (res ["labels" ], d , config )); err != nil {
354
390
return fmt .Errorf ("Error reading InternalRange: %s" , err )
355
391
}
@@ -661,6 +697,29 @@ func flattenNetworkConnectivityInternalRangeOverlaps(v interface{}, d *schema.Re
661
697
return v
662
698
}
663
699
700
+ func flattenNetworkConnectivityInternalRangeMigration (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
701
+ if v == nil {
702
+ return nil
703
+ }
704
+ original := v .(map [string ]interface {})
705
+ if len (original ) == 0 {
706
+ return nil
707
+ }
708
+ transformed := make (map [string ]interface {})
709
+ transformed ["source" ] =
710
+ flattenNetworkConnectivityInternalRangeMigrationSource (original ["source" ], d , config )
711
+ transformed ["target" ] =
712
+ flattenNetworkConnectivityInternalRangeMigrationTarget (original ["target" ], d , config )
713
+ return []interface {}{transformed }
714
+ }
715
+ func flattenNetworkConnectivityInternalRangeMigrationSource (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
716
+ return v
717
+ }
718
+
719
+ func flattenNetworkConnectivityInternalRangeMigrationTarget (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
720
+ return v
721
+ }
722
+
664
723
func flattenNetworkConnectivityInternalRangeTerraformLabels (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
665
724
if v == nil {
666
725
return v
@@ -712,6 +771,40 @@ func expandNetworkConnectivityInternalRangeOverlaps(v interface{}, d tpgresource
712
771
return v , nil
713
772
}
714
773
774
+ func expandNetworkConnectivityInternalRangeMigration (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
775
+ l := v .([]interface {})
776
+ if len (l ) == 0 || l [0 ] == nil {
777
+ return nil , nil
778
+ }
779
+ raw := l [0 ]
780
+ original := raw .(map [string ]interface {})
781
+ transformed := make (map [string ]interface {})
782
+
783
+ transformedSource , err := expandNetworkConnectivityInternalRangeMigrationSource (original ["source" ], d , config )
784
+ if err != nil {
785
+ return nil , err
786
+ } else if val := reflect .ValueOf (transformedSource ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
787
+ transformed ["source" ] = transformedSource
788
+ }
789
+
790
+ transformedTarget , err := expandNetworkConnectivityInternalRangeMigrationTarget (original ["target" ], d , config )
791
+ if err != nil {
792
+ return nil , err
793
+ } else if val := reflect .ValueOf (transformedTarget ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
794
+ transformed ["target" ] = transformedTarget
795
+ }
796
+
797
+ return transformed , nil
798
+ }
799
+
800
+ func expandNetworkConnectivityInternalRangeMigrationSource (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
801
+ return v , nil
802
+ }
803
+
804
+ func expandNetworkConnectivityInternalRangeMigrationTarget (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
805
+ return v , nil
806
+ }
807
+
715
808
func expandNetworkConnectivityInternalRangeEffectiveLabels (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (map [string ]string , error ) {
716
809
if v == nil {
717
810
return map [string ]string {}, nil
0 commit comments