in ec/ecresource/deploymentresource/update.go [133:167]
func HandleTrafficFilterChange(ctx context.Context, client *api.API, plan v2.DeploymentTF, stateRules ruleSet) ([]string, diag.Diagnostics) {
var planRules ruleSet
if diags := plan.TrafficFilter.ElementsAs(ctx, &planRules, true); diags.HasError() {
return []string{}, diags
}
var rulesToAdd, rulesToDelete []string
for _, rule := range planRules {
if !stateRules.exist(rule) {
rulesToAdd = append(rulesToAdd, rule)
}
}
for _, rule := range stateRules {
if !planRules.exist(rule) {
rulesToDelete = append(rulesToDelete, rule)
}
}
var diags diag.Diagnostics
for _, rule := range rulesToAdd {
if err := associateRule(rule, plan.Id.ValueString(), client); err != nil {
diags.AddError("cannot associate traffic filter rule", err.Error())
}
}
for _, rule := range rulesToDelete {
if err := removeRule(rule, plan.Id.ValueString(), client); err != nil {
diags.AddError("cannot remove traffic filter rule", err.Error())
}
}
return planRules, diags
}