oVirt VDSM should support dynamically add/remove virtual CPUs to/from a guest that has this capability
WIKI: www.ovirt.org/Hot_plug_cpu
libvirt's api is setVcpus which is used for both add/remove.
The guest is configured from the start with some max number of CPUs, and the initial number, the one which was used up till now set as "current". e.g
n: number of CPUs set to start the VM with
m: maximum number of CPUs a guest can have
old:
<vcpu>n</vcpu>
new:
<vcpu current="n" placement="static">m</vcpu>
new api verb:
setNumberOfCpus <vmId> <numberOfCpus>
A seperate RFE will be open for ovirt-engine