squall 1.2.0beta1 → 1.2.1beta1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -7,23 +7,9 @@ rescue LoadError
7
7
  exit
8
8
  end
9
9
 
10
- begin
11
- require 'metric_fu'
12
- MetricFu::Configuration.run do |config|
13
- config.rcov[:rcov_opts] << "-Ispec"
14
- end
15
- rescue LoadError
16
- end
17
-
18
10
  RSpec::Core::RakeTask.new :spec
19
11
  Bundler::GemHelper.install_tasks
20
12
 
21
- desc "Run all specs with rcov"
22
- RSpec::Core::RakeTask.new(:rcov) do |t|
23
- t.rcov = true
24
- t.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/,features\/}
25
- end
26
-
27
13
  desc "Open an irb session preloaded with this library"
28
14
  task :console do
29
15
  sh "irb -rubygems -r ./lib/squall.rb -I ./lib"
@@ -51,10 +51,13 @@ module Squall
51
51
  c.response :on_app_errors
52
52
  c.response :json
53
53
  c.adapter :net_http
54
+ if Squall.config[:debug]
55
+ c.use Faraday::Response::Logger
56
+ end
54
57
  end
55
58
  response = conn.send(request_method, path)
56
59
  @success = (200..207).include?(response.env[:status])
57
- @result = conn.send(request_method, path).body
60
+ @result = response.body
58
61
  end
59
62
 
60
63
  # Raises an error if a request is made without first calling Squall.config
@@ -1,3 +1,3 @@
1
1
  module Squall
2
- VERSION = '1.2.0beta1'
2
+ VERSION = '1.2.1beta1'
3
3
  end
@@ -43,6 +43,8 @@ module Squall
43
43
  # * +note+ - Comment that can be set by the user of the virtual machine
44
44
  # * +allowed_hot_migrate+ - Set to '1' to allow hot migration
45
45
  # * +initial_root_password+ - Root password for the virtual machine. 6-31 characters consisting of letters, numbers, '-' and '_'
46
+ # * hypervisor_group_id - the ID of the hypervisor zone in which the VM will be created. Optional: if no hypervisor zone is set, the VM will be built in any available hypervisor zone.
47
+
46
48
  #
47
49
  # ==== Example
48
50
  #
@@ -70,7 +72,8 @@ module Squall
70
72
  :admin_note,
71
73
  :note,
72
74
  :allowed_hot_migrate,
73
- :initial_root_password
75
+ :initial_root_password,
76
+ :hypervisor_group_id
74
77
  ]
75
78
  params.required(required).accepts(optional).validate! options
76
79
  response = request(:post, '/virtual_machines.json', default_params(options))
@@ -8,11 +8,11 @@ describe Squall::FirewallRule do
8
8
 
9
9
  describe "#list" do
10
10
  use_vcr_cassette "firewall_rule/list"
11
-
11
+
12
12
  it "requires vm id" do
13
13
  expect { @firewall_rule.list }.to raise_error(ArgumentError)
14
14
  end
15
-
15
+
16
16
  it "returns a list of firewall rules for a vm" do
17
17
  firewall_rules = @firewall_rule.list(1)
18
18
  firewall_rules.should be_an(Array)
@@ -23,24 +23,24 @@ describe Squall::FirewallRule do
23
23
  firewall_rules.all?.should be_true
24
24
  end
25
25
  end
26
-
26
+
27
27
  describe "#create" do
28
28
  use_vcr_cassette "firewall_rule/create"
29
29
  it "requires command" do
30
30
  invalid = @valid.reject{|k,v| k == :command }
31
31
  requires_attr(:command) { @firewall_rule.create(1, invalid) }
32
32
  end
33
-
33
+
34
34
  it "requires protocol" do
35
35
  invalid = @valid.reject{|k,v| k == :protocol }
36
36
  requires_attr(:protocol) { @firewall_rule.create(1, invalid) }
37
37
  end
38
-
38
+
39
39
  it "requires network_interface_id" do
40
40
  invalid = @valid.reject{|k,v| k == :network_interface_id }
41
41
  requires_attr(:network_interface_id) { @firewall_rule.create(1, invalid) }
42
42
  end
43
-
43
+
44
44
  it "allows all optional params" do
45
45
  optional = [:network_interface_id, :address, :port]
