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 (
5050from utilities .infra import (
5151 exit_pytest_execution ,
5252 generate_openshift_pull_secret_file ,
53- get_csv_by_name ,
5453 get_prometheus_k8s_token ,
5554 get_related_images_name_and_version ,
5655 get_subscription ,
@@ -324,24 +323,24 @@ def fired_alerts_during_upgrade(
324323
325324
326325@pytest .fixture (scope = "session" )
327- def eus_cnv_upgrade_path (eus_target_cnv_version ):
328- if eus_target_cnv_version is None :
326+ def eus_cnv_upgrade_path (
327+ cnv_target_version ,
328+ cnv_current_version ,
329+ cnv_channel ,
330+ cnv_image_url ,
331+ ):
332+ if Version (version = cnv_current_version ).minor % 2 :
329333 exit_pytest_execution (
330- message = "EUS upgrade can not be performed from non-eus version" , return_code = EUS_ERROR_CODE
334+ message = f"EUS upgrade can not be performed from non-eus version: { cnv_current_version } " ,
335+ return_code = EUS_ERROR_CODE ,
336+ filename = "eus_upgrade_failure.txt" ,
331337 )
332- # Get the shortest path to the target (EUS) version
333- upgrade_path_to_target_version = get_shortest_upgrade_path ( target_version = eus_target_cnv_version )
334- # Get the shortest path to the intermediate (non-EUS) version
335- upgrade_path_to_intermediate_version = get_shortest_upgrade_path (
336- target_version = upgrade_path_to_target_version [ "startVersion" ]
338+ return build_eus_upgrade_path_dict (
339+ current_cnv_version = cnv_current_version ,
340+ target_cnv_version = cnv_target_version ,
341+ target_channel = cnv_channel ,
342+ target_cnv_image_url = cnv_image_url ,
337343 )
338- # Return a dictionary with the versions and images for the EUS-to-EUS upgrade
339- upgrade_path = {
340- "non-eus" : get_iib_images_of_cnv_versions (versions = upgrade_path_to_intermediate_version ["versions" ]),
341- EUS : get_iib_images_of_cnv_versions (versions = upgrade_path_to_target_version ["versions" ], errata_status = "false" ),
342- }
343- LOGGER .info (f"Upgrade path for EUS-to-EUS upgrade: { upgrade_path } " )
344- return upgrade_path
345344
346345
347346@pytest .fixture (scope = "session" )
@@ -373,6 +372,7 @@ def eus_unpaused_worker_mcp(
373372 machine_config_pools_list = worker_machine_config_pools ,
374373 initial_mcp_conditions = worker_machine_config_pools_conditions ,
375374 nodes = workers ,
375+ timeout = TIMEOUT_180MIN ,
376376 )
377377
378378
@@ -490,7 +490,7 @@ def triggered_non_eus_to_target_eus_ocp_upgrade(eus_ocp_image_urls):
490490@pytest .fixture ()
491491def source_eus_to_non_eus_ocp_upgraded (
492492 admin_client ,
493- masters ,
493+ control_plane_nodes ,
494494 master_machine_config_pools ,
495495 ocp_version_eus_to_non_eus_from_image_url ,
496496 triggered_source_eus_to_non_eus_ocp_upgrade ,
@@ -500,14 +500,14 @@ def source_eus_to_non_eus_ocp_upgraded(
500500 machine_config_pools_list = master_machine_config_pools ,
501501 target_ocp_version = ocp_version_eus_to_non_eus_from_image_url ,
502502 initial_mcp_conditions = get_machine_config_pools_conditions (machine_config_pools = master_machine_config_pools ),
503- nodes = masters ,
503+ nodes = control_plane_nodes ,
504504 )
505505
506506
507507@pytest .fixture ()
508508def non_eus_to_target_eus_ocp_upgraded (
509509 admin_client ,
510- masters ,
510+ control_plane_nodes ,
511511 master_machine_config_pools ,
512512 ocp_version_non_eus_to_eus_from_image_url ,
513513 triggered_non_eus_to_target_eus_ocp_upgrade ,
@@ -517,7 +517,7 @@ def non_eus_to_target_eus_ocp_upgraded(
517517 machine_config_pools_list = master_machine_config_pools ,
518518 target_ocp_version = ocp_version_non_eus_to_eus_from_image_url ,
519519 initial_mcp_conditions = get_machine_config_pools_conditions (machine_config_pools = master_machine_config_pools ),
520- nodes = masters ,
520+ nodes = control_plane_nodes ,
521521 )
522522
523523
@@ -526,17 +526,25 @@ def source_eus_to_non_eus_cnv_upgraded(
526526 admin_client ,
527527 hco_namespace ,
528528 eus_cnv_upgrade_path ,
529+ cnv_subscription_scope_session ,
530+ cnv_registry_source ,
529531 hyperconverged_resource_scope_function ,
530- updated_cnv_subscription_source ,
531532):
532- for version , cnv_image in sorted (eus_cnv_upgrade_path ["non-eus" ].items ()):
533+ for version , build_info in sorted (
534+ eus_cnv_upgrade_path ["non-eus" ].items (),
535+ key = lambda item : Version (version = item [0 ]),
536+ ):
537+ cnv_image = build_info ["cnv_image_url" ]
533538 LOGGER .info (f"Cnv upgrade to version { version } using image: { cnv_image } " )
534539 perform_cnv_upgrade (
535540 admin_client = admin_client ,
536541 cnv_image_url = cnv_image ,
537542 cr_name = hyperconverged_resource_scope_function .name ,
538543 hco_namespace = hco_namespace ,
539- cnv_target_version = version .lstrip ("v" ),
544+ cnv_target_version = version ,
545+ subscription = cnv_subscription_scope_session ,
546+ subscription_source = cnv_registry_source ["cnv_subscription_source" ],
547+ subscription_channel = build_info ["channel" ],
540548 )
541549 LOGGER .info ("Successfully performed cnv upgrades from source EUS to non-EUS version." )
542550
@@ -546,27 +554,27 @@ def non_eus_to_target_eus_cnv_upgraded(
546554 admin_client ,
547555 hco_namespace ,
548556 eus_cnv_upgrade_path ,
557+ cnv_subscription_scope_session ,
558+ cnv_registry_source ,
549559 hyperconverged_resource_scope_function ,
550- updated_cnv_subscription_source ,
551560):
552- version , cnv_image = next (iter (eus_cnv_upgrade_path [EUS ].items ()))
553- LOGGER .info (f"Cnv upgrade to version { version } using image: { cnv_image } " )
554- perform_cnv_upgrade (
555- admin_client = admin_client ,
556- cnv_image_url = cnv_image ,
557- cr_name = hyperconverged_resource_scope_function .name ,
558- hco_namespace = hco_namespace ,
559- cnv_target_version = version .lstrip ("v" ),
560- )
561-
562-
563- @pytest .fixture ()
564- def eus_created_target_hco_csv (admin_client , hco_namespace , eus_hco_target_csv_name ):
565- return get_csv_by_name (
566- csv_name = eus_hco_target_csv_name ,
567- admin_client = admin_client ,
568- namespace = hco_namespace .name ,
569- )
561+ for version , build_info in sorted (
562+ eus_cnv_upgrade_path [EUS ].items (),
563+ key = lambda item : Version (version = item [0 ]),
564+ ):
565+ cnv_image = build_info ["cnv_image_url" ]
566+ LOGGER .info (f"Cnv upgrade to version { version } using image: { cnv_image } " )
567+ perform_cnv_upgrade (
568+ admin_client = admin_client ,
569+ cnv_image_url = cnv_image ,
570+ cr_name = hyperconverged_resource_scope_function .name ,
571+ hco_namespace = hco_namespace ,
572+ cnv_target_version = version ,
573+ subscription = cnv_subscription_scope_session ,
574+ subscription_source = cnv_registry_source ["cnv_subscription_source" ],
575+ subscription_channel = build_info ["channel" ],
576+ )
577+ LOGGER .info ("Successfully performed cnv upgrades from non-EUS to target EUS version." )
570578
571579
572580@pytest .fixture ()
0 commit comments