Commit f23b5ae8 authored by Iustin Pop's avatar Iustin Pop
Browse files

Temporary fix for dual hvm/pvm instances

We have a problem with the current model of combining instance lists
from multiple hypervisors: we don't allow duplicates, but "xm list"
gives the same output for both pvm and hvm. This is a lack in the actual
xen hypervisor implementation/split between pvm and hvm, but for now we
implement a weak workaround: identical instance params will be allowed,
and merged. This breaks because there is a delta in listing, and should
be treated as temporary workaround only.

Note that there are two cases for duplicate instance: the above one (xen
is the same, whether pvm or hvm), and the other case, the real error,
when we have two different hypervisors reporting the same instance name.
The latter case needs to be handled better (not by refusing to list the
instances in the backend).

Reviewed-by: ultrotter
parent 26ba2bd8
......@@ -502,14 +502,16 @@ def GetAllInstancesInfo(hypervisor_list):
iinfo = hypervisor.GetHypervisor(hname).GetAllInstancesInfo()
if iinfo:
for name, inst_id, memory, vcpus, state, times in iinfo:
if name in output:
raise errors.HypervisorError("Instance %s running duplicate" % name)
output[name] = {
value = {
'memory': memory,
'vcpus': vcpus,
'state': state,
'time': times,
if name in output and output[name] != value:
raise errors.HypervisorError("Instance %s running duplicate"
" with different parameters" % name)
output[name] = value
return output
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment