Virtual Guest Package schema


<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
 <xsd:documentation xml:lang="en">Virtual guest package input file schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="VirtualGuestPackageConfiguration">  
 <xsd:complexType>
  <xsd:sequence>
   <!-- GeneralInfo contains information about package and name of the virtual guest  -->
   <xsd:element name="GeneralInfo" type="GeneralInfoType"/>
   <!-- Currently there is no support for RBACInfo through BL CLI  -->
   <xsd:element name="RBACInfo" type="RBACInfoType" minOccurs="0"/>
   <!-- PlatformInfo contains information about specific information about the platform guest  -->
   <xsd:element name="PlatformInfo" type="PlatformInfoType"/>
   <!-- LocalProperties - can add local properties by using this section  -->
   <xsd:element name="LocalProperties" type="LocalPropertiesType" minOccurs="0"/>
  </xsd:sequence>
 </xsd:complexType>
</xsd:element>
<xsd:complexType name="GeneralInfoType">
 <xsd:sequence>
  <xsd:element name="PackageName" type="xsd:string"/>
  <xsd:element name="PackageDescription" type="xsd:string"  minOccurs="0"/>
  <!-- TODO need to update cli info -->
  <xsd:element name="DepotGroupId" type="nonNegativeInt"/>
  <!-- Possible values for VirtualGuestPackageType are:
   VirtualGuestPackageType  - Description
   1-VMWare create Bare metal VM package Type
   2-VMWare create VM from template/existing VM package type.
   3-IBM create lpar package type
   4-IBM create VIOS package type
   7-Solaris create non global zone package type
   10-Citrix Xenserver create virtual machine from build-in template/custom template/existing VM package type.
   11-RHEL KVM create domain package type.
   12-RHEV create VM from template.
   13-RHEL create Bare Metal VM.
   -->
  <xsd:element name="VirtualGuestPackageType" type="nonNegativeInt"/>
  <!-- VirtualGuestName - Name of the virtual guest you want to create -->
  <xsd:element name="VirtualGuestName" type="xsd:string"  minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
<!-- Currently there is no support for RBACInfo through BL CLI  -->
<xsd:complexType name="RBACInfoType">
 <xsd:sequence>
  <xsd:element name="RBACEntry" type="RBACEntryType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RBACEntryType">
 <xsd:sequence>
  <xsd:element name="Role" type="xsd:string"/>
  <xsd:element name="Authorization" type="xsd:string"/>
  <xsd:element name="Type" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PlatformInfoType">
 <xsd:sequence>
  <xsd:choice>
   <xsd:element name="VMwareInfo" type="VMwareInfoType"/>
   <xsd:element name="PartitionInfo" type="PartitionInfoType"/>
   <xsd:element name="ZoneInfo" type="ZoneInfoType"/>
   <xsd:element name="RHELKVMInfo" type="RHELKVMInfoType"/>
   <xsd:element name="CitrixXenInfo" type="CitrixXenInfoType"/>
   <!-- VirtualGuestInfo is generic tag will be helpful to represent virtual guest information for all newly
   added platforms -->
   <xsd:element name="VirtualGuestInfo" type="VirtualGuestInfoType"/>
  </xsd:choice>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="VMwareInfoType">
 <xsd:sequence>
  <!-- VMOrTemplateId is applicable only for VMWare creating package by using existing template or VM(templatePackages)
-->
  <xsd:element name="VMOrTemplateId" type="xsd:string" minOccurs="0"/>
  <xsd:element name="ClonedDiskFormat" type="ClonedDiskFormatEnum" minOccurs="0"/>
  <xsd:element name="IsCustomConfig" type="booleanString" minOccurs="0" default="false"/>
  <xsd:element name="VMXDatastore" type="xsd:string" minOccurs="0"/>
  <!-- GuestOSId,  GuestOSVersionId can be fetched from CLI  Virtualization::listVirtualEntitiesByEntityManagerServerIdAndEntityType.
  Use input entity type for this cli is - VMwareGuestOSMapping
  Note: 1) For create VGP - GuestOSId,  GuestOSVersionId can be applicable for VGP type VMwareBareMetal only. For VGP Type Tempalte/VM clone, these values will be fetched from given template/vm.
     2) For update VGP/create VGJ - GuestOSId,  GuestOSVersionIdvalues can't be modified for  template/VM clone type packages.
  -->
  <xsd:element name="GuestOSId" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="GuestOSVersionId" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="NumOfProcessors" type="nonNegativeInt"  minOccurs="0"/>
  <xsd:element name="MemoryInMB" type="nonNegativeInt"  minOccurs="0"/>  
  <xsd:element name="VMwareDiskSettings" type="VMwareDiskSettingsType" minOccurs="0"/>
  <xsd:element name="VMwareNetworkSettings" type="VMwareNetworkSettingsType" minOccurs="0"/>
  <!-- OSCustomizationInfo is applicable only for VMWare template/VM clone type packages and Guest OS for the package should be either windows or linux.
