fog 0.0.61 → 0.0.62

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ require "#{current_directory}/lib/fog"
7
7
  begin
8
8
  require 'jeweler'
9
9
  Jeweler::Tasks.new do |gem|
10
- gem.add_dependency('excon', '>=0.0.20')
10
+ gem.add_dependency('excon', '>=0.0.21')
11
11
  gem.add_dependency('formatador', '>=0.0.10')
12
12
  gem.add_dependency('json')
13
13
  gem.add_dependency('mime-types')
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 0
4
- :patch: 61
4
+ :patch: 62
5
5
  :build:
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fog}
8
- s.version = "0.0.61"
8
+ s.version = "0.0.62"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["geemus (Wesley Beary)"]
12
- s.date = %q{2010-03-28}
12
+ s.date = %q{2010-03-30}
13
13
  s.default_executable = %q{fog}
14
14
  s.description = %q{brings clouds to you}
15
15
  s.email = %q{geemus@gmail.com}
@@ -213,14 +213,28 @@ Gem::Specification.new do |s|
213
213
  "lib/fog/terremark/parsers/get_catalog_item.rb",
214
214
  "lib/fog/terremark/parsers/get_organization.rb",
215
215
  "lib/fog/terremark/parsers/get_organizations.rb",
216
+ "lib/fog/terremark/parsers/get_tasks_list.rb",
216
217
  "lib/fog/terremark/parsers/get_vapp_template.rb",
217
218
  "lib/fog/terremark/parsers/get_vdc.rb",
219
+ "lib/fog/terremark/parsers/instantiate_vapp_template.rb",
220
+ "lib/fog/terremark/parsers/task.rb",
221
+ "lib/fog/terremark/parsers/vapp.rb",
222
+ "lib/fog/terremark/requests/delete_vapp.rb",
223
+ "lib/fog/terremark/requests/deploy_vapp.rb",
218
224
  "lib/fog/terremark/requests/get_catalog.rb",
219
225
  "lib/fog/terremark/requests/get_catalog_item.rb",
220
226
  "lib/fog/terremark/requests/get_organization.rb",
221
227
  "lib/fog/terremark/requests/get_organizations.rb",
228
+ "lib/fog/terremark/requests/get_task.rb",
229
+ "lib/fog/terremark/requests/get_tasks_list.rb",
230
+ "lib/fog/terremark/requests/get_vapp.rb",
222
231
  "lib/fog/terremark/requests/get_vapp_template.rb",
223
232
  "lib/fog/terremark/requests/get_vdc.rb",
233
+ "lib/fog/terremark/requests/instantiate_vapp_template.rb",
234
+ "lib/fog/terremark/requests/power_off.rb",
235
+ "lib/fog/terremark/requests/power_on.rb",
236
+ "lib/fog/terremark/requests/reset.rb",
237
+ "lib/fog/terremark/requests/shutdown.rb",
224
238
  "spec/aws/models/ec2/address_spec.rb",
225
239
  "spec/aws/models/ec2/addresses_spec.rb",
226
240
  "spec/aws/models/ec2/flavors_spec.rb",
@@ -460,14 +474,14 @@ Gem::Specification.new do |s|
460
474
  s.specification_version = 3
461
475
 
462
476
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
463
- s.add_runtime_dependency(%q<excon>, [">= 0.0.20"])
477
+ s.add_runtime_dependency(%q<excon>, [">= 0.0.21"])
464
478
  s.add_runtime_dependency(%q<formatador>, [">= 0.0.10"])
465
479
  s.add_runtime_dependency(%q<json>, [">= 0"])
466
480
  s.add_runtime_dependency(%q<mime-types>, [">= 0"])
467
481
  s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
468
482
  s.add_runtime_dependency(%q<ruby-hmac>, [">= 0"])
469
483
  else
470
- s.add_dependency(%q<excon>, [">= 0.0.20"])
484
+ s.add_dependency(%q<excon>, [">= 0.0.21"])
471
485
  s.add_dependency(%q<formatador>, [">= 0.0.10"])
472
486
  s.add_dependency(%q<json>, [">= 0"])
473
487
  s.add_dependency(%q<mime-types>, [">= 0"])
