@@ -144,6 +144,33 @@ restrictions.`,
144144 Set : schema .HashString ,
145145 AtLeastOneOf : []string {"status.0.resources" , "status.0.access_levels" , "status.0.restricted_services" },
146146 },
147+ "vpc_accessible_services" : {
148+ Type : schema .TypeList ,
149+ Optional : true ,
150+ Description : `Specifies how APIs are allowed to communicate within the Service
151+ Perimeter.` ,
152+ MaxItems : 1 ,
153+ Elem : & schema.Resource {
154+ Schema : map [string ]* schema.Schema {
155+ "allowed_services" : {
156+ Type : schema .TypeSet ,
157+ Optional : true ,
158+ Description : `The list of APIs usable within the Service Perimeter.
159+ Must be empty unless 'enableRestriction' is True.` ,
160+ Elem : & schema.Schema {
161+ Type : schema .TypeString ,
162+ },
163+ Set : schema .HashString ,
164+ },
165+ "enable_restriction" : {
166+ Type : schema .TypeBool ,
167+ Optional : true ,
168+ Description : `Whether to restrict API calls within the Service Perimeter to the
169+ list of APIs specified in 'allowedServices'.` ,
170+ },
171+ },
172+ },
173+ },
147174 },
148175 },
149176 },
@@ -464,6 +491,8 @@ func flattenAccessContextManagerServicePerimeterStatus(v interface{}, d *schema.
464491 flattenAccessContextManagerServicePerimeterStatusAccessLevels (original ["accessLevels" ], d , config )
465492 transformed ["restricted_services" ] =
466493 flattenAccessContextManagerServicePerimeterStatusRestrictedServices (original ["restrictedServices" ], d , config )
494+ transformed ["vpc_accessible_services" ] =
495+ flattenAccessContextManagerServicePerimeterStatusVPCAccessibleServices (original ["vpcAccessibleServices" ], d , config )
467496 return []interface {}{transformed }
468497}
469498func flattenAccessContextManagerServicePerimeterStatusResources (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
@@ -481,6 +510,32 @@ func flattenAccessContextManagerServicePerimeterStatusRestrictedServices(v inter
481510 return schema .NewSet (schema .HashString , v .([]interface {}))
482511}
483512
513+ func flattenAccessContextManagerServicePerimeterStatusVPCAccessibleServices (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
514+ if v == nil {
515+ return nil
516+ }
517+ original := v .(map [string ]interface {})
518+ if len (original ) == 0 {
519+ return nil
520+ }
521+ transformed := make (map [string ]interface {})
522+ transformed ["enable_restriction" ] =
523+ flattenAccessContextManagerServicePerimeterStatusVPCAccessibleServicesEnableRestriction (original ["enableRestriction" ], d , config )
524+ transformed ["allowed_services" ] =
525+ flattenAccessContextManagerServicePerimeterStatusVPCAccessibleServicesAllowedServices (original ["allowedServices" ], d , config )
526+ return []interface {}{transformed }
527+ }
528+ func flattenAccessContextManagerServicePerimeterStatusVPCAccessibleServicesEnableRestriction (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
529+ return v
530+ }
531+
532+ func flattenAccessContextManagerServicePerimeterStatusVPCAccessibleServicesAllowedServices (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
533+ if v == nil {
534+ return v
535+ }
536+ return schema .NewSet (schema .HashString , v .([]interface {}))
537+ }
538+
484539func flattenAccessContextManagerServicePerimeterName (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
485540 return v
486541}
@@ -527,6 +582,13 @@ func expandAccessContextManagerServicePerimeterStatus(v interface{}, d Terraform
527582 transformed ["restrictedServices" ] = transformedRestrictedServices
528583 }
529584
585+ transformedVPCAccessibleServices , err := expandAccessContextManagerServicePerimeterStatusVPCAccessibleServices (original ["vpc_accessible_services" ], d , config )
586+ if err != nil {
587+ return nil , err
588+ } else if val := reflect .ValueOf (transformedVPCAccessibleServices ); val .IsValid () && ! isEmptyValue (val ) {
589+ transformed ["vpcAccessibleServices" ] = transformedVPCAccessibleServices
590+ }
591+
530592 return transformed , nil
531593}
532594
@@ -543,6 +605,41 @@ func expandAccessContextManagerServicePerimeterStatusRestrictedServices(v interf
543605 return v , nil
544606}
545607
608+ func expandAccessContextManagerServicePerimeterStatusVPCAccessibleServices (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
609+ l := v .([]interface {})
610+ if len (l ) == 0 || l [0 ] == nil {
611+ return nil , nil
612+ }
613+ raw := l [0 ]
614+ original := raw .(map [string ]interface {})
615+ transformed := make (map [string ]interface {})
616+
617+ transformedEnableRestriction , err := expandAccessContextManagerServicePerimeterStatusVPCAccessibleServicesEnableRestriction (original ["enable_restriction" ], d , config )
618+ if err != nil {
619+ return nil , err
620+ } else if val := reflect .ValueOf (transformedEnableRestriction ); val .IsValid () && ! isEmptyValue (val ) {
621+ transformed ["enableRestriction" ] = transformedEnableRestriction
622+ }
623+
624+ transformedAllowedServices , err := expandAccessContextManagerServicePerimeterStatusVPCAccessibleServicesAllowedServices (original ["allowed_services" ], d , config )
625+ if err != nil {
626+ return nil , err
627+ } else if val := reflect .ValueOf (transformedAllowedServices ); val .IsValid () && ! isEmptyValue (val ) {
628+ transformed ["allowedServices" ] = transformedAllowedServices
629+ }
630+
631+ return transformed , nil
632+ }
633+
634+ func expandAccessContextManagerServicePerimeterStatusVPCAccessibleServicesEnableRestriction (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
635+ return v , nil
636+ }
637+
638+ func expandAccessContextManagerServicePerimeterStatusVPCAccessibleServicesAllowedServices (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
639+ v = v .(* schema.Set ).List ()
640+ return v , nil
641+ }
642+
546643func expandAccessContextManagerServicePerimeterParent (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
547644 return v , nil
548645}
0 commit comments