Merge "Fix upgrades from Liberty to Mitaka"

This commit is contained in:
Zuul 2017-10-02 11:11:56 +00:00 committed by Gerrit Code Review
commit 8b276d4230
3 changed files with 27 additions and 10 deletions

1
.gitignore vendored
View File

@ -3,6 +3,7 @@ bin
tags
.tox
.testrepository
.stestr
*.pyc
*.sw[nop]
*.pyc

View File

@ -660,9 +660,14 @@ def resolve_config_files(plugin, release):
return config_files
def register_configs():
''' Register config files with their respective contexts. '''
release = os_release('neutron-common')
def register_configs(release=None):
'''
Register config files with their respective contexts.
:param release: string containing the openstack release to use
over automatic detection based on installed pkgs.
'''
release = release or os_release('neutron-common')
plugin = config('plugin')
config_files = resolve_config_files(plugin, release)
configs = templating.OSConfigRenderer(templates_dir=TEMPLATES,
@ -685,15 +690,17 @@ def stop_services():
service_stop(svc)
def restart_map():
def restart_map(release=None):
'''
Determine the correct resource map to be passed to
charmhelpers.core.restart_on_change() based on the services configured.
:param release: string containing the openstack release to use
over automatic detection based on installed pkgs.
:returns: dict: A dictionary mapping config file to lists of services
that should be restarted when file changes.
'''
release = os_release('neutron-common')
release = release or os_release('neutron-common')
plugin = config('plugin')
config_files = resolve_config_files(plugin, release)
_map = {}
@ -822,6 +829,13 @@ def do_openstack_upgrade(configs):
log('Performing OpenStack upgrade to %s.' % (new_os_rel))
configure_installation_source(new_src)
# NOTE(jamespage):
# Write-out new openstack release configuration files prior to upgrading
# to avoid having to restart services immediately after upgrade.
configs = register_configs(new_os_rel)
configs.write_all()
dpkg_opts = [
'--option', 'Dpkg::Options::=--force-confnew',
'--option', 'Dpkg::Options::=--force-confdef',
@ -834,8 +848,6 @@ def do_openstack_upgrade(configs):
reset_os_release()
apt_install(get_early_packages(), fatal=True)
apt_install(get_packages(), fatal=True)
configs.set_release(openstack_release=new_os_rel)
configs.write_all()
def configure_ovs():

View File

@ -288,9 +288,13 @@ class TestNeutronUtils(CharmTestCase):
call('br1', 'eth0.200', promisc=True)]
self.add_bridge_port.assert_has_calls(calls)
@patch.object(neutron_utils, 'register_configs')
@patch('charmhelpers.contrib.openstack.templating.OSConfigRenderer')
@patch.object(neutron_utils, 'git_install_requested')
def test_do_openstack_upgrade(self, git_requested, mock_renderer):
def test_do_openstack_upgrade(self, git_requested, mock_renderer,
mock_register_configs):
mock_configs = MagicMock()
mock_register_configs.return_value = mock_configs
git_requested.return_value = False
self.config.side_effect = self.test_config.get
self.is_relation_made.return_value = False
@ -298,8 +302,8 @@ class TestNeutronUtils(CharmTestCase):
self.test_config.set('plugin', 'ovs')
self.get_os_codename_install_source.return_value = 'havana'
self.os_release.return_value = 'havana'
configs = neutron_utils.register_configs()
neutron_utils.do_openstack_upgrade(configs)
neutron_utils.do_openstack_upgrade(mock_configs)
mock_register_configs.assert_called_with('havana')
self.assertTrue(self.log.called)
self.apt_update.assert_called_with(fatal=True)
dpkg_opts = [