fog 0.0.59 → 0.0.60

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. data/VERSION.yml +1 -1
  2. data/bin/fog +23 -17
  3. data/fog.gemspec +16 -23
  4. data/lib/fog/aws/models/s3/directories.rb +5 -3
  5. data/lib/fog/aws/models/s3/files.rb +1 -0
  6. data/lib/fog/aws/requests/s3/get_bucket.rb +1 -0
  7. data/lib/fog/collection.rb +4 -0
  8. data/lib/fog/model.rb +4 -0
  9. data/lib/fog/slicehost.rb +1 -1
  10. data/tests/slicehost/requests/create_slice_tests.rb +19 -0
  11. data/tests/slicehost/requests/delete_slice_tests.rb +28 -0
  12. data/tests/slicehost/requests/get_backups_tests.rb +14 -0
  13. data/tests/slicehost/requests/get_flavor_tests.rb +23 -0
  14. data/tests/slicehost/requests/get_flavors_tests.rb +10 -0
  15. data/tests/slicehost/requests/get_image_tests.rb +23 -0
  16. data/tests/slicehost/requests/get_images_tests.rb +10 -0
  17. data/tests/slicehost/requests/get_slice_tests.rb +33 -0
  18. data/tests/slicehost/requests/get_slices_tests.rb +10 -0
  19. data/tests/slicehost/requests/reboot_slice_tests.rb +34 -0
  20. data/tests/slicehost/slicehost_helper.rb +51 -0
  21. data/tests/test_helper.rb +43 -0
  22. data/tests/test_helper_tests.rb +39 -0
  23. metadata +16 -23
  24. data/spec/slicehost/requests/create_slice_spec.rb +0 -30
  25. data/spec/slicehost/requests/delete_slice_spec.rb +0 -18
  26. data/spec/slicehost/requests/get_backups_spec.rb +0 -17
  27. data/spec/slicehost/requests/get_flavor_spec.rb +0 -24
  28. data/spec/slicehost/requests/get_flavors_spec.rb +0 -17
  29. data/spec/slicehost/requests/get_image_spec.rb +0 -24
  30. data/spec/slicehost/requests/get_images_spec.rb +0 -15
  31. data/spec/slicehost/requests/get_slice_spec.rb +0 -41
  32. data/spec/slicehost/requests/get_slices_spec.rb +0 -34
  33. data/spec/slicehost/requests/reboot_slice_spec.rb +0 -41
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 0
4
- :patch: 59
4
+ :patch: 60
5
5
  :build:
data/bin/fog CHANGED
@@ -16,22 +16,28 @@ require File.join(lib_dir, 'fog', 'rackspace', 'bin')
16
16
  require File.join(lib_dir, 'fog', 'slicehost', 'bin')
17
17
  require File.join(lib_dir, 'fog', 'terremark', 'bin')
18
18
 
19
- ARGV.clear # Avoid passing args to IRB
20
- IRB.setup(nil)
21
- @irb = IRB::Irb.new(nil)
22
- IRB.conf[:MAIN_CONTEXT] = @irb.context
23
- IRB.conf[:PROMPT][:FOG] = IRB.conf[:PROMPT][:SIMPLE].dup
24
- IRB.conf[:PROMPT][:FOG][:RETURN] = "%s\n"
25
- @irb.context.prompt_mode = :FOG
26
- @irb.context.workspace = IRB::WorkSpace.new(binding)
27
-
28
- services = Fog.services.map{|service| service.to_s}
29
- available_services = if services.length > 1
30
- services[0...-1].join(', ') << ' and ' << services[-1]
19
+ if ARGV.length > 1
20
+ p instance_eval(ARGV[1..-1].join(' ')).to_json
31
21
  else
32
- services.first
33
- end
34
- print "Welcome to fog interactive!\n"
35
- print "Your '#{Fog.credential.to_s}' configuration provides access to #{available_services}.\n"
36
22
 
