squall 1.3.0 → 1.3.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.
- 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)
|