From 6c633ebd6fbd427773057666c1312699bfce24f5 Mon Sep 17 00:00:00 2001 From: Jonas Lammler Date: Wed, 16 Sep 2026 21:07:31 +0200 Subject: [PATCH 1/2] fix: only send load balancer service certificates when defined The to_payload function was always adding the certificates to the payload, which is not an expected behavior if we want to support partial updates. --- hcloud/load_balancers/domain.py | 8 ++++---- tests/unit/load_balancers/test_client.py | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/hcloud/load_balancers/domain.py b/hcloud/load_balancers/domain.py index 7561af2a..35ef7d52 100644 --- a/hcloud/load_balancers/domain.py +++ b/hcloud/load_balancers/domain.py @@ -214,10 +214,10 @@ def to_payload(self) -> dict[str, Any]: http["sticky_sessions"] = self.http.sticky_sessions if self.http.timeout_idle is not None: http["timeout_idle"] = self.http.timeout_idle - - http["certificates"] = [ - certificate.id for certificate in self.http.certificates or [] - ] + if self.http.certificates is not None: + http["certificates"] = [ + certificate.id for certificate in self.http.certificates + ] payload["http"] = http diff --git a/tests/unit/load_balancers/test_client.py b/tests/unit/load_balancers/test_client.py index d9558f6d..8ba8b4db 100644 --- a/tests/unit/load_balancers/test_client.py +++ b/tests/unit/load_balancers/test_client.py @@ -395,6 +395,7 @@ def test_add_service( redirect_http=True, sticky_sessions=True, timeout_idle=60, + certificates=[], ), ) action = resource_client.add_service(load_balancer, service) From bad1dd3240c17e5f03558b3a012043a56786cd67 Mon Sep 17 00:00:00 2001 From: Jonas Lammler Date: Wed, 16 Sep 2026 21:09:46 +0200 Subject: [PATCH 2/2] fix: linting error --- hcloud/load_balancers/domain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hcloud/load_balancers/domain.py b/hcloud/load_balancers/domain.py index 35ef7d52..6d3af62d 100644 --- a/hcloud/load_balancers/domain.py +++ b/hcloud/load_balancers/domain.py @@ -186,7 +186,7 @@ def __init__( self.health_check = health_check self.http = http - # pylint: disable=too-many-branches + # pylint: disable=too-many-branches,too-many-statements def to_payload(self) -> dict[str, Any]: """ Generates the request payload from this domain object.