Hi all,

Right now we have the ability to define VM-wide properties that may be used by hooks.
It is time we have the same functionality on a device basis:
http://www.ovirt.org/Features/Device_Custom_Properties

For example: If the VM has 2 disks called disk1 and disk2, and two NICs called nic1 and nic2,
and the admin (From the engine) added a custom property qos: 0.5 for nic1
and a custom property defrag: None for disk2. When the VM is started we'll run a hook
for nic1 with its XML and qos: 0.5 added as an environment variable, and a hook for disk2 with its XML and defrag: None.
When a device is hot plugged and it has custom properties we'll run that hook as well.

Implementation-wise, hot plug/unplug for disks and NICs is dead simple - vmCreate is more problematic:
If the user set a custom property called 'qos: 0.8' for nic3, I'd want it exposed as an environment variable called 'qos'
for hot plug nic hooks, but for vmCreate I'd like to prefix the nic's alias.
However, when vmCreate is called we don't have the aliases for NICs and disks.

The proposed solution is to create a new hook point called something like:
'before_device_creation' that will be called before vmCreate.
We'll then call that hook specifically for devices that contains custom properties, as described in the second paragraph of this mail.

I would love to hear smarter ideas before I move forward. Thanks!