fog 0.3.31 → 0.3.32

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 (192) hide show
  1. data/.document +3 -0
  2. data/.gitignore +10 -0
  3. data/Gemfile.lock +1 -4
  4. data/README.rdoc +29 -37
  5. data/Rakefile +5 -25
  6. data/bin/fog +1 -3
  7. data/examples/dns_methods.rb +389 -0
  8. data/examples/storage.rb +103 -0
  9. data/fog.gemspec +4 -778
  10. data/lib/fog.rb +5 -66
  11. data/lib/fog/aws.rb +3 -0
  12. data/lib/fog/aws/bin.rb +7 -2
  13. data/lib/fog/aws/cdn.rb +2 -2
  14. data/lib/fog/aws/compute.rb +2 -2
  15. data/lib/fog/aws/dns.rb +101 -0
  16. data/lib/fog/aws/elb.rb +2 -2
  17. data/lib/fog/aws/iam.rb +2 -2
  18. data/lib/fog/aws/models/compute/image.rb +1 -0
  19. data/lib/fog/aws/models/compute/server.rb +1 -1
  20. data/lib/fog/aws/models/compute/servers.rb +1 -13
  21. data/lib/fog/aws/parsers/compute/describe_images.rb +36 -34
  22. data/lib/fog/aws/parsers/dns/change_resource_record_sets.rb +26 -0
  23. data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +55 -0
  24. data/lib/fog/aws/parsers/dns/delete_hosted_zone.rb +25 -0
  25. data/lib/fog/aws/parsers/dns/get_change.rb +26 -0
  26. data/lib/fog/aws/parsers/dns/get_hosted_zone.rb +43 -0
  27. data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +35 -0
  28. data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +46 -0
  29. data/lib/fog/aws/requests/compute/describe_images.rb +1 -0
  30. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +90 -0
  31. data/lib/fog/aws/requests/dns/create_hosted_zone.rb +68 -0
  32. data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +48 -0
  33. data/lib/fog/aws/requests/dns/get_change.rb +47 -0
  34. data/lib/fog/aws/requests/dns/get_hosted_zone.rb +51 -0
  35. data/lib/fog/aws/requests/dns/list_hosted_zones.rb +63 -0
  36. data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +68 -0
  37. data/lib/fog/aws/requests/storage/get_object_url.rb +2 -2
  38. data/lib/fog/aws/requests/storage/put_object_url.rb +2 -2
  39. data/lib/fog/aws/requests/storage/sync_clock.rb +28 -0
  40. data/lib/fog/aws/simpledb.rb +2 -2
  41. data/lib/fog/aws/storage.rb +5 -3
  42. data/lib/fog/bluebox.rb +2 -0
  43. data/lib/fog/bluebox/compute.rb +2 -2
  44. data/lib/fog/brightbox.rb +2 -0
  45. data/lib/fog/brightbox/compute.rb +2 -2
  46. data/lib/fog/core.rb +21 -1
  47. data/lib/fog/core/bin.rb +3 -1
  48. data/lib/fog/core/compute.rb +1 -0
  49. data/lib/fog/core/credentials.rb +72 -50
  50. data/lib/fog/core/deprecation.rb +11 -5
  51. data/lib/fog/core/mock.rb +34 -0
  52. data/lib/fog/core/model.rb +9 -1
  53. data/lib/fog/core/service.rb +40 -26
  54. data/lib/fog/core/storage.rb +1 -0
  55. data/lib/fog/core/time.rb +21 -0
  56. data/lib/fog/core/wait_for.rb +17 -0
  57. data/lib/fog/go_grid.rb +2 -0
  58. data/lib/fog/go_grid/compute.rb +2 -2
  59. data/lib/fog/google.rb +2 -0
  60. data/lib/fog/google/requests/storage/get_bucket.rb +6 -5
  61. data/lib/fog/google/requests/storage/get_object_url.rb +4 -4
  62. data/lib/fog/google/requests/storage/put_object_url.rb +4 -4
  63. data/lib/fog/google/storage.rb +4 -3
  64. data/lib/fog/linode.rb +3 -0
  65. data/lib/fog/linode/bin.rb +5 -3
  66. data/lib/fog/linode/compute.rb +6 -2
  67. data/lib/fog/linode/dns.rb +80 -0
  68. data/lib/fog/linode/requests/dns/domain_create.rb +52 -0
  69. data/lib/fog/linode/requests/dns/domain_delete.rb +35 -0
  70. data/lib/fog/linode/requests/dns/domain_list.rb +50 -0
  71. data/lib/fog/linode/requests/dns/domain_resource_create.rb +53 -0
  72. data/lib/fog/linode/requests/dns/domain_resource_delete.rb +36 -0
  73. data/lib/fog/linode/requests/dns/domain_resource_list.rb +48 -0
  74. data/lib/fog/linode/requests/dns/domain_resource_update.rb +54 -0
  75. data/lib/fog/linode/requests/dns/domain_update.rb +48 -0
  76. data/lib/fog/local.rb +2 -0
  77. data/lib/fog/local/storage.rb +3 -3
  78. data/lib/fog/new_servers.rb +2 -0
  79. data/lib/fog/new_servers/compute.rb +2 -2
  80. data/lib/fog/rackspace.rb +2 -0
  81. data/lib/fog/rackspace/cdn.rb +2 -2
  82. data/lib/fog/rackspace/compute.rb +2 -2
  83. data/lib/fog/rackspace/storage.rb +2 -2
  84. data/lib/fog/slicehost.rb +3 -0
  85. data/lib/fog/slicehost/bin.rb +2 -0
  86. data/lib/fog/slicehost/compute.rb +2 -2
  87. data/lib/fog/slicehost/dns.rb +84 -0
  88. data/lib/fog/slicehost/parsers/dns/create_record.rb +26 -0
  89. data/lib/fog/slicehost/parsers/dns/create_zone.rb +26 -0
  90. data/lib/fog/slicehost/parsers/dns/get_record.rb +26 -0
  91. data/lib/fog/slicehost/parsers/dns/get_records.rb +30 -0
  92. data/lib/fog/slicehost/parsers/dns/get_zone.rb +26 -0
  93. data/lib/fog/slicehost/parsers/dns/get_zones.rb +30 -0
  94. data/lib/fog/slicehost/requests/compute/create_slice.rb +2 -2
  95. data/lib/fog/slicehost/requests/compute/delete_slice.rb +3 -17
  96. data/lib/fog/slicehost/requests/dns/create_record.rb +61 -0
  97. data/lib/fog/slicehost/requests/dns/create_zone.rb +54 -0
  98. data/lib/fog/slicehost/requests/dns/delete_record.rb +31 -0
  99. data/lib/fog/slicehost/requests/dns/delete_zone.rb +31 -0
  100. data/lib/fog/slicehost/requests/dns/get_record.rb +40 -0
  101. data/lib/fog/slicehost/requests/dns/get_records.rb +41 -0
  102. data/lib/fog/slicehost/requests/dns/get_zone.rb +40 -0
  103. data/lib/fog/slicehost/requests/dns/get_zones.rb +38 -0
  104. data/lib/fog/terremark.rb +2 -0
  105. data/lib/fog/terremark/ecloud.rb +2 -4
  106. data/lib/fog/vcloud.rb +4 -2
  107. data/lib/fog/vcloud/bin.rb +3 -1
  108. data/lib/fog/vcloud/mock_data_classes.rb +77 -11
  109. data/lib/fog/vcloud/terremark/ecloud.rb +22 -7
  110. data/lib/fog/vcloud/terremark/ecloud/models/backup_internet_service.rb +60 -0
  111. data/lib/fog/vcloud/terremark/ecloud/models/backup_internet_services.rb +36 -0
  112. data/lib/fog/vcloud/terremark/ecloud/models/internet_service.rb +28 -13
  113. data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +2 -2
  114. data/lib/fog/vcloud/terremark/ecloud/models/ip.rb +1 -1
  115. data/lib/fog/vcloud/terremark/ecloud/models/network.rb +4 -1
  116. data/lib/fog/vcloud/terremark/ecloud/models/server.rb +5 -5
  117. data/lib/fog/vcloud/terremark/ecloud/models/vdc.rb +6 -2
  118. data/lib/fog/vcloud/terremark/ecloud/requests/add_backup_internet_service.rb +111 -0
  119. data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +2 -4
  120. data/lib/fog/vcloud/terremark/ecloud/requests/add_node.rb +1 -3
  121. data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +39 -27
  122. data/lib/fog/vcloud/terremark/ecloud/requests/configure_network.rb +1 -2
  123. data/lib/fog/vcloud/terremark/ecloud/requests/configure_network_ip.rb +21 -6
  124. data/lib/fog/vcloud/terremark/ecloud/requests/delete_vapp.rb +2 -1
  125. data/lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb +34 -17
  126. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_extensions.rb +12 -10
  127. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ip.rb +15 -10
  128. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb +1 -12
  129. data/lib/fog/zerigo.rb +15 -0
  130. data/lib/fog/zerigo/bin.rb +25 -0
  131. data/lib/fog/zerigo/dns.rb +96 -0
  132. data/lib/fog/zerigo/parsers/dns/count_hosts.rb +24 -0
  133. data/lib/fog/zerigo/parsers/dns/count_zones.rb +24 -0
  134. data/lib/fog/zerigo/parsers/dns/create_host.rb +26 -0
  135. data/lib/fog/zerigo/parsers/dns/create_zone.rb +26 -0
  136. data/lib/fog/zerigo/parsers/dns/find_hosts.rb +30 -0
  137. data/lib/fog/zerigo/parsers/dns/get_host.rb +26 -0
  138. data/lib/fog/zerigo/parsers/dns/get_zone.rb +56 -0
  139. data/lib/fog/zerigo/parsers/dns/get_zone_stats.rb +26 -0
  140. data/lib/fog/zerigo/parsers/dns/list_hosts.rb +30 -0
  141. data/lib/fog/zerigo/parsers/dns/list_zones.rb +30 -0
  142. data/lib/fog/zerigo/requests/dns/count_hosts.rb +36 -0
  143. data/lib/fog/zerigo/requests/dns/count_zones.rb +36 -0
  144. data/lib/fog/zerigo/requests/dns/create_host.rb +70 -0
  145. data/lib/fog/zerigo/requests/dns/create_zone.rb +97 -0
  146. data/lib/fog/zerigo/requests/dns/delete_host.rb +32 -0
  147. data/lib/fog/zerigo/requests/dns/delete_zone.rb +33 -0
  148. data/lib/fog/zerigo/requests/dns/find_hosts.rb +63 -0
  149. data/lib/fog/zerigo/requests/dns/get_host.rb +47 -0
  150. data/lib/fog/zerigo/requests/dns/get_zone.rb +57 -0
  151. data/lib/fog/zerigo/requests/dns/get_zone_stats.rb +44 -0
  152. data/lib/fog/zerigo/requests/dns/list_hosts.rb +48 -0
  153. data/lib/fog/zerigo/requests/dns/list_zones.rb +53 -0
  154. data/lib/fog/zerigo/requests/dns/update_host.rb +60 -0
  155. data/lib/fog/zerigo/requests/dns/update_zone.rb +78 -0
  156. data/spec/spec_helper.rb +0 -5
  157. data/spec/vcloud/spec_helper.rb +3 -2
  158. data/spec/vcloud/terremark/ecloud/models/backup_internet_service_spec.rb +49 -0
  159. data/spec/vcloud/terremark/ecloud/models/backup_internet_services_spec.rb +29 -0
  160. data/spec/vcloud/terremark/ecloud/models/internet_service_spec.rb +32 -13
  161. data/spec/vcloud/terremark/ecloud/models/network_spec.rb +7 -4
  162. data/spec/vcloud/terremark/ecloud/models/server_spec.rb +20 -0
  163. data/spec/vcloud/terremark/ecloud/requests/add_backup_internet_service_spec.rb +60 -0
  164. data/spec/vcloud/terremark/ecloud/requests/configure_internet_service_spec.rb +3 -0
  165. data/spec/vcloud/terremark/ecloud/requests/configure_network_ip_spec.rb +55 -0
  166. data/spec/vcloud/terremark/ecloud/requests/delete_vapp_spec.rb +9 -0
  167. data/spec/vcloud/terremark/ecloud/requests/get_internet_services_spec.rb +60 -14
  168. data/spec/vcloud/terremark/ecloud/requests/get_network_ip_spec.rb +2 -0
  169. data/spec/vcloud/terremark/ecloud/requests/get_network_ips_spec.rb +3 -3
  170. data/tests/aws/requests/compute/image_tests.rb +15 -14
  171. data/tests/aws/requests/dns/dns_tests.rb +276 -0
  172. data/tests/brightbox/requests/compute/account_tests.rb +20 -9
  173. data/tests/brightbox/requests/compute/api_client_tests.rb +12 -4
  174. data/tests/brightbox/requests/compute/cloud_ip_tests.rb +20 -6
  175. data/tests/brightbox/requests/compute/image_tests.rb +9 -4
  176. data/tests/brightbox/requests/compute/interface_tests.rb +8 -2
  177. data/tests/brightbox/requests/compute/server_tests.rb +17 -5
  178. data/tests/brightbox/requests/compute/server_type_tests.rb +8 -4
  179. data/tests/brightbox/requests/compute/user_tests.rb +13 -5
  180. data/tests/brightbox/requests/compute/zone_tests.rb +8 -4
  181. data/tests/core/attribute_tests.rb +45 -0
  182. data/tests/helper.rb +0 -2
  183. data/tests/linode/requests/dns/dns_tests.rb +262 -0
  184. data/tests/rackspace/requests/compute/address_tests.rb +1 -1
  185. data/tests/rackspace/requests/compute/image_tests.rb +1 -1
  186. data/tests/slicehost/requests/dns_tests/dns_tests.rb +279 -0
  187. data/tests/zerigo/helper.rb +0 -0
  188. data/tests/zerigo/requests/dns/dns_tests.rb +374 -0
  189. metadata +280 -36
  190. data/spec/compact_progress_bar_formatter.rb +0 -195
  191. data/spec/core/attributes_spec.rb +0 -52
  192. data/spec/lorem.txt +0 -1
