@@ -248,7 +248,7 @@ func GetExperimentList(pid string, in model.ListExperimentRequest, cred types.Cr
248
248
// GetExperimentRunsList sends GraphQL API request for fetching a list of experiment runs.
249
249
func GetExperimentRunsList (pid string , in model.ListExperimentRunRequest , cred types.Credentials ) (ExperimentRunListData , error ) {
250
250
251
- var gqlReq GetChaosExperimentRunGraphQLRequest
251
+ var gqlReq GetChaosExperimentRunsGraphQLRequest
252
252
var err error
253
253
254
254
gqlReq .Query = ListExperimentRunsQuery
@@ -295,6 +295,56 @@ func GetExperimentRunsList(pid string, in model.ListExperimentRunRequest, cred t
295
295
}
296
296
}
297
297
298
+ // GetExperimentRun sends GraphQL API request for fetching an experiment run.
299
+ func GetExperimentRun (pid string , nid string , cred types.Credentials ) (ExperimentRunData , error ) {
300
+
301
+ var gqlReq GetChaosExperimentRunGraphQLRequest
302
+ var err error
303
+
304
+ gqlReq .Query = ExperimentRunsQuery
305
+ gqlReq .Variables .ProjectID = pid
306
+ gqlReq .Variables .NotifyID = nid
307
+
308
+ query , err := json .Marshal (gqlReq )
309
+ if err != nil {
310
+ return ExperimentRunData {}, err
311
+ }
312
+
313
+ resp , err := apis .SendRequest (
314
+ apis.SendRequestParams {
315
+ Endpoint : cred .ServerEndpoint + utils .GQLAPIPath ,
316
+ Token : cred .Token ,
317
+ },
318
+ query ,
319
+ string (types .Post ),
320
+ )
321
+ if err != nil {
322
+ return ExperimentRunData {}, err
323
+ }
324
+
325
+ bodyBytes , err := io .ReadAll (resp .Body )
326
+ defer resp .Body .Close ()
327
+ if err != nil {
328
+ return ExperimentRunData {}, err
329
+ }
330
+
331
+ if resp .StatusCode == http .StatusOK {
332
+ var experimentRun ExperimentRunData
333
+ err = json .Unmarshal (bodyBytes , & experimentRun )
334
+ if err != nil {
335
+ return ExperimentRunData {}, err
336
+ }
337
+
338
+ if len (experimentRun .Errors ) > 0 {
339
+ return ExperimentRunData {}, errors .New (experimentRun .Errors [0 ].Message )
340
+ }
341
+
342
+ return experimentRun , nil
343
+ } else {
344
+ return ExperimentRunData {}, errors .New ("error while fetching the Chaos Experiment run" )
345
+ }
346
+ }
347
+
298
348
// DeleteChaosExperiment sends GraphQL API request for deleting a given Chaos Experiment.
299
349
func DeleteChaosExperiment (projectID string , experimentID * string , cred types.Credentials ) (DeleteChaosExperimentData , error ) {
300
350
@@ -346,3 +396,51 @@ func DeleteChaosExperiment(projectID string, experimentID *string, cred types.Cr
346
396
return DeleteChaosExperimentData {}, errors .New ("Error while deleting the Chaos Experiment" )
347
397
}
348
398
}
399
+
400
+ // GetPodLogs sends GraphQL API request for fetching logs for a given Chaos Experiment.
401
+ func GetPodLogs (podLogReq PodLogRequest , cred types.Credentials ) (PodLogData , error ) {
402
+
403
+ var gqlReq GetPodLogsGraphQLRequest
404
+ var err error
405
+
406
+ gqlReq .Query = GetPodLogsQuery
407
+ gqlReq .Variables .Request = podLogReq
408
+
409
+ query , err := json .Marshal (gqlReq )
410
+ if err != nil {
411
+ return PodLogData {}, err
412
+ }
413
+
414
+ resp , err := apis .SendRequest (
415
+ apis.SendRequestParams {
416
+ Endpoint : cred .ServerEndpoint + utils .GQLAPIPath ,
417
+ Token : cred .Token ,
418
+ },
419
+ query ,
420
+ string (types .Post ),
421
+ )
422
+ if err != nil {
423
+ return PodLogData {}, err
424
+ }
425
+ bodyBytes , err := io .ReadAll (resp .Body )
426
+ defer resp .Body .Close ()
427
+ if err != nil {
428
+ return PodLogData {}, err
429
+ }
430
+
431
+ if resp .StatusCode == http .StatusOK {
432
+ var podLogData PodLogData
433
+ err = json .Unmarshal (bodyBytes , & podLogData )
434
+ if err != nil {
435
+ return PodLogData {}, err
436
+ }
437
+
438
+ if len (podLogData .Errors ) > 0 {
439
+ return PodLogData {}, errors .New (podLogData .Errors [0 ].Message )
440
+ }
441
+
442
+ return podLogData , nil
443
+ } else {
444
+ return PodLogData {}, errors .New ("error while fetching logs" )
445
+ }
446
+ }
0 commit comments