def instantiate_vapp_template(name, vapp_template, options = {})
raise ArgumentError.new("Name must be fewer than 15 characters") unless name.length < 15
raise ArgumentError.new("vApp Image Template is a compulsary parameter") unless vapp_template
options["ssh_key_fingerprint"] ||= default_ssh_key["FingerPrint"]
options["cpus"] ||= 1
options["memory"] ||= 512
options["network_id"] ||= default_network_id
options["vdc_id"] ||= default_vdc_id
options["primary_dns"] ||= "208.67.222.222"
options["secondary_dns"] ||= "208.67.220.220"
data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<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\">\n<VAppTemplate href=\"\#{@scheme}://\#{@host}/\#{@path}/vAppTemplate/\#{vapp_template}\" />\n<InstantiationParams xmlns:vmw=\"http://www.vmware.com/schema/ovf\">\n<ProductSection xmlns:ovf=\"http://schemas.dmtf.org/ovf/envelope/1\" xmlns:q1=\"http://www.vmware.com/vcloud/v0.8\">\n<Property xmlns=\"http://schemas.dmtf.org/ovf/envelope/1\" ovf:key=\"primaryDNS\" ovf:value=\"\#{options['primary_dns']}\" />\n<Property xmlns=\"http://schemas.dmtf.org/ovf/envelope/1\" ovf:key=\"secondaryDNS\" ovf:value=\"\#{options['secondary_dns']}\" />\n<Property xmlns=\"http://schemas.dmtf.org/ovf/envelope/1\" ovf:key=\"sshKeyFingerprint\" ovf:value=\"\#{options['ssh_key_fingerprint']}\" />\n</ProductSection>\n<VirtualHardwareSection xmlns:q1=\"http://www.vmware.com/vcloud/v0.8\">\n<Item xmlns=\"http://schemas.dmtf.org/ovf/envelope/1\">\n<InstanceID xmlns=\"http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData\">1</InstanceID>\n<ResourceType xmlns=\"http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData\">3</ResourceType>\n<VirtualQuantity xmlns=\"http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData\">\#{options['cpus']}</VirtualQuantity>\n</Item>\n<Item xmlns=\"http://schemas.dmtf.org/ovf/envelope/1\">\n<InstanceID xmlns=\"http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData\">2</InstanceID>\n<ResourceType xmlns=\"http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData\">4</ResourceType>\n<VirtualQuantity xmlns=\"http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData\">\#{options['memory']}</VirtualQuantity>\n</Item>\n</VirtualHardwareSection>\n<NetworkConfigSection>\n<NetworkConfig>\n<NetworkAssociation href=\"\#{@scheme}://\#{@host}/\#{@path}/network/\#{options['network_id']}\"/>\n</NetworkConfig>\n</NetworkConfigSection>\n</InstantiationParams>\n</InstantiateVAppTemplateParams>\n"
request(
:body => data,
:expects => 200,
:headers => { "Content-Type" => "application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml" },
:method => "POST",
:parser => Fog::Parsers::Terremark::InstantiateVappTemplate.new,
:path => "vdc/#{options['vdc_id']}/action/instantiatevAppTemplate"
)
end