def instantiate_vapp_template(name, vapp_template, options = {})
unless name.length < 15
raise ArgumentError.new('Name must be fewer than 15 characters')
end
unless vapp_template
raise ArgumentError.new("vApp Image Template is a compulsary parameter")
end
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::Shared::InstantiateVappTemplate.new,
:path => "vdc/#{options['vdc_id']}/action/instantiatevAppTemplate"
)
end