fog 0.3.16 → 0.3.17

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 (112) hide show
  1. data/Gemfile.lock +1 -1
  2. data/README.rdoc +17 -12
  3. data/fog.gemspec +10 -5
  4. data/lib/fog.rb +1 -1
  5. data/lib/fog/aws/models/storage/directory.rb +22 -0
  6. data/lib/fog/aws/models/storage/file.rb +15 -0
  7. data/lib/fog/aws/storage.rb +8 -0
  8. data/lib/fog/core/collection.rb +9 -8
  9. data/lib/fog/core/compute.rb +1 -1
  10. data/lib/fog/google/models/storage/directory.rb +23 -1
  11. data/lib/fog/google/models/storage/file.rb +16 -1
  12. data/lib/fog/google/parsers/storage/access_control_list.rb +16 -14
  13. data/lib/fog/local/models/storage/directory.rb +8 -0
  14. data/lib/fog/local/models/storage/file.rb +4 -0
  15. data/lib/fog/rackspace/cdn.rb +3 -3
  16. data/lib/fog/rackspace/models/storage/directory.rb +18 -0
  17. data/lib/fog/rackspace/models/storage/file.rb +7 -0
  18. data/lib/fog/rackspace/requests/cdn/{get_cdn_containers.rb → get_containers.rb} +3 -3
  19. data/lib/fog/rackspace/requests/cdn/{head_cdn_container.rb → head_container.rb} +3 -3
  20. data/lib/fog/rackspace/requests/cdn/{put_cdn_container.rb → put_container.rb} +3 -3
  21. data/lib/fog/rackspace/storage.rb +10 -0
  22. data/lib/fog/vcloud.rb +32 -153
  23. data/lib/fog/vcloud/collection.rb +18 -0
  24. data/lib/fog/vcloud/mock_data_classes.rb +701 -0
  25. data/lib/fog/vcloud/requests/get_network.rb +8 -8
  26. data/lib/fog/vcloud/requests/get_organization.rb +10 -10
  27. data/lib/fog/vcloud/requests/get_vdc.rb +18 -18
  28. data/lib/fog/vcloud/requests/get_versions.rb +3 -3
  29. data/lib/fog/vcloud/requests/login.rb +2 -2
  30. data/lib/fog/vcloud/terremark/ecloud.rb +65 -109
  31. data/lib/fog/vcloud/terremark/ecloud/models/catalog.rb +1 -0
  32. data/lib/fog/vcloud/terremark/ecloud/models/firewall_acls.rb +1 -0
  33. data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +1 -0
  34. data/lib/fog/vcloud/terremark/ecloud/models/ip.rb +1 -1
  35. data/lib/fog/vcloud/terremark/ecloud/models/ips.rb +1 -0
  36. data/lib/fog/vcloud/terremark/ecloud/models/network.rb +3 -2
  37. data/lib/fog/vcloud/terremark/ecloud/models/networks.rb +1 -0
  38. data/lib/fog/vcloud/terremark/ecloud/models/nodes.rb +1 -0
  39. data/lib/fog/vcloud/terremark/ecloud/models/public_ips.rb +1 -0
  40. data/lib/fog/vcloud/terremark/ecloud/models/server.rb +20 -8
  41. data/lib/fog/vcloud/terremark/ecloud/models/servers.rb +1 -0
  42. data/lib/fog/vcloud/terremark/ecloud/models/tasks.rb +1 -0
  43. data/lib/fog/vcloud/terremark/ecloud/models/vdcs.rb +2 -0
  44. data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +4 -8
  45. data/lib/fog/vcloud/terremark/ecloud/requests/add_node.rb +4 -7
  46. data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +18 -20
  47. data/lib/fog/vcloud/terremark/ecloud/requests/configure_node.rb +6 -7
  48. data/lib/fog/vcloud/terremark/ecloud/requests/configure_vapp.rb +40 -9
  49. data/lib/fog/vcloud/terremark/ecloud/requests/delete_internet_service.rb +2 -10
  50. data/lib/fog/vcloud/terremark/ecloud/requests/delete_node.rb +2 -6
  51. data/lib/fog/vcloud/terremark/ecloud/requests/delete_vapp.rb +13 -1
  52. data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog.rb +6 -6
  53. data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog_item.rb +6 -7
  54. data/lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb +34 -33
  55. data/lib/fog/vcloud/terremark/ecloud/requests/get_network.rb +23 -24
  56. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_extensions.rb +10 -13
  57. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ip.rb +15 -19
  58. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb +20 -22
  59. data/lib/fog/vcloud/terremark/ecloud/requests/get_node.rb +12 -15
  60. data/lib/fog/vcloud/terremark/ecloud/requests/get_nodes.rb +11 -12
  61. data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ip.rb +5 -4
  62. data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ips.rb +9 -8
  63. data/lib/fog/vcloud/terremark/ecloud/requests/get_vapp.rb +33 -17
  64. data/lib/fog/vcloud/terremark/ecloud/requests/get_vdc.rb +54 -53
  65. data/lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb +13 -19
  66. data/lib/fog/vcloud/terremark/ecloud/requests/power_off.rb +9 -2
  67. data/lib/fog/vcloud/terremark/ecloud/requests/power_on.rb +2 -4
  68. data/spec/vcloud/bin_spec.rb +3 -6
  69. data/spec/vcloud/models/vdc_spec.rb +8 -8
  70. data/spec/vcloud/requests/get_network_spec.rb +8 -8
  71. data/spec/vcloud/requests/get_organization_spec.rb +9 -9
  72. data/spec/vcloud/requests/get_vdc_spec.rb +7 -7
  73. data/spec/vcloud/requests/get_versions_spec.rb +1 -1
  74. data/spec/vcloud/requests/login_spec.rb +2 -2
  75. data/spec/vcloud/spec_helper.rb +45 -30
  76. data/spec/vcloud/terremark/ecloud/models/internet_service_spec.rb +10 -14
  77. data/spec/vcloud/terremark/ecloud/models/ip_spec.rb +5 -8
  78. data/spec/vcloud/terremark/ecloud/models/ips_spec.rb +2 -2
  79. data/spec/vcloud/terremark/ecloud/models/network_spec.rb +15 -16
  80. data/spec/vcloud/terremark/ecloud/models/node_spec.rb +7 -7
  81. data/spec/vcloud/terremark/ecloud/models/nodes_spec.rb +1 -1
  82. data/spec/vcloud/terremark/ecloud/models/public_ip_spec.rb +4 -8
  83. data/spec/vcloud/terremark/ecloud/models/server_spec.rb +42 -0
  84. data/spec/vcloud/terremark/ecloud/models/vdc_spec.rb +7 -7
  85. data/spec/vcloud/terremark/ecloud/models/vdcs_spec.rb +1 -1
  86. data/spec/vcloud/terremark/ecloud/requests/add_internet_service_spec.rb +13 -18
  87. data/spec/vcloud/terremark/ecloud/requests/add_node_spec.rb +9 -5
  88. data/spec/vcloud/terremark/ecloud/requests/configure_internet_service_spec.rb +5 -7
  89. data/spec/vcloud/terremark/ecloud/requests/configure_node_spec.rb +22 -28
  90. data/spec/vcloud/terremark/ecloud/requests/configure_vapp_spec.rb +71 -0
  91. data/spec/vcloud/terremark/ecloud/requests/delete_internet_service_spec.rb +7 -9
  92. data/spec/vcloud/terremark/ecloud/requests/delete_node_spec.rb +3 -7
  93. data/spec/vcloud/terremark/ecloud/requests/delete_vapp_spec.rb +83 -0
  94. data/spec/vcloud/terremark/ecloud/requests/get_catalog_item_spec.rb +6 -5
  95. data/spec/vcloud/terremark/ecloud/requests/get_catalog_spec.rb +2 -2
  96. data/spec/vcloud/terremark/ecloud/requests/get_internet_services_spec.rb +31 -42
  97. data/spec/vcloud/terremark/ecloud/requests/get_network_ip_spec.rb +4 -7
  98. data/spec/vcloud/terremark/ecloud/requests/get_network_ips_spec.rb +1 -1
  99. data/spec/vcloud/terremark/ecloud/requests/get_network_spec.rb +19 -11
  100. data/spec/vcloud/terremark/ecloud/requests/get_node_spec.rb +8 -8
  101. data/spec/vcloud/terremark/ecloud/requests/get_nodes_spec.rb +11 -11
  102. data/spec/vcloud/terremark/ecloud/requests/get_public_ip_spec.rb +4 -5
  103. data/spec/vcloud/terremark/ecloud/requests/get_public_ips_spec.rb +6 -6
  104. data/spec/vcloud/terremark/ecloud/requests/get_vapp_spec.rb +36 -19
  105. data/spec/vcloud/terremark/ecloud/requests/get_vdc_spec.rb +21 -18
  106. data/spec/vcloud/terremark/ecloud/requests/instantiate_vapp_template_spec.rb +27 -17
  107. data/spec/vcloud/terremark/ecloud/requests/power_off_spec.rb +34 -0
  108. data/spec/vcloud/terremark/ecloud/requests/power_on_spec.rb +3 -4
  109. data/spec/vcloud/vcloud_spec.rb +2 -2
  110. data/tests/helpers/storage/directory_tests.rb +8 -0
  111. data/tests/helpers/storage/file_tests.rb +4 -0
  112. metadata +11 -6
