fog 0.0.39 → 0.0.40

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.
Files changed (49) hide show
  1. data/README.rdoc +88 -31
  2. data/Rakefile +25 -2
  3. data/VERSION +1 -1
  4. data/bin/fog +57 -43
  5. data/fog.gemspec +52 -23
  6. data/lib/fog.rb +7 -4
  7. data/lib/fog/aws/ec2.rb +6 -2
  8. data/lib/fog/aws/models/ec2/address.rb +13 -13
  9. data/lib/fog/aws/models/ec2/addresses.rb +5 -5
  10. data/lib/fog/aws/models/ec2/flavor.rb +19 -0
  11. data/lib/fog/aws/models/ec2/flavors.rb +43 -0
  12. data/lib/fog/aws/models/ec2/image.rb +24 -0
  13. data/lib/fog/aws/models/ec2/images.rb +44 -0
  14. data/lib/fog/aws/models/ec2/{instance.rb → server.rb} +22 -10
  15. data/lib/fog/aws/models/ec2/{instances.rb → servers.rb} +12 -12
  16. data/lib/fog/aws/models/ec2/snapshot.rb +2 -2
  17. data/lib/fog/aws/models/ec2/volume.rb +17 -17
  18. data/lib/fog/aws/models/ec2/volumes.rb +5 -5
  19. data/lib/fog/aws/models/s3/{buckets.rb → directories.rb} +16 -13
  20. data/lib/fog/aws/models/s3/{bucket.rb → directory.rb} +5 -10
  21. data/lib/fog/aws/models/s3/{object.rb → file.rb} +16 -18
  22. data/lib/fog/aws/models/s3/{objects.rb → files.rb} +19 -19
  23. data/lib/fog/aws/requests/ec2/run_instances.rb +1 -1
  24. data/lib/fog/aws/s3.rb +6 -6
  25. data/lib/fog/rackspace/files.rb +6 -3
  26. data/lib/fog/rackspace/models/servers/flavor.rb +26 -1
  27. data/lib/fog/rackspace/models/servers/image.rb +3 -3
  28. data/lib/fog/rackspace/models/servers/server.rb +20 -9
  29. data/lib/fog/rackspace/models/servers/servers.rb +3 -1
  30. data/lib/fog/rackspace/servers.rb +2 -1
  31. data/spec/aws/models/ec2/address_spec.rb +8 -8
  32. data/spec/aws/models/ec2/server_spec.rb +109 -0
  33. data/spec/aws/models/ec2/servers_spec.rb +52 -0
  34. data/spec/aws/models/ec2/snapshot_spec.rb +2 -1
  35. data/spec/aws/models/ec2/volume_spec.rb +22 -22
  36. data/spec/aws/models/s3/directories_spec.rb +49 -0
  37. data/spec/aws/models/s3/directory_spec.rb +112 -0
  38. data/spec/aws/models/s3/file_spec.rb +106 -0
  39. data/spec/aws/models/s3/files_spec.rb +116 -0
  40. data/spec/rackspace/models/servers/server_spec.rb +51 -0
  41. data/spec/shared_examples/server_examples.rb +42 -0
  42. data/spec/spec_helper.rb +1 -1
  43. metadata +51 -22
  44. data/spec/aws/models/ec2/instance_spec.rb +0 -161
  45. data/spec/aws/models/ec2/instances_spec.rb +0 -70
  46. data/spec/aws/models/s3/bucket_spec.rb +0 -129
  47. data/spec/aws/models/s3/buckets_spec.rb +0 -70
  48. data/spec/aws/models/s3/object_spec.rb +0 -121
  49. data/spec/aws/models/s3/objects_spec.rb +0 -141
