Renderer: add version information (#34964)

* Renderer: add version information

* fix alerting test
This commit is contained in:
Agnès Toulet
2021-06-04 14:33:49 +03:00
committed by GitHub
parent b46715ee4a
commit 5f6c172b5a
6 changed files with 54 additions and 1 deletions
+33
View File
@@ -2,6 +2,7 @@ package rendering
import (
"context"
"encoding/json"
"errors"
"fmt"
"io"
@@ -192,3 +193,35 @@ func (rs *RenderingService) readFileResponse(ctx context.Context, resp *http.Res
return nil
}
func (rs *RenderingService) getRemotePluginVersion() (string, error) {
rendererURL, err := url.Parse(rs.Cfg.RendererUrl + "/version")
if err != nil {
return "", err
}
headers := make(map[string][]string)
resp, err := rs.doRequest(context.Background(), rendererURL, headers)
if err != nil {
return "", err
}
defer func() {
if err := resp.Body.Close(); err != nil {
rs.log.Warn("Failed to close response body", "err", err)
}
}()
if resp.StatusCode != http.StatusOK {
return "", fmt.Errorf("remote rendering request to get version failed, status code: %d, status: %s", resp.StatusCode,
resp.Status)
}
var info struct {
Version string
}
if err := json.NewDecoder(resp.Body).Decode(&info); err != nil {
return "", err
}
return info.Version, nil
}
+1
View File
@@ -60,6 +60,7 @@ type renderCSVFunc func(ctx context.Context, renderKey string, options CSVOpts)
type Service interface {
IsAvailable() bool
Version() string
Render(ctx context.Context, opts Opts) (*RenderResult, error)
RenderCSV(ctx context.Context, opts CSVOpts) (*RenderCSVResult, error)
RenderErrorImage(error error) (*RenderResult, error)
+14 -1
View File
@@ -47,6 +47,7 @@ type RenderingService struct {
renderCSVAction renderCSVFunc
domain string
inProgressCount int
version string
Cfg *setting.Cfg `inject:""`
RemoteCacheService *remotecache.RemoteCache `inject:""`
@@ -86,7 +87,14 @@ func (rs *RenderingService) Init() error {
func (rs *RenderingService) Run(ctx context.Context) error {
if rs.remoteAvailable() {
rs.log = rs.log.New("renderer", "http")
rs.log.Info("Backend rendering via external http server")
version, err := rs.getRemotePluginVersion()
if err != nil {
rs.log.Info("Couldn't get remote renderer version", "err", err)
}
rs.log.Info("Backend rendering via external http server", "version", version)
rs.version = version
rs.renderAction = rs.renderViaHTTP
rs.renderCSVAction = rs.renderCSVViaHTTP
<-ctx.Done()
@@ -101,6 +109,7 @@ func (rs *RenderingService) Run(ctx context.Context) error {
return err
}
rs.version = rs.pluginInfo.Info.Version
rs.renderAction = rs.renderViaPlugin
rs.renderCSVAction = rs.renderCSVViaPlugin
<-ctx.Done()
@@ -127,6 +136,10 @@ func (rs *RenderingService) IsAvailable() bool {
return rs.remoteAvailable() || rs.pluginAvailable()
}
func (rs *RenderingService) Version() string {
return rs.version
}
func (rs *RenderingService) RenderErrorImage(err error) (*RenderResult, error) {
imgUrl := "public/img/rendering_error.png"