### Description

Implement health indicator for shard allocation.
This indicator should have same or similar behavior to existing health endpoint.

Aspects to be considered:
* nodes scheduled for reboot should not cause cluster to go yellow (but could cause it go red)
* huge number of unallocated shards should not cause response bloat.
* consider showing allocation explain if possible

Rel: TBD
server/src/main/java/org/elasticsearch/cluster/metadata/NodesShutdownMetadata.java
);
    }
    public static NodesShutdownMetadata fromXContent(XContentParser parser) {
        return PARSER.apply(parser, null);
    }
    public static NamedDiff<Metadata.Custom> readDiffFrom(StreamInput in) throws IOException {
        return new NodeShutdownMetadataDiff(in);
    }
    public static Optional<NodesShutdownMetadata> getShutdowns(final ClusterState state) {
        assert state != null : "cluster state should never be null";
        return Optional.ofNullable(state).map(ClusterState::metadata).map(m -> m.custom(TYPE));
    }
    private final Map<String, SingleNodeShutdownMetadata> nodes;
    public NodesShutdownMetadata(Map<String, SingleNodeShutdownMetadata> nodes) {
        this.nodes = nodes;
    }
    public NodesShutdownMetadata(StreamInput in) throws IOException {
        this.nodes = in.readMap(StreamInput::readString, SingleNodeShutdownMetadata::new);
    }
    @Override
    public void writeTo(StreamOutput out) throws IOException {
        out.writeMap(nodes, StreamOutput::writeString, (outStream, v) -> v.writeTo(outStream));
    }
    /**
     * @return A map of NodeID to shutdown metadata.
     */
    public Map<String, SingleNodeShutdownMetadata> getAllNodeMetadataMap() {
        return Collections.unmodifiableMap(nodes);
    }
    /**