Skip to content

Commit

Permalink
Add compare_cpu to the compute rpcapi.
Browse files Browse the repository at this point in the history
Part of bug 1006467.

This patch adds compare_cpu to the compute rpcapi.  This is used by the
scheduler.

Change-Id: Ibce3ab3797c1305829c0722be1813e462193f08b
  • Loading branch information
russellb committed May 31, 2012
1 parent 60b6c5d commit 5a1236e
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 7 deletions.
4 changes: 4 additions & 0 deletions nova/compute/rpcapi.py
Expand Up @@ -84,6 +84,10 @@ def attach_volume(self, ctxt, instance, volume_id, mountpoint):
mountpoint=mountpoint),
topic=self._compute_topic(ctxt, None, instance))

def compare_cpu(self, ctxt, cpu_info, host):
return self.call(ctxt, self.make_msg('compare_cpu', cpu_info=cpu_info),
topic=self._compute_topic(ctxt, host, None))

def confirm_resize(self, ctxt, instance, migration_id, host,
cast=True):
rpc_method = self.cast if cast else self.call
Expand Down
8 changes: 4 additions & 4 deletions nova/scheduler/driver.py
Expand Up @@ -23,6 +23,7 @@

from nova.compute import api as compute_api
from nova.compute import power_state
from nova.compute import rpcapi as compute_rpcapi
from nova.compute import vm_states
from nova import db
from nova import exception
Expand Down Expand Up @@ -137,6 +138,7 @@ def __init__(self):
self.host_manager = importutils.import_object(
FLAGS.scheduler_host_manager)
self.compute_api = compute_api.API()
self.compute_rpcapi = compute_rpcapi.ComputeAPI()

def get_host_list(self):
"""Get a list of hosts from the HostManager."""
Expand Down Expand Up @@ -354,10 +356,8 @@ def _live_migration_common_check(self, context, instance_ref, dest,

# Checking cpuinfo.
try:
rpc.call(context,
rpc.queue_get_for(context, FLAGS.compute_topic, dest),
{"method": 'compare_cpu',
"args": {'cpu_info': oservice_ref['cpu_info']}})
self.compute_rpcapi.compare_cpu(context, oservice_ref['cpu_info'],
dest)

except exception.InvalidCPUInfo:
src = instance_ref['host']
Expand Down
4 changes: 4 additions & 0 deletions nova/tests/compute/test_rpcapi.py
Expand Up @@ -105,6 +105,10 @@ def test_attach_volume(self):
self._test_compute_api('attach_volume', 'cast',
instance=self.fake_instance, volume_id='id', mountpoint='mp')

def test_compare_cpu(self):
self._test_compute_api('compare_cpu', 'call', cpu_info='info',
host='host')

def test_confirm_resize_cast(self):
self._test_compute_api('confirm_resize', 'cast',
instance=self.fake_instance, migration_id='id', host='host')
Expand Down
10 changes: 7 additions & 3 deletions nova/tests/scheduler/test_scheduler.py
Expand Up @@ -23,6 +23,7 @@

from nova.compute import api as compute_api
from nova.compute import power_state
from nova.compute import rpcapi as compute_rpcapi
from nova.compute import vm_states
from nova import context
from nova import db
Expand Down Expand Up @@ -539,7 +540,9 @@ def test_live_migration_all_checks_pass(self):
dest).AndReturn('dest_queue')
rpc.call(self.context, 'dest_queue',
{'method': 'compare_cpu',
'args': {'cpu_info': 'fake_cpu_info'}}).AndReturn(True)
'args': {'cpu_info': 'fake_cpu_info'},
'version': compute_rpcapi.ComputeAPI.RPC_API_VERSION}, None
).AndReturn(True)

db.instance_update_and_get_original(self.context, instance['id'],
{"vm_state": vm_states.MIGRATING}).AndReturn(
Expand Down Expand Up @@ -957,8 +960,9 @@ def test_live_migration_dest_host_incompatable_cpu_raises(self):
dest).AndReturn('dest_queue')
rpc.call(self.context, 'dest_queue',
{'method': 'compare_cpu',
'args': {'cpu_info': 'fake_cpu_info'}}).AndRaise(
rpc_common.RemoteError())
'args': {'cpu_info': 'fake_cpu_info'},
'version': compute_rpcapi.ComputeAPI.RPC_API_VERSION}, None
).AndRaise(rpc_common.RemoteError())

self.mox.ReplayAll()
self.assertRaises(rpc_common.RemoteError,
Expand Down

0 comments on commit 5a1236e

Please sign in to comment.