func removeFromOverride()

in pkg/admin/services/traffic/generic_rule_operation.go [29:69]


func removeFromOverride(key, side, param string) error {
	oldRule, err := config.Governance.GetConfig(key)
	if err != nil {
		return err
	}

	if oldRule == "" {
		return perrors.Errorf("Override rule does not exist!")
	}

	override := &model.Override{}
	err = yaml.Unmarshal([]byte(oldRule), override)
	if err != nil {
		logger.Error("Unrecognized override rule!")
		return err
	}
	for i, c := range override.Configs {
		if c.Side == side && c.Parameters[param] != "" {
			if len(c.Parameters) == 1 {
				override.Configs = append(override.Configs[:i], override.Configs[i+1:]...)
			} else {
				delete(c.Parameters, param)
			}
		}
	}

	if len(override.Configs) == 0 {
		err = config.Governance.DeleteConfig(key)
		if err != nil {
			logger.Error("Failed to delete override rule!")
			return err
		}
	} else {
		bytes, _ := yaml.Marshal(override)
		err = config.Governance.SetConfig(key, string(bytes))
		if err != nil {
			return err
		}
	}
	return nil
}