hetznercloud 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7177e5022ba3e3023d0d5537ba6c1784e6b05dcd0e378cf134f937057842e134
4
- data.tar.gz: 6e7610f8b00c41b91993bcae03f1685494510718b3f063cb16ccc26faaa956bc
3
+ metadata.gz: 7de89d0a6117d05ba5b57c40b41601aecb419a6ca8c9bd5b639117051a6501e4
4
+ data.tar.gz: 9b3a8d86043d7c2a7622816f987b4bfa7c2584b2fe0b2535e8e3300f4a5117ab
5
5
  SHA512:
6
- metadata.gz: 01ca0bfe1c72a5a4d49a9c33e4c4b0d574d69879bac68b94de3ad435fce3b3fa90319285c30808c08b7bc87dac08b3a314ab81f3018aac7fd360167c3a69e322
7
- data.tar.gz: 987eacdba19a6ba38de99242f2d54612c5432b9a0309b91193cc0f4b5f59d60aaa96daedda2d81301fc974f1a368c20660a74d06a37b74849139e647ae8d43c2
6
+ metadata.gz: ae331dfc72e7baf0bda9b6e6ad9354630166d4faa9169538d56f69c3d5117703955df6d5b7f10851e5f1cbd082d4b942826914091d2f22ec628040259e63405f
7
+ data.tar.gz: 2898e89f00a5ba8be3b7d75eb27ba3b3d507a83683f0b214555600c89482c7fc317b5cbf3f1e7e5461a784a5e047e6f302a08047320e230ab0bc5049eda70fc4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## HCloud v1.3.0
4
+
5
+ - Implemented Load Balancers
6
+ - Implemented Load Balancer Types
7
+
3
8
  ## HCloud v1.2.0
4
9
 
5
10
  - Implemented Networks
data/README.md CHANGED
@@ -84,9 +84,9 @@ Not all Hetzner Cloud API endpoints have been implemented yet.
84
84
  | Images | Implemented |
85
85
  | Image Actions | Implemented |
86
86
  | ISOs | Implemented |
87
- | Load Balancers | Not implemented |
87
+ | Load Balancers | Implemented |
88
88
  | Load Balancer Actions | Not implemented |
89
- | Load Balancer Types | Not implemented |
89
+ | Load Balancer Types | Implemented |
90
90
  | Locations | Implemented |
91
91
  | Networks | Implemented |
92
92
  | Network Actions | Implemented |
@@ -2,23 +2,27 @@
2
2
 
3
3
  HCloud.loader.inflector.inflect(
4
4
  "dns_pointer" => "DNSPointer",
5
- "hcloud" => "HCloud",
6
- "ssh_key" => "SSHKey",
7
5
  "floating_ip" => "FloatingIP",
8
6
  "floating_ip_price" => "FloatingIPPrice",
9
- "floating_ips" => "FloatingIPs",
10
7
  "floating_ip_prices" => "FloatingIPPrices",
8
+ "floating_ips" => "FloatingIPs",
9
+ "hcloud" => "HCloud",
10
+ "health_check_http" => "HealthCheckHTTP",
11
11
  "http" => "HTTP",
12
+ "ip_not_available" => "IPNotAvailable",
12
13
  "ipv4" => "IPv4",
13
14
  "ipv6" => "IPv6",
14
- "ip_not_available" => "IPNotAvailable",
15
15
  "iso" => "ISO",
16
16
  "iso_type" => "ISOType",
17
+ "service_http" => "ServiceHTTP",
18
+ "ssh_key" => "SSHKey",
19
+ "target_ip" => "TargetIP",
17
20
  )
18
21
 
19
22
  ActiveSupport::Inflector.inflections(:en) do |inflect|
20
23
  inflect.acronym "DNS"
21
- inflect.acronym "JSON"
24
+ inflect.acronym "HTTP"
22
25
  inflect.acronym "IP"
