hetznercloud 6.0.0 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +3 -3
- data/lib/hcloud/concerns/creatable.rb +24 -5
- data/lib/hcloud/entities/public_net.rb +12 -0
- data/lib/hcloud/resources/load_balancer.rb +1 -1
- data/lib/hcloud/resources/server.rb +4 -1
- data/lib/hcloud/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c97f9307e8cae23c94b06c853eab8432a5d571fc90b13c527a0fa8a029038143
|
|
4
|
+
data.tar.gz: da9e9aecda35dbdca6a6b1e1047d4ff957ca63a649f1a3a52b25d31c42302f48
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: feb065fa72661720caeefff45ea650374bdb71919a7e901102cfcfe79f386b80b9fde9e1700112052041ec5f4e7cc7e25eec3c6ced0e5dd15f2bbf5eb4872e37
|
|
7
|
+
data.tar.gz: 61fe9582cdc7681c567c9da110c1028a0c713f3cd3fc1f8a59ff00a0495a1e82e82070e74e3514f738eacc7949513dd68e2c35d761883cbb464015dc63b9d3ba
|
data/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,17 @@
|
|
|
10
10
|
|
|
11
11
|
### Fixed
|
|
12
12
|
|
|
13
|
+
## HCloud v6.1.0 (2026-07-10)
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- Add `enable_ipv4` and `enable_ipv6` attributes to `HCloud::PublicNet`
|
|
18
|
+
- Add `public_net` to `HCloud::Server` creatable attributes
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Fix a bug where name-only SSH keys serialize incorrectly
|
|
23
|
+
|
|
13
24
|
## HCloud v6.0.0 (2026-06-09)
|
|
14
25
|
|
|
15
26
|
### Added
|
data/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|

|
|
4
4
|