@@ -0,0 +1,78 @@
1
+ module Fog
2
+ module Zerigo
3
+ class DNS
4
+ class Real
5
+
6
+ # Update the parameters of a zone
7
+ # ==== Parameters
8
+ #
9
+ # * zone_id<~Integer>
10
+ # * options<~Hash> - optional paramaters
11
+ # * default_ttl<~Integer>
12
+ # * ns_type<~String>
13
+ # * ns1<~String> - required if ns_type == sec
14
+ # * nx_ttl<~Integer> -
15
+ # * slave_nameservers<~String> - required if ns_type == pri
16
+ # * axfr_ips<~String> - comma-separated list of IPs or IP blocks allowed to perform AXFRs
17
+ # * custom_nameservers<~String> - comma-separated list of custom nameservers
18
+ # * custom_ns<~String> - indicates if vanity (custom) nameservers are enabled for this domain
19
+ # * hostmaster<~String> - email of the DNS administrator or hostmaster
20
+ # * notes<~String> - notes about the domain
21
+ # * restrict_axfr<~String> - indicates if AXFR transfers should be restricted to IPs in axfr-ips
22
+ # * tag_list<~String> - List of all tags associated with this domain
23
+ #
24
+ # ==== Returns
25
+ # * response<~Excon::Response>:
26
+ # * 'status'<~Integer> - 200 for success
27
+ def update_zone( zone_id, options = {})
28
+
29
+ optional_tags= ''
30
+ options.each { |option, value|
31
+ case option
32
+ when :default_ttl
33
+ optional_tags+= "<default-ttl>#{value}</default-ttl>"
34
+ when :ns_type
35
+ optional_tags+= "<ns-type>#{value}</ns-type>"
36
+ when :ns1
37
+ optional_tags+= "<ns1>#{value}</ns1>"
38
+ when :nx_ttl
39
+ optional_tags+= "<nx-ttl type='interger'>#{value}</nx-ttl>"
40
+ when :slave_nameservers
41
+ optional_tags+= "<slave-nameservers>#{value}</slave-nameservers>"
42
+ when :axfr_ips
43
+ optional_tags+= "<axfr-ips>#{value}</axfr-ips>"
44
+ when :custom_nameservers
45
+ optional_tags+= "<custom-nameservers>#{value}</custom-nameservers>"
46
+ when :custom_ns
47
+ optional_tags+= "<custom-ns>#{value}</custom-ns>"
48
+ when :hostmaster
49
+ optional_tags+= "<hostmaster>#{value}</hostmaster>"
50
+ when :notes
51
+ optional_tags+= "<notes>#{value}</notes>"
52
+ when :restrict_axfr
53
+ optional_tags+= "<restrict-axfr>#{value}</restrict-axfr>"
54
+ when :tag_list
55
+ optional_tags+= "<tag-list>#{value}</tag-list>"
56
+ end
57
+ }
58
+
59
+ request(
60
+ :body => %Q{<?xml version="1.0" encoding="UTF-8"?><zone>#{optional_tags}</zone>},
61
+ :expects => 200,
62
+ :method => 'PUT',
63
+ :path => "/api/1.1/zones/#{zone_id}.xml"
64
+ )
65
+ end
66
+
67
+ end
68
+
69
+ class Mock
70
+
71
+ def update_zone(zone_id, options = {})
72
+ Fog::Mock.not_implemented
73
+ end
74
+
75
+ end
76
+ end
77
+ end
78
+ end
@@ -1,7 +1,6 @@
1
1
  require 'spec'
2
2
  require 'open-uri'
3
3
  require 'fog'
4
- Fog.bin = true
5
4
  require 'fog/core/bin'
6
5
  require 'fog/vcloud/bin'
7
6
 
@@ -36,7 +35,3 @@ end
36
35
  unless defined?(GENTOO_AMI)
37
36
  GENTOO_AMI = 'ami-5ee70037'
38
37
  end
39
-
40
- def lorem_file
41
- File.open(File.dirname(__FILE__) + '/lorem.txt', 'r')
42
- end
@@ -233,6 +233,7 @@ def setup_ecloud_mock_data
233
233
  @mock_public_ip = @mock_public_ip_collection.items.first
234
234
  @mock_service_collection = @mock_public_ip.internet_service_collection
235
235
  @mock_service = @mock_service_collection.items.first
236
+ @mock_backup_service = @mock_vdc_service_collection.backup_internet_services.first
236
237
  @mock_node_collection = @mock_service.node_collection
237
238
  @mock_node = @mock_node_collection.items.first
238
239
  @mock_catalog = @mock_vdc.catalog
@@ -273,13 +274,13 @@ Spec::Runner.configure do |config|
273
274
  Fog::Vcloud::Mock.data_reset
274
275
  Fog::Vcloud::Terremark::Ecloud::Mock.data_reset
275
276
  setup_ecloud_mock_data
276
- @vcloud = Fog::Vcloud::Terremark::Ecloud.new(:username => "foo", :password => "bar", :versions_uri => "http://fakey.com/api/versions", :module => "Fog::Vcloud::Terremark::Ecloud")
277
+ @vcloud = Fog::Vcloud::Terremark::Ecloud.new(:username => "foo", :password => "bar", :versions_uri => "http://fakey.com/api/versions")
277
278
  end
278
279
  config.before(:each, :type => :mock_tmrk_ecloud_model) do
279
280
  Fog::Vcloud::Mock.data_reset
280
281
  Fog::Vcloud::Terremark::Ecloud::Mock.data_reset
281
282
  setup_ecloud_mock_data
282
- @vcloud = Fog::Vcloud::Terremark::Ecloud.new(:username => "foo", :password => "bar", :versions_uri => "http://fakey.com/api/versions", :module => "Fog::Vcloud::Terremark::Ecloud")
283
+ @vcloud = Fog::Vcloud::Terremark::Ecloud.new(:username => "foo", :password => "bar", :versions_uri => "http://fakey.com/api/versions")
283
284
  end
284
285
  end
285
286
 
@@ -0,0 +1,49 @@
1
+ require File.join(File.dirname(__FILE__),'..','..','..','spec_helper')
2
+
3
+ if Fog.mocking?
4
+ describe "Fog::Vcloud::Terremark::Ecloud::BackupInternetService", :type => :mock_tmrk_ecloud_model do
5
+ subject { @vcloud.vdcs[0].backup_internet_services[0] }
6
+
7
+ describe :class do
8
+ subject { Fog::Vcloud::Terremark::Ecloud::BackupInternetService }
9
+
10
+ it { should have_identity :href }
11
+ it { should have_only_these_attributes [:href, :name, :id, :protocol, :enabled, :description, :timeout, :redirect_url, :monitor] }
12
+ end
13
+
14
+ context "with no uri" do
15
+
16
+ subject { Fog::Vcloud::Terremark::Ecloud::BackupInternetService.new() }
17
+ it { should have_all_attributes_be_nil }
18
+
19
+ end
20
+
21
+ context "as a collection member" do
22
+ subject { @vcloud.vdcs[0].backup_internet_services[0].reload }
23
+
24
+ let(:composed_service_data) { @vcloud.vdcs[0].backup_internet_services[0].send(:_compose_service_data) }
25
+
26
+ it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::BackupInternetService }
27
+
28
+ its(:href) { should == @mock_backup_service.href }
29
+ its(:identity) { should == @mock_backup_service.href }
30
+ its(:name) { should == @mock_backup_service.name }
31
+ its(:id) { should == @mock_backup_service.object_id.to_s }
32
+ its(:protocol) { should == @mock_backup_service.protocol }
33
+ its(:enabled) { should == @mock_backup_service.enabled.to_s }
34
+ its(:description) { should == @mock_backup_service.description }
35
+ its(:timeout) { should == @mock_backup_service.timeout.to_s }
36
+ its(:redirect_url) { should == (@mock_backup_service.redirect_url || "") }
37
+ its(:monitor) { should == nil }
38
+
39
+ specify { composed_service_data[:href].should == subject.href.to_s }
40
+ specify { composed_service_data[:name].should == subject.name }
41
+ specify { composed_service_data[:id].should == subject.id.to_s }
42
+ specify { composed_service_data[:protocol].should == subject.protocol }
43
+ specify { composed_service_data[:enabled].should == subject.enabled.to_s }
44
+ specify { composed_service_data[:description].should == subject.description }
45
+ specify { composed_service_data[:timeout].should == subject.timeout.to_s }
46
+ end
47
+ end
48
+ else
49
+ end
@@ -0,0 +1,29 @@
1
+ require File.join(File.dirname(__FILE__),'..','..','..','spec_helper')
2
+
3
+ if Fog.mocking?
4
+ describe "Fog::Vcloud::Terremark::Ecloud::InternetServices", :type => :mock_tmrk_ecloud_model do
5
+ context "as an attribute of a VDC" do
6
+ subject { @vcloud.vdcs[0] }
7
+
8
+ it { should respond_to :backup_internet_services }
9
+
10
+ describe :class do
11
+ subject { @vcloud.vdcs[0].backup_internet_services.class }
12
+ its(:model) { should == Fog::Vcloud::Terremark::Ecloud::BackupInternetService }
13
+ end
14
+
15
+ describe :backup_internet_services do
16
+ subject { @vcloud.vdcs[0].backup_internet_services }
17
+
18
+ it { should respond_to :create }
19
+
20
+ it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::BackupInternetServices }
21
+
22
+ its(:length) { should == 1 }
23
+
24
+ it { should have_members_of_the_right_model }
25
+ end
26
+ end
27
+ end
28
+ else
29
+ end
@@ -8,7 +8,7 @@ if Fog.mocking?
8
8
  subject { Fog::Vcloud::Terremark::Ecloud::InternetService }
