Ensure that origin is set only after the first machine is rebooting
This commit is contained in:
@@ -200,7 +200,6 @@ class TestParallelSeriesUpgrade(AioTestCase):
|
||||
mock_get_class.assert_called_once_with('my.thing')
|
||||
called.assert_called_once_with('1')
|
||||
|
||||
@mock.patch.object(upgrade_utils.os_utils, 'async_set_origin')
|
||||
@mock.patch.object(upgrade_utils, 'run_post_application_upgrade_functions')
|
||||
@mock.patch.object(
|
||||
upgrade_utils.series_upgrade_utils, 'async_prepare_series_upgrade')
|
||||
@@ -214,7 +213,6 @@ class TestParallelSeriesUpgrade(AioTestCase):
|
||||
mock_async_set_series,
|
||||
mock_async_prepare_series_upgrade,
|
||||
mock_post_application_upgrade_functions,
|
||||
mock_async_set_origin,
|
||||
):
|
||||
self.juju_status.return_value.applications.__getitem__.return_value = \
|
||||
FAKE_STATUS_MONGO
|
||||
@@ -240,24 +238,28 @@ class TestParallelSeriesUpgrade(AioTestCase):
|
||||
mock_series_upgrade_machine.assert_has_calls([
|
||||
mock.call(
|
||||
'1',
|
||||
origin=None,
|
||||
application='mongodb',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=[]),
|
||||
mock.call(
|
||||
'2',
|
||||
origin=None,
|
||||
application='mongodb',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=[]),
|
||||
mock.call(
|
||||
'0',
|
||||
origin=None,
|
||||
application='mongodb',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=[]),
|
||||
])
|
||||
mock_async_set_origin.assert_not_called()
|
||||
mock_post_application_upgrade_functions.assert_called_once_with([])
|
||||
|
||||
@mock.patch.object(upgrade_utils.os_utils, 'async_set_origin')
|
||||
@mock.patch.object(upgrade_utils, 'run_post_application_upgrade_functions')
|
||||
@mock.patch.object(
|
||||
upgrade_utils.series_upgrade_utils, 'async_prepare_series_upgrade')
|
||||
@@ -271,7 +273,6 @@ class TestParallelSeriesUpgrade(AioTestCase):
|
||||
mock_async_set_series,
|
||||
mock_async_prepare_series_upgrade,
|
||||
mock_post_application_upgrade_functions,
|
||||
mock_async_set_origin,
|
||||
):
|
||||
self.juju_status.return_value.applications.__getitem__.return_value = \
|
||||
FAKE_STATUS_MONGO
|
||||
@@ -294,24 +295,28 @@ class TestParallelSeriesUpgrade(AioTestCase):
|
||||
mock_series_upgrade_machine.assert_has_calls([
|
||||
mock.call(
|
||||
'1',
|
||||
origin=None,
|
||||
application='mongodb',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=[]),
|
||||
mock.call(
|
||||
'2',
|
||||
origin=None,
|
||||
application='mongodb',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=[]),
|
||||
mock.call(
|
||||
'0',
|
||||
origin=None,
|
||||
application='mongodb',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=[]),
|
||||
])
|
||||
mock_async_set_origin.assert_not_called()
|
||||
mock_post_application_upgrade_functions.assert_called_once_with([])
|
||||
|
||||
@mock.patch.object(upgrade_utils.os_utils, 'async_set_origin')
|
||||
@mock.patch.object(upgrade_utils, 'run_post_application_upgrade_functions')
|
||||
@mock.patch.object(
|
||||
upgrade_utils.series_upgrade_utils, 'async_prepare_series_upgrade')
|
||||
@@ -325,7 +330,6 @@ class TestParallelSeriesUpgrade(AioTestCase):
|
||||
mock_async_set_series,
|
||||
mock_async_prepare_series_upgrade,
|
||||
mock_post_application_upgrade_functions,
|
||||
mock_async_set_origin,
|
||||
):
|
||||
await upgrade_utils.parallel_series_upgrade(
|
||||
'app',
|
||||
@@ -335,34 +339,39 @@ class TestParallelSeriesUpgrade(AioTestCase):
|
||||
mock_async_set_series.assert_called_once_with(
|
||||
'app', to_series='xenial')
|
||||
self.juju_status.assert_called()
|
||||
# The below is using `any_order=True` because the ordering is
|
||||
# undetermined and differs between python versions
|
||||
mock_async_prepare_series_upgrade.assert_has_calls([
|
||||
mock.call('1', to_series='xenial'),
|
||||
mock.call('2', to_series='xenial'),
|
||||
mock.call('0', to_series='xenial'),
|
||||
])
|
||||
], any_order=True)
|
||||
mock_maybe_pause_things.assert_called()
|
||||
mock_series_upgrade_machine.assert_has_calls([
|
||||
mock.call(
|
||||
'1',
|
||||
origin='openstack-origin',
|
||||
application='app',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=None),
|
||||
mock.call(
|
||||
'2',
|
||||
origin='openstack-origin',
|
||||
application='app',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=None),
|
||||
mock.call(
|
||||
'0',
|
||||
origin='openstack-origin',
|
||||
application='app',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=None),
|
||||
])
|
||||
mock_async_set_origin.assert_called_once_with(
|
||||
'app', 'openstack-origin')
|
||||
mock_post_application_upgrade_functions.assert_called_once_with(None)
|
||||
|
||||
@mock.patch.object(upgrade_utils.os_utils, 'async_set_origin')
|
||||
@mock.patch.object(upgrade_utils, 'run_post_application_upgrade_functions')
|
||||
@mock.patch.object(
|
||||
upgrade_utils.series_upgrade_utils, 'async_prepare_series_upgrade')
|
||||
@@ -376,7 +385,6 @@ class TestParallelSeriesUpgrade(AioTestCase):
|
||||
mock_async_set_series,
|
||||
mock_async_prepare_series_upgrade,
|
||||
mock_post_application_upgrade_functions,
|
||||
mock_async_set_origin,
|
||||
):
|
||||
await upgrade_utils.serial_series_upgrade(
|
||||
'app',
|
||||
@@ -395,22 +403,26 @@ class TestParallelSeriesUpgrade(AioTestCase):
|
||||
mock_series_upgrade_machine.assert_has_calls([
|
||||
mock.call(
|
||||
'0',
|
||||
origin='openstack-origin',
|
||||
application='app',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=None),
|
||||
mock.call(
|
||||
'1',
|
||||
origin='openstack-origin',
|
||||
application='app',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=None),
|
||||
mock.call(
|
||||
'2',
|
||||
origin='openstack-origin',
|
||||
application='app',
|
||||
files=None,
|
||||
workaround_script=None,
|
||||
post_upgrade_functions=None),
|
||||
])
|
||||
mock_async_set_origin.assert_called_once_with(
|
||||
'app', 'openstack-origin')
|
||||
mock_post_application_upgrade_functions.assert_called_once_with(None)
|
||||
|
||||
@mock.patch.object(
|
||||
@@ -436,6 +448,35 @@ class TestParallelSeriesUpgrade(AioTestCase):
|
||||
mock_reboot.assert_called_once_with('1')
|
||||
mock_async_complete_series_upgrade.assert_called_once_with('1')
|
||||
|
||||
@mock.patch.object(upgrade_utils.os_utils, 'async_set_origin')
|
||||
@mock.patch.object(
|
||||
upgrade_utils.series_upgrade_utils, 'async_complete_series_upgrade')
|
||||
@mock.patch.object(upgrade_utils, 'reboot')
|
||||
@mock.patch.object(upgrade_utils, 'async_do_release_upgrade')
|
||||
@mock.patch.object(upgrade_utils, 'async_dist_upgrade')
|
||||
async def test_series_upgrade_machine_with_source(
|
||||
self,
|
||||
mock_async_dist_upgrade,
|
||||
mock_async_do_release_upgrade,
|
||||
mock_reboot,
|
||||
mock_async_complete_series_upgrade,
|
||||
mock_async_set_origin
|
||||
):
|
||||
await upgrade_utils.series_upgrade_machine(
|
||||
'1',
|
||||
origin='openstack-origin',
|
||||
application='app',
|
||||
post_upgrade_functions=None,
|
||||
pre_upgrade_functions=None,
|
||||
files=None,
|
||||
workaround_script=None)
|
||||
mock_async_dist_upgrade.assert_called_once_with('1')
|
||||
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_async_set_origin.assert_called_once_with(
|
||||
'app', 'openstack-origin')
|
||||
|
||||
async def test_maybe_pause_things_primary(self):
|
||||
await upgrade_utils.maybe_pause_things(
|
||||
FAKE_STATUS,
|
||||
|
||||
@@ -207,8 +207,6 @@ async def parallel_series_upgrade(
|
||||
pause_non_leader_primary)
|
||||
await series_upgrade_utils.async_set_series(
|
||||
application, to_series=to_series)
|
||||
if origin:
|
||||
await os_utils.async_set_origin(application, origin)
|
||||
app_idle = [
|
||||
wait_for_unit_idle(unit) for unit in status["units"]
|
||||
]
|
||||
@@ -223,6 +221,8 @@ async def parallel_series_upgrade(
|
||||
upgrade_group = [
|
||||
series_upgrade_machine(
|
||||
machine,
|
||||
origin=origin,
|
||||
application=application,
|
||||
files=files, workaround_script=workaround_script,
|
||||
post_upgrade_functions=post_upgrade_functions)
|
||||
for machine in machines
|
||||
@@ -308,8 +308,6 @@ async def serial_series_upgrade(
|
||||
pause_non_leader_primary)
|
||||
await series_upgrade_utils.async_set_series(
|
||||
application, to_series=to_series)
|
||||
if origin:
|
||||
await os_utils.async_set_origin(application, origin)
|
||||
if not follower_first and leader_machine not in completed_machines:
|
||||
await wait_for_unit_idle(leader)
|
||||
await prepare_series_upgrade(leader_machine, to_series=to_series)
|
||||
@@ -317,6 +315,8 @@ async def serial_series_upgrade(
|
||||
.format(application, leader_machine))
|
||||
await series_upgrade_machine(
|
||||
leader_machine,
|
||||
origin=origin,
|
||||
application=application,
|
||||
files=files, workaround_script=workaround_script,
|
||||
post_upgrade_functions=post_upgrade_functions)
|
||||
completed_machines.append(leader_machine)
|
||||
@@ -332,6 +332,8 @@ async def serial_series_upgrade(
|
||||
.format(application, machine))
|
||||
await series_upgrade_machine(
|
||||
machine,
|
||||
origin=origin,
|
||||
application=application,
|
||||
files=files, workaround_script=workaround_script,
|
||||
post_upgrade_functions=post_upgrade_functions)
|
||||
completed_machines.append(machine)
|
||||
@@ -343,6 +345,8 @@ async def serial_series_upgrade(
|
||||
.format(application, leader_machine))
|
||||
await series_upgrade_machine(
|
||||
leader_machine,
|
||||
origin=origin,
|
||||
application=application,
|
||||
files=files, workaround_script=workaround_script,
|
||||
post_upgrade_functions=post_upgrade_functions)
|
||||
completed_machines.append(leader_machine)
|
||||
@@ -352,6 +356,8 @@ async def serial_series_upgrade(
|
||||
|
||||
async def series_upgrade_machine(
|
||||
machine,
|
||||
origin=None,
|
||||
application=None,
|
||||
post_upgrade_functions=None,
|
||||
pre_upgrade_functions=None,
|
||||
files=None,
|
||||
@@ -379,6 +385,8 @@ async def series_upgrade_machine(
|
||||
await async_dist_upgrade(machine)
|
||||
await async_do_release_upgrade(machine)
|
||||
await reboot(machine)
|
||||
if origin:
|
||||
await os_utils.async_set_origin(application, origin)
|
||||
await series_upgrade_utils.async_complete_series_upgrade(machine)
|
||||
await run_post_upgrade_functions(post_upgrade_functions)
|
||||
|
||||
@@ -462,8 +470,8 @@ async def maybe_pause_things(
|
||||
logging.info("Pausing {}".format(unit))
|
||||
leader_pauses.append(
|
||||
model.async_run_action(unit, "pause", action_params={}))
|
||||
await asyncio.gather(*subordinate_pauses)
|
||||
await asyncio.gather(*leader_pauses)
|
||||
await asyncio.gather(*subordinate_pauses)
|
||||
|
||||
|
||||
def get_leader_and_non_leaders(status):
|
||||
|
||||
Reference in New Issue
Block a user