Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Similar for this hypervisor, the primary configuration file of the guest VM is built by CloudStack, therefor, the additional metadata will also be parsed and append to the builder.

For Support for XenServer , functionality has only been added to only support the for the XAPI's 'vm-param-set' configuration using its arguments/keys as strings.  Below is a full list of all supported operations with this feature;

Simple key=value pair configurations, e.g PV-args=hvc0, is-a-template=true. Any of this settings will override existing with the new value from the use, behavior can be prevented by blacklisting the key in the global config with the list of disallowed keys.

    • is-a-template, 

    • memory-static-max, 

    • memory-dynamic-max, 

    • memory-dynamic-min, 

    • memory-static-min, 

    • VCPUs-max, 

    • VCPUs-at-startup, 

    • HVM-boot-policy, 

    • order,

    • shutdown-delay, Long

    • start-delay, Long

    • ha-restart-priority, 

    • PV-bootloader-args, 

    • PV-bootloader, 

    • PV-legacy-args, 

    • PV-args, 

    • PV-ramdisk, 

    • PV-kernel, 

    • HVM-shadow-multiplier,

To set ' option for 'xe' command and the full list of options is available here xe-full-command-lista (key,value) pair in a map parameter, use the syntax 'map-param:key=value'. Any of this settings do not override already defined params but append to the map. For example 'platform:timeoffset=value' will not override already defined platform settings but will append to the settings this new additional configuration that is being set.

    • VCPUs-params:, 

    • platform:, 

    • HVM-boot-params:, 

    • other-config:, 

    • xenstore-data:


Example: Following commands are used to convert a VM from HVM to PV;

vm-param-set HVM-boot-policy=
vm-param-set PV-bootloader=pygrub
vm-param-set PV-args=hvc0

User needs to pass the following URL encoded string:

...

For validation, user can log/ssh on to the VM hypervisor host and execute the following commands on the terminal to verify that additional configuration is available in the state.db for that instance :

...

  • A configurable global config 'additional.vm.configuration.black.list.xenserver' is available for Root admin to specify a list of 'vm-param-set' options that are disallowed with this feature.
    • Default values are; '

      name-label,

      is-a-template,  memory-static-max,  memory-dynamic-max, memory-dynamic-min, memory-static-min'

The algorithm for XenServer does the following checks;

  1. Is the command option passed 'vm-param-set' and throws a CloudRuntimeException otherwise. Please not that this check is case sensitive and requires 'vm-param-set' to types as isa valid key/value pair 'key1=value1\nkey2=value2' and so on. Throws an Exception if user input is not valid key/value pair.
  2. The next algorithm checks if passed command contains any of the items keys from the blacklisted commands ckeys and throws a CloudRountimeException if true. This check is case insensitive. (e.x. vm-param-set is-a-template=true will throw an Exception since 'is-a-template' is blacklisted by default).

...

  • All the key/value configuration settings stored under the 'user_vm_details' table are appended to the VM's vmx file by the VMware API and ignoring duplicates.

UI integration

N/A

HVM-boot-policy%3D%0APV-bootloader%3Dpygrub%0APV-args%3Dhvc0