fog 1.0.0 → 1.1.0

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 (232) hide show
  1. data/README.rdoc +2 -9
  2. data/Rakefile +3 -2
  3. data/docs/_layouts/default.html +13 -13
  4. data/docs/about/contributing.markdown +1 -1
  5. data/docs/about/getting_started.markdown +28 -3
  6. data/docs/dns/index.markdown +4 -4
  7. data/docs/index.markdown +2 -10
  8. data/docs/public/css/fog.css +14 -1
  9. data/docs/storage/index.markdown +2 -2
  10. data/fog.gemspec +6 -5
  11. data/lib/fog.rb +1 -1
  12. data/lib/fog/aws.rb +26 -1
  13. data/lib/fog/aws/auto_scaling.rb +3 -1
  14. data/lib/fog/aws/cloud_formation.rb +3 -0
  15. data/lib/fog/aws/cloud_watch.rb +17 -1
  16. data/lib/fog/aws/compute.rb +50 -18
  17. data/lib/fog/aws/elb.rb +4 -2
  18. data/lib/fog/aws/emr.rb +133 -0
  19. data/lib/fog/aws/models/cloud_watch/alarm.rb +12 -0
  20. data/lib/fog/aws/models/cloud_watch/alarm_data.rb +39 -0
  21. data/lib/fog/aws/models/cloud_watch/alarm_datum.rb +66 -0
  22. data/lib/fog/aws/models/cloud_watch/alarm_histories.rb +18 -0
  23. data/lib/fog/aws/models/cloud_watch/alarm_history.rb +16 -0
  24. data/lib/fog/aws/models/cloud_watch/alarms.rb +30 -0
  25. data/lib/fog/aws/models/compute/addresses.rb +1 -1
  26. data/lib/fog/aws/models/compute/key_pairs.rb +1 -1
  27. data/lib/fog/aws/models/compute/security_groups.rb +1 -1
  28. data/lib/fog/aws/models/compute/server.rb +4 -2
  29. data/lib/fog/aws/models/compute/servers.rb +1 -1
  30. data/lib/fog/aws/models/compute/snapshots.rb +1 -1
  31. data/lib/fog/aws/models/compute/spot_request.rb +21 -4
  32. data/lib/fog/aws/models/compute/spot_requests.rb +45 -1
  33. data/lib/fog/aws/models/compute/volumes.rb +1 -1
  34. data/lib/fog/aws/models/elb/load_balancer.rb +2 -0
  35. data/lib/fog/aws/models/storage/file.rb +1 -1
  36. data/lib/fog/aws/parsers/cdn/get_invalidation_list.rb +0 -1
  37. data/lib/fog/aws/parsers/cloud_formation/update_stack.rb +19 -0
  38. data/lib/fog/aws/parsers/cloud_watch/delete_alarms.rb +26 -0
  39. data/lib/fog/aws/parsers/cloud_watch/describe_alarm_history.rb +40 -0
  40. data/lib/fog/aws/parsers/cloud_watch/describe_alarms.rb +73 -0
  41. data/lib/fog/aws/parsers/cloud_watch/describe_alarms_for_metric.rb +71 -0
  42. data/lib/fog/aws/parsers/cloud_watch/disable_alarm_actions.rb +26 -0
  43. data/lib/fog/aws/parsers/cloud_watch/enable_alarm_actions.rb +26 -0
  44. data/lib/fog/aws/parsers/cloud_watch/get_metric_statistics.rb +1 -0
  45. data/lib/fog/aws/parsers/cloud_watch/put_metric_alarm.rb +26 -0
  46. data/lib/fog/aws/parsers/cloud_watch/set_alarm_state.rb +26 -0
  47. data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +2 -2
  48. data/lib/fog/aws/parsers/emr/add_instance_groups.rb +28 -0
  49. data/lib/fog/aws/parsers/emr/add_job_flow_steps.rb +17 -0
  50. data/lib/fog/aws/parsers/emr/describe_job_flows.rb +140 -0
  51. data/lib/fog/aws/parsers/emr/modify_instance_groups.rb +17 -0
  52. data/lib/fog/aws/parsers/emr/run_job_flow.rb +19 -0
  53. data/lib/fog/aws/parsers/emr/set_termination_protection.rb +17 -0
  54. data/lib/fog/aws/parsers/emr/terminate_job_flows.rb +17 -0
  55. data/lib/fog/aws/rds.rb +3 -1
  56. data/lib/fog/aws/requests/cloud_formation/create_stack.rb +6 -0
  57. data/lib/fog/aws/requests/cloud_formation/update_stack.rb +62 -0
  58. data/lib/fog/aws/requests/cloud_watch/delete_alarms.rb +30 -0
  59. data/lib/fog/aws/requests/cloud_watch/describe_alarm_history.rb +33 -0
  60. data/lib/fog/aws/requests/cloud_watch/describe_alarms.rb +38 -0
  61. data/lib/fog/aws/requests/cloud_watch/describe_alarms_for_metric.rb +39 -0
  62. data/lib/fog/aws/requests/cloud_watch/disable_alarm_actions.rb +30 -0
  63. data/lib/fog/aws/requests/cloud_watch/enable_alarm_actions.rb +30 -0
  64. data/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb +84 -0
  65. data/lib/fog/aws/requests/cloud_watch/set_alarm_state.rb +31 -0
  66. data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +141 -36
  67. data/lib/fog/aws/requests/compute/create_snapshot.rb +2 -3
  68. data/lib/fog/aws/requests/compute/create_tags.rb +5 -3
  69. data/lib/fog/aws/requests/compute/create_volume.rb +0 -1
  70. data/lib/fog/aws/requests/compute/delete_security_group.rb +25 -0
  71. data/lib/fog/aws/requests/compute/delete_tags.rb +3 -4
  72. data/lib/fog/aws/requests/compute/describe_addresses.rb +2 -2
  73. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +5 -2
  74. data/lib/fog/aws/requests/compute/describe_images.rb +6 -9
  75. data/lib/fog/aws/requests/compute/describe_instances.rb +17 -8
  76. data/lib/fog/aws/requests/compute/describe_key_pairs.rb +2 -2
  77. data/lib/fog/aws/requests/compute/describe_regions.rb +2 -2
  78. data/lib/fog/aws/requests/compute/describe_reserved_instances.rb +1 -1
  79. data/lib/fog/aws/requests/compute/describe_security_groups.rb +2 -2
  80. data/lib/fog/aws/requests/compute/describe_snapshots.rb +7 -5
  81. data/lib/fog/aws/requests/compute/describe_volumes.rb +5 -4
  82. data/lib/fog/aws/requests/compute/modify_image_attribute.rb +32 -0
  83. data/lib/fog/aws/requests/compute/modify_instance_attribute.rb +1 -1
  84. data/lib/fog/aws/requests/compute/purchase_reserved_instances_offering.rb +1 -1
  85. data/lib/fog/aws/requests/compute/register_image.rb +0 -1
  86. data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +41 -29
  87. data/lib/fog/aws/requests/compute/run_instances.rb +1 -2
  88. data/lib/fog/aws/requests/elb/create_load_balancer.rb +1 -1
  89. data/lib/fog/aws/requests/elb/create_load_balancer_listeners.rb +1 -1
  90. data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +1 -1
  91. data/lib/fog/aws/requests/elb/describe_instance_health.rb +2 -2
  92. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +3 -3
  93. data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +2 -2
  94. data/lib/fog/aws/requests/emr/add_instance_groups.rb +46 -0
  95. data/lib/fog/aws/requests/emr/add_job_flow_steps.rb +49 -0
  96. data/lib/fog/aws/requests/emr/describe_job_flows.rb +108 -0
  97. data/lib/fog/aws/requests/emr/modify_instance_groups.rb +40 -0
  98. data/lib/fog/aws/requests/emr/run_job_flow.rb +106 -0
  99. data/lib/fog/aws/requests/emr/set_termination_protection.rb +39 -0
  100. data/lib/fog/aws/requests/emr/terminate_job_flows.rb +37 -0
  101. data/lib/fog/aws/requests/iam/get_server_certificate.rb +5 -7
  102. data/lib/fog/aws/requests/iam/upload_server_certificate.rb +1 -0
  103. data/lib/fog/aws/requests/simpledb/get_attributes.rb +2 -2
  104. data/lib/fog/aws/requests/simpledb/select.rb +1 -1
  105. data/lib/fog/aws/requests/storage/copy_object.rb +1 -1
  106. data/lib/fog/aws/requests/storage/get_object_url.rb +2 -2
  107. data/lib/fog/aws/requests/storage/hash_to_acl.rb +35 -25
  108. data/lib/fog/aws/ses.rb +1 -1
  109. data/lib/fog/aws/simpledb.rb +2 -0
  110. data/lib/fog/aws/sns.rb +3 -1
  111. data/lib/fog/aws/sqs.rb +4 -2
  112. data/lib/fog/aws/storage.rb +12 -3
  113. data/lib/fog/bin.rb +1 -1
  114. data/lib/fog/bin/aws.rb +8 -4
  115. data/lib/fog/bin/bluebox.rb +2 -2
  116. data/lib/fog/bin/brightbox.rb +1 -1
  117. data/lib/fog/bin/dnsimple.rb +1 -1
  118. data/lib/fog/bin/dnsmadeeasy.rb +1 -1
  119. data/lib/fog/bin/ecloud.rb +1 -1
  120. data/lib/fog/bin/glesys.rb +1 -1
  121. data/lib/fog/bin/go_grid.rb +1 -1
  122. data/lib/fog/bin/google.rb +1 -1
  123. data/lib/fog/bin/libvirt.rb +1 -1
  124. data/lib/fog/bin/linode.rb +2 -2
  125. data/lib/fog/bin/local.rb +1 -1
  126. data/lib/fog/bin/new_servers.rb +1 -1
  127. data/lib/fog/bin/ninefold.rb +2 -2
  128. data/lib/fog/bin/openstack.rb +1 -1
  129. data/lib/fog/bin/rackspace.rb +3 -3
  130. data/lib/fog/bin/slicehost.rb +1 -1
  131. data/lib/fog/bin/stormondemand.rb +1 -1
  132. data/lib/fog/bin/virtual_box.rb +1 -1
  133. data/lib/fog/bin/vmfusion.rb +1 -1
  134. data/lib/fog/bin/voxel.rb +1 -1
  135. data/lib/fog/bin/zerigo.rb +1 -1
  136. data/lib/fog/brightbox/models/compute/account.rb +1 -1
  137. data/lib/fog/compute/models/server.rb +1 -2
  138. data/lib/fog/core/attributes.rb +5 -5
  139. data/lib/fog/core/connection.rb +1 -1
  140. data/lib/fog/core/deprecation.rb +2 -2
  141. data/lib/fog/core/logger.rb +8 -3
  142. data/lib/fog/core/mock.rb +4 -0
  143. data/lib/fog/core/provider.rb +7 -2
  144. data/lib/fog/core/service.rb +8 -2
  145. data/lib/fog/dnsmadeeasy/models/dns/record.rb +3 -2
  146. data/lib/fog/dynect/dns.rb +25 -3
  147. data/lib/fog/ecloud/compute.rb +2 -6
  148. data/lib/fog/go_grid/requests/compute/grid_server_power.rb +1 -1
  149. data/lib/fog/google/models/storage/file.rb +1 -1
  150. data/lib/fog/google/requests/storage/get_object_url.rb +2 -2
  151. data/lib/fog/google/storage.rb +1 -1
  152. data/lib/fog/libvirt/models/compute/uri.rb +7 -3
  153. data/lib/fog/linode/models/compute/server.rb +10 -0
  154. data/lib/fog/ninefold/models/storage/file.rb +8 -6
  155. data/lib/fog/ninefold/models/storage/files.rb +3 -2
  156. data/lib/fog/ninefold/requests/storage/head_namespace.rb +20 -0
  157. data/lib/fog/ninefold/storage.rb +4 -2
  158. data/lib/fog/openstack.rb +4 -3
  159. data/lib/fog/openstack/compute.rb +8 -5
  160. data/lib/fog/openstack/models/compute/server.rb +10 -1
  161. data/lib/fog/openstack/requests/compute/create_server.rb +6 -8
  162. data/lib/fog/rackspace/load_balancers.rb +1 -0
  163. data/lib/fog/rackspace/models/dns/callback.rb +1 -1
  164. data/lib/fog/rackspace/models/dns/record.rb +1 -1
  165. data/lib/fog/rackspace/models/dns/zone.rb +1 -1
  166. data/lib/fog/slicehost/dns.rb +1 -0
  167. data/lib/fog/slicehost/models/dns/record.rb +7 -3
  168. data/lib/fog/slicehost/models/dns/zone.rb +1 -1
  169. data/lib/fog/slicehost/parsers/dns/create_record.rb +8 -2
  170. data/lib/fog/slicehost/parsers/dns/get_record.rb +17 -5
  171. data/lib/fog/slicehost/parsers/dns/get_records.rb +10 -2
  172. data/lib/fog/slicehost/requests/dns/get_record.rb +1 -1
  173. data/lib/fog/slicehost/requests/dns/get_records.rb +7 -8
  174. data/lib/fog/slicehost/requests/dns/update_record.rb +43 -0
  175. data/lib/fog/storm_on_demand/models/compute/balancers.rb +1 -1
  176. data/lib/fog/storm_on_demand/models/compute/configs.rb +1 -1
  177. data/lib/fog/storm_on_demand/models/compute/images.rb +1 -1
  178. data/lib/fog/storm_on_demand/models/compute/servers.rb +1 -1
  179. data/lib/fog/storm_on_demand/models/compute/templates.rb +1 -1
  180. data/lib/fog/terremark/vcloud.rb +1 -1
  181. data/lib/fog/vsphere/compute.rb +40 -23
  182. data/lib/fog/vsphere/models/compute/server.rb +1 -0
  183. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +36 -4
  184. data/lib/fog/zerigo/dns.rb +14 -3
  185. data/lib/fog/zerigo/models/dns/record.rb +1 -1
  186. data/lib/fog/zerigo/models/dns/records.rb +5 -0
  187. data/lib/fog/zerigo/models/dns/zones.rb +2 -2
  188. data/lib/fog/zerigo/requests/dns/count_hosts.rb +20 -1
  189. data/lib/fog/zerigo/requests/dns/count_zones.rb +12 -1
  190. data/lib/fog/zerigo/requests/dns/create_host.rb +67 -1
  191. data/lib/fog/zerigo/requests/dns/create_zone.rb +44 -1
  192. data/lib/fog/zerigo/requests/dns/delete_host.rb +19 -0
  193. data/lib/fog/zerigo/requests/dns/delete_zone.rb +17 -0
  194. data/lib/fog/zerigo/requests/dns/find_hosts.rb +22 -1
  195. data/lib/fog/zerigo/requests/dns/get_host.rb +18 -1
  196. data/lib/fog/zerigo/requests/dns/get_zone.rb +19 -2
  197. data/lib/fog/zerigo/requests/dns/get_zone_stats.rb +23 -0
  198. data/lib/fog/zerigo/requests/dns/list_hosts.rb +20 -1
  199. data/lib/fog/zerigo/requests/dns/list_zones.rb +15 -0
  200. data/lib/fog/zerigo/requests/dns/update_host.rb +20 -1
  201. data/lib/fog/zerigo/requests/dns/update_zone.rb +20 -1
  202. data/tests/aws/models/cloud_watch/alarm_data_tests.rb +42 -0
  203. data/tests/aws/models/cloud_watch/alarm_history_tests.rb +22 -0
  204. data/tests/aws/models/compute/security_group_tests.rb +15 -10
  205. data/tests/aws/models/elb/model_tests.rb +4 -4
  206. data/tests/aws/requests/cloud_formation/stack_tests.rb +14 -0
  207. data/tests/aws/requests/cloud_watch/list_metrics_test.rb +5 -5
  208. data/tests/aws/requests/compute/image_tests.rb +33 -2
  209. data/tests/aws/requests/compute/instance_tests.rb +16 -1
  210. data/tests/aws/requests/compute/security_group_tests.rb +251 -32
  211. data/tests/aws/requests/compute/tag_tests.rb +42 -2
  212. data/tests/aws/requests/emr/helper.rb +172 -0
  213. data/tests/aws/requests/emr/instance_group_tests.rb +106 -0
  214. data/tests/aws/requests/emr/job_flow_tests.rb +88 -0
  215. data/tests/aws/requests/iam/server_certificate_tests.rb +20 -7
  216. data/tests/aws/requests/storage/bucket_tests.rb +82 -54
  217. data/tests/aws/requests/storage/hash_to_acl_tests.rb +173 -0
  218. data/tests/aws/requests/storage/object_tests.rb +44 -24
  219. data/tests/brightbox/requests/compute/helper.rb +15 -6
  220. data/tests/core/attribute_tests.rb +29 -0
  221. data/tests/core/mocking_tests.rb +60 -0
  222. data/tests/dns/models/record_tests.rb +4 -2
  223. data/tests/dns/models/records_tests.rb +4 -2
  224. data/tests/dns/models/zone_tests.rb +3 -1
  225. data/tests/dns/models/zones_tests.rb +4 -2
  226. data/tests/helper.rb +4 -0
  227. data/tests/rackspace/requests/dns/dns_tests.rb +16 -12
  228. data/tests/rackspace/requests/dns/records_tests.rb +13 -11
  229. data/tests/slicehost/requests/dns/dns_tests.rb +58 -11
  230. data/tests/vsphere/compute_tests.rb +18 -10
  231. data/tests/vsphere/requests/compute/vm_clone_tests.rb +1 -1
  232. metadata +214 -221
