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.
- data/Gemfile.lock +1 -1
- data/README.rdoc +17 -12
- data/fog.gemspec +10 -5
- data/lib/fog.rb +1 -1
- data/lib/fog/aws/models/storage/directory.rb +22 -0
- data/lib/fog/aws/models/storage/file.rb +15 -0
- data/lib/fog/aws/storage.rb +8 -0
- data/lib/fog/core/collection.rb +9 -8
- data/lib/fog/core/compute.rb +1 -1
- data/lib/fog/google/models/storage/directory.rb +23 -1
- data/lib/fog/google/models/storage/file.rb +16 -1
- data/lib/fog/google/parsers/storage/access_control_list.rb +16 -14
- data/lib/fog/local/models/storage/directory.rb +8 -0
- data/lib/fog/local/models/storage/file.rb +4 -0
- data/lib/fog/rackspace/cdn.rb +3 -3
- data/lib/fog/rackspace/models/storage/directory.rb +18 -0
- data/lib/fog/rackspace/models/storage/file.rb +7 -0
- data/lib/fog/rackspace/requests/cdn/{get_cdn_containers.rb → get_containers.rb} +3 -3
- data/lib/fog/rackspace/requests/cdn/{head_cdn_container.rb → head_container.rb} +3 -3
- data/lib/fog/rackspace/requests/cdn/{put_cdn_container.rb → put_container.rb} +3 -3
- data/lib/fog/rackspace/storage.rb +10 -0
- data/lib/fog/vcloud.rb +32 -153
- data/lib/fog/vcloud/collection.rb +18 -0
- data/lib/fog/vcloud/mock_data_classes.rb +701 -0
- data/lib/fog/vcloud/requests/get_network.rb +8 -8
- data/lib/fog/vcloud/requests/get_organization.rb +10 -10
- data/lib/fog/vcloud/requests/get_vdc.rb +18 -18
- data/lib/fog/vcloud/requests/get_versions.rb +3 -3
- data/lib/fog/vcloud/requests/login.rb +2 -2
- data/lib/fog/vcloud/terremark/ecloud.rb +65 -109
- data/lib/fog/vcloud/terremark/ecloud/models/catalog.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/firewall_acls.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/ip.rb +1 -1
- data/lib/fog/vcloud/terremark/ecloud/models/ips.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/network.rb +3 -2
- data/lib/fog/vcloud/terremark/ecloud/models/networks.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/nodes.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/public_ips.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/server.rb +20 -8
- data/lib/fog/vcloud/terremark/ecloud/models/servers.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/tasks.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/vdcs.rb +2 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +4 -8
- data/lib/fog/vcloud/terremark/ecloud/requests/add_node.rb +4 -7
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +18 -20
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_node.rb +6 -7
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_vapp.rb +40 -9
- data/lib/fog/vcloud/terremark/ecloud/requests/delete_internet_service.rb +2 -10
- data/lib/fog/vcloud/terremark/ecloud/requests/delete_node.rb +2 -6
- data/lib/fog/vcloud/terremark/ecloud/requests/delete_vapp.rb +13 -1
- data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog.rb +6 -6
- data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog_item.rb +6 -7
- data/lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb +34 -33
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network.rb +23 -24
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_extensions.rb +10 -13
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ip.rb +15 -19
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb +20 -22
- data/lib/fog/vcloud/terremark/ecloud/requests/get_node.rb +12 -15
- data/lib/fog/vcloud/terremark/ecloud/requests/get_nodes.rb +11 -12
- data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ip.rb +5 -4
- data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ips.rb +9 -8
- data/lib/fog/vcloud/terremark/ecloud/requests/get_vapp.rb +33 -17
- data/lib/fog/vcloud/terremark/ecloud/requests/get_vdc.rb +54 -53
- data/lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb +13 -19
- data/lib/fog/vcloud/terremark/ecloud/requests/power_off.rb +9 -2
- data/lib/fog/vcloud/terremark/ecloud/requests/power_on.rb +2 -4
- data/spec/vcloud/bin_spec.rb +3 -6
- data/spec/vcloud/models/vdc_spec.rb +8 -8
- data/spec/vcloud/requests/get_network_spec.rb +8 -8
- data/spec/vcloud/requests/get_organization_spec.rb +9 -9
- data/spec/vcloud/requests/get_vdc_spec.rb +7 -7
- data/spec/vcloud/requests/get_versions_spec.rb +1 -1
- data/spec/vcloud/requests/login_spec.rb +2 -2
- data/spec/vcloud/spec_helper.rb +45 -30
- data/spec/vcloud/terremark/ecloud/models/internet_service_spec.rb +10 -14
- data/spec/vcloud/terremark/ecloud/models/ip_spec.rb +5 -8
- data/spec/vcloud/terremark/ecloud/models/ips_spec.rb +2 -2
- data/spec/vcloud/terremark/ecloud/models/network_spec.rb +15 -16
- data/spec/vcloud/terremark/ecloud/models/node_spec.rb +7 -7
- data/spec/vcloud/terremark/ecloud/models/nodes_spec.rb +1 -1
- data/spec/vcloud/terremark/ecloud/models/public_ip_spec.rb +4 -8
- data/spec/vcloud/terremark/ecloud/models/server_spec.rb +42 -0
- data/spec/vcloud/terremark/ecloud/models/vdc_spec.rb +7 -7
- data/spec/vcloud/terremark/ecloud/models/vdcs_spec.rb +1 -1
- data/spec/vcloud/terremark/ecloud/requests/add_internet_service_spec.rb +13 -18
- data/spec/vcloud/terremark/ecloud/requests/add_node_spec.rb +9 -5
- data/spec/vcloud/terremark/ecloud/requests/configure_internet_service_spec.rb +5 -7
- data/spec/vcloud/terremark/ecloud/requests/configure_node_spec.rb +22 -28
- data/spec/vcloud/terremark/ecloud/requests/configure_vapp_spec.rb +71 -0
- data/spec/vcloud/terremark/ecloud/requests/delete_internet_service_spec.rb +7 -9
- data/spec/vcloud/terremark/ecloud/requests/delete_node_spec.rb +3 -7
- data/spec/vcloud/terremark/ecloud/requests/delete_vapp_spec.rb +83 -0
- data/spec/vcloud/terremark/ecloud/requests/get_catalog_item_spec.rb +6 -5
- data/spec/vcloud/terremark/ecloud/requests/get_catalog_spec.rb +2 -2
- data/spec/vcloud/terremark/ecloud/requests/get_internet_services_spec.rb +31 -42
- data/spec/vcloud/terremark/ecloud/requests/get_network_ip_spec.rb +4 -7
- data/spec/vcloud/terremark/ecloud/requests/get_network_ips_spec.rb +1 -1
- data/spec/vcloud/terremark/ecloud/requests/get_network_spec.rb +19 -11
- data/spec/vcloud/terremark/ecloud/requests/get_node_spec.rb +8 -8
- data/spec/vcloud/terremark/ecloud/requests/get_nodes_spec.rb +11 -11
- data/spec/vcloud/terremark/ecloud/requests/get_public_ip_spec.rb +4 -5
- data/spec/vcloud/terremark/ecloud/requests/get_public_ips_spec.rb +6 -6
- data/spec/vcloud/terremark/ecloud/requests/get_vapp_spec.rb +36 -19
- data/spec/vcloud/terremark/ecloud/requests/get_vdc_spec.rb +21 -18
- data/spec/vcloud/terremark/ecloud/requests/instantiate_vapp_template_spec.rb +27 -17
- data/spec/vcloud/terremark/ecloud/requests/power_off_spec.rb +34 -0
- data/spec/vcloud/terremark/ecloud/requests/power_on_spec.rb +3 -4
- data/spec/vcloud/vcloud_spec.rb +2 -2
- data/tests/helpers/storage/directory_tests.rb +8 -0
- data/tests/helpers/storage/file_tests.rb +4 -0
- 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, :
|
|
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
|
|
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
|
|
27
|
-
its(:identity) { should == @mock_network
|
|
28
|
-
its(:name) { should == @mock_network
|
|
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(:
|
|
31
|
-
its(:
|
|
32
|
-
its(:
|
|
33
|
-
its(:
|
|
34
|
-
its(:
|
|
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
|
|
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 ==
|
|
50
|
+
specify { link[:href].should == @mock_network_ip_collection.href }
|
|
52
51
|
specify { link[:type].should == "application/xml" }
|
|
53
|
-
specify { link[:name].should ==
|
|
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
|
|
58
|
+
specify { link[:href].should == @mock_network.extensions.href }
|
|
60
59
|
specify { link[:type].should == "application/xml" }
|
|
61
|
-
specify { link[:name].should == @mock_network
|
|
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
|
|
28
|
-
its(:identity) { should == @mock_node
|
|
29
|
-
its(:name) { should == @mock_node
|
|
30
|
-
its(:id) { should == @mock_node
|
|
31
|
-
its(:port) { should == @mock_node
|
|
32
|
-
its(:enabled) { should == @mock_node
|
|
33
|
-
its(:description) { should == @mock_node
|
|
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
|
|
@@ -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 == @
|
|
31
|
-
its(:identity) { should == @
|
|
32
|
-
its(:name) { should == @
|
|
33
|
-
its(:id) { should == @
|
|
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
|
|
25
|
+
subject { @vcloud.vdcs[0].reload }
|
|
26
26
|
|
|
27
|
-
its(:href) { should == @mock_vdc
|
|
28
|
-
its(:identity) { should == @mock_vdc
|
|
29
|
-
its(:name) { should == @mock_vdc
|
|
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
|
|
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
|
|
42
|
+
{:Allocated => @mock_vdc.cpu_allocated.to_s, :Units => "hz * 10^6"}} }
|
|
43
43
|
|
|
44
|
-
its(:storage_capacity) { should == {:Allocated => @mock_vdc
|
|
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 }
|
|
@@ -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
|
|
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
|
-
|
|
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(:
|
|
47
|
-
specify {
|
|
48
|
-
specify {
|
|
49
|
-
specify {
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
@
|
|
12
|
-
@
|
|
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(@
|
|
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.
|
|
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
|
|
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
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
its(:Href) { should == @mock_node
|
|
24
|
-
its(:
|
|
25
|
-
its(:
|
|
26
|
-
its(:
|
|
27
|
-
|
|
28
|
-
|
|
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
|
+
|