TP-27996 | use grafana api to fetch dashboard screenshot (#103)
* TP-27996 | use grafana api to fetch dashboard screenshot
This commit is contained in:
committed by
GitHub Enterprise
parent
93ab7fe9d0
commit
733bcea4bf
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user