@@ -110,7 +110,8 @@ class Brightbox
110
110
  "description" => String,
111
111
  "source" => String,
112
112
  "status" => String,
113
- "owner" => String
113
+ "owner" => String,
114
+ "username" => Fog::Nullable::String,
114
115
  }
115
116
 
116
117
  INTERFACE = {
@@ -131,7 +132,8 @@ class Brightbox
131
132
  "hostname" => String,
132
133
  "created_at" => String,
133
134
  "started_at" => Fog::Nullable::String,
134
- "deleted_at" => Fog::Nullable::String
135
+ "deleted_at" => Fog::Nullable::String,
136
+ "username" => Fog::Nullable::String
135
137
  }
136
138
 
137
139
  SERVER_GROUP = {
@@ -139,6 +141,7 @@ class Brightbox
139
141
  "resource_type" => String,
140
142
  "url" => String,
141
143
  "name" => String,
144
+ "created_at" => String,
142
145
  "default" => Fog::Boolean,
143
146
  "description" => Fog::Nullable::String
144
147
  }
@@ -237,7 +240,8 @@ class Brightbox
237
240
  "compatibility_mode" => Fog::Boolean,
238
241
  "virtual_size" => Integer,
239
242
  "disk_size" => Integer,
240
- "ancestor" => Fog::Brightbox::Nullable::Image
243
+ "ancestor" => Fog::Brightbox::Nullable::Image,
244
+ "username" => Fog::Nullable::String
241
245
  }
