private UnitResponse calculateResult() throws StateRestApiException, OtherMasterIndexException {
        Response.ClusterListResponse response = new Response.ClusterListResponse();
        for (Map.Entry<String, RemoteClusterControllerTaskScheduler> e : resolver.getFleetControllers().entrySet()) {
            Id.Cluster clusterId = new Id.Cluster(e.getKey());
            if (recursive > 0) {
                ClusterStateRequest csr = new ClusterStateRequest(clusterId, recursive - 1);
                e.getValue().schedule(csr);
                csr.waitForCompletion();
                response.addEntry("cluster", clusterId.getClusterId(), csr.getResult());
            } else {
                response.addLink("cluster", clusterId.getClusterId(), clusterId.toString());
            }
        }
        return response;
    }
The cluster list request is outside of the fleet controllers, and can thus not use a
context (thus it is null all the time). Thus it must recurse into fleetcontrollers if
needed. Adding function without context to make this obvious and hinder bad usage.
clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ClusterListRequest.java