private ClusterResources clusterResources(ClusterSpec.Id id, VespaModel model) {
        if ( ! model.provisioned().capacities().containsKey(id)) return null;

        ClusterResources resources = model.provisioned().capacities().get(id).maxResources();
        if ( ! resources.nodeResources().isUnspecified()) return resources;

        var containerCluster = model.getContainerClusters().get(id.value());
        if (containerCluster != null) {
            if ( ! containerCluster.getContainers().isEmpty())
                return resources.with(containerCluster.getContainers().get(0).getHostResource().advertisedResources());
        }

        var contentCluster = model.getContentClusters().get(id.value());
        if (contentCluster != null) {
            var searchCluster = contentCluster.getSearch();
            if ( ! searchCluster.getSearchNodes().isEmpty())
                return resources.with(searchCluster.getSearchNodes().get(0).getHostResource().advertisedResources());
        }

        return resources; // only expected for admin clusters
    }
If the given requested cluster resources does not specify node resources, return them with
the current node resources of the cluster, as that is what unspecified resources actually resolved to.
This will always yield specified node resources on hosted instances and never on self-hosted instances.
config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java