hetznercloud 5.1.0 → 6.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 75059c7c37ac0cb1f885b4af4f6c02567f926bb22ce3f77985456219da87546d
4
- data.tar.gz: 3b02d023297bc5a4376901591f790b2d2009ba0ec0f8add1c51da405cee1d0ff
3
+ metadata.gz: 2cb259d9e173161e4ed87cdfbde11c7318e54b13c09a50ab9906ea453278534b
4
+ data.tar.gz: 70a47ad251eb36381d894140210d2cdabd4bba98e45a6530303e46604f030bb7
5
5
  SHA512:
6
- metadata.gz: 33a26943527f4e9136c21699670f01771f92d3bee9fe50c64347b2c33562005f692c9f1c3784c6d34e3b64ca8c5f956793678c698b4b89b2e6dc4bac66c99632
7
- data.tar.gz: 7e9768db1f0e803dca01b1d8f698cc6c49a1f6737544cc43c88e64079003a2ff31889dfcb1b7939b2ad7408d08a61761d05c842efae64955cce7265fa97b1956
6
+ metadata.gz: 8413d51176613da3405efc6585f80c1ffd84dfecc3fd06fa95772d8b897efda9945519c3504951e63b0b22411bc66b91b50c08911e448c94ebb51be47c95ba64
7
+ data.tar.gz: e12dd9605bea860120a75ceb2ea1f0fad5c9539e9bb58f4d6567e4b89d3a336b6563a20edf210549509850c49df9e1f08ff0bfc453bf91b4982c9be9625ff822
data/CHANGELOG.md CHANGED
@@ -10,6 +10,26 @@
10
10
 
11
11
  ### Fixed
12
12
 
13
+ ## HCloud v6.0.0 (2026-06-09)
14
+
15
+ ### Added
16
+
17
+ - Add `deprecation` attribute to `HCloud::LoadBalancerType`
18
+ - Add `MustBeUnassigned` error class
19
+ - Add `DeprecatedApiEndpoint` error class
20
+
21
+ ### Changed
22
+
23
+ - Deprecate `HCloud::LoadBalancerType#deprecated`
24
+ - Deprecate `HCloud::Datacenter`
25
+ - Replace `GET /<resource>/{id}/actions/{action_id}` with `GET /actions/{action_id}`
26
+
27
+ ### Removed
28
+
29
+ - Remove `HCloud::Action.all`, `.first`, `.last`, `.count`, `.where`, `.sort`, `.each`, `.empty?`, `.any?`
30
+
31
+ ### Fixed
32
+
13
33
  ## HCloud v5.1.0 (2026-03-03)
14
34
 
15
35
  ### Added
@@ -14,7 +14,7 @@ module HCloud
14
14
  def find(id)
15
15
  Action.new resource
16
16
  .client
17
- .get("#{resource.resource_path}/#{resource.id}/actions/#{id}")
17
+ .get("/actions/#{id}")
18
18
  .fetch(:action)
19
19
  end
20
20
 
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ # @!visibility private
5
+ module DeprecatedResource
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ class_attribute :_deprecated, default: false
10
+ class_attribute :deprecated_since
11
+ end
12
+
13
+ class_methods do # rubocop:disable Metrics/BlockLength
14
+ def deprecated(since: nil)
15
+ self._deprecated = true
16
+ self.deprecated_since = Date.parse(since) if since
17
+
18
+ [:find, :all, :create].each do |method|
19
+ define_singleton_method(method) do |*args, **kwargs, &block|
20
+ warn "[DEPRECATION] Resource \"#{name}\" is deprecated since #{deprecated_since.iso8601}." if deprecated?
21
+
22
+ super(*args, **kwargs, &block)
23
+ end
24
+ end
25
+ end
26
+
27
+ def deprecated?
28
+ _deprecated
29
+ end
30
+
31
+ # Wrap instance methods as they are defined (e.g. reload added by queryable)
32
+ def method_added(method_name)
33
+ super
34
+
35
+ return unless _deprecated
36
+ return unless [:reload, :update, :delete].include? method_name
37
+
38
+ return if @_wrapping_deprecated_instance
39
+
40
+ @_wrapping_deprecated_instance = true
41
+
42
+ original = instance_method(method_name)
43
+
44
+ define_method(method_name) do |*args, **kwargs, &block|
45
+ warn "[DEPRECATION] Resource \"#{self.class.name}\" is deprecated since #{self.class.deprecated_since.iso8601}." if self.class.deprecated?
46
+
47
+ original.bind_call(self, *args, **kwargs, &block)
48
+ end
49
+
50
+ @_wrapping_deprecated_instance = false
51
+ end
52
+ end
53
+ end
54
+ end
data/lib/hcloud/errors.rb CHANGED
@@ -25,6 +25,7 @@ module HCloud
25
25
  class ActionFailed < Error; end
