@Override
    public void process(TroubleshootingContext context) {
        DiagnosisReport report = new DiagnosisReport();
        Object eventObj = context.getAttribute(FailedResourceKey.FAILED_PARENT_EVENT);
        if (eventObj == null) {
            logger.debug("No failure event found to process");
            return;
        }
        V1Event event = (V1Event) eventObj;
        if (invalidVolumeNamePattern.stream().anyMatch(pattern -> pattern.matcher(event.getMessage()).find())) {
            report.setReason(AbstractedErrorMessage.INVALID_VOLUME_NAME.getReason());
            report.setRecommendedFix(AbstractedErrorMessage.INVALID_VOLUME_NAME.getMessage());
            context.addReport(report);
            return;
        }
        if (multipleDefaultStorageClassPattern.matcher(event.getMessage()).find()) {
            report.setReason(AbstractedErrorMessage.MULTIPLE_DEFAULT_STORAGE_CLASS.getReason());
            report.setRecommendedFix(AbstractedErrorMessage.MULTIPLE_DEFAULT_STORAGE_CLASS.getMessage());
            context.addReport(report);
            return;
        }
        if (invalidResourceNamePattern.matcher(event.getMessage()).find()) {
            V1ObjectReference eventRefObj = event.getInvolvedObject();
            String resourceDetails = eventRefObj.getKind() + " " + eventRefObj.getName();
            report.setReason(AbstractedErrorMessage.INVALID_RESOURCE_NAME.formatReason(resourceDetails));
            report.setRecommendedFix(AbstractedErrorMessage.INVALID_RESOURCE_NAME.getMessage());
            context.addReport(report);
        }
    }
Action node handles case when pods are not available but pod owner is available
@author tushar
deployer/troubleshooting-integration/src/main/java/io/hyscale/troubleshooting/integration/actions/ParentFailureAction.java