mirror of
https://github.com/grafana/grafana.git
synced 2026-08-13 06:34:55 -05:00
Renderer: add version information (#34964)
* Renderer: add version information * fix alerting test
This commit is contained in:
@@ -67,6 +67,7 @@ export class GrafanaBootConfig implements GrafanaConfig {
|
||||
};
|
||||
licenseInfo: LicenseInfo = {} as LicenseInfo;
|
||||
rendererAvailable = false;
|
||||
rendererVersion = '';
|
||||
http2Enabled = false;
|
||||
dateFormats?: SystemDateFormatSettings;
|
||||
sentry = {
|
||||
|
||||
@@ -241,6 +241,7 @@ func (hs *HTTPServer) getFrontendSettingsMap(c *models.ReqContext) (map[string]i
|
||||
},
|
||||
"featureToggles": hs.Cfg.FeatureToggles,
|
||||
"rendererAvailable": hs.RenderService.IsAvailable(),
|
||||
"rendererVersion": hs.RenderService.Version(),
|
||||
"http2Enabled": hs.Cfg.Protocol == setting.HTTP2Scheme,
|
||||
"sentry": hs.Cfg.Sentry,
|
||||
"pluginCatalogURL": hs.Cfg.PluginCatalogURL,
|
||||
|
||||
@@ -377,6 +377,10 @@ func (s *testRenderService) GetRenderUser(key string) (*rendering.RenderUser, bo
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func (s *testRenderService) Version() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
var _ rendering.Service = &testRenderService{}
|
||||
|
||||
type testImageUploader struct {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user