diff --git a/neutron/privileged/agent/linux/ip_lib.py b/neutron/privileged/agent/linux/ip_lib.py index 0072707e461..546655ab2dd 100644 --- a/neutron/privileged/agent/linux/ip_lib.py +++ b/neutron/privileged/agent/linux/ip_lib.py @@ -527,7 +527,7 @@ def make_serializable(value): if isinstance(value, list): return [make_serializable(item) for item in value] elif isinstance(value, netlink.nla_slot): - return [value[0], make_serializable(value[1])] + return [_ensure_string(value[0]), make_serializable(value[1])] elif isinstance(value, netlink.nla_base) and six.PY3: return make_serializable(value.dump()) elif isinstance(value, dict): diff --git a/neutron/tests/unit/privileged/agent/linux/test_ip_lib.py b/neutron/tests/unit/privileged/agent/linux/test_ip_lib.py index 2efb168051c..27d65696a80 100644 --- a/neutron/tests/unit/privileged/agent/linux/test_ip_lib.py +++ b/neutron/tests/unit/privileged/agent/linux/test_ip_lib.py @@ -216,13 +216,16 @@ class IpLibTestCase(base.BaseTestCase): class MakeSerializableTestCase(base.BaseTestCase): - NLA_DATA = ifinfmsg.ifinfbase.state(data=b'54321') + NLA_DATA1 = ifinfmsg.ifinfbase.state(data=b'54321') + NLA_DATA2 = ifinfmsg.ifinfbase.state(data=b'abcdef') INPUT_1 = {'key1': 'value1', b'key2': b'value2', 'key3': ('a', 2), 'key4': [1, 2, 'c'], - 'key5': netlink.nla_slot('nla_name', NLA_DATA)} + b'key5': netlink.nla_slot('nla_name1', NLA_DATA1), + 'key6': netlink.nla_slot(b'nla_name2', NLA_DATA2)} OUTPUT_1 = {'key1': 'value1', 'key2': 'value2', 'key3': ('a', 2), 'key4': [1, 2, 'c'], - 'key5': ['nla_name', '54321']} + 'key5': ['nla_name1', '54321'], + 'key6': ['nla_name2', 'abcdef']} def test_make_serializable(self): self.assertEqual(self.OUTPUT_1,