Open atorrescogollo opened 2 years ago
0.34.0
I want to set this through the API:
I was able to do that with curl (although it is not documented explicitly in api docs):
GET /zones/$ZONE_ID/workers/routes { "result": [ { "id": "3...24", "pattern": "REDACTED", "script": "datadome", "request_limit_fail_open": false }, ... ], "success": true, "errors": [], "messages": [] } --- PUT /zones/$ZONE_ID/workers/routes/$ROUTE_ID { "id": "3...24", "pattern": "REDACTED", "script": "datadome", "request_limit_fail_open": true } --- GET /zones/$ZONE_ID/workers/routes { "result": [ { "id": "3...24", "pattern": "REDACTED", "script": "datadome", "request_limit_fail_open": true <---------- CHANGED }, ... ], "success": true, "errors": [], "messages": [] }
Script:
export CLOUDFLARE_EMAIL="REDACTED" export CLOUDFLARE_API_KEY="REDACTED" export ZONE_NAME="REDACTED" function cf_curl(){ curl -H "X-Auth-Email: $CLOUDFLARE_EMAIL" -H "X-Auth-Key: $CLOUDFLARE_API_KEY" -H "Content-Type: application/json" $@ } export ZONE_ID=$(cf_curl -s -X GET \ "https://api.cloudflare.com/client/v4/zones?name=$ZONE_NAME" | jq -r '.result[0].id' ) export ROUTE=$(cf_curl -s -X GET \ "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes" | jq -r '.result[0]' ) export ROUTE_ID=$(echo "$ROUTE" | jq -r '.id') export DATA=$(echo $ROUTE | jq 'del(.id)' | jq -cr '.request_limit_fail_open=true') cf_curl -X PUT \ "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes/$ROUTE_ID" \ --data "$DATA" | jq '.'
The end goal is to set this through Terraform like:
resource "cloudflare_worker_route" "datadome-route" { zone_id = cloudflare_zone.my-zone.id pattern = "REDACTED" script_name = cloudflare_worker_script.datadome.name request_limit_fail_open = true }
I will also open another issue in the provider for that.
# https://github.com/cloudflare/terraform-provider-cloudflare/blob/master/cloudflare/resource_cloudflare_worker_route.go#L27-L34 ... func getRouteFromResource(d *schema.ResourceData) cloudflare.WorkerRoute { route := cloudflare.WorkerRoute{ ID: d.Id(), Pattern: d.Get("pattern").(string), Script: d.Get("script_name").(string), RequestLimitFailOpen: d.Get("request_limit_fail_open").(bool), } return route } ...
I think this struct should be changed to allow this new field: https://github.com/cloudflare/cloudflare-go/blob/master/workers.go#L37-L42
I based on this: https://community.cloudflare.com/t/how-to-setting-up-failure-mode-for-route-using-api/184526/3
Any updates on this ? We need to interact with this flag too. The API hasn't changed from what OP said. This flag is missing from the public docs still.
Current cloudflare-go version
0.34.0
Description
I want to set this through the API:
I was able to do that with curl (although it is not documented explicitly in api docs):
Script:
Use cases
The end goal is to set this through Terraform like:
I will also open another issue in the provider for that.
Potential cloudflare-go usage
References
I think this struct should be changed to allow this new field: https://github.com/cloudflare/cloudflare-go/blob/master/workers.go#L37-L42
I based on this: https://community.cloudflare.com/t/how-to-setting-up-failure-mode-for-route-using-api/184526/3