37
- catch(:IRB_EXIT) { @irb.eval_input }
23
+ ARGV.clear # Avoid passing args to IRB
24
+ IRB.setup(nil)
25
+ @irb = IRB::Irb.new(nil)
26
+ IRB.conf[:MAIN_CONTEXT] = @irb.context
27
+ IRB.conf[:PROMPT][:FOG] = IRB.conf[:PROMPT][:SIMPLE].dup
28
+ IRB.conf[:PROMPT][:FOG][:RETURN] = "%s\n"
29
+ @irb.context.prompt_mode = :FOG
30
+ @irb.context.workspace = IRB::WorkSpace.new(binding)
31
+
32
+ services = Fog.services.map{|service| service.to_s}
33
+ available_services = if services.length > 1
34
+ services[0...-1].join(', ') << ' and ' << services[-1]
35
+ else
36
+ services.first
37
+ end
38
+ print "Welcome to fog interactive!\n"
39
+ print "Your '#{Fog.credential.to_s}' configuration provides access to #{available_services}.\n"
40
+
41
+ catch(:IRB_EXIT) { @irb.eval_input }
42
+
43
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fog}
8
- s.version = "0.0.59"
8
+ s.version = "0.0.60"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["geemus (Wesley Beary)"]
12
- s.date = %q{2010-03-26}
12
+ s.date = %q{2010-03-28}
13
13
  s.default_executable = %q{fog}
14
14
  s.description = %q{brings clouds to you}
15
15
  s.email = %q{geemus@gmail.com}
@@ -326,17 +326,20 @@ Gem::Specification.new do |s|
326
326
  "spec/slicehost/models/flavors_spec.rb",
327
327
  "spec/slicehost/models/server_spec.rb",
328
328
  "spec/slicehost/models/servers_spec.rb",
329
- "spec/slicehost/requests/create_slice_spec.rb",
330
- "spec/slicehost/requests/delete_slice_spec.rb",
331
- "spec/slicehost/requests/get_backups_spec.rb",
332
- "spec/slicehost/requests/get_flavor_spec.rb",
333
- "spec/slicehost/requests/get_flavors_spec.rb",
334
- "spec/slicehost/requests/get_image_spec.rb",
335
- "spec/slicehost/requests/get_images_spec.rb",
336
- "spec/slicehost/requests/get_slice_spec.rb",
337
- "spec/slicehost/requests/get_slices_spec.rb",
338
- "spec/slicehost/requests/reboot_slice_spec.rb",
339
- "spec/spec_helper.rb"
329
+ "spec/spec_helper.rb",
330
+ "tests/slicehost/requests/create_slice_tests.rb",
331
+ "tests/slicehost/requests/delete_slice_tests.rb",
332
+ "tests/slicehost/requests/get_backups_tests.rb",
333
+ "tests/slicehost/requests/get_flavor_tests.rb",
334
+ "tests/slicehost/requests/get_flavors_tests.rb",
335
+ "tests/slicehost/requests/get_image_tests.rb",
336
+ "tests/slicehost/requests/get_images_tests.rb",
337
+ "tests/slicehost/requests/get_slice_tests.rb",
338
+ "tests/slicehost/requests/get_slices_tests.rb",
339
+ "tests/slicehost/requests/reboot_slice_tests.rb",
340
+ "tests/slicehost/slicehost_helper.rb",
341
+ "tests/test_helper.rb",
342
+ "tests/test_helper_tests.rb"
340
343
  ]
341
344
  s.homepage = %q{http://github.com/geemus/fog}
342
345
  s.rdoc_options = ["--charset=UTF-8"]
@@ -449,16 +452,6 @@ Gem::Specification.new do |s|
449
452
  "spec/slicehost/models/flavors_spec.rb",
450
453
  "spec/slicehost/models/server_spec.rb",
451
454
  "spec/slicehost/models/servers_spec.rb",
452
- "spec/slicehost/requests/create_slice_spec.rb",
453
- "spec/slicehost/requests/delete_slice_spec.rb",
454
- "spec/slicehost/requests/get_backups_spec.rb",
455
- "spec/slicehost/requests/get_flavor_spec.rb",
456
- "spec/slicehost/requests/get_flavors_spec.rb",
457
- "spec/slicehost/requests/get_image_spec.rb",
458
- "spec/slicehost/requests/get_images_spec.rb",
459
- "spec/slicehost/requests/get_slice_spec.rb",
460
- "spec/slicehost/requests/get_slices_spec.rb",
461
- "spec/slicehost/requests/reboot_slice_spec.rb",
462
455
  "spec/spec_helper.rb"
463
456
  ]