9
9
 
10
10
  it { should have_identity :href }
11
- it { should have_only_these_attributes [:href, :name, :id, :protocol, :port, :enabled, :description, :public_ip, :timeout, :redirect_url, :monitor] }
11
+ it { should have_only_these_attributes [:href, :name, :id, :protocol, :port, :enabled, :description, :public_ip, :timeout, :redirect_url, :monitor, :backup_service_data] }
12
12
  end
13
13
 
14
14
  context "with no uri" do
@@ -31,18 +31,19 @@ if Fog.mocking?
31
31
 
32
32
  it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::InternetService }
33
33
 
34
- its(:href) { should == @mock_service.href }
35
- its(:identity) { should == @mock_service.href }
36
- its(:name) { should == @mock_service.name }
37
- its(:id) { should == @mock_service.object_id.to_s }
38
- its(:protocol) { should == @mock_service.protocol }
39
- its(:port) { should == @mock_service.port.to_s }
40
- its(:enabled) { should == @mock_service.enabled.to_s }
41
- its(:description) { should == @mock_service.description }
42
- its(:public_ip) { should == public_ip }
43
- its(:timeout) { should == @mock_service.timeout.to_s }
44
- its(:redirect_url) { should == @mock_service.redirect_url }
45
- its(:monitor) { should == nil }
34
+ its(:href) { should == @mock_service.href }
35
+ its(:identity) { should == @mock_service.href }
36
+ its(:name) { should == @mock_service.name }
37
+ its(:id) { should == @mock_service.object_id.to_s }
38
+ its(:protocol) { should == @mock_service.protocol }
39
+ its(:port) { should == @mock_service.port.to_s }
40
+ its(:enabled) { should == @mock_service.enabled.to_s }
41
+ its(:description) { should == @mock_service.description }
42
+ its(:public_ip) { should == public_ip }
43
+ its(:timeout) { should == @mock_service.timeout.to_s }
44
+ its(:redirect_url) { should == @mock_service.redirect_url }
45
+ its(:monitor) { should == nil }
46
+ its(:backup_service_uri) { should be_nil }
46
47
 
