fog 0.3.34 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (200) hide show
  1. data/Gemfile.lock +6 -6
  2. data/README.rdoc +26 -7
  3. data/Rakefile +7 -1
  4. data/examples/dns_tests.rb +76 -0
  5. data/examples/{storage.rb → storage_tests.rb} +15 -15
  6. data/fog.gemspec +4 -4
  7. data/lib/fog.rb +1 -1
  8. data/lib/fog/aws.rb +19 -54
  9. data/lib/fog/aws/dns.rb +5 -1
  10. data/lib/fog/aws/models/compute/security_group.rb +128 -0
  11. data/lib/fog/aws/models/dns/record.rb +64 -0
  12. data/lib/fog/aws/models/dns/records.rb +47 -0
  13. data/lib/fog/aws/models/dns/zone.rb +53 -0
  14. data/lib/fog/aws/models/dns/zones.rb +33 -0
  15. data/lib/fog/aws/models/storage/file.rb +14 -2
  16. data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +1 -1
  17. data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +3 -1
  18. data/lib/fog/aws/requests/simpledb/create_domain.rb +1 -0
  19. data/lib/fog/aws/requests/simpledb/delete_attributes.rb +0 -2
  20. data/lib/fog/aws/requests/simpledb/delete_domain.rb +1 -0
  21. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +1 -0
  22. data/lib/fog/aws/requests/simpledb/get_attributes.rb +1 -0
  23. data/lib/fog/aws/requests/simpledb/list_domains.rb +3 -2
  24. data/lib/fog/aws/requests/simpledb/put_attributes.rb +2 -2
  25. data/lib/fog/aws/requests/simpledb/select.rb +1 -0
  26. data/lib/fog/brightbox/compute.rb +9 -0
  27. data/lib/fog/brightbox/models/compute/load_balancer.rb +50 -0
  28. data/lib/fog/brightbox/models/compute/load_balancers.rb +28 -0
  29. data/lib/fog/brightbox/requests/compute/add_nodes_load_balancer.rb +28 -0
  30. data/lib/fog/brightbox/requests/compute/create_load_balancer.rb +27 -0
  31. data/lib/fog/brightbox/requests/compute/destroy_load_balancer.rb +28 -0
  32. data/lib/fog/brightbox/requests/compute/get_load_balancer.rb +28 -0
  33. data/lib/fog/brightbox/requests/compute/list_load_balancers.rb +27 -0
  34. data/lib/fog/brightbox/requests/compute/remove_nodes_load_balancer.rb +28 -0
  35. data/lib/fog/brightbox/requests/compute/update_load_balancer.rb +29 -0
  36. data/lib/fog/core.rb +1 -0
  37. data/lib/fog/core/dns.rb +25 -0
  38. data/lib/fog/core/mock.rb +34 -0
  39. data/lib/fog/google/models/storage/file.rb +14 -2
  40. data/lib/fog/linode/dns.rb +4 -0
  41. data/lib/fog/linode/models/dns/record.rb +69 -0
  42. data/lib/fog/linode/models/dns/records.rb +37 -0
  43. data/lib/fog/linode/models/dns/zone.rb +84 -0
  44. data/lib/fog/linode/models/dns/zones.rb +29 -0
  45. data/lib/fog/linode/requests/dns/domain_create.rb +2 -3
  46. data/lib/fog/linode/requests/dns/domain_resource_create.rb +3 -4
  47. data/lib/fog/linode/requests/dns/domain_resource_list.rb +5 -2
  48. data/lib/fog/linode/requests/dns/domain_resource_update.rb +2 -2
  49. data/lib/fog/linode/requests/dns/domain_update.rb +2 -2
  50. data/lib/fog/rackspace/requests/compute/create_image.rb +1 -1
  51. data/lib/fog/rackspace/requests/compute/create_server.rb +1 -1
  52. data/lib/fog/rackspace/requests/compute/get_flavor_details.rb +19 -1
  53. data/lib/fog/rackspace/requests/compute/list_flavors.rb +14 -1
  54. data/lib/fog/rackspace/requests/compute/list_flavors_detail.rb +14 -1
  55. data/lib/fog/slicehost/bin.rb +1 -1
  56. data/lib/fog/slicehost/dns.rb +4 -0
  57. data/lib/fog/slicehost/models/dns/record.rb +66 -0
  58. data/lib/fog/slicehost/models/dns/records.rb +36 -0
  59. data/lib/fog/slicehost/models/dns/zone.rb +69 -0
  60. data/lib/fog/slicehost/models/dns/zones.rb +28 -0
  61. data/lib/fog/slicehost/requests/dns/create_record.rb +2 -3
  62. data/lib/fog/slicehost/requests/dns/get_record.rb +1 -1
  63. data/lib/fog/vcloud/terremark/ecloud.rb +1 -1
  64. data/lib/fog/zerigo/models/dns/record.rb +14 -3
  65. data/lib/fog/zerigo/models/dns/records.rb +1 -1
  66. data/lib/fog/zerigo/models/dns/zone.rb +7 -1
  67. data/lib/fog/zerigo/models/dns/zones.rb +1 -1
  68. data/spec/spec_helper.rb +0 -24
  69. data/tests/aws/requests/iam/helper.rb +15 -0
  70. data/tests/aws/requests/simpledb/attributes_tests.rb +75 -0
  71. data/tests/aws/requests/simpledb/domain_tests.rb +51 -0
  72. data/tests/aws/requests/simpledb/helper.rb +16 -0
  73. data/tests/compute/helper.rb +36 -0
  74. data/tests/compute/models/flavors_tests.rb +9 -0
  75. data/tests/compute/models/server_tests.rb +9 -0
  76. data/tests/compute/models/servers_tests.rb +9 -0
  77. data/tests/{aws/requests/compute → compute/requests/aws}/address_tests.rb +0 -0
  78. data/tests/{aws/requests/compute → compute/requests/aws}/availability_zone_tests.rb +0 -0
  79. data/tests/{aws → compute/requests/aws}/helper.rb +0 -12
  80. data/tests/{aws/requests/compute → compute/requests/aws}/image_tests.rb +0 -0
  81. data/tests/{aws/requests/compute → compute/requests/aws}/instance_tests.rb +0 -0
  82. data/tests/{aws/requests/compute → compute/requests/aws}/key_pair_tests.rb +0 -0
  83. data/tests/{aws/requests/compute → compute/requests/aws}/region_tests.rb +0 -0
  84. data/tests/{aws/requests/compute → compute/requests/aws}/security_group_tests.rb +0 -0
  85. data/tests/{aws/requests/compute → compute/requests/aws}/snapshot_tests.rb +0 -0
  86. data/tests/{aws/requests/compute → compute/requests/aws}/tag_tests.rb +0 -0
  87. data/tests/{aws/requests/compute → compute/requests/aws}/volume_tests.rb +0 -0
  88. data/tests/{bluebox/requests/compute → compute/requests/bluebox}/block_tests.rb +0 -0
  89. data/tests/{bluebox → compute/requests/bluebox}/helper.rb +0 -0
  90. data/tests/{bluebox/requests/compute → compute/requests/bluebox}/product_tests.rb +0 -0
  91. data/tests/{bluebox/requests/compute → compute/requests/bluebox}/template_tests.rb +0 -0
  92. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/account_tests.rb +0 -0
  93. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/api_client_tests.rb +0 -0
  94. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/cloud_ip_tests.rb +15 -7
  95. data/tests/{brightbox → compute/requests/brightbox}/helper.rb +68 -22
  96. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/image_tests.rb +0 -0
  97. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/interface_tests.rb +0 -0
  98. data/tests/compute/requests/brightbox/load_balancer_tests.rb +74 -0
  99. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/server_tests.rb +1 -0
  100. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/server_type_tests.rb +1 -0
  101. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/user_tests.rb +0 -0
  102. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/zone_tests.rb +1 -0
  103. data/tests/{go_grid/requests/compute → compute/requests/go_grid}/image_tests.rb +0 -0
  104. data/tests/{linode/requests/compute → compute/requests/linode}/datacenter_tests.rb +0 -0
  105. data/tests/{linode/requests/compute → compute/requests/linode}/distribution_tests.rb +0 -0
  106. data/tests/{linode → compute/requests/linode}/helper.rb +0 -0
  107. data/tests/{linode/requests/compute → compute/requests/linode}/linode_tests.rb +0 -0
  108. data/tests/{linode/requests/compute → compute/requests/linode}/linodeplans_tests.rb +0 -0
  109. data/tests/{rackspace/requests/compute → compute/requests/rackspace}/address_tests.rb +0 -0
  110. data/tests/{rackspace/requests/compute → compute/requests/rackspace}/flavor_tests.rb +0 -0
  111. data/tests/{rackspace → compute/requests/rackspace}/helper.rb +0 -0
  112. data/tests/{rackspace/requests/compute → compute/requests/rackspace}/image_tests.rb +7 -9
  113. data/tests/compute/requests/rackspace/resize_tests.rb +33 -0
  114. data/tests/{rackspace/requests/compute → compute/requests/rackspace}/server_tests.rb +0 -0
  115. data/tests/{slicehost/requests/compute → compute/requests/slicehost}/backup_tests.rb +0 -0
  116. data/tests/{slicehost/requests/compute → compute/requests/slicehost}/flavor_tests.rb +0 -0
  117. data/tests/{slicehost/requests/compute → compute/requests/slicehost}/image_tests.rb +0 -0
  118. data/tests/{slicehost/requests/compute → compute/requests/slicehost}/slice_tests.rb +0 -0
  119. data/tests/dns/helper.rb +19 -0
  120. data/tests/dns/models/record_tests.rb +25 -0
  121. data/tests/dns/models/records_tests.rb +25 -0
  122. data/tests/dns/models/zone_tests.rb +13 -0
  123. data/tests/dns/models/zones_tests.rb +13 -0
  124. data/tests/{aws/requests/dns → dns/requests/aws}/dns_tests.rb +0 -0
  125. data/tests/{linode/requests/dns → dns/requests/linode}/dns_tests.rb +0 -0
  126. data/tests/{slicehost/requests/dns_tests → dns/requests/slicehost}/dns_tests.rb +0 -0
  127. data/tests/{zerigo/requests/dns → dns/requests/zerigo}/dns_tests.rb +0 -0
  128. data/tests/helper.rb +1 -100
  129. data/tests/helpers/{collection_tests.rb → collection_helper.rb} +0 -0
  130. data/tests/helpers/compute/{flavors_tests.rb → flavors_helper.rb} +0 -0
  131. data/tests/helpers/compute/{server_tests.rb → server_helper.rb} +0 -0
  132. data/tests/helpers/compute/{servers_tests.rb → servers_helper.rb} +0 -0
  133. data/tests/helpers/formats_helper.rb +68 -0
  134. data/tests/{helper_tests.rb → helpers/formats_helper_tests.rb} +0 -0
  135. data/tests/helpers/{model_tests.rb → model_helper.rb} +0 -0
  136. data/tests/helpers/responds_to_helper.rb +13 -0
  137. data/tests/helpers/succeeds_helper.rb +12 -0
  138. data/tests/storage/helper.rb +16 -0
  139. data/tests/storage/models/directories_tests.rb +13 -0
  140. data/tests/storage/models/directory_test.rb +24 -0
  141. data/tests/storage/models/file_tests.rb +41 -0
  142. data/tests/storage/models/files_tests.rb +26 -0
  143. data/tests/{aws/requests/storage → storage/requests/aws}/bucket_tests.rb +0 -0
  144. data/tests/{aws/requests/storage → storage/requests/aws}/multipart_upload_tests.rb +0 -0
  145. data/tests/{aws/requests/storage → storage/requests/aws}/object_tests.rb +0 -0
  146. data/tests/{google/requests/storage → storage/requests/google}/bucket_tests.rb +0 -0
  147. data/tests/{google/requests/storage → storage/requests/google}/object_tests.rb +0 -0
  148. data/tests/{rackspace/requests/storage → storage/requests/rackspace}/container_tests.rb +0 -0
  149. data/tests/{rackspace/requests/storage → storage/requests/rackspace}/object_tests.rb +0 -0
  150. metadata +195 -224
  151. data/examples/bluebox_create.rb +0 -33
  152. data/examples/dns_methods.rb +0 -389
  153. data/spec/aws/requests/simpledb/batch_put_attributes_spec.rb +0 -31
  154. data/spec/aws/requests/simpledb/create_domain_spec.rb +0 -29
  155. data/spec/aws/requests/simpledb/delete_attributes_spec.rb +0 -39
  156. data/spec/aws/requests/simpledb/delete_domain_spec.rb +0 -28
  157. data/spec/aws/requests/simpledb/domain_metadata_spec.rb +0 -52
  158. data/spec/aws/requests/simpledb/get_attributes_spec.rb +0 -67
  159. data/spec/aws/requests/simpledb/list_domains_spec.rb +0 -30
  160. data/spec/aws/requests/simpledb/put_attributes_spec.rb +0 -49
  161. data/spec/aws/requests/simpledb/select_spec.rb +0 -27
  162. data/tests/aws/models/compute/flavors_tests.rb +0 -5
  163. data/tests/aws/models/compute/server_tests.rb +0 -6
  164. data/tests/aws/models/compute/servers_tests.rb +0 -6
  165. data/tests/aws/models/storage/directories_tests.rb +0 -5
  166. data/tests/aws/models/storage/directory_tests.rb +0 -5
  167. data/tests/aws/models/storage/file_tests.rb +0 -5
  168. data/tests/aws/models/storage/files_tests.rb +0 -5
  169. data/tests/bluebox/models/compute/flavors_tests.rb +0 -5
  170. data/tests/bluebox/models/compute/server_tests.rb +0 -5
  171. data/tests/bluebox/models/compute/servers_tests.rb +0 -6
  172. data/tests/brightbox/models/compute/flavors_tests.rb +0 -5
  173. data/tests/brightbox/models/compute/server_tests.rb +0 -6
  174. data/tests/brightbox/models/compute/servers_tests.rb +0 -6
  175. data/tests/go_grid/helper.rb +0 -0
  176. data/tests/google/models/storage/directories_tests.rb +0 -5
  177. data/tests/google/models/storage/directory_tests.rb +0 -5
  178. data/tests/google/models/storage/file_tests.rb +0 -5
  179. data/tests/google/models/storage/files_tests.rb +0 -5
  180. data/tests/helpers/storage/directories_tests.rb +0 -7
  181. data/tests/helpers/storage/directory_tests.rb +0 -18
  182. data/tests/helpers/storage/file_tests.rb +0 -27
  183. data/tests/helpers/storage/files_tests.rb +0 -13
  184. data/tests/local/models/storage/directories_tests.rb +0 -5
  185. data/tests/local/models/storage/directory_tests.rb +0 -5
  186. data/tests/local/models/storage/file_tests.rb +0 -5
  187. data/tests/local/models/storage/files_tests.rb +0 -5
  188. data/tests/rackspace/models/compute/flavors_tests.rb +0 -5
  189. data/tests/rackspace/models/compute/server_tests.rb +0 -6
  190. data/tests/rackspace/models/compute/servers_tests.rb +0 -6
  191. data/tests/rackspace/models/storage/directories_tests.rb +0 -5
  192. data/tests/rackspace/models/storage/directory_tests.rb +0 -5
  193. data/tests/rackspace/models/storage/file_tests.rb +0 -5
  194. data/tests/rackspace/models/storage/files_tests.rb +0 -5
  195. data/tests/rackspace/requests/compute/resize_tests.rb +0 -47
  196. data/tests/slicehost/helper.rb +0 -1
  197. data/tests/slicehost/models/compute/flavors_tests.rb +0 -5
  198. data/tests/slicehost/models/compute/server_tests.rb +0 -6
  199. data/tests/slicehost/models/compute/servers_tests.rb +0 -6
  200. data/tests/zerigo/helper.rb +0 -0
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fog (0.3.34)
4
+ fog (0.4.0)
5
5
  builder
