Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,10 @@ jobs:
run: cargo generate-lockfile

- name: cargo llvm-cov
run: cargo llvm-cov --locked --no-fail-fast --all-features --lcov --output-path lcov.info
run: cargo llvm-cov --locked --no-fail-fast --all-features --features _tests_order_servers --lcov --output-path lcov.info
env:
HROBOT_USERNAME: ${{ secrets.HROBOT_USERNAME }}
HROBOT_PASSWORD: ${{ secrets.HROBOT_PASSWORD }}
HETZNER_INTEGRATION_TEST_STORAGEBOX_ID: ${{ secrets.HETZNER_INTEGRATION_TEST_STORAGEBOX_ID }}

- name: Record Rust version
run: echo "RUST=$(rustc --version)" >> "$GITHUB_ENV"
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
/target
.env
Cargo.lock
provisioned-server
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

⚠️ indicates breaking changes.

## Unreleased

* ⚠️ Removed Storage Box APis, since they are being migrated to Hetzner Cloud console. See [hcloud-rust](https://github.com/HenningHolmDE/hcloud-rust) for a replacement.
* ⚠️ #13: Added support for firewall rules supporting multiple disjoint port ranges, e.g.: `80,443,8080-8081`. Because Firewall Rules now use `Vec<PortRange>` instead of `Option<PortRange>` this is considered a breaking change.

* Fixed intermittent errors where the Hetzner API would close connections mid-request due to mismatched client pool idle times.
* Added `Default` implementation for server `Reset` (Hardware).

## 6.1.1

* Updated `thiserror` to 2.0
Expand Down
5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,8 @@ tracing-test = { version = "0.2.4", features = ["no-env-filter"] }
tokio = { version = "1.29.1", features = ["macros", "rt-multi-thread"] }
dotenvy = "0.15"
serial_test = { version = "3.0.0", features = ["file_locks"] }


[features]
# This is only ever used during testing to order/cancel servers as part of the test procedure.
_tests_order_servers = []
26 changes: 1 addition & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -172,30 +172,7 @@ Detailed API overview.
- [x] List recent addon transactions.[^1]
- [x] Get specific addon transaction information.[^1]
- [x] Order addon for server.
- [x] **Storage Box.**
- [x] List storageboxes.
- [x] Get specific storage box.
- [x] Change storage box password.
- [x] Toggle storage box services.
- [x] Enable/disable Samba
- [x] Enable/disable WebDAV
- [x] Enable/disable SSH
- [x] Enable/disable External reachability
- [x] Enable/disable snapshot directory visibility.
- [x] **Snapshots.**
- [x] List storagebox snapshots.
- [x] Create storagebox snapshot.
- [x] Delete storagebox snapshot.
- [x] Revert storagebox to snapshot.
- [x] Change comment for snapshot.
- [x] Get storagebox snapshot plan.
- [x] Edit storagebox snapshot plan.
- [x] **Subaccounts.**
- [x] List subaccounts.
- [x] Create subaccount.
- [x] Update subaccount configuration.
- [x] Delete subaccount.
- [x] Change subaccount password.
- [ ] **Storage Box.** Has been migrated to Hetzner Cloud, please see [hcloud-rust](https://github.com/HenningHolmDE/hcloud-rust)
- [x] **Firewall.**
- [x] Get firewall configuration for server.
- [x] Apply firewall configuration to server.
Expand Down Expand Up @@ -240,4 +217,3 @@ s

They interact ⚠️ **DESTRUCTIVELY** ⚠️ with the resources provided through the following environment variables:

* `HETZNER_INTEGRATION_TEST_STORAGEBOX_ID` specifies a pre-allocated storagebox resource which Storagebox-related tests are run against.
8 changes: 5 additions & 3 deletions errata.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,14 +72,16 @@ This document aims to list some of the discrepancies, oddities, unexpected behav
* Active boot configuration options contain a `boot_time` field, which presumably indicates the time at which this boot configuration was booted into.
I say presumably because the field is always `null` if the system has been enabled, but the server hasn't been rebooted. I haven't had a chance to test this yet.

### Firewall

* Both the Hetzner Firewall and the templates for it, appear to support specifying multiple comma-delimited ports & ranges, but this is not explicitly stated anywhere.
Because the Hetzner Robot firewalls are limited to 10 rules, this could be a big feature for use cases that might otherwise hit this limit.


## Typos & minor mistakes
* [IP Cancellation examples](https://robot.hetzner.com/doc/webservice/en.html#get-ip-ip-cancellation) indicate that the returned structure contains a field
named `cancellation-date` (note the hyphen), but the documentation and every other field uses underscores.

* [Update Snapshot Plan example](https://robot.hetzner.com/doc/webservice/en.html#post-storagebox-storagebox-id-snapshotplan) points to `snapshot/{snapshot}/comment`
as the target URL, when it should be `snapshot/{snapshot}/snapshotplan`.

* [vSwitch Connected Servers](https://robot.hetzner.com/doc/webservice/en.html#get-vswitch) actually have the status "processing" when neither ready nor failed, not "in process" as claimed.

* [Rate Limit Exceeded](https://robot.hetzner.com/doc/webservice/en.html#errors) errors claim to have a `max_request` field, but this field is actually called `max_requests` (plural).
Loading
Loading