Merge pull request #234 from ChrisMacNaughton/bug/release-upgrade-interactive

Set some apt config to accept package defaults
This commit is contained in:
Liam Young
2020-04-17 13:23:07 +01:00
committed by GitHub
2 changed files with 61 additions and 2 deletions

View File

@@ -428,6 +428,8 @@ class TestParallelSeriesUpgrade(AioTestCase):
])
mock_post_application_upgrade_functions.assert_called_once_with(None)
@mock.patch.object(upgrade_utils, 'add_confdef_file')
@mock.patch.object(upgrade_utils, 'remove_confdef_file')
@mock.patch.object(
upgrade_utils.series_upgrade_utils, 'async_complete_series_upgrade')
@mock.patch.object(upgrade_utils, 'reboot')
@@ -438,7 +440,9 @@ class TestParallelSeriesUpgrade(AioTestCase):
mock_async_dist_upgrade,
mock_async_do_release_upgrade,
mock_reboot,
mock_async_complete_series_upgrade
mock_async_complete_series_upgrade,
mock_remove_confdef_file,
mock_add_confdef_file
):
await upgrade_utils.series_upgrade_machine(
'1',
@@ -450,7 +454,11 @@ class TestParallelSeriesUpgrade(AioTestCase):
mock_async_do_release_upgrade.assert_called_once_with('1')
mock_reboot.assert_called_once_with('1')
mock_async_complete_series_upgrade.assert_called_once_with('1')
mock_remove_confdef_file.assert_called_once_with('1')
mock_add_confdef_file.assert_called_once_with('1')
@mock.patch.object(upgrade_utils, 'add_confdef_file')
@mock.patch.object(upgrade_utils, 'remove_confdef_file')
@mock.patch.object(upgrade_utils.os_utils, 'async_set_origin')
@mock.patch.object(
upgrade_utils.series_upgrade_utils, 'async_complete_series_upgrade')
@@ -463,7 +471,9 @@ class TestParallelSeriesUpgrade(AioTestCase):
mock_async_do_release_upgrade,
mock_reboot,
mock_async_complete_series_upgrade,
mock_async_set_origin
mock_async_set_origin,
mock_remove_confdef_file,
mock_add_confdef_file
):
await upgrade_utils.series_upgrade_machine(
'1',
@@ -479,6 +489,8 @@ class TestParallelSeriesUpgrade(AioTestCase):
mock_async_complete_series_upgrade.assert_called_once_with('1')
mock_async_set_origin.assert_called_once_with(
'app', 'openstack-origin')
mock_remove_confdef_file.assert_called_once_with('1')
mock_add_confdef_file.assert_called_once_with('1')
async def test_maybe_pause_things_primary(self):
await upgrade_utils.maybe_pause_things(
@@ -523,6 +535,23 @@ class TestParallelSeriesUpgrade(AioTestCase):
pause_non_leader_primary=False)
self.async_run_action.assert_not_called()
async def test_add_confdef_file(self):
await upgrade_utils.add_confdef_file('1')
cmd = (
"""echo """
"""'DPkg::options { "--force-confdef"; "--force-confnew"; }' | """
"""sudo tee /etc/apt/apt.conf.d/local"""
)
self.async_run_on_machine.assert_called_once_with(
'1', cmd
)
async def test_remove_confdef_file(self):
await upgrade_utils.remove_confdef_file('1')
self.async_run_on_machine.assert_called_once_with(
'1', 'sudo rm /etc/apt/apt.conf.d/local'
)
async def test_async_do_release_upgrade(self):
await upgrade_utils.async_do_release_upgrade('1')
do_release_upgrade_cmd = (

View File

@@ -381,8 +381,10 @@ async def series_upgrade_machine(
logging.info(
"About to series-upgrade ({})".format(machine))
await run_pre_upgrade_functions(machine, pre_upgrade_functions)
await add_confdef_file(machine)
await async_dist_upgrade(machine)
await async_do_release_upgrade(machine)
await remove_confdef_file(machine)
await reboot(machine)
if origin:
await os_utils.async_set_origin(application, origin)
@@ -390,6 +392,34 @@ async def series_upgrade_machine(
await run_post_upgrade_functions(post_upgrade_functions)
async def add_confdef_file(machine):
"""Add the file /etc/apt/apt-conf.d/local setup to accept defaults.
:param machine: The machine to manage
:type machine: str
:returns: None
:rtype: None
"""
create_file = (
"""echo 'DPkg::options { "--force-confdef"; "--force-confnew"; }' | """
"""sudo tee /etc/apt/apt.conf.d/local"""
)
await model.async_run_on_machine(machine, create_file)
async def remove_confdef_file(machine):
"""Remove the file /etc/apt/apt-conf.d/local setup to accept defaults.
:param machine: The machine to manage
:type machine: str
:returns: None
:rtype: None
"""
await model.async_run_on_machine(
machine,
"sudo rm /etc/apt/apt.conf.d/local")
async def run_pre_upgrade_functions(machine, pre_upgrade_functions):
"""Execute list supplied functions.