`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
test/framework/src/main/java/org/elasticsearch/test/gateway/TestGatewayAllocator.java
Map<ShardId, ShardRouting> nodeAllocations = knownAllocations.get(failedRouting.currentNodeId());
            if (nodeAllocations != null) {
                nodeAllocations.remove(failedRouting.shardId());
                if (nodeAllocations.isEmpty()) {
                    knownAllocations.remove(failedRouting.currentNodeId());
                }
            }
        }
    }
    @Override
    public void beforeAllocation(RoutingAllocation allocation) {}
    @Override
    public void afterPrimariesBeforeReplicas(RoutingAllocation allocation) {}
    @Override
    public void allocateUnassigned(
        ShardRouting shardRouting,
        RoutingAllocation allocation,
        UnassignedAllocationHandler unassignedAllocationHandler
    ) {
        currentNodes = allocation.nodes();
        innerAllocatedUnassigned(allocation, primaryShardAllocator, replicaShardAllocator, shardRouting, unassignedAllocationHandler);
    }
    /**
     * manually add a specific shard to the allocations the gateway keeps track of
     */
    public void addKnownAllocation(ShardRouting shard) {
        knownAllocations.computeIfAbsent(shard.currentNodeId(), id -> new HashMap<>()).put(shard.shardId(), shard);
    }
}