Class: Fog::Vcloud::Terremark::Ecloud::Real
- Inherits:
-
Real
- Object
- Real
- Fog::Vcloud::Terremark::Ecloud::Real
show all
- Defined in:
- lib/fog/vcloud/terremark/ecloud.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_vdc.rb,
lib/fog/vcloud/terremark/ecloud/requests/add_node.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_node.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_task.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_vapp.rb,
lib/fog/vcloud/terremark/ecloud/requests/power_on.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_nodes.rb,
lib/fog/vcloud/terremark/ecloud/requests/power_off.rb,
lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb,
lib/fog/vcloud/terremark/ecloud/requests/delete_node.rb,
lib/fog/vcloud/terremark/ecloud/requests/delete_vapp.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_catalog.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_network.rb,
lib/fog/vcloud/terremark/ecloud/requests/power_reset.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_public_ip.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_task_list.rb,
lib/fog/vcloud/terremark/ecloud/requests/configure_node.rb,
lib/fog/vcloud/terremark/ecloud/requests/configure_vapp.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_network_ip.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_public_ips.rb,
lib/fog/vcloud/terremark/ecloud/requests/power_shutdown.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_catalog_item.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acl.rb,
lib/fog/vcloud/terremark/ecloud/requests/configure_network.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acls.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_vapp_template.rb,
lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb,
lib/fog/vcloud/terremark/ecloud/requests/configure_network_ip.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_network_extensions.rb,
lib/fog/vcloud/terremark/ecloud/requests/delete_internet_service.rb,
lib/fog/vcloud/terremark/ecloud/requests/get_customization_options.rb,
lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb,
lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb
Instance Attribute Summary
Attributes inherited from Real
#versions_uri
Instance Method Summary
collapse
-
#add_internet_service(internet_services_uri, service_data) ⇒ Object
-
#add_node(nodes_uri, node_data) ⇒ Object
-
#clone_vapp(vdc_uri, vapp_uri, options = {}) ⇒ Object
-
#configure_internet_service(internet_service_uri, service_data, ip_address_data) ⇒ Object
-
#configure_network(network_uri, network_data) ⇒ Object
-
#configure_network_ip(network_ip_uri, network_ip_data) ⇒ Object
-
#configure_node(node_uri, node_data) ⇒ Object
-
#configure_vapp(vapp_uri, vapp_data) ⇒ Object
-
#ensure_monitor_defaults!(monitor) ⇒ Object
-
#generate_clone_vapp_request(uri, options) ⇒ Object
-
#generate_configure_vapp_request(vapp_uri, vapp_data) ⇒ Object
-
#generate_instantiate_vapp_template_request(options) ⇒ Object
-
#generate_internet_service_request(service_data) ⇒ Object
-
#generate_internet_service_response(service_data, ip_address_data) ⇒ Object
-
#generate_monitor_section(builder, monitor) ⇒ Object
-
#instantiate_vapp_template(catalog_item_uri, options = {}) ⇒ Object
-
#supporting_versions ⇒ Object
-
#validate_clone_vapp_options(options) ⇒ Object
-
#validate_instantiate_vapp_template_options(catalog_item_uri, options) ⇒ Object
-
#validate_internet_service_data(service_data, configure = false) ⇒ Object
-
#validate_internet_service_monitor(monitor) ⇒ Object
-
#validate_network_data(network_data, configure = false) ⇒ Object
-
#validate_network_ip_data(network_ip_data, configure = false) ⇒ Object
-
#validate_public_ip_address_data(ip_address_data) ⇒ Object
-
#validate_vapp_data(vapp_data) ⇒ Object
Methods inherited from Real
#default_organization_uri, #initialize, #login, #reload, #request
Methods included from Generators
#basic_request, #unauthenticated_basic_request
Methods included from Shared
#default_organization_uri, #do_login, #ensure_unparsed, #supported_versions, #xmlns
Instance Method Details
#add_internet_service(internet_services_uri, service_data) ⇒ Object
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb', line 91
def add_internet_service(internet_services_uri, service_data)
validate_internet_service_data(service_data)
if monitor = service_data[:monitor]
validate_internet_service_monitor(monitor)
ensure_monitor_defaults!(monitor)
end
request(
:body => generate_internet_service_request(service_data),
:expects => 200,
:headers => {'Content-Type' => 'application/vnd.tmrk.ecloud.internetService+xml'},
:method => 'POST',
:uri => internet_services_uri,
:parse => true
)
end
|
#add_node(nodes_uri, node_data) ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/add_node.rb', line 7
def add_node(nodes_uri, node_data)
validate_node_data(node_data)
request(
:body => generate_node_request(node_data),
:expects => 200,
:headers => {'Content-Type' => 'application/vnd.tmrk.ecloud.nodeService+xml'},
:method => 'POST',
:uri => nodes_uri,
:parse => true
)
end
|
#clone_vapp(vdc_uri, vapp_uri, options = {}) ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb', line 23
def clone_vapp(vdc_uri, vapp_uri, options = {})
unless options.has_key?(:poweron)
options[:poweron] = "false"
end
validate_clone_vapp_options(options)
request(
:body => generate_clone_vapp_request(vapp_uri, options),
:expects => 202,
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.cloneVAppParams+xml'},
:method => 'POST',
:uri => vdc_uri + '/action/clonevapp',
:parse => true
)
end
|
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb', line 38
def configure_internet_service(internet_service_uri, service_data, ip_address_data)
validate_internet_service_data(service_data, true)
validate_public_ip_address_data(ip_address_data)
if monitor = service_data[:monitor]
validate_internet_service_monitor(monitor)
ensure_monitor_defaults!(monitor)
end
request(
:body => generate_internet_service_response(service_data, ip_address_data),
:expects => 200,
:headers => {'Content-Type' => 'application/vnd.tmrk.ecloud.internetService+xml'},
:method => 'PUT',
:uri => internet_service_uri,
:parse => true
)
end
|
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/configure_network.rb', line 14
def configure_network(network_uri, network_data)
validate_network_data(network_data)
request(
:body => generate_configure_network_request(network_data),
:expects => 200,
:headers => {'Content-Type' => 'application/vnd.tmrk.ecloud.networkService+xml'},
:method => 'PUT',
:uri => network_uri,
:parse => true
)
end
|
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/configure_network_ip.rb', line 14
def configure_network_ip(network_ip_uri, network_ip_data)
validate_network_ip_data(network_ip_data)
request(
:body => generate_configure_network_ip_request(network_ip_data),
:expects => 200,
:headers => {'Content-Type' => 'application/vnd.tmrk.ecloud.ip+xml' },
:method => 'PUT',
:uri => network_ip_uri,
:parse => true
)
end
|
7
8
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/configure_node.rb', line 7
def configure_node(node_uri, node_data)
validate_node_data(node_data, true)
request(
:body => generate_configure_node_request(node_data),
:expects => 200,
:headers => {'Content-Type' => 'application/vnd.tmrk.ecloud.nodeService+xml'},
:method => 'PUT',
:uri => node_uri,
:parse => true
)
end
|
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/configure_vapp.rb', line 92
def configure_vapp(vapp_uri, vapp_data)
validate_vapp_data(vapp_data)
request(
:body => generate_configure_vapp_request(vapp_uri, vapp_data),
:expects => 202,
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.vApp+xml' },
:method => 'PUT',
:uri => vapp_uri,
:parse => true
)
end
|
#ensure_monitor_defaults!(monitor) ⇒ Object
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb', line 69
def ensure_monitor_defaults!(monitor)
if monitor[:http_headers].is_a?(String)
monitor[:http_headers] = [ monitor[:http_headers] ]
end
unless monitor[:retries]
monitor[:retries] = 3
end
unless monitor[:response_timeout]
monitor[:response_timeout] = 2
end
unless monitor[:down_time]
monitor[:down_time] = 30
end
unless monitor[:interval]
monitor[:interval] = 5
end
end
|
#generate_clone_vapp_request(uri, options) ⇒ Object
15
16
17
18
19
20
21
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb', line 15
def generate_clone_vapp_request(uri, options)
xml = Builder::XmlMarkup.new
xml.CloneVAppParams(xmlns.merge!(:name => options[:name], :deploy => "true", :powerOn => options[:poweron])) {
xml.VApp( :href => uri, :type => "application/vnd.vmware.vcloud.vApp+xml",
:xmlns => "http://www.vmware.com/vcloud/v0.8")
}
end
|
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/configure_vapp.rb', line 7
def generate_configure_vapp_request(vapp_uri, vapp_data)
rasd_xmlns = { "xmlns" => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" }
xml = Nokogiri::XML(request( :uri => vapp_uri).body)
xml.root['name'] = vapp_data[:name]
xml.at("//xmlns:ResourceType[.='3']/..", rasd_xmlns).at('.//xmlns:VirtualQuantity', rasd_xmlns).content = vapp_data[:cpus]
xml.at("//xmlns:ResourceType[.='4']/..", rasd_xmlns).at('.//xmlns:VirtualQuantity', rasd_xmlns).content = vapp_data[:memory]
real_disks = xml.xpath("//xmlns:ResourceType[ .='17']/..", rasd_xmlns)
real_disk_numbers = real_disks.map { |disk| disk.at('.//xmlns:AddressOnParent', rasd_xmlns).content }
disk_numbers = vapp_data[:disks].map { |vdisk| vdisk[:number].to_s }
if vapp_data[:disks].length < real_disks.length
remove_disk_numbers = real_disk_numbers - disk_numbers
remove_disk_numbers.each do |number|
if result = xml.at("//xmlns:ResourceType[ .='17']/../xmlns:AddressOnParent[.='#{number}']/..", rasd_xmlns)
result.remove
end
end
elsif vapp_data[:disks].length > real_disks.length
add_disk_numbers = disk_numbers - real_disk_numbers
add_disk_numbers.each do |number|
new_disk = real_disks.first.dup
new_disk.at('.//xmlns:AddressOnParent', rasd_xmlns).content = -1
new_disk.at('.//xmlns:VirtualQuantity', rasd_xmlns).content = vapp_data[:disks].detect { |disk| disk[:number].to_s == number.to_s }[:size]
real_disks.first.parent << new_disk
end
end
xml.root.to_s
end
|
#generate_instantiate_vapp_template_request(options) ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb', line 43
def generate_instantiate_vapp_template_request(options)
xml = Builder::XmlMarkup.new
xml.InstantiateVAppTemplateParams(xmlns.merge!(:name => options[:name], :"xml:lang" => "en")) {
xml.VAppTemplate(:href => options[:template_uri])
xml.InstantiationParams {
xml.ProductSection( :"xmlns:q1" => "http://www.vmware.com/vcloud/v0.8", :"xmlns:ovf" => "http://schemas.dmtf.org/ovf/envelope/1") {
if options[:password]
xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "password", :"ovf:value" => options[:password] )
end
xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "row", :"ovf:value" => options[:row] )
xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "group", :"ovf:value" => options[:group] )
}
xml.VirtualHardwareSection( :"xmlns:q1" => "http://www.vmware.com/vcloud/v0.8" ) {
xml.Item( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1" ) {
xml.InstanceID(1, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
xml.ResourceType(3, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
xml.VirtualQuantity(options[:cpus], :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
}
xml.Item( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1" ) {
xml.InstanceID(2, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
xml.ResourceType(4, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
xml.VirtualQuantity(options[:memory], :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
}
}
xml.NetworkConfigSection {
xml.NetworkConfig {
xml.NetworkAssociation( :href => options[:network_uri] )
}
}
}
}
end
|
#generate_internet_service_request(service_data) ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb', line 7
def generate_internet_service_request(service_data)
builder = Builder::XmlMarkup.new
builder.CreateInternetServiceRequest(:"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
:"xmlns:xsd" => "http://www.w3.org/2001/XMLSchema",
:xmlns => "urn:tmrk:eCloudExtensions-2.3") {
builder.Name(service_data[:name])
builder.Protocol(service_data[:protocol])
builder.Port(service_data[:port])
builder.Enabled(service_data[:enabled])
builder.Description(service_data[:description])
builder.RedirectURL(service_data[:redirect_url])
if monitor = service_data[:monitor]
generate_monitor_section(builder,monitor)
end
}
end
|
#generate_internet_service_response(service_data, ip_address_data) ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb', line 7
def generate_internet_service_response(service_data,ip_address_data)
builder = Builder::XmlMarkup.new
builder.InternetService(:"xmlns:i" => "http://www.w3.org/2001/XMLSchema-instance",
:xmlns => "urn:tmrk:eCloudExtensions-2.3") {
builder.Id(service_data[:id])
builder.Href(service_data[:href].to_s)
builder.Name(service_data[:name])
builder.Protocol(service_data[:protocol])
builder.Port(service_data[:port])
builder.Enabled(service_data[:enabled])
builder.Description(service_data[:description])
builder.Timeout(service_data[:timeout])
builder.RedirectURL(service_data[:redirect_url])
builder.PublicIpAddress {
builder.Id(ip_address_data[:id])
builder.Href(ip_address_data[:href].to_s)
builder.Name(ip_address_data[:name])
}
if monitor = service_data[:monitor]
generate_monitor_section(builder,monitor)
end
}
end
|
#generate_monitor_section(builder, monitor) ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb', line 24
def generate_monitor_section(builder, monitor)
builder.Monitor {
builder.MonitorType(monitor[:type])
builder.UrlSendString(monitor[:url_send_string])
builder.HttpHeader(monitor[:http_headers].join("\n"))
builder.ReceiveString(monitor[:receive_string])
builder.Interval(monitor[:interval])
builder.ResponseTimeOut(monitor[:response_timeout])
builder.DownTime(monitor[:downtime])
builder.Retries(monitor[:retries])
builder.IsEnabled(monitor[:is_enabled])
}
end
|
#instantiate_vapp_template(catalog_item_uri, options = {}) ⇒ Object
78
79
80
81
82
83
84
85
86
87
88
89
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb', line 78
def instantiate_vapp_template(catalog_item_uri, options = {})
validate_instantiate_vapp_template_options(catalog_item_uri, options)
request(
:body => generate_instantiate_vapp_template_request(options),
:expects => 200,
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml'},
:method => 'POST',
:uri => options[:vdc_uri] + '/action/instantiatevAppTemplate',
:parse => true
)
end
|
#supporting_versions ⇒ Object
195
196
197
|
# File 'lib/fog/vcloud/terremark/ecloud.rb', line 195
def supporting_versions
["v0.8b-ext2.3", "0.8b-ext2.3"]
end
|
#validate_clone_vapp_options(options) ⇒ Object
8
9
10
11
12
13
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb', line 8
def validate_clone_vapp_options(options)
valid_opts = [:name, :poweron]
unless valid_opts.all? { |opt| options.keys.include?(opt) }
raise ArgumentError.new("Required data missing: #{(valid_opts - options.keys).map(&:inspect).join(", ")}")
end
end
|
#validate_instantiate_vapp_template_options(catalog_item_uri, options) ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb', line 8
def validate_instantiate_vapp_template_options(catalog_item_uri, options)
valid_opts = [:name, :vdc_uri, :network_uri, :cpus, :memory, :row, :group]
unless valid_opts.all? { |opt| options.keys.include?(opt) }
raise ArgumentError.new("Required data missing: #{(valid_opts - options.keys).map(&:inspect).join(", ")}")
end
catalog_item = get_catalog_item( catalog_item_uri ).body
catalog_item[:Entity] = [ catalog_item[:Entity] ] if catalog_item[:Entity].is_a?(Hash)
catalog_item[:Link] = [ catalog_item[:Link] ] if catalog_item[:Link].is_a?(Hash)
options[:template_uri] = begin
catalog_item[:Entity].detect { |entity| entity[:type] == "application/vnd.vmware.vcloud.vAppTemplate+xml" }[:href]
rescue
raise RuntimeError.new("Unable to locate template uri for #{catalog_item_uri}")
end
customization_options = begin
customization_href = catalog_item[:Link].detect { |link| link[:type] == "application/vnd.tmrk.ecloud.catalogItemCustomizationParameters+xml" }[:href]
get_customization_options( customization_href ).body
rescue
raise RuntimeError.new("Unable to get customization options for #{catalog_item_uri}")
end
if options[:password] and customization_options[:CustomizePassword] == "false"
raise ArgumentError.new("This catalog item (#{catalog_item_uri}) does not allow setting a password.")
end
if customization_options[:CustomizePassword] == "true" and ( options[:password].nil? or options[:password].empty? )
raise ArgumentError.new("This catalog item (#{catalog_item_uri}) requires a :password to instantiate.")
end
end
|
#validate_internet_service_data(service_data, configure = false) ⇒ Object
38
39
40
41
42
43
44
45
46
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb', line 38
def validate_internet_service_data(service_data, configure=false)
required_opts = [:name, :protocol, :port, :description, :enabled]
if configure
required_opts + [ :id, :href, :timeout ]
end
unless required_opts.all? { |opt| service_data.keys.include?(opt) }
raise ArgumentError.new("Required Internet Service data missing: #{(required_opts - service_data.keys).map(&:inspect).join(", ")}")
end
end
|
#validate_internet_service_monitor(monitor) ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb', line 48
def validate_internet_service_monitor(monitor)
required_opts = [:type, :url_send_string, :http_headers, :receive_string, :is_enabled]
unless required_opts.all? { |opt| monitor.keys.include?(opt) && monitor[opt] }
raise ArgumentError.new("Required Monitor data missing: #{(required_opts - monitor.keys).map(&:inspect).join(", ")}")
end
unless ['HTTP','ECV'].include?(monitor[:type])
raise ArgumentError.new("Supported monitor types are: ECV & HTTP")
end
unless monitor[:http_headers].is_a?(Array) || monitor[:http_headers].is_a?(String)
raise ArgumentError.new("Monitor :http_headers must be a String or Array")
end
unless [true, false, "true", "false"].include?(monitor[:is_enabled])
raise ArgumentError.new("Monitor :is_enabled must be true or false")
end
end
|
#validate_network_data(network_data, configure = false) ⇒ Object
7
8
9
10
11
12
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/configure_network.rb', line 7
def validate_network_data(network_data, configure=false)
valid_opts = [:id, :href, :name, :rnat, :address, :broadcast, :gateway]
unless valid_opts.all? { |opt| network_data.keys.include?(opt) }
raise ArgumentError.new("Required data missing: #{(valid_opts - network_data.keys).map(&:inspect).join(", ")}")
end
end
|
#validate_network_ip_data(network_ip_data, configure = false) ⇒ Object
7
8
9
10
11
12
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/configure_network_ip.rb', line 7
def validate_network_ip_data(network_ip_data, configure=false)
valid_opts = [:id, :href, :name, :status, :server, :rnat]
unless valid_opts.all? { |opt| network_ip_data.keys.include?(opt) }
raise ArgumentError.new("Required data missing: #{(valid_opts - network_ip_data.keys).map(&:inspect).join(", ")}")
end
end
|
#validate_public_ip_address_data(ip_address_data) ⇒ Object
31
32
33
34
35
36
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb', line 31
def validate_public_ip_address_data(ip_address_data)
valid_opts = [:name, :href, :id]
unless valid_opts.all? { |opt| ip_address_data.keys.include?(opt) }
raise ArgumentError.new("Required Internet Service data missing: #{(valid_opts - ip_address_data.keys).map(&:inspect).join(", ")}")
end
end
|
#validate_vapp_data(vapp_data) ⇒ Object
85
86
87
88
89
90
|
# File 'lib/fog/vcloud/terremark/ecloud/requests/configure_vapp.rb', line 85
def validate_vapp_data(vapp_data)
valid_opts = [:name, :cpus, :memory, :disks]
unless valid_opts.all? { |opt| vapp_data.keys.include?(opt) }
raise ArgumentError.new("Required Vapp data missing: #{(valid_opts - vapp_data.keys).map(&:inspect).join(", ")}")
end
end
|