Merge pull request #12198 from grafana/11868_missing_phantom
enhance error message if phantomjs executable is not found
This commit is contained in:
@@ -3,7 +3,9 @@ package api
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
m "github.com/grafana/grafana/pkg/models"
|
m "github.com/grafana/grafana/pkg/models"
|
||||||
@@ -55,6 +57,15 @@ func (hs *HTTPServer) RenderToPng(c *m.ReqContext) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err != nil && err == rendering.ErrPhantomJSNotInstalled {
|
||||||
|
if strings.HasPrefix(runtime.GOARCH, "arm") {
|
||||||
|
c.Handle(500, "Rendering failed - PhantomJS isn't included in arm build per default", err)
|
||||||
|
} else {
|
||||||
|
c.Handle(500, "Rendering failed - PhantomJS isn't installed correctly", err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Handle(500, "Rendering failed.", err)
|
c.Handle(500, "Rendering failed.", err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
var ErrTimeout = errors.New("Timeout error. You can set timeout in seconds with &timeout url parameter")
|
var ErrTimeout = errors.New("Timeout error. You can set timeout in seconds with &timeout url parameter")
|
||||||
var ErrNoRenderer = errors.New("No renderer plugin found nor is an external render server configured")
|
var ErrNoRenderer = errors.New("No renderer plugin found nor is an external render server configured")
|
||||||
|
var ErrPhantomJSNotInstalled = errors.New("PhantomJS executable not found")
|
||||||
|
|
||||||
type Opts struct {
|
type Opts struct {
|
||||||
Width int
|
Width int
|
||||||
|
|||||||
@@ -24,6 +24,11 @@ func (rs *RenderingService) renderViaPhantomJS(ctx context.Context, opts Opts) (
|
|||||||
|
|
||||||
url := rs.getURL(opts.Path)
|
url := rs.getURL(opts.Path)
|
||||||
binPath, _ := filepath.Abs(filepath.Join(rs.Cfg.PhantomDir, executable))
|
binPath, _ := filepath.Abs(filepath.Join(rs.Cfg.PhantomDir, executable))
|
||||||
|
if _, err := os.Stat(binPath); os.IsNotExist(err) {
|
||||||
|
rs.log.Error("executable not found", "executable", binPath)
|
||||||
|
return nil, ErrPhantomJSNotInstalled
|
||||||
|
}
|
||||||
|
|
||||||
scriptPath, _ := filepath.Abs(filepath.Join(rs.Cfg.PhantomDir, "render.js"))
|
scriptPath, _ := filepath.Abs(filepath.Join(rs.Cfg.PhantomDir, "render.js"))
|
||||||
pngPath := rs.getFilePathForNewImage()
|
pngPath := rs.getFilePathForNewImage()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user