Skip to content

Commit 5b3bae3

Browse files
committed
MEDIUM: runtime: add runtime server settings
This adds an endpoint that is used to show server's runtime (transient) settings, and change some of them.
1 parent 96a1412 commit 5b3bae3

File tree

4 files changed

+261
-2
lines changed

4 files changed

+261
-2
lines changed

build/haproxy_spec.yaml

Lines changed: 131 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2759,6 +2759,53 @@ definitions:
27592759
type: array
27602760
items:
27612761
$ref: "#/definitions/reload"
2762+
runtime_server:
2763+
description: Runtime transient server properties
2764+
example:
2765+
address: 127.0.0.5
2766+
admin_state: up
2767+
operational_state: up
2768+
port: 80
2769+
server_id: 1
2770+
server_name: web_server
2771+
properties:
2772+
address:
2773+
pattern: ^[^\s]+$
2774+
readOnly: true
2775+
type: string
2776+
x-nullable: false
2777+
admin_state:
2778+
enum:
2779+
- ready
2780+
- maint
2781+
- drain
2782+
type: string
2783+
id:
2784+
readOnly: true
2785+
type: string
2786+
name:
2787+
readOnly: true
2788+
type: string
2789+
operational_state:
2790+
enum:
2791+
- up
2792+
- down
2793+
- stopping
2794+
type: string
2795+
port:
2796+
maximum: 65535
2797+
minimum: 0
2798+
readOnly: true
2799+
type: integer
2800+
x-nullable: true
2801+
title: Runtime Server
2802+
type: object
2803+
runtime_servers:
2804+
title: HAProxy Runtime Servers Array
2805+
description: HAProxy runtime servers array
2806+
type: array
2807+
items:
2808+
$ref: "#/definitions/runtime_server"
27622809
balance:
27632810
properties:
27642811
algorithm:
@@ -6734,5 +6781,88 @@ paths:
67346781
summary: Return HAProxy process information
67356782
tags:
67366783
- Information
6737-
6784+
/services/haproxy/runtime/servers:
6785+
get:
6786+
description: Returns an array of all servers' runtime settings.
6787+
operationId: getRuntimeServers
6788+
parameters:
6789+
- description: Parent backend name
6790+
in: query
6791+
name: backend
6792+
required: true
6793+
type: string
6794+
responses:
6795+
"200":
6796+
description: Successful operation
6797+
schema:
6798+
$ref: '#/definitions/runtime_servers'
6799+
default:
6800+
$ref: '#/responses/DefaultError'
6801+
summary: Return an array of runtime servers' setings
6802+
tags:
6803+
- Server
6804+
- Backend options
6805+
/services/haproxy/runtime/servers/{name}:
6806+
get:
6807+
description: Returns one server runtime settings by it's name in the specified backend.
6808+
operationId: getRuntimeServer
6809+
parameters:
6810+
- description: Server name
6811+
in: path
6812+
name: name
6813+
required: true
6814+
type: string
6815+
- description: Parent backend name
6816+
in: query
6817+
name: backend
6818+
required: true
6819+
type: string
6820+
responses:
6821+
"200":
6822+
description: Successful operation
6823+
schema:
6824+
$ref: '#/definitions/runtime_server'
6825+
"404":
6826+
$ref: '#/responses/NotFound'
6827+
default:
6828+
$ref: '#/responses/DefaultError'
6829+
summary: Return one server runtime settings
6830+
tags:
6831+
- Server
6832+
- Backend options
6833+
put:
6834+
description: Replaces a server transient settings by it's name in the specified
6835+
backend.
6836+
operationId: replaceRuntimeServer
6837+
parameters:
6838+
- description: Server name
6839+
in: path
6840+
name: name
6841+
required: true
6842+
type: string
6843+
- description: Parent backend name
6844+
in: query
6845+
name: backend
6846+
required: true
6847+
type: string
6848+
- in: body
6849+
name: data
6850+
required: true
6851+
schema:
6852+
$ref: '#/definitions/runtime_server'
6853+
responses:
6854+
"200":
6855+
description: Server transient settings replaced
6856+
schema:
6857+
$ref: '#/definitions/runtime_server'
6858+
"400":
6859+
$ref: '#/responses/BadRequest'
6860+
"404":
6861+
$ref: '#/responses/NotFound'
6862+
default:
6863+
$ref: '#/responses/DefaultError'
6864+
summary: Replace server transient settings
6865+
tags:
6866+
- Server
6867+
- Backend options
67386868