464
457
 
@@ -42,10 +42,12 @@ module Fog
42
42
  end
43
43
  end
44
44
  directory.files.merge_attributes(options)
45
- directory.files.instance_variable_set(:@loaded, true)
46
- data['Contents'].each do |file|
47
- directory.files << directory.files.new(file)
45
+ files = data['Contents']
46
+ while data['IsTruncated']
47
+ data = connection.get_bucket(name, options.merge!('marker' => files.last['Key'])).body
48
+ files.concat(data['Contents'])
48
49
  end
50
+ directory.files.load(files)
49
51
  directory
50
52
  rescue Excon::Errors::NotFound
51
53
  nil
@@ -39,6 +39,7 @@ module Fog
39
39
  'max-keys' => @max_keys,
40
40
  'prefix' => @prefix
41
41
  }.merge!(options)
42
+ options = options.reject {|key,value| value.nil? || value.empty?}
42
43
  data = connection.get_object(directory.name, key, options, &block)
43
44
  file_data = {
44
45
  :body => data.body,
@@ -38,6 +38,7 @@ module Fog
38
38
  unless bucket_name
39
39
  raise ArgumentError.new('bucket_name is required')
40
40
  end
41
+ options.reject! {|key, value| !['prefix', 'marker', 'max-keys', 'delimiter'].include?(key)}
41
42
  query = ''
42
43
  for key, value in options
43
44
  query << "#{key}=#{CGI.escape(value.to_s).gsub(/\+/, '%20')};"
@@ -145,6 +145,10 @@ module Fog
145
145
  Formatador.display_table(self.map {|instance| instance.attributes}, attributes)
146
146
  end
147
147
 
148
+ def to_json
149
+ self.map {|member| member}.to_json
150
+ end
151
+
148
152
  private
149
153
 
150
154
  def lazy_load
@@ -102,6 +102,10 @@ module Fog
102
102
  end
103
103
  end
104
104
 
105
+ def to_json
106
+ attributes.to_json
107
+ end
108
+
105
109
  def wait_for(timeout = 600, &block)
106
110
  start = Time.now
107
111
  until instance_eval(&block)
@@ -66,7 +66,7 @@ module Fog
66
66
  def request(params)
67
67
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}")
68
68
  headers = {
69
- 'Authorization' => "Basic #{Base64.encode64(@slicehost_password).chomp!}"
69
+ 'Authorization' => "Basic #{Base64.encode64(@slicehost_password).delete("\r\n")}"
70
70
  }
71
71
  case params[:method]
72
72
  when 'DELETE', 'GET', 'HEAD'