47
48
  specify { composed_public_ip_data[:href].should == public_ip[:Href].to_s }
48
49
  specify { composed_public_ip_data[:name].should == public_ip[:Name] }
@@ -56,6 +57,24 @@ if Fog.mocking?
56
57
  specify { composed_service_data[:enabled].should == subject.enabled.to_s }
57
58
  specify { composed_service_data[:description].should == subject.description }
58
59
  specify { composed_service_data[:timeout].should == subject.timeout.to_s }
60
+
61
+ context "with a backup internet service" do
62
+ before { @mock_service[:backup_service] = @mock_backup_service }
63
+
64
+ its(:backup_service_uri) { should == @mock_backup_service.href }
65
+ end
66
+
67
+ describe "#backup_service_uri=" do
68
+ specify do
69
+ expect { subject.backup_service_uri = @mock_backup_service.href }.
70
+ to change { subject.backup_service_uri }.from(nil).to(@mock_backup_service.href)
71
+ end
72
+
73
+ specify do
74
+ expect { subject.backup_service_uri = @mock_backup_service.href }.
75
+ to change { subject.send(:_compose_service_data)[:backup_service_uri] }.from(nil).to(@mock_backup_service.href)
76
+ end
77
+ end
59
78
  end
60
79
  end
61
80
  else
