hcloud 0.1.1 → 0.1.2
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/.rubocop.yml +24 -0
- data/.rubocop_todo.yml +148 -0
- data/.travis.yml +3 -1
- data/CHANGELOG.md +40 -0
- data/Gemfile +4 -3
- data/Rakefile +2 -2
- data/bin/console +3 -3
- data/hcloud.gemspec +19 -19
- data/lib/hcloud.rb +1 -1
- data/lib/hcloud/abstract_resource.rb +18 -19
- data/lib/hcloud/action.rb +3 -3
- data/lib/hcloud/action_resource.rb +6 -7
- data/lib/hcloud/client.rb +18 -18
- data/lib/hcloud/datacenter.rb +2 -3
- data/lib/hcloud/datacenter_resource.rb +12 -14
- data/lib/hcloud/entry_loader.rb +6 -6
- data/lib/hcloud/floating_ip.rb +13 -14
- data/lib/hcloud/floating_ip_resource.rb +12 -12
- data/lib/hcloud/image.rb +5 -5
- data/lib/hcloud/image_resource.rb +9 -10
- data/lib/hcloud/iso.rb +2 -2
- data/lib/hcloud/iso_resource.rb +4 -5
- data/lib/hcloud/location.rb +2 -3
- data/lib/hcloud/location_resource.rb +10 -11
- data/lib/hcloud/multi_reply.rb +5 -6
- data/lib/hcloud/pagination.rb +3 -3
- data/lib/hcloud/server.rb +33 -34
- data/lib/hcloud/server_resource.rb +14 -14
- data/lib/hcloud/server_type.rb +2 -3
- data/lib/hcloud/server_type_resource.rb +10 -11
- data/lib/hcloud/ssh_key.rb +4 -5
- data/lib/hcloud/ssh_key_resource.rb +11 -12
- data/lib/hcloud/version.rb +1 -1
- metadata +20 -17
data/lib/hcloud/multi_reply.rb
CHANGED
@@ -4,19 +4,18 @@ module Hcloud
|
|
4
4
|
attr_accessor :cb
|
5
5
|
|
6
6
|
def initialize(j:, pagination: nil)
|
7
|
-
|
8
|
-
|
7
|
+
@j = j
|
8
|
+
@pagination = pagination
|
9
9
|
end
|
10
10
|
|
11
11
|
def pagination
|
12
|
-
@pagination || Pagination.new(@j.first.to_h[
|
12
|
+
@pagination || Pagination.new(@j.first.to_h['meta'].to_h['pagination'], nil, nil)
|
13
13
|
end
|
14
14
|
|
15
|
-
def each
|
15
|
+
def each
|
16
16
|
@cb.call(@j).each do |member|
|
17
|
-
|
17
|
+
yield(member)
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
21
20
|
end
|
22
21
|
end
|
data/lib/hcloud/pagination.rb
CHANGED
data/lib/hcloud/server.rb
CHANGED
@@ -16,13 +16,13 @@ module Hcloud
|
|
16
16
|
outgoing_traffic: nil,
|
17
17
|
ingoing_traffic: nil,
|
18
18
|
included_traffic: nil
|
19
|
-
}
|
19
|
+
}.freeze
|
20
20
|
|
21
21
|
include EntryLoader
|
22
22
|
|
23
|
-
def update(name:)
|
23
|
+
def update(name:)
|
24
24
|
Server.new(
|
25
|
-
Oj.load(request(base_path, j: {name: name}, method: :put).run.body)[
|
25
|
+
Oj.load(request(base_path, j: { name: name }, method: :put).run.body)['server'],
|
26
26
|
parent,
|
27
27
|
client
|
28
28
|
)
|
@@ -32,56 +32,56 @@ module Hcloud
|
|
32
32
|
action(request(base_path, method: :delete))[0]
|
33
33
|
end
|
34
34
|
|
35
|
-
def enable_rescue(type:
|
35
|
+
def enable_rescue(type: 'linux64', ssh_keys: [])
|
36
36
|
query = {}
|
37
|
-
method(:enable_rescue).parameters.inject(query) do |r,x|
|
37
|
+
method(:enable_rescue).parameters.inject(query) do |r, x|
|
38
38
|
(var = eval(x.last.to_s)).nil? ? r : r.merge!(x.last => var)
|
39
39
|
end
|
40
|
-
a
|
41
|
-
[a, j[
|
40
|
+
a, j = action(request(base_path('actions/enable_rescue'), j: query))
|
41
|
+
[a, j['root_password']]
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
def reset_password
|
45
|
-
a
|
46
|
-
[a, j[
|
45
|
+
a, j = action(request(base_path('actions/reset_password'), method: :post))
|
46
|
+
[a, j['root_password']]
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
def create_image(description: nil, type: nil)
|
50
50
|
query = {}
|
51
|
-
method(:create_image).parameters.inject(query) do |r,x|
|
51
|
+
method(:create_image).parameters.inject(query) do |r, x|
|
52
52
|
(var = eval(x.last.to_s)).nil? ? r : r.merge!(x.last => var)
|
53
53
|
end
|
54
|
-
a
|
55
|
-
[a, Image.new(j[
|
54
|
+
a, j = action(request(base_path('actions/create_image'), j: query))
|
55
|
+
[a, Image.new(j['image'], parent, client)]
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
def rebuild(image:)
|
59
|
-
a
|
60
|
-
[a, j[
|
59
|
+
a, j = action(request(base_path('actions/rebuild'), j: { image: image }))
|
60
|
+
[a, j['root_password']]
|
61
61
|
end
|
62
62
|
|
63
63
|
def change_type(server_type:, upgrade_disk: nil)
|
64
64
|
query = {}
|
65
|
-
method(:change_type).parameters.inject(query) do |r,x|
|
65
|
+
method(:change_type).parameters.inject(query) do |r, x|
|
66
66
|
(var = eval(x.last.to_s)).nil? ? r : r.merge!(x.last => var)
|
67
67
|
end
|
68
|
-
action(request(base_path(
|
68
|
+
action(request(base_path('actions/change_type'), j: query))[0]
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
def enable_backup(backup_window:)
|
72
|
-
action(request(base_path(
|
73
|
-
j: {backup_window: backup_window}))[0]
|
72
|
+
action(request(base_path('actions/enable_backup'),
|
73
|
+
j: { backup_window: backup_window }))[0]
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
76
|
def attach_iso(iso:)
|
77
|
-
action(request(base_path(
|
78
|
-
j: {iso: iso}))[0]
|
77
|
+
action(request(base_path('actions/attach_iso'),
|
78
|
+
j: { iso: iso }))[0]
|
79
79
|
end
|
80
|
-
|
81
|
-
%w
|
82
|
-
poweron poweroff shutdown reboot reset
|
80
|
+
|
81
|
+
%w[
|
82
|
+
poweron poweroff shutdown reboot reset
|
83
83
|
disable_rescue disable_backup detach_iso
|
84
|
-
|
84
|
+
].each do |action|
|
85
85
|
define_method(action) do
|
86
86
|
action(request(base_path("actions/#{action}"), method: :post))[0]
|
87
87
|
end
|
@@ -96,15 +96,14 @@ module Hcloud
|
|
96
96
|
def action(request)
|
97
97
|
j = Oj.load(request.run.body)
|
98
98
|
[
|
99
|
-
Action.new(j[
|
99
|
+
Action.new(j['action'], parent, client),
|
100
100
|
j
|
101
101
|
]
|
102
102
|
end
|
103
103
|
|
104
|
-
def base_path(ext=nil)
|
105
|
-
return ["servers/#{id}",ext].compact.join(
|
106
|
-
raise ResourcePathError,
|
104
|
+
def base_path(ext = nil)
|
105
|
+
return ["servers/#{id}", ext].compact.join('/') unless id.nil?
|
106
|
+
raise ResourcePathError, 'Unable to build resource path. Id is nil.'
|
107
107
|
end
|
108
|
-
|
109
108
|
end
|
110
109
|
end
|
@@ -9,43 +9,43 @@ module Hcloud
|
|
9
9
|
ssh_keys: [],
|
10
10
|
user_data: nil)
|
11
11
|
query = {}
|
12
|
-
method(:create).parameters.inject(query) do |r,x|
|
12
|
+
method(:create).parameters.inject(query) do |r, x|
|
13
13
|
(var = eval(x.last.to_s)).nil? ? r : r.merge!(x.last => var)
|
14
14
|
end
|
15
|
-
j = Oj.load(request(
|
15
|
+
j = Oj.load(request('servers', j: query, code: 200).run.body)
|
16
16
|
[
|
17
|
-
Action.new(j[
|
18
|
-
Server.new(j[
|
19
|
-
j[
|
17
|
+
Action.new(j['action'], self, client),
|
18
|
+
Server.new(j['server'], self, client),
|
19
|
+
j['root_password']
|
20
20
|
]
|
21
21
|
end
|
22
22
|
|
23
23
|
def all
|
24
|
-
mj(
|
25
|
-
j.flat_map{|x| x[
|
24
|
+
mj('servers') do |j|
|
25
|
+
j.flat_map { |x| x['servers'].map { |x| Server.new(x, self, client) } }
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
def find(id)
|
30
30
|
Server.new(
|
31
|
-
Oj.load(request("servers/#{id.to_i}").run.body)[
|
31
|
+
Oj.load(request("servers/#{id.to_i}").run.body)['server'], self, client
|
32
32
|
)
|
33
33
|
end
|
34
34
|
|
35
35
|
def [](arg)
|
36
36
|
case arg
|
37
37
|
when Integer
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
begin
|
39
|
+
find(arg)
|
40
|
+
rescue Error::NotFound
|
41
|
+
end
|
42
42
|
when String
|
43
43
|
find_by(name: arg)
|
44
44
|
end
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
def find_by(name:)
|
48
|
-
x = Oj.load(request(
|
48
|
+
x = Oj.load(request('servers', q: { name: name }).run.body)['servers']
|
49
49
|
return nil if x.none?
|
50
50
|
x.each do |s|
|
51
51
|
return Server.new(s, self, client)
|
data/lib/hcloud/server_type.rb
CHANGED
@@ -3,37 +3,36 @@ module Hcloud
|
|
3
3
|
include Enumerable
|
4
4
|
|
5
5
|
def all
|
6
|
-
j = Oj.load(request(
|
7
|
-
j[
|
6
|
+
j = Oj.load(request('server_types').run.body)
|
7
|
+
j['server_types'].map { |x| ServerType.new(x, self, client) }
|
8
8
|
end
|
9
9
|
|
10
10
|
def find(id)
|
11
11
|
ServerType.new(
|
12
|
-
Oj.load(request("server_types/#{id}").run.body)[
|
12
|
+
Oj.load(request("server_types/#{id}").run.body)['server_type'],
|
13
13
|
self,
|
14
14
|
client
|
15
15
|
)
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
def find_by(name:)
|
19
|
-
x = Oj.load(request(
|
19
|
+
x = Oj.load(request('server_types', q: { name: name }).run.body)['server_types']
|
20
20
|
return nil if x.none?
|
21
21
|
x.each do |s|
|
22
22
|
return ServerType.new(s, self, client)
|
23
23
|
end
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
def [](arg)
|
27
27
|
case arg
|
28
28
|
when Integer
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
begin
|
30
|
+
find(arg)
|
31
|
+
rescue Error::NotFound
|
32
|
+
end
|
33
33
|
when String
|
34
34
|
find_by(name: arg)
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
38
37
|
end
|
39
38
|
end
|
data/lib/hcloud/ssh_key.rb
CHANGED
@@ -5,20 +5,19 @@ module Hcloud
|
|
5
5
|
name: nil,
|
6
6
|
fingerprint: nil,
|
7
7
|
public_key: nil
|
8
|
-
}
|
8
|
+
}.freeze
|
9
9
|
include EntryLoader
|
10
10
|
|
11
11
|
def update(name:)
|
12
|
-
j = Oj.load(request("ssh_keys/#{id.to_i}",
|
13
|
-
j: {name: name},
|
12
|
+
j = Oj.load(request("ssh_keys/#{id.to_i}",
|
13
|
+
j: { name: name },
|
14
14
|
method: :put).run.body)
|
15
|
-
SSHKey.new(j[
|
15
|
+
SSHKey.new(j['ssh_key'], self, client)
|
16
16
|
end
|
17
17
|
|
18
18
|
def destroy
|
19
19
|
request("ssh_keys/#{id}", method: :delete).run.body
|
20
20
|
true
|
21
21
|
end
|
22
|
-
|
23
22
|
end
|
24
23
|
end
|
@@ -1,43 +1,42 @@
|
|
1
1
|
module Hcloud
|
2
2
|
class SSHKeyResource < AbstractResource
|
3
3
|
def all
|
4
|
-
mj(
|
5
|
-
j.flat_map{|x| x[
|
4
|
+
mj('ssh_keys') do |j|
|
5
|
+
j.flat_map { |x| x['ssh_keys'].map { |x| SSHKey.new(x, self, client) } }
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
9
|
def create(name:, public_key:)
|
10
|
-
j = Oj.load(request(
|
11
|
-
SSHKey.new(j[
|
10
|
+
j = Oj.load(request('ssh_keys', j: { name: name, public_key: public_key }).run.body)
|
11
|
+
SSHKey.new(j['ssh_key'], self, client)
|
12
12
|
end
|
13
13
|
|
14
14
|
def find(id)
|
15
15
|
SSHKey.new(
|
16
|
-
Oj.load(request("ssh_keys/#{id}").run.body)[
|
16
|
+
Oj.load(request("ssh_keys/#{id}").run.body)['ssh_key'],
|
17
17
|
self,
|
18
18
|
client
|
19
19
|
)
|
20
20
|
end
|
21
21
|
|
22
22
|
def find_by(name:)
|
23
|
-
x = Oj.load(request(
|
23
|
+
x = Oj.load(request('ssh_keys', q: { name: name }).run.body)['ssh_keys']
|
24
24
|
return nil if x.none?
|
25
25
|
x.each do |s|
|
26
26
|
return SSHKey.new(s, self, client)
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def [](arg)
|
31
31
|
case arg
|
32
32
|
when Integer
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
begin
|
34
|
+
find(arg)
|
35
|
+
rescue Error::NotFound
|
36
|
+
end
|
37
37
|
when String
|
38
38
|
find_by(name: arg)
|
39
39
|
end
|
40
40
|
end
|
41
|
-
|
42
41
|
end
|
43
42
|
end
|
data/lib/hcloud/version.rb
CHANGED
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hcloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Foerster
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1.15'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1.15'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: grape
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,19 +53,19 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
61
|
+
version: '10.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
68
|
+
version: '10.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: activesupport
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: typhoeus
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
@@ -145,7 +145,10 @@ extra_rdoc_files: []
|
|
145
145
|
files:
|
146
146
|
- ".gitignore"
|
147
147
|
- ".rspec"
|
148
|
+
- ".rubocop.yml"
|
149
|
+
- ".rubocop_todo.yml"
|
148
150
|
- ".travis.yml"
|
151
|
+
- CHANGELOG.md
|
149
152
|
- Gemfile
|
150
153
|
- README.md
|
151
154
|
- Rakefile
|