@@ -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, :id, :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] }
12
12
  end
13
13
 
14
14
  context "with no uri" do
@@ -19,27 +19,26 @@ if Fog.mocking?
19
19
  end
20
20
 
21
21
  context "as a collection member" do
22
- subject { @vcloud.vdcs[0].networks[0].reload; @vcloud.vdcs[0].networks[0] }
22
+ subject { @vcloud.vdcs[0].networks[0].reload }
23
23
 
24
24
  it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::Network }
25
25
 
26
- its(:href) { should == @mock_network[:href] }
27
- its(:identity) { should == @mock_network[:href] }
28
- its(:name) { should == @mock_network[:name] }
26
+ its(:href) { should == @mock_network.href }
27
+ its(:identity) { should == @mock_network.href }
28
+ its(:name) { should == @mock_network.name }
29
29
  its(:type) { should == "application/vnd.vmware.vcloud.network+xml" }
30
- its(:id) { should == @mock_network[:id] }
31
- its(:gateway) { should == @mock_network[:gateway] }
32
- its(:broadcast) { should == IPAddr.new(@mock_network[:subnet]).to_range.last.to_s }
33
- its(:address) { should == @mock_network[:subnet].split("/")[0] }
34
- its(:rnat) { should == @mock_network[:rnat] }
35
- its(:extension_href) { should == @mock_network[:extension_href] }
30
+ its(:gateway) { should == @mock_network.gateway }
31
+ its(:broadcast) { should == @mock_network.broadcast }
32
+ its(:address) { should == @mock_network.address }
33
+ its(:rnat) { should == @mock_network.rnat }
34
+ its(:extension_href) { should == @mock_network.extensions.href }
36
35
 
