in pkg/plugin/plugin.go [144:188]
func (d *CloudTraceDatasource) CallResource(ctx context.Context, req *backend.CallResourceRequest, sender backend.CallResourceResponseSender) error {
// log.DefaultLogger.Info("CallResource called")
var body []byte
// Right now we only support calls to `gceDefaultProject` and `/projects`
resource := req.Path
if resource == "gceDefaultProject" {
proj, err := utils.GCEDefaultProject(ctx, "")
if err != nil {
log.DefaultLogger.Warn("problem getting GCE default project", "error", err)
}
body, err = json.Marshal(proj)
if err != nil {
return sender.Send(&backend.CallResourceResponse{
Status: http.StatusInternalServerError,
Body: []byte(`Unable to create response`),
})
}
} else if strings.ToLower(resource) != "projects" {
return sender.Send(&backend.CallResourceResponse{
Status: http.StatusNotFound,
Body: []byte(`No such path`),
})
} else {
projects, err := d.client.ListProjects(ctx)
if err != nil {
log.DefaultLogger.Warn("problem listing projects", "error", err)
}
body, err = json.Marshal(projects)
if err != nil {
return sender.Send(&backend.CallResourceResponse{
Status: http.StatusInternalServerError,
Body: []byte(`Unable to create response`),
})
}
}
return sender.Send(&backend.CallResourceResponse{
Status: http.StatusOK,
Body: body,
})
}