Merge "Use revision_number instead of DFVersionObjects(port)"
This commit is contained in:
commit
2a30b85216
|
@ -32,7 +32,6 @@ from dragonflow.common import exceptions as df_exceptions
|
|||
from dragonflow.common import utils as df_utils
|
||||
from dragonflow.db import api_nb
|
||||
from dragonflow.db.neutron import lockedobjects_db as lock_db
|
||||
from dragonflow.db.neutron import versionobjects_db as version_db
|
||||
from dragonflow.neutron.common import constants as df_const
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
|
@ -458,11 +457,6 @@ class DFMechDriver(driver_api.MechanismDriver):
|
|||
|
||||
LOG.info(_LI("DFMechDriver: delete subnet %s"), subnet_id)
|
||||
|
||||
def create_port_precommit(self, context):
|
||||
port_version = version_db._create_db_version_row(
|
||||
context._plugin_context.session, context.current['id'])
|
||||
context.current['db_version'] = port_version
|
||||
|
||||
@lock_db.wrap_db_lock(lock_db.RESOURCE_ML2_CORE)
|
||||
def create_port_postcommit(self, context):
|
||||
port = context.current
|
||||
|
@ -495,7 +489,7 @@ class DFMechDriver(driver_api.MechanismDriver):
|
|||
name=port.get('name', df_const.DF_PORT_DEFAULT_NAME),
|
||||
enabled=port.get('admin_state_up', False),
|
||||
chassis=chassis, tunnel_key=tunnel_key,
|
||||
version=port['db_version'],
|
||||
version=port['revision_number'],
|
||||
device_owner=port.get('device_owner', None),
|
||||
device_id=port.get('device_id', None),
|
||||
security_groups=port.get('security_groups', []),
|
||||
|
@ -528,11 +522,6 @@ class DFMechDriver(driver_api.MechanismDriver):
|
|||
else:
|
||||
return False
|
||||
|
||||
def update_port_precommit(self, context):
|
||||
port_version = version_db._update_db_version_row(
|
||||
context._plugin_context.session, context.current['id'])
|
||||
context.current['db_version'] = port_version
|
||||
|
||||
@lock_db.wrap_db_lock(lock_db.RESOURCE_ML2_CORE)
|
||||
def update_port_postcommit(self, context):
|
||||
updated_port = context.current
|
||||
|
@ -595,15 +584,11 @@ class DFMechDriver(driver_api.MechanismDriver):
|
|||
[]),
|
||||
binding_profile=updated_port.get(portbindings.PROFILE, None),
|
||||
binding_vnic_type=updated_port.get(portbindings.VNIC_TYPE, None),
|
||||
version=updated_port['db_version'], remote_vtep=remote_vtep)
|
||||
version=updated_port['revision_number'], remote_vtep=remote_vtep)
|
||||
|
||||
LOG.info(_LI("DFMechDriver: update port %s"), updated_port['id'])
|
||||
return updated_port
|
||||
|
||||
def delete_port_precommit(self, context):
|
||||
version_db._delete_db_version_row(context._plugin_context.session,
|
||||
context.current['id'])
|
||||
|
||||
@lock_db.wrap_db_lock(lock_db.RESOURCE_ML2_CORE)
|
||||
def delete_port_postcommit(self, context):
|
||||
port = context.current
|
||||
|
|
|
@ -59,13 +59,12 @@ class TestObjectVersion(test_base.DFTestBase):
|
|||
self.neutron, self.nb_api, network_id))
|
||||
port_id = port.create()
|
||||
self.assertTrue(port.exists())
|
||||
version = self.nb_api.get_logical_port(port_id).get_version()
|
||||
self.assertEqual(version, 0)
|
||||
prev_version = self.nb_api.get_logical_port(port_id).get_version()
|
||||
|
||||
port.update()
|
||||
self.assertTrue(port.exists())
|
||||
version = self.nb_api.get_logical_port(port_id).get_version()
|
||||
self.assertEqual(version, 1)
|
||||
self.assertGreater(version, prev_version)
|
||||
|
||||
port.close()
|
||||
self.assertFalse(port.exists())
|
||||
|
|
|
@ -32,7 +32,6 @@ mock.patch('dragonflow.db.neutron.lockedobjects_db.wrap_db_lock',
|
|||
stub_wrap_db_lock).start()
|
||||
from dragonflow.db.neutron import versionobjects_db as version_db
|
||||
from dragonflow.neutron.ml2 import mech_driver
|
||||
from neutron.db import securitygroups_db
|
||||
from neutron.tests import base
|
||||
from neutron.tests.unit.plugins.ml2 import test_plugin
|
||||
|
||||
|
@ -77,8 +76,6 @@ class TestDFMechDriver(base.BaseTestCase):
|
|||
tunnel_key = '9999'
|
||||
binding_profile = {"port_key": "remote_port", "host_ip": "20.0.0.2"}
|
||||
|
||||
securitygroups_db.SecurityGroupDbMixin._get_security_groups_on_port = \
|
||||
mock.Mock(return_value=None)
|
||||
self.driver._get_allowed_mac_addresses_from_port = mock.Mock(
|
||||
return_value=allowed_macs)
|
||||
self.driver.nb_api.allocate_tunnel_key = mock.Mock(
|
||||
|
@ -105,9 +102,6 @@ class TestDFMechDriver(base.BaseTestCase):
|
|||
tunnel_key = '9999'
|
||||
binding_profile = {"port_key": "remote_port", "host_ip": "20.0.0.2"}
|
||||
|
||||
securitygroups_db.SecurityGroupDbMixin._get_security_groups_on_port = \
|
||||
mock.Mock(return_value=None)
|
||||
|
||||
self.driver.nb_api.allocate_tunnel_key = mock.Mock(
|
||||
return_value=tunnel_key)
|
||||
port_context = self._get_port_context(tenant_id, network_id, port_id,
|
||||
|
@ -178,7 +172,7 @@ class TestDFMechDriver(base.BaseTestCase):
|
|||
'network_id': net_id,
|
||||
'binding:profile': binding_profile,
|
||||
'binding:vnic_type': 'ovs',
|
||||
'db_version': self.dbversion}
|
||||
'revision_number': self.dbversion}
|
||||
return FakeContext(port)
|
||||
|
||||
def _get_network_context(self, tenant_id, net_id, network_type, seg_id):
|
||||
|
@ -341,6 +335,52 @@ class TestDFMechDriverRevision(test_plugin.Ml2PluginV2TestCase):
|
|||
subnet_id, network['id'], subnet['tenant_id'],
|
||||
nw_version=new_network['revision_number'])
|
||||
|
||||
def test_create_update_port_revision(self):
|
||||
with self.port(name='port', device_owner='fake_owner',
|
||||
device_id='fake_id') as p:
|
||||
port = p['port']
|
||||
self.assertGreater(port['revision_number'], 0)
|
||||
self.nb_api.create_lport.assert_called_with(
|
||||
id=port['id'],
|
||||
lswitch_id=port['network_id'],
|
||||
topic=port['tenant_id'],
|
||||
macs=[port['mac_address']], ips=mock.ANY,
|
||||
subnets=mock.ANY, name=port['name'],
|
||||
enabled=port['admin_state_up'],
|
||||
chassis=mock.ANY, tunnel_key=mock.ANY,
|
||||
version=port['revision_number'],
|
||||
device_owner=port['device_owner'],
|
||||
device_id=port['device_id'],
|
||||
security_groups=mock.ANY,
|
||||
port_security_enabled=mock.ANY,
|
||||
remote_vtep=False,
|
||||
allowed_address_pairs=mock.ANY,
|
||||
binding_profile=mock.ANY,
|
||||
binding_vnic_type=mock.ANY)
|
||||
|
||||
data = {'port': {'name': 'updated'}}
|
||||
req = self.new_update_request('ports', data, port['id'])
|
||||
req.get_response(self.api)
|
||||
prev_version = port['revision_number']
|
||||
port = self.driver.get_port(self.context, port['id'])
|
||||
self.assertGreater(port['revision_number'], prev_version)
|
||||
self.nb_api.update_lport.assert_called_with(
|
||||
id=port['id'],
|
||||
topic=port['tenant_id'],
|
||||
macs=[port['mac_address']], ips=mock.ANY,
|
||||
subnets=mock.ANY, name=port['name'],
|
||||
enabled=port['admin_state_up'],
|
||||
chassis=mock.ANY,
|
||||
version=port['revision_number'],
|
||||
device_owner=port['device_owner'],
|
||||
device_id=port['device_id'],
|
||||
remote_vtep=False,
|
||||
security_groups=mock.ANY,
|
||||
port_security_enabled=mock.ANY,
|
||||
allowed_address_pairs=mock.ANY,
|
||||
binding_profile=mock.ANY,
|
||||
binding_vnic_type=mock.ANY)
|
||||
|
||||
|
||||
class FakeNetworkContext(object):
|
||||
"""To generate network context for testing purposes only."""
|
||||
|
|
Loading…
Reference in New Issue