haproxytech / dataplaneapi

HAProxy Data Plane API
https://www.haproxy.com/documentation/dataplaneapi/
Apache License 2.0
328 stars 76 forks source link

http_request_rules set-bandwidth-limit fail #346

Open zhuquechiye opened 1 month ago

zhuquechiye commented 1 month ago

i want create rule like: 'filter bwlim-out oss_limit_out2 limit 1000 key hdr(limit) table oss' 'http-request set-bandwidth-limit oss_limit_out2 if { hdr(limit) -m str user2 }'

when create http-request failed, it looks to create rule like 'http-request set-bandwidth-limit oss_limit_out2 limit 1 period 1s if { hdr(limit) -m str user2 }', How do I avoid this? @mjuraga @capflam @wlallemand @schegi thanks!!!

curl -u dataplaneapi:dataplaneapi -X POST -H "Content-Type: application/json" -d '{"type":"set-bandwidth-limit", "bandwidth_limit_name":"limit-out", "cond":"if", "cond_test":"{hdr(limit) -m str user$limit}"}' http://0.0.0.0:5555/v3/services/haproxy/configuration/frontends/oss/http_request_rules/0?version=3

{"code":400,"message":"validation error: exit status 1: err transactionId=dc153f75-f494-49a3-80bf-ca3802b2e972 \nmsg=\"config parsing [/tmp/haproxy/haproxy.cfg.dc153f75-f494-49a3-80bf-ca3802b2e972:48] error detected in frontend 'oss' while parsing 'http-request set-bandwidth-limit' rule 'limit': invalid size value or unknown fetch method 'period'.\"\nmsg=\"config Error(s) found in configuration file /tmp/haproxy/haproxy.cfg.dc153f75-f494-49a3-80bf-ca3802b2e972\""}

smeroth commented 2 weeks ago

Can you copy/paste the relevant section (probably your OSS frontend) of the config file in which you want to add this bandwidth limitation.

Quick question thinking out loud ...

Did you try

In the affirmative you could play with the raw (the whole) config (using GET/PUT) to bypass this http-request rule limitation. No doubt the issue will fixed but at least you can move forward.

In the negative it worth a test.

My 2 cts.