Bug 1704057: port status upate: missing add of provisioning component
Added call to add_provisioning_component call in pseudo_agentdb_binding Closes-Bug: #1704057 Change-Id: Id4aee878813fd34f6a41174eede030ff27172907
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
import logging
|
||||
from string import Template
|
||||
|
||||
from neutron.callbacks import resources
|
||||
from neutron.db import provisioning_blocks
|
||||
from neutron_lib.api.definitions import portbindings
|
||||
from neutron_lib import constants as nl_const
|
||||
from neutron_lib import context
|
||||
@@ -307,14 +309,21 @@ class PseudoAgentDBBindingController(port_binding.PortBindingController):
|
||||
'segment': valid_segment, 'vif_type': vif_type,
|
||||
'vif_details': vif_details})
|
||||
|
||||
port_status = nl_const.PORT_STATUS_ACTIVE
|
||||
if odl_features.has(odl_features.OPERATIONAL_PORT_STATUS):
|
||||
port_status = nl_const.PORT_STATUS_DOWN
|
||||
port_status = self._prepare_initial_port_status(port_context)
|
||||
port_context.set_binding(valid_segment[api.ID], vif_type,
|
||||
vif_details, status=port_status)
|
||||
|
||||
return True
|
||||
|
||||
def _prepare_initial_port_status(self, port_context):
|
||||
port_status = nl_const.PORT_STATUS_ACTIVE
|
||||
if odl_features.has(odl_features.OPERATIONAL_PORT_STATUS):
|
||||
port_status = nl_const.PORT_STATUS_DOWN
|
||||
provisioning_blocks.add_provisioning_component(
|
||||
port_context._plugin_context, port_context.current['id'],
|
||||
resources.PORT, provisioning_blocks.L2_AGENT_ENTITY)
|
||||
return port_status
|
||||
|
||||
def _is_valid_segment(self, segment, conf):
|
||||
"""Verify a segment is supported by ODL."""
|
||||
network_type = segment[api.NETWORK_TYPE]
|
||||
|
||||
@@ -20,6 +20,7 @@ from string import Template
|
||||
import mock
|
||||
from oslo_serialization import jsonutils
|
||||
|
||||
from neutron.db import provisioning_blocks
|
||||
from neutron.plugins.ml2 import driver_api as api
|
||||
from neutron.plugins.ml2 import driver_context as ctx
|
||||
from neutron_lib.api.definitions import portbindings
|
||||
@@ -27,6 +28,7 @@ from neutron_lib import constants as n_const
|
||||
from neutron_lib.plugins import directory
|
||||
from neutron_lib.plugins.ml2 import api as ml2_api
|
||||
|
||||
from networking_odl.common import odl_features
|
||||
from networking_odl.ml2 import pseudo_agentdb_binding
|
||||
from networking_odl.tests import base
|
||||
from requests.exceptions import HTTPError
|
||||
@@ -228,6 +230,7 @@ class TestPseudoAgentDBBindingController(base.DietTestCase):
|
||||
"""Setup test."""
|
||||
super(TestPseudoAgentDBBindingController, self).setUp()
|
||||
self.useFixture(base.OpenDaylightRestClientFixture())
|
||||
self.useFixture(base.OpenDaylightFeaturesFixture())
|
||||
|
||||
fake_agents_db = mock.MagicMock()
|
||||
fake_agents_db.create_or_update_agent = mock.MagicMock()
|
||||
@@ -446,7 +449,29 @@ class TestPseudoAgentDBBindingController(base.DietTestCase):
|
||||
current={'id': 'PORTID',
|
||||
portbindings.VNIC_TYPE: portbindings.VNIC_NORMAL},
|
||||
segments_to_bind=fake_segments, network=network,
|
||||
host_agents=lambda agent_type: host_agents)
|
||||
host_agents=lambda agent_type: host_agents,
|
||||
_plugin_context=mock.MagicMock()
|
||||
)
|
||||
|
||||
@mock.patch.object(provisioning_blocks, 'add_provisioning_component')
|
||||
def test_prepare_inital_port_status_no_websocket(
|
||||
self, mocked_add_provisioning_component):
|
||||
odl_features.feature_set = set()
|
||||
port_ctx = self._fake_port_context(
|
||||
fake_segments=[self.test_valid_segment])
|
||||
initial_port_status = self.mgr._prepare_initial_port_status(port_ctx)
|
||||
self.assertEqual(initial_port_status, n_const.PORT_STATUS_ACTIVE)
|
||||
mocked_add_provisioning_component.assert_not_called()
|
||||
|
||||
@mock.patch.object(provisioning_blocks, 'add_provisioning_component')
|
||||
def test_prepare_inital_port_status_with_websocket(
|
||||
self, mocked_add_provisioning_component):
|
||||
odl_features.feature_set.add(odl_features.OPERATIONAL_PORT_STATUS)
|
||||
port_ctx = self._fake_port_context(
|
||||
fake_segments=[self.test_valid_segment])
|
||||
initial_port_status = self.mgr._prepare_initial_port_status(port_ctx)
|
||||
self.assertEqual(initial_port_status, n_const.PORT_STATUS_DOWN)
|
||||
mocked_add_provisioning_component.assert_called()
|
||||
|
||||
|
||||
class TestPseudoAgentDBBindingControllerBug1608659(
|
||||
|
||||
Reference in New Issue
Block a user