46
46
  @firewall_rule.should_receive(:request).exactly(optional.size).times.and_return Hash.new("firewall_rule" => {})
@@ -48,11 +48,11 @@ describe Squall::FirewallRule do
48
48
  @firewall_rule.create(1, @valid.merge(param => "test"))
49
49
  end
50
50
  end
51
-
51
+
52
52
  it "raises error on unknown params" do
53
53
  expect { @firewall_rule.create(1, @valid.merge(:what => 'what')) }.to raise_error(ArgumentError, 'Unknown params: what')
54
54
  end
55
-
55
+
56
56
  it "raises an error for an invalid vm id" do
57
57
  expect { @firewall_rule.create(404, @valid) }.to raise_error(Squall::NotFoundError)
58
58
  end
@@ -62,10 +62,10 @@ describe Squall::FirewallRule do
62
62
  @firewall_rule.success.should be_true
63
63
  end
64
64
  end
65
-
65
+
66
66
  describe "#edit" do
67
67
  use_vcr_cassette "firewall_rule/edit"
68
-
68
+
69
69
  it "allows select params" do
70
70
  optional = [:command, :protocol, :network_interface_id, :address, :port]
71
71
  @firewall_rule.should_receive(:request).exactly(optional.size).times.and_return Hash.new()
@@ -73,35 +73,31 @@ describe Squall::FirewallRule do
73
73
  @firewall_rule.edit(1, 1, param => "test")
74
74
  end
75
75
  end
76
-
76
+
77
77
  it "raises error on unknown params" do
78
78
  expect { @firewall_rule.edit(1, 1, :what => 'what') }.to raise_error(ArgumentError, 'Unknown params: what')
79
79
  end
80
80
 
81
81
  it "edits a firewall rule" do
82
- pending "broken in OnApp: returning invalid JSON" do
83
- @firewall_rule.edit(1, 1, :port => 1000)
84
- @firewall_rule.success.should be_true
85
- end
82
+ @firewall_rule.edit(1, 1, :port => 1000)
83
+ @firewall_rule.success.should be_true
86
84
  end
87
-
85
+
88
86
  it "raises an error for an invalid firewall rule id" do
89
87
  expect { @firewall_rule.edit(1, 404, @valid) }.to raise_error(Squall::NotFoundError)
90
88
  end
91
89
  end
92
-
90
+
93
91
  describe "#delete" do
94
92
  use_vcr_cassette "firewall_rule/delete"
95
-
93
+
96
94
  it "requires an id" do
97
95
  expect { @firewall_rule.delete }.to raise_error(ArgumentError)
98
96
  end
99
97
 
100
98
  it "deletes a firewall rule" do
101
- pending "broken in OnApp: returning invalid JSON" do
102
- @firewall_rule.delete(1, 1)
103
- @firewall_rule.success.should be_true
104
- end
99
+ @firewall_rule.delete(1, 1)
100
+ @firewall_rule.success.should be_true
105
101
  end
106
102
 
107
103
  it "returns NotFound for missing virtual machine" do
@@ -109,4 +105,4 @@ describe Squall::FirewallRule do
109
105
  end
110
106
  end
111
107
 
112
- end
108
+ end
@@ -79,7 +79,7 @@ describe Squall::VirtualMachine do
79
79
 
80
80
  it "requires primary_disk_size" do
81
81
  requires_attr(:primary_disk_size) {
82
- @virtual_machine.create(:label => @valid[:label], :hostname => @valid[:hostname],
82
+ @virtual_machine.create(:label => @valid[:label], :hostname => @valid[:hostname],
83
83
  :memory => @valid[:memory], :cpus => @valid[:cpu_shares],
84
84
  :cpu_shares => @valid[:cpu_shares])
85
85
  }
@@ -102,7 +102,8 @@ describe Squall::VirtualMachine do
102
102
  :note,
103
103
  :allowed_hot_migrate,
104
104
  :hypervisor_id,
105
- :initial_root_password
105
+ :initial_root_password,
106
+ :hypervisor_group_id
106
107
  ]
107
108
 
108
109
  @virtual_machine.should_receive(:request).exactly(optional.size).times.and_return Hash.new('virtual_machine' => [])
@@ -112,7 +113,7 @@ describe Squall::VirtualMachine do
112
113
  end
113
114
 
