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 @db_api.context_manager.writer
def clear_binding_levels(context, port_id, host): def clear_binding_levels(context, port_id, host):
if host: if host:
(context.session.query(models.PortBindingLevel). for l in (context.session.query(models.PortBindingLevel).
filter_by(port_id=port_id, host=host). filter_by(port_id=port_id, host=host)):
delete()) context.session.delete(l)
LOG.debug("For port %(port_id)s, host %(host)s, " LOG.debug("For port %(port_id)s, host %(host)s, "
"cleared binding levels", "cleared binding levels",
{'port_id': port_id, {'port_id': port_id,

View File

@ -56,9 +56,11 @@ class PortBinding(model_base.BASEV2):
# eagerly load port bindings # eagerly load port bindings
port = orm.relationship( port = orm.relationship(
models_v2.Port, models_v2.Port,
load_on_pending=True,
backref=orm.backref("port_binding", backref=orm.backref("port_binding",
lazy='joined', uselist=False, lazy='joined', uselist=False,
cascade='delete')) cascade='delete'))
revises_on_change = ('port', )
class PortBindingLevel(model_base.BASEV2): class PortBindingLevel(model_base.BASEV2):
@ -85,8 +87,10 @@ class PortBindingLevel(model_base.BASEV2):
# eagerly load port bindings # eagerly load port bindings
port = orm.relationship( port = orm.relationship(
models_v2.Port, models_v2.Port,
load_on_pending=True,
backref=orm.backref("binding_levels", lazy='subquery', backref=orm.backref("binding_levels", lazy='subquery',
cascade='delete')) cascade='delete'))
revises_on_change = ('port', )
class DistributedPortBinding(model_base.BASEV2): class DistributedPortBinding(model_base.BASEV2):
@ -119,6 +123,8 @@ class DistributedPortBinding(model_base.BASEV2):
# eagerly load port bindings # eagerly load port bindings
port = orm.relationship( port = orm.relationship(
models_v2.Port, models_v2.Port,
load_on_pending=True,
backref=orm.backref("distributed_port_binding", backref=orm.backref("distributed_port_binding",
lazy='subquery', lazy='subquery',
cascade='delete')) 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. # Also, Trigger notification for successful binding commit.
kwargs = { kwargs = {
'context': plugin_context, 'context': plugin_context,
'port': port, 'port': self._make_port_dict(port_db), # ensure latest state
'mac_address_updated': False, 'mac_address_updated': False,
'original_port': oport, 'original_port': oport,
} }

View File

@ -1224,6 +1224,21 @@ class TestMl2PortsV2WithRevisionPlugin(Ml2PluginV2TestCase):
self.assertGreater(updated_ports[0]['revision_number'], self.assertGreater(updated_ports[0]['revision_number'],
port['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): class TestMl2PortsV2WithL3(test_plugin.TestPortsV2, Ml2PluginV2TestCase):
"""For testing methods that require the L3 service plugin.""" """For testing methods that require the L3 service plugin."""