Enterprise Edition only
This API creates new rules, updates existing rules, and deletes rules.
A ruleset is an array of rules where order matters. The most high priority rule is first, and so on. Through the WLM REST API, you interact with the ruleset, not any individual rules.
When you remove a rule from the ruleset (the array of rules) list, it is deleted.
PUT /api/v3/wlm/rule
When new rules are added, acceptName
and id
do not need to be specified.
{
"tag": "0",
"rules": [
{
"name": "Rule name",
"conditions": "query condition",
"acceptId": "ID",
"acceptName": "Rule name",
"action": "PLACE",
"id": "ID"
}
]
}
{
"tag": "0",
"rules": [
{
"name": "Rule name",
"conditions": "query condition",
"acceptId": "ID",
"acceptName": "Rule name",
"action": "PLACE",
"id": "ID"
}
]
}
400
- Invalid body.
403
- User does not have permission to update this rule.
404
- Rule doesn’t exist.
409
- Conflict, rule has been modified (version conflict).
curl --request PUT \
--url http://localhost:9047/api/v3/wlm/rule \
--header 'authorization: _dremioha5lrg03obu07o4fkaev5e4r8n' \
--header 'content-type: application/json' \
--data '{ "tag": "0", "rules": [ { "name": "Users Rule", "conditions": "USER in ('\''user1'\'', '\''user2'\'')", "acceptId": "360fa7c1-a691-4d42-a045-8c066abb4990", "action": "PLACE" }, { "name": "UI Previews", "conditions": "query_type() = '\''UI Preview'\''", "acceptId": "a7606f6e-6240-4fd6-bfcd-dc191d8295d7", "acceptName": "UI Previews", "action": "PLACE", "id": "04dc84b0-a33d-41d1-8bf1-c9914b305d16" }, { "name": "High Cost Reflections", "conditions": "query_type() = '\''Reflections'\'' AND query_cost() >= 30000000", "acceptId": "3736910c-507b-4527-8aa1-41544ba7eb3a", "acceptName": "High Cost Reflections", "action": "PLACE", "id": "a02c33f0-8c34-4129-9a4f-1ca9daacf3b0" }, { "name": "Low Cost Reflections", "conditions": "query_type() = '\''Reflections'\'' AND query_cost() < 30000000", "acceptId": "54b6941b-6d3a-4b71-977b-1ec3029dda9a", "acceptName": "Low Cost Reflections", "action": "PLACE", "id": "e5844b2b-c6f8-4e95-abc5-f45818a09f78" }, { "name": "High Cost User Queries", "conditions": "query_cost() >= 30000000", "acceptId": "19f8fde2-66e8-403e-b0e1-c01c5d14b9b1", "acceptName": "New Queue", "action": "PLACE", "id": "1b8760dc-ecff-4429-9453-0a26719221bd" }, { "name": "Low Cost User Queries", "conditions": "query_cost() < 30000000", "acceptId": "360fa7c1-a691-4d42-a045-8c066abb4990", "acceptName": "Low Cost User Queries", "action": "PLACE", "id": "6eac41cc-811a-4a28-92f5-ca9fc0182186" } ] }'
import requests
url = "http://localhost:9047/api/v3/wlm/rule"
payload = "{ \"tag\": \"0\", \"rules\": [ { \"name\": \"Users Rule\", \"conditions\": \"USER in ('user1', 'user2')\", \"acceptId\": \"360fa7c1-a691-4d42-a045-8c066abb4990\", \"action\": \"PLACE\" }, { \"name\": \"UI Previews\", \"conditions\": \"query_type() = 'UI Preview'\", \"acceptId\": \"a7606f6e-6240-4fd6-bfcd-dc191d8295d7\", \"acceptName\": \"UI Previews\", \"action\": \"PLACE\", \"id\": \"04dc84b0-a33d-41d1-8bf1-c9914b305d16\" }, { \"name\": \"High Cost Reflections\", \"conditions\": \"query_type() = 'Reflections' AND query_cost() >= 30000000\", \"acceptId\": \"3736910c-507b-4527-8aa1-41544ba7eb3a\", \"acceptName\": \"High Cost Reflections\", \"action\": \"PLACE\", \"id\": \"a02c33f0-8c34-4129-9a4f-1ca9daacf3b0\" }, { \"name\": \"Low Cost Reflections\", \"conditions\": \"query_type() = 'Reflections' AND query_cost() < 30000000\", \"acceptId\": \"54b6941b-6d3a-4b71-977b-1ec3029dda9a\", \"acceptName\": \"Low Cost Reflections\", \"action\": \"PLACE\", \"id\": \"e5844b2b-c6f8-4e95-abc5-f45818a09f78\" }, { \"name\": \"High Cost User Queries\", \"conditions\": \"query_cost() >= 30000000\", \"acceptId\": \"19f8fde2-66e8-403e-b0e1-c01c5d14b9b1\", \"acceptName\": \"New Queue\", \"action\": \"PLACE\", \"id\": \"1b8760dc-ecff-4429-9453-0a26719221bd\" }, { \"name\": \"Low Cost User Queries\", \"conditions\": \"query_cost() < 30000000\", \"acceptId\": \"360fa7c1-a691-4d42-a045-8c066abb4990\", \"acceptName\": \"Low Cost User Queries\", \"action\": \"PLACE\", \"id\": \"6eac41cc-811a-4a28-92f5-ca9fc0182186\" } ] }"
headers = {
'authorization': "_dremioha5lrg03obu07o4fkaev5e4r8n",
'content-type': "application/json"
}
response = requests.request("PUT", url, data=payload, headers=headers)
print(response.text)
{
"tag": "1",
"rules": [
{
"name": "Users Rule",
"conditions": "USER in ('user1', 'user2')",
"acceptId": "360fa7c1-a691-4d42-a045-8c066abb4990",
"acceptName": "Low Cost User Queries",
"action": "PLACE",
"id": "6244459e-8c3f-4a2b-a900-530d0582d93c"
},
{
"name": "UI Previews",
"conditions": "query_type() = 'UI Preview'",
"acceptId": "a7606f6e-6240-4fd6-bfcd-dc191d8295d7",
"acceptName": "UI Previews",
"action": "PLACE",
"id": "04dc84b0-a33d-41d1-8bf1-c9914b305d16"
},
{
"name": "High Cost Reflections",
"conditions": "query_type() = 'Reflections' AND query_cost() >= 30000000",
"acceptId": "3736910c-507b-4527-8aa1-41544ba7eb3a",
"acceptName": "High Cost Reflections",
"action": "PLACE",
"id": "a02c33f0-8c34-4129-9a4f-1ca9daacf3b0"
},
{
"name": "Low Cost Reflections",
"conditions": "query_type() = 'Reflections' AND query_cost() < 30000000",
"acceptId": "54b6941b-6d3a-4b71-977b-1ec3029dda9a",
"acceptName": "Low Cost Reflections",
"action": "PLACE",
"id": "e5844b2b-c6f8-4e95-abc5-f45818a09f78"
},
{
"name": "High Cost User Queries",
"conditions": "query_cost() >= 30000000",
"acceptId": "19f8fde2-66e8-403e-b0e1-c01c5d14b9b1",
"acceptName": "New Queue",
"action": "PLACE",
"id": "1b8760dc-ecff-4429-9453-0a26719221bd"
},
{
"name": "Low Cost User Queries",
"conditions": "query_cost() < 30000000",
"acceptId": "360fa7c1-a691-4d42-a045-8c066abb4990",
"acceptName": "Low Cost User Queries",
"action": "PLACE",
"id": "6eac41cc-811a-4a28-92f5-ca9fc0182186"
}
]
}
In this Ruleset example, you delete the UI Previews
rule a lower priority by removing it from the array.
{
"tag": "0",
"rules": [
{
"name": "High Cost Reflections",
"conditions": "query_type() = 'Reflections' AND query_cost() >= 30000000",
"acceptId": "3736910c-507b-4527-8aa1-41544ba7eb3a",
"acceptName": "High Cost Reflections",
"action": "PLACE",
"id": "a02c33f0-8c34-4129-9a4f-1ca9daacf3b0"
},
{
"name": "Low Cost Reflections",
"conditions": "query_type() = 'Reflections' AND query_cost() < 30000000",
"acceptId": "54b6941b-6d3a-4b71-977b-1ec3029dda9a",
"acceptName": "Low Cost Reflections",
"action": "PLACE",
"id": "e5844b2b-c6f8-4e95-abc5-f45818a09f78"
},
{
"name": "High Cost User Queries",
"conditions": "query_cost() >= 30000000",
"acceptId": "19f8fde2-66e8-403e-b0e1-c01c5d14b9b1",
"acceptName": "New Queue",
"action": "PLACE",
"id": "1b8760dc-ecff-4429-9453-0a26719221bd"
},
{
"name": "Low Cost User Queries",
"conditions": "query_cost() < 30000000",
"acceptId": "360fa7c1-a691-4d42-a045-8c066abb4990",
"acceptName": "Low Cost User Queries",
"action": "PLACE",
"id": "6eac41cc-811a-4a28-92f5-ca9fc0182186"
}
]
}
In this Ruleset example, you make the UI Previews
rule a lower priority by moving it to the bottom of the array.
{
"tag": "0",
"rules": [
{
"name": "High Cost Reflections",
"conditions": "query_type() = 'Reflections' AND query_cost() >= 30000000",
"acceptId": "3736910c-507b-4527-8aa1-41544ba7eb3a",
"acceptName": "High Cost Reflections",
"action": "PLACE",
"id": "a02c33f0-8c34-4129-9a4f-1ca9daacf3b0"
},
{
"name": "Low Cost Reflections",
"conditions": "query_type() = 'Reflections' AND query_cost() < 30000000",
"acceptId": "54b6941b-6d3a-4b71-977b-1ec3029dda9a",
"acceptName": "Low Cost Reflections",
"action": "PLACE",
"id": "e5844b2b-c6f8-4e95-abc5-f45818a09f78"
},
{
"name": "High Cost User Queries",
"conditions": "query_cost() >= 30000000",
"acceptId": "19f8fde2-66e8-403e-b0e1-c01c5d14b9b1",
"acceptName": "New Queue",
"action": "PLACE",
"id": "1b8760dc-ecff-4429-9453-0a26719221bd"
},
{
"name": "Low Cost User Queries",
"conditions": "query_cost() < 30000000",
"acceptId": "360fa7c1-a691-4d42-a045-8c066abb4990",
"acceptName": "Low Cost User Queries",
"action": "PLACE",
"id": "6eac41cc-811a-4a28-92f5-ca9fc0182186"
},
{
"name": "UI Previews",
"conditions": "query_type() = 'UI Preview'",
"acceptId": "a7606f6e-6240-4fd6-bfcd-dc191d8295d7",
"acceptName": "UI Previews",
"action": "PLACE",
"id": "04dc84b0-a33d-41d1-8bf1-c9914b305d16"
}
]
}