def METHOD_NAME(self, nodes):
    """
    Test rolling termination and recovery of the OCS worker node for both MS and non-MS clusters.
    1. Generate the OCS worker nodes for rolling terminate
    2. Go over the OCS worker node in a loop.
    3. Get the machine set of every worker node and the ready replica count before terminating it.
    4. Terminate the worker node.
    5. If we use an MS cluster, we will wait for the new worker node associated with the old node machine set
    to come up automatically.
    If we use a non-MS cluster, we will perform the following steps:
        5.1. Delete the machine associated with the terminated worker node.
        5.2. Wait for the new worker node associated with the old node machine set to come up automatically.
        5.3. Label the new worker node with the OCS label.
    6. Wait for the OCS pods to be running and Ceph health to be OK before the next iteration.
    Args:
        nodes (NodesBase): Instance of the relevant platform nodes class (e.g. AWSNodes, VMWareNodes)
    """
    # Get OCS worker node objects
    if is_ms_provider_cluster():
        ocs_node_objs = generate_nodes_for_provider_worker_node_tests()
    else:
        # If it's not a provider cluster, test rolling terminate two ocs worker nodes will suffice
        ocs_node_objs = random.sample(get_ocs_nodes(), k=2)
    log.info(f"Generated ocs worker nodes: {[n.name for n in ocs_node_objs]}")
    machine_obj = OCP(
        kind="machine", namespace=constants.OPENSHIFT_MACHINE_API_NAMESPACE
    )
    log.info("Start rolling terminate and recovery of the OCS worker nodes")
    for node_obj in ocs_node_objs:
        old_wnodes = get_worker_nodes()
        log.info(f"Current worker nodes: {old_wnodes}")
        machine_name = get_machine_from_node_name(node_obj.name)
        log.info(f"Machine name: {machine_name}")
        machineset = get_machineset_from_machine_name(machine_name)
        log.info(f"machineset name: {machineset}")
        nodes.terminate_nodes(nodes=[node_obj], wait=True)
        log.info(f"Successfully terminated the node: {node_obj.name}")
        if is_managed_service_cluster():
            new_ocs_node = wait_for_new_worker_node_ipi(machineset, old_wnodes)
        else:
            log.info(
                "Wait for the machine associated with the terminated node to reach the status Failed"
            )
            machine_obj.wait_for_resource(
                condition=constants.STATUS_FAILED,
                resource_name=machine_name,
                column="PHASE",
                timeout=240,
                sleep=10,
            )
            delete_machine(machine_name)
            timeout = 1500 if is_vsphere_ipi_cluster() else 900
            new_ocs_node = wait_for_new_worker_node_ipi(
                machineset, old_wnodes, timeout
            )
            label_nodes([new_ocs_node])
        log.info(f"The new ocs node is: {new_ocs_node.name}")
        log.info("Waiting for all the pods to be running")
        assert check_pods_after_node_replacement(), "Not all the pods are running"
        # If the cluster is an MS provider cluster, and we also have MS consumer clusters in the run
        if is_ms_provider_cluster() and config.is_consumer_exist():
            assert consumers_verification_steps_after_provider_node_replacement()
        if is_managed_service_cluster():
            self.sanity_helpers.health_check_ms(cluster_check=False, tries=40)
        else:
            self.sanity_helpers.health_check(cluster_check=False, tries=40)