242
246
 
243
247
  LOAD_BALANCER = {
@@ -271,10 +275,12 @@ class Brightbox
271
275
  "server_groups" => [Brightbox::Compute::Formats::Nested::SERVER_GROUP],
272
276
  "snapshots" => [Brightbox::Compute::Formats::Nested::IMAGE],
273
277
  "interfaces" => [Brightbox::Compute::Formats::Nested::INTERFACE],
274
- "zone" => Fog::Brightbox::Nullable::Zone
278
+ "zone" => Fog::Brightbox::Nullable::Zone,
279
+ "username" => Fog::Nullable::String
275
280
  }
276
281
 
277
282
  SERVER_GROUP = {
283
+ "created_at" => String,
278
284
  "id" => String,
279
285
  "resource_type" => String,
280
286
  "url" => String,
@@ -420,7 +426,8 @@ class Brightbox
420
426
  "compatibility_mode" => Fog::Boolean,
421
427
  "virtual_size" => Integer,
422
428
  "disk_size" => Integer,
423
- "ancestor" => Fog::Brightbox::Nullable::Image
429
+ "ancestor" => Fog::Brightbox::Nullable::Image,
430
+ "username" => Fog::Nullable::String
424
431
  }
425
432
 
426
433
  INTERFACE = {
@@ -470,10 +477,12 @@ class Brightbox
470
477
  "snapshots" => [Brightbox::Compute::Formats::Nested::IMAGE],
471
478
  "server_groups" => [Brightbox::Compute::Formats::Nested::SERVER_GROUP],
472
479
  "interfaces" => [Brightbox::Compute::Formats::Nested::INTERFACE],
473
- "zone" => Brightbox::Compute::Formats::Nested::ZONE
480
+ "zone" => Brightbox::Compute::Formats::Nested::ZONE,
481
+ "username" => Fog::Nullable::String
474
482
  }