114
115
  it "creates a virtual_machine" do
115
- pending "broken in OnApp (triggering the Network Interfaces error): see README (and update when fixed)" do
116
+ pending "broken in OnApp (triggering the Network Interfaces error): see README (and update when fixed)" do
116
117
  virtual_machine = @virtual_machine.create(@valid)
117
118
  @valid.each do |k,v|
118
119
  virtual_machine[k].should == @valid[k.to_s]
@@ -257,19 +258,19 @@ describe Squall::VirtualMachine do
257
258
  @virtual_machine.success.should be_true
258
259
  end
259
260
  end
260
-
261
+
261
262
  describe "#set_ssh_keys" do
262
263
  use_vcr_cassette "virtual_machine/set_ssh_keys"
263
264
  it "requires an id" do
264
265
  expect { @virtual_machine.set_ssh_keys }.to raise_error(ArgumentError)
265
266
  @virtual_machine.success.should be_false
266
267
  end
267
-
268
+
268
269
  it "404s on not found" do
269
270
  expect { @virtual_machine.set_ssh_keys(404) }.to raise_error(Squall::NotFoundError)
270
271
  @virtual_machine.success.should be_false
271
272
  end
272
-
273
+
273
274
  it "sets the SSH keys" do
274
275
  result = @virtual_machine.set_ssh_keys(1)
275
276
  @virtual_machine.success.should be_true
@@ -312,7 +313,7 @@ describe Squall::VirtualMachine do
312
313
  end
313
314
  end
314
315
  end
315
-
316
+
316
317
  describe "#set_vip" do
317
318
  use_vcr_cassette "virtual_machine/set_vip"
318
319
  it "requires an id" do
@@ -327,7 +328,7 @@ describe Squall::VirtualMachine do
327
328
  @virtual_machine.set_vip(1)
328
329
  @virtual_machine.success.should be_true
329
330
  end
330
-
331
+
331
332
  it "sets the vip status to false if currently true" do
332
333
  pending "No way to actually test this without being able to interact with server state" do
333
334
  result = @virtual_machine.set_vip(1)
@@ -362,25 +363,25 @@ describe Squall::VirtualMachine do
362
363
  it "returns not found for invalid virtual_machines" do
363
364
  expect { @virtual_machine.resize(404, :memory => 1) }.to raise_error(Squall::NotFoundError)
364
365
  end
365
-
366
+
366
367
  it "accepts memory" do
367
368
  hash = [:post, "/virtual_machines/1/resize.json", @virtual_machine.default_params(:memory => 1)]
368
369
  @virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
369
370
  @virtual_machine.resize 1, :memory => 1
370
371
  end
371
-
372
+
372
373
  it "accepts cpus" do
373
374
  hash = [:post, "/virtual_machines/1/resize.json", @virtual_machine.default_params(:cpus => 1)]
374
375
  @virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
375
376
  @virtual_machine.resize 1, :cpus => 1
376
377
  end
377
-
378
+
378
379
  it "accepts cpu_shares" do
379
380
  hash = [:post, "/virtual_machines/1/resize.json", @virtual_machine.default_params(:cpu_shares => 1)]
380
381
  @virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
381
382
  @virtual_machine.resize 1, :cpu_shares => 1
382
383
  end
383
-
384
+
384
385
  it "accepts allow_cold_resize" do
385
386
  hash = [:post, "/virtual_machines/1/resize.json", @virtual_machine.default_params(:allow_cold_resize => 1)]
386
387
  @virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
@@ -393,7 +394,7 @@ describe Squall::VirtualMachine do
393
394
 
394
395
  virtual_machine['memory'].should == 1000
395
396
  end
396
-
397
+
397
398
  it "requires at least one option" do
398
399
  expect { @virtual_machine.resize(1) }.to raise_error(ArgumentError)
399
400
  end
@@ -501,14 +502,14 @@ describe Squall::VirtualMachine do
501
502
  virtual_machine = @virtual_machine.reboot(1)
502
503
  @virtual_machine.success.should be_true
503
504
  end
504
-
505
+
505
506
  it "reboots in recovery" do
506
507
  hash = [:post, "/virtual_machines/1/reboot.json", {:query => {:mode => :recovery}}]
507
508
  @virtual_machine.should_receive(:request).with(*hash).once.and_return({'virtual_machine'=>{}})
