fog 0.3.8 → 0.3.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.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fog (0.3.8)
4
+ fog (0.3.9)
5
5
  builder
6
6
  excon (>= 0.2.4)
7
7
  formatador (>= 0.0.15)
data/README.rdoc CHANGED
@@ -2,12 +2,6 @@ http://geemus.com/fog.png
2
2
 
3
3
  fog is the Ruby cloud computing library.
4
4
 
5
- ################################################################################
6
-
7
- Thursday, October 14, 2010 10:00 am PST, hear it straight from {geemus}[http://github.com/geemus] in the {fog webinar}[http://pages.engineyard.com/FogWebinar.html]
8
-
9
- ################################################################################
10
-
11
5
  The quick and dirty, top to bottom:
12
6
  * Collections provide a simplified interface, making clouds easier to work with and switch between.
13
7
  * Requests allow power users to get the most out of the features of each individual cloud.
data/fog.gemspec CHANGED
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
7
7
  ## If your rubyforge_project name is different, then edit it and comment out
8
8
  ## the sub! line in the Rakefile
9
9
  s.name = 'fog'
10
- s.version = '0.3.8'
11
- s.date = '2010-10-14'
10
+ s.version = '0.3.9'
11
+ s.date = '2010-10-18'
12
12
  s.rubyforge_project = 'fog'
13
13
 
14
14
  ## Make sure your summary is short. The description may be as long
@@ -650,9 +650,11 @@ Gem::Specification.new do |s|
650
650
  spec/vcloud/terremark/ecloud/requests/get_nodes_spec.rb
651
651
  spec/vcloud/terremark/ecloud/requests/get_public_ip_spec.rb
652
652
  spec/vcloud/terremark/ecloud/requests/get_public_ips_spec.rb
653
+ spec/vcloud/terremark/ecloud/requests/get_vapp_spec.rb
653
654
  spec/vcloud/terremark/ecloud/requests/get_vdc_spec.rb
654
655
  spec/vcloud/terremark/ecloud/requests/instantiate_vapp_template_spec.rb
655
656
  spec/vcloud/terremark/ecloud/requests/login_spec.rb
657
+ spec/vcloud/terremark/ecloud/requests/power_on_spec.rb
656
658
  spec/vcloud/vcloud_spec.rb
657
659
  tests/aws/helper.rb
658
660
  tests/aws/models/storage/directory_tests.rb
data/lib/fog.rb CHANGED
@@ -24,7 +24,7 @@ module Fog
24
24
  @mocking = false
25
25
 
26
26
  unless const_defined?(:VERSION)
27
- VERSION = '0.3.8'
27
+ VERSION = '0.3.9'
28
28
  end
29
29
 
30
30
  module Mock
data/lib/fog/aws.rb CHANGED
@@ -170,7 +170,7 @@ module Fog
170
170
  end
171
171
 
172
172
  private
173
-
173
+
174
174
  def self.random_selection(characters, length)
175
175
  selection = ''
176
176
  length.times do
@@ -194,7 +194,7 @@ module Fog
194
194
 
195
195
  def self.hex(length)
196
196
  max = ('f' * length).to_i(16)
197
- rand(max).to_s(16)
197
+ rand(max).to_s(16).rjust(length, '0')
198
198
  end
199
199
 
200
200
  def self.base64(length)
@@ -15,11 +15,16 @@ module Fog
15
15
  end
16
16
 
17
17
  def get(key, options = {})
18
- data = connection.get_container(key, options).body
18
+ data = connection.get_container(key, options)
19
19
  directory = new(:key => key)
20
+ for key, value in data.headers
21
+ if ['X-Container-Bytes-Used', 'X-Container-Object-Count'].include?(key)
22
+ directory.merge_attributes(key => value)
23
+ end
24
+ end
20
25
  directory.files.merge_attributes(options)
21
26
  directory.files.instance_variable_set(:@loaded, true)
22
- data.each do |file|
27
+ data.body.each do |file|
23
28
  directory.files << directory.files.new(file)
24
29
  end
25
30
  directory
@@ -12,8 +12,8 @@ module Fog
12
12
 
13
13
  identity :key, :aliases => 'name'
14
14
 
15
- attribute :bytes
16
- attribute :count
15
+ attribute :bytes, :aliases => 'X-Container-Bytes-Used'
16
+ attribute :count, :aliases => 'X-Container-Object-Count'
17
17
 
18
18
  def destroy
19
19
  requires :key
@@ -6,13 +6,13 @@ module Fog
6
6
 
7
7
  class File < Fog::Model
8
8
 
9
- identity :key, :aliases => 'Key'
9
+ identity :key, :aliases => 'name'
10
10
 
11
11
  attr_writer :body
12
- attribute :content_length, :aliases => 'Content-Length'
13
- attribute :content_type, :aliases => 'Content-Type'
14
- attribute :etag, :aliases => 'Etag'
15
- attribute :last_modified, :aliases => 'Last-Modified'
12
+ attribute :content_length, :aliases => ['bytes', 'Content-Length']
13
+ attribute :content_type, :aliases => ['content_type', 'Content-Type']
14
+ attribute :etag, :aliases => ['hash', 'Etag']
15
+ attribute :last_modified, :aliases => ['last_modified', 'Last-Modified']
16
16
 
17
17
  def body
18
18
  @body ||= if last_modified
data/lib/fog/vcloud.rb CHANGED
@@ -296,7 +296,7 @@ module Fog
296
296
  :catalog => {
297
297
  :name => "The catalog",
298
298
  :items => [
299
- { :id => "0", :name => "Item 0" },
299
+ { :id => "0", :name => "Item 0", :disks => [{ :size => 25 }] },
300
300
  { :id => "1", :name => "Item 1" },
301
301
  { :id => "2", :name => "Item 2" },
302
302
  ]
@@ -328,13 +328,19 @@ module Fog
328
328
  },
329
329
  ],
