func removeCondition()

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
}