37
36
  it { should have(1).features }
38
37
 
39
38
  describe :features do
40
39
  let(:feature) { subject.features[0] }
41
40
  specify { feature.should be_an_instance_of Hash }
42
- specify { feature[:FenceMode].should == @mock_network[:features][0][:value] }
41
+ specify { feature[:FenceMode].should == @mock_network.features[0][:value] }
43
42
  end
44
43
 
45
44
  it { should have(2).links }
@@ -48,17 +47,17 @@ if Fog.mocking?
48
47
  context "[0]" do
49
48
  let(:link) { subject.links[0] }
50
49
  specify { link[:rel].should == "down" }
51
- specify { link[:href].should == "#{@mock_network[:href]}/ips" }
50
+ specify { link[:href].should == @mock_network_ip_collection.href }
52
51
  specify { link[:type].should == "application/xml" }
53
- specify { link[:name].should == "IP Addresses" }
52
+ specify { link[:name].should == @mock_network_ip_collection.name }
54
53
  end
55
54
 
56
55
  context "[1]" do
57
56
  let(:link) { subject.links[1] }
58
57
  specify { link[:rel].should == "down" }
59
- specify { link[:href].should == @mock_network[:extension_href] }
58
+ specify { link[:href].should == @mock_network.extensions.href }
60
59
  specify { link[:type].should == "application/xml" }
