]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Remove get_dhcp_port RPC method
authorAssaf Muller <amuller@redhat.com>
Mon, 1 Jun 2015 21:05:56 +0000 (17:05 -0400)
committerRussell Bryant <rbryant@redhat.com>
Tue, 2 Jun 2015 13:16:34 +0000 (13:16 +0000)
This method was last used in Icehouse.  I think we can safely
remove all of its code and tests. Icehouse to Liberty rolling
upgrades are in no way expected to work so I just bumped
the RPC version and removed all traces of the code.

Change-Id: Ia545c5be7da80c919ad5bae6074bc1cc3aa89fa0
Closes-Bug: #1314534

neutron/agent/dhcp/agent.py
neutron/api/rpc/handlers/dhcp_rpc.py
neutron/tests/unit/agent/dhcp/test_agent.py
neutron/tests/unit/api/rpc/handlers/test_dhcp_rpc.py

index 89fd0773ed51c385721993925c806e8ed9cbe0fc..f6513d981c92bcd5704a224cdaef80654bf96b74 100644 (file)
@@ -422,15 +422,6 @@ class DhcpPluginApi(object):
         if network:
             return dhcp.NetModel(self.use_namespaces, network)
 
-    def get_dhcp_port(self, network_id, device_id):
-        """Make a remote process call to get the dhcp port."""
-        cctxt = self.client.prepare()
-        port = cctxt.call(self.context, 'get_dhcp_port',
-                          network_id=network_id, device_id=device_id,
-                          host=self.host)
-        if port:
-            return dhcp.DictModel(port)
-
     def create_dhcp_port(self, port):
         """Make a remote process call to create the dhcp port."""
         cctxt = self.client.prepare(version='1.1')
index 4e17e39dda0f9d3f29c93e20d8b3d069496a64a3..7d97b7c52269671bc4200b51594ab209eb95e51a 100644 (file)
@@ -47,9 +47,15 @@ class DhcpRpcCallback(object):
     #     1.0 - Initial version.
     #     1.1 - Added get_active_networks_info, create_dhcp_port,
     #           and update_dhcp_port methods.
+    #     1.2 - Removed get_dhcp_port. When removing a method (Making a
+    #           backwards incompatible change) you would normally bump the
+    #           major version. However, since the method was unused in the
+    #           RPC client for many releases, it should be OK to bump the
+    #           minor release instead and claim RPC compatibility with the
+    #           last few client versions.
     target = oslo_messaging.Target(
         namespace=constants.RPC_NAMESPACE_DHCP_PLUGIN,
-        version='1.1')
+        version='1.2')
 
     def _get_active_networks(self, context, **kwargs):
         """Retrieve and return a list of the active networks."""
@@ -151,88 +157,6 @@ class DhcpRpcCallback(object):
         network['ports'] = plugin.get_ports(context, filters=filters)
         return network
 
