@@ -248,7 +248,7 @@ func GetExperimentList(pid string, in model.ListExperimentRequest, cred types.Cr
248248// GetExperimentRunsList sends GraphQL API request for fetching a list of experiment runs.
249249func GetExperimentRunsList (pid string , in model.ListExperimentRunRequest , cred types.Credentials ) (ExperimentRunListData , error ) {
250250
251- var gqlReq GetChaosExperimentRunGraphQLRequest
251+ var gqlReq GetChaosExperimentRunsGraphQLRequest
252252 var err error
253253
254254 gqlReq .Query = ListExperimentRunsQuery
@@ -295,6 +295,56 @@ func GetExperimentRunsList(pid string, in model.ListExperimentRunRequest, cred t
295295 }
296296}
297297
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+
298348// DeleteChaosExperiment sends GraphQL API request for deleting a given Chaos Experiment.
299349func DeleteChaosExperiment (projectID string , experimentID * string , cred types.Credentials ) (DeleteChaosExperimentData , error ) {
300350
@@ -346,3 +396,51 @@ func DeleteChaosExperiment(projectID string, experimentID *string, cred types.Cr
346396 return DeleteChaosExperimentData {}, errors .New ("Error while deleting the Chaos Experiment" )
347397 }
348398}
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