squall 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +1 -1
- data/README.md +64 -41
- data/Rakefile +3 -9
- data/lib/squall/data_store_zone.rb +20 -26
- data/lib/squall/disk.rb +174 -0
- data/lib/squall/firewall_rule.rb +34 -41
- data/lib/squall/hypervisor.rb +40 -38
- data/lib/squall/hypervisor_zone.rb +51 -63
- data/lib/squall/ip_address.rb +32 -37
- data/lib/squall/ip_address_join.rb +13 -22
- data/lib/squall/network.rb +36 -33
- data/lib/squall/network_zone.rb +27 -29
- data/lib/squall/payment.rb +22 -32
- data/lib/squall/role.rb +30 -37
- data/lib/squall/statistic.rb +3 -1
- data/lib/squall/support/base.rb +35 -31
- data/lib/squall/support/config.rb +25 -1
- data/lib/squall/support/version.rb +1 -1
- data/lib/squall/template.rb +7 -5
- data/lib/squall/transaction.rb +6 -4
- data/lib/squall/user.rb +84 -83
- data/lib/squall/user_group.rb +17 -30
- data/lib/squall/virtual_machine.rb +154 -178
- data/lib/squall/whitelist.rb +29 -40
- data/lib/squall.rb +27 -25
- data/spec/spec_helper.rb +6 -11
- data/spec/squall/data_store_zone_spec.rb +2 -20
- data/spec/squall/disk_spec.rb +189 -0
- data/spec/squall/firewall_rule_spec.rb +2 -32
- data/spec/squall/hypervisor_spec.rb +3 -47
- data/spec/squall/hypervisor_zone_spec.rb +3 -28
- data/spec/squall/ip_address_join_spec.rb +1 -15
- data/spec/squall/ip_address_spec.rb +10 -35
- data/spec/squall/network_spec.rb +20 -31
- data/spec/squall/network_zone_spec.rb +2 -36
- data/spec/squall/payment_spec.rb +2 -21
- data/spec/squall/role_spec.rb +4 -16
- data/spec/squall/support/base_spec.rb +10 -16
- data/spec/squall/template_spec.rb +0 -4
- data/spec/squall/transaction_spec.rb +1 -3
- data/spec/squall/user_group_spec.rb +1 -17
- data/spec/squall/user_spec.rb +4 -92
- data/spec/squall/virtual_machine_spec.rb +8 -242
- data/spec/squall/whitelist_spec.rb +2 -40
- data/spec/squall_spec.rb +2 -2
- data/spec/vcr_cassettes/disk/add_schedule.yml +40 -0
- data/spec/vcr_cassettes/disk/auto_backup_off.yml +40 -0
- data/spec/vcr_cassettes/disk/auto_backup_on.yml +40 -0
- data/spec/vcr_cassettes/disk/backups.yml +40 -0
- data/spec/vcr_cassettes/disk/build.yml +40 -0
- data/spec/vcr_cassettes/disk/create.yml +40 -0
- data/spec/vcr_cassettes/disk/delete.yml +38 -0
- data/spec/vcr_cassettes/disk/edit.yml +40 -0
- data/spec/vcr_cassettes/disk/iops_usage.yml +40 -0
- data/spec/vcr_cassettes/disk/list.yml +40 -0
- data/spec/vcr_cassettes/disk/migrate.yml +38 -0
- data/spec/vcr_cassettes/disk/schedules.yml +40 -0
- data/spec/vcr_cassettes/disk/unlock.yml +40 -0
- data/spec/vcr_cassettes/disk/vm_disk_list.yml +40 -0
- data/spec/vcr_cassettes/network/rebuild.yml +41 -0
- metadata +217 -66
- data/.gitignore +0 -13
- data/.rspec +0 -2
- data/.rvmrc +0 -41
- data/.travis.yml +0 -17
- data/lib/squall/support/params.rb +0 -50
- data/lib/squall/support/yaml.rb +0 -5
- data/spec/squall/support/params_spec.rb +0 -195
- data/squall.gemspec +0 -32
data/spec/squall/user_spec.rb
CHANGED
@@ -7,53 +7,12 @@ describe Squall::User do
|
|
7
7
|
"used_cpus", "group_id", "id", "used_memory", "payment_amount", "last_name", "remember_token",
|
8
8
|
"disk_space_available", "time_zone", "outstanding_amount", "login", "roles", "email", "first_name"]
|
9
9
|
@user = Squall::User.new
|
10
|
-
@valid = {:
|
11
|
-
:
|
10
|
+
@valid = {login: 'johndoe', email: 'johndoe@example.com', password: 'CD2480A3413F',
|
11
|
+
password_confirmation: 'CD2480A3413F', first_name: 'John', last_name: 'Doe' }
|
12
12
|
end
|
13
13
|
|
14
14
|
describe "#create" do
|
15
15
|
use_vcr_cassette "user/create"
|
16
|
-
it "requires login" do
|
17
|
-
invalid = @valid.reject{|k,v| k == :login }
|
18
|
-
requires_attr(:login) { @user.create(invalid) }
|
19
|
-
end
|
20
|
-
|
21
|
-
it "requires email" do
|
22
|
-
invalid = @valid.reject{|k,v| k == :email }
|
23
|
-
requires_attr(:email) { @user.create(invalid) }
|
24
|
-
end
|
25
|
-
|
26
|
-
it "requires password" do
|
27
|
-
invalid = @valid.reject{|k,v| k == :password }
|
28
|
-
requires_attr(:password) { @user.create(invalid) }
|
29
|
-
end
|
30
|
-
|
31
|
-
it "requires password confirmation" do
|
32
|
-
invalid = @valid.reject{|k,v| k == :password_confirmation }
|
33
|
-
requires_attr(:password_confirmation) { @user.create(invalid) }
|
34
|
-
end
|
35
|
-
|
36
|
-
it "requires first name" do
|
37
|
-
invalid = @valid.reject{|k,v| k == :first_name }
|
38
|
-
requires_attr(:first_name) { @user.create(invalid) }
|
39
|
-
end
|
40
|
-
|
41
|
-
it "requires last name" do
|
42
|
-
invalid = @valid.reject{|k,v| k == :last_name }
|
43
|
-
requires_attr(:last_name) { @user.create(invalid) }
|
44
|
-
end
|
45
|
-
|
46
|
-
it "allows all optional params" do
|
47
|
-
optional = [:role, :time_zone, :locale, :status, :billing_plan_id, :role_ids, :suspend_after_hours, :suspend_at]
|
48
|
-
@user.should_receive(:request).exactly(optional.size).times.and_return Hash.new("user" => {})
|
49
|
-
optional.each do |param|
|
50
|
-
@user.create(@valid.merge(param => "test"))
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
it "raises error on unknown params" do
|
55
|
-
expect { @user.create(@valid.merge(:what => 'what')) }.to raise_error(ArgumentError, 'Unknown params: what')
|
56
|
-
end
|
57
16
|
|
58
17
|
it "creates a user" do
|
59
18
|
user = @user.create(@valid)
|
@@ -64,26 +23,15 @@ describe Squall::User do
|
|
64
23
|
describe "#edit" do
|
65
24
|
use_vcr_cassette "user/edit"
|
66
25
|
|
67
|
-
it "allows select params" do
|
68
|
-
optional = [:email, :password, :password_confirmation, :first_name, :last_name, :user_group_id, :billing_plan_id, :role_ids, :suspend_at]
|
69
|
-
@user.should_receive(:request).exactly(optional.size).times.and_return Hash.new()
|
70
|
-
optional.each do |param|
|
71
|
-
@user.edit(1, param => "test")
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
it "raises error on unknown params" do
|
76
|
-
expect { @user.edit(1, :what => 'what') }.to raise_error(ArgumentError, 'Unknown params: what')
|
77
|
-
end
|
78
|
-
|
79
26
|
it "edits a user" do
|
80
|
-
user = @user.edit(1, :
|
27
|
+
user = @user.edit(1, first_name: "Test")
|
81
28
|
@user.success.should be_true
|
82
29
|
end
|
83
30
|
end
|
84
31
|
|
85
32
|
describe "#list" do
|
86
33
|
use_vcr_cassette "user/list"
|
34
|
+
|
87
35
|
it "returns a user list" do
|
88
36
|
users = @user.list
|
89
37
|
users.should be_an(Array)
|
@@ -97,9 +45,6 @@ describe Squall::User do
|
|
97
45
|
|
98
46
|
describe "#show" do
|
99
47
|
use_vcr_cassette "user/show"
|
100
|
-
it "requires an id" do
|
101
|
-
expect { @user.show }.to raise_error(ArgumentError)
|
102
|
-
end
|
103
48
|
|
104
49
|
it "returns a user" do
|
105
50
|
user = @user.show(1)
|
@@ -109,9 +54,6 @@ describe Squall::User do
|
|
109
54
|
|
110
55
|
describe "#generate_api_key" do
|
111
56
|
use_vcr_cassette "user/generate_api_key"
|
112
|
-
it "requires an id" do
|
113
|
-
expect { @user.generate_api_key }.to raise_error(ArgumentError)
|
114
|
-
end
|
115
57
|
|
116
58
|
it "generates a new key" do
|
117
59
|
user = @user.generate_api_key(1)
|
@@ -121,9 +63,6 @@ describe Squall::User do
|
|
121
63
|
|
122
64
|
describe "#suspend" do
|
123
65
|
use_vcr_cassette "user/suspend"
|
124
|
-
it "requires an id" do
|
125
|
-
expect { @user.suspend }.to raise_error(ArgumentError)
|
126
|
-
end
|
127
66
|
|
128
67
|
it "suspends a user" do
|
129
68
|
user = @user.suspend(1)
|
@@ -133,9 +72,6 @@ describe Squall::User do
|
|
133
72
|
|
134
73
|
describe "#activate" do
|
135
74
|
use_vcr_cassette "user/activate"
|
136
|
-
it "requires an id" do
|
137
|
-
expect { @user.activate }.to raise_error(ArgumentError)
|
138
|
-
end
|
139
75
|
|
140
76
|
it "activates a user" do
|
141
77
|
user = @user.activate(1)
|
@@ -149,9 +85,6 @@ describe Squall::User do
|
|
149
85
|
|
150
86
|
describe "#delete" do
|
151
87
|
use_vcr_cassette "user/delete"
|
152
|
-
it "requires an id" do
|
153
|
-
expect { @user.delete }.to raise_error(ArgumentError)
|
154
|
-
end
|
155
88
|
|
156
89
|
it "deletes a user" do
|
157
90
|
@user.delete(1)
|
@@ -161,9 +94,6 @@ describe Squall::User do
|
|
161
94
|
|
162
95
|
describe "#stats" do
|
163
96
|
use_vcr_cassette "user/stats"
|
164
|
-
it "requires an id" do
|
165
|
-
expect { @user.stats }.to raise_error(ArgumentError)
|
166
|
-
end
|
167
97
|
|
168
98
|
it "returns stats" do
|
169
99
|
stats = @user.stats(1)
|
@@ -173,9 +103,6 @@ describe Squall::User do
|
|
173
103
|
|
174
104
|
describe "#monthly_bills" do
|
175
105
|
use_vcr_cassette "user/monthly_bills"
|
176
|
-
it "requires an id" do
|
177
|
-
expect { @user.monthly_bills }.to raise_error(ArgumentError)
|
178
|
-
end
|
179
106
|
|
180
107
|
it "returns an array of bills for the user" do
|
181
108
|
stats = @user.monthly_bills(1)
|
@@ -185,9 +112,6 @@ describe Squall::User do
|
|
185
112
|
|
186
113
|
describe "#virtual_machines" do
|
187
114
|
use_vcr_cassette "user/virtual_machines"
|
188
|
-
it "requires an id" do
|
189
|
-
expect { @user.virtual_machines }.to raise_error(ArgumentError)
|
190
|
-
end
|
191
115
|
|
192
116
|
it "returns the virtual_machines" do
|
193
117
|
virtual_machines = @user.virtual_machines(1)
|
@@ -197,9 +121,6 @@ describe Squall::User do
|
|
197
121
|
|
198
122
|
describe "#hypervisors" do
|
199
123
|
use_vcr_cassette "user/hypervisors"
|
200
|
-
it "requires an id" do
|
201
|
-
expect { @user.hypervisors }.to raise_error(ArgumentError)
|
202
|
-
end
|
203
124
|
|
204
125
|
it "returns the virtual_machines" do
|
205
126
|
hypervisors = @user.hypervisors(1)
|
@@ -209,9 +130,6 @@ describe Squall::User do
|
|
209
130
|
|
210
131
|
describe "#data_store_zones" do
|
211
132
|
use_vcr_cassette "user/data_store_zones"
|
212
|
-
it "requires an id" do
|
213
|
-
expect { @user.data_store_zones }.to raise_error(ArgumentError)
|
214
|
-
end
|
215
133
|
|
216
134
|
it "returns the virtual_machines" do
|
217
135
|
data_store_zones = @user.data_store_zones(1)
|
@@ -221,9 +139,6 @@ describe Squall::User do
|
|
221
139
|
|
222
140
|
describe "#network_zones" do
|
223
141
|
use_vcr_cassette "user/network_zones"
|
224
|
-
it "requires an id" do
|
225
|
-
expect { @user.network_zones }.to raise_error(ArgumentError)
|
226
|
-
end
|
227
142
|
|
228
143
|
it "returns the network_zones" do
|
229
144
|
network_zones = @user.network_zones(1)
|
@@ -233,9 +148,6 @@ describe Squall::User do
|
|
233
148
|
|
234
149
|
describe "#limits" do
|
235
150
|
use_vcr_cassette "user/limits"
|
236
|
-
it "requires an id" do
|
237
|
-
expect { @user.limits }.to raise_error(ArgumentError)
|
238
|
-
end
|
239
151
|
|
240
152
|
it "returns the limits" do
|
241
153
|
limits = @user.limits(1)
|
@@ -3,8 +3,8 @@ require 'spec_helper'
|
|
3
3
|
describe Squall::VirtualMachine do
|
4
4
|
before(:each) do
|
5
5
|
@virtual_machine = Squall::VirtualMachine.new
|
6
|
-
@valid = {:
|
7
|
-
:
|
6
|
+
@valid = {label: 'testmachine', hostname: 'testmachine', memory: 512, cpus: 1,
|
7
|
+
cpu_shares: 10, primary_disk_size: 10, template_id: 1}
|
8
8
|
@keys = ["monthly_bandwidth_used", "cpus", "label", "created_at", "operating_system_distro",
|
9
9
|
"cpu_shares", "operating_system", "template_id", "allowed_swap", "local_remote_access_port",
|
10
10
|
"memory", "updated_at", "allow_resize_without_reboot", "recovery_mode", "hypervisor_id", "id",
|
@@ -29,9 +29,6 @@ describe Squall::VirtualMachine do
|
|
29
29
|
|
30
30
|
describe "#show" do
|
31
31
|
use_vcr_cassette "virtual_machine/show"
|
32
|
-
it "requires an id" do
|
33
|
-
expect { @virtual_machine.show }.to raise_error(ArgumentError)
|
34
|
-
end
|
35
32
|
|
36
33
|
it "returns a virtual_machine" do
|
37
34
|
virtual_machine = @virtual_machine.show(1)
|
@@ -42,71 +39,6 @@ describe Squall::VirtualMachine do
|
|
42
39
|
|
43
40
|
describe "#create" do
|
44
41
|
use_vcr_cassette "virtual_machine/create"
|
45
|
-
# validates :label, :hypervisor_id, :hostname, :memory, :cpus, :presence => true
|
46
|
-
it "requires label" do
|
47
|
-
requires_attr(:label) { @virtual_machine.create }
|
48
|
-
end
|
49
|
-
|
50
|
-
it "requires hostname" do
|
51
|
-
requires_attr(:hostname) {
|
52
|
-
@virtual_machine.create(:label => @valid[:label])
|
53
|
-
}
|
54
|
-
end
|
55
|
-
|
56
|
-
it "requires memory" do
|
57
|
-
requires_attr(:memory) {
|
58
|
-
@virtual_machine.create(:label => @valid[:label], :hostname => @valid[:hostname])
|
59
|
-
}
|
60
|
-
end
|
61
|
-
|
62
|
-
it "requires cpus" do
|
63
|
-
requires_attr(:cpus) {
|
64
|
-
@virtual_machine.create(:label => @valid[:label], :hostname => @valid[:hostname],
|
65
|
-
:memory => @valid[:memory])
|
66
|
-
}
|
67
|
-
end
|
68
|
-
|
69
|
-
it "requires cpu_shares" do
|
70
|
-
requires_attr(:cpu_shares) {
|
71
|
-
@virtual_machine.create(:label => @valid[:label], :hostname => @valid[:hostname],
|
72
|
-
:memory => @valid[:memory], :cpus => @valid[:cpu_shares])
|
73
|
-
}
|
74
|
-
end
|
75
|
-
|
76
|
-
it "requires primary_disk_size" do
|
77
|
-
requires_attr(:primary_disk_size) {
|
78
|
-
@virtual_machine.create(:label => @valid[:label], :hostname => @valid[:hostname],
|
79
|
-
:memory => @valid[:memory], :cpus => @valid[:cpu_shares],
|
80
|
-
:cpu_shares => @valid[:cpu_shares])
|
81
|
-
}
|
82
|
-
end
|
83
|
-
|
84
|
-
it "raises error on unknown params" do
|
85
|
-
expect {
|
86
|
-
@virtual_machine.create(@valid.merge(:what => 'what'))
|
87
|
-
}.to raise_error(ArgumentError, 'Unknown params: what')
|
88
|
-
end
|
89
|
-
|
90
|
-
it "allows all optional params" do
|
91
|
-
optional = [:swap_disk_size,
|
92
|
-
:primary_network_id,
|
93
|
-
:required_automatic_backup,
|
94
|
-
:rate_limit,
|
95
|
-
:required_ip_address_assignment,
|
96
|
-
:required_virtual_machine_build,
|
97
|
-
:admin_note,
|
98
|
-
:note,
|
99
|
-
:allowed_hot_migrate,
|
100
|
-
:hypervisor_id,
|
101
|
-
:initial_root_password,
|
102
|
-
:hypervisor_group_id
|
103
|
-
]
|
104
|
-
|
105
|
-
@virtual_machine.should_receive(:request).exactly(optional.size).times.and_return Hash.new('virtual_machine' => [])
|
106
|
-
optional.each do |param|
|
107
|
-
@virtual_machine.create(@valid.merge(param => "test"))
|
108
|
-
end
|
109
|
-
end
|
110
42
|
|
111
43
|
it "creates a virtual_machine" do
|
112
44
|
pending "broken in OnApp (triggering the Network Interfaces error): see README (and update when fixed)" do
|
@@ -120,24 +52,9 @@ describe Squall::VirtualMachine do
|
|
120
52
|
|
121
53
|
describe "#build" do
|
122
54
|
use_vcr_cassette "virtual_machine/build"
|
123
|
-
it "requires an id" do
|
124
|
-
expect { @virtual_machine.build }.to raise_error(ArgumentError)
|
125
|
-
@virtual_machine.success.should be_false
|
126
|
-
end
|
127
|
-
|
128
|
-
it "accepts :template_id and :required_startup" do
|
129
|
-
hash = [:post, "/virtual_machines/1/build.json", {:query=>{:virtual_machine=>{:template_id=>1, :required_startup=>1}}}]
|
130
|
-
@virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
|
131
|
-
@virtual_machine.build(1, :template_id => 1, :required_startup => 1)
|
132
|
-
end
|
133
|
-
|
134
|
-
it "raises error on unknown params" do
|
135
|
-
expect { @virtual_machine.build(1, :template_id => 1, :asdf => 1) }.to raise_error(ArgumentError, 'Unknown params: asdf')
|
136
|
-
@virtual_machine.success.should be_false
|
137
|
-
end
|
138
55
|
|
139
56
|
it "builds the VM" do
|
140
|
-
build = @virtual_machine.build(72, :
|
57
|
+
build = @virtual_machine.build(72, template_id: 1)
|
141
58
|
|
142
59
|
@virtual_machine.success.should be_true
|
143
60
|
end
|
@@ -146,62 +63,15 @@ describe Squall::VirtualMachine do
|
|
146
63
|
describe "#edit" do
|
147
64
|
use_vcr_cassette "virtual_machine/edit"
|
148
65
|
|
149
|
-
it "requires an id" do
|
150
|
-
expect { @virtual_machine.edit }.to raise_error(ArgumentError)
|
151
|
-
@virtual_machine.success.should be_false
|
152
|
-
end
|
153
|
-
|
154
|
-
it "raises error on unknown params" do
|
155
|
-
expect { @virtual_machine.edit(1, :blah => 1) }.to raise_error(ArgumentError, 'Unknown params: blah')
|
156
|
-
@virtual_machine.success.should be_false
|
157
|
-
end
|
158
|
-
|
159
|
-
it "accepts all valid keys" do
|
160
|
-
keys = [:label,
|
161
|
-
:hypervisor_id,
|
162
|
-
:hostname,
|
163
|
-
:memory,
|
164
|
-
:cpus,
|
165
|
-
:cpu_shares,
|
166
|
-
:primary_disk_size,
|
167
|
-
:cpu_shares,
|
168
|
-
:swap_disk_size,
|
169
|
-
:primary_network_id,
|
170
|
-
:required_automatic_backup,
|
171
|
-
:rate_limit,
|
172
|
-
:required_ip_address_assignment,
|
173
|
-
:required_virtual_machine_build,
|
174
|
-
:admin_note,
|
175
|
-
:note,
|
176
|
-
:allowed_hot_migrate,
|
177
|
-
:template_id,
|
178
|
-
:initial_root_password
|
179
|
-
]
|
180
|
-
keys.each do |k|
|
181
|
-
opts = @virtual_machine.default_params(k.to_sym => 1)
|
182
|
-
args = [:put, '/virtual_machines/1.json', opts]
|
183
|
-
@virtual_machine.should_receive(:request).with(*args).once.and_return([])
|
184
|
-
@virtual_machine.edit(1, k.to_sym => 1 )
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
66
|
it "updates the label" do
|
189
|
-
@virtual_machine.edit(1, :
|
67
|
+
virtual_machine = @virtual_machine.edit(1, label: 'testing')
|
190
68
|
@virtual_machine.success.should be_true
|
69
|
+
virtual_machine['label'].should == 'testing'
|
191
70
|
end
|
192
71
|
end
|
193
72
|
|
194
73
|
describe "#change_owner" do
|
195
74
|
use_vcr_cassette "virtual_machine/change_owner"
|
196
|
-
it "requires an id" do
|
197
|
-
expect { @virtual_machine.change_owner }.to raise_error(ArgumentError)
|
198
|
-
@virtual_machine.success.should be_false
|
199
|
-
end
|
200
|
-
|
201
|
-
it "requires a user_id" do
|
202
|
-
expect { @virtual_machine.change_owner 1 }.to raise_error(ArgumentError)
|
203
|
-
@virtual_machine.success.should be_false
|
204
|
-
end
|
205
75
|
|
206
76
|
pending "this should raise a 422 on OnApp's side, but it's currently raising a 500 which causes HTTParty to explode, see README (and update when fixed)" do
|
207
77
|
it "returns error on unknown user" do
|
@@ -220,15 +90,6 @@ describe Squall::VirtualMachine do
|
|
220
90
|
|
221
91
|
describe "#change_password" do
|
222
92
|
use_vcr_cassette "virtual_machine/change_password"
|
223
|
-
it "requires an id" do
|
224
|
-
expect { @virtual_machine.change_password }.to raise_error(ArgumentError)
|
225
|
-
@virtual_machine.success.should be_false
|
226
|
-
end
|
227
|
-
|
228
|
-
it "requires a password" do
|
229
|
-
expect { @virtual_machine.change_password 1 }.to raise_error(ArgumentError)
|
230
|
-
@virtual_machine.success.should be_false
|
231
|
-
end
|
232
93
|
|
233
94
|
it "changes the password" do
|
234
95
|
result = @virtual_machine.change_password(1, 'passwordsareimportant')
|
@@ -238,10 +99,6 @@ describe Squall::VirtualMachine do
|
|
238
99
|
|
239
100
|
describe "#set_ssh_keys" do
|
240
101
|
use_vcr_cassette "virtual_machine/set_ssh_keys"
|
241
|
-
it "requires an id" do
|
242
|
-
expect { @virtual_machine.set_ssh_keys }.to raise_error(ArgumentError)
|
243
|
-
@virtual_machine.success.should be_false
|
244
|
-
end
|
245
102
|
|
246
103
|
it "sets the SSH keys" do
|
247
104
|
result = @virtual_machine.set_ssh_keys(1)
|
@@ -251,25 +108,10 @@ describe Squall::VirtualMachine do
|
|
251
108
|
|
252
109
|
describe "#migrate" do
|
253
110
|
use_vcr_cassette "virtual_machine/migrate"
|
254
|
-
it "requires an id" do
|
255
|
-
expect { @virtual_machine.migrate }.to raise_error(ArgumentError)
|
256
|
-
@virtual_machine.success.should be_false
|
257
|
-
end
|
258
|
-
|
259
|
-
it "requires a destination" do
|
260
|
-
requires_attr(:destination) { @virtual_machine.migrate 1 }
|
261
|
-
@virtual_machine.success.should be_false
|
262
|
-
end
|
263
|
-
|
264
|
-
it "accepts cold_migrate_on_rollback" do
|
265
|
-
hash = [:post, "/virtual_machines/1/migrate.json", {:query => {:virtual_machine => {:destination => 1, :cold_migrate_on_rollback => 1}} }]
|
266
|
-
@virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
|
267
|
-
@virtual_machine.migrate 1, :destination => 1, :cold_migrate_on_rollback => 1
|
268
|
-
end
|
269
111
|
|
270
112
|
it "changes the hypervisor" do
|
271
113
|
pending "Broken in OnApp" do
|
272
|
-
result = @virtual_machine.migrate(1, :
|
114
|
+
result = @virtual_machine.migrate(1, destination: 2)
|
273
115
|
@virtual_machine.success.should be_true
|
274
116
|
result['virtual_machine']['hypervisor_id'].should == 2
|
275
117
|
end
|
@@ -278,9 +120,6 @@ describe Squall::VirtualMachine do
|
|
278
120
|
|
279
121
|
describe "#set_vip" do
|
280
122
|
use_vcr_cassette "virtual_machine/set_vip"
|
281
|
-
it "requires an id" do
|
282
|
-
expect { @virtual_machine.set_vip }.to raise_error(ArgumentError)
|
283
|
-
end
|
284
123
|
|
285
124
|
it "deletes a virtual_machine" do
|
286
125
|
@virtual_machine.set_vip(1)
|
@@ -298,9 +137,6 @@ describe Squall::VirtualMachine do
|
|
298
137
|
|
299
138
|
describe "#delete" do
|
300
139
|
use_vcr_cassette "virtual_machine/delete"
|
301
|
-
it "requires an id" do
|
302
|
-
expect { @virtual_machine.delete }.to raise_error(ArgumentError)
|
303
|
-
end
|
304
140
|
|
305
141
|
it "deletes a virtual_machine" do
|
306
142
|
virtual_machine = @virtual_machine.delete(1)
|
@@ -310,51 +146,17 @@ describe Squall::VirtualMachine do
|
|
310
146
|
|
311
147
|
describe "#resize" do
|
312
148
|
use_vcr_cassette "virtual_machine/resize"
|
313
|
-
it "requires an id" do
|
314
|
-
expect { @virtual_machine.resize }.to raise_error(ArgumentError)
|
315
|
-
end
|
316
|
-
|
317
|
-
it "accepts memory" do
|
318
|
-
hash = [:post, "/virtual_machines/1/resize.json", @virtual_machine.default_params(:memory => 1)]
|
319
|
-
@virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
|
320
|
-
@virtual_machine.resize 1, :memory => 1
|
321
|
-
end
|
322
|
-
|
323
|
-
it "accepts cpus" do
|
324
|
-
hash = [:post, "/virtual_machines/1/resize.json", @virtual_machine.default_params(:cpus => 1)]
|
325
|
-
@virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
|
326
|
-
@virtual_machine.resize 1, :cpus => 1
|
327
|
-
end
|
328
|
-
|
329
|
-
it "accepts cpu_shares" do
|
330
|
-
hash = [:post, "/virtual_machines/1/resize.json", @virtual_machine.default_params(:cpu_shares => 1)]
|
331
|
-
@virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
|
332
|
-
@virtual_machine.resize 1, :cpu_shares => 1
|
333
|
-
end
|
334
|
-
|
335
|
-
it "accepts allow_cold_resize" do
|
336
|
-
hash = [:post, "/virtual_machines/1/resize.json", @virtual_machine.default_params(:allow_cold_resize => 1)]
|
337
|
-
@virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
|
338
|
-
@virtual_machine.resize 1, :allow_cold_resize => 1
|
339
|
-
end
|
340
149
|
|
341
150
|
it "resizes a virtual_machine" do
|
342
|
-
virtual_machine = @virtual_machine.resize(1, :
|
151
|
+
virtual_machine = @virtual_machine.resize(1, memory: 1000)
|
343
152
|
@virtual_machine.success.should be_true
|
344
153
|
|
345
154
|
virtual_machine['memory'].should == 1000
|
346
155
|
end
|
347
|
-
|
348
|
-
it "requires at least one option" do
|
349
|
-
expect { @virtual_machine.resize(1) }.to raise_error(ArgumentError)
|
350
|
-
end
|
351
156
|
end
|
352
157
|
|
353
158
|
describe "#suspend" do
|
354
159
|
use_vcr_cassette "virtual_machine/suspend"
|
355
|
-
it "requires an id" do
|
356
|
-
expect { @virtual_machine.suspend }.to raise_error(ArgumentError)
|
357
|
-
end
|
358
160
|
|
359
161
|
it "suspends a virtual_machine" do
|
360
162
|
virtual_machine = @virtual_machine.suspend(1)
|
@@ -364,9 +166,6 @@ describe Squall::VirtualMachine do
|
|
364
166
|
|
365
167
|
describe "#unlock" do
|
366
168
|
use_vcr_cassette "virtual_machine/unlock"
|
367
|
-
it "requires an id" do
|
368
|
-
expect { @virtual_machine.unlock }.to raise_error(ArgumentError)
|
369
|
-
end
|
370
169
|
|
371
170
|
it "unlocks a virtual_machine" do
|
372
171
|
virtual_machine = @virtual_machine.unlock(1)
|
@@ -376,10 +175,6 @@ describe Squall::VirtualMachine do
|
|
376
175
|
|
377
176
|
describe "#startup" do
|
378
177
|
use_vcr_cassette "virtual_machine/startup"
|
379
|
-
it "requires an id" do
|
380
|
-
expect { @virtual_machine.startup }.to raise_error(ArgumentError)
|
381
|
-
@virtual_machine.success.should be_false
|
382
|
-
end
|
383
178
|
|
384
179
|
it "startups a virtual_machine" do
|
385
180
|
@virtual_machine.startup(1)
|
@@ -389,10 +184,6 @@ describe Squall::VirtualMachine do
|
|
389
184
|
|
390
185
|
describe "#shutdown" do
|
391
186
|
use_vcr_cassette "virtual_machine/shutdown"
|
392
|
-
it "requires an id" do
|
393
|
-
expect { @virtual_machine.shutdown }.to raise_error(ArgumentError)
|
394
|
-
@virtual_machine.success.should be_false
|
395
|
-
end
|
396
187
|
|
397
188
|
it "will shutdown a virtual_machine" do
|
398
189
|
virtual_machine = @virtual_machine.shutdown(1)
|
@@ -402,10 +193,6 @@ describe Squall::VirtualMachine do
|
|
402
193
|
|
403
194
|
describe "#stop" do
|
404
195
|
use_vcr_cassette "virtual_machine/stop"
|
405
|
-
it "requires an id" do
|
406
|
-
expect { @virtual_machine.stop }.to raise_error(ArgumentError)
|
407
|
-
@virtual_machine.success.should be_false
|
408
|
-
end
|
409
196
|
|
410
197
|
it "will stop a virtual_machine" do
|
411
198
|
virtual_machine = @virtual_machine.stop(1)
|
@@ -415,10 +202,6 @@ describe Squall::VirtualMachine do
|
|
415
202
|
|
416
203
|
describe "#reboot" do
|
417
204
|
use_vcr_cassette "virtual_machine/reboot"
|
418
|
-
it "requires an id" do
|
419
|
-
expect { @virtual_machine.reboot }.to raise_error(ArgumentError)
|
420
|
-
@virtual_machine.success.should be_false
|
421
|
-
end
|
422
205
|
|
423
206
|
it "will reboot a virtual_machine" do
|
424
207
|
virtual_machine = @virtual_machine.reboot(1)
|
@@ -426,7 +209,7 @@ describe Squall::VirtualMachine do
|
|
426
209
|
end
|
427
210
|
|
428
211
|
it "reboots in recovery" do
|
429
|
-
hash = [:post, "/virtual_machines/1/reboot.json", {:
|
212
|
+
hash = [:post, "/virtual_machines/1/reboot.json", {query: {mode: :recovery}}]
|
430
213
|
@virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
|
431
214
|
@virtual_machine.reboot 1, true
|
432
215
|
end
|
@@ -434,15 +217,6 @@ describe Squall::VirtualMachine do
|
|
434
217
|
|
435
218
|
describe "#segregate" do
|
436
219
|
use_vcr_cassette "virtual_machine/segregate"
|
437
|
-
it "requires an id" do
|
438
|
-
expect { @virtual_machine.segregate }.to raise_error(ArgumentError)
|
439
|
-
@virtual_machine.success.should be_false
|
440
|
-
end
|
441
|
-
|
442
|
-
it "requires a target_vm_id" do
|
443
|
-
expect { @virtual_machine.segregate 1 }.to raise_error(ArgumentError)
|
444
|
-
@virtual_machine.success.should be_false
|
445
|
-
end
|
446
220
|
|
447
221
|
it "segregates the VMS with given ids" do
|
448
222
|
result = @virtual_machine.segregate(1, 2)
|
@@ -452,10 +226,6 @@ describe Squall::VirtualMachine do
|
|
452
226
|
|
453
227
|
describe "#console" do
|
454
228
|
use_vcr_cassette "virtual_machine/console"
|
455
|
-
it "requires an id" do
|
456
|
-
expect { @virtual_machine.console }.to raise_error(ArgumentError)
|
457
|
-
@virtual_machine.success.should be_false
|
458
|
-
end
|
459
229
|
|
460
230
|
it "will reboot a virtual_machine" do
|
461
231
|
pending "broken on OnApp (returning 500)" do
|
@@ -467,10 +237,6 @@ describe Squall::VirtualMachine do
|
|
467
237
|
|
468
238
|
describe "#stats" do
|
469
239
|
use_vcr_cassette "virtual_machine/stats"
|
470
|
-
it "requires an id" do
|
471
|
-
expect { @virtual_machine.stats }.to raise_error(ArgumentError)
|
472
|
-
@virtual_machine.success.should be_false
|
473
|
-
end
|
474
240
|
|
475
241
|
it "will stop a virtual_machine" do
|
476
242
|
pending "broken on OnApp (returning 500)" do
|
@@ -3,16 +3,12 @@ require 'spec_helper'
|
|
3
3
|
describe Squall::Whitelist do
|
4
4
|
before(:each) do
|
5
5
|
@whitelist = Squall::Whitelist.new
|
6
|
-
@valid = {:
|
6
|
+
@valid = {ip: "192.168.1.1"}
|
7
7
|
end
|
8
8
|
|
9
9
|
describe "#list" do
|
10
10
|
use_vcr_cassette "whitelist/list"
|
11
11
|
|
12
|
-
it "requires user id" do
|
13
|
-
expect { @whitelist.list }.to raise_error(ArgumentError)
|
14
|
-
end
|
15
|
-
|
16
12
|
it "returns a user's whitelists" do
|
17
13
|
whitelists = @whitelist.list(1)
|
18
14
|
whitelists.should be_an(Array)
|
@@ -26,9 +22,6 @@ describe Squall::Whitelist do
|
|
26
22
|
|
27
23
|
describe "#show" do
|
28
24
|
use_vcr_cassette "whitelist/show"
|
29
|
-
it "requires an id" do
|
30
|
-
expect { @whitelist.show(1) }.to raise_error(ArgumentError)
|
31
|
-
end
|
32
25
|
|
33
26
|
it "returns a whitelist" do
|
34
27
|
whitelist = @whitelist.show(1, 2)
|
@@ -38,22 +31,6 @@ describe Squall::Whitelist do
|
|
38
31
|
|
39
32
|
describe "#create" do
|
40
33
|
use_vcr_cassette "whitelist/create"
|
41
|
-
it "requires amount" do
|
42
|
-
invalid = @valid.reject{|k,v| k == :ip }
|
43
|
-
requires_attr(:ip) { @whitelist.create(1, invalid) }
|
44
|
-
end
|
45
|
-
|
46
|
-
it "allows all optional params" do
|
47
|
-
optional = [:description]
|
48
|
-
@whitelist.should_receive(:request).exactly(optional.size).times.and_return Hash.new("whitelist" => {})
|
49
|
-
optional.each do |param|
|
50
|
-
@whitelist.create(1, @valid.merge(param => "test"))
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
it "raises error on unknown params" do
|
55
|
-
expect { @whitelist.create(1, @valid.merge(:what => 'what')) }.to raise_error(ArgumentError, 'Unknown params: what')
|
56
|
-
end
|
57
34
|
|
58
35
|
it "creates a whitelist for a user" do
|
59
36
|
@whitelist.create(1, @valid)
|
@@ -64,29 +41,14 @@ describe Squall::Whitelist do
|
|
64
41
|
describe "#edit" do
|
65
42
|
use_vcr_cassette "whitelist/edit"
|
66
43
|
|
67
|
-
it "allows select params" do
|
68
|
-
optional = [:ip, :description]
|
69
|
-
@whitelist.should_receive(:request).exactly(optional.size).times.and_return Hash.new()
|
70
|
-
optional.each do |param|
|
71
|
-
@whitelist.edit(1, 1, param => "test")
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
it "raises error on unknown params" do
|
76
|
-
expect { @whitelist.edit(1, 1, :what => 'what') }.to raise_error(ArgumentError, 'Unknown params: what')
|
77
|
-
end
|
78
|
-
|
79
44
|
it "edits a whitelist" do
|
80
|
-
@whitelist.edit(1, 1, :
|
45
|
+
@whitelist.edit(1, 1, description: "This is actually a different computer.")
|
81
46
|
@whitelist.success.should be_true
|
82
47
|
end
|
83
48
|
end
|
84
49
|
|
85
50
|
describe "#delete" do
|
86
51
|
use_vcr_cassette "whitelist/delete"
|
87
|
-
it "requires an id" do
|
88
|
-
expect { @whitelist.delete }.to raise_error(ArgumentError)
|
89
|
-
end
|
90
52
|
|
91
53
|
it "deletes a whitelist" do
|
92
54
|
@whitelist.delete(1, 1)
|