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(