in pkg/admin/services/override_service_impl.go [33:92]
func (s *OverrideServiceImpl) SaveOverride(dynamicConfig *model.DynamicConfig) error {
id := util2.BuildServiceKey(dynamicConfig.Base.Application, dynamicConfig.Base.Service, dynamicConfig.Base.ServiceVersion, dynamicConfig.Base.ServiceGroup)
path := GetOverridePath(id)
existConfig, err := config.Governance.GetConfig(path)
if err != nil {
if _, ok := err.(*config.RuleNotFound); !ok {
logger.Logger().Error(err.Error())
return err
}
}
existOverride := dynamicConfig.ToOverride()
configs := []model.OverrideConfig{}
if existConfig != "" {
err := yaml.UnmarshalYML([]byte(existConfig), existOverride)
if err != nil {
logger.Logger().Error(err.Error())
return err
}
if len(existOverride.Configs) > 0 {
for _, c := range existOverride.Configs {
if constant.Configs.Contains(c.Type) {
configs = append(configs, c)
}
}
}
}
configs = append(configs, dynamicConfig.Configs...)
existOverride.Enabled = dynamicConfig.Enabled
existOverride.Configs = configs
if b, err := yaml.MarshalYML(existOverride); err != nil {
logger.Logger().Error(err.Error())
return err
} else {
err := config.Governance.SetConfig(path, string(b))
if err != nil {
logger.Logger().Error(err.Error())
return err
}
}
// for 2.6
if dynamicConfig.Service != "" {
result := dynamicConfig.ToOldOverride()
for _, o := range result {
url, err := util.OldOverride2URL(o)
if err != nil {
logger.Logger().Error(err.Error())
return err
}
err = config.Governance.Register(url)
if err != nil {
logger.Logger().Error(err.Error())
return err
}
}
}
return nil
}