Nomad
Quota HTTP API
The /quota endpoints are used to query for and interact with quotas.
Enterprise
This feature requires Nomad Enterprise(opens in new tab).
List Quota Specifications
This endpoint lists all quota specifications.
| Method | Path | Produces | 
|---|---|---|
| GET | /v1/quotas | application/json | 
The table below shows this endpoint's support for blocking queries and required ACLs.
| Blocking Queries | ACL Required | 
|---|---|
| YES | quota:readnamespace:*if namespace has quota attached | 
Parameters
- prefix- (string: "")- Specifies a string to filter quota specifications on based on an index prefix. This is specified as a query string parameter.
Sample Request
$ curl \
    https://localhost:4646/v1/quotas
$ curl \
    https://localhost:4646/v1/quotas?prefix=sha
Sample Response
[
  {
    "CreateIndex": 11,
    "Description": "Limit the shared default namespace",
    "Hash": "uTIBStF55xKqUMGdI23rdP+W+hsvZ2WEfRWU11j7CzQ=",
    "Limits": [
      {
        "Hash": "fTSnZHxUyDQcRT2Q7L3Hlu3vWpwSt0LWu7JVd3neK9k=",
        "Region": "global",
        "RegionLimit": {
          "CPU": 2500,
          "Cores": 0,
          "Devices": [
            {
              "Affinities": null,
              "Constraints": null,
              "Count": 1,
              "Name": "nvidia/gpu/Tesla M60"
            }
          ],
          "DiskMB": 0,
          "IOPS": 0,
          "MemoryMB": 2000,
          "MemoryMaxMB": 2000,
          "NUMA": null,
          "Networks": [
            {
              "CIDR": "",
              "Device": "",
              "DynamicPorts": null,
              "IP": "",
              "MBits": 50,
              "Mode": "",
              "ReservedPorts": null
            }
          ],
          "SecretsMB": 0
        },
        "VariablesLimit": 1000
      }
    ],
    "ModifyIndex": 11,
    "Name": "default-quota"
  }
]
Read Quota Specification
This endpoint reads information about a specific quota specification.
| Method | Path | Produces | 
|---|---|---|
| GET | /v1/quota/:quota | application/json | 
The table below shows this endpoint's support for blocking queries and required ACLs.
| Blocking Queries | ACL Required | 
|---|---|
| YES | quota:readnamespace:*if namespace has quota attached | 
Parameters
- :quota- (string: <required>)- Specifies the quota specification to query where the identifier is the quota's name.
Sample Request
$ curl \
    https://localhost:4646/v1/quota/shared-quota
Sample Response
{
  "CreateIndex": 11,
  "Description": "Limit the shared default namespace",
  "Hash": "uTIBStF55xKqUMGdI23rdP+W+hsvZ2WEfRWU11j7CzQ=",
  "Limits": [
    {
      "Hash": "fTSnZHxUyDQcRT2Q7L3Hlu3vWpwSt0LWu7JVd3neK9k=",
      "Region": "global",
      "RegionLimit": {
        "CPU": 2500,
        "Cores": 0,
        "Devices": [
          {
            "Affinities": null,
            "Constraints": null,
            "Count": 1,
            "Name": "nvidia/gpu/Tesla M60"
          }
        ],
        "DiskMB": 0,
        "IOPS": 0,
        "MemoryMB": 2000,
        "MemoryMaxMB": 2000,
        "NUMA": null,
        "Networks": [
          {
            "CIDR": "",
            "Device": "",
            "DynamicPorts": null,
            "IP": "",
            "MBits": 50,
            "Mode": "",
            "ReservedPorts": null
          }
        ],
        "SecretsMB": 0
      },
      "VariablesLimit": 1000
    }
  ],
  "ModifyIndex": 11,
  "Name": "default-quota"
}
Create or Update Quota Specification
This endpoint is used to create or update a quota specification.
| Method | Path | Produces | 
|---|---|---|
| POST | /v1/quota/:quota/v1/quota | application/json | 
The table below shows this endpoint's support for blocking queries and required ACLs.
| Blocking Queries | ACL Required | 
|---|---|
| NO | quota:write | 
Body
The request body contains a valid, JSON quota specification. View the api
package to see the definition of a QuotaSpec
object.
Sample Payload
{
  "Name": "default-quota",
  "Description": "Limit the shared default namespace",
  "Limits": [
    {
      "Region": "global",
      "RegionLimit": {
        "CPU": 2500,
        "MemoryMB": 2000,
        "MemoryMaxMB": 2000,
        "Devices": [
          {
            "Name": "nvidia/gpu/Tesla M60",
            "Count": 1
          }
        ],
        "VariablesLimit": 1000
      }
    }
  ]
}
Sample Request
$ curl \
    --request POST \
    --data @spec.json \
    https://localhost:4646/v1/quota/shared-quota
