in ec/ecresource/deploymentresource/deployment/v2/deployment_update_payload.go [150:257]
func (plan DeploymentTF) UpdateRequest(ctx context.Context, client *api.API, state DeploymentTF, migrateTemplateRequest *deployments.MigrateDeploymentTemplateOK) (*models.DeploymentUpdateRequest, diag.Diagnostics) {
// The alias behaves like this:
// - Not set in the config (null/unknown) -> Alias is not managed by terraform and left untouched
// - Set to empty string -> Alias will be removed
// - Set to non-empty string -> Alias will be set to this value
var alias *string
if plan.Alias.IsNull() || plan.Alias.IsUnknown() {
alias = nil
} else {
alias = ec.String(plan.Alias.ValueString())
}
var result = models.DeploymentUpdateRequest{
Name: plan.Name.ValueString(),
Alias: alias,
PruneOrphans: ec.Bool(true),
Resources: &models.DeploymentUpdateResources{},
Settings: &models.DeploymentUpdateSettings{},
Metadata: &models.DeploymentUpdateMetadata{},
}
dtID := plan.DeploymentTemplateId.ValueString()
var diagnostics diag.Diagnostics
basePayloads, diags := plan.getBaseUpdatePayloads(ctx, client, state, migrateTemplateRequest)
if diags.HasError() {
return nil, diags
}
useNodeRoles, diags := elasticsearchv2.UseNodeRoles(ctx, state.Version, plan.Version, plan.Elasticsearch)
if diags.HasError() {
return nil, diags
}
elasticsearchPayload, diags := elasticsearchv2.ElasticsearchPayload(ctx, plan.Elasticsearch, &state.Elasticsearch, basePayloads, dtID, plan.Version.ValueString(), useNodeRoles)
if diags.HasError() {
diagnostics.Append(diags...)
}
if elasticsearchPayload != nil {
// if the restore snapshot operation has been specified, the snapshot restore
// can't be full once the cluster has been created, so the Strategy must be set
// to "partial".
ensurePartialSnapshotStrategy(elasticsearchPayload)
result.Resources.Elasticsearch = append(result.Resources.Elasticsearch, elasticsearchPayload)
}
kibanaPayload, diags := kibanav2.KibanaPayload(ctx, plan.Kibana, basePayloads)
if diags.HasError() {
diagnostics.Append(diags...)
}
if kibanaPayload != nil {
result.Resources.Kibana = append(result.Resources.Kibana, kibanaPayload)
}
apmPayload, diags := apmv2.ApmPayload(ctx, plan.Apm, basePayloads)
if diags.HasError() {
diagnostics.Append(diags...)
}
if apmPayload != nil {
result.Resources.Apm = append(result.Resources.Apm, apmPayload)
}
integrationsServerPayload, diags := integrationsserverv2.IntegrationsServerPayload(ctx, plan.IntegrationsServer, basePayloads)
if diags.HasError() {
diagnostics.Append(diags...)
}
if integrationsServerPayload != nil {
result.Resources.IntegrationsServer = append(result.Resources.IntegrationsServer, integrationsServerPayload)
}
enterpriseSearchPayload, diags := enterprisesearchv2.EnterpriseSearchesPayload(ctx, plan.EnterpriseSearch, basePayloads)
if diags.HasError() {
diagnostics.Append(diags...)
}
if enterpriseSearchPayload != nil {
result.Resources.EnterpriseSearch = append(result.Resources.EnterpriseSearch, enterpriseSearchPayload)
}
observabilityPayload, diags := observabilityv2.ObservabilityPayload(ctx, plan.Observability, client)
if diags.HasError() {
diagnostics.Append(diags...)
}
result.Settings.Observability = observabilityPayload
// In order to stop shipping logs and metrics, an empty Observability
// object must be passed, as opposed to a nil object when creating a
// deployment without observability settings.
if plan.Observability.IsNull() && !state.Observability.IsNull() {
result.Settings.Observability = &models.DeploymentObservabilitySettings{}
}
result.Metadata.Tags, diags = converters.TypesMapToModelsTags(ctx, plan.Tags)
if diags.HasError() {
diagnostics.Append(diags...)
}
return &result, diagnostics
}