From 4b83bf33e2221db8846bef8a08afadf0822aca29 Mon Sep 17 00:00:00 2001
From: licanwei
Date: Thu, 4 Jul 2019 15:44:06 +0800
Subject: [PATCH] remove id field from CDM
There are 3 related fields(id, uuid and hostname) in ComputeNode[1].
according to [2], after nova api 2.53, the id of the hypervisor as a UUID.
and service.host is equal to hypervisor name for compute node.
so we can remove id and only keep uuid then set uuid to node.id
[1]:https://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/collector/nova.py#L306
[2]:https://developer.openstack.org/api-ref/compute/?expanded=list-hypervisors-details-detail#list-hypervisors-details
Change-Id: Ie1d1ad56808270d936ec25186061f7f12cc49fdc
Closes-Bug: #1835192
Depends-on: I752fbfa560313e28e87d83e46431c283b4db4f23
Depends-on: I0975500f359de92b6d6fdea2e01614cf0ba73f05
---
.../actions/change_nova_service_state.py | 3 +-
.../decision_engine/datasources/ceilometer.py | 2 +-
.../decision_engine/datasources/gnocchi.py | 2 +-
.../decision_engine/model/collector/nova.py | 8 +--
watcher/decision_engine/model/element/node.py | 1 -
.../model/notification/nova.py | 69 ++++++++++---------
watcher/decision_engine/scope/compute.py | 21 +++---
.../strategy/strategies/base.py | 4 +-
.../strategy/strategies/host_maintenance.py | 4 +-
.../strategy/strategies/saving_energy.py | 4 +-
.../strategies/vm_workload_consolidation.py | 8 +--
.../actions/test_change_nova_service_state.py | 2 +-
.../decision_engine/cluster/test_nova_cdmc.py | 4 +-
.../model/ceilometer_metrics.py | 6 +-
.../model/data/scenario_3_with_2_nodes.xml | 8 +--
.../decision_engine/model/gnocchi_metrics.py | 5 +-
.../scenario3_service-update-disabled.json | 2 +-
.../scenario3_service-update-enabled.json | 2 +-
.../notification/data/service-create.json | 2 +-
.../notification/data/service-delete.json | 2 +-
.../notification/data/service-update.json | 36 +++++-----
.../notification/test_nova_notifications.py | 46 ++++++-------
.../decision_engine/scope/test_compute.py | 6 +-
.../strategies/test_host_maintenance.py | 4 +-
.../strategies/test_noisy_neighbor.py | 2 +-
.../strategies/test_outlet_temp_control.py | 14 ++--
.../strategy/strategies/test_saving_energy.py | 22 +++---
.../test_vm_workload_consolidation.py | 40 +++++------
28 files changed, 172 insertions(+), 157 deletions(-)
diff --git a/watcher/applier/actions/change_nova_service_state.py b/watcher/applier/actions/change_nova_service_state.py
index ea302c099..e7bea1e7f 100644
--- a/watcher/applier/actions/change_nova_service_state.py
+++ b/watcher/applier/actions/change_nova_service_state.py
@@ -50,6 +50,7 @@ class ChangeNovaServiceState(base.BaseAction):
STATE = 'state'
REASON = 'disabled_reason'
+ RESOURCE_NAME = 'resource_name'
@property
def schema(self):
@@ -82,7 +83,7 @@ class ChangeNovaServiceState(base.BaseAction):
@property
def host(self):
- return self.resource_id
+ return self.input_parameters.get(self.RESOURCE_NAME)
@property
def state(self):
diff --git a/watcher/decision_engine/datasources/ceilometer.py b/watcher/decision_engine/datasources/ceilometer.py
index 3a8011277..c1a041db1 100644
--- a/watcher/decision_engine/datasources/ceilometer.py
+++ b/watcher/decision_engine/datasources/ceilometer.py
@@ -175,7 +175,7 @@ class CeilometerHelper(base.DataSourceBase):
resource_id = resource.uuid
if resource_type == 'compute_node':
- resource_id = "%s_%s" % (resource.uuid, resource.hostname)
+ resource_id = "%s_%s" % (resource.hostname, resource.hostname)
query = self.build_query(
resource_id=resource_id, start_time=start_time, end_time=end_time)
diff --git a/watcher/decision_engine/datasources/gnocchi.py b/watcher/decision_engine/datasources/gnocchi.py
index 0f6f0a660..54541f1a1 100644
--- a/watcher/decision_engine/datasources/gnocchi.py
+++ b/watcher/decision_engine/datasources/gnocchi.py
@@ -84,7 +84,7 @@ class GnocchiHelper(base.DataSourceBase):
resource_id = resource.uuid
if resource_type == 'compute_node':
- resource_id = "%s_%s" % (resource.uuid, resource.hostname)
+ resource_id = "%s_%s" % (resource.hostname, resource.hostname)
kwargs = dict(query={"=": {"original_resource_id": resource_id}},
limit=1)
resources = self.query_retry(
diff --git a/watcher/decision_engine/model/collector/nova.py b/watcher/decision_engine/model/collector/nova.py
index 6dec9b105..3f1fd4eb5 100644
--- a/watcher/decision_engine/model/collector/nova.py
+++ b/watcher/decision_engine/model/collector/nova.py
@@ -349,9 +349,9 @@ class NovaModelBuilder(base.BaseModelBuilder):
# build up the compute node.
node_attributes = {
- "id": node.id,
- "uuid": node.service["host"],
- "hostname": node.hypervisor_hostname,
+ # The id of the hypervisor as a UUID from version 2.53.
+ "uuid": node.id,
+ "hostname": node.service["host"],
"memory": memory_mb,
"memory_ratio": memory_ratio,
"memory_mb_reserved": memory_mb_reserved,
@@ -379,7 +379,7 @@ class NovaModelBuilder(base.BaseModelBuilder):
LOG.info("no instances on compute_node: {0}".format(node))
return
host = node.service["host"]
- compute_node = self.model.get_node_by_uuid(host)
+ compute_node = self.model.get_node_by_uuid(node.id)
filters = {'host': host}
limit = len(instances) if len(instances) <= 1000 else -1
# Get all servers on this compute host.
diff --git a/watcher/decision_engine/model/element/node.py b/watcher/decision_engine/model/element/node.py
index 6960c8200..0e52ae35a 100644
--- a/watcher/decision_engine/model/element/node.py
+++ b/watcher/decision_engine/model/element/node.py
@@ -34,7 +34,6 @@ class ServiceState(enum.Enum):
class ComputeNode(compute_resource.ComputeResource):
fields = {
- "id": wfields.StringField(),
"hostname": wfields.StringField(),
"status": wfields.StringField(default=ServiceState.ENABLED.value),
"disabled_reason": wfields.StringField(nullable=True),
diff --git a/watcher/decision_engine/model/notification/nova.py b/watcher/decision_engine/model/notification/nova.py
index 4b246756d..60c689d70 100644
--- a/watcher/decision_engine/model/notification/nova.py
+++ b/watcher/decision_engine/model/notification/nova.py
@@ -19,6 +19,7 @@
from oslo_log import log
from watcher.common import exception
from watcher.common import nova_helper
+from watcher.common import utils
from watcher.decision_engine.model import element
from watcher.decision_engine.model.notification import base
from watcher.decision_engine.model.notification import filtering
@@ -38,15 +39,15 @@ class NovaNotification(base.NotificationEndpoint):
self._nova = nova_helper.NovaHelper()
return self._nova
- def get_or_create_instance(self, instance_uuid, node_uuid=None):
+ def get_or_create_instance(self, instance_uuid, node_name=None):
try:
node = None
- if node_uuid:
- node = self.get_or_create_node(node_uuid)
+ if node_name:
+ node = self.get_or_create_node(node_name)
except exception.ComputeNodeNotFound:
LOG.warning("Could not find compute node %(node)s for "
"instance %(instance)s",
- dict(node=node_uuid, instance=instance_uuid))
+ dict(node=node_name, instance=instance_uuid))
try:
instance = self.cluster_data_model.get_instance_by_uuid(
instance_uuid)
@@ -117,13 +118,16 @@ class NovaNotification(base.NotificationEndpoint):
'disabled_reason': disabled_reason,
})
- def create_compute_node(self, node_hostname):
- """Update the compute node by querying the Nova API."""
+ def create_compute_node(self, uuid_or_name):
+ """Create the computeNode node."""
try:
- _node = self.nova.get_compute_node_by_hostname(node_hostname)
+ if utils.is_uuid_like(uuid_or_name):
+ _node = self.nova.get_compute_node_by_uuid(uuid_or_name)
+ else:
+ _node = self.nova.get_compute_node_by_hostname(uuid_or_name)
+
node = element.ComputeNode(
- id=_node.id,
- uuid=node_hostname,
+ uuid=_node.id,
hostname=_node.hypervisor_hostname,
state=_node.state,
status=_node.status,
@@ -132,26 +136,27 @@ class NovaNotification(base.NotificationEndpoint):
disk=_node.free_disk_gb,
disk_capacity=_node.local_gb,
)
+ self.cluster_data_model.add_node(node)
+ LOG.debug("New compute node mapped: %s", node.uuid)
return node
except Exception as exc:
LOG.exception(exc)
- LOG.debug("Could not refresh the node %s.", node_hostname)
- raise exception.ComputeNodeNotFound(name=node_hostname)
+ LOG.debug("Could not refresh the node %s.", uuid_or_name)
+ raise exception.ComputeNodeNotFound(name=uuid_or_name)
- return False
-
- def get_or_create_node(self, uuid):
- if uuid is None:
- LOG.debug("Compute node UUID not provided: skipping")
+ def get_or_create_node(self, uuid_or_name):
+ if uuid_or_name is None:
+ LOG.debug("Compute node UUID or name not provided: skipping")
return
try:
- return self.cluster_data_model.get_node_by_uuid(uuid)
+ if utils.is_uuid_like(uuid_or_name):
+ return self.cluster_data_model.get_node_by_uuid(uuid_or_name)
+ else:
+ return self.cluster_data_model.get_node_by_name(uuid_or_name)
except exception.ComputeNodeNotFound:
# The node didn't exist yet so we create a new node object
- node = self.create_compute_node(uuid)
- LOG.debug("New compute node created: %s", uuid)
- self.cluster_data_model.add_node(node)
- LOG.debug("New compute node mapped: %s", uuid)
+ node = self.create_compute_node(uuid_or_name)
+ LOG.debug("New compute node created: %s", uuid_or_name)
return node
def update_instance_mapping(self, instance, node):
@@ -202,18 +207,18 @@ class VersionedNotification(NovaNotification):
def service_updated(self, payload):
node_data = payload['nova_object.data']
- node_uuid = node_data['host']
+ node_name = node_data['host']
try:
- node = self.get_or_create_node(node_uuid)
+ node = self.get_or_create_node(node_name)
self.update_compute_node(node, payload)
except exception.ComputeNodeNotFound as exc:
LOG.exception(exc)
def service_deleted(self, payload):
node_data = payload['nova_object.data']
- node_uuid = node_data['host']
+ node_name = node_data['host']
try:
- node = self.get_or_create_node(node_uuid)
+ node = self.get_or_create_node(node_name)
self.delete_node(node)
except exception.ComputeNodeNotFound as exc:
LOG.exception(exc)
@@ -222,12 +227,12 @@ class VersionedNotification(NovaNotification):
instance_data = payload['nova_object.data']
instance_uuid = instance_data['uuid']
instance_state = instance_data['state']
- node_uuid = instance_data.get('host')
+ node_name = instance_data.get('host')
# if instance state is building, don't update data model
if instance_state == 'building':
return
- instance = self.get_or_create_instance(instance_uuid, node_uuid)
+ instance = self.get_or_create_instance(instance_uuid, node_name)
self.update_instance(instance, payload)
@@ -237,9 +242,9 @@ class VersionedNotification(NovaNotification):
instance = element.Instance(uuid=instance_uuid)
self.cluster_data_model.add_instance(instance)
- node_uuid = instance_data.get('host')
- if node_uuid:
- node = self.get_or_create_node(node_uuid)
+ node_name = instance_data.get('host')
+ if node_name:
+ node = self.get_or_create_node(node_name)
self.cluster_data_model.map_instance(instance, node)
self.update_instance(instance, payload)
@@ -247,8 +252,8 @@ class VersionedNotification(NovaNotification):
def instance_deleted(self, payload):
instance_data = payload['nova_object.data']
instance_uuid = instance_data['uuid']
- node_uuid = instance_data.get('host')
- instance = self.get_or_create_instance(instance_uuid, node_uuid)
+ node_name = instance_data.get('host')
+ instance = self.get_or_create_instance(instance_uuid, node_name)
try:
node = self.get_or_create_node(instance_data['host'])
diff --git a/watcher/decision_engine/scope/compute.py b/watcher/decision_engine/scope/compute.py
index a6d252623..e60661e19 100644
--- a/watcher/decision_engine/scope/compute.py
+++ b/watcher/decision_engine/scope/compute.py
@@ -32,12 +32,12 @@ class ComputeScope(base.BaseScope):
self._osc = osc
self.wrapper = nova_helper.NovaHelper(osc=self._osc)
- def remove_instance(self, cluster_model, instance, node_name):
- node = cluster_model.get_node_by_uuid(node_name)
+ def remove_instance(self, cluster_model, instance, node_uuid):
+ node = cluster_model.get_node_by_uuid(node_uuid)
cluster_model.delete_instance(instance, node)
- def update_exclude_instance(self, cluster_model, instance, node_name):
- node = cluster_model.get_node_by_uuid(node_name)
+ def update_exclude_instance(self, cluster_model, instance, node_uuid):
+ node = cluster_model.get_node_by_uuid(node_uuid)
cluster_model.unmap_instance(instance, node)
instance.update({"watcher_exclude": True})
cluster_model.map_instance(instance, node)
@@ -109,18 +109,18 @@ class ComputeScope(base.BaseScope):
[project['uuid'] for project in resource['projects']])
def remove_nodes_from_model(self, nodes_to_remove, cluster_model):
- for node_uuid in nodes_to_remove:
- node = cluster_model.get_node_by_uuid(node_uuid)
+ for node_name in nodes_to_remove:
+ node = cluster_model.get_node_by_name(node_name)
instances = cluster_model.get_node_instances(node)
for instance in instances:
- self.remove_instance(cluster_model, instance, node_uuid)
+ self.remove_instance(cluster_model, instance, node.uuid)
cluster_model.remove_node(node)
def update_exclude_instance_in_model(
self, instances_to_exclude, cluster_model):
for instance_uuid in instances_to_exclude:
try:
- node_name = cluster_model.get_node_by_instance_uuid(
+ node_uuid = cluster_model.get_node_by_instance_uuid(
instance_uuid).uuid
except exception.ComputeResourceNotFound:
LOG.warning("The following instance %s cannot be found. "
@@ -131,7 +131,7 @@ class ComputeScope(base.BaseScope):
self.update_exclude_instance(
cluster_model,
cluster_model.get_instance_by_uuid(instance_uuid),
- node_name)
+ node_uuid)
def exclude_instances_with_given_metadata(
self, instance_metadata, cluster_model, instances_to_remove):
@@ -166,7 +166,8 @@ class ComputeScope(base.BaseScope):
projects_to_exclude = []
compute_scope = []
found_nothing_flag = False
- model_hosts = list(cluster_model.get_all_compute_nodes().keys())
+ model_hosts = [n.hostname for n in
+ cluster_model.get_all_compute_nodes().values()]
if not self.scope:
return cluster_model
diff --git a/watcher/decision_engine/strategy/strategies/base.py b/watcher/decision_engine/strategy/strategies/base.py
index dc49a76f3..d6ff53a84 100755
--- a/watcher/decision_engine/strategy/strategies/base.py
+++ b/watcher/decision_engine/strategy/strategies/base.py
@@ -449,8 +449,8 @@ class BaseStrategy(loadable.Loadable):
source_node,
destination_node):
parameters = {'migration_type': migration_type,
- 'source_node': source_node.uuid,
- 'destination_node': destination_node.uuid,
+ 'source_node': source_node.hostname,
+ 'destination_node': destination_node.hostname,
'resource_name': instance.name}
self.solution.add_action(action_type=self.MIGRATION,
resource_id=instance.uuid,
diff --git a/watcher/decision_engine/strategy/strategies/host_maintenance.py b/watcher/decision_engine/strategy/strategies/host_maintenance.py
index 60cdd9eee..a60978478 100644
--- a/watcher/decision_engine/strategy/strategies/host_maintenance.py
+++ b/watcher/decision_engine/strategy/strategies/host_maintenance.py
@@ -304,7 +304,7 @@ class HostMaintenance(base.HostMaintenanceBaseStrategy):
backup_node = self.input_parameters.get('backup_node')
# if no VMs in the maintenance_node, just maintain the compute node
- src_node = self.compute_model.get_node_by_uuid(maintenance_node)
+ src_node = self.compute_model.get_node_by_name(maintenance_node)
if len(self.compute_model.get_node_instances(src_node)) == 0:
if (src_node.disabled_reason !=
self.REASON_FOR_MAINTAINING):
@@ -312,7 +312,7 @@ class HostMaintenance(base.HostMaintenanceBaseStrategy):
return
if backup_node:
- des_node = self.compute_model.get_node_by_uuid(backup_node)
+ des_node = self.compute_model.get_node_by_name(backup_node)
else:
des_node = None
diff --git a/watcher/decision_engine/strategy/strategies/saving_energy.py b/watcher/decision_engine/strategy/strategies/saving_energy.py
index 4ca13282f..9ae2b2eed 100644
--- a/watcher/decision_engine/strategy/strategies/saving_energy.py
+++ b/watcher/decision_engine/strategy/strategies/saving_energy.py
@@ -177,9 +177,9 @@ class SavingEnergy(base.SavingEnergyBaseStrategy):
node.hostname = hypervisor_node.hypervisor_hostname
hypervisor_node = hypervisor_node.to_dict()
compute_service = hypervisor_node.get('service', None)
- host_uuid = compute_service.get('host')
+ host_name = compute_service.get('host')
try:
- self.compute_model.get_node_by_uuid(host_uuid)
+ self.compute_model.get_node_by_name(host_name)
except exception.ComputeNodeNotFound:
continue
diff --git a/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py b/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py
index 626e6a66c..1818a083c 100644
--- a/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py
+++ b/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py
@@ -419,13 +419,13 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
'input_parameters'][
'resource_id'] == instance_uuid)
if len(actions) > 1:
- src_uuid = actions[0]['input_parameters']['source_node']
- dst_uuid = actions[-1]['input_parameters']['destination_node']
+ src_name = actions[0]['input_parameters']['source_node']
+ dst_name = actions[-1]['input_parameters']['destination_node']
for a in actions:
self.solution.actions.remove(a)
self.number_of_migrations -= 1
- src_node = self.compute_model.get_node_by_uuid(src_uuid)
- dst_node = self.compute_model.get_node_by_uuid(dst_uuid)
+ src_node = self.compute_model.get_node_by_name(src_name)
+ dst_node = self.compute_model.get_node_by_name(dst_name)
instance = self.compute_model.get_instance_by_uuid(
instance_uuid)
if self.compute_model.migrate_instance(
diff --git a/watcher/tests/applier/actions/test_change_nova_service_state.py b/watcher/tests/applier/actions/test_change_nova_service_state.py
index 905b2a775..0c922fafc 100644
--- a/watcher/tests/applier/actions/test_change_nova_service_state.py
+++ b/watcher/tests/applier/actions/test_change_nova_service_state.py
@@ -50,7 +50,7 @@ class TestChangeNovaServiceState(base.TestCase):
self.addCleanup(m_nova_helper.stop)
self.input_parameters = {
- baction.BaseAction.RESOURCE_ID: "compute-1",
+ "resource_name": "compute-1",
"state": element.ServiceState.ENABLED.value,
}
self.action = change_nova_service_state.ChangeNovaServiceState(
diff --git a/watcher/tests/decision_engine/cluster/test_nova_cdmc.py b/watcher/tests/decision_engine/cluster/test_nova_cdmc.py
index 364777644..aabfc5c7d 100644
--- a/watcher/tests/decision_engine/cluster/test_nova_cdmc.py
+++ b/watcher/tests/decision_engine/cluster/test_nova_cdmc.py
@@ -78,7 +78,7 @@ class TestNovaClusterDataModelCollector(base.TestCase):
disabled_reason='',
)
minimal_node = dict(
- id=1337,
+ id='160a0e7b-8b0b-4854-8257-9c71dff4efcc',
hypervisor_hostname='test_hostname',
state='TEST_STATE',
status='TEST_STATUS',
@@ -149,7 +149,7 @@ class TestNovaClusterDataModelCollector(base.TestCase):
node = list(compute_nodes.values())[0]
instance = list(instances.values())[0]
- self.assertEqual(node.uuid, 'test_hostname')
+ 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
diff --git a/watcher/tests/decision_engine/model/ceilometer_metrics.py b/watcher/tests/decision_engine/model/ceilometer_metrics.py
index 1db67d124..e62cd8612 100644
--- a/watcher/tests/decision_engine/model/ceilometer_metrics.py
+++ b/watcher/tests/decision_engine/model/ceilometer_metrics.py
@@ -112,9 +112,9 @@ class FakeCeilometerMetrics(object):
uuid = resource.uuid
mock = {}
- mock['Node_0'] = 30
+ mock["fa69c544-906b-4a6a-a9c6-c1f7a8078c73"] = 30
# use a big value to make sure it exceeds threshold
- mock['Node_1'] = 100
+ mock["af69c544-906b-4a6a-a9c6-c1f7a8078c73"] = 100
if uuid not in mock.keys():
mock[uuid] = 100
return float(mock[str(uuid)])
@@ -189,6 +189,8 @@ class FakeCeilometerMetrics(object):
# node 0
measurements['Node_0_hostname_0'] = 7
measurements['Node_1_hostname_1'] = 7
+ measurements['fa69c544-906b-4a6a-a9c6-c1f7a8078c73_hostname_0'] = 7
+ measurements['af69c544-906b-4a6a-a9c6-c1f7a8078c73_hostname_1'] = 7
# node 1
measurements['Node_2_hostname_2'] = 80
# node 2
diff --git a/watcher/tests/decision_engine/model/data/scenario_3_with_2_nodes.xml b/watcher/tests/decision_engine/model/data/scenario_3_with_2_nodes.xml
index 2433318e1..ea90081bc 100644
--- a/watcher/tests/decision_engine/model/data/scenario_3_with_2_nodes.xml
+++ b/watcher/tests/decision_engine/model/data/scenario_3_with_2_nodes.xml
@@ -1,8 +1,8 @@
-
-
+
+
-
-
+
+
diff --git a/watcher/tests/decision_engine/model/gnocchi_metrics.py b/watcher/tests/decision_engine/model/gnocchi_metrics.py
index a0d3c7ee2..f5a2df73f 100644
--- a/watcher/tests/decision_engine/model/gnocchi_metrics.py
+++ b/watcher/tests/decision_engine/model/gnocchi_metrics.py
@@ -108,9 +108,10 @@ class FakeGnocchiMetrics(object):
uuid = resource.uuid
mock = {}
- mock['Node_0'] = 30
+ mock["Node_0"] = 30
+ mock["fa69c544-906b-4a6a-a9c6-c1f7a8078c73"] = 30
# use a big value to make sure it exceeds threshold
- mock['Node_1'] = 100
+ mock["af69c544-906b-4a6a-a9c6-c1f7a8078c73"] = 100
return mock[str(uuid)]
diff --git a/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-disabled.json b/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-disabled.json
index 07cc00e34..e4966b12c 100644
--- a/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-disabled.json
+++ b/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-disabled.json
@@ -5,7 +5,7 @@
"nova_object.name": "ServiceStatusPayload",
"nova_object.version": "1.0",
"nova_object.data": {
- "host": "Node_0",
+ "host": "hostname_0",
"disabled": true,
"last_seen_up": "2012-10-29T13:42:05Z",
"binary": "nova-compute",
diff --git a/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-enabled.json b/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-enabled.json
index f3e7f2334..3b11b4908 100644
--- a/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-enabled.json
+++ b/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-enabled.json
@@ -5,7 +5,7 @@
"nova_object.name": "ServiceStatusPayload",
"nova_object.version": "1.0",
"nova_object.data": {
- "host": "Node_0",
+ "host": "hostname_0",
"disabled": false,
"last_seen_up": "2012-10-29T13:42:05Z",
"binary": "nova-compute",
diff --git a/watcher/tests/decision_engine/model/notification/data/service-create.json b/watcher/tests/decision_engine/model/notification/data/service-create.json
index 4b8ac0bb7..d0806a22e 100644
--- a/watcher/tests/decision_engine/model/notification/data/service-create.json
+++ b/watcher/tests/decision_engine/model/notification/data/service-create.json
@@ -11,7 +11,7 @@
"last_seen_up": null,
"report_count": 0,
"topic": "compute",
- "uuid": "fa69c544-906b-4a6a-a9c6-c1f7a8078c73",
+ "uuid": "fafac544-906b-4a6a-a9c6-c1f7a8078c73",
"version": 23
},
"nova_object.name": "ServiceStatusPayload",
diff --git a/watcher/tests/decision_engine/model/notification/data/service-delete.json b/watcher/tests/decision_engine/model/notification/data/service-delete.json
index b1a2c421c..0fb54d7ff 100644
--- a/watcher/tests/decision_engine/model/notification/data/service-delete.json
+++ b/watcher/tests/decision_engine/model/notification/data/service-delete.json
@@ -7,7 +7,7 @@
"disabled": false,
"disabled_reason": null,
"forced_down": false,
- "host": "Node_0",
+ "host": "hostname_0",
"last_seen_up": null,
"report_count": 0,
"topic": "compute",
diff --git a/watcher/tests/decision_engine/model/notification/data/service-update.json b/watcher/tests/decision_engine/model/notification/data/service-update.json
index 1baf63a23..4f6de34b9 100644
--- a/watcher/tests/decision_engine/model/notification/data/service-update.json
+++ b/watcher/tests/decision_engine/model/notification/data/service-update.json
@@ -1,21 +1,23 @@
{
- "priority": "INFO",
- "payload": {
- "nova_object.namespace": "nova",
- "nova_object.name": "ServiceStatusPayload",
- "nova_object.version": "1.0",
- "nova_object.data": {
- "host": "host1",
- "disabled": false,
- "last_seen_up": "2012-10-29T13:42:05Z",
- "binary": "nova-compute",
- "topic": "compute",
- "disabled_reason": null,
- "report_count": 1,
- "forced_down": false,
- "version": 15
- }
- },
"event_type": "service.update",
+ "payload": {
+ "nova_object.data": {
+ "availability_zone": null,
+ "binary": "nova-compute",
+ "disabled": false,
+ "disabled_reason": null,
+ "forced_down": false,
+ "host": "host1",
+ "last_seen_up": "2012-10-29T13:42:05Z",
+ "report_count": 1,
+ "topic": "compute",
+ "uuid": "fa69c544-906b-4a6a-a9c6-c1f7a8078c73",
+ "version": 23
+ },
+ "nova_object.name": "ServiceStatusPayload",
+ "nova_object.namespace": "nova",
+ "nova_object.version": "1.1"
+ },
+ "priority": "INFO",
"publisher_id": "nova-compute:host1"
}
diff --git a/watcher/tests/decision_engine/model/notification/test_nova_notifications.py b/watcher/tests/decision_engine/model/notification/test_nova_notifications.py
index e32d89be4..1ece440b1 100644
--- a/watcher/tests/decision_engine/model/notification/test_nova_notifications.py
+++ b/watcher/tests/decision_engine/model/notification/test_nova_notifications.py
@@ -122,8 +122,8 @@ class TestNovaNotifications(NotificationTestCase):
self.fake_cdmc.cluster_data_model = compute_model
handler = novanotification.VersionedNotification(self.fake_cdmc)
- node0_uuid = 'Node_0'
- node0 = compute_model.get_node_by_uuid(node0_uuid)
+ node0_name = "hostname_0"
+ node0 = compute_model.get_node_by_name(node0_name)
message = self.load_message('scenario3_service-update-disabled.json')
@@ -139,7 +139,7 @@ class TestNovaNotifications(NotificationTestCase):
metadata=self.FAKE_METADATA,
)
- self.assertEqual('Node_0', node0.hostname)
+ self.assertEqual("hostname_0", node0.hostname)
self.assertEqual(element.ServiceState.OFFLINE.value, node0.state)
self.assertEqual(element.ServiceState.DISABLED.value, node0.status)
@@ -153,7 +153,7 @@ class TestNovaNotifications(NotificationTestCase):
metadata=self.FAKE_METADATA,
)
- self.assertEqual('Node_0', node0.hostname)
+ self.assertEqual("hostname_0", node0.hostname)
self.assertEqual(element.ServiceState.ONLINE.value, node0.state)
self.assertEqual(element.ServiceState.ENABLED.value, node0.status)
@@ -161,12 +161,11 @@ class TestNovaNotifications(NotificationTestCase):
def test_nova_service_create(self, m_nova_helper_cls):
m_get_compute_node_by_hostname = mock.Mock(
side_effect=lambda uuid: mock.Mock(
- name='m_get_compute_node_by_hostname',
- id=3,
+ name='m_get_compute_node_by_uuid',
+ id="fafac544-906b-4a6a-a9c6-c1f7a8078c73",
hypervisor_hostname="host2",
state='up',
status='enabled',
- uuid=uuid,
memory_mb=7777,
vcpus=42,
free_disk_gb=974,
@@ -179,11 +178,11 @@ class TestNovaNotifications(NotificationTestCase):
self.fake_cdmc.cluster_data_model = compute_model
handler = novanotification.VersionedNotification(self.fake_cdmc)
- new_node_uuid = 'host2'
+ new_node_name = "host2"
self.assertRaises(
exception.ComputeNodeNotFound,
- compute_model.get_node_by_uuid, new_node_uuid)
+ compute_model.get_node_by_name, new_node_name)
message = self.load_message('service-create.json')
handler.info(
@@ -194,7 +193,7 @@ class TestNovaNotifications(NotificationTestCase):
metadata=self.FAKE_METADATA,
)
- new_node = compute_model.get_node_by_uuid(new_node_uuid)
+ new_node = compute_model.get_node_by_name(new_node_name)
self.assertEqual('host2', new_node.hostname)
self.assertEqual(element.ServiceState.ONLINE.value, new_node.state)
self.assertEqual(element.ServiceState.ENABLED.value, new_node.status)
@@ -204,10 +203,10 @@ class TestNovaNotifications(NotificationTestCase):
self.fake_cdmc.cluster_data_model = compute_model
handler = novanotification.VersionedNotification(self.fake_cdmc)
- node0_uuid = 'Node_0'
+ node0_name = "hostname_0"
# Before
- self.assertTrue(compute_model.get_node_by_uuid(node0_uuid))
+ self.assertTrue(compute_model.get_node_by_name(node0_name))
message = self.load_message('service-delete.json')
handler.info(
@@ -221,7 +220,7 @@ class TestNovaNotifications(NotificationTestCase):
# After
self.assertRaises(
exception.ComputeNodeNotFound,
- compute_model.get_node_by_uuid, node0_uuid)
+ compute_model.get_node_by_name, node0_name)
def test_nova_instance_update(self):
compute_model = self.fake_cdmc.generate_scenario_3_with_2_nodes()
@@ -276,11 +275,10 @@ class TestNovaNotifications(NotificationTestCase):
m_get_compute_node_by_hostname = mock.Mock(
side_effect=lambda uuid: mock.Mock(
name='m_get_compute_node_by_hostname',
- id=3,
+ id='669966bd-a45c-4e1c-9d57-3054899a3ec7',
hypervisor_hostname="Node_2",
state='up',
status='enabled',
- uuid=uuid,
memory_mb=7777,
vcpus=42,
free_disk_gb=974,
@@ -312,7 +310,7 @@ class TestNovaNotifications(NotificationTestCase):
self.assertEqual(512, instance0.memory)
m_get_compute_node_by_hostname.assert_called_once_with('Node_2')
- node_2 = compute_model.get_node_by_uuid('Node_2')
+ node_2 = compute_model.get_node_by_name('Node_2')
self.assertEqual(7777, node_2.memory)
self.assertEqual(42, node_2.vcpus)
self.assertEqual(974, node_2.disk)
@@ -463,7 +461,7 @@ class TestNovaNotifications(NotificationTestCase):
instance0_uuid = '73b09e16-35b7-4922-804e-e8f5d9b740fc'
instance0 = compute_model.get_instance_by_uuid(instance0_uuid)
node = compute_model.get_node_by_instance_uuid(instance0_uuid)
- self.assertEqual('Node_0', node.uuid)
+ self.assertEqual('fa69c544-906b-4a6a-a9c6-c1f7a8078c73', node.uuid)
message = self.load_message(
'instance-live_migration_force_complete-end.json')
handler.info(
@@ -474,7 +472,7 @@ class TestNovaNotifications(NotificationTestCase):
metadata=self.FAKE_METADATA,
)
node = compute_model.get_node_by_instance_uuid(instance0_uuid)
- self.assertEqual('Node_1', node.uuid)
+ self.assertEqual('fa69c544-906b-4a6a-a9c6-c1f7a8078c73', node.uuid)
self.assertEqual(element.InstanceState.ACTIVE.value, instance0.state)
def test_live_migrated_end(self):
@@ -484,7 +482,7 @@ class TestNovaNotifications(NotificationTestCase):
instance0_uuid = '73b09e16-35b7-4922-804e-e8f5d9b740fc'
instance0 = compute_model.get_instance_by_uuid(instance0_uuid)
node = compute_model.get_node_by_instance_uuid(instance0_uuid)
- self.assertEqual('Node_0', node.uuid)
+ self.assertEqual('fa69c544-906b-4a6a-a9c6-c1f7a8078c73', node.uuid)
message = self.load_message(
'instance-live_migration_post-end.json')
handler.info(
@@ -495,7 +493,7 @@ class TestNovaNotifications(NotificationTestCase):
metadata=self.FAKE_METADATA,
)
node = compute_model.get_node_by_instance_uuid(instance0_uuid)
- self.assertEqual('Node_1', node.uuid)
+ self.assertEqual('fa69c544-906b-4a6a-a9c6-c1f7a8078c73', node.uuid)
self.assertEqual(element.InstanceState.ACTIVE.value, instance0.state)
def test_nova_instance_lock(self):
@@ -605,7 +603,7 @@ class TestNovaNotifications(NotificationTestCase):
instance0_uuid = '73b09e16-35b7-4922-804e-e8f5d9b740fc'
instance0 = compute_model.get_instance_by_uuid(instance0_uuid)
node = compute_model.get_node_by_instance_uuid(instance0_uuid)
- self.assertEqual('Node_0', node.uuid)
+ self.assertEqual("fa69c544-906b-4a6a-a9c6-c1f7a8078c73", node.uuid)
message = self.load_message('instance-rebuild-end.json')
handler.info(
ctxt=self.context,
@@ -615,7 +613,7 @@ class TestNovaNotifications(NotificationTestCase):
metadata=self.FAKE_METADATA,
)
node = compute_model.get_node_by_instance_uuid(instance0_uuid)
- self.assertEqual('Node_1', node.uuid)
+ self.assertEqual('hostname_0', node.hostname)
self.assertEqual(element.InstanceState.ACTIVE.value, instance0.state)
def test_nova_instance_rescue(self):
@@ -659,7 +657,7 @@ class TestNovaNotifications(NotificationTestCase):
instance0_uuid = '73b09e16-35b7-4922-804e-e8f5d9b740fc'
instance0 = compute_model.get_instance_by_uuid(instance0_uuid)
node = compute_model.get_node_by_instance_uuid(instance0_uuid)
- self.assertEqual('Node_0', node.uuid)
+ self.assertEqual('fa69c544-906b-4a6a-a9c6-c1f7a8078c73', node.uuid)
message = self.load_message(
'instance-resize_confirm-end.json')
handler.info(
@@ -670,7 +668,7 @@ class TestNovaNotifications(NotificationTestCase):
metadata=self.FAKE_METADATA,
)
node = compute_model.get_node_by_instance_uuid(instance0_uuid)
- self.assertEqual('Node_1', node.uuid)
+ self.assertEqual('fa69c544-906b-4a6a-a9c6-c1f7a8078c73', node.uuid)
self.assertEqual(element.InstanceState.ACTIVE.value, instance0.state)
def test_nova_instance_restore_end(self):
diff --git a/watcher/tests/decision_engine/scope/test_compute.py b/watcher/tests/decision_engine/scope/test_compute.py
index 609c902bc..b4297e7a3 100644
--- a/watcher/tests/decision_engine/scope/test_compute.py
+++ b/watcher/tests/decision_engine/scope/test_compute.py
@@ -39,7 +39,7 @@ class TestComputeScope(base.TestCase):
audit_scope = fake_scopes.fake_scope_1
mock_zone_list.return_value = [
mock.Mock(zone='AZ{0}'.format(i),
- host={'Node_{0}'.format(i): {}})
+ host={'hostname_{0}'.format(i): {}})
for i in range(4)]
model = compute.ComputeScope(audit_scope, mock.Mock(),
osc=mock.Mock()).get_scoped_model(cluster)
@@ -240,7 +240,7 @@ class TestComputeScope(base.TestCase):
model = self.fake_cluster.generate_scenario_1()
compute.ComputeScope([], mock.Mock(),
osc=mock.Mock()).remove_nodes_from_model(
- ['Node_1', 'Node_2'], model)
+ ['hostname_1', 'hostname_2'], model)
expected_edges = [
('INSTANCE_0', 'Node_0'),
('INSTANCE_1', 'Node_0'),
@@ -290,7 +290,7 @@ class TestComputeScope(base.TestCase):
audit_scope.extend(fake_scopes.fake_scope_2)
mock_zone_list.return_value = [
mock.Mock(zone='AZ{0}'.format(i),
- host={'Node_{0}'.format(i): {}})
+ host={'hostname_{0}'.format(i): {}})
for i in range(4)]
model = compute.ComputeScope(audit_scope, mock.Mock(),
osc=mock.Mock()).get_scoped_model(cluster)
diff --git a/watcher/tests/decision_engine/strategy/strategies/test_host_maintenance.py b/watcher/tests/decision_engine/strategy/strategies/test_host_maintenance.py
index 8e36a3e6f..95ddeded1 100755
--- a/watcher/tests/decision_engine/strategy/strategies/test_host_maintenance.py
+++ b/watcher/tests/decision_engine/strategy/strategies/test_host_maintenance.py
@@ -212,8 +212,8 @@ class TestHostMaintenance(TestBaseStrategy):
result = self.strategy.pre_execute()
self.assertIsNone(result)
- self.strategy.input_parameters = {"maintenance_node": 'Node_2',
- "backup_node": 'Node_3'}
+ self.strategy.input_parameters = {"maintenance_node": 'hostname_2',
+ "backup_node": 'hostname_3'}
self.strategy.do_execute()
expected = [{'action_type': 'change_nova_service_state',
diff --git a/watcher/tests/decision_engine/strategy/strategies/test_noisy_neighbor.py b/watcher/tests/decision_engine/strategy/strategies/test_noisy_neighbor.py
index f4b64e671..baff4a8f1 100644
--- a/watcher/tests/decision_engine/strategy/strategies/test_noisy_neighbor.py
+++ b/watcher/tests/decision_engine/strategy/strategies/test_noisy_neighbor.py
@@ -63,7 +63,7 @@ class TestNoisyNeighbor(TestBaseStrategy):
def test_calc_used_resource(self):
model = self.fake_c_cluster.generate_scenario_3_with_2_nodes()
self.m_c_model.return_value = model
- node = model.get_node_by_uuid('Node_0')
+ node = model.get_node_by_uuid("fa69c544-906b-4a6a-a9c6-c1f7a8078c73")
cores_used, mem_used, disk_used = self.strategy.calc_used_resource(
node)
diff --git a/watcher/tests/decision_engine/strategy/strategies/test_outlet_temp_control.py b/watcher/tests/decision_engine/strategy/strategies/test_outlet_temp_control.py
index c41824b53..cac76d6c6 100644
--- a/watcher/tests/decision_engine/strategy/strategies/test_outlet_temp_control.py
+++ b/watcher/tests/decision_engine/strategy/strategies/test_outlet_temp_control.py
@@ -63,7 +63,7 @@ class TestOutletTempControl(TestBaseStrategy):
def test_calc_used_resource(self):
model = self.fake_c_cluster.generate_scenario_3_with_2_nodes()
self.m_c_model.return_value = model
- node = model.get_node_by_uuid('Node_0')
+ node = model.get_node_by_uuid("fa69c544-906b-4a6a-a9c6-c1f7a8078c73")
cores_used, mem_used, disk_used = self.strategy.calc_used_resource(
node)
@@ -73,15 +73,18 @@ class TestOutletTempControl(TestBaseStrategy):
model = self.fake_c_cluster.generate_scenario_3_with_2_nodes()
self.m_c_model.return_value = model
n1, n2 = self.strategy.group_hosts_by_outlet_temp()
- self.assertEqual('Node_1', n1[0]['compute_node'].uuid)
- self.assertEqual('Node_0', n2[0]['compute_node'].uuid)
+ self.assertEqual("af69c544-906b-4a6a-a9c6-c1f7a8078c73",
+ n1[0]['compute_node'].uuid)
+ self.assertEqual("fa69c544-906b-4a6a-a9c6-c1f7a8078c73",
+ n2[0]['compute_node'].uuid)
def test_choose_instance_to_migrate(self):
model = self.fake_c_cluster.generate_scenario_3_with_2_nodes()
self.m_c_model.return_value = model
n1, n2 = self.strategy.group_hosts_by_outlet_temp()
instance_to_mig = self.strategy.choose_instance_to_migrate(n1)
- self.assertEqual('Node_1', instance_to_mig[0].uuid)
+ self.assertEqual('af69c544-906b-4a6a-a9c6-c1f7a8078c73',
+ instance_to_mig[0].uuid)
self.assertEqual('a4cab39b-9828-413a-bf88-f76921bf1517',
instance_to_mig[1].uuid)
@@ -92,7 +95,8 @@ class TestOutletTempControl(TestBaseStrategy):
instance_to_mig = self.strategy.choose_instance_to_migrate(n1)
dest_hosts = self.strategy.filter_dest_servers(n2, instance_to_mig[1])
self.assertEqual(1, len(dest_hosts))
- self.assertEqual('Node_0', dest_hosts[0]['compute_node'].uuid)
+ self.assertEqual("fa69c544-906b-4a6a-a9c6-c1f7a8078c73",
+ dest_hosts[0]['compute_node'].uuid)
def test_execute_no_workload(self):
model = self.fake_c_cluster.\
diff --git a/watcher/tests/decision_engine/strategy/strategies/test_saving_energy.py b/watcher/tests/decision_engine/strategy/strategies/test_saving_energy.py
index 61e66f39f..39c547976 100644
--- a/watcher/tests/decision_engine/strategy/strategies/test_saving_energy.py
+++ b/watcher/tests/decision_engine/strategy/strategies/test_saving_energy.py
@@ -76,9 +76,9 @@ class TestSavingEnergy(TestBaseStrategy):
mock_hyper1 = mock.Mock()
mock_hyper2 = mock.Mock()
mock_hyper1.to_dict.return_value = {
- 'running_vms': 2, 'service': {'host': 'Node_0'}, 'state': 'up'}
+ 'running_vms': 2, 'service': {'host': 'hostname_0'}, 'state': 'up'}
mock_hyper2.to_dict.return_value = {
- 'running_vms': 2, 'service': {'host': 'Node_1'}, 'state': 'up'}
+ 'running_vms': 2, 'service': {'host': 'hostname_1'}, 'state': 'up'}
self.m_nova.hypervisors.get.side_effect = [mock_hyper1, mock_hyper2]
self.strategy.get_hosts_pool()
@@ -101,9 +101,9 @@ class TestSavingEnergy(TestBaseStrategy):
mock_hyper1 = mock.Mock()
mock_hyper2 = mock.Mock()
mock_hyper1.to_dict.return_value = {
- 'running_vms': 0, 'service': {'host': 'Node_0'}, 'state': 'up'}
+ 'running_vms': 0, 'service': {'host': 'hostname_0'}, 'state': 'up'}
mock_hyper2.to_dict.return_value = {
- 'running_vms': 0, 'service': {'host': 'Node_1'}, 'state': 'up'}
+ 'running_vms': 0, 'service': {'host': 'hostname_1'}, 'state': 'up'}
self.m_nova.hypervisors.get.side_effect = [mock_hyper1, mock_hyper2]
self.strategy.get_hosts_pool()
@@ -126,9 +126,9 @@ class TestSavingEnergy(TestBaseStrategy):
mock_hyper1 = mock.Mock()
mock_hyper2 = mock.Mock()
mock_hyper1.to_dict.return_value = {
- 'running_vms': 0, 'service': {'host': 'Node_0'}, 'state': 'up'}
+ 'running_vms': 0, 'service': {'host': 'hostname_0'}, 'state': 'up'}
mock_hyper2.to_dict.return_value = {
- 'running_vms': 0, 'service': {'host': 'Node_1'}, 'state': 'up'}
+ 'running_vms': 0, 'service': {'host': 'hostname_1'}, 'state': 'up'}
self.m_nova.hypervisors.get.side_effect = [mock_hyper1, mock_hyper2]
self.strategy.get_hosts_pool()
@@ -151,9 +151,11 @@ class TestSavingEnergy(TestBaseStrategy):
mock_hyper1 = mock.Mock()
mock_hyper2 = mock.Mock()
mock_hyper1.to_dict.return_value = {
- 'running_vms': 0, 'service': {'host': 'Node_0'}, 'state': 'up'}
+ 'running_vms': 0, 'service': {'host': 'hostname_0'},
+ 'state': 'up'}
mock_hyper2.to_dict.return_value = {
- 'running_vms': 0, 'service': {'host': 'Node_10'}, 'state': 'up'}
+ 'running_vms': 0, 'service': {'host': 'hostname_10'},
+ 'state': 'up'}
self.m_nova.hypervisors.get.side_effect = [mock_hyper1, mock_hyper2]
self.strategy.get_hosts_pool()
@@ -196,9 +198,9 @@ class TestSavingEnergy(TestBaseStrategy):
mock_hyper1 = mock.Mock()
mock_hyper2 = mock.Mock()
mock_hyper1.to_dict.return_value = {
- 'running_vms': 0, 'service': {'host': 'Node_0'}, 'state': 'up'}
+ 'running_vms': 0, 'service': {'host': 'hostname_0'}, 'state': 'up'}
mock_hyper2.to_dict.return_value = {
- 'running_vms': 0, 'service': {'host': 'Node_1'}, 'state': 'up'}
+ 'running_vms': 0, 'service': {'host': 'hostname_1'}, 'state': 'up'}
self.m_nova.hypervisors.get.side_effect = [mock_hyper1, mock_hyper2]
model = self.fake_c_cluster.generate_scenario_1()
diff --git a/watcher/tests/decision_engine/strategy/strategies/test_vm_workload_consolidation.py b/watcher/tests/decision_engine/strategy/strategies/test_vm_workload_consolidation.py
index 31764357e..d2dccff9e 100644
--- a/watcher/tests/decision_engine/strategy/strategies/test_vm_workload_consolidation.py
+++ b/watcher/tests/decision_engine/strategy/strategies/test_vm_workload_consolidation.py
@@ -124,8 +124,8 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
self.strategy.add_migration(instance, n1, n2)
self.assertEqual(1, len(self.strategy.solution.actions))
expected = {'action_type': 'migrate',
- 'input_parameters': {'destination_node': n2.uuid,
- 'source_node': n1.uuid,
+ 'input_parameters': {'destination_node': n2.hostname,
+ 'source_node': n1.hostname,
'migration_type': 'live',
'resource_id': instance.uuid,
'resource_name': instance.name}}
@@ -147,8 +147,8 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
self.strategy.add_migration(instance, n1, n2)
self.assertEqual(1, len(self.strategy.solution.actions))
expected = {'action_type': 'migrate',
- 'input_parameters': {'destination_node': n2.uuid,
- 'source_node': n1.uuid,
+ 'input_parameters': {'destination_node': n2.hostname,
+ 'source_node': n1.hostname,
'migration_type': 'live',
'resource_id': instance.uuid,
'resource_name': instance.name}}
@@ -255,8 +255,8 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
cc = {'cpu': 1.0, 'ram': 1.0, 'disk': 1.0}
self.strategy.consolidation_phase(cc)
expected = [{'action_type': 'migrate',
- 'input_parameters': {'destination_node': n2.uuid,
- 'source_node': n1.uuid,
+ 'input_parameters': {'destination_node': n2.hostname,
+ 'source_node': n1.hostname,
'migration_type': 'live',
'resource_id': instance.uuid,
'resource_name': instance.name}}]
@@ -273,9 +273,9 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
n1 = model.get_node_by_uuid('Node_0')
self.strategy.get_relative_cluster_utilization = mock.MagicMock()
self.strategy.do_execute()
- n2_uuid = self.strategy.solution.actions[0][
+ n2_name = self.strategy.solution.actions[0][
'input_parameters']['destination_node']
- n2 = model.get_node_by_uuid(n2_uuid)
+ n2 = model.get_node_by_name(n2_name)
n3_uuid = self.strategy.solution.actions[2][
'input_parameters']['resource_id']
n3 = model.get_node_by_uuid(n3_uuid)
@@ -283,14 +283,14 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
'input_parameters']['resource_id']
n4 = model.get_node_by_uuid(n4_uuid)
expected = [{'action_type': 'migrate',
- 'input_parameters': {'destination_node': n2.uuid,
- 'source_node': n1.uuid,
+ 'input_parameters': {'destination_node': n2.hostname,
+ 'source_node': n1.hostname,
'migration_type': 'live',
'resource_id': 'INSTANCE_3',
'resource_name': ''}},
{'action_type': 'migrate',
- 'input_parameters': {'destination_node': n2.uuid,
- 'source_node': n1.uuid,
+ 'input_parameters': {'destination_node': n2.hostname,
+ 'source_node': n1.hostname,
'migration_type': 'live',
'resource_id': 'INSTANCE_1',
'resource_name': ''}},
@@ -330,31 +330,31 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
cc = {'cpu': 1.0, 'ram': 1.0, 'disk': 1.0}
self.strategy.offload_phase(cc)
expected = [{'action_type': 'migrate',
- 'input_parameters': {'destination_node': n2.uuid,
+ 'input_parameters': {'destination_node': n2.hostname,
'migration_type': 'live',
'resource_id': 'INSTANCE_6',
'resource_name': '',
- 'source_node': n1.uuid}},
+ 'source_node': n1.hostname}},
{'action_type': 'migrate',
- 'input_parameters': {'destination_node': n2.uuid,
+ 'input_parameters': {'destination_node': n2.hostname,
'migration_type': 'live',
'resource_id': 'INSTANCE_7',
'resource_name': '',
- 'source_node': n1.uuid}},
+ 'source_node': n1.hostname}},
{'action_type': 'migrate',
- 'input_parameters': {'destination_node': n2.uuid,
+ 'input_parameters': {'destination_node': n2.hostname,
'migration_type': 'live',
'resource_id': 'INSTANCE_8',
'resource_name': '',
- 'source_node': n1.uuid}}]
+ 'source_node': n1.hostname}}]
self.assertEqual(expected, self.strategy.solution.actions)
self.strategy.consolidation_phase(cc)
expected.append({'action_type': 'migrate',
- 'input_parameters': {'destination_node': n1.uuid,
+ 'input_parameters': {'destination_node': n1.hostname,
'migration_type': 'live',
'resource_id': 'INSTANCE_7',
'resource_name': '',
- 'source_node': n2.uuid}})
+ 'source_node': n2.hostname}})
self.assertEqual(expected, self.strategy.solution.actions)
self.strategy.optimize_solution()
del expected[3]