@@ -349,14 +349,18 @@ func resourceLoadBalancerServiceDelete(ctx context.Context, d *schema.ResourceDa
349349}
350350
351351func setLoadBalancerServiceSchema (d * schema.ResourceData , lb * hcloud.LoadBalancer , svc * hcloud.LoadBalancerService ) {
352- svcID := fmt .Sprintf ("%d__%d" , lb .ID , svc .ListenPort )
352+ util .SetSchemaFromAttributes (d , getLoadBalancerServiceAttributes (lb , svc ))
353+ }
353354
354- d .SetId (svcID )
355- d .Set ("load_balancer_id" , util .FormatID (lb .ID ))
356- d .Set ("protocol" , string (svc .Protocol ))
357- d .Set ("listen_port" , svc .ListenPort )
358- d .Set ("destination_port" , svc .DestinationPort )
359- d .Set ("proxyprotocol" , svc .Proxyprotocol )
355+ func getLoadBalancerServiceAttributes (lb * hcloud.LoadBalancer , svc * hcloud.LoadBalancerService ) map [string ]any {
356+ res := map [string ]any {
357+ "id" : fmt .Sprintf ("%d__%d" , lb .ID , svc .ListenPort ),
358+ "load_balancer_id" : util .FormatID (lb .ID ),
359+ "protocol" : string (svc .Protocol ),
360+ "listen_port" : svc .ListenPort ,
361+ "destination_port" : svc .DestinationPort ,
362+ "proxyprotocol" : svc .Proxyprotocol ,
363+ }
360364
361365 if svc .Protocol != hcloud .LoadBalancerServiceProtocolTCP {
362366 httpMap := make (map [string ]any )
@@ -381,14 +385,16 @@ func setLoadBalancerServiceSchema(d *schema.ResourceData, lb *hcloud.LoadBalance
381385 }
382386 httpMap ["redirect_http" ] = svc .HTTP .RedirectHTTP
383387 if len (httpMap ) > 0 {
384- d . Set ( "http" , [] any { httpMap })
388+ res [ "http" ] = httpMap
385389 }
386390 }
387391
388392 healthCheck := toTFHealthCheck (svc .HealthCheck )
389393 if len (healthCheck ) > 0 {
390- d . Set ( "health_check" , []any {healthCheck })
394+ res [ "health_check" ] = []any {healthCheck }
391395 }
396+
397+ return res
392398}
393399
394400var errInvalidLoadBalancerServiceID = errors .New ("invalid load balancer service id" )
0 commit comments