61
- specify { link[:name].should == @mock_network[:name] }
60
+ specify { link[:name].should == @mock_network.name }
62
61
  end
63
62
  end
64
63
 
@@ -24,13 +24,13 @@ if Fog.mocking?
24
24
 
25
25
  it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::Node }
26
26
 
27
- its(:href) { should == @mock_node[:href] }
28
- its(:identity) { should == @mock_node[:href] }
29
- its(:name) { should == @mock_node[:name] }
30
- its(:id) { should == @mock_node[:id] }
31
- its(:port) { should == @mock_node[:port] }
32
- its(:enabled) { should == @mock_node[:enabled] }
33
- its(:description) { should == @mock_node[:description] }
27
+ its(:href) { should == @mock_node.href }
28
+ its(:identity) { should == @mock_node.href }
29
+ its(:name) { should == @mock_node.name }
30
+ its(:id) { should == @mock_node.object_id.to_s }
31
+ its(:port) { should == @mock_node.port.to_s }
32
+ its(:enabled) { should == @mock_node.enabled.to_s }
33
+ its(:description) { should == @mock_node.description }
34
34
 
35
35
  end
36
36
  end
@@ -19,7 +19,7 @@ if Fog.mocking?
19
19
 
20
20
  it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::Nodes }
21
21
 
22
- its(:length) { should == 2 }
22
+ its(:length) { should == 3 }
23
23
 
24
24
  it { should have_members_of_the_right_model }
25
25
  end
@@ -2,10 +2,6 @@ require File.join(File.dirname(__FILE__),'..','..','..','spec_helper')
2
2
 
3
3
  if Fog.mocking?
4
4
  describe "Fog::Vcloud::Terremark::Ecloud::PublicIp", :type => :mock_tmrk_ecloud_model do
5
- before do
6
- @mock_ip = @mock_vdc[:public_ips].first
7
- end
8
-
9
5
  subject { @vcloud }
10
6
 
11
7
  describe :class do
@@ -27,10 +23,10 @@ if Fog.mocking?
27
23
 
28
24
  it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::PublicIp }
29
25
 
30
- its(:href) { should == @mock_ip[:href] }
31
- its(:identity) { should == @mock_ip[:href] }
32
- its(:name) { should == @mock_ip[:name] }
33
- its(:id) { should == @mock_ip[:id] }
26
+ its(:href) { should == @mock_public_ip.href }
27
+ its(:identity) { should == @mock_public_ip.href }
28
+ its(:name) { should == @mock_public_ip.name }
29
+ its(:id) { should == @mock_public_ip.object_id.to_s }
34
30
 
35
31
  its(:internet_services) { should have(2).services }
36
32
 
@@ -0,0 +1,42 @@
1
+ require File.join(File.dirname(__FILE__),'..','..','..','spec_helper')
2
+
3
+ if Fog.mocking?
4
+ describe "Fog::Vcloud::Terremark::Ecloud::Vdc", :type => :mock_tmrk_ecloud_model do
5
+ subject { @vcloud }
6
+
7
+ describe :class do
8
+ subject { Fog::Vcloud::Terremark::Ecloud::Server }
9
+
10
+ it { should have_identity :href }
11
+ it { should have_only_these_attributes [:href, :type, :name, :status, :network_connections, :os, :virtual_hardware, :storage_size, :links] }
12
+ end
13
+
14
+ context "with no uri" do
15
+ subject { Fog::Vcloud::Terremark::Ecloud::Server.new() }
16
+
17
+ it { should have_all_attributes_be_nil }
18
+ end
19
+
20
+ context "as a collection member" do
21
+ subject { @vcloud.vdcs[0].servers.first }
22
+
23
+ its(:href) { should == @mock_vm.href }
24
+ its(:identity) { should == @mock_vm.href }
25
+ its(:name) { should == @mock_vm.name }
26
+ its(:cpus) { should == { :count => @mock_vm.cpus, :units => nil } }
27
+ its(:memory) { should == { :amount => @mock_vm.memory, :units => nil } }
28
+ its(:disks) { should == @mock_vm.to_configure_vapp_hash[:disks] }
29
+ end
30
+
31
+ context "as a new server without all info" do
32
+ before { @vcloud.return_vapp_as_creating! "test123" }
33
+
34
+ subject { @vcloud.vdcs[0].servers.create(@mock_catalog_item.href, { :name => "test123", :row => "foo", :group => "bar", :network_uri => @mock_network.href }) }
35
+
36
+ its(:cpus) { should be_nil }
37
+ its(:memory) { should be_nil }
38
+ its(:disks) { should == [] }
39
+ end
40
+ end
41
+ else
42
+ end
@@ -22,26 +22,26 @@ if Fog.mocking?
22
22
  end