-    def get_dhcp_port(self, context, **kwargs):
-        """Allocate a DHCP port for the host and return port information.
-
-        This method will re-use an existing port if one already exists.  When a
-        port is re-used, the fixed_ip allocation will be updated to the current
-        network state. If an expected failure occurs, a None port is returned.
-
-        """
-        host = kwargs.get('host')
-        network_id = kwargs.get('network_id')
-        device_id = kwargs.get('device_id')
-        # There could be more than one dhcp server per network, so create
-        # a device id that combines host and network ids
-
-        LOG.debug('Port %(device_id)s for %(network_id)s requested from '
-                  '%(host)s', {'device_id': device_id,
-                               'network_id': network_id,
-                               'host': host})
-        plugin = manager.NeutronManager.get_plugin()
-        retval = None
-
-        filters = dict(network_id=[network_id])
-        subnets = dict([(s['id'], s) for s in
-                        plugin.get_subnets(context, filters=filters)])
-
-        dhcp_enabled_subnet_ids = [s['id'] for s in
-                                   subnets.values() if s['enable_dhcp']]
-
-        try:
-            filters = dict(network_id=[network_id], device_id=[device_id])
-            ports = plugin.get_ports(context, filters=filters)
-            if ports:
-                # Ensure that fixed_ips cover all dhcp_enabled subnets.
-                port = ports[0]
-                for fixed_ip in port['fixed_ips']:
-                    if fixed_ip['subnet_id'] in dhcp_enabled_subnet_ids:
-                        dhcp_enabled_subnet_ids.remove(fixed_ip['subnet_id'])
-                port['fixed_ips'].extend(
-                    [dict(subnet_id=s) for s in dhcp_enabled_subnet_ids])
-
-                retval = plugin.update_port(context, port['id'],
-                                            dict(port=port))
-
-        except n_exc.NotFound as e:
-            LOG.warning(e)
-
-        if retval is None:
-            # No previous port exists, so create a new one.
-            LOG.debug('DHCP port %(device_id)s on network %(network_id)s '
-                      'does not exist on %(host)s',
-                      {'device_id': device_id,
-                       'network_id': network_id,
-                       'host': host})
-            try:
-                network = plugin.get_network(context, network_id)
-            except n_exc.NetworkNotFound:
-                LOG.warn(_LW("Network %s could not be found, it might have "
-                             "been deleted concurrently."), network_id)
-                return
-
-            port_dict = dict(
-                admin_state_up=True,
-                device_id=device_id,
-                network_id=network_id,
-                tenant_id=network['tenant_id'],
-                mac_address=attributes.ATTR_NOT_SPECIFIED,
-                name='',
-                device_owner=constants.DEVICE_OWNER_DHCP,
-                fixed_ips=[dict(subnet_id=s) for s in dhcp_enabled_subnet_ids])
-
-            retval = self._port_action(plugin, context, {'port': port_dict},
-                                       'create_port')
-            if not retval:
-                return
-
-        # Convert subnet_id to subnet dict
-        for fixed_ip in retval['fixed_ips']:
-            subnet_id = fixed_ip.pop('subnet_id')
-            fixed_ip['subnet'] = subnets[subnet_id]
-
-        return retval
-
     def release_dhcp_port(self, context, **kwargs):
         """Release the port currently being used by a DHCP agent."""
         host = kwargs.get('host')
index f49a3d73afcb7638bec1517de640e5ac7286d5ed..e41c3094fa02be9a2199f3738fe713bca16c61a4 100644 (file)
@@ -993,10 +993,6 @@ class TestDhcpPluginApiProxy(base.BaseTestCase):
         self._test_dhcp_api('get_network_info', network_id='fake_id',
                             return_value=None)
 
-    def test_get_dhcp_port(self):
-        self._test_dhcp_api('get_dhcp_port', network_id='fake_id',
-                            device_id='fake_id_2', return_value=None)
-
     def test_create_dhcp_port(self):
         self._test_dhcp_api('create_dhcp_port', port='fake_port',
                             return_value=None, version='1.1')
@@ -1203,7 +1199,6 @@ class TestDeviceManager(base.BaseTestCase):
         port = port or fake_port1
         plugin = mock.Mock()
         plugin.create_dhcp_port.return_value = port or fake_port1
-        plugin.get_dhcp_port.return_value = port or fake_port1
         self.ensure_device_is_ready.return_value = device_is_ready
         self.mock_driver.get_device_name.return_value = 'tap12345678-12'
 
@@ -1328,17 +1323,12 @@ class TestDeviceManager(base.BaseTestCase):
             True, dict(id=FAKE_NETWORK_UUID,
                        tenant_id='aaaaaaaa-aaaa-aaaa-aaaaaaaaaaaa'))
 
-        fake_port = dhcp.DictModel(
-            dict(id='12345678-1234-aaaa-1234567890ab',
-                 mac_address='aa:bb:cc:dd:ee:ff'))
-
         with mock.patch('neutron.agent.linux.interface.NullDriver') as dvr_cls:
             mock_driver = mock.MagicMock()
             mock_driver.get_device_name.return_value = 'tap12345678-12'
             dvr_cls.return_value = mock_driver
 
             plugin = mock.Mock()
-            plugin.get_dhcp_port.return_value = fake_port
 
             dh = dhcp.DeviceManager(cfg.CONF, plugin)
             dh.destroy(fake_net, 'tap12345678-12')
@@ -1365,7 +1355,6 @@ class TestDeviceManager(base.BaseTestCase):
             dvr_cls.return_value = mock_driver
 
             plugin = mock.Mock()