508
509
  @virtual_machine.reboot 1, true
509
510
  end
510
511
  end
511
-
512
+
512
513
  describe "#segregate" do
513
514
  use_vcr_cassette "virtual_machine/segregate"
514
515
  it "requires an id" do
@@ -536,7 +537,7 @@ describe Squall::VirtualMachine do
536
537
  @virtual_machine.success.should be_true
537
538
  end
538
539
  end
539
-
540
+
540
541
  describe "#console" do
541
542
  use_vcr_cassette "virtual_machine/console"
542
543
  it "requires an id" do
@@ -550,7 +551,7 @@ describe Squall::VirtualMachine do
550
551
  @virtual_machine.success.should be_false
551
552
  end
552
553
  end
553
-
554
+
554
555
  it "will reboot a virtual_machine" do
555
556
  pending "broken on OnApp (returning 500)" do
556
557
  virtual_machine = @virtual_machine.console(1)
@@ -558,7 +559,7 @@ describe Squall::VirtualMachine do
558
559
  end
559
560
  end
560
561
  end
561
-
562
+
562
563
  describe "#stats" do
563
564
  use_vcr_cassette "virtual_machine/stats"
564
565
  it "requires an id" do
data/squall.gemspec CHANGED
@@ -14,20 +14,16 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.rubyforge_project = "squall"
16
16
 
17
- s.add_runtime_dependency 'faraday', '~> 0.8.0.rc2'
18
- s.add_runtime_dependency 'faraday_middleware', '~> 0.8.4'
19
- s.add_runtime_dependency 'json', '~> 1.6.1' if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
17
+ s.add_runtime_dependency 'faraday', '~> 0.8.1'
18
+ s.add_runtime_dependency 'faraday_middleware', '~> 0.8.7'
19
+ s.add_runtime_dependency 'json', '~> 1.7.3' if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
20
20
  s.add_runtime_dependency('jruby-openssl', '~> 0.7.3') if RUBY_PLATFORM == 'java'
21
21
 
22
- s.add_development_dependency 'rspec', '~> 2.5'
22
+ s.add_development_dependency 'rspec', '~> 2.10.0'
23
23
  s.add_development_dependency 'fakeweb', '~> 1.3'
24
24
  s.add_development_dependency 'vcr', '~> 1.8'
25
25
  s.add_development_dependency 'awesome_print', '~> 1.0.2'
26
- s.add_development_dependency 'rake', '~> 0.8.7'
27
- if !defined?(RUBY_ENGINE) || RUBY_ENGINE != 'rbx'
28
- s.add_development_dependency 'rcov', '~> 0.9'
29
- s.add_development_dependency 'metric_fu', '~> 2.1'
30
- end
26
+ s.add_development_dependency 'rake', '~> 0.9.2.2'
31
27
 
32
28
  s.files = `git ls-files`.split("\n")
33
29
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squall
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0beta1
4
+ version: 1.2.1beta1
5
5
  prerelease: 5
6
6
  platform: ruby
7
7
  authors:
@@ -9,44 +9,45 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-05 00:00:00.000000000 Z
12
+ date: 2012-06-08 00:00:00.000000000 -04:00
13
+ default_executable:
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: faraday
16
- requirement: &13791720 !ruby/object:Gem::Requirement
17
+ requirement: &12810220 !ruby/object:Gem::Requirement
17
18
  none: false
18
19
  requirements:
19
20
  - - ~>
20
21
  - !ruby/object:Gem::Version
21
- version: 0.8.0.rc2
22
+ version: 0.8.1
22
23
  type: :runtime
23
24
  prerelease: false
24
- version_requirements: *13791720
25
+ version_requirements: *12810220
25
26
  - !ruby/object:Gem::Dependency
26
27
  name: faraday_middleware
27
- requirement: &13807600 !ruby/object:Gem::Requirement
28
+ requirement: &12809260 !ruby/object:Gem::Requirement
28
29
  none: false
29
30
  requirements:
30
31
  - - ~>
31
32
  - !ruby/object:Gem::Version
32
- version: 0.8.4
33
+ version: 0.8.7
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *13807600
36
+ version_requirements: *12809260
36
37
  - !ruby/object:Gem::Dependency
37
38
  name: rspec
