func HandleTrafficFilterChange()

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
}