From e82f0eb5df898f930f6d6a476b5d9550b1625d76 Mon Sep 17 00:00:00 2001 From: armando-migliaccio Date: Fri, 6 Sep 2013 12:57:48 -0700 Subject: [PATCH] Prevents 400 NVP errors caused by a None display_name The API forbids a resource name to be None, but the Model does not. Such errors may be induced by programming directly against the plugin interface. With this fix we avoid raising 400 faults which may be introduced by involuntary programming errors. Fixes bug 1221896 Change-Id: Ic1201c5af5691f2bed38753453f73c229858b10f --- neutron/plugins/nicira/nvplib.py | 2 +- neutron/tests/unit/nicira/test_nvplib.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/neutron/plugins/nicira/nvplib.py b/neutron/plugins/nicira/nvplib.py index dd63d5bc3..a65dfc08a 100644 --- a/neutron/plugins/nicira/nvplib.py +++ b/neutron/plugins/nicira/nvplib.py @@ -139,7 +139,7 @@ def _check_and_truncate_name(display_name): LOG.debug(_("Specified name:'%s' exceeds maximum length. " "It will be truncated on NVP"), display_name) return display_name[:MAX_DISPLAY_NAME_LEN] - return display_name + return display_name or '' def get_cluster_version(cluster): diff --git a/neutron/tests/unit/nicira/test_nvplib.py b/neutron/tests/unit/nicira/test_nvplib.py index d7b815ae2..85cb948fb 100644 --- a/neutron/tests/unit/nicira/test_nvplib.py +++ b/neutron/tests/unit/nicira/test_nvplib.py @@ -1442,5 +1442,23 @@ class TestNvplibVersioning(base.BaseTestCase): 'create_lrouter', None) +class NvplibMiscTestCase(base.BaseTestCase): + + def test_check_and_truncate_name_with_none(self): + name = None + result = nvplib._check_and_truncate_name(name) + self.assertEqual('', result) + + def test_check_and_truncate_name_with_short_name(self): + name = 'foo_port_name' + result = nvplib._check_and_truncate_name(name) + self.assertEqual(name, result) + + def test_check_and_truncate_name_long_name(self): + name = 'this_is_a_port_whose_name_is_longer_than_40_chars' + result = nvplib._check_and_truncate_name(name) + self.assertEqual(len(result), nvplib.MAX_DISPLAY_NAME_LEN) + + def _nicira_method(method_name, module_name='nvplib'): return '%s.%s.%s' % ('neutron.plugins.nicira', module_name, method_name) -- 2.45.2