fog 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- 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
|