aboutsummaryrefslogtreecommitdiff
path: root/tests/kolla_container_tests
diff options
context:
space:
mode:
authorLoan Harrouin <loan.harrouin@gmail.com>2026-05-05 15:58:39 +0200
committerLoan Harrouin <loan.harrouin@gmail.com>2026-08-04 17:10:00 +0000
commit0d656aa1e1fcc04ea2ffab5068aa934784c88f64 (patch)
treef3ac8a119df3126b4024fa402971e135309ffc58 /tests/kolla_container_tests
parentdcd07540af662e1283ca77ab5d3b92996f4f992d (diff)
downloadkolla-ansible-0d656aa1e1fcc04ea2ffab5068aa934784c88f64.tar.gz
kolla-ansible-0d656aa1e1fcc04ea2ffab5068aa934784c88f64.zip
Fix Docker cpuset dimension comparison
When enabling cpuset_cpus or cpuset_mems on existing Docker containers, Docker may report the current value as an empty string when no cpuset constraint is configured. These dimensions are cpuset-list strings, not numeric resource values. Compare them as strings in the Docker worker instead of passing them through the numeric dimension comparison logic. Closes-Bug: 2143874 Change-Id: I1b8cd72846b28f556c8f9a0ba114a8af9221e85a Signed-off-by: Loan Harrouin <loan.harrouin@gmail.com> (cherry picked from commit 8304bb3884237bf5aee1c60715d097e88561d56d)
Diffstat (limited to 'tests/kolla_container_tests')
-rw-r--r--tests/kolla_container_tests/test_docker_worker.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/kolla_container_tests/test_docker_worker.py b/tests/kolla_container_tests/test_docker_worker.py
index 26fe020f2..cd351e4ef 100644
--- a/tests/kolla_container_tests/test_docker_worker.py
+++ b/tests/kolla_container_tests/test_docker_worker.py
@@ -1500,6 +1500,60 @@ class TestAttrComp(base.BaseTestCase):
failed=True, msg=repr("Unsupported dimensions"),
unsupported_dimensions=set(['kernel_memory']))
+ def test_compare_dimensions_cpuset_cpus_empty_current(self):
+ self.fake_data['params']['dimensions'] = {
+ 'cpuset_cpus': '0-1,32-33'}
+ container_info = dict()
+ container_info['HostConfig'] = {
+ 'CpusetCpus': ''}
+ self.dw = get_DockerWorker(self.fake_data['params'])
+ self.assertTrue(self.dw.compare_dimensions(container_info))
+
+ def test_compare_dimensions_cpuset_cpus_same(self):
+ self.fake_data['params']['dimensions'] = {
+ 'cpuset_cpus': '0-1,32-33'}
+ container_info = dict()
+ container_info['HostConfig'] = {
+ 'CpusetCpus': '0-1,32-33'}
+ self.dw = get_DockerWorker(self.fake_data['params'])
+ self.assertFalse(self.dw.compare_dimensions(container_info))
+
+ def test_compare_dimensions_cpuset_cpus_different(self):
+ self.fake_data['params']['dimensions'] = {
+ 'cpuset_cpus': '0-1,32-33'}
+ container_info = dict()
+ container_info['HostConfig'] = {
+ 'CpusetCpus': '0-3'}
+ self.dw = get_DockerWorker(self.fake_data['params'])
+ self.assertTrue(self.dw.compare_dimensions(container_info))
+
+ def test_compare_dimensions_cpuset_mems_empty_current(self):
+ self.fake_data['params']['dimensions'] = {
+ 'cpuset_mems': '0'}
+ container_info = dict()
+ container_info['HostConfig'] = {
+ 'CpusetMems': ''}
+ self.dw = get_DockerWorker(self.fake_data['params'])
+ self.assertTrue(self.dw.compare_dimensions(container_info))
+
+ def test_compare_dimensions_cpuset_mems_same(self):
+ self.fake_data['params']['dimensions'] = {
+ 'cpuset_mems': '0'}
+ container_info = dict()
+ container_info['HostConfig'] = {
+ 'CpusetMems': '0'}
+ self.dw = get_DockerWorker(self.fake_data['params'])
+ self.assertFalse(self.dw.compare_dimensions(container_info))
+
+ def test_compare_dimensions_cpuset_mems_different(self):
+ self.fake_data['params']['dimensions'] = {
+ 'cpuset_mems': '0'}
+ container_info = dict()
+ container_info['HostConfig'] = {
+ 'CpusetMems': '1'}
+ self.dw = get_DockerWorker(self.fake_data['params'])
+ self.assertTrue(self.dw.compare_dimensions(container_info))
+
def test_compare_container_state_pos(self):
container_info = {'State': dict(Status='running')}
self.dw = get_DockerWorker({'state': 'exited'})