Merge "Add revises_on_change to Binding DB models"

This commit is contained in:
Jenkins 2017-06-22 09:36:57 +00:00 committed by Gerrit Code Review
commit 8114dec504
4 changed files with 25 additions and 4 deletions

View File

@ -110,9 +110,9 @@ def get_binding_levels(context, port_id, host):
@db_api.context_manager.writer
def clear_binding_levels(context, port_id, host):
if host:
(context.session.query(models.PortBindingLevel).
filter_by(port_id=port_id, host=host).
delete())
for l in (context.session.query(models.PortBindingLevel).
filter_by(port_id=port_id, host=host)):
context.session.delete(l)
LOG.debug("For port %(port_id)s, host %(host)s, "
"cleared binding levels",
{'port_id': port_id,

View File

@ -56,9 +56,11 @@ class PortBinding(model_base.BASEV2):
# eagerly load port bindings
port = orm.relationship(
models_v2.Port,
load_on_pending=True,
backref=orm.backref("port_binding",
lazy='joined', uselist=False,
cascade='delete'))
revises_on_change = ('port', )
class PortBindingLevel(model_base.BASEV2):
@ -85,8 +87,10 @@ class PortBindingLevel(model_base.BASEV2):
# eagerly load port bindings
port = orm.relationship(
models_v2.Port,
load_on_pending=True,
backref=orm.backref("binding_levels", lazy='subquery',
cascade='delete'))
revises_on_change = ('port', )
class DistributedPortBinding(model_base.BASEV2):
@ -119,6 +123,8 @@ class DistributedPortBinding(model_base.BASEV2):
# eagerly load port bindings
port = orm.relationship(
models_v2.Port,
load_on_pending=True,
backref=orm.backref("distributed_port_binding",
lazy='subquery',
cascade='delete'))
revises_on_change = ('port', )

View File

@ -556,7 +556,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
# Also, Trigger notification for successful binding commit.
kwargs = {
'context': plugin_context,
'port': port,
'port': self._make_port_dict(port_db), # ensure latest state
'mac_address_updated': False,
'original_port': oport,
}

View File

@ -1224,6 +1224,21 @@ class TestMl2PortsV2WithRevisionPlugin(Ml2PluginV2TestCase):
self.assertGreater(updated_ports[0]['revision_number'],
port['revision_number'])
def test_bind_port_bumps_revision(self):
updated_ports = []
created_ports = []
ureceiver = lambda *a, **k: updated_ports.append(k['port'])
creceiver = lambda *a, **k: created_ports.append(k['port'])
registry.subscribe(ureceiver, resources.PORT,
events.AFTER_UPDATE)
registry.subscribe(creceiver, resources.PORT,
events.AFTER_CREATE)
host_arg = {portbindings.HOST_ID: HOST}
with self.port(arg_list=(portbindings.HOST_ID,),
**host_arg):
self.assertGreater(updated_ports[0]['revision_number'],
created_ports[0]['revision_number'])
class TestMl2PortsV2WithL3(test_plugin.TestPortsV2, Ml2PluginV2TestCase):
"""For testing methods that require the L3 service plugin."""