475
483
 
476
484
  SERVER_GROUP = {
485
+ "created_at" => String,
477
486
  "id" => String,
478
487
  "resource_type" => String,
479
488
  "url" => String,
@@ -1,6 +1,7 @@
1
1
  class FogAttributeTestModel < Fog::Model
2
2
  attribute :key, :aliases => 'keys', :squash => "id"
3
3
  attribute :time, :type => :time
4
+ attribute :bool, :type => :boolean
4
5
  end
5
6
 
6
7
  Shindo.tests('Fog::Attributes', 'core') do
@@ -51,4 +52,32 @@ Shindo.tests('Fog::Attributes', 'core') do
51
52
 
52
53
  end
53
54
 
55
+ tests(':type => :boolean') do
56
+ tests(':bool => "true"').returns(true) do
57
+ @model.merge_attributes(:bool => 'true')
58
+ @model.bool
59
+ end
60
+
61
+ tests(':bool => true').returns(true) do
62
+ @model.merge_attributes(:bool => true)
63
+ @model.bool
64
+ end
65
+
66
+ tests(':bool => "false"').returns(false) do
67
+ @model.merge_attributes(:bool => 'false')
68
+ @model.bool
69
+ end
70
+
71
+ tests(':bool => false').returns(false) do
72
+ @model.merge_attributes(:bool => false)
73
+ @model.bool
74
+ end
75
+
76
+ tests(':bool => "foo"').returns(nil) do
77
+ @model.merge_attributes(:bool => "foo")
78
+ @model.bool
79
+ end
80
+
81
+ end
82
+
54
83
  end
@@ -0,0 +1,60 @@
1
+ Shindo.tests('Fog mocking', 'core') do
2
+ before do
3
+ @fog_was_mocked = Fog.mock?
4
+ Fog.unmock! if @fog_was_mocked
5
+ end
6
+
7
+ after do
8
+ Fog.mock! if @fog_was_mocked
9
+ end
10
+
11
+ tests('Fog.mock!') do
12
+ tests('Fog.mock!').returns(true) do
13
+ Fog.mock!
14
+ end
15
+
16
+ tests('Fog.mock? without Fog.mock!').returns(false) do
17
+ Fog.mock?
18
+ end
19
+
20
+ tests('Fog.mock? with Fog.mock!').returns(true) do
21
+ Fog.mock!
22
+ Fog.mock?
23
+ end
24
+
25
+ tests('Fog.mocking? without Fog.mock!').returns(false) do
26
+ Fog.mocking?
27
+ end
28
+
29
+ tests('Fog.mocking? with Fog.mock!').returns(true) do
30
+ Fog.mock!
31
+ Fog.mocking?
32
+ end
33
+ end
34
+
35
+ tests('Fog::Mock.delay') do
36
+ tests('Fog::Mock.delay').returns(1, "defaults to 1") do
37
+ Fog::Mock.delay
38
+ end
39
+
40
+ tests('Fog::Mock.delay = 2').returns(2, "changes Fog::Mock.delay to 2") do
41
+ Fog::Mock.delay = 2
42
+ Fog::Mock.delay
43
+ end
44
+
45
+ tests('Fog::Mock.delay = 0').returns(0, "changes Fog::Mock.delay to 0") do
46
+ Fog::Mock.delay = 0
47
+ Fog::Mock.delay
48
+ end
49
+
50
+ tests('Fog::Mock.delay = -1').raises(ArgumentError) do
51
+ Fog::Mock.delay = -1
52
+ end
53
+ end
54
+
55
+ tests('Fog::Mock.not_implemented').raises(Fog::Errors::MockNotImplemented) do
56
+ Fog::Mock.not_implemented
57
+ end
58
+
59
+
60
+ end
@@ -3,17 +3,19 @@ for provider, config in dns_providers
3
3
  # FIXME: delay/timing breaks things :(
4
4
  next if [:dnsmadeeasy].include?(provider)
5
5
 
6
+ domain_name = uniq_id + '.com'
7
+
6
8
  Shindo.tests("Fog::DNS[:#{provider}] | record", [provider.to_s]) do
7
9
 
8
10
  record_attributes = {
9
- :name => 'www.fogrecordtests.com',
11
+ :name => 'www.' + domain_name,
10
12
  :type => 'A',
11
13
  :value => '1.2.3.4'
12
14
  }.merge!(config[:record_attributes] || {})
13
15
 
14
16
  if !Fog.mocking? || config[:mocked]
15
17
  zone_attributes = {
16
- :domain => 'fogrecordtests.com'
18
+ :domain => domain_name
17
19
  }.merge(config[:zone_attributes] || {})
18
20
 
19
21
  @zone = Fog::DNS[provider].zones.create(zone_attributes)
@@ -3,17 +3,19 @@ for provider, config in dns_providers
3
3
  # FIXME: delay/timing breaks things :(
4
4
  next if [:dnsmadeeasy].include?(provider)
5
5
 
6
+ domain_name = uniq_id + '.com'
7
+
6
8
  Shindo.tests("Fog::DNS[:#{provider}] | records", [provider.to_s]) do
7
9
 
8
10
  record_attributes = {
9
- :name => 'www.fogrecordstests.com',
11
+ :name => 'www.' + domain_name,
10
12
  :type => 'A',
11
13
  :value => '1.2.3.4'
12
14
  }.merge!(config[:record_attributes] || {})
13
15
 
14
16
  if !Fog.mocking? || config[:mocked]
15
17
  zone_attributes = {
16
- :domain => 'fogrecordstests.com'
18
+ :domain => domain_name
17
19
  }.merge(config[:zone_attributes] || {})
18
20
 
19
21
  @zone = Fog::DNS[provider].zones.create(zone_attributes)
@@ -3,10 +3,12 @@ for provider, config in dns_providers
3
3
  # FIXME: delay/timing breaks things :(
4
4
  next if [:dnsmadeeasy].include?(provider)
5
5
 
6
+ domain_name = uniq_id + '.com'
7
+
6
8
  Shindo.tests("Fog::DNS[:#{provider}] | zone", [provider.to_s]) do
7
9
 
8
10
  zone_attributes = {
9
- :domain => 'fogzonetests.com'
11
+ :domain => domain_name
10
12
  }.merge!(config[:zone_attributes] || {})
11
13
 
12
14
  model_tests(Fog::DNS[provider].zones, zone_attributes, config[:mocked])
@@ -3,14 +3,16 @@ for provider, config in dns_providers
3
3
  # FIXME: delay/timing breaks things :(
4
4
  next if [:dnsmadeeasy].include?(provider)
5
5
 
6
+ domain_name = uniq_id + '.com'
7
+
6
8
  Shindo.tests("Fog::DNS[:#{provider}] | zones", [provider.to_s]) do
7
9
 
8
10
  zone_attributes = {
9
- :domain => 'fogzonestests.com'
11
+ :domain => domain_name
10
12
  }.merge!(config[:zone_attributes] || {})
11
13
 
12
14
  collection_tests(Fog::DNS[provider].zones, zone_attributes, config[:mocked])
13
15
 
14
16
  end
15
17
 
16
- end
18
+ end
@@ -7,6 +7,10 @@ def lorem_file
7
7
  File.open(File.dirname(__FILE__) + '/lorem.txt', 'r')
8
8
  end
9
9
 
10
+ def array_differences(array_a, array_b)
11
+ (array_a - array_b) | (array_b - array_a)
12
+ end
13
+
10
14
  # check to see which credentials are available and add others to the skipped tags list
11
15
  all_providers = ['aws', 'bluebox', 'brightbox', 'dnsimple', 'dnsmadeeasy', 'dynect', 'ecloud', 'glesys', 'gogrid', 'google', 'linode', 'local', 'ninefold', 'newservers', 'openstack', 'rackspace', 'slicehost', 'stormondemand', 'voxel', 'zerigo']
12
16
  available_providers = Fog.available_providers.map {|provider| provider.downcase}
@@ -1,9 +1,10 @@
1
1
  Shindo.tests('Fog::DNS[:rackspace] | DNS requests', ['rackspace', 'dns']) do
2
2
 
3
3
  pending if Fog.mocking?
4
+ domain_name = uniq_id + '.com'
4
5
 
5
6
  tests('success on simple domain') do
6
- domain_tests(Fog::DNS[:rackspace], {:name => 'basictestdomain.com', :email => 'hostmaster@basictestdomain.com', :records => [{:ttl => 300, :name => 'basictestdomain.com', :type => 'A', :data => '192.168.1.1'}]}) do
7
+ domain_tests(Fog::DNS[:rackspace], {:name => domain_name, :email => 'hostmaster@' + domain_name, :records => [{:ttl => 300, :name => domain_name, :type => 'A', :data => '192.168.1.1'}]}) do
7
8
 
8
9
  tests('list_domains').formats(LIST_DOMAIN_FORMAT.reject {|key,value| key == 'links'}) do
9
10
  Fog::DNS[:rackspace].list_domains.body
@@ -27,21 +28,21 @@ Shindo.tests('Fog::DNS[:rackspace] | DNS requests', ['rackspace', 'dns']) do
27
28
  tests('success for domain with multiple records') do
28
29
  domain_tests(Fog::DNS[:rackspace],
29
30
  {
30
- :name => 'testdomainwithmultiplerecords.com',
31
- :email => 'hostmaster@testdomainwithmultiplerecords.com',
31
+ :name => domain_name,
32
+ :email => 'hostmaster@' + domain_name,
32
33
  :records =>
33
34
  [
34
35
  {
35
36
  :ttl => 300,
36
- :name => 'testdomainwithmultiplerecords.com',
37
+ :name => domain_name,
37
38
  :type => 'A',
38
39
  :data => '192.168.1.1'
39
40
  },
40
41
  {
41
42
  :ttl => 3600,
42
- :name => 'testdomainwithmultiplerecords.com',
43
+ :name => domain_name,
43
44
  :type => 'MX',
44
- :data => 'mx.testdomainwithmultiplerecords.com',
45
+ :data => 'mx.' + domain_name,
45
46
  :priority => 10
46
47
  }
47
48
  ]
@@ -49,21 +50,24 @@ Shindo.tests('Fog::DNS[:rackspace] | DNS requests', ['rackspace', 'dns']) do
49
50
  end
50
51
 
51
52
  tests('success for multiple domains') do
53
+ domain1_name = uniq_id + '-1.com'
54
+ domain2_name = uniq_id + '-2.com'
55
+
52
56
  domains_tests(Fog::DNS[:rackspace],
53
57
  [
54
- {:name => 'basictestdomain1.com', :email => 'hostmaster@basictestdomain1.com', :records => [{:ttl => 300, :name =>'basictestdomain1.com', :type => 'A', :data => '192.168.1.1'}]},
55
- {:name => 'basictestdomain2.com', :email => 'hostmaster@basictestdomain2.com', :records => [{:ttl => 300, :name =>'basictestdomain2.com', :type => 'A', :data => '192.168.1.1'}]}
58
+ {:name => domain1_name, :email => 'hostmaster@' + domain1_name, :records => [{:ttl => 300, :name => domain1_name, :type => 'A', :data => '192.168.1.1'}]},
59
+ {:name => domain2_name, :email => 'hostmaster@' + domain2_name, :records => [{:ttl => 300, :name => domain2_name, :type => 'A', :data => '192.168.1.1'}]}
56
60
  ])
57
61
  end
58
62
 
59
63
  tests('success for domain with subdomain') do
60
64
  domains_tests(Fog::DNS[:rackspace],
61
65
  [
62
- {:name => 'basictestdomain.com', :email => 'hostmaster@basictestdomain.com', :records => [{:ttl => 300, :name =>'basictestdomain.com', :type => 'A', :data => '192.168.1.1'}]},
63
- {:name => 'subdomain.basictestdomain.com', :email => 'hostmaster@subdomain.basictestdomain.com', :records => [{:ttl => 300, :name =>'subdomain.basictestdomain.com', :type => 'A', :data => '192.168.1.1'}]}
66
+ {:name => domain_name, :email => 'hostmaster@' + domain_name, :records => [{:ttl => 300, :name => domain_name, :type => 'A', :data => '192.168.1.1'}]},
67
+ {:name => 'subdomain.' + domain_name, :email => 'hostmaster@subdomain.' + domain_name, :records => [{:ttl => 300, :name =>'subdomain.' + domain_name, :type => 'A', :data => '192.168.1.1'}]}
64
68
  ], true) do
65
69
 
66
- @root_domain_id = @domain_details.find { |domain| domain['name'] == 'basictestdomain.com' }['id']
70
+ @root_domain_id = @domain_details.find { |domain| domain['name'] == domain_name }['id']
67
71
 
68
72
  tests("list_domain_details('#{@root_domain_id}', :show_records => false, :show_subdomains => false)") do
69
73
  response = Fog::DNS[:rackspace].list_domain_details(@root_domain_id, :show_records => false, :show_subdomains => false)
@@ -89,7 +93,7 @@ Shindo.tests('Fog::DNS[:rackspace] | DNS requests', ['rackspace', 'dns']) do
89
93
  wait_for Fog::DNS[:rackspace], Fog::DNS[:rackspace].remove_domain(@root_domain_id, :delete_subdomains => true)
90
94
 
91
95
  test('domain and subdomains were really deleted') do
92
- (Fog::DNS[:rackspace].list_domains.body['domains'].collect { |domain| domain['name'] } & ['basictestdomain.com', 'subdomain.basictestdomain.com']).empty?
96
+ (Fog::DNS[:rackspace].list_domains.body['domains'].collect { |domain| domain['name'] } & [domain_name, 'subdomain.' + domain_name]).empty?
93
97
  end
94
98
  end
95
99
  end
@@ -2,7 +2,9 @@ Shindo.tests('Fog::DNS[:rackspace] | dns records requests', ['rackspace', 'dns']
2
2
 
3
3
  pending if Fog.mocking?
4
4
 
5
- domain_tests(Fog::DNS[:rackspace], {:name => 'basictestdomain.com', :email => 'hostmaster@basictestdomain.com', :records => [{:ttl => 300, :name => 'basictestdomain.com', :type => 'A', :data => '192.168.1.1'}]}) do
5
+ domain_name = uniq_id + '.com'
6
+
7
+ domain_tests(Fog::DNS[:rackspace], {:name => domain_name, :email => 'hostmaster@' + domain_name, :records => [{:ttl => 300, :name => domain_name, :type => 'A', :data => '192.168.1.1'}]}) do
6
8
 
7
9
  tests('success on single record') do
8
10
 
@@ -10,18 +12,18 @@ Shindo.tests('Fog::DNS[:rackspace] | dns records requests', ['rackspace', 'dns']
10
12
  Fog::DNS[:rackspace].list_records(@domain_id).body
11
13
  end
12
14
 
13
- tests("add_records(#{@domain_id}, [{ :name => 'test1.basictestdomain.com', :type => 'A', :data => '192.168.2.1'}])").formats(RECORD_LIST_FORMAT) do
14
- response = wait_for Fog::DNS[:rackspace], Fog::DNS[:rackspace].add_records(@domain_id, [{ :name => 'test1.basictestdomain.com', :type => 'A', :data => '192.168.2.1'}])
15
- @record_id = response.body['records'].first['id']
16
- response.body
15
+ tests("add_records(#{@domain_id}, [{ :name => 'test1.#{domain_name}', :type => 'A', :data => '192.168.2.1'}])").formats(RECORD_LIST_FORMAT) do
16
+ response = wait_for Fog::DNS[:rackspace], Fog::DNS[:rackspace].add_records(@domain_id, [{ :name => 'test1.' + domain_name, :type => 'A', :data => '192.168.2.1'}])
17
+ @record_id = response.body['response']['records'].first['id']
18
+ response.body['response']
17
19
  end
18
20
 
19
21
  tests("list_record_details(#{@domain_id}, #{@record_id})").formats(RECORD_FORMAT) do
20
22
  Fog::DNS[:rackspace].list_record_details(@domain_id, @record_id).body
21
23
  end
22
24
 
23
- tests("modify_record(#{@domain_id}, #{@record_id}, { :ttl => 500, :name => 'test2.basictestdomain.com', :data => '192.168.3.1' })").succeeds do
24
- wait_for Fog::DNS[:rackspace], Fog::DNS[:rackspace].modify_record(@domain_id, @record_id, { :ttl => 500, :name => 'test2.basictestdomain.com', :data => '192.168.3.1' })
25
+ tests("modify_record(#{@domain_id}, #{@record_id}, { :ttl => 500, :name => 'test2.#{domain_name}', :data => '192.168.3.1' })").succeeds do
26
+ wait_for Fog::DNS[:rackspace], Fog::DNS[:rackspace].modify_record(@domain_id, @record_id, { :ttl => 500, :name => 'test2.' + domain_name, :data => '192.168.3.1' })
25
27
  end
26
28
 
27
29
  tests("remove_record(#{@domain_id}, #{@record_id})").succeeds do
@@ -33,14 +35,14 @@ Shindo.tests('Fog::DNS[:rackspace] | dns records requests', ['rackspace', 'dns']
33
35
 
34
36
  records_attributes =
35
37
  [
36
- { :name => 'test1.basictestdomain.com', :type => 'A', :data => '192.168.2.1'},
37
- { :name => 'basictestdomain.com', :type => 'MX', :priority => 10, :data => 'mx.basictestdomain.com'}
38
+ { :name => 'test1.' + domain_name, :type => 'A', :data => '192.168.2.1'},
39
+ { :name => domain_name, :type => 'MX', :priority => 10, :data => 'mx.' + domain_name}
38
40
  ]
39
41
 
40
42
  tests("add_records(#{@domain_id}, #{records_attributes})").formats(RECORD_LIST_FORMAT) do
41
43
  response = wait_for Fog::DNS[:rackspace], Fog::DNS[:rackspace].add_records(@domain_id, records_attributes)
42
- @record_ids = response.body['records'].collect { |record| record['id'] }
43
- response.body
44
+ @record_ids = response.body['response']['records'].collect { |record| record['id'] }
45
+ response.body['response']
44
46
  end
45
47
 
46
48
  tests("remove_records(#{@domain_id}, #{@record_ids})").succeeds do
@@ -183,11 +183,11 @@ Shindo.tests('Fog::DNS[:slicehost] | DNS requests', ['slicehost', 'dns']) do
183
183
  response = Fog::DNS[:slicehost].get_record(@record_id)
184
184
  if response.status == 200
185
185
  mail_domain = 'mail.' + @domain
186
- record = response.body['records'][0]
187
- if (record['record-type'] == 'MX') and (record['name'] == @domain) and
188
- (record['data'] == mail_domain) and (record['ttl'] == 3600) and (record['active'] == 'N') and
186
+ record = response.body
187
+ if (record['record_type'] == 'MX') and (record['name'] == @domain) and
188
+ (record['value'] == mail_domain) and (record['ttl'] == 3600) and (record['active'] == 'N') and
189
189
  (record['aux'] == "10")
190
- result= true
190
+ result = true
191
191
  end
192
192
  end
193
193
 
@@ -197,7 +197,7 @@ Shindo.tests('Fog::DNS[:slicehost] | DNS requests', ['slicehost', 'dns']) do
197
197
  test('get records - verify all parameters for one record') do
198
198
  pending if Fog.mocking?
199
199
 
200
- result= false
200
+ result = false
201
201
 
202
202
  response = Fog::DNS[:slicehost].get_records()
203
203
  if response.status == 200
@@ -205,22 +205,69 @@ Shindo.tests('Fog::DNS[:slicehost] | DNS requests', ['slicehost', 'dns']) do
205
205
 
206
206
  #find mx record
207
207
  records.each {|record|
208
- if record['record-type'] == 'MX'
208
+ if (record['record_type'] == 'MX') and (record['name'] == @domain)
209
209
 
210
210
  mail_domain = 'mail.' + @domain
211
- if (record['record-type'] == 'MX') and (record['name'] == @domain) and
212
- (record['data'] == mail_domain) and (record['ttl'] == 3600) and (record['active'] == 'N') and
211
+ if (record['record_type'] == 'MX') and (record['name'] == @domain) and
212
+ (record['value'] == mail_domain) and (record['ttl'] == 3600) and (record['active'] == 'N') and
213
213
  (record['aux'] == "10")
214
- result= true
215
- break
214
+ result = true
216
215
  end
217
-
216
+ break
218
217
  end
219
218
  }
220
219
  end
221
220
 
222
221
  result
223
222
  end
223
+
224
+ test('update record - verify all parameters for one record') do
225
+ pending if Fog.mocking?
226
+
227
+ result = false
228
+
229
+ specific_record = nil
230
+
231
+ response = Fog::DNS[:slicehost].get_records()
232
+ if response.status == 200
233
+ records = response.body['records']
234
+
235
+ #find mx record
236
+ records.each {|record|
237
+ if (record['record_type'] == 'MX') and (record['name'] == @domain)
238
+ specific_record = record
239
+ break
240
+ end
241
+ }
242
+ end
243
+
244
+ if (specific_record) #Try to change the TTL for this MX record if we've successfully created it.
245
+ response = Fog::DNS[:slicehost].update_record(specific_record['id'], specific_record['record_type'], specific_record['zone_id'],
246
+ specific_record['name'], specific_record['value'], {:ttl => 7200, :active => "N", :aux => "10"})
247
+
248
+ mail_domain = 'mail.' + @domain
249
+
250
+ record = Fog::DNS[:slicehost].get_record(specific_record['id']).body
251
+
252
+ if (record['record_type'] == 'MX') and (record['name'] == @domain) and
253
+ (record['value'] == mail_domain) and (record['ttl'] == 7200) and (record['active'] == 'N') and
254
+ (record['aux'] == "10")
255
+ result = true
256
+ end
257
+
258
+ end
259
+
260
+ result
261
+ end
262
+
263
+ test("newly created zone returns only records which we added to it, not other records already in account") do
264
+ pending if Fog.mocking?
265
+
266
+ @new_zone = Fog::DNS[:slicehost].zones.get(@zone_id)
267
+
268
+ records = @new_zone.records
269
+ records.length == @new_records.length
270
+ end
224
271
 
225
272
  test("delete #{@new_records.count} records created") do
226
273
  pending if Fog.mocking?