@@ -0,0 +1,106 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'Fog::AWS::S3::File' do
4
+
5
+ before(:each) do
6
+ @directory = s3.directories.create(:name => 'fogdirectoryname')
7
+ end
8
+
9
+ after(:each) do
10
+ @directory.destroy
11
+ end
12
+
13
+ describe "#initialize" do
14
+
15
+ it "should remap attributes from parser" do
16
+ now = Time.now
17
+ directory = Fog::AWS::S3::File.new(
18
+ 'Content-Length' => 10,
19
+ 'Content-Type' => 'contenttype',
20
+ 'Etag' => 'etag',
21
+ 'Key' => 'key',
22
+ 'Last-Modified' => now,
23
+ 'Size' => 10,
24
+ 'StorageClass' => 'storageclass'
25
+ )
26
+ directory.content_length == 10
27
+ directory.content_type.should == 'contenttype'
28
+ directory.etag.should == 'etag'
29
+ directory.key.should == 'key'
30
+ directory.last_modified.should == now
31
+ directory.size.should == 10
32
+ directory.storage_class.should == 'storageclass'
33
+
34
+ directory = Fog::AWS::S3::File.new(
35
+ 'ETag' => 'etag',
36
+ 'LastModified' => now
37
+ )
38
+ directory.etag.should == 'etag'
39
+ directory.last_modified.should == now
40
+ end
41
+
42
+ end
43
+
44
+ describe "#directory" do
45
+
46
+ it "should be the directory the file is related to" do
47
+ @file = @directory.files.new(:key => 'foo')
48
+ @file.directory.should == @directory
49
+ end
50
+
51
+ end
52
+
53
+ describe "#copy" do
54
+
55
+ it "should return a Fog::AWS::S3::File with matching attributes" do
56
+ other_directory = s3.directories.create(:name => 'fogotherdirectoryname')
57
+ data = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
58
+ file = @directory.files.create(:key => 'fogfilename', :body => data)
59
+ other_file = file.copy('fogotherdirectoryname', 'fogotherfilename')
60
+ file.reload.attributes.reject{|key,value| [:key, :last_modified].include?(key)}.should == other_file.reload.attributes.reject{|key,value| [:key, :last_modified].include?(key)}
61
+ other_file.destroy
62
+ file.destroy
63
+ other_directory.destroy
64
+ end
65
+
66
+ end
67
+
68
+ describe "#destroy" do
69
+
70
+ it "should return true if the file is deleted" do
71
+ data = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
72
+ file = @directory.files.create(:key => 'fogfilename', :body => data)
73
+ file.destroy.should be_true
74
+ end
75
+
76
+ it "should return true if the file does not exist" do
77
+ file = @directory.files.new(:key => 'fogfilename')
78
+ file.destroy.should be_true
79
+ end
80
+
81
+ end
82
+
83
+ describe "#reload" do
84
+
85
+ it "should reset attributes to remote state" do
86
+ data = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
87
+ file = @directory.files.create(:key => 'fogfilename', :body => data)
88
+ file.last_modified = Time.now
89
+ file.reload.attributes.should == file.attributes
90
+ file.destroy
91
+ end
92
+
93
+ end
94
+
95
+ describe "#save" do
96
+
97
+ it "should return the success value" do
98
+ data = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
99
+ file = @directory.files.new(:key => 'fogfilename', :body => data)
100
+ file.save.should be_true
101
+ file.destroy
102
+ end
103
+
104
+ end
105
+
106
+ end
@@ -0,0 +1,116 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'Fog::AWS::S3::Files' do
4
+
5
+ before(:each) do
6
+ @directory = s3.directories.create(:name => 'fogdirectoryname')
7
+ end
8
+
9
+ after(:each) do
10
+ @directory.destroy
11
+ end
12
+
13
+ describe "#initialize" do
14
+
15
+ it "should remap attributes from parser" do
16
+ files = Fog::AWS::S3::Files.new(
17
+ 'IsTruncated' => true,
18
+ 'Marker' => 'marker',
19
+ 'MaxKeys' => 1,
20
+ 'Prefix' => 'prefix'
21
+ )
22
+ files.is_truncated.should == true
23
+ files.marker.should == 'marker'
24
+ files.max_keys.should == 1
25
+ files.prefix.should == 'prefix'
26
+ end
27
+
28
+ end
29
+
30
+ describe "#all" do
31
+
32
+ it "should return nil if the directory does not exist" do
33
+ directory = s3.directories.new(:name => 'notadirectory')
34
+ directory.files.all.should be_nil
35
+ end
36
+
37
+ end
38
+
39
+ describe "#create" do
40
+
41
+ it "should exist on s3" do
42
+ data = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
43
+ file = @directory.files.create(:key => 'fogfilename', :body => data)
44
+ @directory.files.get('fogfilename').should_not be_nil
45
+ file.destroy
46
+ end
47
+
48
+ end
49
+
50
+ describe "#get" do
51
+
52
+ before(:each) do
53
+ data = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
54
+ @file = @directory.files.create(:key => 'fogfilename', :body => data)
55
+ end
56
+
57
+ after(:each) do
58
+ @file.destroy
59
+ end
60
+
61
+ it "should return a Fog::AWS::S3::File with metadata and data" do
62
+ @file.reload
63
+ @file.body.should_not be_nil
64
+ @file.content_length.should_not be_nil
65
+ @file.etag.should_not be_nil
66
+ @file.last_modified.should_not be_nil
67
+ @file.destroy
68
+ end
69
+
70
+ it "should return chunked data if given a block" do
71
+ data = ''
72
+ @directory.files.get('fogfilename') do |chunk|
73
+ data << chunk
74
+ end
75
+ data.should == File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r').read
76
+ end
77
+
78
+ end
79
+
80
+ describe "#get_url" do
81
+
82
+ it "should return a signed expiring url" do
83
+ data = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
84
+ file = @directory.files.create(:key => 'fogfilename', :body => data)
85
+ url = @directory.files.get_url('fogfilename', Time.now + 60 * 10)
86
+ unless Fog.mocking?
87
+ open(url).read.should == File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r').read
88
+ end
89
+ file.destroy
90
+ end
91
+
92
+ end
93
+
94
+ describe "#head" do
95
+
96
+ it "should return a Fog::AWS::S3::File with metadata" do
97
+ data = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
98
+ file = @directory.files.create(:key => 'fogfilename', :body => data)
99
+ file = @directory.files.get('fogfilename')
100
+ file.content_length.should_not be_nil
101
+ file.etag.should_not be_nil
102
+ file.last_modified.should_not be_nil
103
+ file.destroy
104
+ end
105
+
106
+ end
107
+
108
+ describe "#reload" do
109
+
110
+ it "should reload data" do
111
+ @directory.files.reload.should == @directory.files
112
+ end
113
+
114
+ end
115
+
116
+ end
@@ -0,0 +1,51 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ require File.dirname(__FILE__) + '/../../../shared_examples/server_examples'
3
+
4
+ describe 'Fog::AWS::EC2::Server' do
5
+
6
+ it_should_behave_like "Server"
7
+
8
+ # flavor 1 = 256, image 3 = gentoo 2008.0
9
+ subject { @server = @servers.new(:flavor_id => 1, :image_id => 3, :name => 'name') }
10
+
11
+ before(:each) do
12
+ @servers = servers.servers
13
+ end
14
+
15
+ after(:each) do
16
+ if @server && !@server.new_record?
17
+ @server.wait_for { ready? }
18
+ @server.destroy.should be_true
19
+ end
20
+ end
21
+
22
+ describe "#initialize" do
23
+
24
+ it "should remap attributes from parser" do
25
+ server = @servers.new({
26
+ 'addresses' => 'addresses',
27
+ 'adminPass' => 'password',
28
+ 'flavorId' => 'flavor_id',
29
+ 'hostId' => 'host_id',
30
+ 'imageId' => 'image_id',
31
+ 'metadata' => 'metadata',
32
+ 'name' => 'name',
33
+ 'personality' => 'personality',
34
+ 'progress' => 'progress',
35
+ 'status' => 'status'
36
+ })
37
+ server.addresses.should == 'addresses'
38
+ server.password.should == 'password'
39
+ server.flavor_id.should == 'flavor_id'
40
+ server.host_id.should == 'host_id'
41
+ server.image_id.should == 'image_id'
42
+ server.metadata.should == 'metadata'
43
+ server.name.should == 'name'
44
+ server.personality.should == 'personality'
45
+ server.progress.should == 'progress'
46
+ server.status.should == 'status'
47
+ end
48
+
49
+ end
50
+
51
+ end
@@ -0,0 +1,42 @@
1
+ shared_examples_for "Server" do
2
+
3
+ describe "#reboot" do
4
+
5
+ it "should succeed" do
6
+ subject.save
7
+ subject.wait_for { ready? }
8
+ subject.reboot.should be_true
9
+ end
10
+
11
+ end
12
+
13
+ describe "#reload" do
14
+
15
+ it "should reset attributes to remote state" do
16
+ subject.save
17
+ subject.wait_for { ready? }
18
+ @reloaded = subject.reload
19
+ subject.attributes.should == @reloaded.attributes
20
+ end
21
+
22
+ end
23
+
24
+ describe "#save" do
25
+
26
+ it "should return true when it succeeds" do
27
+ subject.save.should be_true
28
+ end
29
+
30
+ it "should not exist remotely before save" do
31
+ @servers.get(subject.id).should be_nil
32
+ end
33
+
34
+ it "should exist remotely after save" do
35
+ subject.save
36
+ subject.wait_for { ready? }
37
+ @servers.get(subject.id).should_not be_nil
38
+ end
39
+
40
+ end
41
+
42
+ end
@@ -72,7 +72,7 @@ def eventually(max_delay = 16, &block)
72
72
  sleep(delay)