@@ -8,7 +8,7 @@ if Fog.mocking?
8
8
  subject { Fog::Vcloud::Terremark::Ecloud::Network }
9
9
 
10
10
  it { should have_identity :href }
11
- it { should have_only_these_attributes [:href, :name, :features, :links, :type, :gateway, :broadcast, :address, :rnat, :extension_href] }
11
+ it { should have_only_these_attributes [:href, :name, :features, :links, :type, :gateway, :broadcast, :address, :rnat, :extension_href, :network_type, :vlan, :friendly_name] }
12
12
  end
13
13
 
14
14
  context "with no uri" do
@@ -32,13 +32,16 @@ if Fog.mocking?
32
32
  its(:address) { should == @mock_network.address }
33
33
  its(:rnat) { should == @mock_network.rnat }
34
34
  its(:extension_href) { should == @mock_network.extensions.href }
35
+ its(:network_type) { should == @mock_network.extensions.type }
36
+ its(:vlan) { should == @mock_network.extensions.vlan }
37
+ its(:friendly_name) { should == @mock_network.extensions.friendly_name }
35
38
 
36
39
  it { should have(1).features }
37
40
 
38
41
  describe :features do
39
- let(:feature) { subject.features[0] }
40
- specify { feature.should be_an_instance_of Hash }
41
- specify { feature[:FenceMode].should == @mock_network.features[0][:value] }
42
+ let(:feature) { subject.features.first }
43
+ specify { feature.should be_an_instance_of Array }
44
+ specify { feature.last.should == @mock_network.features[0][:value] }
42
45
  end
