# HG changeset patch # User Vardhnee Ramanujam Ravi # Date 1469118721 25200 # Node ID bf62eba2612a8f0f0ffc6df891b85336dc9fe0a8 # Parent 54dc57734e1c6396c6728db169bdc547a9439f74 23506589 Need to modify args passed to dnsmasq in solaris/dhcp.py 23515020 Need to address logic error in neutron-dhcp-agent 23179502 Confusing namespaces warning message from neutron-dhcp 23488001 neutron l3 agent fails to update the NAT rules for floating IP reassignment diff -r 54dc57734e1c -r bf62eba2612a components/openstack/neutron/Makefile --- a/components/openstack/neutron/Makefile Thu Jul 14 13:57:27 2016 -0700 +++ b/components/openstack/neutron/Makefile Thu Jul 21 09:32:01 2016 -0700 @@ -47,7 +47,8 @@ 02-l3-agent-add-solaris.patch \ 03-metadata-driver-solaris.patch \ 04-requirements.patch \ - 05-alembic-migrations.patch + 05-alembic-migrations.patch \ + 06-dhcp-agent-warning-fix.patch TPNO= 25791 TPNO_VPNAAS= 27275 diff -r 54dc57734e1c -r bf62eba2612a components/openstack/neutron/files/agent/evs_l3_agent.py --- a/components/openstack/neutron/files/agent/evs_l3_agent.py Thu Jul 14 13:57:27 2016 -0700 +++ b/components/openstack/neutron/files/agent/evs_l3_agent.py Thu Jul 21 09:32:01 2016 -0700 @@ -319,7 +319,6 @@ fixed_cidr = str(fip['fixed_ip_address']) + '/32' nat_rule = 'bimap %s %s -> %s' % (interface_name, fixed_cidr, fip_cidr) - if fip_cidr not in existing_cidrs: try: ipintf.create_address(fip_cidr) @@ -335,6 +334,33 @@ LOG.warn(_("Unable to configure IP address for " "floating IP: %s: %s") % (fip['id'], err)) continue + else: + # check if existing fip has been reassigned + fip_reassigned = False + for rule in existing_nat_rules: + if not rule.startswith('bimap'): + continue + if fip_ip not in rule: + continue + if fixed_cidr not in rule: + fip_reassigned = True + break + + if fip_reassigned: + LOG.debug("Floating ip '%s' reassigned to '%s'", + fip_ip, fip['fixed_ip_address']) + # remove the old nat rule and + # add a new one for the new fixed_ip + try: + self.ipfilters_manager.remove_nat_rules([rule]) + existing_nat_rules.remove(rule) + self.ipfilters_manager.add_nat_rules([nat_rule]) + except Exception as err: + fip_statuses[fip['id']] = ( + l3_constants.FLOATINGIP_STATUS_ERROR) + LOG.warn(_("Unable to configure IP address for " + "floating IP: %s: %s") % (fip['id'], err)) + continue fip_statuses[fip['id']] = ( l3_constants.FLOATINGIP_STATUS_ACTIVE) LOG.debug("Floating ip %(id)s added, status %(status)s", diff -r 54dc57734e1c -r bf62eba2612a components/openstack/neutron/files/agent/solaris/dhcp.py --- a/components/openstack/neutron/files/agent/solaris/dhcp.py Thu Jul 14 13:57:27 2016 -0700 +++ b/components/openstack/neutron/files/agent/solaris/dhcp.py Thu Jul 21 09:32:01 2016 -0700 @@ -3,7 +3,7 @@ # Copyright 2012 OpenStack Foundation # All Rights Reserved. # -# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain @@ -56,8 +56,7 @@ '--dhcp-hostsfile=%s' % self.get_conf_file_name('host'), '--addn-hosts=%s' % self.get_conf_file_name('addn_hosts'), '--dhcp-optsfile=%s' % self.get_conf_file_name('opts'), - '--leasefile-ro', - '--dhcp-authoritative' + '--dhcp-leasefile=%s' % self.get_conf_file_name('leases') ] possible_leases = 0 @@ -266,7 +265,7 @@ else: addrconf = True - self.driver.init_l3(interface_name, ip_cidrs, addrconf=addrconf) + self.driver.init_l3(interface_name, ip_cidrs, addrconf=addrconf) return interface_name diff -r 54dc57734e1c -r bf62eba2612a components/openstack/neutron/patches/06-dhcp-agent-warning-fix.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/openstack/neutron/patches/06-dhcp-agent-warning-fix.patch Thu Jul 21 09:32:01 2016 -0700 @@ -0,0 +1,14 @@ +In-house patch to remove confusing namespace warning message in the log file. + +--- neutron-2015.1.2/neutron/agent/common/config.py.orig Tue Jul 12 13:31:47 2016 ++++ neutron-2015.1.2/neutron/agent/common/config.py Tue Jul 12 13:32:04 2016 +@@ -54,8 +54,7 @@ + USE_NAMESPACES_OPTS = [ + cfg.BoolOpt('use_namespaces', default=True, + help=_("Allow overlapping IP. This option is deprecated and " +- "will be removed in a future release."), +- deprecated_for_removal=True), ++ "will be removed in a future release.")), + ] + + IPTABLES_OPTS = [