Correct NotImplemented to NotImplementedError in rpcapi.py

NotImplemented will not return any useful info to end-user.
This should be NotImplementedError.

Change-Id: I4402a1f4f5fd47fd7230359a5c2eb03123f993fa
Close-Bug: #1524163
This commit is contained in:
Lin Tan 2015-12-04 15:45:48 +08:00
parent 1f97a7d67e
commit 1171e25d1d
3 changed files with 51 additions and 9 deletions

View File

@ -606,13 +606,15 @@ class ConductorAPI(object):
:param object_versions: A dict of {objname: version} mappings :param object_versions: A dict of {objname: version} mappings
:param args: The positional arguments to the action method :param args: The positional arguments to the action method
:param kwargs: The keyword arguments to the action method :param kwargs: The keyword arguments to the action method
:raises: NotImplemented when an operator makes an error during upgrade :raises: NotImplementedError when an operator makes an error during
upgrade
:returns: The result of the action method, which may (or may not) :returns: The result of the action method, which may (or may not)
be an instance of the implementing VersionedObject class. be an instance of the implementing VersionedObject class.
""" """
if not self.client.can_send_version('1.31'): if not self.client.can_send_version('1.31'):
raise NotImplemented(_('Incompatible conductor version - ' raise NotImplementedError(_('Incompatible conductor version - '
'please upgrade ironic-conductor first')) 'please upgrade ironic-conductor '
'first'))
cctxt = self.client.prepare(topic=self.topic, version='1.31') cctxt = self.client.prepare(topic=self.topic, version='1.31')
return cctxt.call(context, 'object_class_action_versions', return cctxt.call(context, 'object_class_action_versions',
objname=objname, objmethod=objmethod, objname=objname, objmethod=objmethod,
@ -630,13 +632,15 @@ class ConductorAPI(object):
:param objmethod: The name of the action method to call :param objmethod: The name of the action method to call
:param args: The positional arguments to the action method :param args: The positional arguments to the action method
:param kwargs: The keyword arguments to the action method :param kwargs: The keyword arguments to the action method
:raises: NotImplemented when an operator makes an error during upgrade :raises: NotImplementedError when an operator makes an error during
upgrade
:returns: A tuple with the updates made to the object and :returns: A tuple with the updates made to the object and
the result of the action method the result of the action method
""" """
if not self.client.can_send_version('1.31'): if not self.client.can_send_version('1.31'):
raise NotImplemented(_('Incompatible conductor version - ' raise NotImplementedError(_('Incompatible conductor version - '
'please upgrade ironic-conductor first')) 'please upgrade ironic-conductor '
'first'))
cctxt = self.client.prepare(topic=self.topic, version='1.31') cctxt = self.client.prepare(topic=self.topic, version='1.31')
return cctxt.call(context, 'object_action', objinst=objinst, return cctxt.call(context, 'object_action', objinst=objinst,
objmethod=objmethod, args=args, kwargs=kwargs) objmethod=objmethod, args=args, kwargs=kwargs)
@ -654,12 +658,14 @@ class ConductorAPI(object):
:param context: The context within which to perform the backport :param context: The context within which to perform the backport
:param objinst: An instance of a VersionedObject to be backported :param objinst: An instance of a VersionedObject to be backported
:param object_versions: A dict of {objname: version} mappings :param object_versions: A dict of {objname: version} mappings
:raises: NotImplemented when an operator makes an error during upgrade :raises: NotImplementedError when an operator makes an error during
upgrade
:returns: The downgraded instance of objinst :returns: The downgraded instance of objinst
""" """
if not self.client.can_send_version('1.31'): if not self.client.can_send_version('1.31'):
raise NotImplemented(_('Incompatible conductor version - ' raise NotImplementedError(_('Incompatible conductor version - '
'please upgrade ironic-conductor first')) 'please upgrade ironic-conductor '
'first'))
cctxt = self.client.prepare(topic=self.topic, version='1.31') cctxt = self.client.prepare(topic=self.topic, version='1.31')
return cctxt.call(context, 'object_backport_versions', objinst=objinst, return cctxt.call(context, 'object_backport_versions', objinst=objinst,
object_versions=object_versions) object_versions=object_versions)

View File

@ -22,6 +22,7 @@ import copy
import mock import mock
from oslo_config import cfg from oslo_config import cfg
import oslo_messaging as messaging
from oslo_messaging import _utils as messaging_utils from oslo_messaging import _utils as messaging_utils
from ironic.common import boot_devices from ironic.common import boot_devices
@ -342,3 +343,31 @@ class RPCAPITestCase(base.DbTestCase):
version='1.31', version='1.31',
objinst='fake-object', objinst='fake-object',
object_versions={'fake-object': '1.0'}) object_versions={'fake-object': '1.0'})
@mock.patch.object(messaging.RPCClient, 'can_send_version', autospec=True)
def test_object_action_invalid_version(self, mock_send):
rpcapi = conductor_rpcapi.ConductorAPI(topic='fake-topic')
mock_send.return_value = False
self.assertRaises(NotImplementedError,
rpcapi.object_action, self.context,
objinst='fake-object', objmethod='foo',
args=tuple(), kwargs=dict())
@mock.patch.object(messaging.RPCClient, 'can_send_version', autospec=True)
def test_object_class_action_versions_invalid_version(self, mock_send):
rpcapi = conductor_rpcapi.ConductorAPI(topic='fake-topic')
mock_send.return_value = False
self.assertRaises(NotImplementedError,
rpcapi.object_class_action_versions, self.context,
objname='fake-object', objmethod='foo',
object_versions={'fake-object': '1.0'},
args=tuple(), kwargs=dict())
@mock.patch.object(messaging.RPCClient, 'can_send_version', autospec=True)
def test_object_backport_versions_invalid_version(self, mock_send):
rpcapi = conductor_rpcapi.ConductorAPI(topic='fake-topic')
mock_send.return_value = False
self.assertRaises(NotImplementedError,
rpcapi.object_backport_versions, self.context,
objinst='fake-object',
object_versions={'fake-object': '1.0'})

View File

@ -0,0 +1,7 @@
---
fixes:
- In conductor/rpcapi.py, object_backport_version(),
object_action() and object_class_action_versions()
misspell NotImplementedError with NotImplemented
which returns nothing useful to users.
See https://bugs.launchpad.net/ironic/+bug/1524163.