From 4e4cfc959bdfb8bb4f40848167e710d5643f95fb Mon Sep 17 00:00:00 2001
From: licanwei
Date: Fri, 9 Aug 2019 10:28:40 +0800
Subject: [PATCH] Remove resource used fields from ComputeNode
The node resource(vcpu, memory and disk) used infomation need
to change when creating or deleting instances. Now Placement do
not send notifications, so there is not a good way to capture
the change. We remove these fields and leave the process to strategy.
Partially Implements: blueprint improve-compute-data-model
Change-Id: I3f9a3279a26f3df444117d9265e74cca57b38d6e
---
.../decision_engine/model/collector/nova.py | 20 -------------------
watcher/decision_engine/model/element/node.py | 20 +------------------
.../model/notification/nova.py | 20 -------------------
.../decision_engine/cluster/test_nova_cdmc.py | 8 +-------
4 files changed, 2 insertions(+), 66 deletions(-)
diff --git a/watcher/decision_engine/model/collector/nova.py b/watcher/decision_engine/model/collector/nova.py
index 88e4909f8..c580c7462 100644
--- a/watcher/decision_engine/model/collector/nova.py
+++ b/watcher/decision_engine/model/collector/nova.py
@@ -341,23 +341,6 @@ class NovaModelBuilder(base.BaseModelBuilder):
disk_gb_reserved = 0
disk_ratio = 1.0
- usages = self.placement_helper.get_usages_for_resource_provider(
- node.id)
- if usages and orc.VCPU in usages:
- vcpus_used = usages[orc.VCPU]
- else:
- vcpus_used = node.vcpus_used
-
- if usages and orc.MEMORY_MB in usages:
- memory_used = usages[orc.MEMORY_MB]
- else:
- memory_used = node.memory_mb_used
-
- if usages and orc.DISK_GB in usages:
- disk_used = usages[orc.DISK_GB]
- else:
- disk_used = node.local_gb_used
-
# build up the compute node.
node_attributes = {
# The id of the hypervisor as a UUID from version 2.53.
@@ -366,7 +349,6 @@ class NovaModelBuilder(base.BaseModelBuilder):
"memory": memory_mb,
"memory_ratio": memory_ratio,
"memory_mb_reserved": memory_mb_reserved,
- "memory_mb_used": memory_used,
# The node.free_disk_gb does not take allocation ratios used
# for overcommit into account so this value may be negative.
# We do not need this field and plan to set disk to total disk
@@ -374,13 +356,11 @@ class NovaModelBuilder(base.BaseModelBuilder):
"disk": disk_capacity,
# TODO(licanwei): remove and replace by disk field
"disk_capacity": disk_capacity,
- "disk_gb_used": disk_used,
"disk_gb_reserved": disk_gb_reserved,
"disk_ratio": disk_ratio,
"vcpus": vcpus,
"vcpu_reserved": vcpu_reserved,
"vcpu_ratio": vcpu_ratio,
- "vcpus_used": vcpus_used,
"state": node.state,
"status": node.status,
"disabled_reason": node.service["disabled_reason"]}
diff --git a/watcher/decision_engine/model/element/node.py b/watcher/decision_engine/model/element/node.py
index ba15d1078..a8d6aa308 100644
--- a/watcher/decision_engine/model/element/node.py
+++ b/watcher/decision_engine/model/element/node.py
@@ -40,13 +40,10 @@ class ComputeNode(compute_resource.ComputeResource):
"state": wfields.StringField(default=ServiceState.ONLINE.value),
"memory": wfields.NonNegativeIntegerField(),
"memory_mb_reserved": wfields.NonNegativeIntegerField(),
- "memory_mb_used": wfields.NonNegativeIntegerField(),
"disk": wfields.IntegerField(),
"disk_capacity": wfields.NonNegativeIntegerField(),
"disk_gb_reserved": wfields.NonNegativeIntegerField(),
- "disk_gb_used": wfields.NonNegativeIntegerField(),
"vcpus": wfields.NonNegativeIntegerField(),
- "vcpus_used": wfields.NonNegativeIntegerField(),
"vcpu_reserved": wfields.NonNegativeIntegerField(),
"memory_ratio": wfields.NonNegativeFloatField(),
"vcpu_ratio": wfields.NonNegativeFloatField(),
@@ -65,24 +62,9 @@ class ComputeNode(compute_resource.ComputeResource):
return (self.disk-self.disk_gb_reserved)*self.disk_ratio
@property
- def vcpus_capacity(self):
+ def vcpu_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
- return total-self.memory_mb_used
-
- @property
- def disk_gb_free(self):
- total = (self.disk-self.disk_gb_reserved)*self.disk_ratio
- return total-self.disk_gb_used
-
- @property
- def vcpus_free(self):
- total = (self.vcpus-self.vcpu_reserved)*self.vcpu_ratio
- return total-self.vcpus_used
-
@base.WatcherObjectRegistry.register_if(False)
class StorageNode(storage_resource.StorageResource):
diff --git a/watcher/decision_engine/model/notification/nova.py b/watcher/decision_engine/model/notification/nova.py
index 1109a9802..4871cb41d 100644
--- a/watcher/decision_engine/model/notification/nova.py
+++ b/watcher/decision_engine/model/notification/nova.py
@@ -165,23 +165,6 @@ class NovaNotification(base.NotificationEndpoint):
disk_gb_reserved = 0
disk_ratio = 1.0
- usages = self.placement_helper.get_usages_for_resource_provider(
- _node.id)
- if usages and orc.VCPU in usages:
- vcpus_used = usages[orc.VCPU]
- else:
- vcpus_used = _node.vcpus_used
-
- if usages and orc.MEMORY_MB in usages:
- memory_used = usages[orc.MEMORY_MB]
- else:
- memory_used = _node.memory_mb_used
-
- if usages and orc.DISK_GB in usages:
- disk_used = usages[orc.DISK_GB]
- else:
- disk_used = _node.local_gb_used
-
# build up the compute node.
node_attributes = {
# The id of the hypervisor as a UUID from version 2.53.
@@ -190,7 +173,6 @@ class NovaNotification(base.NotificationEndpoint):
"memory": memory_mb,
"memory_ratio": memory_ratio,
"memory_mb_reserved": memory_mb_reserved,
- "memory_mb_used": memory_used,
# The node.free_disk_gb does not take allocation ratios used
# for overcommit into account so this value may be negative.
# We do not need this field and plan to set disk to total disk
@@ -198,13 +180,11 @@ class NovaNotification(base.NotificationEndpoint):
"disk": disk_capacity,
# TODO(licanwei): remove and replace by disk field
"disk_capacity": disk_capacity,
- "disk_gb_used": disk_used,
"disk_gb_reserved": disk_gb_reserved,
"disk_ratio": disk_ratio,
"vcpus": vcpus,
"vcpu_reserved": vcpu_reserved,
"vcpu_ratio": vcpu_ratio,
- "vcpus_used": vcpus_used,
"state": _node.state,
"status": _node.status,
"disabled_reason": _node.service["disabled_reason"]}
diff --git a/watcher/tests/decision_engine/cluster/test_nova_cdmc.py b/watcher/tests/decision_engine/cluster/test_nova_cdmc.py
index 131636e1f..1468fa308 100644
--- a/watcher/tests/decision_engine/cluster/test_nova_cdmc.py
+++ b/watcher/tests/decision_engine/cluster/test_nova_cdmc.py
@@ -154,18 +154,12 @@ class TestNovaClusterDataModelCollector(base.TestCase):
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)*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)*node.vcpu_ratio
- self.assertEqual(node.vcpus_capacity, vcpus_total)
- vcpus_free = vcpus_total - node.vcpus_used
- self.assertEqual(node.vcpus_free, vcpus_free)
+ self.assertEqual(node.vcpu_capacity, vcpus_total)
m_nova_helper.get_compute_node_by_name.assert_called_once_with(
minimal_node['hypervisor_hostname'], servers=True, detailed=True)