haproxy-spec.yaml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,14 @@ definitions:
176176
type: array
177177
items:
178178
$ref: "#/definitions/reload"
179+
runtime_server:
180+
$ref: "models/runtime.yaml#/server"
181+
runtime_servers:
182+
title: HAProxy Runtime Servers Array
183+
description: HAProxy runtime servers array
184+
type: array
185+
items:
186+
$ref: "#/definitions/runtime_server"
179187
balance:
180188
$ref: "models/configuration.yaml#/balance"
181189
forwardfor:
@@ -411,4 +419,7 @@ paths:
411419
$ref: "paths/general.yaml#/runtime"
412420
/services/haproxy/runtime/info:
413421
$ref: "paths/runtime.yaml#/process_info"
414-
422+
/services/haproxy/runtime/servers:
423+
$ref: "paths/runtime.yaml#/servers"
424+
/services/haproxy/runtime/servers/{name}:
425+
$ref: "paths/runtime.yaml#/servers_one"

models/runtime.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,3 +212,38 @@ process_infos:
212212
processes: 4
213213
pid: 1234
214214
uptime: 8
215+
server:
216+
title: Runtime Server
217+
description: Runtime transient server properties
218+
type: object
219+
properties:
220+
id:
221+
type: string
222+
readOnly: true
223+
name:
224+
type: string
225+
readOnly: true
226+
address:
227+
type: string
228+
pattern: '^[^\s]+$'
229+
x-nullable: false
230+
readOnly: true
231+
port:
232+
type: integer
233+
x-nullable: true
234+
minimum: 0
235+
maximum: 65535
236+
readOnly: true
237+
operational_state:
238+
type: string
239+
enum: [up, down, stopping]
240+
admin_state:
241+
type: string
242+
enum: [ready, maint, drain]
243+
example:
244+
server_id: 1
245+
server_name: web_server
246+
address: 127.0.0.5
247+
port: 80
248+
operational_state: up
249+
admin_state: up

paths/runtime.yaml

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,86 @@ process_info:
1414
$ref: '#/definitions/process_infos'
1515
'default':
1616
$ref: '#/responses/DefaultError'
17+
servers:
18+
get:
19+
summary: Return an array of runtime servers' setings
20+
description: Returns an array of all servers' runtime settings.
21+
operationId: getRuntimeServers
22+
tags:
23+
- Server
24+
- Backend options
25+
parameters:
26+
- name: backend
27+
in: query
28+
description: Parent backend name
29+
required: true
30+
type: string
31+
responses:
32+
'200':
33+
description: Successful operation
34+
schema:
35+
$ref: "#/definitions/runtime_servers"
36+
'default':
37+
$ref: '#/responses/DefaultError'
38+
servers_one:
39+
get:
40+
summary: Return one server runtime settings
41+
description: Returns one server runtime settings by it's name in the specified backend.
42+
operationId: getRuntimeServer
43+
tags:
44+
- Server
45+
- Backend options
46+
parameters:
47+
- name: name
48+
in: path
49+
description: Server name
50+
required: true
51+
type: string
52+
- name: backend
53+
in: query
54+
description: Parent backend name
55+
required: true
56+
type: string
57+
responses:
58+
'200':
59+
description: Successful operation
60+
schema:
61+
$ref: "#/definitions/runtime_server"
62+
'404':
63+
$ref: '#/responses/NotFound'
64+
'default':
65+
$ref: '#/responses/DefaultError'
66+
put:
67+
summary: Replace server transient settings
68+
description: Replaces a server transient settings by it's name in the specified backend.
69+
operationId: replaceRuntimeServer
70+
tags:
71+
- Server
72+
- Backend options
73+
parameters:
74+
- name: name
75+
in: path
76+
description: Server name
77+
required: true
78+
type: string
79+
- name: backend
80+
in: query
81+
description: Parent backend name
82+
required: true
83+
type: string
84+
- name: data
85+
in: body
86+
required: true
87+
schema:
88+
$ref: '#/definitions/runtime_server'
89+
responses:
90+
'200':
91+
description: Server transient settings replaced
92+
schema:
93+
$ref: "#/definitions/runtime_server"
94+
'400':
95+
$ref: '#/responses/BadRequest'
96+
'404':
97+
$ref: '#/responses/NotFound'
98+
'default':
99+
$ref: '#/responses/DefaultError'

0 commit comments

Comments
 (0)