in ec/ecresource/deploymentresource/deployment/v2/deployment_create_payload.go [63:183]
func (dep DeploymentTF) CreateRequest(ctx context.Context, client *api.API) (*models.DeploymentCreateRequest, diag.Diagnostics) {
// The alias behaves like this:
// - Not set in the config (null/unknown) -> Default alias is added
// - Set to empty string -> No alias is added
// - Set to non-empty string -> Alias with that value is added
var alias *string
if dep.Alias.IsNull() || dep.Alias.IsUnknown() {
alias = nil
} else {
alias = ec.String(dep.Alias.ValueString())
}
var result = models.DeploymentCreateRequest{
Name: dep.Name.ValueString(),
Alias: alias,
Resources: &models.DeploymentCreateResources{},
Settings: &models.DeploymentCreateSettings{},
Metadata: &models.DeploymentCreateMetadata{},
}
dtID := dep.DeploymentTemplateId.ValueString()
version := dep.Version.ValueString()
var diagsnostics diag.Diagnostics
template, err := deptemplateapi.Get(deptemplateapi.GetParams{
API: client,
TemplateID: dtID,
Region: dep.Region.ValueString(),
HideInstanceConfigurations: true,
})
if err != nil {
diagsnostics.AddError("Deployment template get error", err.Error())
return nil, diagsnostics
}
baseUpdatePayloads := &models.DeploymentUpdateResources{
Apm: template.DeploymentTemplate.Resources.Apm,
Appsearch: template.DeploymentTemplate.Resources.Appsearch,
Elasticsearch: template.DeploymentTemplate.Resources.Elasticsearch,
EnterpriseSearch: template.DeploymentTemplate.Resources.EnterpriseSearch,
IntegrationsServer: template.DeploymentTemplate.Resources.IntegrationsServer,
Kibana: template.DeploymentTemplate.Resources.Kibana,
}
useNodeRoles, err := elasticsearchv2.CompatibleWithNodeRoles(version)
if err != nil {
diagsnostics.AddError("Deployment parse error", err.Error())
return nil, diagsnostics
}
elasticsearchPayload, diags := elasticsearchv2.ElasticsearchPayload(ctx, dep.Elasticsearch, nil, baseUpdatePayloads, dtID, version, useNodeRoles)
if diags.HasError() {
diagsnostics.Append(diags...)
}
if elasticsearchPayload != nil {
result.Resources.Elasticsearch = []*models.ElasticsearchPayload{elasticsearchPayload}
}
kibanaPayload, diags := kibanav2.KibanaPayload(ctx, dep.Kibana, baseUpdatePayloads)
if diags.HasError() {
diagsnostics.Append(diags...)
}
if kibanaPayload != nil {
result.Resources.Kibana = []*models.KibanaPayload{kibanaPayload}
}
apmPayload, diags := apmv2.ApmPayload(ctx, dep.Apm, baseUpdatePayloads)
if diags.HasError() {
diagsnostics.Append(diags...)
}
if apmPayload != nil {
result.Resources.Apm = []*models.ApmPayload{apmPayload}
}
integrationsServerPayload, diags := integrationsserverv2.IntegrationsServerPayload(ctx, dep.IntegrationsServer, baseUpdatePayloads)
if diags.HasError() {
diagsnostics.Append(diags...)
}
if integrationsServerPayload != nil {
result.Resources.IntegrationsServer = []*models.IntegrationsServerPayload{integrationsServerPayload}
}
enterpriseSearchPayload, diags := enterprisesearchv2.EnterpriseSearchesPayload(ctx, dep.EnterpriseSearch, baseUpdatePayloads)
if diags.HasError() {
diagsnostics.Append(diags...)
}
if enterpriseSearchPayload != nil {
result.Resources.EnterpriseSearch = []*models.EnterpriseSearchPayload{enterpriseSearchPayload}
}
if diags := trafficFilterToModel(ctx, dep.TrafficFilter, &result); diags.HasError() {
diagsnostics.Append(diags...)
}
observabilityPayload, diags := observabilityv2.ObservabilityPayload(ctx, dep.Observability, client)
if diags.HasError() {
diagsnostics.Append(diags...)
}
result.Settings.Observability = observabilityPayload
result.Metadata.Tags, diags = converters.TypesMapToModelsTags(ctx, dep.Tags)
if diags.HasError() {
diagsnostics.Append(diags...)
}
return &result, diagsnostics
}