in pkg/admin/services/traffic/generic_rule_operation.go [230:267]
func removeCondition(key, rule string, identifier string) error {
oldRule, err := config.Governance.GetConfig(key)
if err != nil {
return err
}
if oldRule == "" {
return perrors.Errorf("Condition rule does not exist!")
}
route := &model.ConditionRoute{}
err = yaml.Unmarshal([]byte(oldRule), route)
if err != nil {
logger.Error("Unrecognized condition rule!")
return err
}
for i, c := range route.Conditions {
if strings.Contains(c, identifier) {
route.Conditions = append(route.Conditions[:i], route.Conditions[i+1:]...)
break
}
}
if len(route.Conditions) == 0 {
err = config.Governance.DeleteConfig(key)
if err != nil {
logger.Error("Failed to delete override rule!")
return err
}
} else {
bytes, _ := yaml.Marshal(route)
err = config.Governance.SetConfig(key, string(bytes))
if err != nil {
return err
}
}
return nil
}