26
26
  class CloudResourceIPNotAllowed < Error; end
27
27
  class Conflict < Error; end
28
+ class DeprecatedApiEndpoint < Error; end
28
29
  class FirewallAlreadyApplied < Error; end
29
30
  class FirewallAlreadyRemoved < Error; end
30
31
  class FirewallResourceNotFound < Error; end
@@ -40,6 +41,7 @@ module HCloud
40
41
  class LoadBalancerPublicInterfaceDisabled < Error; end
41
42
  class Locked < Error; end
42
43
  class Maintenance < Error; end
44
+ class MustBeUnassigned < Error; end
43
45
  class NetworksOverlap < Error; end
44
46
  class NoSpaceLeftInLocation < Error; end
45
47
  class NoSubnetAvailable < Error; end
@@ -7,6 +7,7 @@ module HCloud
7
7
 
8
8
  include Concerns
9
9
  include DeprecatedAttributes
10
+ include DeprecatedResource
10
11
  include DynamicAttributes
11
12
  include InspectAttributes
12
13
  include Subresource
@@ -4,27 +4,6 @@ module HCloud
4
4
  ##
5
5
  # Represents an action
6
6
  #
7
- # == List all actions
8
- #
9
- # HCloud::Action.all
10
- # # => [#<HCloud::Action id: 1, ...>, ...]
11
- #
12
- # == Sort actions
13
- #
14
- # HCloud::Action.sort(command: :desc)
15
- # # => [#<HCloud::Action id: 1, ...>, ...]
16
- #
17
- # HCloud::Action.sort(:id, command: :asc)
18
- # # => [#<HCloud::Action id: 1, ...>, ...]
19
- #
20
- # == Search actions
21
- #
22
- # HCloud::Action.where(command: "my_action")
23
- # # => #<HCloud::Action id: 1, ...>
24
- #
25
- # HCloud::Action.where(status: "success")
26
- # # => #<HCloud::Action id: 1, ...>
27
- #
28
7
  # == Find action by ID
29
8
  #
30
9
  # HCloud::Action.find(1)
@@ -46,11 +25,7 @@ module HCloud
46
25
  attribute :resources, :resource, array: true, default: -> { [] }
47
26
 
48
27
  class << self
49
- def all
50
- warn "[DEPRECATION] Starting on 1 October 2023, this endpoint will no longer be available. After that, it won't be possible anymore to list all actions across all resources. As an alternative, you can use the action endpoints of a specific resource to list all actions (e.g. of all servers or of all Load Balancers)."
51
-
52
- super
53
- end
28
+ undef_method :all, :first, :last, :count, :where, :sort, :each, :empty?, :any?
54
29
  end
55
30
  end
56
31
  end
@@ -33,6 +33,8 @@ module HCloud
33
33
  # # => #<HCloud::Datacenter id: 2, ...>
34
34
  #
35
35
  class Datacenter < Resource
36
+ deprecated since: "2026-10-01"
37
+
36
38
  queryable
37
39
 
38
40
  attribute :id, :integer
@@ -33,6 +33,8 @@ module HCloud
33
33
 
34
34
  attribute :prices, :price, array: true, default: -> { [] }
35
35
 
36
- attribute :deprecated, :datetime
36
+ attribute :deprecation, :deprecation
37
+
38
+ attribute :deprecated, :datetime, deprecated: true
37
39
  end
38
40
  end
@@ -3,8 +3,8 @@
3
3
  module HCloud
4
4
  # @!visibility private
5
5
  module Version
6
- MAJOR = 5
7
- MINOR = 1
6
+ MAJOR = 6
7
+ MINOR = 0
8
8
  PATCH = 0
9
9
  PRE = nil
10
10
 
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: 5.1.0
4
+ version: 6.0.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-04-03 00:00:00.000000000 Z
11
+ date: 2026-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -102,6 +102,7 @@ files:
102
102
  - lib/hcloud/concerns/creatable.rb
103
103
  - lib/hcloud/concerns/deletable.rb
104
104
  - lib/hcloud/concerns/deprecated_attributes.rb
105
+ - lib/hcloud/concerns/deprecated_resource.rb
105
106
  - lib/hcloud/concerns/dynamic_attributes.rb
106
107
  - lib/hcloud/concerns/inspect_attributes.rb
107
108
  - lib/hcloud/concerns/labelable.rb