func()

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))
}