23
23
 
24
24
  context "as a collection member" do
25
- subject { @vcloud.vdcs[0].reload; @vcloud.vdcs[0] }
25
+ subject { @vcloud.vdcs[0].reload }
26
26
 
27
- its(:href) { should == @mock_vdc[:href] }
28
- its(:identity) { should == @mock_vdc[:href] }
29
- its(:name) { should == @mock_vdc[:name] }
27
+ its(:href) { should == @mock_vdc.href }
28
+ its(:identity) { should == @mock_vdc.href }
29
+ its(:name) { should == @mock_vdc.name }
30
30
  its(:public_ips) { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::PublicIps }
31
31
  its(:other_links) { should have(4).items }
32
32
  its(:resource_entities) { should have(3).items }
33
33
  its(:available_networks) { should have(2).items }
34
34
 
35
35
  its(:compute_capacity) { should == {:Memory =>
36
- {:Allocated => @mock_vdc[:memory][:allocated], :Units => "bytes * 2^20"},
36
+ {:Allocated => @mock_vdc.memory_allocated.to_s, :Units => "bytes * 2^20"},
37
37
  :DeployedVmsQuota =>
38
38
  {:Limit => "-1", :Used => "-1"},
39
39
  :InstantiatedVmsQuota =>
40
40
  {:Limit => "-1", :Used => "-1"},
41
41
  :Cpu =>
42
- {:Allocated => @mock_vdc[:cpu][:allocated], :Units => "hz * 10^6"}} }
42
+ {:Allocated => @mock_vdc.cpu_allocated.to_s, :Units => "hz * 10^6"}} }
43
43
 
44
- its(:storage_capacity) { should == {:Allocated => @mock_vdc[:storage][:allocated], :Used => @mock_vdc[:storage][:used], :Units => "bytes * 10^9"} }
44
+ its(:storage_capacity) { should == {:Allocated => @mock_vdc.storage_allocated.to_s, :Used => @mock_vdc.storage_used.to_s, :Units => "bytes * 10^9"} }
45
45
 
46
46
  its(:deployed_vm_quota) { should == nil }
47
47
  its(:instantiated_vm_quota) { should == nil }
@@ -21,7 +21,7 @@ if Fog.mocking?
21
21
 
22
22
  it { should have_members_of_the_right_model }
23
23
 
24
- its(:organization_uri) { should == @mock_organization[:info][:href] }
24
+ its(:organization_uri) { should == @mock_organization.href }
25
25
  end
26
26
  end
27
27
  else
@@ -8,7 +8,8 @@ if Fog.mocking?
8
8
 
9
9
  describe "#add_internet_service" do
10
10
  before do
