NSX|P: Wait with segment realization until it is fully done

Nova boot may fail if the logical switch is not accessible.
This patch wait until the segment consolidated state is successful
before returning the LS id to nova.

Change-Id: Ib055feda79877fe4ebcc5db193f7d9d081724a94
This commit is contained in:
asarfaty 2020-10-15 08:18:06 +02:00 committed by Adit Sarfaty
parent 5ccc80608f
commit 3c0f95065e
2 changed files with 7 additions and 0 deletions

View File

@ -1629,6 +1629,10 @@ class NsxPolicyPlugin(nsx_plugin_common.NsxPluginV3Base):
try: try:
nsx_id = self.nsxpolicy.segment.get_realized_logical_switch_id( nsx_id = self.nsxpolicy.segment.get_realized_logical_switch_id(
segment_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 # Add result to caches
NET_NEUTRON_2_NSX_ID_CACHE[network_id] = nsx_id NET_NEUTRON_2_NSX_ID_CACHE[network_id] = nsx_id
NET_NSX_2_NEUTRON_ID_CACHE[nsx_id] = network_id NET_NSX_2_NEUTRON_ID_CACHE[nsx_id] = network_id

View File

@ -126,6 +126,9 @@ class NsxPPluginTestCaseMixin(
"NsxPolicySegmentApi.get_realized_logical_switch_id", "NsxPolicySegmentApi.get_realized_logical_switch_id",
return_value=LOGICAL_SWITCH_ID return_value=LOGICAL_SWITCH_ID
).start() ).start()
mock.patch("vmware_nsxlib.v3.policy.core_resources."
"NsxPolicySegmentApi.wait_until_state_successful"
).start()
mock.patch("vmware_nsxlib.v3.policy.core_resources." mock.patch("vmware_nsxlib.v3.policy.core_resources."
"NsxPolicySegmentApi.get_realized_id", "NsxPolicySegmentApi.get_realized_id",
return_value=LOGICAL_SWITCH_ID return_value=LOGICAL_SWITCH_ID