fog 0.2.8 → 0.2.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/fog.gemspec +9 -2
- data/lib/fog.rb +1 -1
- data/lib/fog/vcloud.rb +6 -6
- data/lib/fog/vcloud/terremark/ecloud.rb +7 -0
- data/lib/fog/vcloud/terremark/ecloud/models/firewall_acl.rb +28 -0
- data/lib/fog/vcloud/terremark/ecloud/models/firewall_acls.rb +31 -0
- data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +1 -1
- data/lib/fog/vcloud/terremark/ecloud/models/server.rb +4 -8
- data/lib/fog/vcloud/terremark/ecloud/models/servers.rb +11 -0
- data/lib/fog/vcloud/terremark/ecloud/models/vdc.rb +26 -9
- data/lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb +50 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acl.rb +18 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acls.rb +18 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/get_vapp_template.rb +18 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb +100 -0
- metadata +10 -3
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.2.
|
11
|
-
s.date = '2010-
|
10
|
+
s.version = '0.2.9'
|
11
|
+
s.date = '2010-07-01'
|
12
12
|
s.rubyforge_project = 'fog'
|
13
13
|
|
14
14
|
## Make sure your summary is short. The description may be as long
|
@@ -401,6 +401,8 @@ Gem::Specification.new do |s|
|
|
401
401
|
lib/fog/vcloud/terremark/ecloud.rb
|
402
402
|
lib/fog/vcloud/terremark/ecloud/models/catalog.rb
|
403
403
|
lib/fog/vcloud/terremark/ecloud/models/catalog_item.rb
|
404
|
+
lib/fog/vcloud/terremark/ecloud/models/firewall_acl.rb
|
405
|
+
lib/fog/vcloud/terremark/ecloud/models/firewall_acls.rb
|
404
406
|
lib/fog/vcloud/terremark/ecloud/models/internet_service.rb
|
405
407
|
lib/fog/vcloud/terremark/ecloud/models/internet_services.rb
|
406
408
|
lib/fog/vcloud/terremark/ecloud/models/ip.rb
|
@@ -419,6 +421,7 @@ Gem::Specification.new do |s|
|
|
419
421
|
lib/fog/vcloud/terremark/ecloud/models/vdcs.rb
|
420
422
|
lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb
|
421
423
|
lib/fog/vcloud/terremark/ecloud/requests/add_node.rb
|
424
|
+
lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
|
422
425
|
lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb
|
423
426
|
lib/fog/vcloud/terremark/ecloud/requests/configure_network.rb
|
424
427
|
lib/fog/vcloud/terremark/ecloud/requests/configure_network_ip.rb
|
@@ -430,6 +433,8 @@ Gem::Specification.new do |s|
|
|
430
433
|
lib/fog/vcloud/terremark/ecloud/requests/get_catalog.rb
|
431
434
|
lib/fog/vcloud/terremark/ecloud/requests/get_catalog_item.rb
|
432
435
|
lib/fog/vcloud/terremark/ecloud/requests/get_customization_options.rb
|
436
|
+
lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acl.rb
|
437
|
+
lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acls.rb
|
433
438
|
lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb
|
434
439
|
lib/fog/vcloud/terremark/ecloud/requests/get_network.rb
|
435
440
|
lib/fog/vcloud/terremark/ecloud/requests/get_network_extensions.rb
|
@@ -442,7 +447,9 @@ Gem::Specification.new do |s|
|
|
442
447
|
lib/fog/vcloud/terremark/ecloud/requests/get_task.rb
|
443
448
|
lib/fog/vcloud/terremark/ecloud/requests/get_task_list.rb
|
444
449
|
lib/fog/vcloud/terremark/ecloud/requests/get_vapp.rb
|
450
|
+
lib/fog/vcloud/terremark/ecloud/requests/get_vapp_template.rb
|
445
451
|
lib/fog/vcloud/terremark/ecloud/requests/get_vdc.rb
|
452
|
+
lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb
|
446
453
|
lib/fog/vcloud/terremark/ecloud/requests/power_off.rb
|
447
454
|
lib/fog/vcloud/terremark/ecloud/requests/power_on.rb
|
448
455
|
lib/fog/vcloud/terremark/ecloud/requests/power_reset.rb
|
data/lib/fog.rb
CHANGED
data/lib/fog/vcloud.rb
CHANGED
@@ -73,6 +73,12 @@ module Fog
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
+
def xmlns
|
77
|
+
{ "xmlns" => "http://www.vmware.com/vcloud/v0.8",
|
78
|
+
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
|
79
|
+
"xmlns:xsd" => "http://www.w3.org/2001/XMLSchema" }
|
80
|
+
end
|
81
|
+
|
76
82
|
def reload
|
77
83
|
@connections.each_value { |k,v| v.reset if v }
|
78
84
|
end
|
@@ -343,12 +349,6 @@ module Fog
|
|
343
349
|
@login_uri = get_login_uri
|
344
350
|
end
|
345
351
|
|
346
|
-
def xmlns
|
347
|
-
{ "xmlns" => "http://www.vmware.com/vcloud/v0.8",
|
348
|
-
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
|
349
|
-
"xmlns:xsd" => "http://www.w3.org/2001/XMLSchema" }
|
350
|
-
end
|
351
|
-
|
352
352
|
def mock_it(status, mock_data, mock_headers = {})
|
353
353
|
response = Excon::Response.new
|
354
354
|
|
@@ -7,6 +7,8 @@ module Fog
|
|
7
7
|
model_path 'fog/vcloud/terremark/ecloud/models'
|
8
8
|
model :catalog_item
|
9
9
|
model :catalog
|
10
|
+
model :firewall_acl
|
11
|
+
model :firewall_acls
|
10
12
|
model :internet_service
|
11
13
|
model :internet_services
|
12
14
|
model :ip
|
@@ -27,6 +29,7 @@ module Fog
|
|
27
29
|
request_path 'fog/vcloud/terremark/ecloud/requests'
|
28
30
|
request :add_internet_service
|
29
31
|
request :add_node
|
32
|
+
request :clone_vapp
|
30
33
|
request :configure_internet_service
|
31
34
|
request :configure_network
|
32
35
|
request :configure_network_ip
|
@@ -38,6 +41,8 @@ module Fog
|
|
38
41
|
request :get_catalog
|
39
42
|
request :get_catalog_item
|
40
43
|
request :get_customization_options
|
44
|
+
request :get_firewall_acls
|
45
|
+
request :get_firewall_acl
|
41
46
|
request :get_internet_services
|
42
47
|
request :get_network
|
43
48
|
request :get_network_ip
|
@@ -50,7 +55,9 @@ module Fog
|
|
50
55
|
request :get_task
|
51
56
|
request :get_task_list
|
52
57
|
request :get_vapp
|
58
|
+
request :get_vapp_template
|
53
59
|
request :get_vdc
|
60
|
+
request :instantiate_vapp_template
|
54
61
|
request :power_off
|
55
62
|
request :power_on
|
56
63
|
request :power_reset
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Fog
|
2
|
+
module Vcloud
|
3
|
+
module Terremark
|
4
|
+
module Ecloud
|
5
|
+
class FirewallAcl < Fog::Vcloud::Model
|
6
|
+
|
7
|
+
identity :href, :Href
|
8
|
+
|
9
|
+
ignore_attributes :xmlns, :xmlns_i
|
10
|
+
|
11
|
+
attribute :name, :aliases => :Name
|
12
|
+
attribute :id, :aliases => :Id
|
13
|
+
attribute :protocol, :aliases => :Protocol
|
14
|
+
attribute :source, :aliases => :Source
|
15
|
+
attribute :destination, :aliases => :Destination
|
16
|
+
attribute :permission, :aliases => :Permission
|
17
|
+
attribute :port_start, :aliases => :PortStart
|
18
|
+
attribute :port_end, :aliases => :PortEnd
|
19
|
+
attribute :port_type, :aliases => :PortType
|
20
|
+
attribute :type, :aliases => :Type
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Fog
|
2
|
+
module Vcloud
|
3
|
+
module Terremark
|
4
|
+
module Ecloud
|
5
|
+
|
6
|
+
class FirewallAcls < Fog::Vcloud::Collection
|
7
|
+
|
8
|
+
model Fog::Vcloud::Terremark::Ecloud::FirewallAcl
|
9
|
+
|
10
|
+
attribute :href, :aliases => :Href
|
11
|
+
|
12
|
+
def all
|
13
|
+
if data = connection.get_firewall_acls(href).body[:FirewallAcl]
|
14
|
+
data = [ data ] if data.is_a?(Hash)
|
15
|
+
load(data)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def get(uri)
|
20
|
+
if data = connection.get_firewall_acl(uri).body
|
21
|
+
new(data)
|
22
|
+
end
|
23
|
+
rescue Fog::Errors::NotFound
|
24
|
+
nil
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -21,7 +21,7 @@ module Fog
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
# Optimize later, no need to get_internet_services again
|
24
|
+
# Optimize later, no need to get_internet_services again?
|
25
25
|
def get(uri)
|
26
26
|
internet_services = connection.get_internet_services(href).body[:InternetService]
|
27
27
|
internet_services = [ internet_services ] if internet_services.is_a?(Hash)
|
@@ -91,7 +91,7 @@ module Fog
|
|
91
91
|
|
92
92
|
def memory
|
93
93
|
{ :amount => memory_mess[:VirtualQuantity].to_i,
|
94
|
-
:units => memory_mess[:
|
94
|
+
:units => memory_mess[:AllocationUnits] }
|
95
95
|
end
|
96
96
|
|
97
97
|
def memory=(amount)
|
@@ -132,17 +132,14 @@ module Fog
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def reload
|
135
|
-
super
|
136
135
|
reset_tracking
|
136
|
+
super
|
137
137
|
end
|
138
138
|
|
139
139
|
def save
|
140
140
|
if new_record?
|
141
|
-
|
142
|
-
|
143
|
-
return false
|
144
|
-
#result = connection.instantiate_vapp_template( stuff )
|
145
|
-
#merge_attributes(result.body)
|
141
|
+
#Lame ...
|
142
|
+
raise RuntimeError, "Should not be here"
|
146
143
|
else
|
147
144
|
if on?
|
148
145
|
if @changed
|
@@ -159,7 +156,6 @@ module Fog
|
|
159
156
|
def reset_tracking
|
160
157
|
@disk_change = false
|
161
158
|
@changed = false
|
162
|
-
true
|
163
159
|
end
|
164
160
|
|
165
161
|
def _compose_vapp_data
|
@@ -5,6 +5,8 @@ module Fog
|
|
5
5
|
|
6
6
|
class Servers < Fog::Vcloud::Collection
|
7
7
|
|
8
|
+
undef_method :create
|
9
|
+
|
8
10
|
model Fog::Vcloud::Terremark::Ecloud::Server
|
9
11
|
|
10
12
|
attribute :href, :aliases => :Href
|
@@ -21,6 +23,15 @@ module Fog
|
|
21
23
|
nil
|
22
24
|
end
|
23
25
|
|
26
|
+
def create( catalog_item_uri, options )
|
27
|
+
options[:vdc_uri] = href
|
28
|
+
options[:cpus] ||= 1
|
29
|
+
options[:memory] ||= 512
|
30
|
+
data = connection.instantiate_vapp_template( catalog_item_uri, options ).body
|
31
|
+
object = new(data)
|
32
|
+
object
|
33
|
+
end
|
34
|
+
|
24
35
|
private
|
25
36
|
|
26
37
|
def _resource_entities
|
@@ -20,15 +20,11 @@ module Fog
|
|
20
20
|
attribute :instantiated_vm_quota
|
21
21
|
|
22
22
|
def public_ips
|
23
|
-
|
24
|
-
@public_ips ||= Fog::Vcloud::Terremark::Ecloud::PublicIps.new( :connection => connection,
|
25
|
-
:href => other_links.detect { |link| link[:type] == "application/vnd.tmrk.ecloud.publicIpsList+xml" }[:href] )
|
23
|
+
@public_ips ||= collection_based_on_type("application/vnd.tmrk.ecloud.publicIpsList+xml")
|
26
24
|
end
|
27
25
|
|
28
26
|
def internet_services
|
29
|
-
@internet_services ||=
|
30
|
-
new( :connection => connection,
|
31
|
-
:href => href.to_s.gsub('vdc','extensions/vdc') + "/internetServices" )
|
27
|
+
@internet_services ||= collection_based_on_type("application/vnd.tmrk.ecloud.internetServicesList+xml")
|
32
28
|
end
|
33
29
|
|
34
30
|
def networks
|
@@ -50,11 +46,32 @@ module Fog
|
|
50
46
|
end
|
51
47
|
|
52
48
|
def catalog
|
53
|
-
@catalog ||=
|
54
|
-
|
55
|
-
|
49
|
+
@catalog ||= collection_based_on_type("application/vnd.vmware.vcloud.catalog+xml")
|
50
|
+
end
|
51
|
+
|
52
|
+
def firewall_acls
|
53
|
+
@firewall_acls ||= collection_based_on_type("application/vnd.tmrk.ecloud.firewallAclsList+xml")
|
56
54
|
end
|
57
55
|
|
56
|
+
private
|
57
|
+
|
58
|
+
def collection_based_on_type(type)
|
59
|
+
load_unless_loaded!
|
60
|
+
if link = other_links.detect { |link| link[:type] == type }
|
61
|
+
case type
|
62
|
+
when "application/vnd.tmrk.ecloud.publicIpsList+xml"
|
63
|
+
Fog::Vcloud::Terremark::Ecloud::PublicIps
|
64
|
+
when "application/vnd.tmrk.ecloud.internetServicesList+xml"
|
65
|
+
Fog::Vcloud::Terremark::Ecloud::InternetServices
|
66
|
+
when "application/vnd.vmware.vcloud.catalog+xml"
|
67
|
+
Fog::Vcloud::Terremark::Ecloud::Catalog
|
68
|
+
when "application/vnd.tmrk.ecloud.firewallAclsList+xml"
|
69
|
+
Fog::Vcloud::Terremark::Ecloud::FirewallAcls
|
70
|
+
end.new( :connection => connection, :href => link[:href] )
|
71
|
+
else
|
72
|
+
[ ]
|
73
|
+
end
|
74
|
+
end
|
58
75
|
end
|
59
76
|
end
|
60
77
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Fog
|
2
|
+
module Vcloud
|
3
|
+
module Terremark
|
4
|
+
module Ecloud
|
5
|
+
|
6
|
+
module Real
|
7
|
+
|
8
|
+
def validate_clone_vapp_options(options)
|
9
|
+
valid_opts = [:name, :poweron]
|
10
|
+
unless valid_opts.all? { |opt| options.keys.include?(opt) }
|
11
|
+
raise ArgumentError.new("Required data missing: #{(valid_opts - options.keys).map(&:inspect).join(", ")}")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def generate_clone_vapp_request(uri, options)
|
16
|
+
xml = Builder::XmlMarkup.new
|
17
|
+
xml.CloneVAppParams(xmlns.merge!(:name => options[:name], :deploy => "true", :powerOn => options[:poweron])) {
|
18
|
+
xml.VApp( :href => uri, :type => "application/vnd.vmware.vcloud.vApp+xml",
|
19
|
+
:xmlns => "http://www.vmware.com/vcloud/v0.8")
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
def clone_vapp(vdc_uri, vapp_uri, options = {})
|
24
|
+
unless options.has_key?(:poweron)
|
25
|
+
options[:poweron] = "false"
|
26
|
+
end
|
27
|
+
|
28
|
+
validate_clone_vapp_options(options)
|
29
|
+
|
30
|
+
request(
|
31
|
+
:body => generate_clone_vapp_request(vapp_uri, options),
|
32
|
+
:expects => 202,
|
33
|
+
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.cloneVAppParams+xml'},
|
34
|
+
:method => 'POST',
|
35
|
+
:uri => vdc_uri + '/action/clonevapp',
|
36
|
+
:parse => true
|
37
|
+
)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
module Mock
|
42
|
+
def clone_vapp(vdc_uri, vapp_uri, customization_data)
|
43
|
+
validate_customization_data(customization_data)
|
44
|
+
Fog::Mock.not_implemented
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Fog
|
2
|
+
module Vcloud
|
3
|
+
module Terremark
|
4
|
+
module Ecloud
|
5
|
+
|
6
|
+
module Real
|
7
|
+
basic_request :get_firewall_acl
|
8
|
+
end
|
9
|
+
|
10
|
+
module Mock
|
11
|
+
def get_firewall_acl(firewall_acl_uri)
|
12
|
+
Fog::Mock.not_implemented
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Fog
|
2
|
+
module Vcloud
|
3
|
+
module Terremark
|
4
|
+
module Ecloud
|
5
|
+
|
6
|
+
module Real
|
7
|
+
basic_request :get_firewall_acls
|
8
|
+
end
|
9
|
+
|
10
|
+
module Mock
|
11
|
+
def get_firewall_acls(firewall_acls_uri)
|
12
|
+
Fog::Mock.not_implemented
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Fog
|
2
|
+
module Vcloud
|
3
|
+
module Terremark
|
4
|
+
module Ecloud
|
5
|
+
|
6
|
+
module Real
|
7
|
+
basic_request :get_vapp_template
|
8
|
+
end
|
9
|
+
|
10
|
+
module Mock
|
11
|
+
def get_vapp_template(templace_uri)
|
12
|
+
Fog::Mock.not_implemented
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
module Fog
|
2
|
+
module Vcloud
|
3
|
+
module Terremark
|
4
|
+
module Ecloud
|
5
|
+
|
6
|
+
module Real
|
7
|
+
|
8
|
+
def validate_instantiate_vapp_template_options(catalog_item_uri, options)
|
9
|
+
valid_opts = [:name, :vdc_uri, :network_uri, :cpus, :memory, :row, :group]
|
10
|
+
unless valid_opts.all? { |opt| options.keys.include?(opt) }
|
11
|
+
raise ArgumentError.new("Required data missing: #{(valid_opts - options.keys).map(&:inspect).join(", ")}")
|
12
|
+
end
|
13
|
+
|
14
|
+
# Figure out the template_uri
|
15
|
+
catalog_item = get_catalog_item( catalog_item_uri ).body
|
16
|
+
catalog_item[:Entity] = [ catalog_item[:Entity] ] if catalog_item[:Entity].is_a?(Hash)
|
17
|
+
catalog_item[:Link] = [ catalog_item[:Link] ] if catalog_item[:Link].is_a?(Hash)
|
18
|
+
|
19
|
+
options[:template_uri] = begin
|
20
|
+
catalog_item[:Entity].detect { |entity| entity[:type] == "application/vnd.vmware.vcloud.vAppTemplate+xml" }[:href]
|
21
|
+
rescue
|
22
|
+
raise RuntimeError.new("Unable to locate template uri for #{catalog_item_uri}")
|
23
|
+
end
|
24
|
+
|
25
|
+
customization_options = begin
|
26
|
+
customization_href = catalog_item[:Link].detect { |link| link[:type] == "application/vnd.tmrk.ecloud.catalogItemCustomizationParameters+xml" }[:href]
|
27
|
+
get_customization_options( customization_href ).body
|
28
|
+
rescue
|
29
|
+
raise RuntimeError.new("Unable to get customization options for #{catalog_item_uri}")
|
30
|
+
end
|
31
|
+
|
32
|
+
# Check to see if we can set the password
|
33
|
+
if options[:password] and customization_options[:CustomizePassword] == "false"
|
34
|
+
raise ArgumentError.new("This catalog item (#{catalog_item_uri}) does not allow setting a password.")
|
35
|
+
end
|
36
|
+
|
37
|
+
# According to the docs if CustomizePassword is "true" then we NEED to set a password
|
38
|
+
if customization_options[:CustomizePassword] == "true" and ( options[:password].nil? or options[:password].empty? )
|
39
|
+
raise ArgumentError.new("This catalog item (#{catalog_item_uri}) requires a :password to instantiate.")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def generate_instantiate_vapp_template_request(options)
|
44
|
+
xml = Builder::XmlMarkup.new
|
45
|
+
xml.InstantiateVAppTemplateParams(xmlns.merge!(:name => options[:name], :"xml:lang" => "en")) {
|
46
|
+
xml.VAppTemplate(:href => options[:template_uri])
|
47
|
+
xml.InstantiationParams {
|
48
|
+
xml.ProductSection( :"xmlns:q1" => "http://www.vmware.com/vcloud/v0.8", :"xmlns:ovf" => "http://schemas.dmtf.org/ovf/envelope/1") {
|
49
|
+
if options[:password]
|
50
|
+
xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "password", :"ovf:value" => options[:password] )
|
51
|
+
end
|
52
|
+
xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "row", :"ovf:value" => options[:row] )
|
53
|
+
xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "group", :"ovf:value" => options[:group] )
|
54
|
+
}
|
55
|
+
xml.VirtualHardwareSection( :"xmlns:q1" => "http://www.vmware.com/vcloud/v0.8" ) {
|
56
|
+
# # of CPUS
|
57
|
+
xml.Item( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1" ) {
|
58
|
+
xml.InstanceID(1, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
59
|
+
xml.ResourceType(3, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
60
|
+
xml.VirtualQuantity(options[:cpus], :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
61
|
+
}
|
62
|
+
# Memory
|
63
|
+
xml.Item( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1" ) {
|
64
|
+
xml.InstanceID(2, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
65
|
+
xml.ResourceType(4, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
66
|
+
xml.VirtualQuantity(options[:memory], :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
67
|
+
}
|
68
|
+
}
|
69
|
+
xml.NetworkConfigSection {
|
70
|
+
xml.NetworkConfig {
|
71
|
+
xml.NetworkAssociation( :href => options[:network_uri] )
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
def instantiate_vapp_template(catalog_item_uri, options = {})
|
79
|
+
validate_instantiate_vapp_template_options(catalog_item_uri, options)
|
80
|
+
|
81
|
+
request(
|
82
|
+
:body => generate_instantiate_vapp_template_request(options),
|
83
|
+
:expects => 200,
|
84
|
+
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml'},
|
85
|
+
:method => 'POST',
|
86
|
+
:uri => options[:vdc_uri] + '/action/instantiatevAppTemplate',
|
87
|
+
:parse => true
|
88
|
+
)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
module Mock
|
93
|
+
def instantiate_vapp_template(vdc_uri)
|
94
|
+
Fog::Mock.not_implemented
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 9
|
9
|
+
version: 0.2.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-
|
17
|
+
date: 2010-07-01 00:00:00 -05:00
|
18
18
|
default_executable: fog
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -490,6 +490,8 @@ files:
|
|
490
490
|
- lib/fog/vcloud/terremark/ecloud.rb
|
491
491
|
- lib/fog/vcloud/terremark/ecloud/models/catalog.rb
|
492
492
|
- lib/fog/vcloud/terremark/ecloud/models/catalog_item.rb
|
493
|
+
- lib/fog/vcloud/terremark/ecloud/models/firewall_acl.rb
|
494
|
+
- lib/fog/vcloud/terremark/ecloud/models/firewall_acls.rb
|
493
495
|
- lib/fog/vcloud/terremark/ecloud/models/internet_service.rb
|
494
496
|
- lib/fog/vcloud/terremark/ecloud/models/internet_services.rb
|
495
497
|
- lib/fog/vcloud/terremark/ecloud/models/ip.rb
|
@@ -508,6 +510,7 @@ files:
|
|
508
510
|
- lib/fog/vcloud/terremark/ecloud/models/vdcs.rb
|
509
511
|
- lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb
|
510
512
|
- lib/fog/vcloud/terremark/ecloud/requests/add_node.rb
|
513
|
+
- lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
|
511
514
|
- lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb
|
512
515
|
- lib/fog/vcloud/terremark/ecloud/requests/configure_network.rb
|
513
516
|
- lib/fog/vcloud/terremark/ecloud/requests/configure_network_ip.rb
|
@@ -519,6 +522,8 @@ files:
|
|
519
522
|
- lib/fog/vcloud/terremark/ecloud/requests/get_catalog.rb
|
520
523
|
- lib/fog/vcloud/terremark/ecloud/requests/get_catalog_item.rb
|
521
524
|
- lib/fog/vcloud/terremark/ecloud/requests/get_customization_options.rb
|
525
|
+
- lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acl.rb
|
526
|
+
- lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acls.rb
|
522
527
|
- lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb
|
523
528
|
- lib/fog/vcloud/terremark/ecloud/requests/get_network.rb
|
524
529
|
- lib/fog/vcloud/terremark/ecloud/requests/get_network_extensions.rb
|
@@ -531,7 +536,9 @@ files:
|
|
531
536
|
- lib/fog/vcloud/terremark/ecloud/requests/get_task.rb
|
532
537
|
- lib/fog/vcloud/terremark/ecloud/requests/get_task_list.rb
|
533
538
|
- lib/fog/vcloud/terremark/ecloud/requests/get_vapp.rb
|
539
|
+
- lib/fog/vcloud/terremark/ecloud/requests/get_vapp_template.rb
|
534
540
|
- lib/fog/vcloud/terremark/ecloud/requests/get_vdc.rb
|
541
|
+
- lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb
|
535
542
|
- lib/fog/vcloud/terremark/ecloud/requests/power_off.rb
|
536
543
|
- lib/fog/vcloud/terremark/ecloud/requests/power_on.rb
|
537
544
|
- lib/fog/vcloud/terremark/ecloud/requests/power_reset.rb
|