summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openstack/common/rpc/amqp.py9
-rw-r--r--tests/unit/rpc/amqp.py11
2 files changed, 18 insertions, 2 deletions
diff --git a/openstack/common/rpc/amqp.py b/openstack/common/rpc/amqp.py
index 1afd2ab..38f2515 100644
--- a/openstack/common/rpc/amqp.py
+++ b/openstack/common/rpc/amqp.py
@@ -300,8 +300,13 @@ def pack_context(msg, context):
for args at some point.
"""
- context_d = dict([('_context_%s' % key, value)
- for (key, value) in context.to_dict().iteritems()])
+ if isinstance(context, dict):
+ context_d = dict([('_context_%s' % key, value)
+ for (key, value) in context.iteritems()])
+ else:
+ context_d = dict([('_context_%s' % key, value)
+ for (key, value) in context.to_dict().iteritems()])
+
msg.update(context_d)
diff --git a/tests/unit/rpc/amqp.py b/tests/unit/rpc/amqp.py
index 83713c7..76d6946 100644
--- a/tests/unit/rpc/amqp.py
+++ b/tests/unit/rpc/amqp.py
@@ -22,6 +22,7 @@ Unit Tests for AMQP-based remote procedure calls
import logging
from eventlet import greenthread
+import mock
from oslo.config import cfg
from openstack.common import jsonutils
@@ -177,3 +178,13 @@ class BaseRpcAMQPTestCase(common.BaseRpcTestCase):
conn.close()
self.assertTrue(self.exc_raised)
+
+ def test_context_dict_type_check(self):
+ """Test that context is handled properly depending on the type."""
+ fake_context = {'fake': 'context'}
+ mock_msg = mock.MagicMock()
+ rpc_amqp.pack_context(mock_msg, fake_context)
+
+ # assert first arg in args was a dict type
+ args = mock_msg.update.call_args[0]
+ self.assertIsInstance(args[0], dict)