38
- requirement: &13807080 !ruby/object:Gem::Requirement
39
+ requirement: &12781480 !ruby/object:Gem::Requirement
39
40
  none: false
40
41
  requirements:
41
42
  - - ~>
42
43
  - !ruby/object:Gem::Version
43
- version: '2.5'
44
+ version: 2.10.0
44
45
  type: :development
45
46
  prerelease: false
46
- version_requirements: *13807080
47
+ version_requirements: *12781480
47
48
  - !ruby/object:Gem::Dependency
48
49
  name: fakeweb
49
- requirement: &13806620 !ruby/object:Gem::Requirement
50
+ requirement: &12780680 !ruby/object:Gem::Requirement
50
51
  none: false
51
52
  requirements:
52
53
  - - ~>
@@ -54,10 +55,10 @@ dependencies:
54
55
  version: '1.3'
55
56
  type: :development
56
57
  prerelease: false
57
- version_requirements: *13806620
58
+ version_requirements: *12780680
58
59
  - !ruby/object:Gem::Dependency
59
60
  name: vcr
60
- requirement: &13806160 !ruby/object:Gem::Requirement
61
+ requirement: &12780040 !ruby/object:Gem::Requirement
61
62
  none: false
62
63
  requirements:
63
64
  - - ~>
@@ -65,10 +66,10 @@ dependencies:
65
66
  version: '1.8'
66
67
  type: :development
67
68
  prerelease: false
68
- version_requirements: *13806160
69
+ version_requirements: *12780040
69
70
  - !ruby/object:Gem::Dependency
70
71
  name: awesome_print
71
- requirement: &13805700 !ruby/object:Gem::Requirement
72
+ requirement: &12778900 !ruby/object:Gem::Requirement
72
73
  none: false
73
74
  requirements:
74
75
  - - ~>
@@ -76,40 +77,18 @@ dependencies:
76
77
  version: 1.0.2
77
78
  type: :development
78
79
  prerelease: false
79
- version_requirements: *13805700
80
+ version_requirements: *12778900
80
81
  - !ruby/object:Gem::Dependency
81
82
  name: rake
82
- requirement: &13805240 !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ~>
86
- - !ruby/object:Gem::Version
87
- version: 0.8.7
88
- type: :development
89
- prerelease: false
90
- version_requirements: *13805240
91
- - !ruby/object:Gem::Dependency
92
- name: rcov
93
- requirement: &13804740 !ruby/object:Gem::Requirement
94
- none: false
95
- requirements:
96
- - - ~>
97
- - !ruby/object:Gem::Version
98
- version: '0.9'
99
- type: :development
100
- prerelease: false
101
- version_requirements: *13804740
102
- - !ruby/object:Gem::Dependency
103
- name: metric_fu
104
- requirement: &13804280 !ruby/object:Gem::Requirement
83
+ requirement: &12778120 !ruby/object:Gem::Requirement
105
84
  none: false
106
85
  requirements:
107
86
  - - ~>
108
87
  - !ruby/object:Gem::Version
109
- version: '2.1'
88
+ version: 0.9.2.2
110
89
  type: :development
111
90
  prerelease: false
112
- version_requirements: *13804280
91
+ version_requirements: *12778120
113
92
  description: A Ruby library for working with the OnApp REST API
114
93
  email:
115
94
  - jmazzi@site5.com
@@ -287,6 +266,7 @@ files:
287
266
  - spec/vcr_cassettes/whitelist/list.yml
288
267
  - spec/vcr_cassettes/whitelist/show.yml
289
268
  - squall.gemspec
269
+ has_rdoc: true
290
270
  homepage: ''
291
271
  licenses: []
292
272
  post_install_message:
@@ -301,7 +281,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
301
281
  version: '0'
302
282
  segments:
303
283
  - 0
304
- hash: 4481202589571130379
284
+ hash: -2705965580518717746
305
285
  required_rubygems_version: !ruby/object:Gem::Requirement
306
286
  none: false
307
287
  requirements:
@@ -310,7 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
310
290
  version: 1.3.1
311
291
  requirements: []
312
292
  rubyforge_project: squall
313
- rubygems_version: 1.8.11
293
+ rubygems_version: 1.6.2
314
294
  signing_key:
315
295
  specification_version: 3
316
296
  summary: A Ruby library for working with the OnApp REST API