From 3f30727c0a8ef792b0c9e6a4739c9e0af61d9bd8 Mon Sep 17 00:00:00 2001 From: Bence Romsics Date: Tue, 11 Aug 2020 17:52:19 +0200 Subject: [PATCH] Use metadata constants from n-lib Change-Id: I8045d1670045a68c955b0bf95077137ea07fd72e Partial-Bug: #1460177 --- neutron/agent/dhcp/agent.py | 6 +++--- neutron/agent/l3/router_info.py | 10 ++++++---- neutron/agent/linux/dhcp.py | 11 ++--------- neutron/agent/metadata/driver.py | 5 ++--- neutron/agent/ovn/metadata/agent.py | 4 ++-- neutron/common/ovn/constants.py | 5 ----- .../ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py | 4 ++-- .../tests/functional/agent/l3/test_metadata_proxy.py | 6 +++--- neutron/tests/unit/agent/dhcp/test_agent.py | 12 +++++------- neutron/tests/unit/agent/linux/test_dhcp.py | 2 +- neutron/tests/unit/agent/ovn/metadata/test_agent.py | 3 +-- 11 files changed, 27 insertions(+), 41 deletions(-) diff --git a/neutron/agent/dhcp/agent.py b/neutron/agent/dhcp/agent.py index eeafdd42cf4..a3b21e041f6 100644 --- a/neutron/agent/dhcp/agent.py +++ b/neutron/agent/dhcp/agent.py @@ -747,7 +747,7 @@ class DhcpAgent(manager.Manager): ] if len(dhcp_ifaces) == 1: kwargs['bind_interface'] = dhcp_ifaces[0] - kwargs['bind_address_v6'] = dhcp.METADATA_V6_IP + kwargs['bind_address_v6'] = constants.METADATA_V6_IP else: LOG.error( 'Unexpected number of DHCP interfaces for metadata ' @@ -761,8 +761,8 @@ class DhcpAgent(manager.Manager): self.dhcp_driver_class) metadata_driver.MetadataDriver.spawn_monitored_metadata_proxy( - self._process_monitor, network.namespace, dhcp.METADATA_PORT, - self.conf, bind_address=dhcp.METADATA_DEFAULT_IP, **kwargs) + self._process_monitor, network.namespace, constants.METADATA_PORT, + self.conf, bind_address=constants.METADATA_V4_IP, **kwargs) def disable_isolated_metadata_proxy(self, network): if (self.conf.enable_metadata_network and diff --git a/neutron/agent/l3/router_info.py b/neutron/agent/l3/router_info.py index dd38acd3703..faaef683072 100644 --- a/neutron/agent/l3/router_info.py +++ b/neutron/agent/l3/router_info.py @@ -1079,11 +1079,12 @@ class RouterInfo(BaseRouterInfo): # requests that arrive before the filter metadata redirect # rule is installed will be dropped. mark_metadata_for_internal_interfaces = ( - '-d 169.254.169.254/32 ' + '-d %(metadata_cidr)s ' '-i %(interface_name)s ' '-p tcp -m tcp --dport 80 ' '-j MARK --set-xmark %(value)s/%(mask)s' % - {'interface_name': INTERNAL_DEV_PREFIX + '+', + {'metadata_cidr': lib_constants.METADATA_V4_CIDR, + 'interface_name': INTERNAL_DEV_PREFIX + '+', 'value': self.agent_conf.metadata_access_mark, 'mask': lib_constants.ROUTER_MARK_MASK}) self.iptables_manager.ipv4['mangle'].add_rule( @@ -1091,11 +1092,12 @@ class RouterInfo(BaseRouterInfo): if netutils.is_ipv6_enabled(): mark_metadata_v6_for_internal_interfaces = ( - '-d fe80::a9fe:a9fe/128 ' + '-d %(metadata_v6_ip)s/128 ' '-i %(interface_name)s ' '-p tcp -m tcp --dport 80 ' '-j MARK --set-xmark %(value)s/%(mask)s' % - {'interface_name': INTERNAL_DEV_PREFIX + '+', + {'metadata_v6_ip': lib_constants.METADATA_V6_IP, + 'interface_name': INTERNAL_DEV_PREFIX + '+', 'value': self.agent_conf.metadata_access_mark, 'mask': lib_constants.ROUTER_MARK_MASK}) self.iptables_manager.ipv6['mangle'].add_rule( diff --git a/neutron/agent/linux/dhcp.py b/neutron/agent/linux/dhcp.py index b4028f82b09..c55dc96e977 100644 --- a/neutron/agent/linux/dhcp.py +++ b/neutron/agent/linux/dhcp.py @@ -48,13 +48,6 @@ from neutron.privileged.agent.linux import dhcp as priv_dhcp LOG = logging.getLogger(__name__) DNS_PORT = 53 -# TODO(bence romsics): use the rehomed constants when they get released: -# https://review.opendev.org/738205 -METADATA_DEFAULT_IP = '169.254.169.254' -METADATA_SUBNET_CIDR = '169.254.0.0/16' -METADATA_V6_IP = 'fe80::a9fe:a9fe' -METADATA_V6_CIDR = 'fe80::a9fe:a9fe/64' -METADATA_PORT = 80 WIN2k3_STATIC_DNS = 249 NS_PREFIX = 'qdhcp-' DNSMASQ_SERVICE_NAME = 'dnsmasq' @@ -1316,7 +1309,7 @@ class Dnsmasq(DhcpLocalProcess): @staticmethod def has_metadata_subnet(subnets): """Check if the subnets has a metadata subnet.""" - meta_cidr = netaddr.IPNetwork(METADATA_SUBNET_CIDR) + meta_cidr = netaddr.IPNetwork(constants.METADATA_V4_SUBNET) if any(netaddr.IPNetwork(s.cidr) in meta_cidr for s in subnets): return True @@ -1721,7 +1714,7 @@ class DeviceManager(object): if self.conf.force_metadata or self.conf.enable_isolated_metadata: ip_cidrs.append(constants.METADATA_CIDR) if netutils.is_ipv6_enabled(): - ip_cidrs.append(METADATA_V6_CIDR) + ip_cidrs.append(constants.METADATA_V6_CIDR) self.driver.init_l3(interface_name, ip_cidrs, namespace=network.namespace) diff --git a/neutron/agent/metadata/driver.py b/neutron/agent/metadata/driver.py index c453dc4a2bb..191d920ad86 100644 --- a/neutron/agent/metadata/driver.py +++ b/neutron/agent/metadata/driver.py @@ -30,7 +30,6 @@ from oslo_utils import netutils from neutron._i18n import _ from neutron.agent.l3 import ha_router from neutron.agent.l3 import namespaces -from neutron.agent.linux import dhcp from neutron.agent.linux import external_process from neutron.agent.linux import ip_lib @@ -208,7 +207,7 @@ class MetadataDriver(object): @classmethod def metadata_nat_rules( - cls, port, metadata_address=(dhcp.METADATA_DEFAULT_IP + '/32')): + cls, port, metadata_address=constants.METADATA_V4_CIDR): return [('PREROUTING', '-d %(metadata_address)s ' '-i %(interface_name)s ' '-p tcp -m tcp --dport 80 -j REDIRECT ' @@ -314,7 +313,7 @@ def after_router_added(resource, event, l3_agent, **kwargs): if ipv6_enabled: for c, r in proxy.metadata_nat_rules( proxy.metadata_port, - metadata_address=(dhcp.METADATA_V6_IP + '/128')): + metadata_address=(constants.METADATA_V6_IP + '/128')): router.iptables_manager.ipv6['nat'].add_rule(c, r) router.iptables_manager.apply() diff --git a/neutron/agent/ovn/metadata/agent.py b/neutron/agent/ovn/metadata/agent.py index b703e112bae..268fe774ad9 100644 --- a/neutron/agent/ovn/metadata/agent.py +++ b/neutron/agent/ovn/metadata/agent.py @@ -470,8 +470,8 @@ class MetadataAgent(object): # Spawn metadata proxy if it's not already running. metadata_driver.MetadataDriver.spawn_monitored_metadata_proxy( - self._process_monitor, namespace, ovn_const.METADATA_PORT, - self.conf, bind_address=ovn_const.METADATA_DEFAULT_IP, + self._process_monitor, namespace, n_const.METADATA_PORT, + self.conf, bind_address=n_const.METADATA_V4_IP, network_id=datapath) self.update_chassis_metadata_networks(datapath) diff --git a/neutron/common/ovn/constants.py b/neutron/common/ovn/constants.py index cc557542b2c..5046878cbf8 100644 --- a/neutron/common/ovn/constants.py +++ b/neutron/common/ovn/constants.py @@ -278,11 +278,6 @@ LSP_OPTIONS_VIRTUAL_IP_KEY = 'virtual-ip' HA_CHASSIS_GROUP_DEFAULT_NAME = 'default_ha_chassis_group' HA_CHASSIS_GROUP_HIGHEST_PRIORITY = 32767 -# TODO(lucasagomes): Move this to neutron-lib later. -# Metadata constants -METADATA_DEFAULT_IP = '169.254.169.254' -METADATA_PORT = 80 - # OVN igmp options MCAST_SNOOP = 'mcast_snoop' MCAST_FLOOD_UNREGISTERED = 'mcast_flood_unregistered' diff --git a/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py b/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py index b7c945f85e4..9f6a240e425 100644 --- a/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py +++ b/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py @@ -1816,8 +1816,8 @@ class OVNClient(object): routes = [] if metadata_port_ip: - routes.append('%s/32,%s' % ( - ovn_const.METADATA_DEFAULT_IP, metadata_port_ip)) + routes.append('%s,%s' % ( + const.METADATA_V4_CIDR, metadata_port_ip)) # Add subnet host_routes to 'classless_static_route' dhcp option routes.extend(['%s,%s' % (route['destination'], route['nexthop']) diff --git a/neutron/tests/functional/agent/l3/test_metadata_proxy.py b/neutron/tests/functional/agent/l3/test_metadata_proxy.py index 98b06a93617..a8737282035 100644 --- a/neutron/tests/functional/agent/l3/test_metadata_proxy.py +++ b/neutron/tests/functional/agent/l3/test_metadata_proxy.py @@ -15,11 +15,11 @@ import os.path import time +from neutron_lib import constants import webob import webob.dec import webob.exc -from neutron.agent.linux import dhcp from neutron.agent.linux import utils from neutron.tests.common import machine_fixtures from neutron.tests.common import net_helpers @@ -59,8 +59,8 @@ class MetadataL3AgentTestCase(framework.L3AgentTestFramework): workers=0, backlog=4096, mode=self.SOCKET_MODE) def _query_metadata_proxy(self, machine): - url = 'http://%(host)s:%(port)s' % {'host': dhcp.METADATA_DEFAULT_IP, - 'port': dhcp.METADATA_PORT} + url = 'http://%(host)s:%(port)s' % {'host': constants.METADATA_V4_IP, + 'port': constants.METADATA_PORT} cmd = 'curl', '--max-time', METADATA_REQUEST_TIMEOUT, '-D-', url i = 0 CONNECTION_REFUSED_TIMEOUT = METADATA_REQUEST_TIMEOUT // 2 diff --git a/neutron/tests/unit/agent/dhcp/test_agent.py b/neutron/tests/unit/agent/dhcp/test_agent.py index 99ca3d01cac..ccd507a9ea8 100644 --- a/neutron/tests/unit/agent/dhcp/test_agent.py +++ b/neutron/tests/unit/agent/dhcp/test_agent.py @@ -217,8 +217,6 @@ fake_down_network = dhcp.NetModel(id='12345678-dddd-dddd-1234567890ab', class TestDhcpAgent(base.BaseTestCase): - METADATA_DEFAULT_IP = dhcp.METADATA_DEFAULT_IP - def setUp(self): super(TestDhcpAgent, self).setUp() entry.register_options(cfg.CONF) @@ -580,7 +578,7 @@ class TestDhcpAgent(base.BaseTestCase): dhcp.configure_dhcp_for_network(fake_network) md_cls.spawn_monitored_metadata_proxy.assert_called_once_with( mock.ANY, mock.ANY, mock.ANY, mock.ANY, - bind_address=self.METADATA_DEFAULT_IP, + bind_address=const.METADATA_V4_IP, network_id=fake_network.id) md_cls.reset_mock() dhcp.disable_dhcp_helper(fake_network.id) @@ -599,7 +597,7 @@ class TestDhcpAgent(base.BaseTestCase): mock.ANY, fake_network.id, mock.ANY, fake_network.namespace) md_cls.spawn_monitored_metadata_proxy.assert_called_once_with( mock.ANY, mock.ANY, mock.ANY, mock.ANY, - bind_address=self.METADATA_DEFAULT_IP, + bind_address=const.METADATA_V4_IP, network_id=fake_network.id) def test_report_state_revival_logic(self): @@ -1001,10 +999,10 @@ class TestDhcpAgentEventHandler(base.BaseTestCase): '.spawn_monitored_metadata_proxy') with mock.patch(method_path) as spawn: self.dhcp.enable_isolated_metadata_proxy(network) - metadata_ip = dhcp.METADATA_DEFAULT_IP + metadata_ip = const.METADATA_V4_IP spawn.assert_called_once_with(self.dhcp._process_monitor, network.namespace, - dhcp.METADATA_PORT, + const.METADATA_PORT, cfg.CONF, bind_address=metadata_ip, router_id='forzanapoli') @@ -1031,7 +1029,7 @@ class TestDhcpAgentEventHandler(base.BaseTestCase): self.dhcp.enable_isolated_metadata_proxy(network) spawn.assert_called_once_with(self.dhcp._process_monitor, network.namespace, - dhcp.METADATA_PORT, + const.METADATA_PORT, cfg.CONF, bind_address='169.254.169.254', network_id=network.id, diff --git a/neutron/tests/unit/agent/linux/test_dhcp.py b/neutron/tests/unit/agent/linux/test_dhcp.py index 1295ec1c293..6104e484534 100644 --- a/neutron/tests/unit/agent/linux/test_dhcp.py +++ b/neutron/tests/unit/agent/linux/test_dhcp.py @@ -3153,7 +3153,7 @@ class TestDeviceManager(TestConfBase): if enable_isolated_metadata or force_metadata: expect_ips.extend([ constants.METADATA_CIDR, - dhcp.METADATA_V6_CIDR]) + constants.METADATA_V6_CIDR]) mgr.driver.init_l3.assert_called_with('ns-XXX', expect_ips, namespace='qdhcp-ns') diff --git a/neutron/tests/unit/agent/ovn/metadata/test_agent.py b/neutron/tests/unit/agent/ovn/metadata/test_agent.py index 1c7621bcff3..26500a4e478 100644 --- a/neutron/tests/unit/agent/ovn/metadata/test_agent.py +++ b/neutron/tests/unit/agent/ovn/metadata/test_agent.py @@ -26,7 +26,6 @@ from neutron.agent.linux.ip_lib import IpNetnsCommand as ip_netns from neutron.agent.linux.ip_lib import IPWrapper as ip_wrap from neutron.agent.ovn.metadata import agent from neutron.agent.ovn.metadata import driver -from neutron.common.ovn import constants as ovn_const from neutron.conf.agent.metadata import config as meta_conf from neutron.conf.agent.ovn.metadata import config as ovn_meta_conf from neutron.tests import base @@ -266,7 +265,7 @@ class TestMetadataAgent(base.BaseTestCase): # Check that metadata proxy has been spawned spawn_mdp.assert_called_once_with( mock.ANY, 'namespace', 80, mock.ANY, - bind_address=ovn_const.METADATA_DEFAULT_IP, network_id='1') + bind_address=n_const.METADATA_V4_IP, network_id='1') # Check that the chassis has been updated with the datapath. update_chassis.assert_called_once_with('1')