hetznercloud / hcloud-go

A Go library for the Hetzner Cloud API
https://pkg.go.dev/github.com/hetznercloud/hcloud-go/v2/hcloud
MIT License
371 stars 45 forks source link

feat: new APIs for traffic pricings [release-1.x] #496

Closed apricote closed 1 month ago

apricote commented 1 month ago

The API has been updated to provide a better insight and more flexibility for displaying the pricing of traffic for servers and load balancers.

In addition to the new fields, the old fields are deprecated and will be set to null in the API on 2024-08-05.

As far as we could tell they are not widely used in Open Source code, please check if you are using them in any private code. Some linters automatically check for deprecated fields, if you use golangci-lint this is provided by the staticcheck linter.

You can learn more about this change in our changelog.

Upgrading

Server Type Included Traffic

If you were using the field hcloud.ServerType.IncludedTraffic, you can now get the information through hcloud.ServerType.Pricings:

func main() {
    // previous
    includedTraffic := serverType.IncludedTraffic

    // now
    locationOfInterest := "fsn1"
    var includedTraffic uint64
    for _, price := range serverType.Pricings {
        if price.Location.Name == locationOfInterest {
            includedTraffic = price.IncludedTraffic
            break
        }
    }
}

Traffic Prices

If you were using the field hcloud.Pricing.Traffic, you can now get the information through hcloud.Pricing.ServerTypes or hcloud.Pricing.LoadBalancerTypes:

func main() {
    // previous
    trafficPrice := pricing.Traffic

    // now
    serverTypeOfInterest := "cx22"
    locationOfInterest := "fsn1"

    var trafficPrice hcloud.Price
    for _, serverTypePricings := range pricing.ServerTypes {
        if serverTypePricings.ServerType.Name == serverTypeOfInterest {
            for _, price := range serverTypePricings {
               if price.Location.Name == locationOfInterest {
                   trafficPrice = price.PerTBTraffic
                   break
               }
            }
        }
    }
}

release-please Info

BEGIN_COMMIT_OVERRIDE feat(server-type): new traffic price fields feat(load-balancer-type): new traffic price fields feat(pricing): mark traffic field as deprecated feat(server-type): mark included traffic field as deprecated END_COMMIT_OVERRIDE