330
330
  :vms => [
331
- { :href => "#{base_url}/vap/41",
332
- :name => "Broom 1"
331
+ { :href => "#{base_url}/vapp/41",
332
+ :name => "Broom 1",
333
+ :ip => "1.2.3.3",
334
+ :memory => 1024,
335
+ :cpus => 1,
336
+ :disks => [{ :size => 25 }],
337
+ :status => 2
333
338
  },
334
- { :href => "#{base_url}/vap/42",
335
- :name => "Broom 2"
339
+ { :href => "#{base_url}/vapp/42",
340
+ :name => "Broom 2",
341
+ :ip => "1.2.3.4"
336
342
  },
337
- { :href => "#{base_url}/vap/43",
343
+ { :href => "#{base_url}/vapp/43",
338
344
  :name => "Email!"
339
345
  }
340
346
  ]
@@ -360,7 +366,7 @@ module Fog
360
366
  }
361
367
  ],
362
368
  :vms => [
363
- { :href => "#{base_url}/vap/44",
369
+ { :href => "#{base_url}/vapp/44",
364
370
  :name => "Master Blaster"
365
371
  }
366
372
  ]
@@ -387,6 +393,26 @@ module Fog
387
393
  end
388
394
  end
389
395
 
396
+ def vapp_and_vdc_from_vapp_uri(uri)
397
+ if vdc = mock_data[:organizations].map {|o| o[:vdcs] }.flatten.detect {|vd| vd[:vms].detect {|vm| uri =~ %r{^#{Regexp.escape(vm[:href])}($|/)} } }
398
+ vapp = vdc[:vms].detect {|v| uri =~ %r{^#{Regexp.escape(v[:href])}($|/)} }
399
+ if vapp
400
+ [vapp, vdc]
401
+ end
402
+ end
403
+ end
404
+
405
+ def catalog_item_and_vdc_from_catalog_item_uri(uri)
406
+ catalog_item_id, vdc_id = uri.split("/").last.split("-")
407
+ vdc = vdc_from_id(vdc_id)
408
+ if vdc
409
+ catalog_item = vdc[:catalog][:items].detect {|ci| ci[:id] == catalog_item_id }
410
+ if catalog_item
411
+ [catalog_item, vdc]
412
+ end
413
+ end
414
+ end
415
+
390
416
  def initialize(options = {})
391
417
  @versions_uri = URI.parse('https://vcloud.fakey.com/api/versions')
392
418
  end
@@ -15,29 +15,25 @@ module Fog
15
15
  #
16
16
 
17
17
  def get_catalog_item(catalog_item_uri)
18
- catalog_item_id, vdc_id = catalog_item_uri.split("/").last.split("-")
19
- xml = nil
20
-
21
- if vdc = vdc_from_id(vdc_id)
22
- if catalog_item = vdc[:catalog][:items].detect {|ci| ci[:id] == catalog_item_id }
23
- builder = Builder::XmlMarkup.new
24
-
25
- xml = builder.CatalogItem(xmlns.merge(:href => catalog_item_uri, :name => catalog_item[:name])) do
26
- builder.Link(
27
- :rel => "down",
28
- :href => Fog::Vcloud::Terremark::Ecloud::Mock.catalog_item_customization_href(:id => catalog_item_id),
29
- :type => "application/vnd.tmrk.ecloud.catalogItemCustomizationParameters+xml",
30
- :name => "Customization Options"
31
- )
32
-
33
- builder.Entity(
34
- :href => Fog::Vcloud::Terremark::Ecloud::Mock.vapp_template_href(:id => catalog_item_id),
35
- :type => "application/vnd.vmware.vcloud.vAppTemplate+xml",
36
- :name => catalog_item[:name]
37
- )
38
-
39
- builder.Property(0, :key => "LicensingCost")
40
- end
18
+ if catalog_item_and_vdc = catalog_item_and_vdc_from_catalog_item_uri(catalog_item_uri)
19
+ catalog_item, vdc = catalog_item_and_vdc
20
+ builder = Builder::XmlMarkup.new
21
+
22
+ xml = builder.CatalogItem(xmlns.merge(:href => catalog_item_uri, :name => catalog_item[:name])) do
23
+ builder.Link(
24
+ :rel => "down",
25
+ :href => Fog::Vcloud::Terremark::Ecloud::Mock.catalog_item_customization_href(:id => catalog_item[:id]),
26
+ :type => "application/vnd.tmrk.ecloud.catalogItemCustomizationParameters+xml",
27
+ :name => "Customization Options"
28
+ )
29
+
30
+ builder.Entity(
31
+ :href => Fog::Vcloud::Terremark::Ecloud::Mock.vapp_template_href(:id => catalog_item[:id]),
32
+ :type => "application/vnd.vmware.vcloud.vAppTemplate+xml",
33
+ :name => catalog_item[:name]
34
+ )
35
+
36
+ builder.Property(0, :key => "LicensingCost")
41
37
  end
42
38
  end
43
39
 
@@ -9,7 +9,74 @@ module Fog
9
9
 
10
10
  class Mock
11
11
  def get_vapp(vapp_uri)
12
- Fog::Mock.not_implemented
12
+ xml = nil
13
+
14
+ if vapp_and_vdc = vapp_and_vdc_from_vapp_uri(vapp_uri)
15
+ xml = generate_get_vapp_response(*vapp_and_vdc)
16
+ end
17
+
18
+ if xml
19
+ mock_it 200, xml, "Content-Type" => "application/vnd.vmware.vcloud.vApp+xml"
20
+ else
21
+ mock_error 200, "401 Unauthorized"
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def generate_get_vapp_response(vapp, vdc)
28
+ builder = Builder::XmlMarkup.new
29
+ builder.VApp(xmlns.merge(
30
+ :href => vapp[:href],
31
+ :type => "application/vnd.vmware.vcloud.vApp+xml",
32
+ :name => vapp[:name],
33
+ :status => vapp[:status] || 4
34
+ )) do
35
+ builder.Link(:rel => "up", :href => vdc[:href], :type => "application/vnd.vmware.vcloud.vdc+xml")
36
+
37
+ builder.NetworkConnectionSection(:xmlns => "http://schemas.dmtf.org/ovf/envelope/1") do
38
+ builder.NetworkConnection(:Network => "Internal", :xmlns => "http://www.vmware.com/vcloud/v0.8") do
39
+ builder.IpAddress vapp[:ip]
40
+ end
41
+ end
42
+
43
+ builder.OperatingSystemSection(
44
+ "d2p1:id" => 4,
45
+ :xmlns => "http://schemas.dmtf.org/ovf/envelope/1",
46
+ "xmlns:d2p1" => "http://schemas.dmtf.org/ovf/envelope/1") do
47
+ builder.Info "The kind of installed guest operating system"
48
+ builder.Description "Red Hat Enterprise Linux 5 (64-bit)"
49
+ end
50
+
51
+ builder.VirtualHardwareSection(:xmlns => "http://schemas.dmtf.org/ovf/envelope/1") do
52
+ builder.Info
53
+ builder.System
54
+ builder.Item do
55
+ # CPUs
56
+ builder.VirtualQuantity vapp[:cpus] || 1
57
+ builder.ResourceType 3
58
+ end
59
+ builder.Item do
60
+ # memory
61
+ builder.VirtualQuantity vapp[:memory] || 1024
62
+ builder.ResourceType 4
63
+ end
64
+ builder.Item do
65
+ # SCSI controller
66
+ builder.Address 0
67
+ builder.ResourceType 6
68
+ builder.InstanceId 3
69
+ end
70
+ builder.Item do
71
+ # Hard Disk 1
72
+ builder.Parent 3
73
+ builder.VirtualQuantity vapp[:disks].first[:size] * 1024 # MB
74
+ builder.HostResource vapp[:disks].first[:size] * 1024 # MB
75
+ builder.ResourceType 17
76
+ builder.AddressOnParent 0
77
+ end
78
+ end
79
+ end
13
80
  end
14
81
  end
15
82
  end
@@ -103,12 +103,13 @@ module Fog
103
103
 
104
104
  def instantiate_vapp_template(catalog_item_uri, options = {})
105
105
  validate_instantiate_vapp_template_options(catalog_item_uri, options)
106
+ catalog_item, _ = catalog_item_and_vdc_from_catalog_item_uri(catalog_item_uri)
106
107
 
107
108
  xml = nil
108
109
  if vdc = vdc_from_uri(options[:vdc_uri])
109
- id = rand(1000)
110
- vapp_uri = Fog::Vcloud::Terremark::Ecloud::Mock.vapp_href(:id => id)
111
- options.update(:id => id.to_s, :href => vapp_uri)
110
+ vapp_id = rand(1000)
111
+ vapp_uri = Fog::Vcloud::Terremark::Ecloud::Mock.vapp_href(:id => vapp_id)
112
+ options.update(:id => vapp_id.to_s, :href => vapp_uri, :disks => catalog_item[:disks], :ip => random_ip_in_network(options[:network_uri]), :status => 2)
112
113
  vdc[:vms] << options
113
114
 
114
115
  xml = generate_instantiate_vapp_template_response(vdc[:href], options[:name], vapp_uri)
@@ -123,6 +124,13 @@ module Fog
123
124
 
124
125
  private
125
126
 
127
+ def random_ip_in_network(network_uri)
128
+ network = mock_data[:organizations].map { |org| org[:vdcs].map { |vdc| vdc[:networks] } }.flatten.detect { |network| network[:href] == network_uri }
129
+ subnet_ipaddr = IPAddr.new(network[:subnet])
130
+ ips = subnet_ipaddr.to_range.to_a[3..-2]
131
+ ips[rand(ips.size)].to_s
132
+ end
133
+
126
134
  def generate_instantiate_vapp_template_response(vdc_uri, vapp_name, vapp_uri)
127
135
  builder = Builder::XmlMarkup.new
128
136
  builder.VApp(xmlns.merge(
@@ -8,8 +8,17 @@ module Fog
8
8
  end
9
9
 
10
10
  class Mock
11
- def power_on(on_uri)
12
- Fog::Mock.not_implemented
11
+ def power_on(vapp_uri)
12
+ vapp, vdc = vapp_and_vdc_from_vapp_uri(vapp_uri)
13
+
14
+ if vapp
15
+ vapp[:status] = 4
16
+
17
+ builder = Builder::XmlMarkup.new
18
+ mock_it 200, builder.Task(xmlns)
19
+ else
20
+ mock_error 200, "401 Unauthorized"
21
+ end
13
22
  end
14
23
  end
15
24
  end
@@ -0,0 +1,109 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', '..', 'spec_helper')
2
+
3
+ if Fog.mocking?
4
+ describe "Fog::Vcloud, initialized w/ the TMRK Ecloud module", :type => :mock_tmrk_ecloud_request do
5
+ subject { @vcloud }
6
+
7
+ it { should respond_to :get_vapp }
8
+
9
+ describe "#get_vapp" do
10
+ context "with a valid vapp_uri" do
11
+ before { @vapp = @vcloud.get_vapp(vm_data[:href]) }
12
+ subject { @vapp }
13
+ let(:vapp_id) { @vapp.body[:href].split("/").last }
14
+ let(:vm_data) { @vcloud.mock_data[:organizations].first[:vdcs].first[:vms].first }
15
+ let(:vdc) { @vcloud.vdcs.first }
16
+
17
+ it_should_behave_like "all responses"
18
+ it { should have_headers_denoting_a_content_type_of "application/vnd.vmware.vcloud.vApp+xml" }
19
+
20
+ describe "#body" do
21
+ subject { @vapp.body }
22
+
23
+ specify { subject.keys.sort_by(&:to_s).should == [:Link, :NetworkConnectionSection, :OperatingSystemSection, :VirtualHardwareSection, :href, :name, :status, :type, :xmlns, :xmlns_xsd, :xmlns_xsi] }
24
+
25
+ it_should_behave_like "it has the standard vcloud v0.8 xmlns attributes" # 3 keys
26
+
27
+ its(:href) { should == vm_data[:href] }
28
+ its(:name) { should == vm_data[:name] }
29
+ its(:status) { should == vm_data[:status].to_s }
30
+ its(:size) { (vm_data[:disks].inject(0) {|s, d| s += d[:size] } * 1024).to_s }
31
+
32
+ describe "Link" do
33
+ subject { @vapp.body[:Link] }
34
+
35
+ its(:rel) { should == "up" }
36
+ its(:type) { should == "application/vnd.vmware.vcloud.vdc+xml" }
37
+ its(:href) { should == vdc.href }
38
+ end
39
+
40
+ describe "NetworkConnectionSection" do
41
+ subject { @vapp.body[:NetworkConnectionSection] }
42
+
43
+ it { should include :NetworkConnection }
44
+
45
+ describe "NetworkConnection" do
46
+ subject { @vapp.body[:NetworkConnectionSection][:NetworkConnection] }
47
+
48
+ its(:IpAddress) { should == vm_data[:ip] }
49
+ end
50
+ end
51
+
52
+ describe "OperatingSystemSection" do
53
+ subject { @vapp.body[:OperatingSystemSection] }
54
+
55
+ its(:Info) { should == "The kind of installed guest operating system" }
56
+ its(:Description) { should == "Red Hat Enterprise Linux 5 (64-bit)" }
57
+ end
58
+
59
+ describe "VirtualHardwareSection" do
60
+ subject { @vapp.body[:VirtualHardwareSection] }
61
+
62
+ specify { subject.keys.sort_by(&:to_s).should == [:Info, :Item, :System, :xmlns] }
63
+
64
+ describe "Item" do
65
+ subject { @vapp.body[:VirtualHardwareSection][:Item] }
66
+
67
+ it { should have(4).items }
68
+
69
+ specify { subject.map {|i| i[:ResourceType] }.sort.should == %w(3 4 6 17).sort }
70
+
71
+ describe "CPU" do
72
+ subject { @vapp.body[:VirtualHardwareSection][:Item].detect {|i| i[:ResourceType] == "3" } }
73
+
74
+ its(:VirtualQuantity) { should == vm_data[:cpus].to_s }
75
+ end
76
+
77
+ describe "memory" do
78
+ subject { @vapp.body[:VirtualHardwareSection][:Item].detect {|i| i[:ResourceType] == "4" } }
79
+
80
+ its(:VirtualQuantity) { should == vm_data[:memory].to_s }
81
+ end
82
+
83
+ describe "SCSI controller" do
84
+ subject { @vapp.body[:VirtualHardwareSection][:Item].detect {|i| i[:ResourceType] == "6" } }
85
+
86
+ its(:Address) { should == "0" }
87
+ end
88
+
89
+ describe "Hard Disk 1" do
90
+ subject { @vapp.body[:VirtualHardwareSection][:Item].detect {|i| i[:ResourceType] == "17" } }
91
+
92
+ its(:AddressOnParent) { should == "0" }
93
+ its(:VirtualQuantity) { should == (vm_data[:disks].first[:size] * 1024).to_s }
94
+ its(:HostResource) { should == (vm_data[:disks].first[:size] * 1024).to_s }
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ context "with a vapp uri that doesn't exist" do
102
+ subject { lambda { @vcloud.get_vapp(URI.parse('https://www.fakey.com/api/v0.8/vApp/99999')) } }
103
+
104
+ it_should_behave_like "a request for a resource that doesn't exist"
105
+ end
106
+ end
107
+ end
108
+ else
109
+ end
@@ -9,6 +9,7 @@ if Fog.mocking?
9
9
  describe "#instantiate_vapp_template" do
10
10
  let(:vdc) { @vcloud.vdcs.first }
11
11
  let(:catalog_item) { vdc.catalog.first }
12
+ let(:catalog_item_data) { @vcloud.catalog_item_and_vdc_from_catalog_item_uri(catalog_item.href).first }
12
13
  let(:new_vapp_data) do
13
14
  {
14
15
  :name => "foobar",
@@ -20,6 +21,7 @@ if Fog.mocking?
20
21
  :vdc_uri => vdc.href
21
22
  }
22
23
  end
24
+ let(:added_mock_data) { @vcloud.vdc_from_uri(vdc.href)[:vms].last }
23
25
 
24
26
  context "with a valid data" do
25
27
  let(:template_instantiation) { @vcloud.instantiate_vapp_template(catalog_item.href, new_vapp_data) }
@@ -33,14 +35,25 @@ if Fog.mocking?
33
35
  end
34
36
 
35
37
  describe "added mock data" do
36
- subject { template_instantiation; @vcloud.vdc_from_uri(vdc.href)[:vms].last }
38
+ subject { template_instantiation; added_mock_data }
37
39
 
38
40
  it { should include :id }
39
41
  it { should include :href }
42
+ it { should include :disks }
43
+ it { should include :ip }
44
+ its(:status) { should == 2 }
45
+
46
+ its(:disks) { should == catalog_item_data[:disks] }
40
47
 
41
48
  specify { subject.values_at(*new_vapp_data.keys).should == new_vapp_data.values }
42
49
  end
43
50
 
51
+ describe "server based on added mock data" do
52
+ subject { template_instantiation; vdc.servers.reload.detect {|s| s.href == added_mock_data[:href] }.reload }
53
+
54
+ its(:name) { should == new_vapp_data[:name] }
55
+ end
56
+
44
57
  describe "#body" do
45
58
  subject { template_instantiation.body }
46
59
 
@@ -0,0 +1,35 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', '..', 'spec_helper')
2
+
3
+ if Fog.mocking?
4
+ describe Fog::Vcloud, :type => :mock_tmrk_ecloud_request do
5
+ subject { @vcloud }
6
+
7
+ it { should respond_to :power_on }
8
+
9
+ describe :power_on, :type => :vcloud_request do
10
+ context "with a valid vapp uri" do
11
+ let(:vm_data) { @vcloud.mock_data[:organizations].first[:vdcs].first[:vms].first }
12
+ before { vm_data[:status] = 2; @power_on = @vcloud.power_on(@vcloud.vdcs.first.servers.first.href + "/power/action/powerOn") }
13
+ subject { @power_on }
14
+
15
+ it_should_behave_like "all responses"
16
+ #it { should have_headers_denoting_a_content_type_of "application/vnd.vmware.vcloud.network+xml" }
17
+
18
+ specify { vm_data[:status].should == 4 }
19
+
20
+ describe :body do
21
+ subject { @power_on.body }
22
+
23
+ it_should_behave_like "it has the standard vcloud v0.8 xmlns attributes" # 3 keys
24
+ end
25
+ end
26
+
27
+ context "with a vapp uri that doesn't exist" do
28
+ subject { lambda { @vcloud.get_network(URI.parse('https://www.fakey.com/api/v0.8/vapp/9999')) } }
29
+ it_should_behave_like "a request for a resource that doesn't exist"
30
+ end
31
+ end
32
+ end
33
+ else
34
+ end
35
+
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 8
9
- version: 0.3.8
8
+ - 9
9
+ version: 0.3.9
10
10
  platform: ruby
11
11
  authors:
12
12
  - geemus (Wesley Beary)
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-14 00:00:00 -07:00
17
+ date: 2010-10-18 00:00:00 -07:00
18
18
  default_executable: fog
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -757,9 +757,11 @@ files:
757
757
  - spec/vcloud/terremark/ecloud/requests/get_nodes_spec.rb
758
758
  - spec/vcloud/terremark/ecloud/requests/get_public_ip_spec.rb
759
759
  - spec/vcloud/terremark/ecloud/requests/get_public_ips_spec.rb
760
+ - spec/vcloud/terremark/ecloud/requests/get_vapp_spec.rb
760
761
  - spec/vcloud/terremark/ecloud/requests/get_vdc_spec.rb
761
762
  - spec/vcloud/terremark/ecloud/requests/instantiate_vapp_template_spec.rb
762
763
  - spec/vcloud/terremark/ecloud/requests/login_spec.rb
764
+ - spec/vcloud/terremark/ecloud/requests/power_on_spec.rb
763
765
  - spec/vcloud/vcloud_spec.rb
764
766
  - tests/aws/helper.rb
765
767
  - tests/aws/models/storage/directory_tests.rb