port GetLayout and AddLayout

This commit is contained in:
Quentin 2023-11-22 15:24:30 +01:00
parent 9b24d7c402
commit e3cd6ed530
Signed by: quentin
GPG key ID: E9602264D639FF68

View file

@ -167,25 +167,26 @@ paths:
Note that setting the capacity to `null` will configure the node as a gateway. Note that setting the capacity to `null` will configure the node as a gateway.
requestBody: requestBody:
description: | description: |
To add a new node to the layout or to change the configuration of an existing node, simply set the values you want. To add a new node to the layout or to change the configuration of an existing node, simply set the values you want (`zone`, `capacity`, and `tags`).
To remove a node, set it to `null` instead of passing a configuration object. To remove a node, simply pass the `remove: true` field.
This logic is represented in OpenAPI with a "One Of" object.
Contrary to the CLI that may update only a subset of the fields capacity, zone and tags, when calling this API all of these values must be specified. Contrary to the CLI that may update only a subset of the fields capacity, zone and tags, when calling this API all of these values must be specified.
required: true required: true
content: content:
application/json: application/json:
schema: schema:
type: object type: array
example: example:
"e2ee7984ee65b260682086ec70026165903c86e601a4a5a501c1900afe28d84b": - id: "e2ee7984ee65b260682086ec70026165903c86e601a4a5a501c1900afe28d84b"
zone: "geneva" zone: "geneva"
capacity: 4 capacity: 8
tags: tags:
- gateway - gateway
"4a6ae5a1d0d33bf895f5bb4f0a418b7dc94c47c0dd2eb108d1158f3c8f60b0ff": - id: "4a6ae5a1d0d33bf895f5bb4f0a418b7dc94c47c0dd2eb108d1158f3c8f60b0ff"
remove: true
additionalProperties: items:
$ref: '#/components/schemas/NodeClusterInfo' $ref: '#/components/schemas/NodeRoleChange'
responses: responses:
'500': '500':
description: "The server can not handle your request. Check your connectivity with the rest of the cluster." description: "The server can not handle your request. Check your connectivity with the rest of the cluster."
@ -193,6 +194,10 @@ paths:
description: "Invalid syntax or requested change" description: "Invalid syntax or requested change"
'200': '200':
description: "The layout modification has been correctly staged" description: "The layout modification has been correctly staged"
content:
application/json:
schema:
$ref: '#/components/schemas/ClusterLayout'
/layout/apply: /layout/apply:
post: post:
@ -1065,6 +1070,42 @@ components:
- fast - fast
items: items:
type: string type: string
NodeRoleChange:
oneOf:
- $ref: '#/components/schemas/NodeRoleRemove'
- $ref: '#/components/schemas/NodeRoleUpdate'
NodeRoleRemove:
type: object
required: [ remove ]
properties:
id:
type: string
example: "6a8e08af2aab1083ebab9b22165ea8b5b9d333b60a39ecd504e85cc1f432c36f"
remove:
type: bool
example: true
NodeRoleUpdate:
type: object
required: [ zone, capacity, tags ]
properties:
id:
type: string
example: "6a8e08af2aab1083ebab9b22165ea8b5b9d333b60a39ecd504e85cc1f432c36f"
zone:
type: string
example: "dc1"
capacity:
type: integer
nullable: true
example: 150
tags:
type: array
items:
type: string
example:
- gateway
- fast
ClusterLayout: ClusterLayout:
type: object type: object
required: [ version, roles, stagedRoleChanges ] required: [ version, roles, stagedRoleChanges ]
@ -1093,11 +1134,13 @@ components:
example: example:
- id: "e2ee7984ee65b260682086ec70026165903c86e601a4a5a501c1900afe28d84b" - id: "e2ee7984ee65b260682086ec70026165903c86e601a4a5a501c1900afe28d84b"
zone: "geneva" zone: "geneva"
capacity: 4 capacity: 8
tags: tags:
- gateway - gateway
- id: "4a6ae5a1d0d33bf895f5bb4f0a418b7dc94c47c0dd2eb108d1158f3c8f60b0ff"
remove: true
items: items:
$ref: '#/components/schemas/NodeClusterInfo' $ref: '#/components/schemas/NodeRoleChange'
LayoutVersion: LayoutVersion:
type: object type: object
properties: properties: