lib/fog/vcloud_director/requests/compute/post_compose_vapp.rb
module Fog
module Compute
class VcloudDirector
class Real
require 'fog/vcloud_director/generators/compute/compose_vapp'
# Compose a vApp from existing virtual machines.
#
# This operation is asynchronous and returns a task that you can
# monitor to track the progress of the request.
#
# @param [String] id Object identifier of the vdc.
# @param [Hash] options
# @option options [Boolean] :powerOn Used to specify whether to power
# on vApp on deployment, if not set default value is true.
# @option options [Boolean] :deploy Used to specify whether to deploy
# the vApp, if not set default value is true.
# @option options [String] :name Used to identify the vApp.
# @option options [String] :networkName Used to connect the vApp and VMs to a VDC network, which has
# to exist beforehand.
# @option options [String] :networkHref Used to connect the vApp and VMs to a VDC network, which has
# to exist beforehand.
# @option options [String] :fenceMode Used to configure the network Mode (briged, isolated).
# @option options [String] :source_vms Array with VMs to be used to compose the vApp, each containing -
# :name, :href, :isGuestCustomizationEnabled, :computer_name and :ipAllocationMode (e.g. 'DHCP').
# @return [Excon::Response]
# * body<~Hash>:
#
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-ComposeVApp.html
# @since vCloud API version 0.9
def post_compose_vapp(id, options={})
body = Fog::Generators::Compute::VcloudDirector::ComposeVapp.new(options).generate_xml
request(
:body => body,
:expects => 201,
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.composeVAppParams+xml'},
:method => 'POST',
:parser => Fog::ToHashDocument.new,
:path => "vdc/#{id}/action/composeVApp"
)
end
end
end
end
end