in ec/ecresource/deploymentresource/elasticsearch/v2/elasticsearch_topology.go [368:432]
func elasticsearchTopologyAutoscalingPayload(ctx context.Context, autoObj attr.Value, topologyID string, payload *models.ElasticsearchClusterTopologyElement) diag.Diagnostics {
var diag diag.Diagnostics
if autoObj.IsNull() || autoObj.IsUnknown() {
return nil
}
// it should be only one element if any
var autoscale v1.ElasticsearchTopologyAutoscalingTF
if diags := tfsdk.ValueAs(ctx, autoObj, &autoscale); diags.HasError() {
return diags
}
if autoscale == (v1.ElasticsearchTopologyAutoscalingTF{}) {
return nil
}
if !autoscale.MinSize.IsNull() && !autoscale.MinSize.IsUnknown() {
if payload.AutoscalingMin == nil {
payload.AutoscalingMin = new(models.TopologySize)
}
err := expandAutoscalingDimension(autoscale, payload.AutoscalingMin, autoscale.MinSize, autoscale.MinSizeResource)
if err != nil {
diag.AddError("fail to parse autoscale min size", err.Error())
return diag
}
if reflect.DeepEqual(payload.AutoscalingMin, new(models.TopologySize)) {
payload.AutoscalingMin = nil
}
}
if !autoscale.MaxSize.IsNull() && !autoscale.MaxSize.IsUnknown() {
if payload.AutoscalingMax == nil {
payload.AutoscalingMax = new(models.TopologySize)
}
err := expandAutoscalingDimension(autoscale, payload.AutoscalingMax, autoscale.MaxSize, autoscale.MaxSizeResource)
if err != nil {
diag.AddError("fail to parse autoscale max size", err.Error())
return diag
}
if reflect.DeepEqual(payload.AutoscalingMax, new(models.TopologySize)) {
payload.AutoscalingMax = nil
}
}
if autoscale.PolicyOverrideJson.ValueString() != "" {
if err := json.Unmarshal([]byte(autoscale.PolicyOverrideJson.ValueString()),
&payload.AutoscalingPolicyOverrideJSON,
); err != nil {
diag.AddError(fmt.Sprintf("elasticsearch topology %s: unable to load policy_override_json", topologyID), err.Error())
return diag
}
}
if !autoscale.TierAutoscale.IsNull() && !autoscale.TierAutoscale.IsUnknown() {
payload.AutoscalingTierOverride = autoscale.TierAutoscale.ValueBoolPointer()
}
return diag
}