module Fog module Generators module Compute module VcloudDirector # This is the data structure it accepts, this is the output of # #get_vm_customization: # # {:type=>"application/vnd.vmware.vcloud.guestCustomizationSection+xml", # :href=> # "https://example.com/api/vApp/vm-2bbbf556-55dc-4974-82e6-aa6e814f0b64/guestCustomizationSection/", # :id=>"vm-2bbbf556-55dc-4974-82e6-aa6e814f0b64", # :enabled=>false, # :change_sid=>false, # :virtual_machine_id=>"2bbbf556-55dc-4974-82e6-aa6e814f0b64", # :join_domain_enabled=>false, # :use_org_settings=>false, # :admin_password_enabled=>false, # :admin_password_auto=>true, # :reset_password_required=>false, # :customization_script=>"hola\nmundo", # :has_customization_script=>true, # :computer_name=>"DEVWEB-001"} # # This is what it generates: # # # Specifies Guest OS Customization Settings # true # true # 55cc91f2-7e12-48d4-ad90-6f637a51fd88 # false # false # true # true # false # DEVWEB-001 # # # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/types/GuestCustomizationSectionType.html class Customization def initialize(attrs={}) @attrs = attrs end def generate_xml output = "" output << header output << body(@attrs) output << tail output end private def header <<-END END end # The order matters: http://communities.vmware.com/thread/448760?start=0&tstart=0 # # CustomizationScript: Script to run on guest customization. You # could use XML escape sequence to make multiple lines script. # The script could contain any UNICODE symbol by specifying its # number in format &#xxxx; where xxxx is the number. The predefined # symbols in the XML are: # * & & # * < < # * > > # * " " # * ' ' def body(opts={}) <<-END Specifies Guest OS Customization Settings #{opts[:enabled]} #{opts[:change_sid]} #{opts[:virtual_machine_id]} #{opts[:join_domain_enabled]} #{opts[:use_org_settings]} #{opts[:admin_password_enabled]} #{opts[:admin_password_auto]} #{opts[:reset_password_required]} #{CGI::escapeHTML(opts[:customization_script]).gsub(/\r/, " ")} #{opts[:computer_name]} END end def tail <<-END END end end end end end end