forked from solo-io/squash
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapi.yaml
314 lines (310 loc) · 9.16 KB
/
api.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
swagger: "2.0"
info:
description: "Squash debugget api sample."
version: "1.0.0"
title: "Squash Server"
contact:
email: "[email protected]"
license:
name: "Apache 2.0"
url: "http://www.apache.org/licenses/LICENSE-2.0.html"
basePath: "/api/v1"
tags:
- name: "debugconfig"
description: "Everything about your debugconfig"
externalDocs:
description: "Find out more"
url: "http://swagger.io"
- name: "debugsessions"
description: "Everything about your debug sessions"
schemes:
- "http"
paths:
/debugconfig:
post:
tags:
- "debugconfig"
summary: "Add a new debug configuration for squash server."
description: >
Add a debug config to squash. A debug config instrucs squash what containers should be debugged, and now.
DebugConfig object consists of:
- Attachment: The object we are attaching to. either a specific container, or a service.
in the case of the service, the squash will attach to the first container that hits a debug event.
- Breakpoints: A list of breakpoints. When "immediately" set to false, squash will wait for a debug event
(i.e a program crash) before giving the user access to the remote debugger. If breakpoints is set, squash will place them and will notify when the first breakpoint hits.
- image: The container image we are debugging. this is used for extra validation, as placing breakpoints on the wrong binary can lead to unexpected results.
- debugger: Type of debugger to use. "dlv" and "gdb" are supported now.
- immediately: Weather to attach immediatly or wait for debug event. can only be set to true if attachment type is container.
operationId: "addDebugConfig"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "DebugConfig object that needs to be added"
required: true
schema:
$ref: "#/definitions/DebugConfig"
responses:
201:
description: "Debug config created"
schema:
$ref: "#/definitions/DebugConfig"
400:
description: "Bad request"
404:
description: "Attachment not found"
422:
description: "Invalid input"
503:
description: "Service Unavailable"
get:
tags:
- "debugconfig"
summary: "Return all debug configs"
description: "Return all debug configs"
operationId: "getDebugConfigs"
responses:
200:
description: OK
schema:
type: "array"
items:
$ref: "#/definitions/DebugConfig"
400:
description: "Invalid ID supplied"
404:
description: "Debug config not found"
422:
description: "Validation exception"
/debugconfig/{debugConfigId}:
patch:
tags:
- "debugconfig"
summary: "Update an existing debug config"
description: ""
operationId: "updateDebugConfig"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "debugConfigId"
in: "path"
description: "ID of config to return"
required: true
type: "string"
- in: "body"
name: "body"
description: "debug config edited"
required: true
schema:
$ref: "#/definitions/DebugConfig"
responses:
200:
description: OK
schema:
$ref: "#/definitions/DebugConfig"
400:
description: "Invalid ID supplied"
404:
description: "Debug config not found"
422:
description: "Validation exception"
delete:
tags:
- "debugconfig"
summary: "Delete a debug config"
description: "Delete a debug config"
operationId: "deleteDebugConfig"
parameters:
- name: "debugConfigId"
in: "path"
description: "ID of config to return"
required: true
type: "string"
responses:
200:
description: OK
400:
description: "Invalid ID supplied"
404:
description: "Debug config not found"
422:
description: "Validation exception"
get:
tags:
- "debugconfig"
summary: "Return a debug config"
description: "Return a debug config"
operationId: "getDebugConfig"
parameters:
- name: "debugConfigId"
in: "path"
description: "ID of config to return"
required: true
type: "string"
responses:
200:
description: OK
schema:
$ref: "#/definitions/DebugConfig"
400:
description: "Invalid ID supplied"
404:
description: "Debug config not found"
422:
description: "Validation exception"
/debugconfig/platform/containers/{node}/latest:
delete:
tags:
- "debugconfig"
summary: "Pop the latest debugconfig for a node in the cluster - this is used by the squash client."
description: ""
operationId: "popContainerToDebug"
parameters:
- name: "node"
in: "path"
description: "ID the node we are watching"
required: true
type: "string"
responses:
200:
description: OK
schema:
$ref: "#/definitions/DebugConfig"
400:
description: "Invalid ID supplied"
404:
description: "Node note not found"
408:
description: "Timeout reached"
/debugconfig/{debugConfigId}/session:
put:
tags:
- "debugsessions"
summary: "Add a new debug session - this is used by the squash client."
description: >
When a debugger is attached, it should create a new debug session object under the debug config
that caused the debug session. Only one debug session is allowed per debug config. Once a
session is added, The service will stop being watched, and new debug configs for the same service can be created again.
operationId: "putDebugSession"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "debugConfigId"
in: "path"
description: "debug config id."
required: true
type: "string"
- name: "body"
in: "body"
description: "the debug session."
required: true
schema:
$ref: "#/definitions/DebugSession"
responses:
201:
description: "Debug session created"
schema:
$ref: "#/definitions/DebugSession"
400:
description: "Invalid ID supplied"
404:
description: "debug config not found"
422:
description: "Invalid input"
412:
description: "Debug state currently exists"
delete:
tags:
- "debugsessions"
summary: "Wait and for a debug session is available. when it is available it is returned and deleted"
description: >
Long-poll and wait for a debug session to arrive.
The squash client will add a debug session to the debug config once a container associated with this
debug config generated a debug event.
operationId: "popDebugSession"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "debugConfigId"
in: "path"
description: "debug config id."
required: true
type: "string"
- name: "X-Timeout"
in: "header"
type: number
responses:
200:
description: "Debug session returned"
schema:
$ref: "#/definitions/DebugSession"
400:
description: "Invalid ID supplied"
404:
description: "debug config not found"
408:
description: "Timeout reached"
definitions:
Attachment:
type: "object"
required:
- "type"
- "name"
properties:
type:
type: "string"
enum: ["service", "container"]
name:
type: "string"
Breakpoint:
type: "object"
required:
- "location"
properties:
location:
type: "string"
DebugConfig:
type: "object"
required:
- "attachment"
- "image"
properties:
id:
type: "string"
attachment:
$ref: "#/definitions/Attachment"
breakpoints:
type: "array"
items:
$ref: "#/definitions/Breakpoint"
image:
type: "string"
debugger:
type: "string"
immediately:
type: "boolean"
active:
type: "boolean"
attached:
type: "boolean"
DebugSession:
type: "object"
required:
- "debugConfigId"
properties:
url:
type: "string"
debugConfigId:
type: "string"
externalDocs:
description: "Find out more about Squash"
url: "https://github.com/solo-io/squash"