in ec/ecresource/deploymentresource/elasticsearch/v2/elasticsearch_payload.go [272:304]
func dedicatedTopoogies(topologies []*models.ElasticsearchClusterTopologyElement) (dataTier *models.ElasticsearchClusterTopologyElement, hasMasterTier, hasIngestTier bool) {
for _, topology := range topologies {
var hasSomeDataRole bool
var hasMasterRole bool
var hasIngestRole bool
for _, role := range topology.NodeRoles {
sizeNonZero := *topology.Size.Value > 0
if strings.HasPrefix(role, dataTierRolePrefix) && sizeNonZero {
hasSomeDataRole = true
}
if role == ingestDataTierRole && sizeNonZero {
hasIngestRole = true
}
if role == masterDataTierRole && sizeNonZero {
hasMasterRole = true
}
}
if !hasSomeDataRole && hasMasterRole {
hasMasterTier = true
}
if !hasSomeDataRole && hasIngestRole {
hasIngestTier = true
}
if hasSomeDataRole && hasMasterRole {
dataTier = topology
}
}
return dataTier, hasMasterTier, hasIngestTier
}