in internal/elasticsearch/cluster/slm.go [157:237]
func resourceSlmPut(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client, diags := clients.NewApiClientFromSDKResource(d, meta)
if diags.HasError() {
return diags
}
slmId := d.Get("name").(string)
id, diags := client.ID(ctx, slmId)
if diags.HasError() {
return diags
}
var slm models.SnapshotPolicy
slm.Id = slmId
var slmConfig models.SnapshotPolicyConfig
slmRetention := models.SnapshortRetention{}
slm.Repository = d.Get("repository").(string)
slm.Schedule = d.Get("schedule").(string)
if v, ok := d.GetOk("snapshot_name"); ok {
slm.Name = v.(string)
}
if v, ok := d.GetOk("expire_after"); ok {
vv := v.(string)
slmRetention.ExpireAfter = &vv
}
if v, ok := d.GetOk("max_count"); ok {
vv := v.(int)
slmRetention.MaxCount = &vv
}
if v, ok := d.GetOk("min_count"); ok {
vv := v.(int)
slmRetention.MinCount = &vv
}
slm.Retention = &slmRetention
if v, ok := d.GetOk("expand_wildcards"); ok {
vv := v.(string)
slmConfig.ExpandWildcards = &vv
}
if v, ok := d.Get("ignore_unavailable").(bool); ok {
slmConfig.IgnoreUnavailable = &v
}
if v, ok := d.Get("include_global_state").(bool); ok {
slmConfig.IncludeGlobalState = &v
}
indices := make([]string, 0)
if v, ok := d.GetOk("indices"); ok {
list := v.([]interface{})
for _, idx := range list {
indices = append(indices, idx.(string))
}
}
slmConfig.Indices = indices
states := make([]string, 0)
if v, ok := d.GetOk("feature_states"); ok {
p := v.(*schema.Set)
for _, e := range p.List() {
states = append(states, e.(string))
}
}
slmConfig.FeatureStates = states
if v, ok := d.GetOk("metadata"); ok {
metadata := make(map[string]interface{})
if err := json.NewDecoder(strings.NewReader(v.(string))).Decode(&metadata); err != nil {
return diag.FromErr(err)
}
slmConfig.Metadata = metadata
}
if v, ok := d.GetOk("partial"); ok {
vv := v.(bool)
slmConfig.Partial = &vv
}
slm.Config = &slmConfig
if diags := elasticsearch.PutSlm(ctx, client, &slm); diags.HasError() {
return diags
}
d.SetId(id.String())
return resourceSlmRead(ctx, d, meta)
}