Skip to content

Releases: hetznercloud/hcloud-python

v2.13.0

19 Dec 15:37
72a76a0

Choose a tag to compare

Phasing out datacenters in Primary IPs and Servers

We added a new location property to the request body and response of Servers and Primary IPs. The same data was previously present under datacenter.location.

We deprecated the datacenter property in the request body and response of Servers and Primary IPs. The removal will happen after 1 July 2026.

See our changelog for more details.

Features

  • add per primary ip actions list operations (#608)
  • deprecate datacenter in primary ips and servers (#609)

v2.12.0

10 Dec 11:10
98dce77

Choose a tag to compare

Storage Box API Experimental

This release adds support for the Storage Box API.

The Storage Box integration will be introduced as an experimental feature. This experimental phase is expected to last at least until 12 January 2026. During this period, upcoming minor releases of the project may include breaking changes to features related to Storage Boxes.

This release includes all changes from the recent Storage Box API changelog entry.

Examples

response = client.storage_boxes.create(
    name="string",
    location=Location(name="fsn1"),
    storage_box_type=StorageBoxType(name="bx11"),
    labels={
        "environment": "prod",
        "example.com/my": "label",
        "just-a-key": "",
    },
    password="my-password",
    access_settings=StorageBoxAccessSettings(
        reachable_externally=False,
        samba_enabled=False,
        ssh_enabled=False,
        webdav_enabled=False,
        zfs_enabled=False,
    ),
    ssh_keys=[SSHKey(public_key="ssh-rsa AAAjjk76kgf...Xt")],
)

response.action.wait_until_finished()

storage_box = response.storage_box

Features

  • add update rrset records action to zone client (#597)
  • add support for Storage Boxes (#524)

v2.11.1

14 Nov 13:02
f2d4bcb

Choose a tag to compare

Bug Fixes

  • support reloading sub resource bound models (#590)

v2.11.0

10 Nov 10:43
8e32b04

Choose a tag to compare

DNS API is now generally available

The DNS API is now generally available, as well as support for features in this project that are related to the DNS API.

To migrate existing zones to the new DNS API, see the DNS migration guide.

See the changelog for more details.

Features

  • DNS support is now generally available (#581)

v2.10.0

07 Nov 13:42
79dfbbe

Choose a tag to compare

Features

  • exp: add zone format txt record helper (#578)
  • add server and load balancer private_net_for helper method (#580)

v2.9.0

13 Oct 08:54
c6aadce

Choose a tag to compare

Features

  • support python 3.14 (#566)
  • drop support for python 3.9 (#574)

v2.8.0

07 Oct 08:19
36670bd

Choose a tag to compare

DNS API Beta

This release adds support for the new DNS API.

The DNS API is currently in beta, which will likely end on 10 November 2025. After the beta ended, it will no longer be possible to create new zones in the old DNS system. See the DNS Beta FAQ for more details.

Future minor releases of this project may include breaking changes for features that are related to the DNS API.

See the DNS API Beta changelog for more details.

Examples

resp = client.zones.create(
    name="example.com",
    mode="primary",
    labels={"key": "value"},
    rrsets=[
        ZoneRRSet(
            name="@",
            type="A",
            records=[
                ZoneRecord(value="201.180.75.2", comment="server1")
            ],
        )
    ],
)

resp.action.wait_until_finished()
zone = resp.zone

Features

  • add new ip_range param to load balancer attach_to_network (#562)
  • add new ip_range param to server attach_to_network (#561)
  • support the new DNS API (#568)

Bug Fixes

  • source_ips property is optional in firewall rule (#567)

v2.7.0

26 Sep 08:03
bbee5a7

Choose a tag to compare

Server Types now depend on Locations.

  • We added a new locations property to the Server Types resource. The new property defines a list of supported Locations and additional per Locations details such as deprecations information.

  • We deprecated the deprecation property from the Server Types resource. The property will gradually be phased out as per Locations deprecations are being announced. Please use the new per Locations deprecation information instead.

See our changelog for more details.

Upgrading

# Before
def validate_server_type(server_type: ServerType):
    if server_type.deprecation is not None:
        raise ValueError(f"server type {server_type.name} is deprecated")
# After
def validate_server_type(server_type: ServerType, location: Location):
    found = [o for o in server_type.locations if location.name == o.location.name]
    if not found:
        raise ValueError(
            f"server type {server_type.name} is not supported in location {location.name}"
        )

    server_type_location = found[0]

    if server_type_location.deprecation is not None:
        raise ValueError(
            f"server type {server_type.name} is deprecated in location {location.name}"
        )

Features

  • per location server types (#558)

v2.6.0

08 Sep 10:13
dc3b3eb

Choose a tag to compare

Features

  • add category property to server type (#549)

Bug Fixes

  • rename ClientEntityBase to ResourceClientBase (#532)

v2.5.4

09 Jul 09:50
ca250a9

Choose a tag to compare

Bug Fixes

  • typo in LoadBalancerHealthCheckHttp class name (#511)
  • equality for some domain classes (#510)
  • use valid license identifier (SPDX) (#514)