@@ -475,7 +489,7 @@ Gem::Specification.new do |s|
475
489
  s.add_dependency(%q<ruby-hmac>, [">= 0"])
476
490
  end
477
491
  else
478
- s.add_dependency(%q<excon>, [">= 0.0.20"])
492
+ s.add_dependency(%q<excon>, [">= 0.0.21"])
479
493
  s.add_dependency(%q<formatador>, [">= 0.0.10"])
480
494
  s.add_dependency(%q<json>, [">= 0"])
481
495
  s.add_dependency(%q<mime-types>, [">= 0"])
@@ -39,7 +39,7 @@ module Fog
39
39
  'max-keys' => @max_keys,
40
40
  'prefix' => @prefix
41
41
  }.merge!(options)
42
- options = options.reject {|key,value| value.nil? || value.empty?}
42
+ options = options.reject {|key,value| value.nil? || value.to_s.empty?}
43
43
  data = connection.get_object(directory.name, key, options, &block)
44
44
  file_data = {
45
45
  :body => data.body,
@@ -22,7 +22,6 @@ module Fog
22
22
  # * 'status'<~String> - Current status of the slice
23
23
  def reboot_slice(slice_id, type = 'SOFT')
24
24
  request(
25
- :body => '', # Gives a 411 Length Required without this
26
25
  :expects => 200,
27
26
  :method => 'PUT',
28
27
  :parser => Fog::Parsers::Slicehost::GetSlice.new,
@@ -1,9 +1,19 @@
1
+ require 'fog/terremark/requests/delete_vapp'
2
+ require 'fog/terremark/requests/deploy_vapp'
1
3
  require 'fog/terremark/requests/get_catalog'
2
4
  require 'fog/terremark/requests/get_catalog_item'
3
5
  require 'fog/terremark/requests/get_organization'
4
6
  require 'fog/terremark/requests/get_organizations'
7
+ require 'fog/terremark/requests/get_task'
8
+ require 'fog/terremark/requests/get_tasks_list'
9
+ require 'fog/terremark/requests/get_vapp'
5
10
  require 'fog/terremark/requests/get_vapp_template'
6
11
  require 'fog/terremark/requests/get_vdc'
12
+ require 'fog/terremark/requests/instantiate_vapp_template'
13
+ require 'fog/terremark/requests/reset'
14
+ require 'fog/terremark/requests/power_off'
15
+ require 'fog/terremark/requests/power_on'
16
+ require 'fog/terremark/requests/shutdown'
7
17
 
8
18
  module Fog
9
19
  module Terremark
@@ -21,7 +21,8 @@ module Fog
21
21
  catalog = {}
22
22
  until attributes.empty?
23
23
  if attributes.first.is_a?(Array)
24
- catalog[attributes.first.first] = attributes.shift.last
24
+ attribute = attributes.shift
25
+ catalog[attribute.first] = attribute.last
25
26
  else
26
27
  catalog[attributes.shift] = attributes.shift
27
28
  end
@@ -5,7 +5,6 @@ module Fog
5
5
  class GetCatalogItem < Fog::Parsers::Base
6
6
 
7
7
  def reset
8
- @property_key
9
8
  @response = { 'Entity' => {}, 'Properties' => {} }
10
9
  end
11
10
 
@@ -20,7 +19,8 @@ module Fog
20
19
  catalog_item = {}
21
20
  until attributes.empty?
22
21
  if attributes.first.is_a?(Array)
23
- catalog_item[attributes.first.first] = attributes.shift.last
22
+ attribute = attributes.shift
23
+ catalog_item[attribute.first] = attribute.last
24
24
  else
25
25
  catalog_item[attributes.shift] = attributes.shift
26
26
  end
@@ -21,7 +21,8 @@ module Fog
21
21
  org = {}
22
22
  until attributes.empty?
23
23
  if attributes.first.is_a?(Array)
24
- org[attributes.first.first] = attributes.shift.last
24
+ attribute = attributes.shift
25
+ org[attribute.first] = attribute.last
25
26
  else
26
27
  org[attributes.shift] = attributes.shift
27
28
  end
@@ -0,0 +1,50 @@
1
+ module Fog
2
+ module Parsers
3
+ module Terremark
4
+
5
+ class GetTasksList < Fog::Parsers::Base
6
+
7
+ def reset
8
+ @response = { 'Tasks' => [] }
9
+ @task = {}
10
+ end
11
+
12
+ def start_element(name, attributes)
13
+ @value = ''
14
+ case name
15
+ when 'Owner', 'Result'
16
+ data = {}
17
+ until attributes.empty?
18
+ data[attributes.shift] = attributes.shift
19
+ end
20
+ @task[name] = data
21
+ when 'Task'
22
+ until attributes.empty?
23
+ @task[attributes.shift] = attributes.shift
24
+ end
25
+ when 'TasksList'
26
+ tasks_list = {}
27
+ until attributes.empty?
28
+ if attributes.first.is_a?(Array)
29
+ attribute = attributes.shift
30
+ tasks_list[attribute.first] = attribute.last
31
+ else
32
+ tasks_list[attributes.shift] = attributes.shift
33
+ end
34
+ end
35
+ @response['href'] = tasks_list['href']
36
+ end
37
+ end
38
+
39
+ def end_element(name)
40
+ if name == 'Task'
41
+ @response['Tasks'] << @task
42
+ @task = {}
43
+ end
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+ end
50
+ end
@@ -5,7 +5,6 @@ module Fog
5
5
  class GetVappTemplate < Fog::Parsers::Base
6
6
 
7
7
  def reset
8
- @property_key
9
8
  @response = { 'Links' => [] }
10
9
  end
11
10
 
@@ -22,7 +21,8 @@ module Fog
22
21
  vapp_template = {}
23
22
  until attributes.empty?
24
23
  if attributes.first.is_a?(Array)
25
- vapp_template[attributes.first.first] = attributes.shift.last
24
+ attribute = attributes.shift
25
+ vapp_template[attribute.first] = attribute.last
26
26
  else
27
27
  vapp_template[attributes.shift] = attributes.shift
28
28
  end
@@ -20,7 +20,7 @@ module Fog
20
20
  'Memory' => {}
21
21
  },
22
22
  'StorageCapacity' => {},
23
- 'ResourceEntities' => {}
23
+ 'ResourceEntities' => []
24
24
  }
