Chore: Ensure BuildVersion is set when using CDN (#79169)

pull/79192/head
Todd Treece 1 year ago committed by GitHub
parent c4c9bfaf2e
commit ea36336c0a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      pkg/api/index.go
  2. 17
      pkg/setting/setting.go
  3. 52
      pkg/setting/setting_test.go

@ -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…
Cancel
Save