From bfe02e45b0a4c66ddb7336ce25d713358abf5d2e Mon Sep 17 00:00:00 2001 From: Salvatore Orlando Date: Mon, 6 Sep 2021 09:49:57 -0700 Subject: [PATCH] Do not set multicast=True if not needed In some cases - such as isolated segments - multicast cannot be enabled. Leaving it to default settings will avoid error responses from the NSX-T backend. Change-Id: I65beefc574f0167e9679c873c99e48173999741c --- vmware_nsx/plugins/nsx_p/plugin.py | 5 ++++- vmware_nsx/tests/unit/nsx_p/test_plugin.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/vmware_nsx/plugins/nsx_p/plugin.py b/vmware_nsx/plugins/nsx_p/plugin.py index ef84bd6cd6..b1abf9db59 100644 --- a/vmware_nsx/plugins/nsx_p/plugin.py +++ b/vmware_nsx/plugins/nsx_p/plugin.py @@ -103,6 +103,7 @@ from vmware_nsxlib.v3 import exceptions as nsx_lib_exc from vmware_nsxlib.v3 import nsx_constants as nsxlib_consts from vmware_nsxlib.v3.policy import constants as policy_constants from vmware_nsxlib.v3.policy import core_defs as policy_defs +from vmware_nsxlib.v3.policy import core_resources from vmware_nsxlib.v3.policy import transaction as policy_trans from vmware_nsxlib.v3.policy import utils as p_utils from vmware_nsxlib.v3 import utils as nsxlib_utils @@ -1146,12 +1147,14 @@ class NsxPolicyPlugin(nsx_plugin_common.NsxPluginV3Base): return versions def _get_segment_multicast_setting(self, context, net_id): + # Multicast must be explicitly disabled for v6-only subnets seg_subnets_ip_ver = self._get_segment_subnets_versions( context, net_id) # Multicast cannot be enabled on segments with v6 subnets only if len(seg_subnets_ip_ver) == 1 and seg_subnets_ip_ver.pop() == 6: return False - return True + # Ignore value of multicast setting (go with defaults) + return core_resources.IGNORE def _get_segment_subnets(self, context, net_id, net_az=None, interface_subnets=None, diff --git a/vmware_nsx/tests/unit/nsx_p/test_plugin.py b/vmware_nsx/tests/unit/nsx_p/test_plugin.py index dd10b9aae4..8a403655ea 100644 --- a/vmware_nsx/tests/unit/nsx_p/test_plugin.py +++ b/vmware_nsx/tests/unit/nsx_p/test_plugin.py @@ -2084,7 +2084,7 @@ class NsxPTestL3NatTestCase(NsxPTestL3NatTest, # We expect two subnet objects on segment seg_update.assert_called_with( n['network']['id'], - multicast=True, + multicast=mock.ANY, subnets=[mock.ANY, mock.ANY], tier1_id=r['router']['id'])