in pkg/api/deploymentapi/override_settings.go [106:249]
func overrideByPayload(apm []*models.ApmPayload, appsearch []*models.AppSearchPayload,
elasticsearch []*models.ElasticsearchPayload, integrationsServer []*models.IntegrationsServerPayload,
kibana []*models.KibanaPayload, enterprisesearch []*models.EnterpriseSearchPayload, region, version,
refID string, plugins []string, overrideRefIDs bool) error {
for _, resource := range apm {
if resource.Region == nil && region != "" {
resource.Region = ®ion
}
if overrideRefIDs {
resource.RefID = ec.String(defaultApmRefID)
}
if refID != "" {
resource.ElasticsearchClusterRefID = &refID
}
if version != "" {
if resource.Plan != nil && resource.Plan.Apm != nil {
resource.Plan.Apm.Version = version
}
}
}
for _, resource := range appsearch {
if resource.Region == nil && region != "" {
resource.Region = ®ion
}
if overrideRefIDs {
resource.RefID = ec.String(defaultAppsearchRefID)
}
if refID != "" {
resource.ElasticsearchClusterRefID = &refID
}
if version != "" {
if resource.Plan != nil && resource.Plan.Appsearch != nil {
resource.Plan.Appsearch.Version = version
}
}
}
for _, resource := range elasticsearch {
if resource.Region == nil && region != "" {
resource.Region = ®ion
}
if refID != "" {
resource.RefID = &refID
}
// If version is empty, then data tiers are supported by default.
dataTierCompatible := true
if version != "" {
if resource.Plan != nil && resource.Plan.Elasticsearch != nil {
resource.Plan.Elasticsearch.Version = version
if len(plugins) > 0 {
resource.Plan.Elasticsearch.EnabledBuiltInPlugins = append(
resource.Plan.Elasticsearch.EnabledBuiltInPlugins, plugins...,
)
}
esVersion, err := semver.Parse(version)
if err != nil {
return err
}
dataTierCompatible = esVersion.GE(dataTiersMinVersion)
}
}
for _, top := range resource.Plan.ClusterTopology {
if len(top.NodeRoles) > 0 && top.NodeType != nil {
if dataTierCompatible {
top.NodeType = nil
continue
}
top.NodeRoles = nil
}
}
}
for _, resource := range enterprisesearch {
if resource.Region == nil && region != "" {
resource.Region = ®ion
}
if overrideRefIDs {
resource.RefID = ec.String(defaultEnterpriseSearchRefID)
}
if refID != "" {
resource.ElasticsearchClusterRefID = &refID
}
if version != "" {
if resource.Plan != nil && resource.Plan.EnterpriseSearch != nil {
resource.Plan.EnterpriseSearch.Version = version
}
}
}
for _, resource := range integrationsServer {
if resource.Region == nil && region != "" {
resource.Region = ®ion
}
if overrideRefIDs {
resource.RefID = ec.String(defaultIntegrationsServerRefID)
}
if refID != "" {
resource.ElasticsearchClusterRefID = &refID
}
if version != "" {
if resource.Plan != nil && resource.Plan.IntegrationsServer != nil {
resource.Plan.IntegrationsServer.Version = version
}
}
}
for _, resource := range kibana {
if resource.Region == nil && region != "" {
resource.Region = ®ion
}
if overrideRefIDs {
resource.RefID = ec.String(defaultKibanaRefID)
}
if refID != "" {
resource.ElasticsearchClusterRefID = &refID
}
if version != "" {
if resource.Plan != nil && resource.Plan.Kibana != nil {
resource.Plan.Kibana.Version = version
}
}
}
return nil
}