in proxy/pkg/egress/archaius/egress_manager.go [41:75]
func (r *egressRuleEventListener) Event(e *event.Event) {
if e == nil {
openlog.Warn("Event pointer is nil", nil)
return
}
if !strings.Contains(e.Key, EgressYaml) {
return
}
v := archaius.Get(e.Key)
if v == nil {
openlog.Info(fmt.Sprintf("[%s] Error getting egress key", e.Key))
return
}
var egressconfig config.EgressConfig
if err := yaml.Unmarshal([]byte(v.([]byte)), &egressconfig); err != nil {
openlog.Error("yaml unmarshal failed", nil)
return
}
var egressRules []*config.EgressRule
for key, value := range egressconfig.Destinations {
ok, _ := egress.ValidateEgressRule(map[string][]*config.EgressRule{key: value})
if !ok {
openlog.Warn("Validating Egress Rule Failed")
return
}
egressRules = append(egressRules, value...)
}
SetEgressRule(map[string][]*config.EgressRule{e.Key: egressRules})
openlog.Info(fmt.Sprintf("Update [%s] egress rule SUCCESS", e.Key))
}