@@ -86,10 +86,26 @@ func DataSourceIBMISLbProfile() *schema.Resource {
8686 Computed : true ,
8787 Description : "The product family this load balancer profile belongs to" ,
8888 },
89- "reserved_ip_target_supported" : {
90- Type : schema .TypeBool ,
91- Computed : true ,
92- Description : "The Reserved IP Target support for a load balancer with this profile" ,
89+ "targetable_resource_types" : & schema.Schema {
90+ Type : schema .TypeList ,
91+ Computed : true ,
92+ Elem : & schema.Resource {
93+ Schema : map [string ]* schema.Schema {
94+ "type" : & schema.Schema {
95+ Type : schema .TypeString ,
96+ Computed : true ,
97+ Description : "The type for this profile field." ,
98+ },
99+ "values" : & schema.Schema {
100+ Type : schema .TypeList ,
101+ Computed : true ,
102+ Description : "The resource types that pool members of load balancers with this profile can target" ,
103+ Elem : & schema.Schema {
104+ Type : schema .TypeString ,
105+ },
106+ },
107+ },
108+ },
93109 },
94110 "reserved_ip_type" : {
95111 Type : schema .TypeString ,
@@ -285,38 +301,38 @@ func dataSourceIBMISLbProfileRead(context context.Context, d *schema.ResourceDat
285301 }
286302 }
287303 }
288- if lbProfile .ReservedIPTargetSupported != nil {
289- reservedIPTargetSupported := lbProfile .ReservedIPTargetSupported
290- switch reflect .TypeOf (reservedIPTargetSupported ).String () {
291- case "*vpcv1.LoadBalancerProfileReservedIPTargetSupportedFixed" :
292- {
293- reservedIP := reservedIPTargetSupported .(* vpcv1.LoadBalancerProfileReservedIPTargetSupportedFixed )
294- d .Set ("reserved_ip_target_supported" , reservedIP .Value )
295- d .Set ("reserved_ip_type" , reservedIP .Type )
296- }
297- case "*vpcv1.LoadBalancerProfileReservedIPTargetSupportedDependent" :
298- {
299- reservedIP := reservedIPTargetSupported .(* vpcv1.LoadBalancerProfileReservedIPTargetSupportedDependent )
300- if reservedIP .Type != nil {
301- d .Set ("reserved_ip_type" , * reservedIP .Type )
302- }
303- }
304- case "*vpcv1.LoadBalancerProfileReservedIPTargetSupported" :
305- {
306- reservedIP := reservedIPTargetSupported .(* vpcv1.LoadBalancerProfileReservedIPTargetSupported )
307- if reservedIP .Type != nil {
308- d .Set ("reserved_ip_type" , * reservedIP .Type )
309- }
310- if reservedIP .Value != nil {
311- d .Set ("reserved_ip_target_supported" , * reservedIP .Value )
312- }
313- }
304+
305+ if loadBalancerProfile .TargetableResourceTypes != nil {
306+ err = d .Set ("targetable_resource_types" , dataSourceTargetableResourceTypes (* loadBalancerProfile .TargetableResourceTypes ))
307+ if err != nil {
308+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting targetable_resource_types: %s" , err ), "(Data) ibm_is_lb_profile" , "read" , "set-targetable_resource_types" ).GetDiag ()
314309 }
315310 }
316311 d .SetId (* loadBalancerProfile .Name )
317312 return nil
318313}
319314
315+ func dataSourceTargetableResourceTypes (result vpcv1.LoadBalancerProfileTargetableResourceTypes ) (finalList []map [string ]interface {}) {
316+ finalList = []map [string ]interface {}{}
317+ finalMap := dataSourceTargetableResourceTypesToMap (result )
318+ finalList = append (finalList , finalMap )
319+
320+ return finalList
321+ }
322+
323+ func dataSourceTargetableResourceTypesToMap (resTermItem vpcv1.LoadBalancerProfileTargetableResourceTypes ) map [string ]interface {} {
324+ resTermMap := map [string ]interface {}{}
325+
326+ if resTermItem .Type != nil {
327+ resTermMap ["type" ] = resTermItem .Type
328+ }
329+ if resTermItem .Values != nil {
330+ resTermMap ["values" ] = resTermItem .Values
331+ }
332+
333+ return resTermMap
334+ }
335+
320336func dataSourceIBMIsLbProfileLoadBalancerProfileFailsafePolicyActionsToMap (model vpcv1.LoadBalancerProfileFailsafePolicyActionsIntf ) (map [string ]interface {}, error ) {
321337 if _ , ok := model .(* vpcv1.LoadBalancerProfileFailsafePolicyActionsEnum ); ok {
322338 return dataSourceIBMIsLbProfileLoadBalancerProfileFailsafePolicyActionsEnumToMap (model .(* vpcv1.LoadBalancerProfileFailsafePolicyActionsEnum ))
0 commit comments