in runner/runnergroup_result.go [17:68]
func GetRunnerGroupResult(ctx context.Context, kubecfgPath string, wait bool) (*types.RunnerGroupsReport, error) {
host, done, err := initPortForwardToServer(kubecfgPath)
if err != nil {
return nil, err
}
defer done()
targetURL := fmt.Sprintf("http://%s/v1/runnergroups/summary", host)
if wait {
targetURL += "?wait=true"
}
req, err := http.NewRequestWithContext(ctx, "GET", targetURL, nil)
if err != nil {
return nil, fmt.Errorf("failed to init GET request: %w", err)
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
return nil, fmt.Errorf("failed to access %s by portforward: %w", targetURL, err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
errInRaw, err := io.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("failed to read error message when http code = %v: %w",
resp.Status, err)
}
herr := types.HTTPError{}
err = json.Unmarshal(errInRaw, &herr)
if err != nil {
return nil, fmt.Errorf("failed to get error when http code = %v: %w",
resp.Status, err)
}
return nil, herr
}
dataInRaw, err := io.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("failed to read data: %w", err)
}
res := types.RunnerGroupsReport{}
err = json.Unmarshal(dataInRaw, &res)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal to get result: %w\n\n%s",
err, string(dataInRaw))
}
return &res, nil
}