def build_request_body(options)
xml = Builder::XmlMarkup.new
xml.CreateVirtualMachine(:name => options[:name]) do
xml.ProcessorCount options[:cpus]
xml.Memory do
xml.Unit "MB"
xml.Value options[:memory]
end
xml.Layout do
xml.NewRow options[:row]
xml.NewGroup options[:group]
end
xml.Description options[:description]
xml.Tags do
options[:tags].each do |tag|
xml.Tag tag
end
end
if options[:customization] == :windows
xml.WindowsCustomization do
xml.NetworkSettings do
xml.NetworkAdapterSettings do
options[:network_uri].each do |uri|
xml.NetworkAdapter do
xml.Network(:href => uri[:href], :name => uri[:name], :type => "application/vnd.tmrk.cloud.network")
xml.IpAddress uri[:ip]
end
end
end
if options[:dns_settings]
xml.DnsSettings do
xml.PrimaryDns options[:dns_settings][:primary_dns]
if options[:dns_settings][:secondary_dns]
xml.SecondaryDns options[:dns_settings][:secondary_dns]
end
end
end
end
xml.Password options[:windows_password]
if options[:windows_license_key]
xml.LicenseKey options[:windows_license_key]
end
end
else
xml.LinuxCustomization do
xml.NetworkSettings do
xml.NetworkAdapterSettings do
options[:network_uri] = options[:network_uri].is_a?(String) ? [options[:network_uri]] : options[:network_uri]
options[:network_uri].each do |uri|
xml.NetworkAdapter do
xml.Network(:href => uri[:href], :name => uri[:name], :type => "application/vnd.tmrk.cloud.network")
xml.IpAddress uri[:ip]
end
end
end
if options[:dns_settings]
xml.DnsSettings do
xml.PrimaryDns options[:dns_settings][:primary_dns]
if options[:dns_settings][:secondary_dns]
xml.SecondaryDns options[:dns_settings][:secondary_dns]
end
end
end
end
end
xml.SshKey(:href => options[:ssh_key_uri])
end
xml.PoweredOn options[:powered_on]
xml.Template(:href => options[:template_uri], :type => options[:template_type])
end
end