From 0b25c884e6511a52c45b93d65d1683111cd22252 Mon Sep 17 00:00:00 2001 From: licanwei Date: Sat, 27 Jul 2019 15:41:04 +0800 Subject: [PATCH] Add resource capacity property Resource(VCPU, memory and disk) capacity need to be calculated through formula: capacity = (total-reserved)*ratio. Partially Implements: blueprint improve-compute-data-model Change-Id: I15ca66dd2c3a21c5acfebf6f04fa6601aff7918f --- watcher/decision_engine/model/element/node.py | 12 ++++++++++++ .../decision_engine/cluster/test_nova_cdmc.py | 15 +++++++++------ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/watcher/decision_engine/model/element/node.py b/watcher/decision_engine/model/element/node.py index 0e52ae35a..2d18b9599 100644 --- a/watcher/decision_engine/model/element/node.py +++ b/watcher/decision_engine/model/element/node.py @@ -56,6 +56,18 @@ class ComputeNode(compute_resource.ComputeResource): def accept(self, visitor): raise NotImplementedError() + @property + def memory_mb_capacity(self): + return (self.memory-self.memory_mb_reserved)*self.memory_ratio + + @property + def disk_gb_capacity(self): + return (self.disk-self.disk_gb_reserved)*self.disk_ratio + + @property + def vcpus_capacity(self): + return (self.vcpus-self.vcpu_reserved)*self.vcpu_ratio + @property def memory_mb_free(self): total = (self.memory-self.memory_mb_reserved)*self.memory_ratio diff --git a/watcher/tests/decision_engine/cluster/test_nova_cdmc.py b/watcher/tests/decision_engine/cluster/test_nova_cdmc.py index aabfc5c7d..34c48ba94 100644 --- a/watcher/tests/decision_engine/cluster/test_nova_cdmc.py +++ b/watcher/tests/decision_engine/cluster/test_nova_cdmc.py @@ -152,16 +152,19 @@ class TestNovaClusterDataModelCollector(base.TestCase): self.assertEqual(node.uuid, '160a0e7b-8b0b-4854-8257-9c71dff4efcc') self.assertEqual(instance.uuid, 'ef500f7e-dac8-470f-960c-169486fce71b') - memory_total = node.memory - node.memory_mb_reserved - memory_free = memory_total * node.memory_ratio - node.memory_mb_used + memory_total = (node.memory-node.memory_mb_reserved)*node.memory_ratio + self.assertEqual(node.memory_mb_capacity, memory_total) + memory_free = memory_total - node.memory_mb_used self.assertEqual(node.memory_mb_free, memory_free) - disk_total = node.disk_capacity - node.disk_gb_reserved - disk_free = disk_total * node.disk_ratio - node.disk_gb_used + disk_total = (node.disk_capacity-node.disk_gb_reserved)*node.disk_ratio + self.assertEqual(node.disk_gb_capacity, disk_total) + disk_free = disk_total - node.disk_gb_used self.assertEqual(node.disk_gb_free, disk_free) - vcpus_total = node.vcpus - node.vcpu_reserved - vcpus_free = vcpus_total * node.vcpu_ratio - node.vcpus_used + vcpus_total = (node.vcpus-node.vcpu_reserved)*node.vcpu_ratio + self.assertEqual(node.vcpus_capacity, vcpus_total) + vcpus_free = vcpus_total - node.vcpus_used self.assertEqual(node.vcpus_free, vcpus_free) m_nova_helper.get_compute_node_by_name.assert_called_once_with(