summaryrefslogtreecommitdiff
path: root/nova/objects/instance_numa.py
diff options
context:
space:
mode:
Diffstat (limited to 'nova/objects/instance_numa.py')
-rw-r--r--nova/objects/instance_numa.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/nova/objects/instance_numa.py b/nova/objects/instance_numa.py
index 14350a69bf..d067ba87d3 100644
--- a/nova/objects/instance_numa.py
+++ b/nova/objects/instance_numa.py
@@ -19,6 +19,7 @@ from oslo_utils import versionutils
from nova.db import api as db
from nova import exception
+from nova.i18n import _
from nova.objects import base
from nova.objects import fields as obj_fields
from nova.virt import hardware
@@ -34,12 +35,22 @@ class InstanceNUMACell(base.NovaEphemeralObject,
# Version 1.3: Add cpu_policy and cpu_thread_policy fields
# Version 1.4: Add cpuset_reserved field
# Version 1.5: Add pcpuset field
- VERSION = '1.5'
+ # Version 1.6: Add 'mixed' to cpu_policy field
+ VERSION = '1.6'
def obj_make_compatible(self, primitive, target_version):
super(InstanceNUMACell, self).obj_make_compatible(primitive,
target_version)
target_version = versionutils.convert_version_to_tuple(target_version)
+ # Instance with a 'mixed' CPU policy could not provide a backward
+ # compatibility.
+ if target_version < (1, 6):
+ if primitive['cpu_policy'] == obj_fields.CPUAllocationPolicy.MIXED:
+ raise exception.ObjectActionError(
+ action='obj_make_compatible',
+ reason=_('mixed instance is not supported in version %s') %
+ target_version)
+
# NOTE(huaqiang): Since version 1.5, 'cpuset' is modified to track the
# unpinned CPUs only, with pinned CPUs tracked via 'pcpuset' instead.
# For a backward compatibility, move the 'dedicated' instance CPU list