-->
  <xsd:element name="OSCustomizationInfo" type="OSCustomizationInfoType" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ClonedDiskFormatEnum">
 <xsd:restriction base="xsd:string">
  <xsd:enumeration value="sameAsSource"/>
  <xsd:enumeration value="thinProvision"/>
  <xsd:enumeration value="thickProvision"/>
 </xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="OSCustomizationInfoType">
 <xsd:sequence>
  <xsd:choice>
   <xsd:element name="WindowsCustomizationInfo" type="WindowsCustomizationInfoType"/>
   <xsd:element name="LinuxCustomizationInfo" type="LinuxCustomizationInfoType"/>
  </xsd:choice>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="VMwareDiskSettingsType">  
 <xsd:sequence>
  <xsd:element name="SCSIAdapterType" minOccurs="0">
   <xsd:simpleType>
          <xsd:restriction base="xsd:string">
          <xsd:enumeration value="LSILogic"/>
          <xsd:enumeration value="BusLogic"/>
       </xsd:restriction>
   </xsd:simpleType>
  </xsd:element>
  <xsd:element name="DiskInfo" type="DiskInfoType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DiskInfoType">
 <xsd:sequence>  
  <xsd:element name="DiskSize" type="nonNegativeInt"/>
  <xsd:element name="DiskSizeUnit" type="xsd:string"/>
  <xsd:element name="Datastore" type="xsd:string"/>
  <xsd:element name="ThinProvisioning" type="booleanString" minOccurs="0" default="false"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="VMwareNetworkSettingsType">
 <xsd:sequence>
  <xsd:element name="NetworkConnection" type="NetworkConnectionType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NetworkConnectionType">
 <xsd:sequence>  
  <xsd:element name="Network" type="xsd:string"/>
  <xsd:element name="Adapter">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
              <xsd:enumeration value="VMXNET"/>
              <xsd:enumeration value="VMXNET 2 (Enhanced)"/>
              <xsd:enumeration value="VMXNET 3"/>
              <xsd:enumeration value="E1000"/>
              <xsd:enumeration value="Flexible (default)"/>
            </xsd:restriction>
           </xsd:simpleType>
          </xsd:element>
  <xsd:element name="ConnectAtPowerOn" type="booleanString"  minOccurs="0" default="false"/>
  <!-- GuestNetworkConfiguration settings will be applied if OSCustomizationInfo section mentioned in the package and Guest OS should be either windows or linux.
-->
  <xsd:element name="GuestNetworkConfiguration" type="GuestNetworkConfigurationType" minOccurs="0"/>   
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:complexType name="WindowsCustomizationInfoType">
 <xsd:sequence>
  <!-- If computerName is not provided, it will be auto generated -->  
  <xsd:element name="ComputerName" type="xsd:string" minOccurs="0"/>
  <xsd:element name="AdminPassword" type="xsd:string"/>
  <xsd:choice>
   <xsd:element name="Workgroup" type="xsd:string"/>   
   <xsd:group ref="WindowsDomainGroup"/>   
  </xsd:choice>
  <xsd:element name="UserName" type="xsd:string"/>   
  <xsd:element name="Organization" type="xsd:string"/>   
  <xsd:element name="LicenseKey" type="xsd:string" minOccurs="0"/>
  <!-- LicenseType:: default value taking for license type is: perServer. User can override this by giving value perSeat.-->
  <xsd:element name="LicenseType" default="perServer">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
              <xsd:enumeration value="perServer"/>
              <xsd:enumeration value="perSeat"/>
            </xsd:restriction>
           </xsd:simpleType>
          </xsd:element>
          <!-- NumOfConnections:: default value taking for number of connections, if license type is perServer:5.
            User can override this by giving value.-->
  <xsd:element name="NumOfConnections" type="nonNegativeInt"  minOccurs="0" default="5"/>
  <!--TimezoneId values are:
   1::(GMT-12:00) International Dateline
   2::(GMT-11:00) Midway Island, Samoa
   3::(GMT-10:00) Hawaii
   4::(GMT-09:00) Alaska
   5::(GMT-08:00) Pacific Time (US, Canada, Tijuana
   6::(GMT-07:00) Mountain Time (US, Canada)
   7::(GMT-07:00) Arizona
   8::(GMT-06:00) Central Time (US, Canada)
   9::(GMT-06:00) Saskatchewan
   10::(GMT-06:00) Mexico City
   11::(GMT-06:00) Central America
   12::(GMT-05:00) Eastern Time (US, Canada)
   13::(GMT-05:00) Indiana (East)
   14::(GMT-05:00) S.A. Pacific
   15::(GMT-04:00) Atlantic Time (Canada)
   16::(GMT-04:00) S.A. Western
   17::(GMT-04:00) Pacific S.A.
   18::(GMT-03:30) Newfoundland
   19::(GMT-03:00) E. South Americe
   20::(GMT-03:00) S.A Eastern
   21::(GMT-03:00) Greenland
   22::(GMT-02:00) Mid-Atlantic
   23::(GMT-01:00) Azores
   24::(GMT-01:00) Cape Verde Is.
   25::(GMT) GMT (Greenwich Mean Time)
   26::(GMT) GMT Greenwich
   27::(GMT+01:00) Central Europe
   28::(GMT+01:00) Central European
   29::(GMT+01:00) Romance
   30::(GMT+01:00) W. Europe
   31::(GMT+01:00) W. Central Africa
   32::(GMT+02:00) E. Europe
   33::(GMT+02:00) Cairo
   34::(GMT+02:00) EET (Helsinki, Riga, Tallinn)
   35::(GMT+02:00) EET (Athens, Istanbul, Minsk)
   36::(GMT+02:00) Jerusalem
   37::(GMT+03:00) S. Africa: Harare, Pretoria
   38::(GMT+03:00) Russian
   39::(GMT+03:00) Arab
   40::(GMT+03:00) E. Africa
   41::(GMT+03:30) Iran
   42::(GMT+04:00) Arabian
   43::(GMT+04:00) Caucasus Pacific (US, Canada)
   44::(GMT+04:30) Afghanistan
   45::(GMT+05:00) Russia Yekaterinburg
   46::(GMT+05:00) W. Asia
   47::(GMT+05:30) India
   48::(GMT+05:45) Nepal
   49::(GMT+06:00) Central Asia
   50::(GMT+06:00) Sri Lanka
   51::(GMT+06:00) N. Central Asia
   52::(GMT+06:30) Rangoon
   53::(GMT+07:00) S.E. Asia
   54::(GMT+07:00) N. Asia
   55::(GMT+08:00) China
   56::(GMT+08:00) Singapore
   57::(GMT+08:00) Taipei
   58::(GMT+08:00) W. Australia
   59::(GMT+08:00) N. Asia East
   60::(GMT+09:00) Seoul
   61::(GMT+09:00) Tokyo
   62::(GMT+09:00) Yakutsk
   63::(GMT+09:30) Darwin
   64::(GMT+09:30) Central Australia
   65::(GMT+10:00) A.U.S. Eastern
   66::(GMT+10:00) E. Australia
   67::(GMT+10:00) Tasmania
   68::(GMT+10:00) Vladivostok
   69::(GMT+10:00) W. Pacific
   70::(GMT+11:00) Central Pacific
   71::(GMT+12:00) Fiji, Kamchatka, Marshall Is.
   72::(GMT+12:00) New Zealand
   73::(GMT+13:00) Tonga
   -->
  <xsd:element name="TimezoneId" type="nonNegativeInt"   minOccurs="0" default="1"/>
  <!--LocaleId values are:
   1::English United States
   2::French Standard
   3::Japanese
   4::German Standard
   -->
  <xsd:element name="LocaleId" type="nonNegativeInt"   minOccurs="0" default="1"/>
  <!--DnsSuffix is global for a operating system, this will take comma separated DNS suffixes -->
  <xsd:element name="DnsSuffix" type="stringWithMaxLength" minOccurs="0" />
  <!--RunOnceCommands will contain commands for execution in sequence -->
  <xsd:element name="RunOnceCommands" type="RunOnceCommandsType" minOccurs="0" />
   \\
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:complexType name="LinuxCustomizationInfoType">
 <xsd:sequence>
  <!-- If computerName is not provided, it will be auto generated -->   
  <xsd:element name="HostName" type="xsd:string" minOccurs="0"/>
  <xsd:element name="Domain" type="xsd:string" minOccurs="0"/>
  <!--DnsSuffix is global for a operating system, this will take comma separated DNS suffixes -->
  <xsd:element name="DnsSuffix" type="stringWithMaxLength" minOccurs="0" />
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:group name="WindowsDomainGroup">
 <xsd:sequence>
  <xsd:element name="WindowsDomain" type="xsd:string"/>
  <xsd:element name="DomainAdminUser" type="xsd:string"/>
  <xsd:element name="DomainAdminPassword" type="xsd:string"/>
 </xsd:sequence>
</xsd:group>
<xsd:complexType name="GuestNetworkConfigurationType">
 <xsd:sequence>
  <xsd:choice>
   <xsd:element name="AutoIPAddress" type="booleanString"/>
   <xsd:group ref="IPAddressGroup"/>   
  </xsd:choice>
  <xsd:choice>
   <xsd:element name="AutoDNS" type="booleanString"/>
   <xsd:group ref="DNSGroup"/>  
  </xsd:choice>
  <!-- DnsSuffixForConnection will be applicable for Windows Guest OS only -->
  <xsd:element name="DnsSuffixForConnection" type="xsd:string" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:group name="IPAddressGroup">
 <xsd:sequence>
  <xsd:element name="IPAddress" type="xsd:string"/>
  <xsd:element name="SubnetMask" type="xsd:string"/>
  <xsd:element name="PrefixLength" type="xsd:string"/>
  <xsd:element name="DefaultGateway" type="xsd:string"/>
 </xsd:sequence>
</xsd:group>
<xsd:group name="DNSGroup">
 <xsd:sequence>
  <xsd:element name="PrimaryDNS" type="xsd:string"/>
  <xsd:element name="SecondaryDNS" type="xsd:string" minOccurs="0"/>
  <!-- TertiaryDNS will be applicable for Linux Guest OS only -->
  <xsd:element name="TertiaryDNS" type="xsd:string" minOccurs="0"/>
  <!-- PrimaryDnsSuffix will be applicable for Linux Guest OS only keeping this for backward compatibility-->
           <xsd:element name="PrimaryDnsSuffix" type="xsd:string" minOccurs="0"/>      
 </xsd:sequence>
</xsd:group>
 \\
<xsd:complexType name="RunOnceCommandsType">
 <xsd:sequence>
  <xsd:element name="Command" type="stringWithMaxLength" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PartitionInfoType">
 <xsd:sequence>
  <xsd:element name="PartitionGeneralSettings" type="PartitionGeneralSettingsType"/>
  <xsd:element name="ProcessorSettings" type="ProcessorSettingsType"/>
  <xsd:element name="MemorySettings" type="MemorySettingsType"/>
  <!-- Storage details are applicable for client LPARs only -->
  <xsd:element name="Storage" type="PartitionStorageType"  minOccurs="0"/>
  <xsd:element name="PhysicalIOs" type="PhysicalIOsType" minOccurs="0"/>
  <xsd:element name="VirtualAdapters" type="VirtualAdaptersType" minOccurs="0"/>
  <xsd:element name="LHEAs" type="LHEAsType" minOccurs="0"/>   
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:complexType name="PartitionStorageType">
 <xsd:choice>
  <xsd:sequence>
   <xsd:element name="VirtualDisks" type="PartitionVirtualDisksType"  minOccurs="0"/>
   <xsd:element name="PhysicalVolumes" type="PartitionPhysicalVolumesType" minOccurs="0"/>
   <xsd:element name="FiberChannelPorts" type="PartitionFiberChannelPortsType" minOccurs="0"/>
  </xsd:sequence>
 </xsd:choice>
</xsd:complexType>
 \\
<xsd:complexType name="PartitionVirtualDisksType">
 <xsd:sequence>
  <xsd:element name="VirtualDisk" type="PartitionVirtualDiskType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:complexType name="PartitionPhysicalVolumesType">
 <xsd:sequence>
  <xsd:element name="PhysicalVolume" type="PartitionPVOrFCVolumeType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:complexType name="PartitionFiberChannelPortsType">
 <xsd:sequence>
  <xsd:element name="FiberChannelPort" type="PartitionPVOrFCVolumeType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:complexType name="PartitionVirtualDiskType">
 <xsd:sequence>
  <!-- If disk name is not provided, it will be auto generated by system as LV_PARTITIONID_SVSA_CVSA-->
  <xsd:element name="Name" type="xsd:string" minOccurs="0"/>
  <xsd:element name="SizeInGB" type="nonNegativeDouble"/>
  <xsd:element name="Location" type="xsd:string"/>   
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:complexType name="PartitionPVOrFCVolumeType">
 <xsd:sequence>
  <xsd:element name="Location" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:complexType name="PartitionGeneralSettingsType">
 <xsd:sequence>
  <!-- If PartitionId is not provided, it will be auto generated by hypervisor-->  
  <xsd:element name="PartitionId" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="ProfileName" type="xsd:string" minOccurs="0"/>
  <!-- defaulting to false value for UseAllResources -->
  <xsd:element name="UseAllResources" type="booleanString"  minOccurs="0" default="false"/>   
  <xsd:element name="OptionalSettings" type="OptionalSettingsType" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="OptionalSettingsType">
 <xsd:sequence>
  <xsd:element name="ConnectionMonitoring" type="booleanString"/>
  <xsd:element name="AutoStartManagedSystem" type="booleanString"/>
  <xsd:element name="RedundantErrorPathReporting" type="booleanString"/>
  <!-- boot_mode(can applicable for AIX, Linux, and virtual I/O server only)
                Valid values are:
                       norm - normal
                       dd   - diagnostic with default boot list
                       ds   - diagnostic with stored boot list
                       of   - Open Firmware OK prompt
                       sms  - System Management Services
   -->
  <xsd:element name="BootMode">
   <xsd:simpleType>
          <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Normal"/>
          <xsd:enumeration value="dd"/>
          <xsd:enumeration value="ds"/>
          <xsd:enumeration value="of"/>
          <xsd:enumeration value="sms"/>
       </xsd:restriction>
   </xsd:simpleType>
  </xsd:element>
  <xsd:element name="WorkloadGroupId" type="xsd:string"/>
  <!-- MoverServicePartition is applicable for package type IBM VIOS only-->  
  <xsd:element name="MoverServicePartition" type="booleanString" minOccurs="0"/>  
 </xsd:sequence>
</xsd:complexType>  
<xsd:complexType name="ProcessorSettingsType">
 <xsd:sequence>
  <!-- defaulting to shared mode -->
  <xsd:element name="ProcessorMode" minOccurs="0" default="shared">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value="shared"/>
          <xsd:enumeration value="ded"/>
       </xsd:restriction>
   </xsd:simpleType>
  </xsd:element>
  <!--  processor sharing_mode  (From Bladelogic UI, ProcessorSharingMode set as 'share_idle_procs' always incase of dedicated processors)
                       Valid values for partitions using  dedicated processors are:
                       keep_idle_procs  - never share
                                processors
                       share_idle_procs - share processors only
                                when partition is inactive
                       share_idle_procs_active - share
                                processors only when partition
                                is active (POWER6 servers only)
                       share_idle_procs_always - always share
                                processors (POWER6 servers only)
                           \\
                       Valid values for partitions using shared  processors are:
                       cap   - capped
                       uncap - uncapped
   -->
  <!-- default to cap in case of shared mode. default to share_idle_proc in case of dedicated mode. -->
  <xsd:element name="ProcessorSharingMode" minOccurs="0" default="cap">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value="keep_idle_procs"/>
          <xsd:enumeration value="share_idle_procs"/>
        <xsd:enumeration value="share_idle_procs_active"/>
          <xsd:enumeration value="share_idle_procs_always"/>
     <xsd:enumeration value="cap"/>
          <xsd:enumeration value="uncap"/>
       </xsd:restriction>
   </xsd:simpleType>
  </xsd:element>
  <xsd:element name="MinimumProcessingUnits" type="xsd:double" minOccurs="0" default="0.1"/>
  <!-- defaulting to 0.1 for DesiredProcessingUnits -->
  <xsd:element name="DesiredProcessingUnits" type="xsd:double" minOccurs="0" default="0.1"/>
  <xsd:element name="MaximumProcessingUnits" type="xsd:double" minOccurs="0" default="0.1"/>
  <xsd:element name="SharedPool" type="xsd:string"  minOccurs="0"/>
  <!-- MinimumProcessors value will default to the DesiredProcessors value if not provided as VGP input. -->
  <xsd:element name="MinimumProcessors" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="DesiredProcessors" type="nonNegativeInt"/>
  <!-- MaximumProcessors value will default to the DesiredProcessors value if not provided as VGP input. -->
  <xsd:element name="MaximumProcessors" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="UncappedWeight" type="nonNegativeInt" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="MemorySettingsType">
 <xsd:sequence>
  <!-- Memory mode by default taking as dedicated. 'shared' memory mode is applicable only for client partitions. -->
  <xsd:element name="MemoryMode"  minOccurs="0" default="ded">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value="shared"/>
          <xsd:enumeration value="ded"/>
       </xsd:restriction>
   </xsd:simpleType>
  </xsd:element>   
  <xsd:element name="MinimumMemory" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="DesiredMemory" type="nonNegativeInt"/>
  <xsd:element name="MaximumMemory" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="AMEFactor" type="xsd:double"  minOccurs="0"/>
  <xsd:element name="PrimaryPagingVIOS" type="xsd:string" minOccurs="0"/>
  <xsd:element name="SecondaryPagingVIOS" type="xsd:string" minOccurs="0"/>
  <xsd:element name="MemoryWeight" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="CustomEntitledMemory" type="nonNegativeInt" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HugePagesSettingsType">
 <xsd:sequence>
  <xsd:element name="MinimumNumOfHugePages" type="nonNegativeInt"/>
  <xsd:element name="DesiredNumOfHugePages" type="nonNegativeInt"/>
  <xsd:element name="MaximumNumOfHugePages" type="nonNegativeInt"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PhysicalIOsType">
 <xsd:sequence>
  <xsd:element name="PhysicalIO" type="PhysicalIOType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PhysicalIOType">
 <xsd:sequence>
  <xsd:element name="SlotDRCIndex" type="nonNegativeInt"/>
  <xsd:element name="SlotIOPoolId" type="xsd:string" minOccurs="0"/>
  <xsd:element name="Required" type="booleanString" minOccurs="0" default="false"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="VirtualAdaptersType">
 <xsd:sequence>
  <!-- for client the default value for MaxVirtualAdapters is 10. for VIOS server, the default is 20. -->
  <xsd:element name="MaxVirtualAdapters" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="EthernetAdapters" type="EthernetAdaptersType" minOccurs="0"/>
  <xsd:element name="FiberChannelAdapters" type="FiberChannelAdaptersType" minOccurs="0"/>
  <xsd:element name="SCSIAdapters" type="SCSIAdaptersType" minOccurs="0"/>
  <xsd:element name="SerialAdapters" type="SerialAdaptersType" minOccurs="0"/>   
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="EthernetAdaptersType">
 <xsd:sequence>
  <xsd:element name="EthernetAdapter" type="EthernetAdapterType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="EthernetAdapterType">
 <xsd:sequence>
  <!-- AdapterId value will be auto-generated if not provided as a part of VGP input. -->
  <xsd:element name="AdapterId" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="VirtualSwitch" type="xsd:string" minOccurs="0"/>
  <xsd:element name="VLANId" type="nonNegativeInt"/>
  <xsd:element name="Required" type="booleanString" minOccurs="0" default="false"/>
  <xsd:element name="AccessExternalNetwork" type="booleanString" minOccurs="0" default="false"/>
  <xsd:element name="TrunkPriority" type="nonNegativeInt" minOccurs="0"/>   
  <xsd:element name="AdditionalVLANs" type="AdditionalVLANsType" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="AdditionalVLANsType">
 <xsd:restriction base="xsd:string">
  <xsd:pattern value="\[Nn\]one|\[Aa\]ll|\[\d\]+(,\[\d\]+)*"/>
 </xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="FiberChannelAdaptersType">
 <xsd:sequence>
  <xsd:element name="FiberChannelAdapter" type="FiberChannelAdapterType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FiberChannelAdapterType">
 <xsd:sequence>
  <xsd:element name="AdapterId" type="nonNegativeInt"/>
  <xsd:element name="AdapterType">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value="client"/>
          <xsd:enumeration value="server"/>
       </xsd:restriction>
   </xsd:simpleType>
  </xsd:element>
  <xsd:element name="Required" type="booleanString"/>
  <!-- Supporting only remote partition Name  -->
  <!--
  <xsd:choice>
   <xsd:element name="RemotePartitionId" type="xsd:string"/>
   <xsd:element name="RemotePartitionName" type="xsd:string"/>
  </xsd:choice>
  -->
  <xsd:element name="RemotePartitionName" type="xsd:string"/>   
  <xsd:element name="RemoteAdapterId" type="xsd:string"/>
  <!-- If wwpns not mentioned, will be auto generated by system -->
  <xsd:element name="WWPNs" type="WWPNsType" minOccurs="0"/>   
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="WWPNsType">
 <xsd:sequence>
  <xsd:element name="WWPN" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SCSIAdaptersType">
 <xsd:sequence>
  <xsd:element name="SCSIAdapter" type="SCSIAdapterType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SCSIAdapterType">
 <xsd:sequence>
  <xsd:element name="AdapterId" type="nonNegativeInt"/>
  <xsd:element name="AdapterType">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value="client"/>
          <xsd:enumeration value="server"/>
       </xsd:restriction>
   </xsd:simpleType>
  </xsd:element>
  <xsd:element name="Required" type="booleanString"/>
  <!-- Supporting only remote partition Name  -->
  <!--
  <xsd:choice>
   <xsd:element name="RemotePartitionId" type="xsd:string"/>
   <xsd:element name="RemotePartitionName" type="xsd:string"/>
  </xsd:choice>
  -->
  <xsd:element name="RemotePartitionName" type="xsd:string" minOccurs="0"/>
  <xsd:element name="RemoteAdapterId" type="xsd:string" minOccurs="0"/>   
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SerialAdaptersType">
 <xsd:sequence>
  <xsd:element name="SerialAdapter" type="SerialAdapterType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SerialAdapterType">
 <xsd:sequence>
  <xsd:element name="AdapterId" type="nonNegativeInt"/>
  <xsd:element name="AdapterType">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value="client"/>
          <xsd:enumeration value="server"/>
       </xsd:restriction>
   </xsd:simpleType>
  </xsd:element>
  <xsd:element name="Required" type="booleanString"/>
  <xsd:element name="SupportsHMC" type="booleanString" minOccurs="0"/>
  <xsd:element name="ConnectingRemotePartition" type="ConnectingRemotePartitionType" minOccurs="0"/>   
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ConnectingRemotePartitionType">
 <xsd:sequence>
  <!-- Supporting only remote partition Name  -->
  <!--
  <xsd:choice>
   <xsd:element name="RemotePartitionId" type="xsd:string"/>
   <xsd:element name="RemotePartitionName" type="xsd:string"/>
  </xsd:choice>
  -->
  <xsd:element name="RemotePartitionName" type="xsd:string" minOccurs="0"/>
  <xsd:element name="RemoteAdapterId" type="xsd:string" minOccurs="0"/>   
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="LHEAsType">
 <xsd:sequence>
  <xsd:element name="LHEA" type="LHEAType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="LHEAType">
 <xsd:sequence>
  <!-- Most of the frames allowes  AdapterId as - 23000000 -->
  <xsd:element name="AdapterId" type="nonNegativeInt"/>
  <xsd:element name="PortGroup" type="nonNegativeInt"/>
  <xsd:element name="PhysicalPortId" type="nonNegativeInt"/>
  <xsd:element name="LogicalPortId" type="nonNegativeInt"/>
  <xsd:element name="AllowAllVLANIDs" type="booleanString"/>
  <xsd:element name="AllowedVLANs" type="AllowedVLANIDsType" minOccurs="0"/>  
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="LocalPropertiesType">
 <xsd:sequence>
  <xsd:element name="LocalProperty" type="LocalPropertyType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="LocalPropertyType">
 <xsd:sequence>
  <xsd:element name="PropertyName" type="xsd:string"/>
  <xsd:element name="PropertyValue" type="xsd:string"/>
  <xsd:element name="PropertyType" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="AllowedVLANIDsType">
 <xsd:restriction base="xsd:string">
  <xsd:pattern value="\[Nn\]one|\[Aa\]ll|\[\d\]+(,\[\d\]+)*"/>
 </xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="ZoneInfoType">
 <xsd:sequence>
  <xsd:element name="ZonePath" type="xsd:string"/>
  <xsd:element name="AutoBoot" type="booleanString" minOccurs="0"/>
  <xsd:element name="BootZoneAfterCreation" type="booleanString"  minOccurs="0" default="false"/>
  <xsd:element name="ResourcePool" type="xsd:string" minOccurs="0"/>
  <xsd:element name="BootArgs" type="xsd:string" minOccurs="0"/>
  <xsd:element name="LimitPrivileges" type="xsd:string" minOccurs="0"/>
  <!-- SchedulingClass values help:
     FSS-Fair Share sheduler
     FX-Fixed Priority
     IA-Inter Active
     RT-Real Time
     SYS-System
     TS-Time Shared
   -->
  <xsd:element name="SchedulingClass" minOccurs="0">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value=""/>
          <xsd:enumeration value="FSS"/>
          <xsd:enumeration value="FX"/>
          <xsd:enumeration value="IA"/>
          <xsd:enumeration value="RT"/>
          <xsd:enumeration value="SYS"/>
          <xsd:enumeration value="TS"/>
       </xsd:restriction>
   </xsd:simpleType>   
  </xsd:element>
  <xsd:element name="ProcessorType" minOccurs="0">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Capped"/>
          <xsd:enumeration value="Dedicated"/>
       </xsd:restriction>
   </xsd:simpleType>
  </xsd:element>
  <xsd:element name="NumCPUsORRange" type="xsd:string" minOccurs="0"/>
  <xsd:element name="Importance" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="PhysicalMemory" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="MaximumSwap" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="LockedMemory" type="nonNegativeInt" minOccurs="0"/>
  <xsd:element name="IPType" minOccurs="0">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value="shared"/>
          <xsd:enumeration value="exclusive"/>
       </xsd:restriction>
   </xsd:simpleType>
  </xsd:element>   
  <xsd:element name="ZoneNetworkAddresses" type="ZoneNetworkAddressesType" minOccurs="0"/>
  <xsd:element name="ZoneFileSystems" type="ZoneFileSystemsType" minOccurs="0"/>
  <xsd:element name="ZoneDataSets" type="ZoneDataSetsType" minOccurs="0"/>
  <xsd:element name="ZoneDevices" type="ZoneDevicesType" minOccurs="0"/>
  <xsd:element name="ZoneInheritedPkgDirs" type="ZoneInheritedPkgDirsType" minOccurs="0"/>
  <xsd:element name="ZoneResourceControls" type="ZoneResourceControlsType" minOccurs="0"/>
  <xsd:element name="ZoneAttributes" type="ZoneAttributesType" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneNetworkAddressesType">
 <xsd:sequence>
  <xsd:element name="ZoneNetworkAddress" type="ZoneNetworkAddressType" minOccurs="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneNetworkAddressType">
 <xsd:sequence>
  <!-- Physical can be allowed in both cases of if IPType is shared/exclusive
-->
  <xsd:element name="Physical" type="xsd:string"/>
  <!-- Address can be allowed if IPType is shared -->
  <xsd:element name="Address" type="xsd:string" minOccurs="0"/>
  <!-- DefaultRouter can be allowed if IPType is shared -->
  <xsd:element name="DefaultRouter" type="xsd:string" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneFileSystemsType">
 <xsd:sequence>
  <xsd:element name="ZoneFileSystem" type="ZoneFileSystemType" minOccurs="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneFileSystemType">
 <xsd:sequence>
  <xsd:element name="FileSystemDir" type="xsd:string"/>
  <xsd:element name="FileSystemSpecial" type="xsd:string"/>
  <xsd:element name="FileSystemRaw" type="xsd:string"/>
  <xsd:element name="FileSystemType" type="xsd:string"/>
  <xsd:element name="FileSystemOptions" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneDataSetsType">
 <xsd:sequence>
  <xsd:element name="ZoneDataSet" type="ZoneDataSetType" minOccurs="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneDataSetType">
 <xsd:sequence>
  <xsd:element name="DataSetName" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneDevicesType">
 <xsd:sequence>
  <xsd:element name="ZoneDevice" type="ZoneDeviceType" minOccurs="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneDeviceType">
 <xsd:sequence>
  <xsd:element name="DeviceMatch" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneInheritedPkgDirsType">
 <xsd:sequence>
  <xsd:element name="ZoneInheritedPkgDir" type="ZoneInheritedPkgDirType" minOccurs="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneInheritedPkgDirType">
 <xsd:sequence>
  <xsd:element name="PackagePath" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneResourceControlsType">
 <xsd:sequence>
  <xsd:element name="ZoneResourceControl" type="ZoneResourceControlType" minOccurs="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneResourceControlType">
 <xsd:sequence>
  <xsd:element name="ResourceControlName" type="xsd:string"/>
  <xsd:element name="ResourceControlValue" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneAttributesType">
 <xsd:sequence>
  <xsd:element name="ZoneAttribute" type="ZoneAttributeType" minOccurs="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZoneAttributeType">
 <xsd:sequence>
  <xsd:element name="AttributeName" type="xsd:string"/>
  <xsd:element name="AttributeType">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value="boolean"/>
          <xsd:enumeration value="int"/>
          <xsd:enumeration value="uint"/>
          <xsd:enumeration value="string"/>
       </xsd:restriction>
   </xsd:simpleType>
  </xsd:element>
  <xsd:element name="AttributeValue" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>
<!-- RHEL KVM Starts -->
<xsd:complexType name="RHELKVMInfoType">
 <xsd:sequence>
  <xsd:element name="NumVCPU" type="nonNegativeInt"/>
  <xsd:element name="MaxMemory" type="nonNegativeInt"/>
  <xsd:element name="StartUpMemory" type="nonNegativeInt"/>
  <xsd:element name="AutoBoot" type="booleanString" minOccurs="0" maxOccurs="1"/>
  <xsd:element name="CPUArchitecture">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
                <xsd:enumeration value="x86_64"/>
     <xsd:enumeration value="i686"/>
       </xsd:restriction>
   </xsd:simpleType>   
  </xsd:element>
  <xsd:element name="RHELKVMStorages" type="RHELKVMStoragesType" minOccurs="0" maxOccurs="1"/>
  <xsd:element name="RHELKVMNetworks" type="RHELKVMNetworksType" minOccurs="0" maxOccurs="1"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RHELKVMStoragesType">
 <xsd:sequence>
  <xsd:element name="RHELKVMStorage" type="RHELKVMStorageType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RHELKVMStorageType">
 <xsd:sequence>
   <xsd:choice>
  <xsd:element name="RHELKVMBlockPartitionStorage" type="RHELKVMBlockPartitionStorageType"/>
  <xsd:element name="RHELKVMFileImageStorage" type="RHELKVMFileImageStorageType"/>
  </xsd:choice>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RHELKVMBlockPartitionStorageType">
 <xsd:sequence>
     <xsd:element name="TargetDeviceType" type="RHELKVMStorageTargetDeviceType"/>
       <xsd:element name="TargetDeviceBus"  type="RHELKVMStorageTargetDeviceBus"/>
    <xsd:element name="Location" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RHELKVMFileImageStorageType">
 <xsd:sequence>
     <xsd:element name="TargetDeviceType" type="RHELKVMStorageTargetDeviceType"/>
        <xsd:element name="TargetDeviceBus"  type="RHELKVMStorageTargetDeviceBus"/>
  <xsd:choice minOccurs="1">
   <xsd:element name="PoolName" type="xsd:string"/>
   <xsd:element name="Location" type="xsd:string"/>
  </xsd:choice>
     <xsd:element name="FileName" type="xsd:string" minOccurs="0" maxOccurs="1"/>
     <xsd:element name="StorageSize" type="nonNegativeInt"/>
  <xsd:element name="AllocateNow" type="booleanString" minOccurs="0" maxOccurs="1"/>
  </xsd:sequence>
</xsd:complexType>
 <xsd:complexType name="RHELKVMNetworksType">
 <xsd:sequence>
  <xsd:element name="RHELKVMNetwork" type="RHELKVMNetworkType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RHELKVMNetworkType">
 <xsd:sequence>
  <xsd:element name="Name" type="xsd:string"/>
  <xsd:element name="Type">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Virtual Network"/>
         <xsd:enumeration value="Bridge"/>
       </xsd:restriction>
   </xsd:simpleType>   
  </xsd:element>
  <xsd:element name="MacAddress" type="xsd:string"/>
  <xsd:element name="DeviceModel">
   <xsd:simpleType>
       <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Hypervisor default"/>
           <xsd:enumeration value="e1000"/>
           <xsd:enumeration value="ne2k_pci"/>
           <xsd:enumeration value="pcnet"/>
           <xsd:enumeration value="rtl8139"/>
           <xsd:enumeration value="virtio"/>
       </xsd:restriction>
   </xsd:simpleType>   
  </xsd:element>
 </xsd:sequence>
</xsd:complexType>
<!-- RHEL KVM Ends -->
 \\
<!-- Citrix Xen schema info -->
<xsd:complexType name="CitrixXenInfoType">
<xsd:sequence>
 <xsd:element name="VGDescription" type="xsd:string"  minOccurs="0" />
 <xsd:element name="VMOrTemplateName" type="xsd:string"  minOccurs="0"/>
 <xsd:element name="NumberOfvCPUs" type="nonNegativeInt" minOccurs="0"/>
 <xsd:element name="MemoryInMB" type="nonNegativeInt" minOccurs="0" />
 <xsd:element name="AutoBoot" type="booleanString"  minOccurs="0" />
 <xsd:element name="BootParams" type="xsd:string"  minOccurs="0" />
 <xsd:element name="CitrixXenDisks" type="CitrixXenDisksType" minOccurs="0" />
 <xsd:element name="CitrixXenNetworkInterfaces" type="CitrixXenNetworksType" minOccurs="0"  />
 <xsd:element name="OSCustomizationInfo" type="OSCustomizationInfoType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
  \\
<xsd:complexType name="CitrixXenDisksType">
 <xsd:sequence>
  <xsd:element name="CitrixXenDisk" type="CitrixXenDiskType" minOccurs="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:complexType name="CitrixXenNetworksType">
 <xsd:sequence>
  <xsd:element name="CitrixXenNetworkInterface" type="CitrixXenNetworkType" minOccurs="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
  \\
<xsd:complexType name="CitrixXenDiskType">
 <xsd:sequence>
  <xsd:element name="DiskName" type="xsd:string" />
  <xsd:element name="Description" type="xsd:string" minOccurs="0"/>
  <xsd:element name="SizeInMB" type="nonNegativeInt"  />
  <xsd:element name="StorageRepository" type="xsd:string" minOccurs="1"/>
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:complexType name="CitrixXenNetworkType">
 <xsd:sequence>
  <xsd:element name="Network" type="xsd:string"/>
  <!-- If the macAddress is present in input xml, it will be applied to network, otherwise setting  AutoGenerateMAC as true
  (Citrix Xenserver will generate mac address automatically)-->
  <xsd:choice>
   <xsd:element name="AutoGenerateMAC" type="booleanString" />
   <xsd:element name="MACAddress" type="xsd:string"/>
  </xsd:choice>
  <xsd:element name="GuestNetworkConfiguration" type="GuestNetworkConfigurationType" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
 \\
<xsd:complexType name="VirtualGuestInfoType">
 <xsd:sequence>
  <!-- VMOrTemplateId is applicable only for template or VM clone type packages-->
  <xsd:element name="Description" type="xsd:string"  minOccurs="0" />
  <xsd:element name="SourceTemplateId" type="xsd:string"  minOccurs="0"/>
  <xsd:element name="GuestOS" type="xsd:string" minOccurs="0"/>
  <xsd:element name="VirtualGuestStorage" type="xsd:string" minOccurs="0"/>
  <xsd:element name="CoresPerSocket" type="nonNegativeInt" default="1" minOccurs="0"/>
  <xsd:element name="NumOfSockets" type="nonNegativeInt" default="1" minOccurs="0"/>
  <xsd:element name="MemoryInMB" type="nonNegativeInt" default="512" minOccurs="0" />
  <xsd:element name="PowerOnVMAfterCreation" type="booleanString"  minOccurs="0" default="true"/>
  <xsd:element name="AutoBoot" type="booleanString"  minOccurs="0" default="false"/>
  <xsd:element name="VirtualDisks" type="VirtualDisksType" minOccurs="0"/>
  <xsd:element name="VirtualNetworks" type="VirtualNetworksType" minOccurs="0"/>
  <xsd:element name="PlatformSpecificProperties" type="PlatformSpecificPropertiesType" minOccurs="0"/>
  <!-- OSCustomizationInfo is applicable only for template/VM clone type packages and Guest OS for the package should be either windows or linux.-->
  <xsd:element name="OSCustomizationInfo" type="OSCustomizationInfoType" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
\\
<xsd:complexType name="VirtualDisksType">
 <xsd:sequence>
  <xsd:element name="VirtualDisk" type="VirtualDiskType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="VirtualDiskType">
 <xsd:sequence>
  <xsd:element name="DiskSizeInGB" type="xsd:double"/>
  <xsd:element name="Storage" type="xsd:string" minOccurs="0"/>
  <xsd:element name="ThinProvisioning" type="xsd:boolean" minOccurs="0" default="false"/>
  <!-- List of extended properties to specify platform specific properties required for VM Disk -->
  <xsd:element name="DiskExtendedProperties" type="PlatformSpecificPropertiesType" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
\\
<xsd:complexType name="VirtualNetworksType">
 <xsd:sequence>
  <xsd:element name="VirtualNetwork" type="VirtualNetworkType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="VirtualNetworkType">
 <xsd:sequence>
  <xsd:element name="NetworkName" type="xsd:string"/>
  <!-- MACAddress, if not mentioned it will be auto generated by hypervisor-->
  <xsd:element name="MACAddress" type="xsd:string" minOccurs="0"/>
  <xsd:element name="ConnectAtPowerOn" type="booleanString"  minOccurs="0" default="false"/>
  <!-- List of extended properties to specify platform specific properties required for VM Network -->
  <xsd:element name="NetworkExtendedProperties" type="PlatformSpecificPropertiesType" minOccurs="0"/>
  <!-- GuestNetworkConfiguration settings will be applied if OSCustomizationInfo section mentioned in the package
  and Guest OS should be either windows or linux.-->
  <xsd:element name="GuestNetworkConfiguration" type="GuestNetworkConfigurationType" minOccurs="0"/>
 </xsd:sequence>
</xsd:complexType>
\\
<xsd:complexType name="PlatformSpecificPropertiesType">
 <xsd:sequence>
  <xsd:element name="PlatformSpecificProperty" type="PlatformSpecificPropertyType" minOccurs="1" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
\\
<!-- PlatformSpecific properties for RHEV platform are as follows:
 PropetyNamePossibleValues
 _______________________________________________________________
 HAPriorityNo_HA, Low, Medium, High
 diskInterfaceTypeide, virtio, scsi
 networkAdapterTypee1000, virtio, rtl8139, rtl8139_virtio
 -->
<xsd:complexType name="PlatformSpecificPropertyType">
 <xsd:sequence>
  <xsd:element name="PropertyName" type="xsd:string"/>
  <xsd:element name="PropertyValue" type="xsd:string"/>
 </xsd:sequence>
</xsd:complexType>
\\
<xsd:simpleType name="nonNegativeInt">
 <xsd:restriction base="xsd:int">
  <xsd:minInclusive value="0"/>
 </xsd:restriction>
</xsd:simpleType>
 \\
<xsd:simpleType name="nonNegativeDouble">
 <xsd:restriction base="xsd:double">
  <xsd:minInclusive value="0.0"/>
 </xsd:restriction>
</xsd:simpleType>
 \\
<xsd:simpleType name="booleanString">
 <xsd:restriction base="xsd:boolean">
  <xsd:pattern value="true|false"/>
 </xsd:restriction>
</xsd:simpleType>
   <xsd:simpleType name="RHELKVMStorageTargetDeviceType">
         <xsd:restriction base="xsd:string">
           <xsd:enumeration value="Disk"/>
           <xsd:enumeration value="CDROM"/>
           <xsd:enumeration value="Floppy"/>
         </xsd:restriction>
       </xsd:simpleType>
<xsd:simpleType name="RHELKVMStorageTargetDeviceBus">
         <xsd:restriction base="xsd:string">
           <xsd:enumeration value="IDE"/>
           <!--xsd:enumeration value="SCSI"/-->
           <xsd:enumeration value="USB"/>
           <xsd:enumeration value="VIRTIO"/>
         </xsd:restriction>
       </xsd:simpleType>
 <xsd:simpleType name="stringWithMaxLength">
  <xsd:restriction base="xsd:string">
  <xsd:maxLength value="255"/>
  </xsd:restriction>
 </xsd:simpleType>
</xsd:schema>

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*