mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: Ensure BuildVersion is set when using CDN (#79169)
This commit is contained in:
parent
c4c9bfaf2e
commit
ea36336c0a
@ -99,6 +99,10 @@ func (hs *HTTPServer) setIndexViewData(c *contextmodel.ReqContext) (*dtos.IndexV
|
||||
|
||||
hasAccess := ac.HasAccess(hs.AccessControl, c)
|
||||
hasEditPerm := hasAccess(ac.EvalAny(ac.EvalPermission(dashboards.ActionDashboardsCreate), ac.EvalPermission(dashboards.ActionFoldersCreate)))
|
||||
cdnURL, err := hs.Cfg.GetContentDeliveryURL(hs.License.ContentDeliveryPrefix())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
data := dtos.IndexViewData{
|
||||
User: &dtos.CurrentUser{
|
||||
@ -144,7 +148,7 @@ func (hs *HTTPServer) setIndexViewData(c *contextmodel.ReqContext) (*dtos.IndexV
|
||||
AppTitle: "Grafana",
|
||||
NavTree: navTree,
|
||||
Nonce: c.RequestNonce,
|
||||
ContentDeliveryURL: hs.Cfg.GetContentDeliveryURL(hs.License.ContentDeliveryPrefix()),
|
||||
ContentDeliveryURL: cdnURL,
|
||||
LoadingLogo: "public/img/grafana_icon.svg",
|
||||
IsDevelopmentEnv: hs.Cfg.Env == setting.Dev,
|
||||
Assets: assets,
|
||||
|
@ -1988,16 +1988,17 @@ func (cfg *Cfg) readServerSettings(iniFile *ini.File) error {
|
||||
}
|
||||
|
||||
// GetContentDeliveryURL returns full content delivery URL with /<edition>/<version> added to URL
|
||||
func (cfg *Cfg) GetContentDeliveryURL(prefix string) string {
|
||||
if cfg.CDNRootURL != nil {
|
||||
url := *cfg.CDNRootURL
|
||||
preReleaseFolder := ""
|
||||
|
||||
url.Path = path.Join(url.Path, prefix, preReleaseFolder, cfg.BuildVersion)
|
||||
return url.String() + "/"
|
||||
func (cfg *Cfg) GetContentDeliveryURL(prefix string) (string, error) {
|
||||
if cfg.CDNRootURL == nil {
|
||||
return "", nil
|
||||
}
|
||||
if cfg.BuildVersion == "" {
|
||||
return "", errors.New("BuildVersion is not set")
|
||||
}
|
||||
url := *cfg.CDNRootURL
|
||||
|
||||
return ""
|
||||
url.Path = path.Join(url.Path, prefix, cfg.BuildVersion)
|
||||
return url.String() + "/", nil
|
||||
}
|
||||
|
||||
func (cfg *Cfg) readDataSourcesSettings() {
|
||||
|
@ -384,19 +384,33 @@ func TestAuthDurationSettings(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGetCDNPath(t *testing.T) {
|
||||
var err error
|
||||
cfg := NewCfg()
|
||||
cfg.BuildVersion = "v7.5.0-11124"
|
||||
cfg.CDNRootURL, err = url.Parse("http://cdn.grafana.com")
|
||||
require.NoError(t, err)
|
||||
t.Run("should return CDN url as expected", func(t *testing.T) {
|
||||
var (
|
||||
err error
|
||||
actual string
|
||||
)
|
||||
cfg := NewCfg()
|
||||
cfg.BuildVersion = "v7.5.0-11124"
|
||||
cfg.CDNRootURL, err = url.Parse("http://cdn.grafana.com")
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, "http://cdn.grafana.com/grafana-oss/v7.5.0-11124/", cfg.GetContentDeliveryURL("grafana-oss"))
|
||||
require.Equal(t, "http://cdn.grafana.com/grafana/v7.5.0-11124/", cfg.GetContentDeliveryURL("grafana"))
|
||||
}
|
||||
actual, err = cfg.GetContentDeliveryURL("grafana-oss")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "http://cdn.grafana.com/grafana-oss/v7.5.0-11124/", actual)
|
||||
actual, err = cfg.GetContentDeliveryURL("grafana")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "http://cdn.grafana.com/grafana/v7.5.0-11124/", actual)
|
||||
})
|
||||
|
||||
func TestGetContentDeliveryURLWhenNoCDNRootURLIsSet(t *testing.T) {
|
||||
cfg := NewCfg()
|
||||
require.Equal(t, "", cfg.GetContentDeliveryURL("grafana-oss"))
|
||||
t.Run("should error if BuildVersion is not set", func(t *testing.T) {
|
||||
var err error
|
||||
cfg := NewCfg()
|
||||
cfg.CDNRootURL, err = url.Parse("http://cdn.grafana.com")
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = cfg.GetContentDeliveryURL("grafana")
|
||||
require.Error(t, err)
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetCDNPathWithPreReleaseVersionAndSubPath(t *testing.T) {
|
||||
@ -405,8 +419,12 @@ func TestGetCDNPathWithPreReleaseVersionAndSubPath(t *testing.T) {
|
||||
cfg.BuildVersion = "v7.5.0-11124pre"
|
||||
cfg.CDNRootURL, err = url.Parse("http://cdn.grafana.com/sub")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "http://cdn.grafana.com/sub/grafana-oss/v7.5.0-11124pre/", cfg.GetContentDeliveryURL("grafana-oss"))
|
||||
require.Equal(t, "http://cdn.grafana.com/sub/grafana/v7.5.0-11124pre/", cfg.GetContentDeliveryURL("grafana"))
|
||||
actual, err := cfg.GetContentDeliveryURL("grafana-oss")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "http://cdn.grafana.com/sub/grafana-oss/v7.5.0-11124pre/", actual)
|
||||
actual, err = cfg.GetContentDeliveryURL("grafana")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "http://cdn.grafana.com/sub/grafana/v7.5.0-11124pre/", actual)
|
||||
}
|
||||
|
||||
// Adding a case for this in case we switch to proper semver version strings
|
||||
@ -416,8 +434,12 @@ func TestGetCDNPathWithAlphaVersion(t *testing.T) {
|
||||
cfg.BuildVersion = "v7.5.0-alpha.11124"
|
||||
cfg.CDNRootURL, err = url.Parse("http://cdn.grafana.com")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "http://cdn.grafana.com/grafana-oss/v7.5.0-alpha.11124/", cfg.GetContentDeliveryURL("grafana-oss"))
|
||||
require.Equal(t, "http://cdn.grafana.com/grafana/v7.5.0-alpha.11124/", cfg.GetContentDeliveryURL("grafana"))
|
||||
actual, err := cfg.GetContentDeliveryURL("grafana-oss")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "http://cdn.grafana.com/grafana-oss/v7.5.0-alpha.11124/", actual)
|
||||
actual, err = cfg.GetContentDeliveryURL("grafana")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "http://cdn.grafana.com/grafana/v7.5.0-alpha.11124/", actual)
|
||||
}
|
||||
|
||||
func TestAlertingEnabled(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user