From e3d3f7435cf60fbb469cdd547a3624a2f0a23a55 Mon Sep 17 00:00:00 2001 From: shihanzhang Date: Fri, 13 Mar 2015 17:54:50 +0800 Subject: [PATCH] Fix AggregateCoreFilter return incorrect value the value of aggregate metadata 'cpu_allocation_ratio' is string, in 'validate_num_values',it should not directly use min/max to get values. Change-Id: I486da120939ea3fa139ee81d9ea3fb15373bc606 Closes-Bug: #1431746 --- nova/scheduler/filters/utils.py | 2 +- nova/tests/unit/scheduler/test_filters_utils.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/nova/scheduler/filters/utils.py b/nova/scheduler/filters/utils.py index 92ae3f336f79..5acd446d23f4 100644 --- a/nova/scheduler/filters/utils.py +++ b/nova/scheduler/filters/utils.py @@ -66,7 +66,7 @@ def validate_num_values(vals, default=None, cast_to=int, based_on=min): "of which the minimum value will be used."), {'num_values': num_values}) - return cast_to(based_on(vals)) + return based_on([cast_to(val) for val in vals]) def instance_uuids_overlap(host_state, uuids): diff --git a/nova/tests/unit/scheduler/test_filters_utils.py b/nova/tests/unit/scheduler/test_filters_utils.py index 42b8671b95bf..89ba39177f5c 100644 --- a/nova/tests/unit/scheduler/test_filters_utils.py +++ b/nova/tests/unit/scheduler/test_filters_utils.py @@ -49,6 +49,7 @@ class UtilsTestCase(test.NoDBTestCase): self.assertEqual(1.0, f(set(["1"]), cast_to=float)) self.assertEqual(1, f(set([1, 2]), based_on=min)) self.assertEqual(2, f(set([1, 2]), based_on=max)) + self.assertEqual(9, f(set(['10', '9']), based_on=min)) def test_aggregate_values_from_key(self): host_state = fakes.FakeHostState(