diff --git a/vmware_nsx/plugins/nsx_p/plugin.py b/vmware_nsx/plugins/nsx_p/plugin.py index 87e76b9274..40d938a64a 100644 --- a/vmware_nsx/plugins/nsx_p/plugin.py +++ b/vmware_nsx/plugins/nsx_p/plugin.py @@ -1629,6 +1629,10 @@ class NsxPolicyPlugin(nsx_plugin_common.NsxPluginV3Base): try: nsx_id = self.nsxpolicy.segment.get_realized_logical_switch_id( segment_id) + # Make sure the LS is already active before letting nova use it + if utils.is_nsx_version_3_1_0(self._nsx_version): + self.nsxpolicy.segment.wait_until_state_successful( + segment_id, with_refresh=True) # Add result to caches NET_NEUTRON_2_NSX_ID_CACHE[network_id] = nsx_id NET_NSX_2_NEUTRON_ID_CACHE[nsx_id] = network_id diff --git a/vmware_nsx/tests/unit/nsx_p/test_plugin.py b/vmware_nsx/tests/unit/nsx_p/test_plugin.py index 5ae374628e..a64823e286 100644 --- a/vmware_nsx/tests/unit/nsx_p/test_plugin.py +++ b/vmware_nsx/tests/unit/nsx_p/test_plugin.py @@ -126,6 +126,9 @@ class NsxPPluginTestCaseMixin( "NsxPolicySegmentApi.get_realized_logical_switch_id", return_value=LOGICAL_SWITCH_ID ).start() + mock.patch("vmware_nsxlib.v3.policy.core_resources." + "NsxPolicySegmentApi.wait_until_state_successful" + ).start() mock.patch("vmware_nsxlib.v3.policy.core_resources." "NsxPolicySegmentApi.get_realized_id", return_value=LOGICAL_SWITCH_ID