API: split types for Resources Reservations and Limits
This introduces A new type (`Limit`), which allows Limits and "Reservations" to have different options, as it's not possible to make "Reservations" for some kind of limits. The `GenericResources` have been removed from the new type; the API did not handle specifying `GenericResources` as a _Limit_ (only as _Reservations_), and this field would therefore always be empty (omitted) in the `Limits` case. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
327a0b4ae4
commit
84748c7d4e
3 changed files with 25 additions and 4 deletions
|
@ -625,6 +625,20 @@ definitions:
|
|||
type: "integer"
|
||||
format: "int64"
|
||||
|
||||
Limit:
|
||||
description: |
|
||||
An object describing a limit on resources which can be requested by a task.
|
||||
type: "object"
|
||||
properties:
|
||||
NanoCPUs:
|
||||
type: "integer"
|
||||
format: "int64"
|
||||
example: 4000000000
|
||||
MemoryBytes:
|
||||
type: "integer"
|
||||
format: "int64"
|
||||
example: 8272408576
|
||||
|
||||
ResourceObject:
|
||||
description: |
|
||||
An object describing the resources which can be advertised by a node and
|
||||
|
@ -3262,7 +3276,7 @@ definitions:
|
|||
properties:
|
||||
Limits:
|
||||
description: "Define resources limits."
|
||||
$ref: "#/definitions/ResourceObject"
|
||||
$ref: "#/definitions/Limit"
|
||||
Reservation:
|
||||
description: "Define resources reservation."
|
||||
$ref: "#/definitions/ResourceObject"
|
||||
|
|
|
@ -91,13 +91,20 @@ type TaskSpec struct {
|
|||
Runtime RuntimeType `json:",omitempty"`
|
||||
}
|
||||
|
||||
// Resources represents resources (CPU/Memory).
|
||||
// Resources represents resources (CPU/Memory) which can be advertised by a
|
||||
// node and requested to be reserved for a task.
|
||||
type Resources struct {
|
||||
NanoCPUs int64 `json:",omitempty"`
|
||||
MemoryBytes int64 `json:",omitempty"`
|
||||
GenericResources []GenericResource `json:",omitempty"`
|
||||
}
|
||||
|
||||
// Limit describes limits on resources which can be requested by a task.
|
||||
type Limit struct {
|
||||
NanoCPUs int64 `json:",omitempty"`
|
||||
MemoryBytes int64 `json:",omitempty"`
|
||||
}
|
||||
|
||||
// GenericResource represents a "user defined" resource which can
|
||||
// be either an integer (e.g: SSD=3) or a string (e.g: SSD=sda1)
|
||||
type GenericResource struct {
|
||||
|
@ -125,7 +132,7 @@ type DiscreteGenericResource struct {
|
|||
|
||||
// ResourceRequirements represents resources requirements.
|
||||
type ResourceRequirements struct {
|
||||
Limits *Resources `json:",omitempty"`
|
||||
Limits *Limit `json:",omitempty"`
|
||||
Reservations *Resources `json:",omitempty"`
|
||||
}
|
||||
|
||||
|
|
|
@ -401,7 +401,7 @@ func resourcesFromGRPC(res *swarmapi.ResourceRequirements) *types.ResourceRequir
|
|||
if res != nil {
|
||||
resources = &types.ResourceRequirements{}
|
||||
if res.Limits != nil {
|
||||
resources.Limits = &types.Resources{
|
||||
resources.Limits = &types.Limit{
|
||||
NanoCPUs: res.Limits.NanoCPUs,
|
||||
MemoryBytes: res.Limits.MemoryBytes,
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue