1515)
1616from tests .install_upgrade_operators .product_upgrade .utils import (
1717 approve_cnv_upgrade_install_plan ,
18+ build_eus_upgrade_path_dict ,
1819 extract_ocp_version_from_ocp_image ,
1920 get_alerts_fired_during_upgrade ,
2021 get_all_firing_cnv_alerts ,
21- get_iib_images_of_cnv_versions ,
2222 get_nodes_labels ,
2323 get_nodes_taints ,
24- get_shortest_upgrade_path ,
2524 perform_cnv_upgrade ,
2625 run_ocp_upgrade_command ,
2726 set_workload_update_methods_hco ,
4241from utilities .constants import (
4342 HCO_CATALOG_SOURCE ,
4443 TIMEOUT_10MIN ,
44+ TIMEOUT_180MIN ,
4545 NamespacesNames ,
4646)
4747from utilities .data_collector import (
4848 get_data_collector_base_directory ,
4949)
5050from utilities .infra import (
5151 generate_openshift_pull_secret_file ,
52- get_csv_by_name ,
5352 get_prometheus_k8s_token ,
5453 get_related_images_name_and_version ,
5554 get_subscription ,
@@ -324,27 +323,26 @@ def fired_alerts_during_upgrade(
324323
325324
326325@pytest .fixture (scope = "session" )
327- def eus_cnv_upgrade_path (admin_client , eus_target_cnv_version ):
328- if eus_target_cnv_version is None :
326+ def eus_cnv_upgrade_path (
327+ admin_client ,
328+ cnv_target_version ,
329+ cnv_current_version ,
330+ cnv_channel ,
331+ cnv_image_url ,
332+ ):
333+ if Version (version = cnv_current_version ).minor % 2 :
329334 exit_pytest_execution (
330- log_message = "EUS upgrade can not be performed from non-eus version" ,
335+ admin_client = admin_client ,
336+ log_message = f"EUS upgrade can not be performed from non-eus version: { cnv_current_version } " ,
331337 return_code = EUS_ERROR_CODE ,
332338 filename = "eus_upgrade_failure.txt" ,
333- admin_client = admin_client ,
334339 )
335- # Get the shortest path to the target (EUS) version
336- upgrade_path_to_target_version = get_shortest_upgrade_path ( target_version = eus_target_cnv_version )
337- # Get the shortest path to the intermediate (non-EUS) version
338- upgrade_path_to_intermediate_version = get_shortest_upgrade_path (
339- target_version = upgrade_path_to_target_version [ "startVersion" ]
340+ return build_eus_upgrade_path_dict (
341+ current_cnv_version = cnv_current_version ,
342+ target_cnv_version = cnv_target_version ,
343+ target_channel = cnv_channel ,
344+ target_cnv_image_url = cnv_image_url ,
340345 )
341- # Return a dictionary with the versions and images for the EUS-to-EUS upgrade
342- upgrade_path = {
343- "non-eus" : get_iib_images_of_cnv_versions (versions = upgrade_path_to_intermediate_version ["versions" ]),
344- EUS : get_iib_images_of_cnv_versions (versions = upgrade_path_to_target_version ["versions" ], errata_status = "false" ),
345- }
346- LOGGER .info (f"Upgrade path for EUS-to-EUS upgrade: { upgrade_path } " )
347- return upgrade_path
348346
349347
350348@pytest .fixture (scope = "session" )
@@ -376,6 +374,7 @@ def eus_unpaused_worker_mcp(
376374 machine_config_pools_list = worker_machine_config_pools ,
377375 initial_mcp_conditions = worker_machine_config_pools_conditions ,
378376 nodes = workers ,
377+ timeout = TIMEOUT_180MIN ,
379378 )
380379
381380
@@ -493,7 +492,7 @@ def triggered_non_eus_to_target_eus_ocp_upgrade(eus_ocp_image_urls):
493492@pytest .fixture ()
494493def source_eus_to_non_eus_ocp_upgraded (
495494 admin_client ,
496- masters ,
495+ control_plane_nodes ,
497496 master_machine_config_pools ,
498497 ocp_version_eus_to_non_eus_from_image_url ,
499498 triggered_source_eus_to_non_eus_ocp_upgrade ,
@@ -503,14 +502,14 @@ def source_eus_to_non_eus_ocp_upgraded(
503502 machine_config_pools_list = master_machine_config_pools ,
504503 target_ocp_version = ocp_version_eus_to_non_eus_from_image_url ,
505504 initial_mcp_conditions = get_machine_config_pools_conditions (machine_config_pools = master_machine_config_pools ),
506- nodes = masters ,
505+ nodes = control_plane_nodes ,
507506 )
508507
509508
510509@pytest .fixture ()
511510def non_eus_to_target_eus_ocp_upgraded (
512511 admin_client ,
513- masters ,
512+ control_plane_nodes ,
514513 master_machine_config_pools ,
515514 ocp_version_non_eus_to_eus_from_image_url ,
516515 triggered_non_eus_to_target_eus_ocp_upgrade ,
@@ -520,7 +519,7 @@ def non_eus_to_target_eus_ocp_upgraded(
520519 machine_config_pools_list = master_machine_config_pools ,
521520 target_ocp_version = ocp_version_non_eus_to_eus_from_image_url ,
522521 initial_mcp_conditions = get_machine_config_pools_conditions (machine_config_pools = master_machine_config_pools ),
523- nodes = masters ,
522+ nodes = control_plane_nodes ,
524523 )
525524
526525
@@ -529,17 +528,25 @@ def source_eus_to_non_eus_cnv_upgraded(
529528 admin_client ,
530529 hco_namespace ,
531530 eus_cnv_upgrade_path ,
531+ cnv_subscription_scope_session ,
532+ cnv_registry_source ,
532533 hyperconverged_resource_scope_function ,
533- updated_cnv_subscription_source ,
534534):
535- for version , cnv_image in sorted (eus_cnv_upgrade_path ["non-eus" ].items ()):
535+ for version , build_info in sorted (
536+ eus_cnv_upgrade_path ["non-eus" ].items (),
537+ key = lambda item : Version (version = item [0 ]),
538+ ):
539+ cnv_image = build_info ["cnv_image_url" ]
536540 LOGGER .info (f"Cnv upgrade to version { version } using image: { cnv_image } " )
537541 perform_cnv_upgrade (
538542 admin_client = admin_client ,
539543 cnv_image_url = cnv_image ,
540544 cr_name = hyperconverged_resource_scope_function .name ,
541545 hco_namespace = hco_namespace ,
542- cnv_target_version = version .lstrip ("v" ),
546+ cnv_target_version = version ,
547+ subscription = cnv_subscription_scope_session ,
548+ subscription_source = cnv_registry_source ["cnv_subscription_source" ],
549+ subscription_channel = build_info ["channel" ],
543550 )
544551 LOGGER .info ("Successfully performed cnv upgrades from source EUS to non-EUS version." )
545552
@@ -549,27 +556,27 @@ def non_eus_to_target_eus_cnv_upgraded(
549556 admin_client ,
550557 hco_namespace ,
551558 eus_cnv_upgrade_path ,
559+ cnv_subscription_scope_session ,
560+ cnv_registry_source ,
552561 hyperconverged_resource_scope_function ,
553- updated_cnv_subscription_source ,
554562):
555- version , cnv_image = next (iter (eus_cnv_upgrade_path [EUS ].items ()))
556- LOGGER .info (f"Cnv upgrade to version { version } using image: { cnv_image } " )
557- perform_cnv_upgrade (
558- admin_client = admin_client ,
559- cnv_image_url = cnv_image ,
560- cr_name = hyperconverged_resource_scope_function .name ,
561- hco_namespace = hco_namespace ,
562- cnv_target_version = version .lstrip ("v" ),
563- )
564-
565-
566- @pytest .fixture ()
567- def eus_created_target_hco_csv (admin_client , hco_namespace , eus_hco_target_csv_name ):
568- return get_csv_by_name (
569- csv_name = eus_hco_target_csv_name ,
570- admin_client = admin_client ,
571- namespace = hco_namespace .name ,
572- )
563+ for version , build_info in sorted (
564+ eus_cnv_upgrade_path [EUS ].items (),
565+ key = lambda item : Version (version = item [0 ]),
566+ ):
567+ cnv_image = build_info ["cnv_image_url" ]
568+ LOGGER .info (f"Cnv upgrade to version { version } using image: { cnv_image } " )
569+ perform_cnv_upgrade (
570+ admin_client = admin_client ,
571+ cnv_image_url = cnv_image ,
572+ cr_name = hyperconverged_resource_scope_function .name ,
573+ hco_namespace = hco_namespace ,
574+ cnv_target_version = version ,
575+ subscription = cnv_subscription_scope_session ,
576+ subscription_source = cnv_registry_source ["cnv_subscription_source" ],
577+ subscription_channel = build_info ["channel" ],
578+ )
579+ LOGGER .info ("Successfully performed cnv upgrades from non-EUS to target EUS version." )
573580
574581
575582@pytest .fixture ()
0 commit comments