hetzner-api 1.0.0.alpha.3 → 1.0.0.beta.1
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.
- data/Gemfile.lock +1 -1
- data/README.rdoc +72 -0
- data/lib/hetzner/api/version.rb +1 -1
- data/spec/hetzner_api_spec.rb +42 -42
- metadata +5 -5
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -12,6 +12,8 @@ see http://wiki.hetzner.de/index.php?title=Robot_Webservice_en for details.
|
|
12
12
|
|
13
13
|
== Example
|
14
14
|
|
15
|
+
<b>See spec/hetzner_api_spec.rb[link:spec/hetzner_api_spec.rb] for nice examples!</b>
|
16
|
+
|
15
17
|
<tt>h = Hetzner::API.new "username", "password"</tt>
|
16
18
|
|
17
19
|
<tt>h.reset? "111.111.111.111"</tt>
|
@@ -24,6 +26,76 @@ see http://wiki.hetzner.de/index.php?title=Robot_Webservice_en for details.
|
|
24
26
|
|
25
27
|
<tt>h.rdns! "111.111.111.222", "web100.falkenstein.de.example.com"</tt>
|
26
28
|
|
29
|
+
== Coverage
|
30
|
+
|
31
|
+
Reset
|
32
|
+
query
|
33
|
+
should list available reset options for all servers
|
34
|
+
should list available reset options for a specific IP
|
35
|
+
should fail when IP is unknown
|
36
|
+
should fail when IP has no reset option
|
37
|
+
execution
|
38
|
+
should reset the specific IP
|
39
|
+
should fail for the specific IP if input is invalid
|
40
|
+
should fail for the specific IP if a manual reset is active
|
41
|
+
should fail for the specific IP if reset is unavailable
|
42
|
+
should fail for the specific IP if IP is unknown
|
43
|
+
|
44
|
+
Boot
|
45
|
+
query boot configuration
|
46
|
+
should display the boot configuration
|
47
|
+
the rescue system
|
48
|
+
should be able to activate
|
49
|
+
should be able to deactivate
|
50
|
+
|
51
|
+
Rdns
|
52
|
+
should query the current rdns status
|
53
|
+
should be able to set a new ptr
|
54
|
+
should be able to remove a new ptr
|
55
|
+
|
56
|
+
VNC
|
57
|
+
should be able to query vnc boot status
|
58
|
+
should be able to set vnc boot status
|
59
|
+
should be able to disable vnc boot status
|
60
|
+
|
61
|
+
WOL
|
62
|
+
should be able to query WOL status
|
63
|
+
should be able to send a WOL notification
|
64
|
+
|
65
|
+
IP
|
66
|
+
information
|
67
|
+
should be able to display all IP addresses of the customer account
|
68
|
+
should be able to display a IP address of the customer account
|
69
|
+
should be able to display all IP addresses for a given server IP address
|
70
|
+
manage traffic warnings
|
71
|
+
should be able to activate and set traffic warning limits on a specific IP address
|
72
|
+
should be able to deactivate traffic warnings for a specific IP address
|
73
|
+
|
74
|
+
Subnet
|
75
|
+
information
|
76
|
+
should be able to display all IP subnets of the customer account
|
77
|
+
should be able to display a IP subnet of the customer account
|
78
|
+
should be able to display all IP addresses for a given server IP address
|
79
|
+
manage traffic warnings
|
80
|
+
should be able to activate and set traffic warning limits on a specific IP address
|
81
|
+
should be able to deactivate traffic warnings for a specific IP address
|
82
|
+
|
83
|
+
Server
|
84
|
+
information
|
85
|
+
should be able to display all servers of the customer account
|
86
|
+
should be able to display a specific server by its IP address
|
87
|
+
|
88
|
+
Plesk
|
89
|
+
should be able to query plesk boot option status
|
90
|
+
should be able to activate plesk boot option
|
91
|
+
should be able to disable plesk boot option
|
92
|
+
|
93
|
+
Traffic
|
94
|
+
should display the traffic for a specific ip address and a subnet
|
95
|
+
should display the traffic for serveral IP addresse and no subnet
|
96
|
+
should display the traffic for subnets and no ip address
|
97
|
+
|
98
|
+
|
27
99
|
== Readme (rdoc)
|
28
100
|
|
29
101
|
<b>http://rdoc.info/github/rmoriz/hetzner-api</b>
|
data/lib/hetzner/api/version.rb
CHANGED
data/spec/hetzner_api_spec.rb
CHANGED
@@ -24,42 +24,42 @@ describe "Reset" do
|
|
24
24
|
result.response.should be_an_instance_of Net::HTTPNotFound
|
25
25
|
result.parsed_response.should have_JSON_error_code :SERVER_NOT_FOUND
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
it "should fail when IP has no reset option" do
|
29
29
|
result = @h.reset? RESET_IP_NOT_AVAILABLE
|
30
30
|
result.response.should be_an_instance_of Net::HTTPNotFound
|
31
31
|
result.parsed_response.should have_JSON_error_code :RESET_NOT_AVAILABLE
|
32
|
-
end
|
32
|
+
end
|
33
33
|
end
|
34
34
|
|
35
35
|
describe "execution" do
|
36
36
|
before(:all) do
|
37
37
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
it "should reset the specific IP" do
|
41
41
|
result = @h.reset! WORKING_IP, :sw
|
42
42
|
result.response.should be_an_instance_of Net::HTTPOK
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
it "should fail for the specific IP if input is invalid" do
|
46
46
|
result = @h.reset! WORKING_IP, :foo
|
47
47
|
result.response.should be_an_instance_of Net::HTTPBadRequest
|
48
48
|
result.parsed_response.should have_JSON_error_code :INVALID_INPUT
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
it "should fail for the specific IP if a manual reset is active" do
|
52
52
|
result = @h.reset! RESET_IP_MANUAL_ACTIVE, :sw
|
53
53
|
result.response.should be_an_instance_of Net::HTTPConflict
|
54
54
|
result.parsed_response.should have_JSON_error_code :RESET_MANUAL_ACTIVE
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
it "should fail for the specific IP if reset is unavailable" do
|
58
58
|
result = @h.reset! RESET_IP_NOT_AVAILABLE, :sw
|
59
59
|
result.response.should be_an_instance_of Net::HTTPNotFound
|
60
60
|
result.parsed_response.should have_JSON_error_code :RESET_NOT_AVAILABLE
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
it "should fail for the specific IP if IP is unknown" do
|
64
64
|
result = @h.reset! UNKOWN_IP, :sw
|
65
65
|
result.response.should be_an_instance_of Net::HTTPNotFound
|
@@ -73,19 +73,18 @@ describe "Boot" do
|
|
73
73
|
before(:all) do
|
74
74
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
it "should display the boot configuration" do
|
78
|
-
result = @h.boot? WORKING_IP
|
78
|
+
result = @h.boot? WORKING_IP
|
79
79
|
result.response.should be_an_instance_of Net::HTTPOK
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
-
|
84
83
|
describe "the rescue system" do
|
85
84
|
before(:all) do
|
86
85
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
87
86
|
end
|
88
|
-
|
87
|
+
|
89
88
|
it "should be able to activate" do
|
90
89
|
result = @h.enable_rescue! WORKING_IP
|
91
90
|
result.response.should be_an_instance_of Net::HTTPOK
|
@@ -95,7 +94,7 @@ describe "Boot" do
|
|
95
94
|
#result['rescue']['os'].should == 'linux'
|
96
95
|
#result['rescue']['active'].should be_true
|
97
96
|
end
|
98
|
-
|
97
|
+
|
99
98
|
it "should be able to deactivate" do
|
100
99
|
result = @h.disable_rescue! WORKING_IP
|
101
100
|
result.response.should be_an_instance_of Net::HTTPOK
|
@@ -107,17 +106,17 @@ describe "Rdns" do
|
|
107
106
|
before(:all) do
|
108
107
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
109
108
|
end
|
110
|
-
|
109
|
+
|
111
110
|
it "should query the current rdns status" do
|
112
111
|
result = @h.rdns? WORKING_IP
|
113
112
|
result.response.should be_an_instance_of Net::HTTPOK
|
114
|
-
result['rdns']['ip'].should
|
113
|
+
result['rdns']['ip'].should == WORKING_IP
|
115
114
|
result['rdns']['ptr'].should == TEST_PTR
|
116
115
|
end
|
117
|
-
|
116
|
+
|
118
117
|
it "should be able to set a new ptr" do
|
119
118
|
result = @h.rdns! WORKING_IP, TEST_PTR
|
120
|
-
result.response.should be_an_instance_of Net::HTTPOK
|
119
|
+
result.response.should be_an_instance_of Net::HTTPOK
|
121
120
|
result['rdns']['ip'].should == WORKING_IP
|
122
121
|
result['rdns']['ptr'].should == TEST_PTR
|
123
122
|
end
|
@@ -132,7 +131,7 @@ describe "VNC" do
|
|
132
131
|
before(:all) do
|
133
132
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
134
133
|
end
|
135
|
-
|
134
|
+
|
136
135
|
it "should be able to query vnc boot status" do
|
137
136
|
result = @h.boot_vnc? WORKING_IP
|
138
137
|
result.response.should be_an_instance_of Net::HTTPOK
|
@@ -140,7 +139,7 @@ describe "VNC" do
|
|
140
139
|
result['vnc']['active'].should be_false
|
141
140
|
result['vnc']['password'].should be_nil
|
142
141
|
end
|
143
|
-
|
142
|
+
|
144
143
|
it "should be able to set vnc boot status" do
|
145
144
|
result = @h.boot_vnc! WORKING_IP, 'Fedora-13', '32', 'en_US'
|
146
145
|
result.response.should be_an_instance_of Net::HTTPOK
|
@@ -148,7 +147,7 @@ describe "VNC" do
|
|
148
147
|
result['vnc']['active'].should be_true
|
149
148
|
result['vnc']['password'].should_not be_nil
|
150
149
|
end
|
151
|
-
|
150
|
+
|
152
151
|
it "should be able to disable vnc boot status" do
|
153
152
|
result = @h.disable_boot_vnc! WORKING_IP
|
154
153
|
result.response.should be_an_instance_of Net::HTTPOK
|
@@ -162,13 +161,13 @@ describe "WOL" do
|
|
162
161
|
before(:all) do
|
163
162
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
164
163
|
end
|
165
|
-
|
164
|
+
|
166
165
|
it "should be able to query WOL status" do
|
167
166
|
result = @h.wol? WORKING_IP
|
168
167
|
result.response.should be_an_instance_of Net::HTTPOK
|
169
168
|
result['wol']['server_ip'].should == WORKING_IP
|
170
169
|
end
|
171
|
-
|
170
|
+
|
172
171
|
it "should be able to send a WOL notification" do
|
173
172
|
result = @h.wol! WORKING_IP
|
174
173
|
result.response.should be_an_instance_of Net::HTTPOK
|
@@ -181,12 +180,13 @@ describe 'IP' do
|
|
181
180
|
before(:all) do
|
182
181
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
183
182
|
end
|
183
|
+
|
184
184
|
it "should be able to display all IP addresses of the customer account" do
|
185
185
|
result = @h.ips?
|
186
186
|
result.response.should be_an_instance_of Net::HTTPOK
|
187
187
|
result.parsed_response.should have_at_least(2).entries
|
188
|
-
end
|
189
|
-
|
188
|
+
end
|
189
|
+
|
190
190
|
it "should be able to display a IP address of the customer account" do
|
191
191
|
result = @h.ip? WORKING_IP
|
192
192
|
result.response.should be_an_instance_of Net::HTTPOK
|
@@ -199,7 +199,7 @@ describe 'IP' do
|
|
199
199
|
result.parsed_response.should have(2).entry
|
200
200
|
end
|
201
201
|
end
|
202
|
-
|
202
|
+
|
203
203
|
describe "manage traffic warnings" do
|
204
204
|
before(:all) do
|
205
205
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
@@ -224,36 +224,37 @@ describe 'Subnet' do
|
|
224
224
|
before(:all) do
|
225
225
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
226
226
|
end
|
227
|
+
|
227
228
|
it "should be able to display all IP subnets of the customer account" do
|
228
229
|
result = @h.subnets?
|
229
230
|
result.response.should be_an_instance_of Net::HTTPOK
|
230
231
|
result.parsed_response.should have_at_least(2).entries
|
231
|
-
end
|
232
|
-
|
232
|
+
end
|
233
|
+
|
233
234
|
it "should be able to display a IP subnet of the customer account" do
|
234
235
|
result = @h.subnet? WORKING_SUBNET_IP
|
235
236
|
result.response.should be_an_instance_of Net::HTTPOK
|
236
237
|
result.parsed_response.should have(1).entry
|
237
238
|
end
|
238
|
-
|
239
|
+
|
239
240
|
it "should be able to display all IP addresses for a given server IP address" do
|
240
241
|
result = @h.subnets_for_server? WORKING_IP
|
241
242
|
result.response.should be_an_instance_of Net::HTTPOK
|
242
243
|
result.parsed_response.should have(1).entry
|
243
244
|
end
|
244
245
|
end
|
245
|
-
|
246
|
+
|
246
247
|
describe "manage traffic warnings" do
|
247
248
|
before(:all) do
|
248
249
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
249
250
|
end
|
250
|
-
|
251
|
+
|
251
252
|
it "should be able to activate and set traffic warning limits on a specific IP address" do
|
252
253
|
result = @h.ip! WORKING_IP, :traffic_warnings => 'true', :traffic_monthly => TRAFFIC_LIMIT_IN_GIGABYTE
|
253
254
|
result.response.should be_an_instance_of Net::HTTPOK
|
254
255
|
result.parsed_response.should have(1).entry
|
255
256
|
end
|
256
|
-
|
257
|
+
|
257
258
|
it "should be able to deactivate traffic warnings for a specific IP address" do
|
258
259
|
result = @h.ip! WORKING_IP, :traffic_warnings => 'false'
|
259
260
|
result.response.should be_an_instance_of Net::HTTPOK
|
@@ -262,24 +263,23 @@ describe 'Subnet' do
|
|
262
263
|
end
|
263
264
|
end
|
264
265
|
|
265
|
-
|
266
266
|
describe "Server" do
|
267
267
|
describe "information" do
|
268
268
|
before(:all) do
|
269
269
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
270
270
|
end
|
271
|
-
|
271
|
+
|
272
272
|
it "should be able to display all servers of the customer account" do
|
273
273
|
result = @h.servers?
|
274
274
|
result.response.should be_an_instance_of Net::HTTPOK
|
275
275
|
result.parsed_response.should have_at_least(2).entries
|
276
276
|
end
|
277
|
-
|
277
|
+
|
278
278
|
it "should be able to display a specific server by its IP address" do
|
279
279
|
result = @h.server? WORKING_IP
|
280
280
|
result.response.should be_an_instance_of Net::HTTPOK
|
281
281
|
result.parsed_response.should have_at_least(1).entry
|
282
|
-
end
|
282
|
+
end
|
283
283
|
end
|
284
284
|
end
|
285
285
|
|
@@ -287,7 +287,7 @@ describe "Plesk" do
|
|
287
287
|
before(:all) do
|
288
288
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
289
289
|
end
|
290
|
-
|
290
|
+
|
291
291
|
it "should be able to query plesk boot option status" do
|
292
292
|
result = @h.boot_plesk? WORKING_IP
|
293
293
|
result.response.should be_an_instance_of Net::HTTPOK
|
@@ -295,7 +295,7 @@ describe "Plesk" do
|
|
295
295
|
result['plesk']['active'].should be_false
|
296
296
|
result['plesk']['password'].should be_nil
|
297
297
|
end
|
298
|
-
|
298
|
+
|
299
299
|
it "should be able to activate plesk boot option" do
|
300
300
|
result = @h.boot_plesk! WORKING_IP, 'Fedora-13', '32', 'en_US', 'dr-gerner-aus-gzsz.confixx.de'
|
301
301
|
result.response.should be_an_instance_of Net::HTTPOK
|
@@ -303,7 +303,7 @@ describe "Plesk" do
|
|
303
303
|
result['plesk']['active'].should be_true
|
304
304
|
result['plesk']['password'].should_not be_nil
|
305
305
|
end
|
306
|
-
|
306
|
+
|
307
307
|
it "should be able to disable plesk boot option" do
|
308
308
|
result = @h.disable_boot_plesk! WORKING_IP
|
309
309
|
result.response.should be_an_instance_of Net::HTTPOK
|
@@ -317,7 +317,7 @@ describe "Traffic" do
|
|
317
317
|
before(:all) do
|
318
318
|
@h = Hetzner::API.new API_USERNAME, API_PASSWORD
|
319
319
|
end
|
320
|
-
|
320
|
+
|
321
321
|
it "should display the traffic for a specific ip address and a subnet" do
|
322
322
|
options = {
|
323
323
|
:ips => [WORKING_IP],
|
@@ -331,7 +331,7 @@ describe "Traffic" do
|
|
331
331
|
|
332
332
|
result.response.should be_an_instance_of Net::HTTPOK
|
333
333
|
end
|
334
|
-
|
334
|
+
|
335
335
|
it "should display the traffic for serveral IP addresse and no subnet" do
|
336
336
|
options = {
|
337
337
|
:ips => [WORKING_IP, WORKING_IP_2],
|
@@ -344,8 +344,8 @@ describe "Traffic" do
|
|
344
344
|
result = @h.traffic? options
|
345
345
|
|
346
346
|
result.response.should be_an_instance_of Net::HTTPOK
|
347
|
-
end
|
348
|
-
|
347
|
+
end
|
348
|
+
|
349
349
|
it "should display the traffic for subnets and no ip address" do
|
350
350
|
options = {
|
351
351
|
:ips => [],
|
@@ -358,5 +358,5 @@ describe "Traffic" do
|
|
358
358
|
result = @h.traffic? options
|
359
359
|
|
360
360
|
result.response.should be_an_instance_of Net::HTTPOK
|
361
|
-
end
|
361
|
+
end
|
362
362
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hetzner-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 62196353
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
-
|
12
|
-
version: 1.0.0.
|
10
|
+
- beta
|
11
|
+
- 1
|
12
|
+
version: 1.0.0.beta.1
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Roland Moriz
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2010-10-
|
20
|
+
date: 2010-10-11 00:00:00 +02:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|