23
26
  inflect.acronym "ISO"
27
+ inflect.acronym "JSON"
24
28
  end
@@ -25,6 +25,10 @@ module HCloud
25
25
  include Deletable
26
26
  end
27
27
 
28
+ def meterable
29
+ include Meterable
30
+ end
31
+
28
32
  def singleton
29
33
  include Singleton
30
34
  end
@@ -10,6 +10,7 @@ module HCloud
10
10
  def create
11
11
  assign_attributes client
12
12
  .post("/#{resource_name.pluralize}", creatable_params)
13
+ .tap { |r| r[resource_name.to_sym].merge!(r.slice(:root_password)) }
13
14
  .fetch(resource_name.to_sym)
14
15
  end
15
16
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ module Meterable
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ def metrics(type:, from:, to:, step: nil)
9
+ raise Errors::MissingIDError unless id
10
+
11
+ Metrics.new client
12
+ .get("/#{resource_name.pluralize}/#{id}/metrics", type: Array(type).join(","), start: from.iso8601, end: to.iso8601, step: step)
13
+ .fetch(:metrics)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class Algorithm < Entity
5
+ attribute :type
6
+ end
7
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class HealthCheck < Entity
5
+ attribute :http, :health_check_http
6
+ attribute :interval, :integer
7
+ attribute :port, :integer
8
+ attribute :protocol
9
+ attribute :retries, :integer
10
+ attribute :timeout, :integer
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class HealthCheckHTTP < Entity
5
+ attribute :domain
6
+ attribute :path
7
+ attribute :response
8
+ attribute :status_code, array: true, default: -> { [] }
9
+ attribute :tls
10
+
11
+ alias tls? tls
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class HealthStatus < Entity
5
+ attribute :listen_port, :integer
6
+ attribute :status
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class LabelSelector < Entity
5
+ attribute :selector
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class LoadBalancerPrivateNet < Entity
5
+ attribute :ip
6
+ attribute :network
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class LoadBalancerPublicNet < Entity
5
+ attribute :enabled, :boolean
6
+ attribute :ipv4, :dns_pointer
7
+ attribute :ipv6, :dns_pointer
8
+
9
+ alias enabled? enabled
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class Service < Entity
5
+ attribute :listen_port, :integer
6
+ attribute :destination_port, :integer
7
+
8
+ attribute :protocol
9
+ attribute :proxyprotocol, :boolean
10
+
11
+ attribute :health_check, :health_check
12
+ attribute :http, :service_http
13
+
14
+ alias proxyprotocol? proxyprotocol
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class ServiceHTTP < Entity
5
+ attribute :certificates, :certificate, array: true, default: -> { [] }
6
+
7
+ attribute :cookie_lifetime, :integer
8
+ attribute :cookie_name
9
+
10
+ attribute :redirect_http, :boolean
11
+ attribute :sticky_sessions, :boolean
12
+
13
+ alias redirect_http? redirect_http
14
+ alias sticky_sessions? sticky_sessions
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class Target < Entity
5
+ attribute :type
6
+
7
+ attribute :health_status, :health_status, array: true, default: -> { [] }
8
+
9
+ attribute :server, :server
10
+
11
+ attribute :use_private_ip, :boolean
12
+
13
+ alias use_private_ip? use_private_ip
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class TargetIP < Entity
5
+ attribute :ip
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class TargetTarget < Entity
5
+ attribute :type
6
+
7
+ attribute :health_status, :health_status, array: true, default: -> { [] }
8
+
9
+ attribute :server, :server
10
+
11
+ attribute :use_private_ip, :boolean
12
+
13
+ alias use_private_ip? use_private_ip
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ class Targets < Target
5
+ attribute :type
6
+
7
+ attribute :ip, :target_ip
8
+
9
+ attribute :label_selector, :label_selector
10
+
11
+ attribute :targets, :target, array: true, default: -> { [] }
12
+ end
13
+ end
data/lib/hcloud/errors.rb CHANGED
@@ -23,15 +23,18 @@ module HCloud
23
23
  end