6
- excon (>= 0.3.6)
6
+ excon (>= 0.3.7)
7
7
  formatador (>= 0.0.16)
8
8
  json
9
9
  mime-types
@@ -15,7 +15,7 @@ GEM
15
15
  remote: http://rubygems.org/
16
16
  specs:
17
17
  builder (3.0.0)
18
- excon (0.3.6)
18
+ excon (0.3.7)
19
19
  formatador (0.0.16)
20
20
  gestalt (0.0.11)
21
21
  formatador (>= 0.0.12)
@@ -26,7 +26,7 @@ GEM
26
26
  rake (0.8.7)
27
27
  rspec (1.3.1)
28
28
  ruby-hmac (0.4.0)
29
- shindo (0.1.10)
29
+ shindo (0.1.12)
30
30
  formatador (>= 0.0.16)
31
31
  gestalt (>= 0.0.11)
32
32
 
@@ -35,7 +35,7 @@ PLATFORMS
35
35
 
36
36
  DEPENDENCIES
37
37
  builder
38
- excon (>= 0.3.6)
38
+ excon (>= 0.3.7)
39
39
  fog!
40
40
  formatador (>= 0.0.16)
41
41
  json
@@ -45,4 +45,4 @@ DEPENDENCIES
45
45
  rake
46
46
  rspec (= 1.3.1)
