public static ClusterId getContentClusterName(ApplicationInstance application, HostName hostName) {
        Set<ClusterId> contentClusterIdsOnHost = application.serviceClusters().stream()
                .filter(VespaModelUtil::isContent)
                .filter(cluster -> clusterHasInstanceOnHost(cluster, hostName))
                .map(ServiceCluster::clusterId)
                .collect(Collectors.toSet());

        if (contentClusterIdsOnHost.size() != 1) {
            throw new IllegalArgumentException("Expected exactly one content cluster within application " +
                    application.applicationInstanceId() + " and host " + hostName + ", but found " +
                    contentClusterIdsOnHost.size() + ": " + contentClusterIdsOnHost + ", application: " +
                    application);
        }

        return contentClusterIdsOnHost.iterator().next();
    }
A content cluster consists of many content-related service clusters, like distributor and storagenode.
All of the service clusters within a content cluster have the same service cluster ID,
which is also called the content ID (specified in services.xml) and also cluster name
(terminology used in Cluster Controller). The cluster name is used when referring to
content cluster resources through the HTTP REST on the Cluster Controller.

There may be many content clusters within an application. But only one content cluster may be
present on any single host,

@return The cluster name managed by a Cluster Controller.
@throws IllegalArgumentException if there is not exactly one content cluster name.
orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/VespaModelUtil.java