24
24
 
25
25
  class ActionFailed < Error; end
26
+ class CloudResourceIPNotAllowed < Error; end
26
27
  class Conflict < Error; end
27
28
  class FirewallAlreadyApplied < Error; end
28
29
  class FirewallAlreadyRemoved < Error; end
29
30
  class FirewallResourceNotFound < Error; end
30
31
  class Forbidden < Error; end
31
32
  class IPNotAvailable < Error; end
33
+ class IPNotOwned < Error; end
32
34
  class IncompatibleNetworkType < Error; end
33
35
  class InvalidInput < Error; end
34
36
  class JSONError < Error; end
37
+ class LoadBalancerNotAttachedToNetwork < Error; end
35
38
  class Locked < Error; end
36
39
  class Maintenance < Error; end
37
40
  class NetworksOverlap < Error; end
@@ -42,13 +45,17 @@ module HCloud
42
45
  class PlacementError < Error; end
43
46
  class Protected < Error; end
44
47
  class RateLimitExceeded < Error; end
48
+ class ResourceInUse < Error; end
45
49
  class ResourceLimitExceeded < Error; end
46
50
  class ResourceUnavailable < Error; end
47
- class ResourceInUse < Error; end
51
+ class RobotUnavailable < Error; end
48
52
  class ServerAlreadyAdded < Error; end
49
53
  class ServerAlreadyAttached < Error; end
50
54
  class ServerError < Error; end
55
+ class ServerNotAttachedToNetwork < Error; end
51
56
  class ServiceError < Error; end
57
+ class SourcePortAlreadyUsed < Error; end
58
+ class TargetAlreadyDefined < Error; end
52
59
  class TokenReadonly < Error; end
53
60
  class Unauthorized < Error; end
54
61
  class UniquenessError < Error; end
@@ -19,8 +19,12 @@ module HCloud
19
19
  value
20
20
  when Integer # ID
21
21
  resource_class.new(id: value)
22
- when String # Name
23
- resource_class.new(name: value)
22
+ when String # Name or Type
23
+ if resource_class.attribute_names.include?("name")
24
+ resource_class.new(name: value)
25
+ else
26
+ resource_class.new(type: value)
27
+ end
24
28
  when Hash # Attribute hash
25
29
  resource_class.new(value)
26
30
  when Array # List
@@ -52,6 +56,7 @@ module HCloud
52
56
  end
53
57
 
54
58
  ActiveModel::Type.register(:action, HCloud::ResourceType.Type("HCloud::Action"))
59
+ ActiveModel::Type.register(:algorithm, HCloud::ResourceType.Type("HCloud::Algorithm"))
55
60
  ActiveModel::Type.register(:amount, HCloud::ResourceType.Type("HCloud::Amount"))
56
61
  ActiveModel::Type.register(:applied_to, HCloud::ResourceType.Type("HCloud::AppliedTo"))
57
62
  ActiveModel::Type.register(:applied_to_resource, HCloud::ResourceType.Type("HCloud::AppliedToResource"))