@@ -0,0 +1,19 @@
1
+ Shindo.tests('Slicehost#create_slice', 'slicehost') do
2
+ tests('success') do
3
+
4
+ before do
5
+ @data = Slicehost[:slices].create_slice(1, 3, 'fogcreateslice').body
6
+ @id = @data['id']
7
+ end
8
+
9
+ after do
10
+ wait_for { Slicehost[:slices].get_slice(@id).body['status'] == 'active' }
11
+ Slicehost[:slices].delete_slice(@id)
12
+ end
13
+
14
+ test('has proper output format') do
15
+ validate_data_format(@data, Slicehost::Formats::SLICE.merge('root-password' => String))
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ Shindo.tests('Slicehost#delete_slice', 'slicehost') do
2
+ tests('success') do
3
+
4
+ before do
5
+ @data = Slicehost[:slices].create_slice(1, 3, 'fogdeleteslice').body
6
+ @id = @data['id']
7
+ end
8
+
9
+ test('has proper output format') do
10
+ wait_for { Slicehost[:slices].get_slice(@id).body['status'] == 'active' }
11
+ Slicehost[:slices].delete_slice(@id)
12
+ end
13
+
14
+ end
15
+
16
+ tests('failure') do
17
+
18
+ test('raises NotFound error if slice does not exist') do
19
+ begin
20
+ Slicehost[:slices].delete_slice(0)
21
+ false
22
+ rescue Excon::Errors::NotFound
23
+ true
24
+ end
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,14 @@
1
+ Shindo.tests('Slicehost#get_backups', 'slicehost') do
2
+ tests('success') do
3
+
4
+ before do
5
+ @data = Slicehost[:slices].get_backups.body
6
+ end
7
+
8
+ # TODO: ensure this still works with a non-empty list
9
+ test('has proper output format') do
10
+ validate_data_format(@data, { 'backups' => [Slicehost::Formats::BACKUP] })
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ Shindo.tests('Slicehost#get_flavor', 'slicehost') do
2
+ tests('success') do
3
+
4
+ test('has proper output format') do
5
+ @data = Slicehost[:slices].get_flavor(1).body
6
+ validate_data_format(@data, Slicehost::Formats::FLAVOR)
7
+ end
8
+
9
+ end
10
+
11
+ tests('failure') do
12
+
13
+ test('raises Forbidden error if flavor does not exist') do
14
+ begin
15
+ Slicehost[:slices].get_flavor(0)
16
+ false
17
+ rescue Excon::Errors::Forbidden
18
+ true
19
+ end
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,10 @@
1
+ Shindo.tests('Slicehost#get_flavors', 'slicehost') do
2
+ tests('success') do
3
+
4
+ test('has proper output format') do
5
+ @data = Slicehost[:slices].get_flavors.body
6
+ validate_data_format(@data, { 'flavors' => [Slicehost::Formats::FLAVOR] })
7
+ end
8
+
9
+ end
10
+ end
@@ -0,0 +1,23 @@
1
+ Shindo.tests('Slicehost#get_image', 'slicehost') do
2
+ tests('success') do
3
+
4
+ test('has proper output format') do
5
+ @data = Slicehost[:slices].get_image(3).body
6
+ validate_data_format(@data, Slicehost::Formats::IMAGE)
7
+ end
8
+
9
+ end
10
+
11
+ tests('failure') do
12
+
13
+ test('raises Forbidden error if flavor does not exist') do
14
+ begin
15
+ Slicehost[:slices].get_image(0)
16
+ false
17
+ rescue Excon::Errors::Forbidden
18
+ true
19
+ end
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,10 @@
1
+ Shindo.tests('Slicehost#get_images', 'slicehost') do
2
+ tests('success') do
3
+
4
+ test('has proper output format') do
5
+ @data = Slicehost[:slices].get_images.body
6
+ validate_data_format(@data, { 'images' => [Slicehost::Formats::IMAGE] })
7
+ end
8
+
9
+ end
10
+ end
@@ -0,0 +1,33 @@
1
+ Shindo.tests('Slicehost#get_slice', 'slicehost') do
2
+ tests('success') do
3
+
4
+ before do
5
+ @data = Slicehost[:slices].create_slice(1, 3, 'foggetslice').body
6
+ @id = @data['id']
7
+ end
8
+
9
+ after do
10
+ wait_for { Slicehost[:slices].get_slice(@id).body['status'] == 'active' }
11
+ Slicehost[:slices].delete_slice(@id)
12
+ end
13
+
14
+ test('has proper output format') do
15
+ @data = Slicehost[:slices].get_slice(@id).body
16
+ validate_data_format(@data, Slicehost::Formats::SLICE)
17
+ end
18
+
19
+ end
20
+
21
+ tests('failure') do
22
+
23
+ test('raises Forbidden error if flavor does not exist') do
24
+ begin
25
+ Slicehost[:slices].get_slice(0)
26
+ false
27
+ rescue Excon::Errors::Forbidden
28
+ true
29
+ end
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,10 @@
1
+ Shindo.tests('Slicehost#get_slices', 'slicehost') do
2
+ tests('success') do
3
+
4
+ test('has proper output format') do
5
+ @data = Slicehost[:slices].get_slices.body
6
+ validate_data_format(@data, { 'slices' => [Slicehost::Formats::SLICE] })
7
+ end
8
+
9
+ end
10
+ end
@@ -0,0 +1,34 @@
1
+ Shindo.tests('Slicehost#reboot_slice', 'slicehost') do
2
+ tests('success') do
3
+
4
+ before do
5
+ @data = Slicehost[:slices].create_slice(1, 3, 'fogrebootslice').body
6
+ @id = @data['id']
7
+ wait_for { Slicehost[:slices].get_slice(@id).body['status'] == 'active' }
8
+ @data = Slicehost[:slices].reboot_slice(@id).body
9
+ end
10
+
11
+ after do
12
+ wait_for { Slicehost[:slices].get_slice(@id).body['status'] == 'active' }
13
+ Slicehost[:slices].delete_slice(@id)
14
+ end
15
+
16
+ test('has proper output format') do
17
+ validate_data_format(@data, Slicehost::Formats::SLICE)
18
+ end
19
+
20
+ end
21
+
22
+ tests('failure') do
23
+
24
+ test('raises Forbidden error if flavor does not exist') do
25
+ begin
26
+ Slicehost[:slices].reboot_slice(0)
27
+ false
28
+ rescue Excon::Errors::Forbidden
29
+ true
30
+ end
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,51 @@
1
+ module Slicehost
2
+
3
+ def self.[](service)
4
+ @@connections ||= Hash.new do |hash, key|
5
+ credentials = Fog.credentials.reject do |k, v|
6
+ ![:slicehost_password].include?(k)
7
+ end
8
+ hash[key] = case key
9
+ when :slices
10
+ Fog::Slicehost.new(credentials)
11
+ end
12
+ end
13
+ @@connections[service]
14
+ end
15
+
16
+ module Formats
17
+
18
+ BACKUP = {
19
+ 'date' => String,
20
+ 'id' => Integer,
21
+ 'name' => String,
22
+ 'slice-id' => Integer
23
+ }
24
+
25
+ FLAVOR = {
26
+ 'id' => Integer,
27
+ 'name' => String,
28
+ 'price' => Integer,
29
+ 'ram' => Integer
30
+ }
31
+
32
+ IMAGE = {
33
+ 'id' => Integer,
34
+ 'name' => String
35
+ }
36
+
37
+ SLICE = {
38
+ 'addresses' => [String],
39
+ 'bw-in' => Float,
40
+ 'bw-out' => Float,
41
+ 'flavor-id' => Integer,
42
+ 'id' => Integer,
43
+ 'image-id' => Integer,
44
+ 'name' => String,
45
+ 'progress' => Integer,
46
+ 'status' => String
47
+ }
48
+
49
+ end
50
+
51
+ end
@@ -0,0 +1,43 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'fog'))
2
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'fog', 'bin'))
3
+
4
+ # TODO: Currently is true even if some of the keys in format do not appear in
5
+ def validate_data_format(original_data, format)
6
+ valid = true
7
+ data = original_data.dup
8
+ for key, value in format
9
+ valid &&= data.has_key?(key)
10
+ datum = data.delete(key)
11
+ case value
12
+ when Array
13
+ valid &&= datum.is_a?(Array)
14
+ for element in datum
15
+ type = value.first
16
+ if type.is_a?(Hash)
17
+ valid &&= validate_data_format({:element => element}, {:element => type})
18
+ else
19
+ valid &&= element.is_a?(type)
20
+ end
21
+ end
22
+ when Hash
23
+ valid &&= datum.is_a?(Hash)
24
+ valid &&= validate_data_format(datum, value)
25
+ else
26
+ valid &&= datum.is_a?(value)
27
+ end
28
+ end
29
+ unless data.empty?
30
+ p "validate_data_format did not validate [#{data.inspect}]"
31
+ end
32
+ valid &&= data.empty?
33
+ end
34
+
35
+ def wait_for(timeout = 600, &block)
36
+ start = Time.now
37
+ until instance_eval(&block)
38
+ if Time.now - start > timeout
39
+ break
40
+ end
41
+ sleep(1)
42
+ end
43
+ end
@@ -0,0 +1,39 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'test_helper'))
2
+
3
+ Shindo.tests('test_helper') do
4
+ tests('#validate_data_format') do
5
+
6
+ tests('returns true') do
7
+
8
+ test('when format of value matches') do
9
+ validate_data_format({:a => :b}, {:a => Symbol})
10
+ end
11
+
12
+ test('when format of nested array elements matches') do
13
+ validate_data_format({:a => [:b, :c]}, {:a => [Symbol]})
14
+ end
15
+
16
+ test('when format of nested hash matches') do
17
+ validate_data_format({:a => {:b => :c}}, {:a => {:b => Symbol}})
18
+ end
19
+
20
+ end
21
+
22
+ tests('returns false') do
23
+
24
+ test('when format of value does not match') do
25
+ !validate_data_format({:a => :b}, {:a => String})
26
+ end
27
+
28
+ test('when not all keys are checked') do
29
+ !validate_data_format({:a => :b}, {})
30
+ end
31
+
32
+ test('when some keys do not appear') do
33
+ !validate_data_format({}, {:a => String})
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 59
9
- version: 0.0.59
8
+ - 60
9
+ version: 0.0.60
10
10
  platform: ruby
