From 2f9da2a9608be567619d13e49a6aa70d1748640c Mon Sep 17 00:00:00 2001 From: Robert Gildein Date: Wed, 28 Feb 2024 17:00:03 +0100 Subject: [PATCH] remove message to manually upgrade data-plane (#259) Since the dev/data-plane is introducing upgrade for data-plane there is no reason to left this message here. fixes: #140 --- cou/cli.py | 16 ++++++------ cou/steps/plan.py | 20 --------------- tests/unit/steps/test_steps_plan.py | 38 ----------------------------- tests/unit/test_cli.py | 33 +++++-------------------- 4 files changed, 13 insertions(+), 94 deletions(-) diff --git a/cou/cli.py b/cou/cli.py index 25dbb48d..dfdba7ea 100644 --- a/cou/cli.py +++ b/cou/cli.py @@ -28,7 +28,7 @@ from cou.steps import UpgradePlan from cou.steps.analyze import Analysis from cou.steps.execute import apply_step -from cou.steps.plan import generate_plan, manually_upgrade_data_plane +from cou.steps.plan import generate_plan from cou.utils import print_and_debug, progress_indicator, prompt_input from cou.utils.cli import interrupt_handler from cou.utils.juju_utils import COUModel @@ -105,13 +105,13 @@ async def continue_upgrade() -> bool: return False -async def analyze_and_plan(args: CLIargs) -> tuple[Analysis, UpgradePlan]: +async def analyze_and_plan(args: CLIargs) -> UpgradePlan: """Analyze cloud and generate the upgrade plan with steps. :param args: CLI arguments :type args: CLIargs - :return: Generated analysis and upgrade plan. - :rtype: tuple[Analysis, UpgradePlan] + :return: Generated upgrade plan. + :rtype: UpgradePlan """ model = COUModel(args.model_name) progress_indicator.start(f"Connecting to '{model.name}' model...") @@ -128,7 +128,7 @@ async def analyze_and_plan(args: CLIargs) -> tuple[Analysis, UpgradePlan]: upgrade_plan = await generate_plan(analysis_result, args) progress_indicator.succeed() - return analysis_result, upgrade_plan + return upgrade_plan async def get_upgrade_plan(args: CLIargs) -> None: @@ -137,9 +137,8 @@ async def get_upgrade_plan(args: CLIargs) -> None: :param args: CLI arguments :type args: CLIargs """ - analysis_result, upgrade_plan = await analyze_and_plan(args) + upgrade_plan = await analyze_and_plan(args) print_and_debug(upgrade_plan) - manually_upgrade_data_plane(analysis_result) print( "Please note that the actual upgrade steps could be different if the cloud state " "changes because the plan will be re-calculated at upgrade time." @@ -152,7 +151,7 @@ async def run_upgrade(args: CLIargs) -> None: :param args: CLI arguments :type args: CLIargs """ - analysis_result, upgrade_plan = await analyze_and_plan(args) + upgrade_plan = await analyze_and_plan(args) print_and_debug(upgrade_plan) if args.prompt and not await continue_upgrade(): @@ -168,7 +167,6 @@ async def run_upgrade(args: CLIargs) -> None: print("Running cloud upgrade...") await apply_step(upgrade_plan, args.prompt) - manually_upgrade_data_plane(analysis_result) print("Upgrade completed.") diff --git a/cou/steps/plan.py b/cou/steps/plan.py index 7f9b9180..c0604310 100644 --- a/cou/steps/plan.py +++ b/cou/steps/plan.py @@ -511,23 +511,3 @@ def create_upgrade_group( raise return group_upgrade_plan - - -def manually_upgrade_data_plane(analysis_result: Analysis) -> None: - """Warning message to upgrade data plane charms if necessary. - - NOTE(gabrielcocenza) This function should be removed when cou starts - supporting data plan upgrades. - :param analysis_result: Analysis result. - :type analysis_result: Analysis - """ - if ( - analysis_result.min_os_version_control_plane - and analysis_result.min_os_version_data_plane - and ( - analysis_result.min_os_version_control_plane - > analysis_result.min_os_version_data_plane - ) - ): - data_plane_apps = ", ".join([app.name for app in analysis_result.apps_data_plane]) - print(f"WARNING: Please upgrade manually the data plane apps: {data_plane_apps}") diff --git a/tests/unit/steps/test_steps_plan.py b/tests/unit/steps/test_steps_plan.py index 3713a21d..af7e06f8 100644 --- a/tests/unit/steps/test_steps_plan.py +++ b/tests/unit/steps/test_steps_plan.py @@ -496,44 +496,6 @@ def test_create_upgrade_plan_failed(force): cou_plan.create_upgrade_group([app], "victoria", "test", force, lambda *_: True) -@patch("builtins.print") -def test_plan_print_warn_manually_upgrade(mock_print, model): - nova_compute = MagicMock(spec_set=OpenStackApplication)() - nova_compute.name = "nova-compute" - nova_compute.current_os_release = OpenStackRelease("victoria") - nova_compute.series = "focal" - keystone = MagicMock(spec_set=OpenStackApplication)() - keystone.name = "keystone" - keystone.current_os_release = OpenStackRelease("wallaby") - keystone.series = "focal" - - result = Analysis( - model=model, - apps_control_plane=[keystone], - apps_data_plane=[nova_compute], - ) - cou_plan.manually_upgrade_data_plane(result) - mock_print.assert_called_with( - f"WARNING: Please upgrade manually the data plane apps: {nova_compute.name}" - ) - - -@patch("builtins.print") -def test_analysis_not_print_warn_manually_upgrade(mock_print, model): - keystone = MagicMock(spec_set=OpenStackApplication)() - keystone.name = "keystone" - keystone.current_os_release = OpenStackRelease("wallaby") - keystone.series = "focal" - - result = Analysis( - model=model, - apps_control_plane=[keystone], - apps_data_plane=[], - ) - cou_plan.manually_upgrade_data_plane(result) - mock_print.assert_not_called() - - @patch("cou.steps.plan.verify_data_plane_cli_azs") @patch("cou.steps.plan.verify_data_plane_cli_machines") def test_verify_data_plane_cli_no_input( diff --git a/tests/unit/test_cli.py b/tests/unit/test_cli.py index d161be9d..372bd199 100644 --- a/tests/unit/test_cli.py +++ b/tests/unit/test_cli.py @@ -80,23 +80,18 @@ async def test_analyze_and_plan(mock_analyze, mock_generate_plan, cou_model, cli @pytest.mark.asyncio -@patch("cou.cli.manually_upgrade_data_plane") @patch("cou.cli.analyze_and_plan", new_callable=AsyncMock) @patch("cou.cli.print_and_debug") -async def test_get_upgrade_plan( - mock_print_and_debug, mock_analyze_and_plan, mock_manually_upgrade, cli_args -): +async def test_get_upgrade_plan(mock_print_and_debug, mock_analyze_and_plan, cli_args): """Test get_upgrade_plan function.""" plan = UpgradePlan(description="Upgrade cloud from 'ussuri' to 'victoria'") plan.add_step(PreUpgradeStep(description="backup mysql databases", parallel=False)) - mock_analysis_result = MagicMock() - mock_analyze_and_plan.return_value = (mock_analysis_result, plan) + mock_analyze_and_plan.return_value = plan await cli.get_upgrade_plan(cli_args) mock_analyze_and_plan.assert_awaited_once_with(cli_args) mock_print_and_debug.assert_called_once_with(plan) - mock_manually_upgrade.assert_called_once() @pytest.mark.asyncio @@ -108,7 +103,6 @@ async def test_get_upgrade_plan( ], ) @patch("cou.cli.continue_upgrade", new_callable=AsyncMock) -@patch("cou.cli.manually_upgrade_data_plane") @patch("cou.cli.analyze_and_plan", new_callable=AsyncMock) @patch("cou.cli.apply_step") @patch("builtins.print") @@ -118,7 +112,6 @@ async def test_run_upgrade_quiet_no_prompt( mock_print, mock_apply_step, mock_analyze_and_plan, - mock_manually_upgrade, mock_continue_upgrade, quiet, expected_print_count, @@ -131,8 +124,7 @@ async def test_run_upgrade_quiet_no_prompt( plan = UpgradePlan(description="Upgrade cloud from 'ussuri' to 'victoria'") plan.add_step(PreUpgradeStep(description="backup mysql databases", parallel=False)) - mock_analysis_result = MagicMock() - mock_analyze_and_plan.return_value = (mock_analysis_result, plan) + mock_analyze_and_plan.return_value = plan await cli.run_upgrade(cli_args) @@ -140,11 +132,9 @@ async def test_run_upgrade_quiet_no_prompt( mock_print_and_debug.assert_called_once_with(plan) mock_apply_step.assert_called_once_with(plan, False) mock_print.call_count == expected_print_count - mock_manually_upgrade.assert_called_once() @pytest.mark.asyncio -@patch("cou.cli.manually_upgrade_data_plane") @patch("cou.cli.analyze_and_plan", new_callable=AsyncMock) @patch("cou.cli.apply_step") @patch("cou.cli.continue_upgrade") @@ -152,7 +142,6 @@ async def test_run_upgrade_with_prompt_continue( mock_continue_upgrade, mock_apply_step, mock_analyze_and_plan, - mock_manually_upgrade, cli_args, ): cli_args.prompt = True @@ -160,8 +149,7 @@ async def test_run_upgrade_with_prompt_continue( plan = UpgradePlan(description="Upgrade cloud from 'ussuri' to 'victoria'") plan.add_step(PreUpgradeStep(description="backup mysql databases", parallel=False)) - mock_analysis_result = MagicMock() - mock_analyze_and_plan.return_value = (mock_analysis_result, plan) + mock_analyze_and_plan.return_value = plan mock_continue_upgrade.return_value = True await cli.run_upgrade(cli_args) @@ -169,11 +157,9 @@ async def test_run_upgrade_with_prompt_continue( mock_analyze_and_plan.assert_awaited_once_with(cli_args) mock_continue_upgrade.assert_awaited_once_with() mock_apply_step.assert_called_once_with(plan, True) - mock_manually_upgrade.assert_called_once() @pytest.mark.asyncio -@patch("cou.cli.manually_upgrade_data_plane") @patch("cou.cli.analyze_and_plan", new_callable=AsyncMock) @patch("cou.cli.apply_step") @patch("cou.cli.continue_upgrade") @@ -181,7 +167,6 @@ async def test_run_upgrade_with_prompt_abort( mock_continue_upgrade, mock_apply_step, mock_analyze_and_plan, - mock_manually_upgrade, cli_args, ): cli_args.auto_approve = False @@ -189,8 +174,7 @@ async def test_run_upgrade_with_prompt_abort( plan = UpgradePlan(description="Upgrade cloud from 'ussuri' to 'victoria'") plan.add_step(PreUpgradeStep(description="backup mysql databases", parallel=False)) - mock_analysis_result = MagicMock() - mock_analyze_and_plan.return_value = (mock_analysis_result, plan) + mock_analyze_and_plan.return_value = plan mock_continue_upgrade.return_value = False await cli.run_upgrade(cli_args) @@ -198,11 +182,9 @@ async def test_run_upgrade_with_prompt_abort( mock_analyze_and_plan.assert_awaited_once_with(cli_args) mock_continue_upgrade.assert_awaited_once_with() mock_apply_step.assert_not_awaited() - mock_manually_upgrade.assert_not_called() @pytest.mark.asyncio -@patch("cou.cli.manually_upgrade_data_plane") @patch("cou.cli.analyze_and_plan", new_callable=AsyncMock) @patch("cou.cli.apply_step") @patch("cou.cli.continue_upgrade", new_callable=AsyncMock) @@ -210,7 +192,6 @@ async def test_run_upgrade_with_no_prompt( mock_continue_upgrade, mock_apply_step, mock_analyze_and_plan, - mock_manually_upgrade, cli_args, ): cli_args.prompt = False @@ -218,15 +199,13 @@ async def test_run_upgrade_with_no_prompt( plan = UpgradePlan(description="Upgrade cloud from 'ussuri' to 'victoria'") plan.add_step(PreUpgradeStep(description="backup mysql databases", parallel=False)) - mock_analysis_result = MagicMock() - mock_analyze_and_plan.return_value = (mock_analysis_result, plan) + mock_analyze_and_plan.return_value = plan await cli.run_upgrade(cli_args) mock_analyze_and_plan.assert_awaited_once_with(cli_args) mock_continue_upgrade.assert_not_awaited() mock_apply_step.assert_called_once_with(plan, False) - mock_manually_upgrade.assert_called_once() @pytest.mark.asyncio