Purge old packages on upgrade-charm
On charm upgrade the charm may switch to py3 packages. If so, ensure the old py2 packages are purged. If the purge occurs then restart services. Change-Id: I473ed1da342b2294f0f66f836b40387c1f831f5c Closes-Bug: 1803451
This commit is contained in:
parent
44924c6feb
commit
c418880820
|
@ -55,6 +55,7 @@ from charmhelpers.fetch import (
|
|||
from charmhelpers.core.host import (
|
||||
lsb_release,
|
||||
service_reload,
|
||||
service_restart,
|
||||
)
|
||||
from charmhelpers.contrib.openstack.utils import (
|
||||
configure_installation_source,
|
||||
|
@ -101,6 +102,7 @@ from hooks.horizon_utils import (
|
|||
check_custom_theme,
|
||||
pause_unit_helper,
|
||||
resume_unit_helper,
|
||||
remove_old_packages,
|
||||
)
|
||||
|
||||
hooks = Hooks()
|
||||
|
@ -133,8 +135,13 @@ def install():
|
|||
def upgrade_charm():
|
||||
execd_preinstall()
|
||||
apt_install(filter_installed_packages(determine_packages()), fatal=True)
|
||||
packages_removed = remove_old_packages()
|
||||
update_nrpe_config()
|
||||
CONFIGS.write_all()
|
||||
if packages_removed:
|
||||
log("Package purge detected, restarting services", "INFO")
|
||||
for s in services():
|
||||
service_restart(s)
|
||||
check_custom_theme()
|
||||
|
||||
|
||||
|
|
|
@ -296,6 +296,18 @@ def determine_purge_packages():
|
|||
return []
|
||||
|
||||
|
||||
def remove_old_packages():
|
||||
'''Purge any packages that need ot be removed.
|
||||
|
||||
:returns: bool Whether packages were removed.
|
||||
'''
|
||||
installed_packages = filter_missing_packages(determine_purge_packages())
|
||||
if installed_packages:
|
||||
apt_purge(installed_packages, fatal=True)
|
||||
apt_autoremove(purge=True, fatal=True)
|
||||
return bool(installed_packages)
|
||||
|
||||
|
||||
def do_openstack_upgrade(configs):
|
||||
"""
|
||||
Perform an upgrade. Takes care of upgrading packages, rewriting
|
||||
|
@ -319,10 +331,7 @@ def do_openstack_upgrade(configs):
|
|||
reset_os_release()
|
||||
apt_install(determine_packages(), fatal=True)
|
||||
|
||||
installed_pkgs = filter_missing_packages(determine_purge_packages())
|
||||
if installed_pkgs:
|
||||
apt_purge(installed_pkgs, fatal=True)
|
||||
apt_autoremove(purge=True, fatal=True)
|
||||
remove_old_packages()
|
||||
|
||||
# set CONFIGS to load templates from new release
|
||||
configs.set_release(openstack_release=new_os_rel)
|
||||
|
|
|
@ -64,6 +64,9 @@ TO_PATCH = [
|
|||
'lsb_release',
|
||||
'status_set',
|
||||
'update_dns_ha_resource_params',
|
||||
'services',
|
||||
'service_restart',
|
||||
'remove_old_packages',
|
||||
]
|
||||
|
||||
|
||||
|
@ -141,6 +144,7 @@ class TestHorizonHooks(CharmTestCase):
|
|||
_determine_packages,
|
||||
_custom_theme,
|
||||
_sleep):
|
||||
self.remove_old_packages.return_value = False
|
||||
_determine_packages.return_value = []
|
||||
side_effects = []
|
||||
[side_effects.append(None) for f in RESTART_MAP.keys()]
|
||||
|
@ -164,6 +168,27 @@ class TestHorizonHooks(CharmTestCase):
|
|||
# restart_on_change actually sleeps for 9 seconds,
|
||||
_sleep.assert_called()
|
||||
|
||||
@patch('time.sleep')
|
||||
@patch('hooks.horizon_hooks.check_custom_theme')
|
||||
@patch.object(hooks, 'determine_packages')
|
||||
@patch.object(utils, 'path_hash')
|
||||
@patch.object(utils, 'service')
|
||||
def test_upgrade_charm_hook_purge(self, _service, _hash,
|
||||
_determine_packages,
|
||||
_custom_theme,
|
||||
_sleep):
|
||||
self.remove_old_packages.return_value = True
|
||||
self.services.return_value = ['apache2']
|
||||
_determine_packages.return_value = []
|
||||
side_effects = []
|
||||
[side_effects.append(None) for f in RESTART_MAP.keys()]
|
||||
[side_effects.append('bar') for f in RESTART_MAP.keys()]
|
||||
_hash.side_effect = side_effects
|
||||
self.filter_installed_packages.return_value = ['foo']
|
||||
self._call_hook('upgrade-charm')
|
||||
self.remove_old_packages.assert_called_once_with()
|
||||
self.service_restart.assert_called_once_with('apache2')
|
||||
|
||||
def test_ha_joined_complete_config(self):
|
||||
conf = {
|
||||
'ha-bindiface': 'eth100',
|
||||
|
|
Loading…
Reference in New Issue