mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Settings: Actually deprecate access to feature flags (#78073)
This commit is contained in:
parent
4a3c148298
commit
dec9a07738
@ -33,6 +33,7 @@ import (
|
||||
func setupTestEnvironment(t *testing.T, cfg *setting.Cfg, features *featuremgmt.FeatureManager, pstore pluginstore.Store, psettings pluginsettings.Service) (*web.Mux, *HTTPServer) {
|
||||
t.Helper()
|
||||
db.InitTestDB(t)
|
||||
// nolint:staticcheck
|
||||
cfg.IsFeatureToggleEnabled = features.IsEnabled
|
||||
|
||||
{
|
||||
|
@ -73,6 +73,7 @@ func ProvideManagerService(cfg *setting.Cfg, licensing licensing.Licensing) (*Fe
|
||||
mgmt.update()
|
||||
|
||||
// Minimum approach to avoid circular dependency
|
||||
// nolint:staticcheck
|
||||
cfg.IsFeatureToggleEnabled = mgmt.IsEnabled
|
||||
return mgmt, nil
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ type config struct {
|
||||
logLevel int
|
||||
}
|
||||
|
||||
func newConfig(cfg *setting.Cfg) *config {
|
||||
func newConfig(cfg *setting.Cfg, features featuremgmt.FeatureToggles) *config {
|
||||
defaultLogLevel := 0
|
||||
ip := net.ParseIP(cfg.HTTPAddr)
|
||||
apiURL := cfg.AppURL
|
||||
@ -46,7 +46,7 @@ func newConfig(cfg *setting.Cfg) *config {
|
||||
host := fmt.Sprintf("%s:%d", ip, port)
|
||||
|
||||
return &config{
|
||||
enabled: cfg.IsFeatureToggleEnabled(featuremgmt.FlagGrafanaAPIServer),
|
||||
enabled: features.IsEnabled(featuremgmt.FlagGrafanaAPIServer),
|
||||
devMode: cfg.Env == setting.Dev,
|
||||
dataPath: filepath.Join(cfg.DataPath, "grafana-apiserver"),
|
||||
ip: ip,
|
||||
|
@ -11,8 +11,7 @@ import (
|
||||
)
|
||||
|
||||
func TestNewConfig(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
cfg := setting.NewCfgWithFeatures(featuremgmt.WithFeatures(featuremgmt.FlagGrafanaAPIServer).IsEnabled)
|
||||
cfg := setting.NewCfg()
|
||||
cfg.Env = setting.Prod
|
||||
cfg.DataPath = "/tmp/grafana"
|
||||
cfg.HTTPAddr = "10.0.0.1"
|
||||
@ -23,7 +22,7 @@ func TestNewConfig(t *testing.T) {
|
||||
section.Key("log_level").SetValue("5")
|
||||
section.Key("etcd_servers").SetValue("http://localhost:2379")
|
||||
|
||||
actual := newConfig(cfg)
|
||||
actual := newConfig(cfg, featuremgmt.WithFeatures(featuremgmt.FlagGrafanaAPIServer))
|
||||
|
||||
expected := &config{
|
||||
enabled: true,
|
||||
|
@ -34,6 +34,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/modules"
|
||||
"github.com/grafana/grafana/pkg/registry"
|
||||
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
|
||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||
filestorage "github.com/grafana/grafana/pkg/services/grafana-apiserver/storage/file"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
)
|
||||
@ -113,12 +114,13 @@ type service struct {
|
||||
|
||||
func ProvideService(
|
||||
cfg *setting.Cfg,
|
||||
features featuremgmt.FeatureToggles,
|
||||
rr routing.RouteRegister,
|
||||
authz authorizer.Authorizer,
|
||||
tracing *tracing.TracingService,
|
||||
) (*service, error) {
|
||||
s := &service{
|
||||
config: newConfig(cfg),
|
||||
config: newConfig(cfg, features),
|
||||
rr: rr,
|
||||
stopCh: make(chan struct{}),
|
||||
builders: []APIGroupBuilder{},
|
||||
|
@ -38,12 +38,14 @@ type gPRCServerService struct {
|
||||
logger log.Logger
|
||||
server *grpc.Server
|
||||
address string
|
||||
enabled bool
|
||||
}
|
||||
|
||||
func ProvideService(cfg *setting.Cfg, authenticator interceptors.Authenticator, tracer tracing.Tracer, registerer prometheus.Registerer) (Provider, error) {
|
||||
func ProvideService(cfg *setting.Cfg, features featuremgmt.FeatureToggles, authenticator interceptors.Authenticator, tracer tracing.Tracer, registerer prometheus.Registerer) (Provider, error) {
|
||||
s := &gPRCServerService{
|
||||
cfg: cfg,
|
||||
logger: log.New("grpc-server"),
|
||||
cfg: cfg,
|
||||
logger: log.New("grpc-server"),
|
||||
enabled: features.IsEnabled(featuremgmt.FlagGrpcServer),
|
||||
}
|
||||
|
||||
// Register the metric here instead of an init() function so that we do
|
||||
@ -123,10 +125,7 @@ func (s *gPRCServerService) Run(ctx context.Context) error {
|
||||
}
|
||||
|
||||
func (s *gPRCServerService) IsDisabled() bool {
|
||||
if s.cfg == nil {
|
||||
return true
|
||||
}
|
||||
return !s.cfg.IsFeatureToggleEnabled(featuremgmt.FlagGrpcServer)
|
||||
return !s.enabled
|
||||
}
|
||||
|
||||
func (s *gPRCServerService) GetServer() *grpc.Server {
|
||||
|
@ -41,7 +41,6 @@ func NewTestMigrationStore(t *testing.T, sqlStore *sqlstore.SQLStore, cfg *setti
|
||||
cfg.UnifiedAlerting.BaseInterval = time.Second * 10
|
||||
}
|
||||
features := featuremgmt.WithFeatures()
|
||||
cfg.IsFeatureToggleEnabled = features.IsEnabled
|
||||
alertingStore := store.DBstore{
|
||||
SQLStore: sqlStore,
|
||||
Cfg: cfg.UnifiedAlerting,
|
||||
|
@ -44,6 +44,7 @@ func SetupTestEnv(tb testing.TB, baseInterval time.Duration) (*ngalert.AlertNG,
|
||||
tb.Helper()
|
||||
|
||||
cfg := setting.NewCfg()
|
||||
// nolint:staticcheck
|
||||
cfg.IsFeatureToggleEnabled = featuremgmt.WithFeatures().IsEnabled
|
||||
cfg.UnifiedAlerting = setting.UnifiedAlertingSettings{
|
||||
BaseInterval: setting.SchedulerBaseInterval,
|
||||
|
@ -69,10 +69,12 @@ func TestIntegrationPluginManager(t *testing.T) {
|
||||
|
||||
features := featuremgmt.WithFeatures()
|
||||
cfg := &setting.Cfg{
|
||||
Raw: raw,
|
||||
StaticRootPath: staticRootPath,
|
||||
BundledPluginsPath: bundledPluginsPath,
|
||||
Azure: &azsettings.AzureSettings{},
|
||||
Raw: raw,
|
||||
StaticRootPath: staticRootPath,
|
||||
BundledPluginsPath: bundledPluginsPath,
|
||||
Azure: &azsettings.AzureSettings{},
|
||||
|
||||
// nolint:staticcheck
|
||||
IsFeatureToggleEnabled: features.IsEnabled,
|
||||
}
|
||||
|
||||
|
@ -153,7 +153,8 @@ func TestMigrations(t *testing.T) {
|
||||
{
|
||||
desc: "with editors can admin",
|
||||
config: &setting.Cfg{
|
||||
EditorsCanAdmin: true,
|
||||
EditorsCanAdmin: true,
|
||||
// nolint:staticcheck
|
||||
IsFeatureToggleEnabled: func(key string) bool { return key == "accesscontrol" },
|
||||
Raw: ini.Empty(),
|
||||
},
|
||||
|
@ -94,7 +94,9 @@ func (*OSSMigrations) AddMigration(mg *Migrator) {
|
||||
AddExternalAlertmanagerToDatasourceMigration(mg)
|
||||
|
||||
addFolderMigrations(mg)
|
||||
// nolint:staticcheck
|
||||
if mg.Cfg != nil && mg.Cfg.IsFeatureToggleEnabled != nil {
|
||||
// nolint:staticcheck
|
||||
if mg.Cfg.IsFeatureToggleEnabled(featuremgmt.FlagExternalServiceAuth) {
|
||||
oauthserver.AddMigration(mg)
|
||||
}
|
||||
|
@ -68,6 +68,7 @@ func ProvideService(cfg *setting.Cfg, cacheService *localcache.CacheService, mig
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// nolint:staticcheck
|
||||
if err := s.Migrate(cfg.IsFeatureToggleEnabled(featuremgmt.FlagMigrationLocking)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -306,10 +307,12 @@ func (ss *SQLStore) buildConnectionString() (string, error) {
|
||||
cnnstr += fmt.Sprintf("&transaction_isolation=%s", val)
|
||||
}
|
||||
|
||||
// nolint:staticcheck
|
||||
if ss.Cfg.IsFeatureToggleEnabled(featuremgmt.FlagMysqlAnsiQuotes) || ss.Cfg.IsFeatureToggleEnabled(featuremgmt.FlagNewDBLibrary) {
|
||||
cnnstr += "&sql_mode='ANSI_QUOTES'"
|
||||
}
|
||||
|
||||
// nolint:staticcheck
|
||||
if ss.Cfg.IsFeatureToggleEnabled(featuremgmt.FlagNewDBLibrary) {
|
||||
cnnstr += "&parseTime=true"
|
||||
}
|
||||
@ -638,6 +641,7 @@ func initTestDB(testCfg *setting.Cfg, migration registry.DatabaseMigrator, opts
|
||||
|
||||
// set test db config
|
||||
cfg := setting.NewCfg()
|
||||
// nolint:staticcheck
|
||||
cfg.IsFeatureToggleEnabled = func(key string) bool {
|
||||
for _, enabledFeature := range features {
|
||||
if enabledFeature == key {
|
||||
@ -732,6 +736,7 @@ func initTestDB(testCfg *setting.Cfg, migration registry.DatabaseMigrator, opts
|
||||
return testSQLStore, nil
|
||||
}
|
||||
|
||||
// nolint:staticcheck
|
||||
testSQLStore.Cfg.IsFeatureToggleEnabled = func(key string) bool {
|
||||
for _, enabledFeature := range features {
|
||||
if enabledFeature == key {
|
||||
|
@ -144,7 +144,9 @@ func (o *OSSImpl) Section(section string) Section {
|
||||
|
||||
func (*OSSImpl) RegisterReloadHandler(string, ReloadHandler) {}
|
||||
|
||||
// Deprecated: use feature toggles
|
||||
func (o *OSSImpl) IsFeatureToggleEnabled(name string) bool {
|
||||
// nolint:staticcheck
|
||||
return o.Cfg.IsFeatureToggleEnabled(name)
|
||||
}
|
||||
|
||||
|
@ -361,7 +361,7 @@ type Cfg struct {
|
||||
ApiKeyMaxSecondsToLive int64
|
||||
|
||||
// Check if a feature toggle is enabled
|
||||
// @deprecated
|
||||
// Deprecated: use featuremgmt.FeatureFlags
|
||||
IsFeatureToggleEnabled func(key string) bool // filled in dynamically
|
||||
|
||||
AnonymousEnabled bool
|
||||
@ -1168,6 +1168,7 @@ func (cfg *Cfg) Load(args CommandLineArgs) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// nolint:staticcheck
|
||||
if err := cfg.readFeatureToggles(iniFile); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -8,13 +8,14 @@ import (
|
||||
"github.com/grafana/grafana/pkg/util"
|
||||
)
|
||||
|
||||
// @deprecated -- should use `featuremgmt.FeatureToggles`
|
||||
// Deprecated: should use `featuremgmt.FeatureToggles`
|
||||
func (cfg *Cfg) readFeatureToggles(iniFile *ini.File) error {
|
||||
section := iniFile.Section("feature_toggles")
|
||||
toggles, err := ReadFeatureTogglesFromInitFile(section)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// nolint:staticcheck
|
||||
cfg.IsFeatureToggleEnabled = func(key string) bool { return toggles[key] }
|
||||
return nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user