-            plugin.get_dhcp_port.return_value = fake_port
 
             dh = dhcp.DeviceManager(cfg.CONF, plugin)
             dh.get_interface_name(fake_net, fake_port)
index 758cfd11fde107b6fc569965b63ebf060f7768b7..c17c57e27aa0de172603b56aa744b2ca26dce282 100644 (file)
@@ -152,37 +152,6 @@ class TestDhcpRpcCallback(base.BaseTestCase):
         self.assertEqual(retval['subnets'], subnet_retval)
         self.assertEqual(retval['ports'], port_retval)
 
-    def _test_get_dhcp_port_helper(self, port_retval, other_expectations=[],
-                                   update_port=None, create_port=None):
-        subnets_retval = [dict(id='a', enable_dhcp=True),
-                          dict(id='b', enable_dhcp=False)]
-
-        self.plugin.get_subnets.return_value = subnets_retval
-        if port_retval:
-            self.plugin.get_ports.return_value = [port_retval]
-        else:
-            self.plugin.get_ports.return_value = []
-        if isinstance(update_port, n_exc.NotFound):
-            self.plugin.update_port.side_effect = update_port
-        else:
-            self.plugin.update_port.return_value = update_port
-        self.plugin.create_port.return_value = create_port
-
-        retval = self.callbacks.get_dhcp_port(mock.Mock(),
-                                              network_id='netid',
-                                              device_id='devid',
-                                              host='host')
-
-        expected = [mock.call.get_subnets(mock.ANY,
-                                          filters=dict(network_id=['netid'])),
-                    mock.call.get_ports(mock.ANY,
-                                        filters=dict(network_id=['netid'],
-                                                     device_id=['devid']))]
-
-        expected.extend(other_expectations)
-        self.plugin.assert_has_calls(expected)
-        return retval
-
     def test_update_dhcp_port_verify_port_action_port_dict(self):
         port = {'port': {'network_id': 'foo_network_id',
                          'device_owner': constants.DEVICE_OWNER_DHCP,
@@ -222,45 +191,6 @@ class TestDhcpRpcCallback(base.BaseTestCase):
         self.plugin.assert_has_calls(
             mock.call.update_port(mock.ANY, 'foo_port_id', expected_port))
 
-    def test_get_dhcp_port_existing(self):
-        port_retval = dict(id='port_id', fixed_ips=[dict(subnet_id='a')])
-        expectations = [
-            mock.call.update_port(mock.ANY, 'port_id', dict(port=port_retval))]
-
-        self._test_get_dhcp_port_helper(port_retval, expectations,
-                                        update_port=port_retval)
-        self.assertEqual(len(self.log.mock_calls), 1)
-
-    def _test_get_dhcp_port_create_new(self, update_port=None):
-        self.plugin.get_network.return_value = dict(tenant_id='tenantid')
-        create_spec = dict(tenant_id='tenantid', device_id='devid',
-                           network_id='netid', name='',
-                           admin_state_up=True,
-                           device_owner=constants.DEVICE_OWNER_DHCP,
-                           mac_address=mock.ANY)
-        create_retval = create_spec.copy()
-        create_retval['id'] = 'port_id'
-        create_retval['fixed_ips'] = [dict(subnet_id='a', enable_dhcp=True)]
-
-        create_spec['fixed_ips'] = [dict(subnet_id='a')]
-
-        expectations = [
-            mock.call.get_network(mock.ANY, 'netid'),
-            mock.call.create_port(mock.ANY, dict(port=create_spec))]
-
-        retval = self._test_get_dhcp_port_helper(None, expectations,
-                                                 update_port=update_port,
-                                                 create_port=create_retval)
-        self.assertEqual(create_retval, retval)
-        self.assertEqual(len(self.log.mock_calls), 2)
-
-    def test_get_dhcp_port_create_new(self):
-        self._test_get_dhcp_port_create_new()
-
-    def test_get_dhcp_port_create_new_with_failure_on_port_update(self):
-        self._test_get_dhcp_port_create_new(
-            update_port=n_exc.PortNotFound(port_id='foo'))
-
     def test_release_dhcp_port(self):
         port_retval = dict(id='port_id', fixed_ips=[dict(subnet_id='a')])
         self.plugin.get_ports.return_value = [port_retval]