11
11
  authors:
12
12
  - geemus (Wesley Beary)
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-26 00:00:00 -07:00
17
+ date: 2010-03-28 00:00:00 -07:00
18
18
  default_executable: fog
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -410,17 +410,20 @@ files:
410
410
  - spec/slicehost/models/flavors_spec.rb
411
411
  - spec/slicehost/models/server_spec.rb
412
412
  - spec/slicehost/models/servers_spec.rb
413
- - spec/slicehost/requests/create_slice_spec.rb
414
- - spec/slicehost/requests/delete_slice_spec.rb
415
- - spec/slicehost/requests/get_backups_spec.rb
416
- - spec/slicehost/requests/get_flavor_spec.rb
417
- - spec/slicehost/requests/get_flavors_spec.rb
418
- - spec/slicehost/requests/get_image_spec.rb
419
- - spec/slicehost/requests/get_images_spec.rb
420
- - spec/slicehost/requests/get_slice_spec.rb
421
- - spec/slicehost/requests/get_slices_spec.rb
422
- - spec/slicehost/requests/reboot_slice_spec.rb
423
413
  - spec/spec_helper.rb
414
+ - tests/slicehost/requests/create_slice_tests.rb
415
+ - tests/slicehost/requests/delete_slice_tests.rb
416
+ - tests/slicehost/requests/get_backups_tests.rb
417
+ - tests/slicehost/requests/get_flavor_tests.rb
418
+ - tests/slicehost/requests/get_flavors_tests.rb
419
+ - tests/slicehost/requests/get_image_tests.rb
420
+ - tests/slicehost/requests/get_images_tests.rb
421
+ - tests/slicehost/requests/get_slice_tests.rb
422
+ - tests/slicehost/requests/get_slices_tests.rb
423
+ - tests/slicehost/requests/reboot_slice_tests.rb
424
+ - tests/slicehost/slicehost_helper.rb
425
+ - tests/test_helper.rb
426
+ - tests/test_helper_tests.rb
424
427
  has_rdoc: true