11
- @public_ip = @vcloud.vdcs[0].public_ips[0]
11
+ @public_ip = @vcloud.vdcs.first.public_ips.detect {|p| p.name == @mock_public_ip.name }
12
+
12
13
  @new_service_data = { :name => "Test Service",
13
14
  :protocol => "HTTP",
14
15
  :port => "80",
@@ -18,16 +19,10 @@ if Fog.mocking?
18
19
  end
19
20
 
20
21
  context "with a valid Public IP uri" do
21
- it "has the right number of Internet Services before" do
22
- before_services = @vcloud.get_internet_services(@public_ip.href)
23
- before_services.body[:InternetService].should have(2).services
24
- end
25
-
26
- subject { @vcloud.add_internet_service(@public_ip.href.to_s + "/internetServices", @new_service_data ) }
22
+ subject { @vcloud.add_internet_service(@public_ip.internet_services.href, @new_service_data ) }
27
23
 
28
24
  it "has the right number of Internet Services after" do
29
- subject
30
- @vcloud.get_internet_services(@public_ip.href).body[:InternetService].should have(3).services
25
+ expect { subject }.to change { @vcloud.get_internet_services(@public_ip.internet_services.href).body[:InternetService].size }.by(1)
31
26
  end
32
27
 
33
28
  it_should_behave_like "all responses"
@@ -43,19 +38,19 @@ if Fog.mocking?
43
38
  specify { body[:RedirectURL].should == @new_service_data[:redirect_url] }
44
39
  specify { body[:Monitor].should == nil }
45
40
 
46
- let(:public_ip) { subject.body[:PublicIpAddress] }
47
- specify { public_ip.should be_an_instance_of Hash }
48
- specify { public_ip[:Name].should == @public_ip.name }
49
- specify { public_ip[:Id].should == @public_ip.id }
41
+ let(:referenced_public_ip) { subject.body[:PublicIpAddress] }
42
+ specify { referenced_public_ip.should be_an_instance_of Hash }
43
+ specify { referenced_public_ip[:Name].should == @public_ip.name }
44
+ specify { referenced_public_ip[:Id].should == @public_ip.id }
50
45
 
51
46
  it "should update the mock object properly" do
52
47
  subject
53
- ip, service = @vcloud.mock_ip_and_service_from_service_url(body[:Href])
54
- service[:href].should == body[:Href]
55
- service[:id].should == body[:Id]
56
- service[:nodes].should == []
57
- end
58
48
 
49
+ public_ip_internet_service = @vcloud.mock_data.public_ip_internet_service_from_href(body[:Href])
50
+
51
+ public_ip_internet_service.object_id.to_s.should == body[:Id]
52
+ public_ip_internet_service.node_collection.items.should be_empty
53
+ end
59
54
  end
60
55
 
61
56
  context "with a public_ips_uri that doesn't exist" do
@@ -18,26 +18,30 @@ if Fog.mocking?
18
18
 
19
19
  context "with a valid node services uri" do
20
20
 
21
- subject { @vcloud.add_node(@mock_service[:href] + "/nodeServices", new_node_data) }
21
+ subject { @vcloud.add_node(@mock_service.node_collection.href, new_node_data) }
22
22
 
23
23
  it_should_behave_like "all responses"
24
24
 
25
25
  let(:service) { @vcloud.vdcs.first.public_ips.first.internet_services.first }
26
26
 
27
27
  it "should change the count by 1" do
28
- service.nodes.length.should == 2
29
- subject
30
- service.nodes.reload.length.should == 3
28
+ expect { subject }.to change { @vcloud.get_nodes(@mock_service.node_collection.href).body[:NodeService].length}.by(1)
31
29
  end
32
30
 
33
31
  describe "#body" do
34
- subject { @vcloud.add_node(@mock_service[:href] + "/nodeServices", new_node_data).body }
32
+ subject { @vcloud.add_node(@mock_service.node_collection.href, new_node_data).body }
35
33
  its(:Enabled) { should == new_node_data[:enabled] }
36
34
  its(:Port) { should == new_node_data[:port] }
37
35
  its(:IpAddress) { should == new_node_data[:ip_address] }
38
36
  its(:Name) { should == new_node_data[:name] }
39
37
  its(:Description) { should == new_node_data[:description] }
40
38
  end
39
+
40
+ describe "added mock data" do
41
+ let(:added_mock_node) { @vcloud.mock_data.public_ip_internet_service_node_from_href(subject.body[:Href]) }
42
+
43
+ specify { added_mock_node._parent.should == @mock_service.node_collection }
44
+ end
41
45
  end
42
46
 
43
47
  context "with a nodes uri that doesn't exist" do
@@ -8,9 +8,8 @@ if Fog.mocking?
8
8
 
9
9
  describe "#configure_internet_service" do
10
10
  before do
11
- @public_ip = @vcloud.vdcs.first.public_ips.first
12
- @original_service = @vcloud.get_internet_services(@public_ip.href).body[:InternetService].first
13
- @ip_data = { :id => @public_ip.id, :name => @public_ip.name, :href => @public_ip.href.to_s }
11
+ @original_service = @vcloud.get_internet_services(@mock_public_ip.internet_service_collection.href).body[:InternetService].first
12
+ @ip_data = { :id => @mock_public_ip.object_id, :name => @mock_public_ip.name, :href => @mock_public_ip.href.to_s }
14
13
  @service_data = { :name => @original_service[:Name], :protocol => @original_service[:Protocol],
15
14
  :port => @original_service[:Port], :description => @original_service[:Description],
16
15
  :enabled => @original_service[:Enabled], :redirect_url => @original_service[:RedirectURL],
@@ -18,7 +17,6 @@ if Fog.mocking?
18
17
  end
19
18
 
20
19
  context "with a valid Internet Service uri and valid data" do
21
-
22
20
  subject { @vcloud.configure_internet_service(@original_service[:Href], @service_data, @ip_data) }
23
21
 
24
22
  it_should_behave_like "all responses"
@@ -29,23 +27,23 @@ if Fog.mocking?
29
27
  @service_data[:redirect_url] = "http://google.com"
30
28
  @service_data[:port] = "80"
31
29
  end
30
+
32
31
  it "should change data" do
33
32
  @original_service[:Description].should == @mock_service[:description]
34
33
  @original_service[:RedirectURL].should == @mock_service[:redirect_url]
35
- @original_service[:Port].should == @mock_service[:port]
34
+ @original_service[:Port].should == @mock_service[:port].to_s
36
35
  result = subject
37
36
  result.body[:Description].should == @service_data[:description]
38
37
  result.body[:RedirectURL].should == @service_data[:redirect_url]
39
38
  result.body[:Port].should == @service_data[:port]
40
39
 
41
- new_result = @vcloud.get_internet_services(@public_ip.href).body[:InternetService].first
40
+ new_result = @vcloud.get_internet_services(@mock_public_ip.internet_service_collection.href).body[:InternetService].first
42
41
 
43
42
  new_result[:Description].should == @service_data[:description]
44
43
  new_result[:RedirectURL].should == @service_data[:redirect_url]
45
44
  new_result[:Port].should == @service_data[:port]
46
45
  end
47
46
  end
48
-
49
47
  end
50
48
 
51
49
  context "with an internet_services_uri that doesn't exist" do
@@ -7,44 +7,38 @@ if Fog.mocking?
7
7
  it { should respond_to :configure_node }
8
8
 
9
9
  describe "#configure_node" do
10
- let(:original_node) { @vcloud.vdcs.first.public_ips.first.internet_services.first.nodes.first }
10
+ let(:original_node) { @vcloud.get_node(@mock_node.href).body }
11
11
  let(:node_data) { { :name => "TEST BOOM", :enabled => "false", :description => "TEST BOOM DESC" } }
12
12
 
13
13
  context "with a valid node service uri" do
14
14
 
15
- subject { @vcloud.configure_node(@mock_node[:href],node_data) }
15
+ subject { @vcloud.configure_node(@mock_node.href,node_data) }
16
16
 
17
17
  it_should_behave_like "all responses"
18
18
 
19
19
  describe "#body" do
20
- subject { @vcloud.configure_node(@mock_node[:href],node_data).body }
21
-
22
- its(:Description) { should == node_data[:description] }
23
- its(:Href) { should == @mock_node[:href] }
24
- its(:Name) { should == node_data[:name] }
25
- its(:Id) { should == @mock_node[:id] }
26
- its(:Port) { should == @mock_node[:port] }
27
- its(:Enabled) { should == node_data[:enabled] }
28
- its(:IpAddress) { should == @mock_node[:ip_address] }
20
+ subject { @vcloud.configure_node(@mock_node.href,node_data).body }
21
+
22
+ #Stuff that shouldn't change
23
+ its(:Href) { should == @mock_node.href }
24
+ its(:Id) { should == @mock_node.object_id.to_s }
25
+ its(:Port) { should == @mock_node.port.to_s }
26
+ its(:IpAddress) { should == @mock_node.ip_address }
27
+
28
+ #Stuff that should change
29
+ it "should change the name" do
30
+ expect { subject }.to change { @vcloud.get_node(@mock_node.href).body[:Name] }.to(node_data[:name])
31
+ end
32
+
33
+ it "should change enabled" do
34
+ expect { subject }.to change { @vcloud.get_node(@mock_node.href).body[:Enabled] }.to(node_data[:enabled])
35
+ end
36
+
37
+ it "should change the description" do
38
+ expect { subject }.to change { @vcloud.get_node(@mock_node.href).body[:Description] }.to(node_data[:description])
39
+ end
29
40
  end
30
41
 
31
- it "should change the name" do
32
- original_node.name.should == @mock_node[:name]
33
- subject
34
- original_node.reload.name.should == node_data[:name]
35
- end
36
-
37
- it "should change enabled" do
38
- original_node.enabled.should == @mock_node[:enabled]
39
- subject
40
- original_node.reload.enabled.should == node_data[:enabled]
41
- end
42
-
43
- it "should change the description" do
44
- original_node.description.should == @mock_node[:description]
45
- subject
46
- original_node.reload.description.should == node_data[:description]
47
- end
48
42
  end
49
43
 
50
44
  context "with a nodes uri that doesn't exist" do
@@ -0,0 +1,71 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', '..', 'spec_helper')
2
+
3
+ shared_examples_for "a successful configure vapp" do
4
+ specify { after_vapp_data.should == new_vapp_data }
5
+
6
+ describe "#body" do
7
+ its(:body) { should == '' }
8
+ end
9
+
10
+ describe "#headers" do
11
+ its(:headers) { should include "Location" }
12
+ end
13
+ end
14
+
15
+ if Fog.mocking?
16
+ describe "Fog::Vcloud, initialized w/ the TMRK Ecloud module", :type => :mock_tmrk_ecloud_request do
17
+ subject { @vcloud }
18
+
19
+ it { should respond_to :configure_vapp }
20
+
21
+ let(:original_vapp_data) { vapp_data.dup }
22
+ let(:vapp_data) { @mock_vm.to_configure_vapp_hash }
23
+ let(:changed_vapp_data) { {} }
24
+ let(:new_vapp_data) { vapp_data.update(changed_vapp_data) }
25
+ let(:after_vapp_data) { @mock_vm.to_configure_vapp_hash }
26
+
27
+ describe "#configure_vapp" do
28
+ context "with a valid vapp uri" do
29
+ before { original_vapp_data; subject }
30
+
31
+ subject { @vcloud.configure_vapp(@mock_vm.href, new_vapp_data) }
32
+
33
+ context "when changing nothing" do
34
+ it_should_behave_like "a successful configure vapp"
35
+ end
36
+
37
+ context "when changing CPUs" do
38
+ let(:changed_vapp_data) { { :cpus => @mock_vm.cpus * 2 } }
39
+
40
+ it_should_behave_like "a successful configure vapp"
41
+ end
42
+
43
+ context "when changing memory" do
44
+ let(:changed_vapp_data) { { :memory => @mock_vm.memory * 2 } }
45
+
46
+ it_should_behave_like "a successful configure vapp"
47
+ end
48
+
49
+ context "when removing a disk" do
50
+ let(:changed_vapp_data) { { :disks => original_vapp_data[:disks][0...1] } }
51
+
52
+ it_should_behave_like "a successful configure vapp"
53
+ end
54
+
55
+ context "when adding a disk" do
56
+ let(:changed_vapp_data) { { :disks => original_vapp_data[:disks] + [{ :number => "5", :size => 10 * 1024 * 1024, :resource => (10 * 1024 * 1024).to_s }] } }
57
+
58
+ it_should_behave_like "a successful configure vapp"
59
+ end
60
+ end
61
+
62
+ context "with an internet_services_uri that doesn't exist" do
63
+ subject { lambda { @vcloud.configure_vapp(URI.parse('https://www.fakey.c/piv8vc99'), new_vapp_data) } }
64
+
65
+ it_should_behave_like "a request for a resource that doesn't exist"
66
+ end
67
+ end
68
+ end
69
+ else
70
+ end
71
+