// ParseAnnotations parses the annotations contained in the ingress // rule used to configure upstream check parameters func ParseAnnotations(cfg defaults.Backend, ing *extensions.Ingress) *Configuration { if ing == nil || ing.GetAnnotations() == nil { return &Configuration{ cfg.ProxyConnectTimeout, cfg.ProxySendTimeout, cfg.ProxyReadTimeout, cfg.ProxyBufferSize, } } ct, err := parser.GetIntAnnotation(connect, ing) if err != nil { ct = cfg.ProxyConnectTimeout } st, err := parser.GetIntAnnotation(send, ing) if err != nil { st = cfg.ProxySendTimeout } rt, err := parser.GetIntAnnotation(read, ing) if err != nil { rt = cfg.ProxyReadTimeout } bs, err := parser.GetStringAnnotation(bufferSize, ing) if err != nil || bs == "" { bs = cfg.ProxyBufferSize } return &Configuration{ct, st, rt, bs} }
// ParseAnnotations parses the annotations contained in the ingress // rule used to rewrite the defined paths func ParseAnnotations(ing *extensions.Ingress) (*RateLimit, error) { if ing.GetAnnotations() == nil { return &RateLimit{}, parser.ErrMissingAnnotations } rps, _ := parser.GetIntAnnotation(limitRPS, ing) conn, _ := parser.GetIntAnnotation(limitIP, ing) if rps == 0 && conn == 0 { return &RateLimit{ Connections: Zone{}, RPS: Zone{}, }, ErrInvalidRateLimit } zoneName := fmt.Sprintf("%v_%v", ing.GetNamespace(), ing.GetName()) return &RateLimit{ Connections: Zone{ Name: fmt.Sprintf("%v_conn", zoneName), Limit: conn, Burst: conn * defBurst, SharedSize: defSharedSize, }, RPS: Zone{ Name: fmt.Sprintf("%v_rps", zoneName), Limit: rps, Burst: conn * defBurst, SharedSize: defSharedSize, }, }, nil }