425
428
  homepage: http://github.com/geemus/fog
426
429
  licenses: []
@@ -556,14 +559,4 @@ test_files:
556
559
  - spec/slicehost/models/flavors_spec.rb
557
560
  - spec/slicehost/models/server_spec.rb
558
561
  - spec/slicehost/models/servers_spec.rb
559
- - spec/slicehost/requests/create_slice_spec.rb
560
- - spec/slicehost/requests/delete_slice_spec.rb
561
- - spec/slicehost/requests/get_backups_spec.rb
562
- - spec/slicehost/requests/get_flavor_spec.rb
563
- - spec/slicehost/requests/get_flavors_spec.rb
564
- - spec/slicehost/requests/get_image_spec.rb
565
- - spec/slicehost/requests/get_images_spec.rb
566
- - spec/slicehost/requests/get_slice_spec.rb
567
- - spec/slicehost/requests/get_slices_spec.rb
568
- - spec/slicehost/requests/reboot_slice_spec.rb
569
562
  - spec/spec_helper.rb
@@ -1,30 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe 'Slicehost.create_slice' do
4
- describe 'success' do
5
-
6
- after(:each) do
7
- eventually(128) do
8
- Slicehost[:slices].delete_slice(@slice_id)
9
- end
10
- end
11
-
12
- it "should return proper attributes" do
13
- # flavor_id 1: 256 ram, image_id 3: Gentoo 2008.0
14
- actual = Slicehost[:slices].create_slice(1, 3, 'fog_create_slice').body
15
- actual['addresses'].should be_a(Array)
16
- # actual['backup-id'].should be_an(Integer)
17
- actual['bw-in'].should be_an(Float)
18
- actual['bw-out'].should be_an(Float)
19
- actual['flavor-id'].should be_an(Integer)
20
- actual['id'].should be_an(Integer)
21
- @slice_id = actual['id']
22
- actual['image-id'].should be_an(Integer)
23
- actual['name'].should be_an(String)
24
- actual['progress'].should be_an(Integer)
25
- actual['root-password'].should be_a(String)
26
- actual['status'].should be_an(String)
27
- end
28
-
29
- end
30
- end
@@ -1,18 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe 'Slicehost.delete_slice' do
4
- describe 'success' do
5
-
6
- before(:each) do
7
- # flavor_id 1: 256 ram, image_id 3: Gentoo 2008.0
8
- @slice_id = Slicehost[:slices].create_slice(1, 3, 'fog_delete_slice').body['id']
9
- end
10
-
11
- it "should return proper attributes" do
12
- eventually(128) do
13
- actual = Slicehost[:slices].delete_slice(@slice_id)
14
- end
15
- end
16
-
17
- end
18
- end
@@ -1,17 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe 'Slicehost.get_backups' do
4
- describe 'success' do
5
-
6
- it "should return proper attributes" do
7
- actual = Slicehost[:slices].get_backups.body
8
- actual['backups'].should be_an(Array)
9
- backup = actual['backups'].first
10
- # backup['date'].should be_a(String)
11
- # backup['id'].should be_an(Integer)
12
- # backup['name'].should be_an(String)
13
- # backup['slice-id'].should be_an(Integer)
14
- end
15
-
16
- end
17
- end
@@ -1,24 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe 'Slicehost.get_flavor' do
4
- describe 'success' do
5
-
6
- it "should return proper attributes" do
7
- actual = Slicehost[:slices].get_flavor(1).body
8
- actual['id'].should be_an(Integer)
9
- actual['name'].should be_an(String)
10
- actual['price'].should be_a(Integer)
11
- actual['ram'].should be_an(Integer)
12
- end
13
-
14
- end
15
- describe 'failure' do
16
-
17
- it "should raise a Forbidden error if the flavor does not exist" do
18
- lambda {
19
- Slicehost[:slices].get_flavor(0)
20
- }.should raise_error(Excon::Errors::Forbidden)
21
- end
22
-
23
- end
24
- end
@@ -1,17 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe 'Slicehost.get_flavors' do
4
- describe 'success' do
5
-
6
- it "should return proper attributes" do
7
- actual = Slicehost[:slices].get_flavors.body
8
- actual['flavors'].should be_an(Array)
9
- flavor = actual['flavors'].first
10
- flavor['id'].should be_an(Integer)
11
- flavor['name'].should be_an(String)
12
- flavor['price'].should be_a(Integer)
13
- flavor['ram'].should be_an(Integer)
14
- end
15
-
16
- end
17
- end
@@ -1,24 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe 'Slicehost.get_image' do
4
- describe 'success' do
5
-
6
- it "should return proper attributes" do
7
- actual = Slicehost[:slices].get_image.body
8
- actual['id'].should be_an(Integer)
9
- actual['name'].should be_a(String)
10
- end
11
-
12
- end
13
-
14
- describe 'failure' do
15
-
16
- it "should raise a Forbidden error if the flavor does not exist" do
17
- lambda {
18
- Slicehost[:slices].get_image(0)
19
- }.should raise_error(Excon::Errors::Forbidden)
20
- end
21
-
22
- end
23
-
24
- end
@@ -1,15 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe 'Slicehost.get_images' do
4
- describe 'success' do
5
-
6
- it "should return proper attributes" do
7
- actual = Slicehost[:slices].get_images.body
8
- actual['images'].should be_an(Array)
9
- image = actual['images'].first
10
- image['id'].should be_an(Integer)
11
- image['name'].should be_a(String)
12
- end
13
-
14
- end
15
- end
@@ -1,41 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe 'Slicehost.get_slice' do
4
- describe 'success' do
5
-
6
- before(:each) do
7
- # flavor_id 1: 256 ram, image_id 3: Gentoo 2008.0
8
- @slice_id = Slicehost[:slices].create_slice(1, 3, 'fog_create_slice').body['id']
9
- end
10
-
11
- after(:each) do
12
- eventually(128) do
13
- Slicehost[:slices].delete_slice(@slice_id)
14
- end
15
- end
16
-
17
- it "should return proper attributes" do
18
- actual = Slicehost[:slices].get_slice(@slice_id).body
19
- actual['addresses'].should be_a(Array)
20
- # actual['backup-id'].should be_an(Integer)
21
- actual['bw-in'].should be_a(Float)
22
- actual['bw-out'].should be_a(Float)
23
- actual['flavor-id'].should be_an(Integer)
24
- actual['id'].should be_an(Integer)
25
- actual['image-id'].should be_an(Integer)
26
- actual['name'].should be_an(String)
27
- actual['progress'].should be_an(Integer)
28
- actual['status'].should be_an(String)
29
- end
30
-
31
- end
32
- describe 'failure' do
33
-
34
- it "should raise a Forbidden error if the server does not exist" do
35
- lambda {
36
- Slicehost[:slices].get_slice(0)
37
- }.should raise_error(Excon::Errors::Forbidden)
38
- end
39
-
40
- end
41
- end
@@ -1,34 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe 'Slicehost.get_slices' do
4
- describe 'success' do
5
-
6
- before(:each) do
7
- # flavor_id 1: 256 ram, image_id 3: Gentoo 2008.0
8
- @slice_id = Slicehost[:slices].create_slice(1, 3, 'fog_create_slice').body['id']
9
- end
10
-
11
- after(:each) do
12
- eventually(128) do
13
- Slicehost[:slices].delete_slice(@slice_id)
14
- end
15
- end
16
-
17
- it "should return proper attributes" do
18
- actual = Slicehost[:slices].get_slices.body
19
- actual['slices'].should be_an(Array)
20
- slice = actual['slices'].first
21
- slice['addresses'].should be_a(Array)
22
- # slice['backup-id'].should be_an(Integer)
23
- slice['bw-in'].should be_a(Float)
24
- slice['bw-out'].should be_a(Float)
25
- slice['flavor-id'].should be_an(Integer)
26
- slice['id'].should be_an(Integer)
27
- slice['image-id'].should be_an(Integer)
28
- slice['name'].should be_an(String)
29
- slice['progress'].should be_an(Integer)
30
- slice['status'].should be_an(String)
31
- end
32
-
33
- end
34
- end
@@ -1,41 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe 'Slicehost.reboot_slice' do
4
- describe 'success' do
5
-
6
- before(:each) do
7
- # flavor_id 1: 256 ram, image_id 3: Gentoo 2008.0
8
- @slice_id = Slicehost[:slices].create_slice(1, 3, 'fog_create_slice').body['id']
9
- wait_for { Slicehost[:slices].get_slice(@slice_id).body['status'] == 'active' }
10
- end
11
-
12
- after(:each) do
13
- wait_for { Slicehost[:slices].get_slice(@slice_id).body['status'] == 'active' }
14
- Slicehost[:slices].delete_slice(@slice_id)
15
- end
16
-
17
- it "should return proper attributes" do
18
- actual = Slicehost[:slices].reboot_slice(@slice_id).body
19
- actual['addresses'].should be_a(Array)
20
- # actual['backup-id'].should be_an(Integer)
21
- actual['bw-in'].should be_a(Float)
22
- actual['bw-out'].should be_a(Float)
23
- actual['flavor-id'].should be_an(Integer)
24
- actual['id'].should be_an(Integer)
25
- actual['image-id'].should be_an(Integer)
26
- actual['name'].should be_an(String)
27
- actual['progress'].should be_an(Integer)
28
- actual['status'].should be_an(String)
29
- end
30
-
31
- end
32
- describe 'failure' do
33
-
34
- it "should raise a Forbidden error if the server does not exist" do
35
- lambda {
36
- Slicehost[:slices].reboot_slice(0)
37
- }.should raise_error(Excon::Errors::Forbidden)
38
- end
39
-
40
- end
41
- end