47
47
  ruby-hmac
48
- shindo (= 0.1.10)
48
+ shindo (= 0.1.12)
@@ -27,9 +27,13 @@ A high level interface to each cloud is provided through collections, such as `i
27
27
  You can see a list of available collections by calling `collections` on the connection object. You can try it out using the `fog` command:
28
28
 
29
29
  >> AWS.collections
30
- [:addresses, :directories, :files, :flavors, :images, :key_pairs, :security_groups, :servers, :snapshots, :volumes]
30
+ [:addresses, :directories, ..., :volumes, :zones]
31
31
 
32
- Some collections are available across multiple providers. For example, compute providers have +flavors+, +images+ and +servers+, and storage providers have +directory+ and +file+.
32
+ Some collections are available across multiple providers:
33
+
34
+ * compute providers have +flavors+, +images+ and +servers+
35
+ * dns providers have +zones+ and +records+
36
+ * storage providers have +directories+ and +files+
33
37
 
34
38
  Collections share basic CRUD type operations, such as:
35
39
  * +all+ - fetch every object of that type from the provider.
@@ -99,21 +103,28 @@ Play around and use the console to explore or check out the {getting started gui
99
103
 
100
104
  geemus says: "That should give you everything you need to get started, but let me know if there is anything I can do to help!"
101
105
 
106
+ == Providers
107
+
102
108
  You should try out the (varying) support fog has for:
103
109
  * {AWS}[http://aws.amazon.com] [{Compute}[http://aws.amazon.com/ec2], {ELB}[http://aws.amazon.com/elasticloadbalancing], {Storage}[http://aws.amazon.com/s3], {SimpleDB}[http://aws.amazon.com/simpledb]]
104
- * {Blue Box Group}[http://www.blueboxgrp.com] [{Compute}[http://www.blueboxgrp.com/blocks]]
105
- * {Brightbox}[http://www.brightbox.co.uk] [{Compute}[http://beta.brightbox.com/]]
110
+ * <b><em>{Blue Box Group}[http://www.blueboxgrp.com]</em></b> [{Compute}[http://www.blueboxgrp.com/blocks]]
111
+ * <b><em>{Brightbox}[http://www.brightbox.co.uk]</em></b> [{Compute}[http://beta.brightbox.com/]]
106
112
  * {Google}[http://www.google.com] [{Storage}[http://code.google.com/apis/storage]]
113
+ * {Linode}[http://www.linode.com] [{DNS}[http://www.linode.com]]
107
114
  * Local [Storage]
108
115
  * {Rackspace}[http://www.rackspace.com] [{Compute}[http://www.rackspacecloud.com/cloud_hosting_products/servers], {Storage}[http://www.rackspacecloud.com/cloud_hosting_products/files]]
109
116
  * {Slicehost}[http://www.slicehost.com] [{Compute}[http://www.slicehost.com], {DNS}[http://www.slicehost.com]]
110
117
  * {Terremark}[http://www.terremark.com] [{vCloud Express}[http://vcloudexpress.terremark.com]]
118
+ * {Zerigo}[http://www.zerigo.com] [{DNS}[http://www.zerigo.com/managed-dns]]
111
119
 
112
120
  There are also the basics of these providers (that could use your love):
113
- * {GoGrid}[http://www.gogrid.com] [{Compute}[http://www.gogrid.com]]
114
- * {Linode}[http://www.linode.com] [{Compute}[http://www.linode.com], {DNS}[http://www.linode.com]]
121
+ * <b><em>{GoGrid}[http://www.gogrid.com]</b></em> [{Compute}[http://www.gogrid.com]]
122
+ * {Linode}[http://www.linode.com] [{Compute}[http://www.linode.com]]
115
123
  * {New Servers}[http://www.newservers.com] [{Compute}[http://www.newservers.com]]
116
- * {Zerigo}[http://www.zerigo.com] [{DNS}[http://www.zerigo.com/managed-dns]]
124
+
125
+ Special thanks to providers listed in <b><em>bold italics</em></b> for donating resources for fog tests!
126
+
127
+ == Additional Resources
117
128
 
118
129
  Enjoy, and let me know what I can do to continue improving fog!
119
130
 
@@ -131,6 +142,14 @@ http://www.engineyard.com/images/logo.png
131
142
 
132
143
  All new work on fog is sponsored by {Engine Yard}[http://engineyard.com]
133
144
 
145
+ == T-Shirts
146
+
147
+ Wonder how you can get a shirt? Look no further!
148
+
149
+ * Blue shirts go to people who have contributed indirectly, where contribution is a judgement call on geemus's part (but he is a pretty nice guy).
150
+ * Grey shirts and a follow from @fog go to people who have made it on to the {contributors list}[https://github.com/geemus/fog/contributors] by submitting code.
151
+ * Black shirts go to people who have made it on to the {collaborators list}[https://github.com/api/v2/json/repos/show/geemus/fog/collaborators] by coercing geemus into adding them (geemus is currently the only member of this list).
152
+
134
153
  == Copyright
135
154
 
136
155
  (The MIT License)
data/Rakefile CHANGED
@@ -45,7 +45,13 @@ end
45
45
 
46
46
  task :default => :test
47
47
 
48
- task :test do
48
+ task :examples do
49
+ sh("export FOG_MOCK=false && bundle exec shindont examples")
50
+ # some don't provide mocks so we'll leave this out for now
51
+ # sh("export FOG_MOCK=true && bundle exec shindont examples")
52
+ end
53
+
54
+ task :test => :examples do
49
55
  sh("export FOG_MOCK=true && bundle exec spec spec") &&
50
56
  sh("export FOG_MOCK=true && bundle exec shindont tests") &&
51
57
  sh("export FOG_MOCK=false && bundle exec spec spec") &&
@@ -0,0 +1,76 @@
1
+ require 'rubygems'
2
+ require 'shindo'
3
+
4
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'fog')
5
+ require File.join(File.dirname(__FILE__), '..', 'tests', 'helper')
6
+
7
+ Shindo.tests('dns tests', 'dns') do
8
+
9
+ # iterate over all the providers
10
+ Fog.providers.each do |provider|
11
+
12
+ # skip if provider does not have storage
13
+ next unless provider.respond_to?(:services) && provider.services.include?(:dns)
14
+
15
+ tests(provider, provider.to_s.downcase) do
16
+
17
+ # use shortcuts to instantiate connection
18
+ @dns = Fog::DNS.new(:provider => provider.to_s)
19
+
20
+ # create a zone
21
+ # domain should be the hostname
22
+ # email is only required for linode, but included for consistency
23
+ tests('@zone = @dns.zones.create').succeeds do
24
+ @zone = @dns.zones.create(
25
+ :domain => 'fogdnsexamples.com',
26
+ :email => 'tests@fogdnsexamples.com'
27
+ )
28
+ end
29
+
30
+ # create a record in the zone
31
+ # ip is the address to route to
32
+ # name is the name for the record
33
+ # type is the type of record to create
34
+ tests('@record = @zone.records.create').succeeds do
35
+ @record = @zone.records.create(
36
+ :ip => '1.2.3.4',
37
+ :name => 'www.fogdnsexamples.com',
38
+ :type => 'A'
39
+ )
40
+ end
41
+
42
+ # list zones
43
+ tests('@zones = @dns.zones').succeeds do
44
+ @zones = @dns.zones
45
+ end
46
+
47
+ # get a zone
48
+ tests('@dns.zones.get(@zone.identity)').succeeds do
49
+ @dns.zones.get(@zone.identity)
50
+ end
51
+
52
+ # list records
53
+ tests('@records = @zone.records').succeeds do
54
+ @records = @zone.records
55
+ end
56
+
57
+ # get a record
58
+ tests('@zone.records.get(@record.identity)').succeeds do
59
+ @zone.records.get(@record.identity)
60
+ end
61
+
62
+ # destroy the record
63
+ tests('@record.destroy').succeeds do
64
+ @record.destroy
65
+ end
66
+
67
+ # destroy the zone
68
+ tests('@zone.destroy').succeeds do
69
+ @zone.destroy
70
+ end
71
+
72
+ end
73
+
74
+ end
75
+
76
+ end
@@ -9,8 +9,8 @@ Shindo.tests('storage tests', 'storage') do
9
9
  # iterate over all the providers
10
10
  Fog.providers.each do |provider|
11
11
 
12
- # return immediately if provider does not have storage
13
- break unless provider.services.include?(:storage)
12
+ # skip if provider does not have storage
13
+ next unless provider.respond_to?(:services) && provider.services.include?(:storage)
14
14
 
15
15
  tests(provider, provider.to_s.downcase) do
16
16
 
@@ -25,13 +25,23 @@ Shindo.tests('storage tests', 'storage') do
25
25
  # create a directory
26
26
  # key should be a unique string
27
27
  # public should be a boolean
28
- tests('@directory = @directories.create').succeeds do
28
+ tests('@directory = @storage.directories.create').succeeds do
29
29
  @directory = @storage.directories.create(
30
30
  :key => "fogstoragedirectory#{Time.now.to_i}",
31
31
  :public => publicity
32
32
  )
33
33
  end
34
34
 
35
+ # list directories
36
+ tests('@directories = @storage.directories').succeeds do
37
+ @directories = @storage.directories
38
+ end
39
+
40
+ # get a directory
41
+ tests('@storage.directories.get(@directory.identity)').succeeds do
42
+ @storage.directories.get(@directory.identity)
43
+ end
44
+
35
45
  # create a file in the directory
36
46
  # key can be any string
37
47
  # body can be a string or a file as File.open(path)
@@ -49,19 +59,9 @@ Shindo.tests('storage tests', 'storage') do
49
59
  @files = @directory.files
50
60
  end
51
61
 
52
- # fetch the latest files data
53
- tests('@files.reload').succeeds do
54
- @files.reload
55
- end
56
-
57
62
  # get a file
58
- tests('@directory.files.get(@file.key)').succeeds do
59
- @directory.files.get(@file.key)
60
- end
61
-
62
- # fetch the latest file data
63
- tests('@file.reload').succeeds do
64
- @file.reload
63
+ tests('@directory.files.get(@file.identity)').succeeds do
64
+ @directory.files.get(@file.identity)
65
65
  end
66
66
 
67
67
  # test the publicity of files
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
7
7
  ## If your rubyforge_project name is different, then edit it and comment out
8
8
  ## the sub! line in the Rakefile
9
9
  s.name = 'fog'
10
- s.version = '0.3.34'
11
- s.date = '2010-12-23'
10
+ s.version = '0.4.0'
11
+ s.date = '2011-01-05'
12
12
  s.rubyforge_project = 'fog'
13
13
 
14
14
  ## Make sure your summary is short. The description may be as long
@@ -43,7 +43,7 @@ Gem::Specification.new do |s|
43
43
  ## List your runtime dependencies here. Runtime dependencies are those
44
44
  ## that are needed for an end user to actually USE your code.
45
45
  s.add_dependency('builder')
46
- s.add_dependency('excon', '>=0.3.6')
46
+ s.add_dependency('excon', '>=0.3.7')
47
47
  s.add_dependency('formatador', '>=0.0.16')
48
48
  s.add_dependency('json')
49
49
  s.add_dependency('mime-types')
@@ -55,7 +55,7 @@ Gem::Specification.new do |s|
55
55
  ## those that are only needed during development
56
56
  s.add_development_dependency('rake')
57
57
  s.add_development_dependency('rspec', '1.3.1')
58
- s.add_development_dependency('shindo', '0.1.10')
58
+ s.add_development_dependency('shindo', '0.1.12')
59
59
 
60
60
  s.files = `git ls-files`.split("\n")
61
61
  s.test_files = `git ls-files -- {spec,tests}/*`.split("\n")
data/lib/fog.rb CHANGED
@@ -3,7 +3,7 @@ require File.join(File.dirname(__FILE__), 'fog', 'core')
3
3
  module Fog
4
4
 
5
5
  unless const_defined?(:VERSION)
6
- VERSION = '0.3.34'
6
+ VERSION = '0.4.0'
7
7
  end
8
8
 
9
9
  end
@@ -68,7 +68,7 @@ module Fog
68
68
  class Mock
69
69
 
70
70
  def self.availability_zone
71
- "us-east-1" << random_selection('abcd', 1)
71
+ "us-east-1" << Fog::Mock.random_selection('abcd', 1)
72
72
  end
73
73
 
74
74
  def self.box_usage
@@ -84,16 +84,16 @@ module Fog
84
84
  end
85
85
 
86
86
  def self.etag
87
- hex(32)
87
+ Fog::Mock.random_hex(32)
88
88
  end
89
89
 
90
90
  def self.image
91
91
  path = []
92
92
  (rand(3) + 2).times do
93
- path << letters(rand(9) + 8)
93
+ path << Fog::Mock.random_letters(rand(9) + 8)
94
94
  end
95
95
  {
96
- "imageOwnerId" => letters(rand(5) + 4),
96
+ "imageOwnerId" => Fog::Mock.random_letters(rand(5) + 4),
97
97
  "blockDeviceMapping" => [],
98
98
  "productCodes" => [],
99
99
  "kernelId" => kernel_id,
@@ -110,106 +110,71 @@ module Fog
110
110
  end
111
111
 
112
112
  def self.image_id
113
- "ami-#{hex(8)}"
113
+ "ami-#{Fog::Mock.random_hex(8)}"
114
114
  end
115
115
 
116
116
  def self.key_fingerprint
117
117
  fingerprint = []
118
118
  20.times do
119
- fingerprint << hex(2)
119
+ fingerprint << Fog::Mock.random_hex(2)
120
120
  end
121
121
  fingerprint.join(':')
122
122
  end
123
123
 
124
124
  def self.instance_id
125
- "i-#{hex(8)}"
125
+ "i-#{Fog::Mock.random_hex(8)}"
126
126
  end
127
127
 
128
128
  def self.ip_address
129
129
  ip = []
130
130
  4.times do
131
- ip << numbers(rand(3) + 1).to_i.to_s # remove leading 0
131
+ ip << Fog::Mock.random_numbers(rand(3) + 1).to_i.to_s # remove leading 0
132
132
  end
133
133
  ip.join('.')
134
134
  end
135
135
 
136
136
  def self.kernel_id
137
- "aki-#{hex(8)}"
137
+ "aki-#{Fog::Mock.random_hex(8)}"
138
138
  end
139
139
 
140
140
  def self.key_material
141
141
  key_material = ['-----BEGIN RSA PRIVATE KEY-----']
142
142
  20.times do
143
- key_material << base64(76)
143
+ key_material << Fog::Mock.random_base64(76)
144
144
  end
145
- key_material << base64(67) + '='
145
+ key_material << Fog::Mock.random_base64(67) + '='
146
146
  key_material << '-----END RSA PRIVATE KEY-----'
147
147
  key_material.join("\n")
148
148
  end
149
149
 
150
150
  def self.owner_id
151
- numbers(12)
151
+ Fog::Mock.random_numbers(12)
152
152
  end
153
153
 
154
154
  def self.ramdisk_id
155
- "ari-#{hex(8)}"
155
+ "ari-#{Fog::Mock.random_hex(8)}"
156
156
  end
157
157
 
158
158
  def self.request_id
159
159
  request_id = []
160
- request_id << hex(8)
160
+ request_id << Fog::Mock.random_hex(8)
161
161
  3.times do
162
- request_id << hex(4)
162
+ request_id << Fog::Mock.random_hex(4)
163
163
  end
164
- request_id << hex(12)
164
+ request_id << Fog::Mock.random_hex(12)
165
165
  request_id.join('-')
166
166
  end
167
167
 
168
168
  def self.reservation_id
169
- "r-#{hex(8)}"
169
+ "r-#{Fog::Mock.random_hex(8)}"
170
170
  end
171
171
 
172
172
  def self.snapshot_id
173
- "snap-#{hex(8)}"
173
+ "snap-#{Fog::Mock.random_hex(8)}"
174
174
  end
175
175
 
176
176
  def self.volume_id
177
- "vol-#{hex(8)}"
178
- end
179
-
180
- private
181
-
182
- def self.random_selection(characters, length)
183
- selection = ''
184
- length.times do
185
- position = rand(characters.length)
186
- selection << characters[position..position]
187
- end
188
- selection
189
- end
190
-
191
- def self.letters(length)
192
- random_selection(
193
- 'abcdefghijklmnopqrstuvwxyz',
194
- length
195
- )
196
- end
197
-
198
- def self.numbers(length)
199
- max = ('9' * length).to_i
200
- rand(max).to_s
201
- end
202
-
203
- def self.hex(length)
204
- max = ('f' * length).to_i(16)
205
- rand(max).to_s(16).rjust(length, '0')
206
- end
207
-
208
- def self.base64(length)
209
- random_selection(
210
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
211
- length
212
- )
177
+ "vol-#{Fog::Mock.random_hex(8)}"
213
178
  end
214
179
 
215
180
  end
@@ -5,7 +5,11 @@ module Fog
5
5
  requires :aws_access_key_id, :aws_secret_access_key
6
6
  recognizes :host, :path, :port, :scheme, :version, :persistent
7
7
 
8
- # model_path 'fog/aws/models/dns'
8
+ model_path 'fog/aws/models/dns'
9
+ model :record
10
+ collection :records
11
+ model :zone
12
+ collection :zones
9
13
 
10
14
  request_path 'fog/aws/requests/dns'
11
15
  request :create_hosted_zone