public Class<? extends Node> getNextNode(PodStatus podStatus) {
        Class<? extends Node> defaultActionClass = DefaultAction.class;
        if (podStatus == null) {
            return defaultActionClass;
        }
        switch (podStatus) {
            case IMAGEPULL_BACKOFF:
            case ERR_IMAGE_PULL:
                return ImagePullBackOffAction.class;
            case CRASHLOOP_BACKOFF:
                return MissingCMDorStartCommandsCondition.class;
            case RUNNING:
                return ArePodsReady.class;
            case OOMKILLED:
                return FixCrashingApplication.class;
            case PENDING:
                return IsClusterFull.class;
            case ERROR:
                return ArePodsReady.class;
            case COMPLETED:
                return FixCrashingApplication.class;
            case TERMINATING:
                return ParentStatusCondition.class;
            case RUN_CONTAINER_ERROR:
            case DEFAULT:
                return defaultActionClass;
            default:
                return defaultActionClass;
                
        }
    }
{@link PodStatusCondition}  checks whether a kubernetes pod
has a status in @{@link PodStatus} . The condition is
checked based on the pod status from the {@link TroubleshootingContext}.
The status of all replicas is determined and aggregated when the first
failed state of any replica is encountered. Troubleshooting is
performed on this podstatus that is derived.
deployer/troubleshooting-integration/src/main/java/io/hyscale/troubleshooting/integration/conditions/PodStatusCondition.java