73
73
  yield
74
74
  break
75
- rescue Excon::Errors::Error => error
75
+ rescue => error
76
76
  raise error if delay >= max_delay
77
77
  end
78
78
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.39
4
+ version: 0.0.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - geemus (Wesley Beary)
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-04 00:00:00 -08:00
12
+ date: 2010-01-14 00:00:00 -08:00
13
13
  default_executable: fog
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.0.14
23
+ version: 0.0.18
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mime-types
@@ -76,20 +76,24 @@ files:
76
76
  - lib/fog/aws/ec2.rb
77
77
  - lib/fog/aws/models/ec2/address.rb
78
78
  - lib/fog/aws/models/ec2/addresses.rb
79
- - lib/fog/aws/models/ec2/instance.rb
80
- - lib/fog/aws/models/ec2/instances.rb
79
+ - lib/fog/aws/models/ec2/flavor.rb
80
+ - lib/fog/aws/models/ec2/flavors.rb
81
+ - lib/fog/aws/models/ec2/image.rb
82
+ - lib/fog/aws/models/ec2/images.rb
81
83
  - lib/fog/aws/models/ec2/key_pair.rb
82
84
  - lib/fog/aws/models/ec2/key_pairs.rb
83
85
  - lib/fog/aws/models/ec2/security_group.rb