@@ -66,11 +71,19 @@ ActiveModel::Type.register(:firewall, HCloud::ResourceType.Type("HCloud::Firewal
66
71
  ActiveModel::Type.register(:floating_ip, HCloud::ResourceType.Type("HCloud::FloatingIP"))
67
72
  ActiveModel::Type.register(:floating_ip_price, HCloud::ResourceType.Type("HCloud::FloatingIPPrice"))
68
73
  ActiveModel::Type.register(:floating_ip_prices, HCloud::ResourceType.Type("HCloud::FloatingIPPrices"))
74
+ ActiveModel::Type.register(:health_check, HCloud::ResourceType.Type("HCloud::HealthCheck"))
75
+ ActiveModel::Type.register(:health_check_http, HCloud::ResourceType.Type("HCloud::HealthCheckHTTP"))
76
+ ActiveModel::Type.register(:health_status, HCloud::ResourceType.Type("HCloud::HealthStatus"))
69
77
  ActiveModel::Type.register(:image, HCloud::ResourceType.Type("HCloud::Image"))
70
78
  ActiveModel::Type.register(:image_price, HCloud::ResourceType.Type("HCloud::ImagePrice"))
71
79
  ActiveModel::Type.register(:ipv4, HCloud::ResourceType.Type("HCloud::IPv4"))
72
80
  ActiveModel::Type.register(:ipv6, HCloud::ResourceType.Type("HCloud::IPv6"))
73
81
  ActiveModel::Type.register(:iso, HCloud::ResourceType.Type("HCloud::ISO"))
82
+ ActiveModel::Type.register(:label_selector, HCloud::ResourceType.Type("HCloud::LabelSelector"))
83
+ ActiveModel::Type.register(:load_balancer, HCloud::ResourceType.Type("HCloud::LoadBalancer"))
84
+ ActiveModel::Type.register(:load_balancer_private_net, HCloud::ResourceType.Type("HCloud::LoadBalancerPrivateNet"))
85
+ ActiveModel::Type.register(:load_balancer_public_net, HCloud::ResourceType.Type("HCloud::LoadBalancerPublicNet"))
86
+ ActiveModel::Type.register(:load_balancer_type, HCloud::ResourceType.Type("HCloud::LoadBalancerType"))
74
87
  ActiveModel::Type.register(:load_balancer_type_price, HCloud::ResourceType.Type("HCloud::LoadBalancerTypePrice"))
75
88
  ActiveModel::Type.register(:location, HCloud::ResourceType.Type("HCloud::Location"))
76
89
  ActiveModel::Type.register(:network, HCloud::ResourceType.Type("HCloud::Network"))
@@ -86,8 +99,13 @@ ActiveModel::Type.register(:server, HCloud::ResourceType.Type("HCloud::Server"))
86
99
  ActiveModel::Type.register(:server_backup_price, HCloud::ResourceType.Type("HCloud::ServerBackupPrice"))
87
100
  ActiveModel::Type.register(:server_type, HCloud::ResourceType.Type("HCloud::ServerType"))
88
101
  ActiveModel::Type.register(:server_type_price, HCloud::ResourceType.Type("HCloud::ServerTypePrice"))
102
+ ActiveModel::Type.register(:service, HCloud::ResourceType.Type("HCloud::Service"))
103
+ ActiveModel::Type.register(:service_http, HCloud::ResourceType.Type("HCloud::ServiceHTTP"))
89
104
  ActiveModel::Type.register(:ssh_key, HCloud::ResourceType.Type("HCloud::SSHKey"))
90
105
  ActiveModel::Type.register(:subnet, HCloud::ResourceType.Type("HCloud::Subnet"))
106
+ ActiveModel::Type.register(:target, HCloud::ResourceType.Type("HCloud::Target"))
107
+ ActiveModel::Type.register(:targets, HCloud::ResourceType.Type("HCloud::Targets"))
108
+ ActiveModel::Type.register(:target_ip, HCloud::ResourceType.Type("HCloud::TargetIP"))
91
109
  ActiveModel::Type.register(:traffic_price, HCloud::ResourceType.Type("HCloud::TrafficPrice"))
92
110
  ActiveModel::Type.register(:used_by, HCloud::ResourceType.Type("HCloud::UsedBy"))
93
111
  ActiveModel::Type.register(:volume, HCloud::ResourceType.Type("HCloud::Volume"))
@@ -112,7 +112,7 @@ module HCloud
112
112
  attribute :name
113
113
 
114
114
  attribute :applied_to, :applied_to, array: true, default: -> { [] }
115
- # Only used for creation
115
+ # TODO: use only for creation
116
116
  attribute :apply_to, :apply_to, array: true, default: -> { [] }
117
117
 
118
118
  attribute :rules, :rule, array: true, default: -> { [] }
@@ -0,0 +1,107 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ ##
5
+ # Represents a load balancer
6
+ #
7
+ # == List all load balancers
8
+ #
9
+ # HCloud::LoadBalancer.all
10
+ # # => [#<HCloud::LoadBalancer id: 1, ...>, ...]
11
+ #
12
+ # == Sort load balancers
13
+ #
14
+ # HCloud::LoadBalancer.all.sort(name: :desc)
15
+ # # => [#<HCloud::LoadBalancer id: 1, ...>, ...]
16
+ #
17
+ # HCloud::LoadBalancer.all.sort(:id, name: :asc)
18
+ # # => [#<HCloud::LoadBalancer id: 1, ...>, ...]
19
+ #
20
+ # == Search load balancers
21
+ #
22
+ # HCloud::LoadBalancer.all.where(name: "my_load_balancer")
23
+ # # => #<HCloud::LoadBalancer id: 1, ...>
24
+ #
25
+ # == Find load balancer by ID
26
+ #
27
+ # HCloud::LoadBalancer.find(1)
28
+ # # => #<HCloud::LoadBalancer id: 1, ...>
29
+ #
30
+ # == Create load balancer
31
+ #
32
+ # load_balancer = HCloud::LoadBalancer.new(name: "my_load_balancer", algorithm: { type: "round_robin" }, load_balancer_type: "lb11", location: "nbg1")
33
+ # load_balancer.create
34
+ # load_balancer.created?
35
+ # # => true
36
+ #
37
+ # load_balancer = HCloud::LoadBalancer.create(name: "my_load_balancer", algorithm: { type: "round_robin" }, load_balancer_type: "lb11", location: "nbg1")
38
+ # # => #<HCloud::LoadBalancer id: 1, ...>
39
+ #
40
+ # == Update load balancer
41
+ #
42
+ # load_balancer = HCloud::LoadBalancer.find(1)
43
+ # load_balancer.name = "another_load_balancer"
44
+ # load_balancer.update
45
+ #
46
+ # == Delete load balancer
47
+ #
48
+ # load_balancer = HCloud::LoadBalancer.find(1)
49
+ # load_balancer.delete
50
+ # load_balancer.deleted?
51
+ # # => true
52
+ #
53
+ # == Get metrics
54
+ #
55
+ # load_balancer = HCloud::LoadBalancer.find(1)
56
+ # load_balancer.metrics(type: :bandwidth, from: 2.minutes.ago, to: 1.minute.ago)
57
+ # # => #<HCloud::Metrics ...>
58
+ #
59
+ # load_balancer.metrics(type: [:connections_per_second, :requests_per_second], from: 2.minutes.ago, to: 1.minute.ago, step: 60)
60
+ # # => #<HCloud::Metrics ...>
61
+ #
62
+ class LoadBalancer < Resource
63
+ queryable
64
+ creatable
65
+ updatable
66
+ deletable
67
+ meterable
68
+
69
+ attribute :id, :integer
70
+ attribute :name
71
+
72
+ attribute :algorithm, :algorithm
73
+
74
+ attribute :included_traffic, :integer
75
+ attribute :ingoing_traffic, :integer
76
+ attribute :outgoing_traffic, :integer
77
+
78
+ attribute :load_balancer_type, :load_balancer_type
79
+
80
+ attribute :location, :location
81
+
82
+ # TODO: use only for creation
83
+ attribute :network_zone
84
+ # TODO: use only for creation
85
+ attribute :network, :network
86
+ # TODO: use only for creation
87
+ attribute :public_interface, :boolean
88
+
89
+ attribute :private_net, :load_balancer_private_net
90
+ attribute :public_net, :load_balancer_public_net
91
+
92
+ attribute :services, :service, array: true, default: -> { [] }
93
+ attribute :targets, :target, array: true, default: -> { [] }
94
+
95
+ attribute :protection, :protection
96
+
97
+ attribute :labels, default: -> { {} }
98
+
99
+ def creatable_attributes
100
+ [:name, :labels, :algorithm, :network_zone, :public_interface, :services, :targets, load_balancer_type: [:id, :name], location: [:id, :name], network: [:id, :name]]
101
+ end
102
+
103
+ def updatable_attributes
104
+ [:name, :labels]
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HCloud
4
+ ##
5
+ # Represents a load balancer type
6
+ #
7
+ # == List all load balancer types
8
+ #
9
+ # HCloud::LoadBalancerType.all
10
+ # # => [#<HCloud::LoadBalancerType id: 1, ...>, ...]
11
+ #
12
+ # == Search load balancer types
13
+ #
14
+ # HCloud::LoadBalancerType.all.where(name: "cx11")
15
+ # # => #<HCloud::LoadBalancerType id: 1, ...>
16
+ #
17
+ # == Find load balancer type by ID
18
+ #
19
+ # HCloud::LoadBalancerType.find(1)
20
+ # # => #<HCloud::LoadBalancerType id: 1, ...>
21
+ #
22
+ class LoadBalancerType < Resource
23
+ queryable
24
+
25
+ attribute :id, :integer
26
+ attribute :name
27
+ attribute :description
28
+
29
+ attribute :max_assigned_certificates, :integer
30
+ attribute :max_connections, :integer
31
+ attribute :max_services, :integer
32
+ attribute :max_targets, :integer
33
+
34
+ attribute :prices, :price, array: true, default: -> { [] }
35
+
36
+ attribute :deprecated, :datetime
37
+ end
38
+ end
@@ -117,8 +117,7 @@ module HCloud
117
117
 
118
118
  attribute :servers, :server, array: true, default: -> { [] }
119
119
 
120
- # TODO: load balancer resource
121
- attribute :load_balancers, array: true, default: -> { [] }
120
+ attribute :load_balancers, :load_balancer, array: true, default: -> { [] }
122
121
 
123
122
  attribute :protection, :protection
124
123
 
@@ -64,7 +64,6 @@ module HCloud
64
64
  # # => #<HCloud::Metrics ...>
65
65
  #
66
66
  # TODO: actions
67
- # TODO: return root_password if ssh_keys is empty
68
67
  #
69
68
  class Server < Resource
70
69
  actionable
@@ -72,6 +71,7 @@ module HCloud
72
71
  creatable
73
72
  updatable
74
73
  deletable
74
+ meterable
75
75
 
76
76
  attribute :id, :integer
77
77
  attribute :name
@@ -94,6 +94,8 @@ module HCloud
94
94
  # TODO: use only for creation
95
95
  attribute :networks, array: true, default: -> { [] }
96
96
 
97
+ attribute :root_password
98
+
97
99
  attribute :datacenter, :datacenter
98
100
 
99
101
  attribute :included_traffic, :integer
@@ -115,13 +117,12 @@ module HCloud
115
117
 
116
118
  attribute :labels, default: -> { {} }
117
119
 
118
- # TODO: load balancer resource
119
- attribute :load_balancers, array: true, default: -> { [] }
120
+ attribute :load_balancers, :load_balancer, array: true, default: -> { [] }
120
121
 
121
122
  attribute :volumes, :volume, array: true, default: -> { [] }
122
123
 
123
- attribute :locked
124
- attribute :rescue_enabled
124
+ attribute :locked, :boolean
125
+ attribute :rescue_enabled, :boolean
125
126
 
126
127
  alias rescue_enabled? rescue_enabled
127
128
 
@@ -161,12 +162,6 @@ module HCloud
161
162
 
162
163
  action :request_console
163
164
 
164
- def metrics(type:, from:, to:, step: nil)
165
- Metrics.new client
166
- .get("/servers/#{id}/metrics", type: Array(type).join(","), start: from.iso8601, end: to.iso8601, step: step)
167
- .fetch(:metrics)
168
- end
169
-
170
165
  def creatable_attributes
171
166
  [: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]
172
167
  end
@@ -3,7 +3,7 @@
3
3
  module HCloud
4
4
  module Version
5
5
  MAJOR = 1
6
- MINOR = 2
6
+ MINOR = 3
7
7
  PATCH = 0
8
8
  PRE = nil
9
9
 
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: 1.2.0
4
+ version: 1.3.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: 2022-02-01 00:00:00.000000000 Z
11
+ date: 2022-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -213,9 +213,11 @@ files:
213
213
  - lib/hcloud/concerns/concerns.rb
214
214
  - lib/hcloud/concerns/creatable.rb
215
215
  - lib/hcloud/concerns/deletable.rb
216
+ - lib/hcloud/concerns/meterable.rb
216
217
  - lib/hcloud/concerns/queryable.rb
217
218
  - lib/hcloud/concerns/singleton.rb
218
219
  - lib/hcloud/concerns/updatable.rb
220
+ - lib/hcloud/entities/algorithm.rb
219
221
  - lib/hcloud/entities/amount.rb
220
222
  - lib/hcloud/entities/applied_to.rb
221
223
  - lib/hcloud/entities/applied_to_resource.rb
@@ -226,9 +228,15 @@ files:
226
228
  - lib/hcloud/entities/error.rb
227
229
  - lib/hcloud/entities/floating_ip_price.rb
228
230
  - lib/hcloud/entities/floating_ip_prices.rb
231
+ - lib/hcloud/entities/health_check.rb
232
+ - lib/hcloud/entities/health_check_http.rb
233
+ - lib/hcloud/entities/health_status.rb
229
234
  - lib/hcloud/entities/image_price.rb
230
235
  - lib/hcloud/entities/ipv4.rb
231
236
  - lib/hcloud/entities/ipv6.rb
237
+ - lib/hcloud/entities/label_selector.rb
238
+ - lib/hcloud/entities/load_balancer_private_net.rb
239
+ - lib/hcloud/entities/load_balancer_public_net.rb
232
240
  - lib/hcloud/entities/load_balancer_type_price.rb
233
241
  - lib/hcloud/entities/metrics.rb
234
242
  - lib/hcloud/entities/price.rb
@@ -239,7 +247,13 @@ files:
239
247
  - lib/hcloud/entities/rule.rb
240
248
  - lib/hcloud/entities/server_backup_price.rb
241
249
  - lib/hcloud/entities/server_type_price.rb
250
+ - lib/hcloud/entities/service.rb
251
+ - lib/hcloud/entities/service_http.rb
242
252
  - lib/hcloud/entities/subnet.rb
253
+ - lib/hcloud/entities/target.rb
254
+ - lib/hcloud/entities/target_ip.rb
255
+ - lib/hcloud/entities/target_target.rb
256
+ - lib/hcloud/entities/targets.rb
243
257
  - lib/hcloud/entities/traffic_price.rb
244
258
  - lib/hcloud/entities/used_by.rb
245
259
  - lib/hcloud/entities/volume_price.rb
@@ -255,6 +269,8 @@ files:
255
269
  - lib/hcloud/resources/floating_ip.rb
256
270
  - lib/hcloud/resources/image.rb
257
271
  - lib/hcloud/resources/iso.rb
272
+ - lib/hcloud/resources/load_balancer.rb
273
+ - lib/hcloud/resources/load_balancer_type.rb
258
274
  - lib/hcloud/resources/location.rb
259
275
  - lib/hcloud/resources/network.rb
260
276
  - lib/hcloud/resources/placement_group.rb