From 2544de7a814be29addd81c6d261a5cf5a527c0de Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Oct 2026 10:59:01 +0000 Subject: [PATCH] fix(deps): update module github.com/hetznercloud/hcloud-go/v2 to v2.52.0 --- go.mod | 2 +- go.sum | 2 + .../hetznercloud/hcloud-go/v2/hcloud/error.go | 9 ++- .../v2/hcloud/internal/version/version.go | 2 +- .../hcloud-go/v2/hcloud/load_balancer.go | 70 +++++++++++++++++-- .../v2/hcloud/schema/load_balancer.go | 24 +++++-- .../hcloud-go/v2/hcloud/schema_gen.go | 8 +++ .../hcloud/zz_load_balancer_client_iface.go | 4 ++ .../v2/hcloud/zz_schema_converter.go | 29 ++++++++ vendor/modules.txt | 2 +- 10 files changed, 135 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index ce508716a..8cd3f70f2 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.4 github.com/hashicorp/go-multierror v1.1.1 - github.com/hetznercloud/hcloud-go/v2 v2.49.0 + github.com/hetznercloud/hcloud-go/v2 v2.52.0 github.com/jackc/pgx/v5 v5.11.0 github.com/johannesboyne/gofakes3 v1.2.0 github.com/jwx-go/jwkfetch/v4 v4.0.4 diff --git a/go.sum b/go.sum index 7bd11ba10..98644ebd8 100644 --- a/go.sum +++ b/go.sum @@ -276,6 +276,8 @@ github.com/hetznercloud/hcloud-go/v2 v2.48.0 h1:P3biOxqEufOxp2xBEZTZGIl56xK4sFbw github.com/hetznercloud/hcloud-go/v2 v2.48.0/go.mod h1:J9QH6j8pRH0K3+HlqgOlQ8abXagWTD/GpTkfra2et+g= github.com/hetznercloud/hcloud-go/v2 v2.49.0 h1:QXONxfgXIF99PFJknkVw+LrQQB4PB5IbEjEDh4Hfmig= github.com/hetznercloud/hcloud-go/v2 v2.49.0/go.mod h1:J9QH6j8pRH0K3+HlqgOlQ8abXagWTD/GpTkfra2et+g= +github.com/hetznercloud/hcloud-go/v2 v2.52.0 h1:BrQSFNuPhPZrWNdXKSEACX1hcS1TRzKSHMfFcXYRhDA= +github.com/hetznercloud/hcloud-go/v2 v2.52.0/go.mod h1:J9QH6j8pRH0K3+HlqgOlQ8abXagWTD/GpTkfra2et+g= github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= diff --git a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/error.go b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/error.go index 98cfbaf16..097f9b374 100644 --- a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/error.go +++ b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/error.go @@ -32,7 +32,6 @@ const ( ErrorCodeRobotUnavailable ErrorCode = "robot_unavailable" // Robot was not available. The caller may retry the operation after a short delay ErrorCodeResourceLocked ErrorCode = "resource_locked" // The resource is locked. The caller should contact support ErrorCodeServerError ErrorCode = "server_error" // Error within the API backend - ErrorCodeTokenReadonly ErrorCode = "token_readonly" // The token is only allowed to perform GET requests ErrorCodeBadGateway ErrorCode = "bad_gateway" // The request could not be answered by the API backend, please retry ErrorCodeTimeout ErrorCode = "timeout" // The request could not be answered in time, please retry ErrorUnsupportedError ErrorCode = "unsupported_error" // The given resource does not support this @@ -111,6 +110,14 @@ const ( // //go:fix inline ErrorCodeLimitReached = ErrorCodeRateLimitExceeded + + // ErrorCodeTokenReadonly is returned if the token is only allowed to perform GET + // requests + // + // Deprecated: This error code is deprecated, please use [ErrorCodeForbidden] instead. + // + //go:fix inline + ErrorCodeTokenReadonly = ErrorCodeForbidden ) // Error is an error returned from the API. diff --git a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/internal/version/version.go b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/internal/version/version.go index 9671c0b05..226d02bee 100644 --- a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/internal/version/version.go +++ b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/internal/version/version.go @@ -1,4 +1,4 @@ package version // Version is the library's version following Semantic Versioning. -const Version = "2.49.0" // x-releaser-pleaser-version +const Version = "2.52.0" // x-releaser-pleaser-version diff --git a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/load_balancer.go b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/load_balancer.go index 7f79e2041..2b8bc0c4b 100644 --- a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/load_balancer.go +++ b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/load_balancer.go @@ -48,14 +48,18 @@ type LoadBalancerPublicNet struct { // LoadBalancerPublicNetIPv4 represents a Load Balancer's public IPv4 address. type LoadBalancerPublicNetIPv4 struct { - IP net.IP - DNSPtr string + ID int64 + IP net.IP + Blocked bool + DNSPtr string } // LoadBalancerPublicNetIPv6 represents a Load Balancer's public IPv6 address. type LoadBalancerPublicNetIPv6 struct { - IP net.IP - DNSPtr string + ID int64 + IP net.IP + Blocked bool + DNSPtr string } // LoadBalancerPrivateNet represents a Load Balancer's private network. @@ -193,10 +197,32 @@ const ( LoadBalancerTargetHealthStatusStatusUnhealthy LoadBalancerTargetHealthStatusStatus = "unhealthy" ) +// LoadBalancerTargetHealthStatusDetail describes additional details about why +// a health check failed. It is only present when the health status is +// unhealthy. +type LoadBalancerTargetHealthStatusDetail string + +const ( + // LoadBalancerTargetHealthStatusDetailUnspecified denotes that the reason for a failed health check is unspecified. + LoadBalancerTargetHealthStatusDetailUnspecified LoadBalancerTargetHealthStatusDetail = "unspecified" + // LoadBalancerTargetHealthStatusDetailLayer4NoConnection denotes that no connection could be established to the target. + LoadBalancerTargetHealthStatusDetailLayer4NoConnection LoadBalancerTargetHealthStatusDetail = "layer4_no_connection" + // LoadBalancerTargetHealthStatusDetailLayer4Timeout denotes that the target did not respond in time. + LoadBalancerTargetHealthStatusDetailLayer4Timeout LoadBalancerTargetHealthStatusDetail = "layer4_timeout" + // LoadBalancerTargetHealthStatusDetailLayer7Timeout denotes that the target did not respond in time. + LoadBalancerTargetHealthStatusDetailLayer7Timeout LoadBalancerTargetHealthStatusDetail = "layer7_timeout" + // LoadBalancerTargetHealthStatusDetailUnexpectedHTTPStatus denotes that the target responded with an unexpected HTTP status code. + LoadBalancerTargetHealthStatusDetailUnexpectedHTTPStatus LoadBalancerTargetHealthStatusDetail = "unexpected_http_status" + // LoadBalancerTargetHealthStatusDetailUnexpectedHTTPContent denotes that the target responded with unexpected HTTP content. + LoadBalancerTargetHealthStatusDetailUnexpectedHTTPContent LoadBalancerTargetHealthStatusDetail = "unexpected_http_content" +) + // LoadBalancerTargetHealthStatus describes a target's health for a specific service. type LoadBalancerTargetHealthStatus struct { - ListenPort int - Status LoadBalancerTargetHealthStatusStatus + ListenPort int + Status LoadBalancerTargetHealthStatusStatus + Detail *LoadBalancerTargetHealthStatusDetail + HTTPStatusCode *int } // LoadBalancerProtection represents the protection level of a Load Balancer. @@ -378,6 +404,7 @@ type LoadBalancerCreateOpts struct { Targets []LoadBalancerCreateOptsTarget Services []LoadBalancerCreateOptsService PublicInterface *bool + PublicNet *LoadBalancerCreateOptsPublicNet Network *Network } @@ -391,6 +418,13 @@ type LoadBalancerCreateOptsTarget struct { UsePrivateIP *bool } +// LoadBalancerCreateOptsPublicNet holds options for specifying the public network +// when creating a new Load Balancer. +type LoadBalancerCreateOptsPublicNet struct { + IPv4 *PrimaryIP + IPv6 *PrimaryIP +} + // LoadBalancerCreateOptsTargetServer holds options for specifying a server target // when creating a new Load Balancer. type LoadBalancerCreateOptsTargetServer struct { @@ -481,13 +515,35 @@ func (c *LoadBalancerClient) Create(ctx context.Context, opts LoadBalancerCreate } // Delete deletes a Load Balancer. +// +// Deprecated: Use [LoadBalancerClient.DeleteWithResult] instead. func (c *LoadBalancerClient) Delete(ctx context.Context, loadBalancer *LoadBalancer) (*Response, error) { + _, resp, err := c.DeleteWithResult(ctx, loadBalancer) + return resp, err +} + +// LoadBalancerDeleteResult is the result of a delete [LoadBalancer] operation. +type LoadBalancerDeleteResult struct { + Action *Action +} + +// DeleteWithResult deletes a Load Balancer and returns an [Action]. +func (c *LoadBalancerClient) DeleteWithResult(ctx context.Context, loadBalancer *LoadBalancer) (LoadBalancerDeleteResult, *Response, error) { const opPath = "/load_balancers/%d" ctx = ctxutil.SetOpPath(ctx, opPath) reqPath := fmt.Sprintf(opPath, loadBalancer.ID) - return deleteRequestNoResult(ctx, c.client, reqPath) + result := LoadBalancerDeleteResult{} + + respBody, resp, err := deleteRequest[schema.ActionGetResponse](ctx, c.client, reqPath) + if err != nil { + return result, resp, err + } + + result.Action = ActionFromSchema(respBody.Action) + + return result, resp, nil } func (c *LoadBalancerClient) addTarget(ctx context.Context, loadBalancer *LoadBalancer, reqBody schema.LoadBalancerActionAddTargetRequest) (*Action, *Response, error) { diff --git a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/load_balancer.go b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/load_balancer.go index fde918f37..062fdfb76 100644 --- a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/load_balancer.go +++ b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/load_balancer.go @@ -27,13 +27,17 @@ type LoadBalancerPublicNet struct { } type LoadBalancerPublicNetIPv4 struct { - IP string `json:"ip"` - DNSPtr string `json:"dns_ptr"` + ID int64 `json:"id"` + IP string `json:"ip"` + Blocked bool `json:"blocked"` + DNSPtr string `json:"dns_ptr"` } type LoadBalancerPublicNetIPv6 struct { - IP string `json:"ip"` - DNSPtr string `json:"dns_ptr"` + ID int64 `json:"id"` + IP string `json:"ip"` + Blocked bool `json:"blocked"` + DNSPtr string `json:"dns_ptr"` } type LoadBalancerPrivateNet struct { @@ -95,8 +99,10 @@ type LoadBalancerTarget struct { } type LoadBalancerTargetHealthStatus struct { - ListenPort int `json:"listen_port"` - Status string `json:"status"` + ListenPort int `json:"listen_port"` + Status string `json:"status"` + Detail *string `json:"detail"` + HTTPStatusCode *int `json:"http_status_code"` } type LoadBalancerTargetServer struct { @@ -262,6 +268,7 @@ type LoadBalancerCreateRequest struct { Targets []LoadBalancerCreateRequestTarget `json:"targets,omitempty"` Services []LoadBalancerCreateRequestService `json:"services,omitempty"` PublicInterface *bool `json:"public_interface,omitempty"` + PublicNet *LoadBalancerCreateRequestPublicNet `json:"public_net,omitempty"` Network *int64 `json:"network,omitempty"` } @@ -269,6 +276,11 @@ type LoadBalancerCreateRequestAlgorithm struct { Type string `json:"type"` } +type LoadBalancerCreateRequestPublicNet struct { + IPv4 int64 `json:"ipv4,omitempty"` + IPv6 int64 `json:"ipv6,omitempty"` +} + type LoadBalancerCreateRequestTarget struct { Type string `json:"type"` Server *LoadBalancerCreateRequestTargetServer `json:"server,omitempty"` diff --git a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema_gen.go b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema_gen.go index 65b9c608e..bcd8ac98a 100644 --- a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema_gen.go +++ b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema_gen.go @@ -58,6 +58,7 @@ You can find a documentation of goverter here: https://goverter.jmattheis.de/ // goverter:extend int64FromZone // goverter:extend floatingIPFromInt64 // goverter:extend int64FromFloatingIP +// goverter:extend int64FromPrimaryIP // goverter:extend storageBoxFromInt64 // goverter:extend int64FromStorageBox // goverter:extend mapFromFloatingIPDNSPtrSchema @@ -644,6 +645,13 @@ func int64FromFloatingIP(f *FloatingIP) int64 { return f.ID } +func int64FromPrimaryIP(f *PrimaryIP) int64 { + if f == nil { + return 0 + } + return f.ID +} + func storageBoxFromInt64(id int64) *StorageBox { return &StorageBox{ID: id} } diff --git a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_load_balancer_client_iface.go b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_load_balancer_client_iface.go index 16a635954..b9f36ec64 100644 --- a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_load_balancer_client_iface.go +++ b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_load_balancer_client_iface.go @@ -30,7 +30,11 @@ type ILoadBalancerClient interface { // Create creates a new Load Balancer. Create(ctx context.Context, opts LoadBalancerCreateOpts) (LoadBalancerCreateResult, *Response, error) // Delete deletes a Load Balancer. + // + // Deprecated: Use [LoadBalancerClient.DeleteWithResult] instead. Delete(ctx context.Context, loadBalancer *LoadBalancer) (*Response, error) + // DeleteWithResult deletes a Load Balancer and returns an [Action]. + DeleteWithResult(ctx context.Context, loadBalancer *LoadBalancer) (LoadBalancerDeleteResult, *Response, error) // AddServerTarget adds a server target to a Load Balancer. AddServerTarget(ctx context.Context, loadBalancer *LoadBalancer, opts LoadBalancerAddServerTargetOpts) (*Action, *Response, error) // RemoveServerTarget removes a server target from a Load Balancer. diff --git a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_schema_converter.go b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_schema_converter.go index aa9ef06fd..5e21ea787 100644 --- a/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_schema_converter.go +++ b/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_schema_converter.go @@ -254,6 +254,11 @@ func (c *converterImpl) LoadBalancerTargetHealthStatusFromSchema(source schema.L var hcloudLoadBalancerTargetHealthStatus LoadBalancerTargetHealthStatus hcloudLoadBalancerTargetHealthStatus.ListenPort = source.ListenPort hcloudLoadBalancerTargetHealthStatus.Status = LoadBalancerTargetHealthStatusStatus(source.Status) + if source.Detail != nil { + hcloudLoadBalancerTargetHealthStatusDetail := LoadBalancerTargetHealthStatusDetail(*source.Detail) + hcloudLoadBalancerTargetHealthStatus.Detail = &hcloudLoadBalancerTargetHealthStatusDetail + } + hcloudLoadBalancerTargetHealthStatus.HTTPStatusCode = source.HTTPStatusCode return hcloudLoadBalancerTargetHealthStatus } func (c *converterImpl) LoadBalancerTargetServerFromSchema(source schema.LoadBalancerTargetServer) LoadBalancerTargetServer { @@ -697,6 +702,7 @@ func (c *converterImpl) SchemaFromLoadBalancerCreateOpts(source LoadBalancerCrea } } schemaLoadBalancerCreateRequest.PublicInterface = source.PublicInterface + schemaLoadBalancerCreateRequest.PublicNet = c.pHcloudLoadBalancerCreateOptsPublicNetToPSchemaLoadBalancerCreateRequestPublicNet(source.PublicNet) schemaLoadBalancerCreateRequest.Network = c.pHcloudNetworkToPInt64(source.Network) return schemaLoadBalancerCreateRequest } @@ -761,6 +767,11 @@ func (c *converterImpl) SchemaFromLoadBalancerTargetHealthStatus(source LoadBala var schemaLoadBalancerTargetHealthStatus schema.LoadBalancerTargetHealthStatus schemaLoadBalancerTargetHealthStatus.ListenPort = source.ListenPort schemaLoadBalancerTargetHealthStatus.Status = string(source.Status) + if source.Detail != nil { + xstring := string(*source.Detail) + schemaLoadBalancerTargetHealthStatus.Detail = &xstring + } + schemaLoadBalancerTargetHealthStatus.HTTPStatusCode = source.HTTPStatusCode return schemaLoadBalancerTargetHealthStatus } func (c *converterImpl) SchemaFromLoadBalancerType(source *LoadBalancerType) schema.LoadBalancerType { @@ -1883,13 +1894,17 @@ func (c *converterImpl) hcloudLoadBalancerProtectionToSchemaLoadBalancerProtecti } func (c *converterImpl) hcloudLoadBalancerPublicNetIPv4ToSchemaLoadBalancerPublicNetIPv4(source LoadBalancerPublicNetIPv4) schema.LoadBalancerPublicNetIPv4 { var schemaLoadBalancerPublicNetIPv4 schema.LoadBalancerPublicNetIPv4 + schemaLoadBalancerPublicNetIPv4.ID = source.ID schemaLoadBalancerPublicNetIPv4.IP = stringFromIP(source.IP) + schemaLoadBalancerPublicNetIPv4.Blocked = source.Blocked schemaLoadBalancerPublicNetIPv4.DNSPtr = source.DNSPtr return schemaLoadBalancerPublicNetIPv4 } func (c *converterImpl) hcloudLoadBalancerPublicNetIPv6ToSchemaLoadBalancerPublicNetIPv6(source LoadBalancerPublicNetIPv6) schema.LoadBalancerPublicNetIPv6 { var schemaLoadBalancerPublicNetIPv6 schema.LoadBalancerPublicNetIPv6 + schemaLoadBalancerPublicNetIPv6.ID = source.ID schemaLoadBalancerPublicNetIPv6.IP = stringFromIP(source.IP) + schemaLoadBalancerPublicNetIPv6.Blocked = source.Blocked schemaLoadBalancerPublicNetIPv6.DNSPtr = source.DNSPtr return schemaLoadBalancerPublicNetIPv6 } @@ -2263,6 +2278,16 @@ func (c *converterImpl) pHcloudLoadBalancerAlgorithmToPSchemaLoadBalancerCreateR } return pSchemaLoadBalancerCreateRequestAlgorithm } +func (c *converterImpl) pHcloudLoadBalancerCreateOptsPublicNetToPSchemaLoadBalancerCreateRequestPublicNet(source *LoadBalancerCreateOptsPublicNet) *schema.LoadBalancerCreateRequestPublicNet { + var pSchemaLoadBalancerCreateRequestPublicNet *schema.LoadBalancerCreateRequestPublicNet + if source != nil { + var schemaLoadBalancerCreateRequestPublicNet schema.LoadBalancerCreateRequestPublicNet + schemaLoadBalancerCreateRequestPublicNet.IPv4 = int64FromPrimaryIP((*source).IPv4) + schemaLoadBalancerCreateRequestPublicNet.IPv6 = int64FromPrimaryIP((*source).IPv6) + pSchemaLoadBalancerCreateRequestPublicNet = &schemaLoadBalancerCreateRequestPublicNet + } + return pSchemaLoadBalancerCreateRequestPublicNet +} func (c *converterImpl) pHcloudLoadBalancerCreateOptsServiceHTTPToPSchemaLoadBalancerCreateRequestServiceHTTP(source *LoadBalancerCreateOptsServiceHTTP) *schema.LoadBalancerCreateRequestServiceHTTP { var pSchemaLoadBalancerCreateRequestServiceHTTP *schema.LoadBalancerCreateRequestServiceHTTP if source != nil { @@ -2981,13 +3006,17 @@ func (c *converterImpl) schemaLoadBalancerProtectionToHcloudLoadBalancerProtecti } func (c *converterImpl) schemaLoadBalancerPublicNetIPv4ToHcloudLoadBalancerPublicNetIPv4(source schema.LoadBalancerPublicNetIPv4) LoadBalancerPublicNetIPv4 { var hcloudLoadBalancerPublicNetIPv4 LoadBalancerPublicNetIPv4 + hcloudLoadBalancerPublicNetIPv4.ID = source.ID hcloudLoadBalancerPublicNetIPv4.IP = ipFromString(source.IP) + hcloudLoadBalancerPublicNetIPv4.Blocked = source.Blocked hcloudLoadBalancerPublicNetIPv4.DNSPtr = source.DNSPtr return hcloudLoadBalancerPublicNetIPv4 } func (c *converterImpl) schemaLoadBalancerPublicNetIPv6ToHcloudLoadBalancerPublicNetIPv6(source schema.LoadBalancerPublicNetIPv6) LoadBalancerPublicNetIPv6 { var hcloudLoadBalancerPublicNetIPv6 LoadBalancerPublicNetIPv6 + hcloudLoadBalancerPublicNetIPv6.ID = source.ID hcloudLoadBalancerPublicNetIPv6.IP = ipFromString(source.IP) + hcloudLoadBalancerPublicNetIPv6.Blocked = source.Blocked hcloudLoadBalancerPublicNetIPv6.DNSPtr = source.DNSPtr return hcloudLoadBalancerPublicNetIPv6 } diff --git a/vendor/modules.txt b/vendor/modules.txt index 8dec6feab..ce5a2766c 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -485,7 +485,7 @@ github.com/hashicorp/errwrap # github.com/hashicorp/go-multierror v1.1.1 ## explicit; go 1.13 github.com/hashicorp/go-multierror -# github.com/hetznercloud/hcloud-go/v2 v2.49.0 +# github.com/hetznercloud/hcloud-go/v2 v2.52.0 ## explicit; go 1.25.0 github.com/hetznercloud/hcloud-go/v2/hcloud github.com/hetznercloud/hcloud-go/v2/hcloud/exp/ctxutil