blob: c088e585b040ee8b31248650dd478430d2ac4137 [file] [log] [blame] [view]
---
layout: documentation
---
# Weights
In Mesos, __weights__ can be used to control the relative share of cluster
resources that is offered to different [roles](roles.md).
In Mesos 0.28 and earlier, weights can only be configured by specifying
the `--weights` command-line flag when starting the Mesos master. If a
role does not have a weight specified in the `--weights` flag, then the default
value (1.0) will be used. Weights cannot be changed without updating the flag
and restarting all Mesos masters.
Mesos 1.0 contains a [/weights](endpoints/master/weights.md) operator endpoint
that allows weights to be changed at runtime. The `--weights` command-line flag
is deprecated.
# Operator HTTP Endpoint
The master `/weights` HTTP endpoint enables operators to configure weights. The
endpoint currently offers a REST-like interface and supports the following operations:
* [Updating](#putRequest) weights with PUT.
* [Querying](#getRequest) the currently set weights with GET.
The endpoint can optionally use authentication and authorization. See the
[authentication guide](authentication.md) for details.
<a name="putRequest"></a>
## Update
The operator can update the weights by sending an HTTP PUT request to the `/weights`
endpoint.
An example request to the `/weights` endpoint could look like this (using the
JSON file below):
$ curl -d @weights.json -X PUT http://<master-ip>:<port>/weights
For example, to set a weight of `2.0` for `role1` and set a weight of `3.5`
for `role2`, the operator can use the following `weights.json`:
[
{
"role": "role1",
"weight": 2.0
},
{
"role": "role2",
"weight": 3.5
}
]
If the master is configured with an explicit [role whitelist](roles.md), the
request is only valid if all specified roles exist in the role whitelist.
Weights are now persisted in the registry on cluster bootstrap and after any
updates. Once the weights are persisted in the registry, any Mesos master that
subsequently starts with `--weights` still specified will emit a warning and use
the registry value instead.
The operator will receive one of the following HTTP response codes:
* `200 OK`: Success (the update request was successful).
* `400 BadRequest`: Invalid arguments (e.g., invalid JSON, non-positive weights).
* `401 Unauthorized`: Unauthenticated request.
* `403 Forbidden`: Unauthorized request.
<a name="getRequest"></a>
## Query
The operator can query the configured weights by sending an HTTP GET request
to the `/weights` endpoint.
$ curl -X GET http://<master-ip>:<port>/weights
The response message body includes a JSON representation of the current
configured weights, for example:
[
{
"role": "role2",
"weight": 3.5
},
{
"role": "role1",
"weight": 2.0
}
]
The operator will receive one of the following HTTP response codes:
* `200 OK`: Success.
* `401 Unauthorized`: Unauthenticated request.