fog 0.1.8 → 0.1.9
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 +2 -2
- data/Gemfile.lock +5 -5
- data/README.rdoc +29 -29
- data/fog.gemspec +24 -2
- data/lib/fog.rb +4 -15
- data/lib/fog/aws.rb +2 -2
- data/lib/fog/aws/ec2.rb +64 -101
- data/lib/fog/aws/elb.rb +19 -27
- data/lib/fog/aws/models/ec2/addresses.rb +1 -9
- data/lib/fog/aws/models/ec2/flavors.rb +1 -7
- data/lib/fog/aws/models/ec2/images.rb +1 -7
- data/lib/fog/aws/models/ec2/key_pairs.rb +1 -7
- data/lib/fog/aws/models/ec2/security_groups.rb +1 -7
- data/lib/fog/aws/models/ec2/servers.rb +1 -7
- data/lib/fog/aws/models/ec2/snapshots.rb +1 -9
- data/lib/fog/aws/models/ec2/volumes.rb +1 -9
- data/lib/fog/aws/models/s3/directories.rb +1 -7
- data/lib/fog/aws/models/s3/file.rb +5 -0
- data/lib/fog/aws/requests/ec2/allocate_address.rb +2 -0
- data/lib/fog/aws/requests/ec2/attach_volume.rb +2 -0
- data/lib/fog/aws/requests/ec2/create_key_pair.rb +2 -0
- data/lib/fog/aws/requests/ec2/create_snapshot.rb +2 -0
- data/lib/fog/aws/requests/ec2/create_volume.rb +2 -0
- data/lib/fog/aws/requests/ec2/describe_addresses.rb +2 -0
- data/lib/fog/aws/requests/ec2/describe_availability_zones.rb +2 -0
- data/lib/fog/aws/requests/ec2/describe_images.rb +2 -0
- data/lib/fog/aws/requests/ec2/describe_instances.rb +2 -0
- data/lib/fog/aws/requests/ec2/describe_key_pairs.rb +2 -0
- data/lib/fog/aws/requests/ec2/describe_regions.rb +2 -0
- data/lib/fog/aws/requests/ec2/describe_reserved_instances.rb +2 -0
- data/lib/fog/aws/requests/ec2/describe_security_groups.rb +2 -0
- data/lib/fog/aws/requests/ec2/describe_snapshots.rb +2 -0
- data/lib/fog/aws/requests/ec2/describe_volumes.rb +2 -0
- data/lib/fog/aws/requests/ec2/detach_volume.rb +2 -0
- data/lib/fog/aws/requests/ec2/get_console_output.rb +2 -0
- data/lib/fog/aws/requests/ec2/run_instances.rb +2 -0
- data/lib/fog/aws/requests/ec2/terminate_instances.rb +2 -0
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +2 -0
- data/lib/fog/aws/requests/elb/delete_load_balancer.rb +2 -0
- data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +2 -0
- data/lib/fog/aws/requests/elb/describe_instance_health.rb +2 -0
- data/lib/fog/aws/requests/elb/describe_load_balancers.rb +2 -0
- data/lib/fog/aws/requests/elb/disable_availability_zones_for_load_balancer.rb +2 -0
- data/lib/fog/aws/requests/elb/enable_availability_zones_for_load_balancer.rb +2 -0
- data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +2 -0
- data/lib/fog/aws/requests/s3/copy_object.rb +2 -0
- data/lib/fog/aws/requests/s3/get_bucket.rb +2 -0
- data/lib/fog/aws/requests/s3/get_bucket_acl.rb +2 -0
- data/lib/fog/aws/requests/s3/get_bucket_location.rb +2 -0
- data/lib/fog/aws/requests/s3/get_bucket_logging.rb +2 -0
- data/lib/fog/aws/requests/s3/get_bucket_object_versions.rb +2 -0
- data/lib/fog/aws/requests/s3/get_bucket_versioning.rb +2 -0
- data/lib/fog/aws/requests/s3/get_object_acl.rb +2 -0
- data/lib/fog/aws/requests/s3/get_request_payment.rb +2 -0
- data/lib/fog/aws/requests/s3/get_service.rb +2 -0
- data/lib/fog/aws/requests/s3/put_object.rb +2 -2
- data/lib/fog/aws/requests/simpledb/domain_metadata.rb +2 -0
- data/lib/fog/aws/requests/simpledb/get_attributes.rb +2 -0
- data/lib/fog/aws/requests/simpledb/list_domains.rb +2 -0
- data/lib/fog/aws/requests/simpledb/select.rb +2 -0
- data/lib/fog/aws/s3.rb +68 -85
- data/lib/fog/aws/simpledb.rb +15 -29
- data/lib/fog/bluebox.rb +23 -40
- data/lib/fog/bluebox/models/flavors.rb +1 -7
- data/lib/fog/bluebox/models/images.rb +1 -9
- data/lib/fog/bluebox/models/servers.rb +1 -7
- data/lib/fog/credentials.rb +2 -0
- data/lib/fog/errors.rb +20 -0
- data/lib/fog/hmac.rb +48 -0
- data/lib/fog/local.rb +9 -22
- data/lib/fog/local/models/directories.rb +1 -7
- data/lib/fog/rackspace.rb +2 -6
- data/lib/fog/rackspace/files.rb +46 -48
- data/lib/fog/rackspace/models/files/directories.rb +1 -7
- data/lib/fog/rackspace/models/servers/flavors.rb +1 -7
- data/lib/fog/rackspace/models/servers/images.rb +1 -9
- data/lib/fog/rackspace/models/servers/server.rb +37 -1
- data/lib/fog/rackspace/models/servers/servers.rb +8 -7
- data/lib/fog/rackspace/requests/files/put_object.rb +1 -1
- data/lib/fog/rackspace/servers.rb +33 -45
- data/lib/fog/service.rb +82 -0
- data/lib/fog/slicehost.rb +28 -42
- data/lib/fog/slicehost/models/flavors.rb +1 -7
- data/lib/fog/slicehost/models/images.rb +1 -9
- data/lib/fog/slicehost/models/servers.rb +1 -7
- data/lib/fog/ssh.rb +1 -1
- data/lib/fog/vcloud.rb +20 -3
- data/lib/fog/vcloud/collection.rb +25 -5
- data/lib/fog/vcloud/model.rb +4 -0
- data/lib/fog/vcloud/parsers/get_organization.rb +2 -2
- data/lib/fog/vcloud/parsers/get_vdc.rb +2 -2
- data/lib/fog/vcloud/parsers/get_versions.rb +1 -1
- data/lib/fog/vcloud/parsers/login.rb +2 -2
- data/lib/fog/vcloud/parsers/network.rb +53 -0
- data/lib/fog/vcloud/requests/get_network.rb +54 -0
- data/lib/fog/vcloud/requests/get_organization.rb +1 -2
- data/lib/fog/vcloud/terremark/ecloud.rb +17 -4
- data/lib/fog/vcloud/terremark/ecloud/models/internet_service.rb +35 -0
- data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +9 -9
- data/lib/fog/vcloud/terremark/ecloud/models/ip.rb +18 -0
- data/lib/fog/vcloud/terremark/ecloud/models/ips.rb +36 -0
- data/lib/fog/vcloud/terremark/ecloud/models/network.rb +32 -0
- data/lib/fog/vcloud/terremark/ecloud/models/networks.rb +38 -0
- data/lib/fog/vcloud/terremark/ecloud/models/public_ip.rb +3 -1
- data/lib/fog/vcloud/terremark/ecloud/models/public_ips.rb +1 -1
- data/lib/fog/vcloud/terremark/ecloud/models/vdc.rb +9 -0
- data/lib/fog/vcloud/terremark/ecloud/models/vdcs.rb +2 -0
- data/lib/fog/vcloud/terremark/ecloud/parsers/network.rb +28 -0
- data/lib/fog/vcloud/terremark/ecloud/parsers/network_ips.rb +31 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +10 -7
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +99 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network.rb +54 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb +51 -0
- data/spec/aws/models/s3/file_spec.rb +15 -0
- data/spec/vcloud/requests/get_network_spec.rb +55 -0
- data/spec/vcloud/spec_helper.rb +1 -0
- data/spec/vcloud/terremark/ecloud/models/internet_service_spec.rb +15 -0
- data/spec/vcloud/terremark/ecloud/models/ip_spec.rb +35 -0
- data/spec/vcloud/terremark/ecloud/models/ips_spec.rb +28 -0
- data/spec/vcloud/terremark/ecloud/models/network_spec.rb +65 -0
- data/spec/vcloud/terremark/ecloud/models/networks_spec.rb +26 -0
- data/spec/vcloud/terremark/ecloud/models/public_ip_spec.rb +0 -2
- data/spec/vcloud/terremark/ecloud/requests/configure_internet_service_spec.rb +44 -0
- data/spec/vcloud/terremark/ecloud/requests/get_network_ips_spec.rb +54 -0
- data/spec/vcloud/terremark/ecloud/requests/get_network_spec.rb +63 -0
- data/tests/aws/requests/ec2/volume_tests.rb +2 -2
- data/tests/helper.rb +2 -0
- metadata +25 -3
@@ -0,0 +1,55 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Fog::Vcloud, :type => :vcloud_request do
|
4
|
+
subject { @vcloud }
|
5
|
+
|
6
|
+
it { should respond_to :get_network }
|
7
|
+
|
8
|
+
describe :get_network, :type => :vcloud_request do
|
9
|
+
context "with a valid network uri" do
|
10
|
+
before { @network = @vcloud.get_network(URI.parse(@mock_network[:href])) }
|
11
|
+
subject { @network }
|
12
|
+
|
13
|
+
it_should_behave_like "all requests"
|
14
|
+
|
15
|
+
its(:headers) { should include "Content-Type" }
|
16
|
+
its(:body) { should be_an_instance_of Struct::VcloudNetwork }
|
17
|
+
|
18
|
+
describe :headers do
|
19
|
+
let(:header) { @network.headers["Content-Type"] }
|
20
|
+
specify { header.should == "application/vnd.vmware.vcloud.network+xml" }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe :body do
|
24
|
+
subject { @network.body }
|
25
|
+
|
26
|
+
it_should_behave_like "it has a vcloud v0.8 xmlns"
|
27
|
+
|
28
|
+
its(:configuration) { should be_an_instance_of Struct::VcloudNetworkConfiguration }
|
29
|
+
its(:features) { should be_an_instance_of Array }
|
30
|
+
its(:href) { should == URI.parse("https://fakey.com/api/v0.8/network/31") }
|
31
|
+
its(:type) { should == "application/vnd.vmware.vcloud.network+xml" }
|
32
|
+
its(:name) { should == @mock_network[:name] }
|
33
|
+
its(:description) { should == @mock_network[:name] }
|
34
|
+
|
35
|
+
describe :configuration do
|
36
|
+
subject { @network.body.configuration }
|
37
|
+
|
38
|
+
its(:gateway) { should == "1.2.3.1" }
|
39
|
+
its(:netmask) { should == "255.255.255.0" }
|
40
|
+
its(:dns) { should == "8.8.8.8" }
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "FenceMode Feature" do
|
44
|
+
subject { @network.body.features.detect { |feature| feature.is_a?(Struct::VcloudNetworkFenceMode) } }
|
45
|
+
its(:mode) { should == "isolated" }
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
context "with a network uri that doesn't exist" do
|
51
|
+
subject { lambda { @vcloud.get_network(URI.parse('https://www.fakey.com/api/v0.8/network/999')) } }
|
52
|
+
it_should_behave_like "a request for a resource that doesn't exist"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/spec/vcloud/spec_helper.rb
CHANGED
@@ -176,6 +176,7 @@ Spec::Runner.configure do |config|
|
|
176
176
|
@mock_version = @mock_data[:versions][0]
|
177
177
|
@mock_organization = @mock_data[:organizations][0]
|
178
178
|
@mock_vdc = @mock_organization[:vdcs][0]
|
179
|
+
@mock_network = @mock_vdc[:networks][0]
|
179
180
|
end
|
180
181
|
config.after(:all) do
|
181
182
|
Fog::Vcloud::Mock.data_reset
|
@@ -38,6 +38,8 @@ describe "Fog::Vcloud::Terremark::Ecloud::InternetService", :type => :tmrk_eclou
|
|
38
38
|
context "as a collection member" do
|
39
39
|
subject { @vcloud.vdcs[0].public_ips[0].internet_services[0] }
|
40
40
|
let(:public_ip) { @vcloud.get_public_ip(@vcloud.vdcs[0].public_ips[0].internet_services[0].public_ip.href).body }
|
41
|
+
let(:composed_public_ip_data) { @vcloud.vdcs[0].public_ips[0].internet_services[0].send(:_compose_ip_data) }
|
42
|
+
let(:composed_service_data) { @vcloud.vdcs[0].public_ips[0].internet_services[0].send(:_compose_service_data) }
|
41
43
|
|
42
44
|
it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::InternetService }
|
43
45
|
|
@@ -54,5 +56,18 @@ describe "Fog::Vcloud::Terremark::Ecloud::InternetService", :type => :tmrk_eclou
|
|
54
56
|
its(:timeout) { should == 2 }
|
55
57
|
its(:url_send_string) { should == nil }
|
56
58
|
its(:http_header) { should == nil }
|
59
|
+
|
60
|
+
specify { composed_public_ip_data[:href].should == public_ip.href.to_s }
|
61
|
+
specify { composed_public_ip_data[:name].should == public_ip.name }
|
62
|
+
specify { composed_public_ip_data[:id].should == public_ip.id }
|
63
|
+
|
64
|
+
specify { composed_service_data[:href].should == subject.href.to_s }
|
65
|
+
specify { composed_service_data[:name].should == subject.name }
|
66
|
+
specify { composed_service_data[:id].should == subject.id.to_s }
|
67
|
+
specify { composed_service_data[:protocol].should == subject.protocol }
|
68
|
+
specify { composed_service_data[:port].should == subject.port.to_s }
|
69
|
+
specify { composed_service_data[:enabled].should == subject.enabled.to_s }
|
70
|
+
specify { composed_service_data[:description].should == subject.description }
|
71
|
+
specify { composed_service_data[:timeout].should == subject.timeout.to_s }
|
57
72
|
end
|
58
73
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'..','..','..','spec_helper')
|
2
|
+
|
3
|
+
describe "Fog::Vcloud::Terremark::Ecloud::Ip", :type => :tmrk_ecloud_model do
|
4
|
+
subject { @vcloud }
|
5
|
+
|
6
|
+
describe :class do
|
7
|
+
subject { Fog::Vcloud::Terremark::Ecloud::Ip }
|
8
|
+
|
9
|
+
it { should have_identity :name }
|
10
|
+
it { should have_only_these_attributes [:name, :status, :server] }
|
11
|
+
end
|
12
|
+
|
13
|
+
context "with no uri" do
|
14
|
+
|
15
|
+
subject { Fog::Vcloud::Terremark::Ecloud::Ip.new() }
|
16
|
+
|
17
|
+
its(:name) { should be_nil }
|
18
|
+
its(:status) { should be_nil }
|
19
|
+
its(:server) { should be_nil }
|
20
|
+
end
|
21
|
+
|
22
|
+
context "as a collection member" do
|
23
|
+
subject { @vcloud.vdcs[0].networks[0].ips[0] }
|
24
|
+
let(:status) { @mock_network[:ips].keys.include?(@vcloud.vdcs[0].networks[0].ips[0].name) ? "Assigned" : nil }
|
25
|
+
let(:server) { @mock_network[:ips][@vcloud.vdcs[0].networks[0].ips[0].name] }
|
26
|
+
|
27
|
+
it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::Ip }
|
28
|
+
|
29
|
+
its(:name) { should == IPAddr.new(@mock_network[:name]).to_range.to_a[3].to_s }
|
30
|
+
its(:status) { should == status }
|
31
|
+
its(:server) { should == server }
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'..','..','..','spec_helper')
|
2
|
+
|
3
|
+
describe "Fog::Vcloud::Terremark::Ecloud::Ips", :type => :tmrk_ecloud_model do
|
4
|
+
subject { @vcloud }
|
5
|
+
|
6
|
+
it { should_not respond_to :ips }
|
7
|
+
|
8
|
+
describe :class do
|
9
|
+
subject { @vcloud.vdcs[0].networks[0].ips.class }
|
10
|
+
its(:model) { should == Fog::Vcloud::Terremark::Ecloud::Ip }
|
11
|
+
its(:get_request) { should be_nil }
|
12
|
+
its(:all_request) { should be_nil }
|
13
|
+
its(:vcloud_type) { should be_nil }
|
14
|
+
it { should_not respond_to :create }
|
15
|
+
end
|
16
|
+
|
17
|
+
describe :ips do
|
18
|
+
subject { @vcloud.vdcs[0].networks[0].ips }
|
19
|
+
|
20
|
+
it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::Ips }
|
21
|
+
|
22
|
+
its(:length) { should == 252 }
|
23
|
+
|
24
|
+
it { should have_members_of_the_right_model }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'..','..','..','spec_helper')
|
2
|
+
|
3
|
+
describe "Fog::Vcloud::Terremark::Ecloud::Network", :type => :tmrk_ecloud_model do
|
4
|
+
subject { @vcloud }
|
5
|
+
|
6
|
+
describe :class do
|
7
|
+
subject { Fog::Vcloud::Terremark::Ecloud::Network }
|
8
|
+
|
9
|
+
it { should have_identity :href }
|
10
|
+
it { should have_only_these_attributes [:href, :name, :features, :configuration, :ips_link, :type, :xmlns] }
|
11
|
+
end
|
12
|
+
|
13
|
+
context "with no uri" do
|
14
|
+
|
15
|
+
subject { Fog::Vcloud::Terremark::Ecloud::Network.new() }
|
16
|
+
|
17
|
+
its(:href) { should be_nil }
|
18
|
+
its(:identity) { should be_nil }
|
19
|
+
its(:name) { should be_nil }
|
20
|
+
its(:type) { should be_nil }
|
21
|
+
its(:features) { should be_nil }
|
22
|
+
its(:configuration) { should be_nil }
|
23
|
+
its(:ips_link) { should be_nil }
|
24
|
+
its(:xmlns) { should be_nil }
|
25
|
+
end
|
26
|
+
|
27
|
+
context "as a collection member" do
|
28
|
+
subject { @vcloud.vdcs[0].networks[0] }
|
29
|
+
|
30
|
+
it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::Network }
|
31
|
+
|
32
|
+
it_should_behave_like "it has a vcloud v0.8 xmlns"
|
33
|
+
|
34
|
+
its(:href) { should == URI.parse(@mock_network[:href]) }
|
35
|
+
its(:identity) { should == URI.parse(@mock_network[:href]) }
|
36
|
+
its(:name) { should == @mock_network[:name] }
|
37
|
+
its(:type) { should == "application/vnd.vmware.vcloud.network+xml" }
|
38
|
+
|
39
|
+
it { should have(1).features }
|
40
|
+
|
41
|
+
describe :features do
|
42
|
+
let(:feature) { subject.features[0] }
|
43
|
+
specify { feature.should be_an_instance_of Struct::VcloudNetworkFenceMode }
|
44
|
+
specify { feature.mode.should == "isolated" }
|
45
|
+
end
|
46
|
+
|
47
|
+
describe :configurations do
|
48
|
+
let(:configuration) { subject.configuration }
|
49
|
+
specify { configuration.should be_an_instance_of Struct::VcloudNetworkConfiguration }
|
50
|
+
specify { configuration.gateway.should == @mock_network[:gateway] }
|
51
|
+
specify { configuration.netmask.should == @mock_network[:netmask] }
|
52
|
+
specify { configuration.dns.should be_nil }
|
53
|
+
end
|
54
|
+
|
55
|
+
describe :ips_link do
|
56
|
+
let(:ips_link) { subject.ips_link }
|
57
|
+
specify { ips_link.rel.should == "down" }
|
58
|
+
specify { ips_link.href.should == URI.parse(@mock_network[:href] + "/ips") }
|
59
|
+
specify { ips_link.type.should == "application/xml" }
|
60
|
+
specify { ips_link.name.should == "IP Addresses" }
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'..','..','..','spec_helper')
|
2
|
+
|
3
|
+
describe "Fog::Vcloud::Terremark::Ecloud::Networks", :type => :tmrk_ecloud_model do
|
4
|
+
subject { @vcloud }
|
5
|
+
|
6
|
+
it { should respond_to :networks }
|
7
|
+
|
8
|
+
describe :class do
|
9
|
+
subject { @vcloud.networks.class }
|
10
|
+
its(:model) { should == Fog::Vcloud::Terremark::Ecloud::Network }
|
11
|
+
its(:get_request) { should == :get_network }
|
12
|
+
its(:all_request) { should be_an_instance_of Proc }
|
13
|
+
its(:vcloud_type) { should == "application/vnd.vmware.vcloud.network+xml" }
|
14
|
+
end
|
15
|
+
|
16
|
+
describe :networks do
|
17
|
+
subject { @vcloud.vdcs[0].networks }
|
18
|
+
|
19
|
+
it { should be_an_instance_of Fog::Vcloud::Terremark::Ecloud::Networks }
|
20
|
+
|
21
|
+
its(:length) { should == 2 }
|
22
|
+
|
23
|
+
it { should have_members_of_the_right_model }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Fog::Vcloud, initialized w/ the TMRK Ecloud module", :type => :tmrk_ecloud_request do
|
4
|
+
subject { @vcloud }
|
5
|
+
|
6
|
+
it { should respond_to :configure_internet_service }
|
7
|
+
|
8
|
+
describe "#configure_internet_service" do
|
9
|
+
before do
|
10
|
+
@public_ip = @vcloud.vdcs[0].public_ips[0]
|
11
|
+
@original_service = @vcloud.get_internet_services(@public_ip.href).body.links.first
|
12
|
+
@service_data = {}
|
13
|
+
@original_service.each_pair { |sym, data| @service_data[sym] = data }
|
14
|
+
@ip_data = { :id => @public_ip.id, :name => @public_ip.name, :href => @public_ip.href.to_s }
|
15
|
+
end
|
16
|
+
|
17
|
+
context "with a valid Internet Service uri and valid data" do
|
18
|
+
|
19
|
+
subject { @vcloud.configure_internet_service(@original_service.href, @service_data, @ip_data) }
|
20
|
+
|
21
|
+
it_should_behave_like "all requests"
|
22
|
+
|
23
|
+
context "with some changed data" do
|
24
|
+
before do
|
25
|
+
@service_data[:description] = "TEST BOOM"
|
26
|
+
end
|
27
|
+
it "should change data" do
|
28
|
+
@original_service.description.should == "Web Servers"
|
29
|
+
result = subject
|
30
|
+
result.body.description.should == "TEST BOOM"
|
31
|
+
@vcloud.get_internet_services(@public_ip.href).body.links.first.description.should == "TEST BOOM"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
context "with an internet_services_uri that doesn't exist" do
|
38
|
+
subject { lambda { @vcloud.configure_internet_service(URI.parse('https://www.fakey.c/piv8vc99'), @service_data, @ip_data ) } }
|
39
|
+
|
40
|
+
it_should_behave_like "a request for a resource that doesn't exist"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Fog::Vcloud, initialized w/ the TMRK Ecloud module", :type => :tmrk_ecloud_request do
|
4
|
+
subject { @vcloud }
|
5
|
+
|
6
|
+
it { should respond_to :get_network_ips }
|
7
|
+
|
8
|
+
describe "#get_network_ips" do
|
9
|
+
context "with a valid VDC network ips_uri" do
|
10
|
+
before { @ips = @vcloud.get_network_ips(URI.parse(@mock_network[:href] + "/ips")) }
|
11
|
+
subject { @ips }
|
12
|
+
|
13
|
+
it_should_behave_like "all requests"
|
14
|
+
|
15
|
+
its(:headers) { should include "Content-Type" }
|
16
|
+
specify { subject.headers['Content-Type'].should == "application/vnd.tmrk.ecloud.ipAddressesList+xml" }
|
17
|
+
|
18
|
+
its(:body) { should be_an_instance_of Struct::TmrkEcloudNetworkIps }
|
19
|
+
|
20
|
+
describe "#body" do
|
21
|
+
describe "#addresses" do
|
22
|
+
subject { @ips.body.addresses }
|
23
|
+
|
24
|
+
it { should have(252).addresses }
|
25
|
+
|
26
|
+
describe "one we know is assigned" do
|
27
|
+
let(:address) { subject[0] }
|
28
|
+
|
29
|
+
specify { address.status.should == "Assigned" }
|
30
|
+
specify { address.server.should == "Broom 1" }
|
31
|
+
specify { address.name.should == "1.2.3.3" }
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "one we know is not assigned" do
|
36
|
+
let(:address) { subject[100] }
|
37
|
+
|
38
|
+
specify { address.status.should == "Available" }
|
39
|
+
specify { address.server.should == nil }
|
40
|
+
specify { address.name.should == "1.2.3.103" }
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context "with a network ips uri that doesn't exist" do
|
49
|
+
subject { lambda { @vcloud.get_network_ips(URI.parse('https://www.fakey.c/piv8vc99')) } }
|
50
|
+
|
51
|
+
it_should_behave_like "a request for a resource that doesn't exist"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Fog::Vcloud, :type => :tmrk_ecloud_request do
|
4
|
+
subject { @vcloud }
|
5
|
+
|
6
|
+
it { should respond_to :get_network }
|
7
|
+
|
8
|
+
describe :get_network, :type => :vcloud_request do
|
9
|
+
context "with a valid network uri" do
|
10
|
+
before { @network = @vcloud.get_network(URI.parse(@mock_network[:href])) }
|
11
|
+
subject { @network }
|
12
|
+
|
13
|
+
it_should_behave_like "all requests"
|
14
|
+
|
15
|
+
its(:headers) { should include "Content-Type" }
|
16
|
+
its(:body) { should be_an_instance_of Struct::TmrkEcloudNetwork }
|
17
|
+
|
18
|
+
describe :headers do
|
19
|
+
let(:header) { @network.headers["Content-Type"] }
|
20
|
+
specify { header.should == "application/vnd.vmware.vcloud.network+xml" }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe :body do
|
24
|
+
subject { @network.body }
|
25
|
+
|
26
|
+
it_should_behave_like "it has a vcloud v0.8 xmlns"
|
27
|
+
|
28
|
+
its(:configuration) { should be_an_instance_of Struct::VcloudNetworkConfiguration }
|
29
|
+
its(:features) { should be_an_instance_of Array }
|
30
|
+
its(:ips_link) { should be_an_instance_of Struct::VcloudLink }
|
31
|
+
its(:href) { should == URI.parse("https://fakey.com/api/v0.8/network/31") }
|
32
|
+
its(:type) { should == "application/vnd.vmware.vcloud.network+xml" }
|
33
|
+
its(:name) { should == @mock_network[:name] }
|
34
|
+
|
35
|
+
describe :configuration do
|
36
|
+
subject { @network.body.configuration }
|
37
|
+
|
38
|
+
its(:gateway) { should == "1.2.3.1" }
|
39
|
+
its(:netmask) { should == "255.255.255.0" }
|
40
|
+
end
|
41
|
+
|
42
|
+
describe :ips_link do
|
43
|
+
subject { @network.body.ips_link }
|
44
|
+
its(:href) { should == URI.parse(@mock_network[:href] + "/ips") }
|
45
|
+
its(:rel) { should == "down" }
|
46
|
+
its(:type) { should == "application/xml" }
|
47
|
+
its(:name) { should == "IP Addresses" }
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "FenceMode Feature" do
|
51
|
+
subject { @network.body.features.detect { |feature| feature.is_a?(Struct::VcloudNetworkFenceMode) } }
|
52
|
+
its(:mode) { should == "isolated" }
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
context "with a network uri that doesn't exist" do
|
58
|
+
subject { lambda { @vcloud.get_network(URI.parse('https://www.fakey.com/api/v0.8/network/999')) } }
|
59
|
+
it_should_behave_like "a request for a resource that doesn't exist"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
@@ -45,6 +45,8 @@ Shindo.tests('AWS::EC2 | volume requests', ['aws']) do
|
|
45
45
|
data
|
46
46
|
end
|
47
47
|
|
48
|
+
AWS[:ec2].volumes.get(@volume_id).wait_for { ready? }
|
49
|
+
|
48
50
|
tests('#describe_volumes').formats(@volumes_format) do
|
49
51
|
AWS[:ec2].describe_volumes.body
|
50
52
|
end
|
@@ -53,8 +55,6 @@ Shindo.tests('AWS::EC2 | volume requests', ['aws']) do
|
|
53
55
|
AWS[:ec2].describe_volumes.body
|
54
56
|
end
|
55
57
|
|
56
|
-
AWS[:ec2].volumes.get(@volume_id).wait_for { ready? }
|
57
|
-
|
58
58
|
tests("#attach_volume(#{@server.identity}, #{@volume_id}, '/dev/sdh')").formats(@volume_attachment_format) do
|
59
59
|
AWS[:ec2].attach_volume(@server.identity, @volume_id, '/dev/sdh').body
|
60
60
|
end
|