enhance error message if phantomjs executable is not found

if arm build, explain that phantomjs is not included by default in arm
builds. If not explain that phantom js isn't installed correctly
pull/12198/head
Marcus Efraimsson 8 years ago
parent 132df4553c
commit f106de0efd
No known key found for this signature in database
GPG Key ID: EBFE0FB04612DD4A
  1. 11
      pkg/api/render.go
  2. 1
      pkg/services/rendering/interface.go
  3. 5
      pkg/services/rendering/phantomjs.go

@ -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()

Loading…
Cancel
Save