Serialize the notification payload in json
When a notification payload is passed to the oslo.messaging the payload must be correctly serialized. This change encode the payload into json as the old rpc did. Closes bug: #1279881 Change-Id: I99fc2a4b0e0146c9faa6abeddbd15cb24169e024
This commit is contained in:
parent
9bfb055c7c
commit
a83d5f11e4
11
nova/rpc.py
11
nova/rpc.py
@ -31,6 +31,7 @@ from oslo import messaging
|
||||
|
||||
import nova.context
|
||||
import nova.exception
|
||||
from nova.openstack.common import jsonutils
|
||||
|
||||
CONF = cfg.CONF
|
||||
TRANSPORT = None
|
||||
@ -60,8 +61,8 @@ def init(conf):
|
||||
TRANSPORT = messaging.get_transport(conf,
|
||||
allowed_remote_exmods=exmods,
|
||||
aliases=TRANSPORT_ALIASES)
|
||||
NOTIFIER = messaging.Notifier(TRANSPORT,
|
||||
serializer=RequestContextSerializer(None))
|
||||
serializer = RequestContextSerializer(JsonPayloadSerializer())
|
||||
NOTIFIER = messaging.Notifier(TRANSPORT, serializer=serializer)
|
||||
|
||||
|
||||
def cleanup():
|
||||
@ -88,6 +89,12 @@ def get_allowed_exmods():
|
||||
return ALLOWED_EXMODS + EXTRA_EXMODS
|
||||
|
||||
|
||||
class JsonPayloadSerializer(messaging.NoOpSerializer):
|
||||
@staticmethod
|
||||
def serialize_entity(context, entity):
|
||||
return jsonutils.to_primitive(entity, convert_instances=True)
|
||||
|
||||
|
||||
class RequestContextSerializer(messaging.Serializer):
|
||||
|
||||
def __init__(self, base):
|
||||
|
@ -15,6 +15,7 @@
|
||||
import collections
|
||||
import functools
|
||||
|
||||
import anyjson
|
||||
from oslo import messaging
|
||||
|
||||
from nova import rpc
|
||||
@ -50,6 +51,10 @@ class FakeNotifier(object):
|
||||
|
||||
def _notify(self, priority, ctxt, event_type, payload):
|
||||
payload = self._serializer.serialize_entity(ctxt, payload)
|
||||
# NOTE(sileht): simulate the kombu serializer
|
||||
# this permit to raise an exception if something have not
|
||||
# been serialized correctly
|
||||
anyjson.serialize(payload)
|
||||
msg = FakeMessage(self.publisher_id, priority, event_type, payload)
|
||||
NOTIFICATIONS.append(msg)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user