84
86
  - lib/fog/aws/models/ec2/security_groups.rb
87
+ - lib/fog/aws/models/ec2/server.rb
88
+ - lib/fog/aws/models/ec2/servers.rb
85
89
  - lib/fog/aws/models/ec2/snapshot.rb
86
90
  - lib/fog/aws/models/ec2/snapshots.rb
87
91
  - lib/fog/aws/models/ec2/volume.rb
88
92
  - lib/fog/aws/models/ec2/volumes.rb
89
- - lib/fog/aws/models/s3/bucket.rb
90
- - lib/fog/aws/models/s3/buckets.rb
91
- - lib/fog/aws/models/s3/object.rb
92
- - lib/fog/aws/models/s3/objects.rb
93
+ - lib/fog/aws/models/s3/directories.rb
94
+ - lib/fog/aws/models/s3/directory.rb
95
+ - lib/fog/aws/models/s3/file.rb
96
+ - lib/fog/aws/models/s3/files.rb
93
97
  - lib/fog/aws/parsers/ec2/allocate_address.rb
94
98
  - lib/fog/aws/parsers/ec2/attach_volume.rb
95
99
  - lib/fog/aws/parsers/ec2/basic.rb
@@ -223,20 +227,20 @@ files:
223
227
  - lib/fog/slicehost/requests/get_slices.rb
224
228
  - spec/aws/models/ec2/address_spec.rb
225
229
  - spec/aws/models/ec2/addresses_spec.rb
226
- - spec/aws/models/ec2/instance_spec.rb
227
- - spec/aws/models/ec2/instances_spec.rb
228
230
  - spec/aws/models/ec2/key_pair_spec.rb
229
231
  - spec/aws/models/ec2/key_pairs_spec.rb
230
232
  - spec/aws/models/ec2/security_group_spec.rb
231
233
  - spec/aws/models/ec2/security_groups_spec.rb
234
+ - spec/aws/models/ec2/server_spec.rb
235
+ - spec/aws/models/ec2/servers_spec.rb
232
236
  - spec/aws/models/ec2/snapshot_spec.rb
233
237
  - spec/aws/models/ec2/snapshots_spec.rb
234
238
  - spec/aws/models/ec2/volume_spec.rb
235
239
  - spec/aws/models/ec2/volumes_spec.rb
236
- - spec/aws/models/s3/bucket_spec.rb
237
- - spec/aws/models/s3/buckets_spec.rb
238
- - spec/aws/models/s3/object_spec.rb
239
- - spec/aws/models/s3/objects_spec.rb
240
+ - spec/aws/models/s3/directories_spec.rb
241
+ - spec/aws/models/s3/directory_spec.rb
242
+ - spec/aws/models/s3/file_spec.rb
243
+ - spec/aws/models/s3/files_spec.rb
240
244
  - spec/aws/requests/ec2/allocate_address_spec.rb
241
245
  - spec/aws/requests/ec2/associate_address_spec.rb
242
246
  - spec/aws/requests/ec2/attach_volume_spec.rb
@@ -288,6 +292,7 @@ files:
288
292
  - spec/aws/requests/simpledb/put_attributes_spec.rb
289
293
  - spec/aws/requests/simpledb/select_spec.rb
290
294
  - spec/lorem.txt
295
+ - spec/rackspace/models/servers/server_spec.rb
291
296
  - spec/rackspace/requests/files/delete_container_spec.rb