25
25
  end
26
26
 
@@ -52,14 +52,15 @@ module Fog
52
52
  until attributes.empty?
53
53
  resource_entity[attributes.shift] = attributes.shift
54
54
  end
55
- @response['ResourceEntity'] << resource_entity
55
+ @response['ResourceEntities'] << resource_entity
56
56
  when 'StorageCapacity'
57
57
  @in_storage_capacity = true
58
58
  when 'Vdc'
59
59
  vdc = {}
60
60
  until attributes.empty?
61
61
  if attributes.first.is_a?(Array)
62
- vdc[attributes.first.first] = attributes.shift.last
62
+ attribute = attributes.shift
63
+ vdc[attribute.first] = attribute.last
63
64
  else
64
65
  vdc[attributes.shift] = attributes.shift
65
66
  end
@@ -0,0 +1,39 @@
1
+ module Fog
2
+ module Parsers
3
+ module Terremark
4
+
5
+ class InstantiateVappTemplate < Fog::Parsers::Base
6
+
7
+ def reset
8
+ @property_key
9
+ @response = { 'Links' => [] }
10
+ end
11
+
12
+ def start_element(name, attributes)
13
+ @value = ''
14
+ case name
15
+ when 'Link'
16
+ link = {}
17
+ until attributes.empty?
18
+ link[attributes.shift] = attributes.shift
19
+ end
20
+ @response['Links'] << link
21
+ when 'VApp'
22
+ vapp_template = {}
23
+ until attributes.empty?
24
+ if attributes.first.is_a?(Array)
25
+ attribute = attributes.shift
26
+ vapp_template[attribute.first] = attribute.last
27
+ else
28
+ vapp_template[attributes.shift] = attributes.shift
29
+ end
30
+ end
31
+ @response.merge!(vapp_template.reject {|key, value| !['href', 'name', 'size', 'status', 'type'].include?(key)})
32
+ end
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module Parsers
3
+ module Terremark
4
+
5
+ class Task < Fog::Parsers::Base
6
+
7
+ def reset
8
+ @response = {}
9
+ end
10
+
11
+ def start_element(name, attributes)
12
+ @value = ''
13
+ case name
14
+ when 'Owner', 'Result'
15
+ data = {}
16
+ until attributes.empty?
17
+ data[attributes.shift] = attributes.shift
18
+ end
19
+ @response[name] = data
20
+ when 'Task'
21
+ task = {}
22
+ until attributes.empty?
23
+ if attributes.first.is_a?(Array)
24
+ attribute = attributes.shift
25
+ task[attribute.first] = attribute.last
26
+ else
27
+ task[attributes.shift] = attributes.shift
28
+ end
29
+ end
30
+ @response.merge!(task.reject {|key,value| !['endTime', 'href', 'startTime', 'status', 'type'].include?(key)})
31
+ end
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,45 @@
1
+ module Fog
2
+ module Parsers
3
+ module Terremark
4
+
5
+ class Vapp < Fog::Parsers::Base
6
+
7
+ def reset
8
+ @response = { 'Links' => [] }
9
+ end
10
+
11
+ def start_element(name, attributes)
12
+ @value = ''
13
+ case name
14
+ when 'Link'
15
+ link = {}
16
+ until attributes.empty?
17
+ link[attributes.shift] = attributes.shift
18
+ end
19
+ @response['Links'] << link
20
+ when 'Vapp'
21
+ vapp = {}
22
+ until attributes.empty?
23
+ if attributes.first.is_a?(Array)
24
+ attribute = attributes.shift
25
+ vapp[attribute.first] = attribute.last
26
+ else
27
+ vapp[attributes.shift] = attributes.shift
28
+ end
29
+ end
30
+ @response.merge!(task.reject {|key,value| !['href', 'name', 'size', 'status', 'type'].include?(key)})
31
+ end
32
+ end
33
+
34
+ def end_element(name)
35
+ case name
36
+ when 'IpAddress'
37
+ @response['IpAddress'] = @value
38
+ end
39
+ end
40
+
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,40 @@
1
+ module Fog
2
+ module Terremark
3
+ class Real
4
+
5
+ # Destroy a vapp
6
+ #
7
+ # ==== Parameters
8
+ # * vapp_id<~Integer> - Id of vapp to destroy
9
+ #
10
+ # ==== Returns
11
+ # * response<~Excon::Response>:
12
+ # * body<~Hash>:
13
+
14
+ # FIXME
15
+
16
+ # * 'CatalogItems'<~Array>
17
+ # * 'href'<~String> - linke to item
18
+ # * 'name'<~String> - name of item
19
+ # * 'type'<~String> - type of item
20
+ # * 'description'<~String> - Description of catalog
21
+ # * 'name'<~String> - Name of catalog
22
+ def delete_vapp(vapp_id)
23
+ request(
24
+ :expects => 202,
25
+ :method => 'DELETE',
26
+ :path => "vApp/#{vapp_id}"
27
+ )
28
+ end
29
+
30
+ end
31
+
32
+ class Mock
33
+
34
+ def delete_vapp(vapp_id)
35
+ raise MockNotImplemented.new("Contributions welcome!")
36
+ end
37
+
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,43 @@
1
+ module Fog
2
+ module Terremark
3
+ class Real
4
+
5
+ require 'fog/terremark/parsers/task'
6
+
7
+ # Reserve requested resources and deploy vApp
8
+ #
9
+ # ==== Parameters
10
+ # * vapp_id<~Integer> - Id of vApp to deploy
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'endTime'<~String> - endTime of task
16
+ # * 'href'<~String> - link to task
17
+ # * 'startTime'<~String> - startTime of task
18
+ # * 'status'<~String> - status of task
19
+ # * 'type'<~String> - type of task
20
+ # * 'Owner'<~String> -
21
+ # * 'href'<~String> - href of owner
22
+ # * 'name'<~String> - name of owner
23
+ # * 'type'<~String> - type of owner
24
+ def deploy_vapp(vapp_id)
25
+ request(
26
+ :expects => 202,
27
+ :method => 'POST',
28
+ :parser => Fog::Parsers::Terremark::Task.new,
29
+ :path => "/vApp/#{vapp_id}/action/deploy"
30
+ )
31
+ end
32
+
33
+ end
34
+
35
+ class Mock
36
+
37
+ def deploy_vapp(task_id)
38
+ raise MockNotImplemented.new("Contributions welcome!")
39
+ end
40
+
41
+ end
42
+ end
43
+ end
@@ -14,7 +14,6 @@ module Fog
14
14
  # * 'name'<~String> - Name of organization