|
|
5
5
|
|
|
6
|
-
Unofficial Ruby integration with the [Hetzner Cloud API](https://docs.hetzner.cloud/).
|
|
6
|
+
Unofficial Ruby integration with the [Hetzner Cloud API](https://docs.hetzner.cloud/). Refer to the [API specification](https://docs.hetzner.cloud/reference/cloud) for more details.
|
|
7
7
|
|
|
8
8
|
## Installation
|
|
9
9
|
|
|
@@ -94,8 +94,8 @@ The following table lists the Hetzner Cloud API endpoints that are currently imp
|
|
|
94
94
|
| [Pricing](lib/hcloud/resources/pricing.rb) | Implemented |
|
|
95
95
|
| [RRSets](lib/hcloud/resources/rrset.rb) | Implemented |
|
|
96
96
|
| [RRSet Actions](lib/hcloud/resources/rrset.rb) | Implemented |
|
|
97
|
-
| [Servers](lib/hcloud/resources/server.rb) |
|
|
98
|
-
| [Server Actions](lib/hcloud/resources/server.rb) |
|
|
97
|
+
| [Servers](lib/hcloud/resources/server.rb) | Implemented |
|
|
98
|
+
| [Server Actions](lib/hcloud/resources/server.rb) | Implemented |
|
|
99
99
|
| [Server Types](lib/hcloud/resources/server_type.rb) | Implemented |
|
|
100
100
|
| [SSH Keys](lib/hcloud/resources/ssh_key.rb) | Implemented |
|
|
101
101
|
| [Storage Boxes](lib/hcloud/resources/storage_box.rb) | Implemented |
|
|
@@ -42,19 +42,38 @@ module HCloud
|
|
|
42
42
|
[]
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
# Convert creatable_attributes into a key-value list
|
|
46
|
-
# rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
|
47
45
|
def creatable_params
|
|
48
46
|
# Split simple and nested attributes
|
|
49
47
|
nested_attributes, simple_attributes = creatable_attributes.partition { |a| a.respond_to? :each }
|
|
50
48
|
|
|
49
|
+
serialize_simple_attributes(simple_attributes)
|
|
50
|
+
.merge(serialize_nested_attributes(nested_attributes))
|
|
51
|
+
.compact_blank
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def serialize_simple_attributes(simple_attributes)
|
|
51
57
|
attributes
|
|
52
58
|
.slice(*simple_attributes.map(&:to_s))
|
|
53
59
|
.transform_values { |v| v&.send_wrap { |o| o.try(:to_h) || o } || v&.send_wrap(:to_s) }
|
|
54
|
-
.merge(nested_attributes.reduce(&:merge).to_h { |k, v| [k.to_s, Array(v).filter_map { |w| send(k)&.send_wrap(w) }.first] })
|
|
55
|
-
.compact_blank
|
|
56
60
|
end
|
|
57
|
-
|
|
61
|
+
|
|
62
|
+
def serialize_nested_attributes(nested_attributes)
|
|
63
|
+
return {} if nested_attributes.empty?
|
|
64
|
+
|
|
65
|
+
nested_attributes.reduce(&:merge).to_h do |k, v|
|
|
66
|
+
[k.to_s, serialize_nested_attribute(send(k), v)]
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def serialize_nested_attribute(value, fallbacks)
|
|
71
|
+
if value.is_a?(Array)
|
|
72
|
+
value.map { |item| Array(fallbacks).filter_map { |w| item&.send_wrap(w) }.first }
|
|
73
|
+
else
|
|
74
|
+
Array(fallbacks).filter_map { |w| value&.send_wrap(w) }.first
|
|
75
|
+
end
|
|
76
|
+
end
|
|
58
77
|
end
|
|
59
78
|
|
|
60
79
|
class_methods do
|
|
@@ -6,5 +6,17 @@ module HCloud
|
|
|
6
6
|
attribute :floating_ips, :floating_ip, array: true, default: -> { [] }
|
|
7
7
|
attribute :ipv4, :ipv4
|
|
8
8
|
attribute :ipv6, :ipv6
|
|
9
|
+
|
|
10
|
+
attribute :enable_ipv4, :boolean
|
|
11
|
+
attribute :enable_ipv6, :boolean
|
|
12
|
+
|
|
13
|
+
def to_h
|
|
14
|
+
{
|
|
15
|
+
enable_ipv4: enable_ipv4,
|
|
16
|
+
enable_ipv6: enable_ipv6,
|
|
17
|
+
ipv4: ipv4&.id,
|
|
18
|
+
ipv6: ipv6&.id,
|
|
19
|
+
}.compact
|
|
20
|
+
end
|
|
9
21
|
end
|
|
10
22
|
end
|
|
@@ -184,7 +184,7 @@ module HCloud
|
|
|
184
184
|
# TODO: use only for creation
|
|
185
185
|
attribute :public_interface, :boolean
|
|
186
186
|
|
|
187
|
-
attribute :private_net, :load_balancer_private_net
|
|
187
|
+
attribute :private_net, :load_balancer_private_net, array: true, default: -> { [] }
|
|
188
188
|
attribute :public_net, :load_balancer_public_net
|
|
189
189
|
|
|
190
190
|
attribute :services, :service, array: true, default: -> { [] }
|
|
@@ -44,6 +44,9 @@ module HCloud
|
|
|
44
44
|
# firewall = HCloud::Server.create(name: "my_server", image: "debian-11", server_type: "cx11")
|
|
45
45
|
# # => #<HCloud::Server id: 1, ...>
|
|
46
46
|
#
|
|
47
|
+
# # Create a server with a private IP only
|
|
48
|
+
# server = HCloud::Server.create(name: "my_server", image: "debian-11", server_type: "cx11", public_net: { enable_ipv4: false, enable_ipv6: false }, networks: [network_id])
|
|
49
|
+
#
|
|
47
50
|
# == Update server
|
|
48
51
|
#
|
|
49
52
|
# server = HCloud::Server.find(1)
|
|
@@ -168,7 +171,7 @@ module HCloud
|
|
|
168
171
|
action :request_console
|
|
169
172
|
|
|
170
173
|
def creatable_attributes
|
|
171
|
-
[:name, :automount, :start_after_create, :user_data, :labels, datacenter: [:id, :name], image: [:id, :name], location: [:id, :name], server_type: [:id, :name], ssh_keys: [:id, :name], firewalls: :id, networks: :id, volumes: :id]
|
|
174
|
+
[:name, :automount, :start_after_create, :user_data, :labels, :public_net, datacenter: [:id, :name], image: [:id, :name], location: [:id, :name], server_type: [:id, :name], ssh_keys: [:id, :name], firewalls: :id, networks: :id, volumes: :id]
|
|
172
175
|
end
|
|
173
176
|
|
|
174
177
|
def updatable_attributes
|
data/lib/hcloud/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hetznercloud
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 6.
|
|
4
|
+
version: 6.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Florian Dejonckheere
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-07-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activemodel
|