43
46
 
44
47
  it { should have(2).links }
@@ -26,6 +26,26 @@ if Fog.mocking?
26
26
  its(:cpus) { should == { :count => @mock_vm.cpus, :units => nil } }
27
27
  its(:memory) { should == { :amount => @mock_vm.memory, :units => nil } }
28
28
  its(:disks) { should == @mock_vm.to_configure_vapp_hash[:disks] }
29
+
30
+ describe "question methods" do
31
+ describe "#ready?" do
32
+ before { subject.power_off }
33
+
34
+ it { should be_ready }
35
+ end
36
+
37
+ describe "#on?" do
38
+ before { subject.power_on }
39
+
40
+ it { should be_on }
41
+ end
42
+
43
+ describe "#off?" do
44
+ before { subject.power_off }
45
+
46
+ it { should be_off }
47
+ end
48
+ end
29
49
  end
30
50
 
31
51
  context "as a new server without all info" do
@@ -0,0 +1,60 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', '..', 'spec_helper')
2
+
3
+ if Fog.mocking?
4
+ describe "Fog::Vcloud, initialized w/ the TMRK Ecloud module", :type => :mock_tmrk_ecloud_request do
5
+ subject { @vcloud }
6
+
7
+ it { should respond_to :add_backup_internet_service }
8
+
9
+ describe "#add_backup_internet_service" do
10
+ before do
11
+ @new_backup_service_data = {
12
+ :name => "Test Service",
13
+ :protocol => "HTTP",
14
+ :enabled => "true",
15
+ :description => "this is a test",
16
+ :redirect_url => ""
17
+ }
18
+ end
19
+
20
+ context "with a valid vdc uri" do
21
+ subject { @vcloud.add_backup_internet_service(@mock_vdc.internet_service_collection.href, @new_backup_service_data ) }
22
+
23
+ it "has the right number of Internet Services after" do
24
+ expect { subject }.to change { @vcloud.get_internet_services(@mock_vdc.internet_service_collection.href).body[:InternetService].size }.by(1)
25
+ end
26
+
27
+ it_should_behave_like "all responses"
28
+
29
+ let(:body) { subject.body }
30
+
31
+ its(:body) { should be_an_instance_of Hash }
32
+ specify { body[:Href].should_not be_empty }
33
+ specify { body[:Name].should == @new_backup_service_data[:name] }
34
+ specify { body[:Protocol].should == @new_backup_service_data[:protocol] }
35
+ specify { body[:Enabled].should == @new_backup_service_data[:enabled] }
36
+ specify { body[:Description].should == @new_backup_service_data[:description] }
37
+ specify { body[:RedirectURL].should == @new_backup_service_data[:redirect_url] }
38
+ specify { body[:Monitor].should == nil }
39
+ # so broken
40
+ specify { body[:IsBackupService].should == "false" }
41
+
42
+ it "should update the mock object properly" do
43
+ subject
44
+
45
+ backup_internet_service = @vcloud.mock_data.backup_internet_service_from_href(body[:Href])
46
+ backup_internet_service.object_id.to_s.should == body[:Id]
47
+ backup_internet_service.node_collection.items.should be_empty
48
+ end
49
+ end
50
+
51
+ context "with a vdc uri that doesn't exist" do
52
+ subject { lambda { @vcloud.add_backup_internet_service(URI.parse('https://www.fakey.c/piv8vc99'), @new_backup_service_data ) } }
53
+
54
+ it_should_behave_like "a request for a resource that doesn't exist"
55
+ end
56
+ end
57
+ end
58
+ else
59
+ end
60
+
@@ -26,6 +26,7 @@ if Fog.mocking?
26
26
  @service_data[:description] = "TEST BOOM"