15
15
  def get_organizations
16
16
  request({
17
- :body => '',
18
17
  :expects => 200,
19
18
  :headers => {
20
19
  'Authorization' => "Basic #{Base64.encode64("#{@terremark_username}:#{@terremark_password}").chomp!}"
@@ -0,0 +1,47 @@
1
+ module Fog
2
+ module Terremark
3
+ class Real
4
+
5
+ require 'fog/terremark/parsers/task'
6
+
7
+ # Get details of a task
8
+ #
9
+ # ==== Parameters
10
+ # * task_id<~Integer> - Id of task to lookup
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'endTime'<~String> - endTime of task
16
+ # * 'href'<~String> - link to task
17
+ # * 'startTime'<~String> - startTime of task
18
+ # * 'status'<~String> - status of task
19
+ # * 'type'<~String> - type of task
20
+ # * 'Owner'<~String> -
21
+ # * 'href'<~String> - href of owner
22
+ # * 'name'<~String> - name of owner
23
+ # * 'type'<~String> - type of owner
24
+ # * 'Result'<~String> -
25
+ # * 'href'<~String> - href of result
26
+ # * 'name'<~String> - name of result
27
+ # * 'type'<~String> - type of result
28
+ def get_task(task_id)
29
+ request(
30
+ :expects => 200,
31
+ :method => 'GET',
32
+ :parser => Fog::Parsers::Terremark::Task.new,
33
+ :path => "/task/#{task_id}"
34
+ )
35
+ end
36
+
37
+ end
38
+
39
+ class Mock
40
+
41
+ def get_task(task_id)
42
+ raise MockNotImplemented.new("Contributions welcome!")
43
+ end
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,40 @@
1
+ module Fog
2
+ module Terremark
3
+ class Real
4
+
5
+ require 'fog/terremark/parsers/get_tasks_list'
6
+
7
+ # Get list of tasks
8
+ #
9
+ # ==== Parameters
10
+ # * tasks_list_id<~Integer> - Id of tasks lists to view
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'CatalogItems'<~Array>
16
+ # * 'href'<~String> - linke to item
17
+ # * 'name'<~String> - name of item
18
+ # * 'type'<~String> - type of item
19
+ # * 'description'<~String> - Description of catalog
20
+ # * 'name'<~String> - Name of catalog
21
+ def get_tasks_list(tasks_list_id)
22
+ request(
23
+ :expects => 200,
24
+ :method => 'GET',
25
+ :parser => Fog::Parsers::Terremark::GetTasksList.new,
26
+ :path => "/tasksList/#{tasks_list_id}"
27
+ )
28
+ end
29
+
30
+ end
31
+
32
+ class Mock
33
+
34
+ def get_tasks_list(tasks_list_id)
35
+ raise MockNotImplemented.new("Contributions welcome!")
36
+ end
37
+
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,50 @@
1
+ module Fog
2
+ module Terremark
3
+ class Real
4
+
5
+ require 'fog/terremark/parsers/vapp'
6
+
7
+ # Get details of a vapp
8
+ #
9
+ # ==== Parameters
10
+ # * vapp_id<~Integer> - Id of vapp to lookup
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+
16
+ # FIXME
17
+
18
+ # * 'endTime'<~String> - endTime of task
19
+ # * 'href'<~String> - link to task
20
+ # * 'startTime'<~String> - startTime of task
21
+ # * 'status'<~String> - status of task
22
+ # * 'type'<~String> - type of task
23
+ # * 'Owner'<~String> -
24
+ # * 'href'<~String> - href of owner
25
+ # * 'name'<~String> - name of owner
26
+ # * 'type'<~String> - type of owner
27
+ # * 'Result'<~String> -
28
+ # * 'href'<~String> - href of result
29
+ # * 'name'<~String> - name of result
30
+ # * 'type'<~String> - type of result
31
+ def get_vapp(vapp_id)
32
+ request(
33
+ :expects => 200,
34
+ :method => 'GET',
35
+ :parser => Fog::Parsers::Terremark::Vapp.new,
36
+ :path => "/vapp/#{vapp_id}"
37
+ )
38
+ end
39
+
40
+ end
41
+
42
+ class Mock
43
+
44
+ def get_vapp(vapp_id)
45
+ raise MockNotImplemented.new("Contributions welcome!")
46
+ end
47
+
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,118 @@
1
+ module Fog
2
+ module Terremark
3
+ class Real
4
+
5
+ require 'fog/terremark/parsers/instantiate_vapp_template'
6
+
7
+ # Instatiate a vapp template
8
+ #
9
+ # ==== Parameters
10
+ # * vdc_id<~Integer> - Id of vdc to instantiate template in
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+
16
+ # FIXME
17
+
18
+ # * 'CatalogItems'<~Array>
19
+ # * 'href'<~String> - linke to item
20
+ # * 'name'<~String> - name of item
21
+ # * 'type'<~String> - type of item
22
+ # * 'description'<~String> - Description of catalog
23
+ # * 'name'<~String> - Name of catalog
24
+ def instantiate_vapp_template(name)
25
+ # FIXME: much cheating to commence
26
+
27
+ organization_id = get_organizations.body['OrgList'].first['href'].split('/').last
28
+ organization = get_organization(organization_id).body
29
+ vdc_id = organization['Links'].select {|link| link['type'] == 'application/vnd.vmware.vcloud.vdc+xml'}.first['href'].split('/').last
30
+ vdc = get_vdc(vdc_id).body
31
+ network_id = vdc['AvailableNetworks'].first['href'].split('/').last
32
+ catalog_item = 12 # Ubuntu JeOS 9.10 (64-bit)
33
+
34
+ # case UNRESOLVED:
35
+ # return "0";
36
+ # case RESOLVED:
37
+ # return "1";
38
+ # case OFF:
39
+ # return "2";
40
+ # case SUSPENDED:
41
+ # return "3";
42
+ # case ON:
43
+ # return "4";
44
+ # default:
45
+ #
46
+ # /**
47
+ # * The vApp is unresolved (one or more file references are unavailable in the cloud)
48
+ # */
49
+ # UNRESOLVED,
50
+ # /**
51
+ # * The vApp is resolved (all file references are available in the cloud) but not deployed
52
+ # */
53
+ # RESOLVED,
54
+ # /**
55
+ # * The vApp is deployed and powered off
56
+ # */
57
+ # OFF,
58
+ # /**
59
+ # * The vApp is deployed and suspended
60
+ # */
61
+ # SUSPENDED,
62
+ # /**
63
+ # * The vApp is deployed and powered on
64
+ # */
65
+ # ON;
66
+
67
+ data = <<-DATA
68
+ <?xml version="1.0" encoding="UTF-8"?>
69
+ <InstantiateVAppTemplateParams name="#{name}" xmlns="http://www.vmware.com/vcloud/v0.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v0.8 http://services.vcloudexpress.terremark.com/api/v0.8/ns/vcloud.xsd">
70
+ <VAppTemplate href="https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/#{catalog_item}" />
71
+ <InstantiationParams xmlns:vmw="http://www.vmware.com/schema/ovf">
72
+ <ProductSection xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:q1="http://www.vmware.com/vcloud/v0.8"/>
73
+ <VirtualHardwareSection xmlns:q1="http://www.vmware.com/vcloud/v0.8">
74
+ <Item xmlns="http://schemas.dmtf.org/ovf/envelope/1">
75
+ <InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</InstanceID>
76
+ <ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">3</ResourceType>
77
+ <VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</VirtualQuantity>
78
+ </Item>
79
+ <Item xmlns="http://schemas.dmtf.org/ovf/envelope/1">
80
+ <InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">2</InstanceID>
81
+ <ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">4</ResourceType>
82
+ <VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">512</VirtualQuantity>
83
+ </Item>
84
+ </VirtualHardwareSection>
85
+ <NetworkConfigSection>
86
+ <NetworkConfig name="Network 1">
87
+ <Features>
88
+ <vmw:FenceMode>allowInOut</vmw:FenceMode>
89
+ <vmw:Dhcp>true</vmw:Dhcp>
90
+ </Features>
91
+ <NetworkAssociation href="https://services.vcloudexpress.terremark.com/api/v8/network/#{network_id}" />
92
+ </NetworkConfig>
93
+ </NetworkConfigSection>
94
+ </InstantiationParams>
95
+ </InstantiateVAppTemplateParams>
96
+ DATA
97
+
98
+ request(
99
+ :body => data,
100
+ :expects => 200,
101
+ :headers => { 'Content-Type' => 'application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml' },
102
+ :method => 'POST',
103
+ :parser => Fog::Parsers::Terremark::InstantiateVappTemplate.new,
104
+ :path => "/vdc/#{vdc_id}/action/instantiatevAppTemplate"
105
+ )
106
+ end
107
+
108
+ end
109
+
110
+ class Mock
111
+
112
+ def instatiate_vapp_template(vapp_template_id)
113
+ raise MockNotImplemented.new("Contributions welcome!")
114
+ end
115
+
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,43 @@
1
+ module Fog
2
+ module Terremark
3
+ class Real
4
+
5
+ require 'fog/terremark/parsers/task'
6
+
7
+ # Power off a vapp
8
+ #
9
+ # ==== Parameters
10
+ # * vapp_id<~Integer> - Id of vapp to power off
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'endTime'<~String> - endTime of task
16
+ # * 'href'<~String> - link to task
17
+ # * 'startTime'<~String> - startTime of task
18
+ # * 'status'<~String> - status of task
19
+ # * 'type'<~String> - type of task
20
+ # * 'Owner'<~String> -
21
+ # * 'href'<~String> - href of owner
22
+ # * 'name'<~String> - name of owner
23
+ # * 'type'<~String> - type of owner
24
+ def power_off(vapp_id)
25
+ request(
26
+ :expects => 202,
27
+ :method => 'POST',
28
+ :parser => Fog::Parsers::Terremark::Task.new,
29
+ :path => "/vApp/#{vapp_id}/power/action/powerOff"
30
+ )
31
+ end
32
+
33
+ end
34
+
35
+ class Mock
36
+
37
+ def power_off(vapp_id)
38
+ raise MockNotImplemented.new("Contributions welcome!")
39
+ end
40
+
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ module Fog
2
+ module Terremark
3
+ class Real
4
+
5
+ require 'fog/terremark/parsers/task'
6
+
7
+ # Power on a vapp
8
+ #
9
+ # ==== Parameters
10
+ # * vapp_id<~Integer> - Id of vapp to power on
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'endTime'<~String> - endTime of task
16
+ # * 'href'<~String> - link to task
17
+ # * 'startTime'<~String> - startTime of task
18
+ # * 'status'<~String> - status of task
19
+ # * 'type'<~String> - type of task
20
+ # * 'Owner'<~String> -
21
+ # * 'href'<~String> - href of owner
22
+ # * 'name'<~String> - name of owner
23
+ # * 'type'<~String> - type of owner
24
+ def power_on(vapp_id)
25
+ request(
26
+ :expects => 202,
27
+ :method => 'POST',
28
+ :parser => Fog::Parsers::Terremark::Task.new,
29
+ :path => "/vApp/#{vapp_id}/power/action/powerOn"
30
+ )
31
+ end
32
+
33
+ end
34
+
35
+ class Mock
36
+
37
+ def power_on(vapp_id)
38
+ raise MockNotImplemented.new("Contributions welcome!")
39
+ end
40
+
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ module Fog
2
+ module Terremark
3
+ class Real
4
+
5
+ require 'fog/terremark/parsers/task'
6
+
7
+ # Reset a vapp
8
+ #
9
+ # ==== Parameters
10
+ # * vapp_id<~Integer> - Id of vapp to reset
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'endTime'<~String> - endTime of task
16
+ # * 'href'<~String> - link to task
17
+ # * 'startTime'<~String> - startTime of task
18
+ # * 'status'<~String> - status of task
19
+ # * 'type'<~String> - type of task
20
+ # * 'Owner'<~String> -
21
+ # * 'href'<~String> - href of owner
22
+ # * 'name'<~String> - name of owner
23
+ # * 'type'<~String> - type of owner
24
+ def reset(vapp_id)
25
+ request(
26
+ :expects => 202,
27
+ :method => 'POST',
28
+ :parser => Fog::Parsers::Terremark::Task.new,
29
+ :path => "/vApp/#{vapp_id}/power/action/reset"
30
+ )
31
+ end
32
+
33
+ end
34
+
35
+ class Mock
36
+
37
+ def reset(vapp_id)
38
+ raise MockNotImplemented.new("Contributions welcome!")
39
+ end
40
+
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ module Fog
2
+ module Terremark
3
+ class Real
4
+
5
+ require 'fog/terremark/parsers/task'
6
+
7
+ # Shutdown a vapp
8
+ #
9
+ # ==== Parameters
10
+ # * vapp_id<~Integer> - Id of vapp to shutdown
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'endTime'<~String> - endTime of task
16
+ # * 'href'<~String> - link to task
17
+ # * 'startTime'<~String> - startTime of task
18
+ # * 'status'<~String> - status of task
19
+ # * 'type'<~String> - type of task
20
+ # * 'Owner'<~String> -
21
+ # * 'href'<~String> - href of owner
22
+ # * 'name'<~String> - name of owner
23
+ # * 'type'<~String> - type of owner
24
+ def shutdown(vapp_id)
25
+ request(
26
+ :expects => 202,
27
+ :method => 'POST',
28
+ :parser => Fog::Parsers::Terremark::Task.new,
29
+ :path => "/vApp/#{vapp_id}/power/action/shutdown"
30
+ )
31
+ end
32
+
33
+ end
34
+
35
+ class Mock
36
+
37
+ def shutdown(vapp_id)
38
+ raise MockNotImplemented.new("Contributions welcome!")
39
+ end
40
+
41
+ end
42
+ end
43
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 61
9
- version: 0.0.61
8
+ - 62
9
+ version: 0.0.62
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-03-28 00:00:00 -07:00
17
+ date: 2010-03-30 00:00:00 -07:00
18
18
  default_executable: fog
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -27,8 +27,8 @@ dependencies:
27
27
  segments:
28
28
  - 0
29
29
  - 0
30
- - 20
31
- version: 0.0.20
30
+ - 21
31
+ version: 0.0.21
32
32
  type: :runtime
33
33
  version_requirements: *id001
34
34
  - !ruby/object:Gem::Dependency
@@ -297,14 +297,28 @@ files:
297
297
  - lib/fog/terremark/parsers/get_catalog_item.rb
298
298
  - lib/fog/terremark/parsers/get_organization.rb
299
299
  - lib/fog/terremark/parsers/get_organizations.rb
300
+ - lib/fog/terremark/parsers/get_tasks_list.rb
300
301
  - lib/fog/terremark/parsers/get_vapp_template.rb
301
302
  - lib/fog/terremark/parsers/get_vdc.rb
303
+ - lib/fog/terremark/parsers/instantiate_vapp_template.rb
304
+ - lib/fog/terremark/parsers/task.rb
305
+ - lib/fog/terremark/parsers/vapp.rb
306
+ - lib/fog/terremark/requests/delete_vapp.rb
307
+ - lib/fog/terremark/requests/deploy_vapp.rb
302
308
  - lib/fog/terremark/requests/get_catalog.rb
303
309
  - lib/fog/terremark/requests/get_catalog_item.rb
304
310
  - lib/fog/terremark/requests/get_organization.rb
305
311
  - lib/fog/terremark/requests/get_organizations.rb
312
+ - lib/fog/terremark/requests/get_task.rb
313
+ - lib/fog/terremark/requests/get_tasks_list.rb
314
+ - lib/fog/terremark/requests/get_vapp.rb
306
315
  - lib/fog/terremark/requests/get_vapp_template.rb
307
316
  - lib/fog/terremark/requests/get_vdc.rb
317
+ - lib/fog/terremark/requests/instantiate_vapp_template.rb
318
+ - lib/fog/terremark/requests/power_off.rb
319
+ - lib/fog/terremark/requests/power_on.rb
320
+ - lib/fog/terremark/requests/reset.rb
321
+ - lib/fog/terremark/requests/shutdown.rb
308
322
  - spec/aws/models/ec2/address_spec.rb
309
323
  - spec/aws/models/ec2/addresses_spec.rb
310
324
  - spec/aws/models/ec2/flavors_spec.rb