Add get node used and free resources
Many strategies need get node used or free resources, we define two new method for the purpose in ModelRoot class. Change-Id: I8cb41fd560dbac9a78d25bfdba51799533db83c2
This commit is contained in:
@@ -201,6 +201,25 @@ class ModelRoot(nx.DiGraph, base.Model):
|
|||||||
|
|
||||||
return node_instances
|
return node_instances
|
||||||
|
|
||||||
|
def get_node_used_resources(self, node):
|
||||||
|
vcpu_used = 0
|
||||||
|
memory_used = 0
|
||||||
|
disk_used = 0
|
||||||
|
for instance in self.get_node_instances(node):
|
||||||
|
vcpu_used += instance.vcpus
|
||||||
|
memory_used += instance.memory
|
||||||
|
disk_used += instance.disk
|
||||||
|
|
||||||
|
return dict(vcpu=vcpu_used, memory=memory_used, disk=disk_used)
|
||||||
|
|
||||||
|
def get_node_free_resources(self, node):
|
||||||
|
resources_used = self.get_node_used_resources(node)
|
||||||
|
vcpu_free = node.vcpu_capacity-resources_used.get('vcpu')
|
||||||
|
memory_free = node.memory_mb_capacity-resources_used.get('memory')
|
||||||
|
disk_free = node.disk_gb_capacity-resources_used.get('disk')
|
||||||
|
|
||||||
|
return dict(vcpu=vcpu_free, memory=memory_free, disk=disk_free)
|
||||||
|
|
||||||
def to_string(self):
|
def to_string(self):
|
||||||
return self.to_xml()
|
return self.to_xml()
|
||||||
|
|
||||||
|
|||||||
@@ -193,6 +193,38 @@ class TestModel(base.TestCase):
|
|||||||
self.assertRaises(exception.IllegalArgumentException,
|
self.assertRaises(exception.IllegalArgumentException,
|
||||||
model.assert_instance, "valeur_qcq")
|
model.assert_instance, "valeur_qcq")
|
||||||
|
|
||||||
|
def test_get_node_instances(self):
|
||||||
|
fake_cluster = faker_cluster_state.FakerModelCollector()
|
||||||
|
model = fake_cluster.generate_scenario_1()
|
||||||
|
node = element.ComputeNode(uuid="Node_0")
|
||||||
|
instance0 = model.get_instance_by_uuid("INSTANCE_0")
|
||||||
|
instance1 = model.get_instance_by_uuid("INSTANCE_1")
|
||||||
|
instances = model.get_node_instances(node)
|
||||||
|
|
||||||
|
self.assertEqual(2, len(instances))
|
||||||
|
self.assertIn(instance0, instances)
|
||||||
|
self.assertIn(instance1, instances)
|
||||||
|
|
||||||
|
def test_get_node_used_resources(self):
|
||||||
|
fake_cluster = faker_cluster_state.FakerModelCollector()
|
||||||
|
model = fake_cluster.generate_scenario_1()
|
||||||
|
node = element.ComputeNode(uuid="Node_0")
|
||||||
|
resources_used = model.get_node_used_resources(node)
|
||||||
|
|
||||||
|
self.assertEqual(20, resources_used.get('vcpu'))
|
||||||
|
self.assertEqual(4, resources_used.get('memory'))
|
||||||
|
self.assertEqual(40, resources_used.get('disk'))
|
||||||
|
|
||||||
|
def test_get_node_free_resources(self):
|
||||||
|
fake_cluster = faker_cluster_state.FakerModelCollector()
|
||||||
|
model = fake_cluster.generate_scenario_1()
|
||||||
|
node = model.get_node_by_uuid("Node_0")
|
||||||
|
resources_free = model.get_node_free_resources(node)
|
||||||
|
|
||||||
|
self.assertEqual(20, resources_free.get('vcpu'))
|
||||||
|
self.assertEqual(128, resources_free.get('memory'))
|
||||||
|
self.assertEqual(210, resources_free.get('disk'))
|
||||||
|
|
||||||
|
|
||||||
class TestStorageModel(base.TestCase):
|
class TestStorageModel(base.TestCase):
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user