`TransportGetShutdownStatusAction` has a few checks that prevents the node from being shut down if there are shards without a copy that we can't move. We should also check that whether the node has unassigned shard and if it does, return the `STALLED` status and prevent the node from being shut down.

Relates #73873, #78578
x-pack/plugin/shutdown/src/internalClusterTest/java/org/elasticsearch/xpack/shutdown/NodeShutdownShardsIT.java
primaryShard.currentNodeId(),
                equalTo(nodeId)
            );
        }
    }
    private void assertIndexReplicaShardsAreNotAllocated(String indexName) {
        var state = client().admin().cluster().prepareState().clear().setRoutingTable(true).get().getState();
        var indexRoutingTable = state.routingTable().index(indexName);
        for (int p = 0; p < indexRoutingTable.size(); p++) {
            for (ShardRouting replicaShard : indexRoutingTable.shard(p).replicaShards()) {
                assertThat(replicaShard.unassigned(), equalTo(true));
                assertThat(
                    "expected all replica shards for index ["
                        + indexName
                        + "] to be unallocated but "
                        + replicaShard
                        + " is on "
                        + replicaShard.currentNodeId(),
                    replicaShard.currentNodeId(),
                    nullValue()
                );
            }
        }
    }
    private void assertIndexSetting(String index, String setting, String expectedValue) {
        var response = client().admin().indices().getSettings(new GetSettingsRequest().indices(index)).actionGet();
        assertThat(response.getSetting(index, setting), equalTo(expectedValue));
    }
}