TP-27996 | use grafana api to fetch dashboard screenshot (#103)

* TP-27996 | use grafana api to fetch dashboard screenshot
This commit is contained in:
Tushar Kumar Saha
2023-06-20 11:03:40 +05:30
committed by GitHub Enterprise
parent 93ab7fe9d0
commit 733bcea4bf

View File

@@ -11,7 +11,9 @@ import (
"houston/internal/diagnostic/repository"
"houston/pkg/s3"
"image"
"io"
"log"
"net/http"
"os"
"path/filepath"
"time"
@@ -35,11 +37,39 @@ func TakeScreenshotAndUpload(logger *zap.Logger, repo *repository.Repository, al
logger.Info("taking screenshot")
fileLinkList := make([]string, 0)
for _, links := range grafanaLinks {
takeScreenShot(logger, &fileLinkList, links.EndpointUrl)
takeScreenShotUrl(logger, &fileLinkList, links.EndpointUrl)
}
return fileLinkList
}
func takeScreenShotUrl(logger *zap.Logger, fileList *[]string, url string) {
req, err := http.NewRequest("GET", url, nil)
if err != nil {
logger.Error(err.Error())
}
token := fmt.Sprintf("Bearer %s", viper.GetString("grafana.token"))
req.Header.Set("Authorization", token)
resp, err := http.DefaultClient.Do(req)
if err != nil {
logger.Error(err.Error())
}
id := uuid.New()
if err := os.MkdirAll("images", os.ModePerm); err != nil {
logger.Error(err.Error())
}
fileName := "images/" + id.String() + ".jpg"
file, err := os.Create(fileName)
if err != nil {
logger.Error(err.Error())
}
defer file.Close()
_, err = io.Copy(file, resp.Body)
link := upload(logger, fileName)
os.Remove(fileName)
*fileList = append(*fileList, link)
}
func takeScreenShot(logger *zap.Logger, fileList *[]string, url string) {
ctx, cancel := chromedp.NewContext(context.Background())
defer cancel()