Merge "Obsolete mac_generation_retries and deprecate the option"

This commit is contained in:
Jenkins 2016-06-21 04:38:03 +00:00 committed by Gerrit Code Review
commit b59bb0fcfa
3 changed files with 8 additions and 7 deletions

View File

@ -63,7 +63,10 @@ core_opts = [
"octet is not 00, it will also be used. The others " "octet is not 00, it will also be used. The others "
"will be randomly generated.")), "will be randomly generated.")),
cfg.IntOpt('mac_generation_retries', default=16, cfg.IntOpt('mac_generation_retries', default=16,
help=_("How many times Neutron will retry MAC generation")), deprecated_for_removal=True,
help=_("How many times Neutron will retry MAC generation. This "
"option is now obsolete and so is deprecated to be "
"removed in the Ocata release.")),
cfg.BoolOpt('allow_bulk', default=True, cfg.BoolOpt('allow_bulk', default=True,
help=_("Allow the usage of the bulk API")), help=_("Allow the usage of the bulk API")),
cfg.BoolOpt('allow_pagination', default=api.DEFAULT_ALLOW_PAGINATION, cfg.BoolOpt('allow_pagination', default=api.DEFAULT_ALLOW_PAGINATION,

View File

@ -28,6 +28,7 @@ from neutron.callbacks import events
from neutron.callbacks import registry from neutron.callbacks import registry
from neutron.callbacks import resources from neutron.callbacks import resources
from neutron.common import utils from neutron.common import utils
from neutron.db import api as db_api
from neutron.db import model_base from neutron.db import model_base
from neutron.db import models_v2 from neutron.db import models_v2
from neutron.extensions import dvr as ext_dvr from neutron.extensions import dvr as ext_dvr
@ -115,8 +116,7 @@ class DVRDbMixin(ext_dvr.DVRMacAddressPluginBase):
def _create_dvr_mac_address(self, context, host): def _create_dvr_mac_address(self, context, host):
"""Create DVR mac address for a given host.""" """Create DVR mac address for a given host."""
base_mac = cfg.CONF.dvr_base_mac.split(':') base_mac = cfg.CONF.dvr_base_mac.split(':')
max_retries = cfg.CONF.mac_generation_retries for attempt in reversed(range(db_api.MAX_RETRIES)):
for attempt in reversed(range(max_retries)):
try: try:
with context.session.begin(subtransactions=True): with context.session.begin(subtransactions=True):
mac_address = utils.get_random_mac(base_mac) mac_address = utils.get_random_mac(base_mac)
@ -135,7 +135,8 @@ class DVRDbMixin(ext_dvr.DVRMacAddressPluginBase):
LOG.debug("Generated DVR mac %(mac)s exists." LOG.debug("Generated DVR mac %(mac)s exists."
" Remaining attempts %(attempts_left)s.", " Remaining attempts %(attempts_left)s.",
{'mac': mac_address, 'attempts_left': attempt}) {'mac': mac_address, 'attempts_left': attempt})
LOG.error(_LE("MAC generation error after %s attempts"), max_retries) LOG.error(_LE("MAC generation error after %s attempts"),
db_api.MAX_RETRIES)
raise ext_dvr.MacAddressGenerationFailure(host=host) raise ext_dvr.MacAddressGenerationFailure(host=host)
def get_dvr_mac_address_list(self, context): def get_dvr_mac_address_list(self, context):

View File

@ -69,15 +69,12 @@ class DvrDbMixinTestCase(test_plugin.Ml2PluginV2TestCase):
self.assertEqual(expected, entry) self.assertEqual(expected, entry)
def test__create_dvr_mac_address_retries_exceeded_retry_logic(self): def test__create_dvr_mac_address_retries_exceeded_retry_logic(self):
new_retries = 8
cfg.CONF.set_override('mac_generation_retries', new_retries)
self._create_dvr_mac_entry('foo_host_1', 'non_unique_mac') self._create_dvr_mac_entry('foo_host_1', 'non_unique_mac')
with mock.patch.object(dvr_mac_db.utils, 'get_random_mac') as f: with mock.patch.object(dvr_mac_db.utils, 'get_random_mac') as f:
f.return_value = 'non_unique_mac' f.return_value = 'non_unique_mac'
self.assertRaises(dvr.MacAddressGenerationFailure, self.assertRaises(dvr.MacAddressGenerationFailure,
self.mixin._create_dvr_mac_address, self.mixin._create_dvr_mac_address,
self.ctx, "foo_host_2") self.ctx, "foo_host_2")
self.assertEqual(new_retries, f.call_count)
def test_mac_not_cleared_on_agent_delete_event_with_remaining_agents(self): def test_mac_not_cleared_on_agent_delete_event_with_remaining_agents(self):
plugin = manager.NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()