27
27
  @service_data[:redirect_url] = "http://google.com"
28
28
  @service_data[:port] = "80"
29
+ @service_data[:backup_service_uri] = @mock_backup_service.href
29
30
  end
30
31
 
31
32
  it "should change data" do
@@ -36,12 +37,14 @@ if Fog.mocking?
36
37
  result.body[:Description].should == @service_data[:description]
37
38
  result.body[:RedirectURL].should == @service_data[:redirect_url]
38
39
  result.body[:Port].should == @service_data[:port]
40
+ result.body[:BackupService][:Href].should == @service_data[:backup_service_uri]
39
41
 
40
42
  new_result = @vcloud.get_internet_services(@mock_public_ip.internet_service_collection.href).body[:InternetService].first
41
43
 
42
44
  new_result[:Description].should == @service_data[:description]
43
45
  new_result[:RedirectURL].should == @service_data[:redirect_url]
44
46
  new_result[:Port].should == @service_data[:port]
47
+ new_result[:BackupService][:Href].should == @service_data[:backup_service_uri]
45
48
  end
46
49
  end
47
50
  end
@@ -0,0 +1,55 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', '..', 'spec_helper')
2
+
3
+ if Fog.mocking?
4
+ describe "Fog::Vcloud, initialized w/ the TMRK Ecloud module", :type => :mock_tmrk_ecloud_request do
5
+ subject { @vcloud }
6
+
7
+ it { should respond_to :configure_network_ip }
8
+
9
+ describe "#configure_network_ip" do
10
+ let(:original_network_ip) { @vcloud.get_network_ip(@mock_network_ip.href).body }
11
+ let(:network_ip_data) do
12
+ {
13
+ :id => original_network_ip[:Id],
14
+ :href => original_network_ip[:Href],
15
+ :name => original_network_ip[:Name],
16
+ :status => original_network_ip[:Status],
17
+ :server => original_network_ip[:Server],
18
+ :rnat => "1.2.3.4"
19
+ }
20
+ end
21
+
22
+ context "with a valid network ip uri" do
23
+
24
+ subject { @vcloud.configure_network_ip(@mock_network_ip.href, network_ip_data) }
25
+
26
+ it_should_behave_like "all responses"
27
+
28
+ describe "#body" do
29
+ subject { @vcloud.configure_network_ip(@mock_network_ip.href, network_ip_data).body }
30
+
31
+ #Stuff that shouldn't change
32
+ its(:Href) { should == @mock_network_ip.href }
33
+ its(:Id) { should == @mock_network_ip.object_id.to_s }
34
+ its(:Name) { should == @mock_network_ip.ip }
35
+ its(:Status) { should == @mock_network_ip.status }
36
+
37
+ #Stuff that should change
38
+ it "should change the rnat" do
39
+ expect { subject }.to change { @vcloud.get_network_ip(@mock_network_ip.href).body[:RnatAddress] }.
40
+ from(@mock_network.rnat).
41
+ to(network_ip_data[:rnat])
42
+ end
43
+ end
44
+
45
+ end
46
+
47
+ context "with a nodes uri that doesn't exist" do
48
+ subject { lambda { @vcloud.configure_network_ip(URI.parse('https://www.fakey.c/piv8vc99'), network_ip_data) } }
49
+
50
+ it_should_behave_like "a request for a resource that doesn't exist"
51
+ end
52
+ end
53
+ end
54
+ else
55
+ end