in pkg/admin/services/override_service_impl.go [94:154]
func (s *OverrideServiceImpl) UpdateOverride(update *model.DynamicConfig) error {
id := util2.BuildServiceKey(update.Base.Application, update.Base.Service, update.Base.ServiceVersion, update.Base.ServiceGroup)
path := GetOverridePath(id)
existConfig, err := config.Governance.GetConfig(path)
if err != nil {
logger.Logger().Error(err.Error())
return err
}
override := &model.Override{}
err = yaml.UnmarshalYML([]byte(existConfig), override)
if err != nil {
logger.Logger().Error(err.Error())
return err
}
old := override.ToDynamicConfig()
configs := make([]model.OverrideConfig, 0)
if len(override.Configs) > 0 {
for _, c := range override.Configs {
if constant.Configs.Contains(c.Type) {
configs = append(configs, c)
}
}
}
configs = append(configs, update.Configs...)
override.Configs = configs
override.Enabled = update.Enabled
if b, err := yaml.MarshalYML(override); 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 update.Service != "" {
oldOverrides := old.ToOldOverride()
updatedOverrides := update.ToOldOverride()
for _, o := range oldOverrides {
url, err := util.OldOverride2URL(o)
if err != nil {
return err
}
config.Governance.UnRegister(url)
}
for _, o := range updatedOverrides {
url, err := util.OldOverride2URL(o)
if err != nil {
return err
}
config.Governance.Register(url)
}
}
return nil
}