$ curl \
    --request POST \
    --data @spec.json \
    https://localhost:4646/v1/quota
Delete Quota Specification
This endpoint is used to delete a quota specification.
| Method | Path | Produces | 
|---|---|---|
| DELETE | /v1/quota/:quota | application/json | 
The table below shows this endpoint's support for blocking queries and required ACLs.
| Blocking Queries | ACL Required | 
|---|---|
| NO | quota:write | 
Parameters
- :quota- (string: <required>)- Specifies the quota specification to delete where the identifier is the quota's name.
Sample Request
$ curl \
    --request DELETE \
    https://localhost:4646/v1/quota/shared-quota
List Quota Usages
This endpoint lists all quota usages.
| Method | Path | Produces | 
|---|---|---|
| GET | /v1/quota-usages | application/json | 
The table below shows this endpoint's support for blocking queries and required ACLs.
| Blocking Queries | ACL Required | 
|---|---|
| YES | quota:readnamespace:*if namespace has quota attached | 
Parameters
- prefix- (string: "")- Specifies a string to filter quota specifications on based on an index prefix. This is specified as a query string parameter.
Sample Request
$ curl \
    https://localhost:4646/v1/quota-usages
$ curl \
    https://localhost:4646/v1/quota-usages?prefix=sha
Sample Response
[
  {
    "Used": {
      "+kpaU440830Btn3/a0VUL4ROJCQyBOE55xwRR8rlFpc=": {
        "Region": "global",
        "RegionLimit": {
          "CPU": 500,
          "Cores": 0,
          "MemoryMB": 256,
          "MemoryMaxMB": 256,
          "DiskMB": 0,
          "IOPS": 0,
          "Networks": [
            {
              "CIDR": "",
              "Device": "",
              "DynamicPorts": null,
              "IP": "",
              "MBits": 50,
              "Mode": "",
              "ReservedPorts": null
            }
          ],
          "Devices": [
            {
              "Name": "nvidia/gpu/Tesla M60",
              "Count": 1,
              "Constraints": null,
              "Affinities": null
            }
          ],
          "NUMA": null,
          "SecretsMB": 0
        },
        "VariablesLimit": 0,
        "Hash": "+kpaU440830Btn3/a0VUL4ROJCQyBOE55xwRR8rlFpc="
      }
    },
    "Name": "default-quota",
    "CreateIndex": 11,
    "ModifyIndex": 38
  }
]
Read Quota Usage
This endpoint reads information about a specific quota usage.
| Method | Path | Produces | 
|---|---|---|
| GET | /v1/quota/usage/:quota | application/json | 
The table below shows this endpoint's support for blocking queries and required ACLs.
| Blocking Queries | ACL Required | 
|---|---|
| YES | quota:readnamespace:*if namespace has quota attached | 
Parameters
- :quota- (string: <required>)- Specifies the quota specification to query where the identifier is the quota's name.
Sample Request
$ curl \
    https://localhost:4646/v1/quota/usage/shared-quota
Sample Response
{
  "Used": {
    "+kpaU440830Btn3/a0VUL4ROJCQyBOE55xwRR8rlFpc=": {
      "Region": "global",
      "RegionLimit": {
        "CPU": 500,
        "Cores": 0,
        "MemoryMB": 256,
        "MemoryMaxMB": 256,
        "DiskMB": 0,
        "IOPS": 0,
        "Networks": [
          {
            "CIDR": "",
            "Device": "",
            "DynamicPorts": null,
            "IP": "",
            "MBits": 50,
            "Mode": "",
            "ReservedPorts": null
          }
        ],
        "Devices": [
          {
            "Name": "nvidia/gpu/Tesla M60",
            "Count": 1,
            "Constraints": null,
            "Affinities": null
          }
        ],
        "NUMA": null,
        "SecretsMB": 0
      },
      "VariablesLimit": 0,
      "Hash": "+kpaU440830Btn3/a0VUL4ROJCQyBOE55xwRR8rlFpc="
    }
  },
  "Name": "default-quota",
  "CreateIndex": 11,
  "ModifyIndex": 38
}