292
297
  - spec/rackspace/requests/files/delete_object_spec.rb
293
298
  - spec/rackspace/requests/files/get_container_spec.rb
@@ -313,6 +318,7 @@ files:
313
318
  - spec/rackspace/requests/servers/list_servers_spec.rb
314
319
  - spec/rackspace/requests/servers/reboot_server_spec.rb
315
320
  - spec/rackspace/requests/servers/update_server_spec.rb
321
+ - spec/shared_examples/server_examples.rb
316
322
  - spec/slicehost/requests/create_slice_spec.rb
317
323
  - spec/slicehost/requests/delete_slice_spec.rb
318
324
  - spec/slicehost/requests/get_backups_spec.rb
@@ -325,7 +331,28 @@ has_rdoc: true
325
331
  homepage: http://github.com/geemus/fog
326
332
  licenses: []
327
333
 
328
- post_install_message:
334
+ post_install_message: |
335
+ ==================================================
336
+
337
+ fog 0.0.40 has API changes you should know about.
338
+
339
+ Some changes you might care about happened in the models:
340
+
341
+ # what_it_was => what_it_is
342
+
343
+ ec2.instances => ec2.servers
344
+ ec2.instance => ec2.server
345
+
346
+ s3.buckets => s3.directories
347
+ s3.bucket => s3.directory
348
+
349
+ s3.objects => s3.files
350
+ s3.object => s3.file
351
+
352
+ Sorry for the bother, but it will allow for a more consistent API as fog continues to expand.
353
+
354
+ ==================================================
355
+
329
356
  rdoc_options:
330
357
  - --charset=UTF-8
331
358
  require_paths:
@@ -352,20 +379,20 @@ summary: fog = clouds + you
352
379
  test_files:
353
380
  - spec/aws/models/ec2/address_spec.rb
354
381
  - spec/aws/models/ec2/addresses_spec.rb
355
- - spec/aws/models/ec2/instance_spec.rb
356
- - spec/aws/models/ec2/instances_spec.rb
357
382
  - spec/aws/models/ec2/key_pair_spec.rb
358
383
  - spec/aws/models/ec2/key_pairs_spec.rb
359
384
  - spec/aws/models/ec2/security_group_spec.rb
360
385
  - spec/aws/models/ec2/security_groups_spec.rb
386
+ - spec/aws/models/ec2/server_spec.rb
387
+ - spec/aws/models/ec2/servers_spec.rb
361
388
  - spec/aws/models/ec2/snapshot_spec.rb
362
389
  - spec/aws/models/ec2/snapshots_spec.rb
363
390
  - spec/aws/models/ec2/volume_spec.rb
364
391
  - spec/aws/models/ec2/volumes_spec.rb
365
- - spec/aws/models/s3/bucket_spec.rb
366
- - spec/aws/models/s3/buckets_spec.rb
367
- - spec/aws/models/s3/object_spec.rb
368
- - spec/aws/models/s3/objects_spec.rb
392
+ - spec/aws/models/s3/directories_spec.rb
393
+ - spec/aws/models/s3/directory_spec.rb
394
+ - spec/aws/models/s3/file_spec.rb
395
+ - spec/aws/models/s3/files_spec.rb
369
396
  - spec/aws/requests/ec2/allocate_address_spec.rb
370
397
  - spec/aws/requests/ec2/associate_address_spec.rb
371
398
  - spec/aws/requests/ec2/attach_volume_spec.rb
@@ -416,6 +443,7 @@ test_files:
416
443
  - spec/aws/requests/simpledb/list_domains_spec.rb
417
444
  - spec/aws/requests/simpledb/put_attributes_spec.rb
418
445
  - spec/aws/requests/simpledb/select_spec.rb
446
+ - spec/rackspace/models/servers/server_spec.rb
419
447
  - spec/rackspace/requests/files/delete_container_spec.rb
420
448
  - spec/rackspace/requests/files/delete_object_spec.rb
421
449
  - spec/rackspace/requests/files/get_container_spec.rb
@@ -441,6 +469,7 @@ test_files:
441
469
  - spec/rackspace/requests/servers/list_servers_spec.rb
442
470
  - spec/rackspace/requests/servers/reboot_server_spec.rb
443
471
  - spec/rackspace/requests/servers/update_server_spec.rb
472
+ - spec/shared_examples/server_examples.rb
444
473
  - spec/slicehost/requests/create_slice_spec.rb
445
474
  - spec/slicehost/requests/delete_slice_spec.rb
446
475
  - spec/slicehost/requests/get_backups_spec.rb