lib/fog/vcloud_director/generators/compute/customization.rb in fog-maestrodev-1.15.0.20130927082724 vs lib/fog/vcloud_director/generators/compute/customization.rb in fog-maestrodev-1.18.0.20131111203459
- old
+ new
@@ -1,50 +1,50 @@
-# This is the data structure it accepts, this is the output of get_vm_disks
-#
-# {"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
-#
-# <vcloud:GuestCustomizationSection
-# xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
-# xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
-# href="https://vcloud.example.com/api/vApp/vm-55cc91f2-7e12-48d4-ad90-6f637a51fd88/guestCustomizationSection/"
-# ovf:required="false"
-# type="application/vnd.vmware.vcloud.guestCustomizationSection+xml">
-# <ovf:Info>Specifies Guest OS Customization Settings</ovf:Info>
-# <vcloud:Enabled>true</vcloud:Enabled>
-# <vcloud:ChangeSid>true</vcloud:ChangeSid>
-# <vcloud:VirtualMachineId>55cc91f2-7e12-48d4-ad90-6f637a51fd88</vcloud:VirtualMachineId>
-# <vcloud:JoinDomainEnabled>false</vcloud:JoinDomainEnabled>
-# <vcloud:UseOrgSettings>false</vcloud:UseOrgSettings>
-# <vcloud:AdminPasswordEnabled>true</vcloud:AdminPasswordEnabled>
-# <vcloud:AdminPasswordAuto>true</vcloud:AdminPasswordAuto>
-# <vcloud:ResetPasswordRequired>false</vcloud:ResetPasswordRequired>
-# <vcloud:ComputerName>DEVWEB-001</vcloud:ComputerName>
-# </vcloud:GuestCustomizationSection>
-#
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:
+ #
+ # <vcloud:GuestCustomizationSection
+ # xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
+ # xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
+ # href="https://vcloud.example.com/api/vApp/vm-55cc91f2-7e12-48d4-ad90-6f637a51fd88/guestCustomizationSection/"
+ # ovf:required="false"
+ # type="application/vnd.vmware.vcloud.guestCustomizationSection+xml">
+ # <ovf:Info>Specifies Guest OS Customization Settings</ovf:Info>
+ # <vcloud:Enabled>true</vcloud:Enabled>
+ # <vcloud:ChangeSid>true</vcloud:ChangeSid>
+ # <vcloud:VirtualMachineId>55cc91f2-7e12-48d4-ad90-6f637a51fd88</vcloud:VirtualMachineId>
+ # <vcloud:JoinDomainEnabled>false</vcloud:JoinDomainEnabled>
+ # <vcloud:UseOrgSettings>false</vcloud:UseOrgSettings>
+ # <vcloud:AdminPasswordEnabled>true</vcloud:AdminPasswordEnabled>
+ # <vcloud:AdminPasswordAuto>true</vcloud:AdminPasswordAuto>
+ # <vcloud:ResetPasswordRequired>false</vcloud:ResetPasswordRequired>
+ # <vcloud:ComputerName>DEVWEB-001</vcloud:ComputerName>
+ # </vcloud:GuestCustomizationSection>
+ #
+ # @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
@@ -53,48 +53,53 @@
output << body(@attrs)
output << tail
output
end
+ private
+
def header
- '<GuestCustomizationSection xmlns="http://www.vmware.com/vcloud/v1.5"
+ <<-END
+ <GuestCustomizationSection xmlns="http://www.vmware.com/vcloud/v1.5"
xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
- type="application/vnd.vmware.vcloud.guestCustomizationSection+xml"
- ovf:required="false"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://schemas.dmtf.org/ovf/envelope/1
- http://schemas.dmtf.org/ovf/envelope/1/dsp8023_1.1.0.xsd
- http://www.vmware.com/vcloud/v1.5
- http://zone01.bluelock.com/api/v1.5/schema/master.xsd">'
+ type="application/vnd.vmware.vcloud.guestCustomizationSection+xml">
+ END
end
- # the order maters http://communities.vmware.com/thread/448760?start=0&tstart=0
-
- # http://www.vmware.com/support/vcd/doc/rest-api-doc-1.5-html/types/GuestCustomizationSectionType.html
- # 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: * & & * < < * > > * " " * ' '
-
+ # 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={})
- body = "
+ <<-END
<ovf:Info>Specifies Guest OS Customization Settings</ovf:Info>
<Enabled>#{opts[:enabled]}</Enabled>
<ChangeSid>#{opts[:change_sid]}</ChangeSid>
<VirtualMachineId>#{opts[:virtual_machine_id]}</VirtualMachineId>
<JoinDomainEnabled>#{opts[:join_domain_enabled]}</JoinDomainEnabled>
<UseOrgSettings>#{opts[:use_org_settings]}</UseOrgSettings>
<AdminPasswordEnabled>#{opts[:admin_password_enabled]}</AdminPasswordEnabled>
<AdminPasswordAuto>#{opts[:admin_password_auto]}</AdminPasswordAuto>
<ResetPasswordRequired>#{opts[:reset_password_required]}</ResetPasswordRequired>
<CustomizationScript>#{CGI::escapeHTML(opts[:customization_script]).gsub(/\r/, " ")}</CustomizationScript>
- <ComputerName>#{opts[:computer_name]}</ComputerName>"
+ <ComputerName>#{opts[:computer_name]}</ComputerName>
+ END
end
def tail
- '</GuestCustomizationSection>'
+ <<-END
+ </GuestCustomizationSection>
+ END
end
-
end
-
end
end
end
end