The following error message emitted from org.elasticsearch.action.support.replication.ReplicationOperation is misleading:

```
Not enough active copies to meet shard count of [1] (have 1, needed 1)
```

full context:
```
org.elasticsearch.transport.RemoteTransportException: [es-es-index-58f985f8f-pgls6][10.2.12.197:9300][indices:data/write/bulk[s][p]]
Caused by: org.elasticsearch.action.UnavailableShardsException: [.security-7][0] Not enough active copies to meet shard count of [1] (have 1, needed 1). Timeout: [1m], request: [BulkShardRequest [[.security-7][0]] containing [index {[.security][myrole], source[{"enabled":true,"roles":["myrole"],"rules":{"all":[{"field":{"realm.name":"myrealm"}},{"field":{"username":"me"}}]},"metadata":{},"doc_type":"role-mapping"}]}] and a refresh]
```

The message appears to be due to the calculation for wait_for_active_shards only counts search shards, but the message is constructed by counting all shards. In stateless this message can mean that the search shard is not available. 



test/framework/src/main/java/org/elasticsearch/action/support/replication/ClusterStateCreationUtils.java
*/
    public static ClusterState stateWithActivePrimary(String index, boolean activePrimaryLocal, int numberOfReplicas) {
        int assignedReplicas = randomIntBetween(0, numberOfReplicas);
        return stateWithActivePrimary(index, activePrimaryLocal, assignedReplicas, numberOfReplicas - assignedReplicas);
    }
    /**
     * Creates cluster state with and index that has one shard and as many replicas as numberOfReplicas.
     * Primary will be STARTED in cluster state. Some (unassignedReplicas) will be UNASSIGNED and
     * some (assignedReplicas) will be one of INITIALIZING, STARTED or RELOCATING.
     *
     * @param index              name of the index
     * @param activePrimaryLocal if active primary should coincide with the local node in the cluster state
     * @param assignedReplicas   number of replicas that should have INITIALIZING, STARTED or RELOCATING state
     * @param unassignedReplicas number of replicas that should be unassigned
     */
    public static ClusterState stateWithActivePrimary(
        String index,
        boolean activePrimaryLocal,
        int assignedReplicas,
        int unassignedReplicas
    ) {
        ShardRoutingState[] replicaStates = new ShardRoutingState[assignedReplicas + unassignedReplicas];
        
        for (int i = 0; i < assignedReplicas; i++) {
            replicaStates[i] = randomFrom(ShardRoutingState.INITIALIZING, ShardRoutingState.STARTED, ShardRoutingState.RELOCATING);
        }
        for (int i = assignedReplicas; i < replicaStates.length; i++) {
            replicaStates[i] = ShardRoutingState.UNASSIGNED;
        }
        return state(index, activePrimaryLocal, randomFrom(ShardRoutingState.STARTED, ShardRoutingState.RELOCATING), replicaStates);