During the development and review process of the disk health indicator we noticed that it was hard to understand. Since we learnt a lot from the first round of development we want to go through the code one more time and restructure it.
server/src/main/java/org/elasticsearch/health/node/DiskHealthIndicatorService.java
yellowMasterNodes,
                redNonDataNonMasterNodes,
                yellowNonDataNonMasterNodes
            );
            healthIndicatorResult = createIndicator(healthStatus, symptom, details, impacts, diagnosisList);
        }
        return healthIndicatorResult;
    }
    private String getSymptom(
        Set<String> blockedIndices,
        Set<String> redDataNodes,
        Set<String> yellowDataNodes,
        Set<String> nodesReportingRed,
        Set<String> nodesReportingYellow,
        ClusterState clusterState
    ) {
        Set<String> unhealthyDataNodes = Sets.union(redDataNodes, yellowDataNodes);
        Set<String> allUnhealthyNodes = Sets.union(nodesReportingRed, nodesReportingYellow);
        String symptom;
        if (blockedIndices.isEmpty() == false) {
            symptom = String.format(
                Locale.ROOT,
                "%d %s not allowed to be updated because ",
                blockedIndices.size(),
                blockedIndices.size() == 1 ? "index is" : "indices are"
            );
            if (unhealthyDataNodes.isEmpty()) {
                
                
                symptom +=