@@ -10,6 +10,11 @@ import (
|
||||
genericoptions "k8s.io/apiserver/pkg/server/options"
|
||||
)
|
||||
|
||||
type OptionsProvider interface {
|
||||
AddFlags(fs *pflag.FlagSet)
|
||||
ValidateOptions() []error
|
||||
}
|
||||
|
||||
const defaultEtcdPathPrefix = "/registry/grafana.app"
|
||||
|
||||
type Options struct {
|
||||
@@ -17,6 +22,7 @@ type Options struct {
|
||||
AggregatorOptions *AggregatorServerOptions
|
||||
StorageOptions *StorageOptions
|
||||
ExtraOptions *ExtraOptions
|
||||
APIOptions []OptionsProvider
|
||||
}
|
||||
|
||||
func NewOptions(codec runtime.Codec) *Options {
|
||||
@@ -36,6 +42,10 @@ func (o *Options) AddFlags(fs *pflag.FlagSet) {
|
||||
o.AggregatorOptions.AddFlags(fs)
|
||||
o.StorageOptions.AddFlags(fs)
|
||||
o.ExtraOptions.AddFlags(fs)
|
||||
|
||||
for _, api := range o.APIOptions {
|
||||
api.AddFlags(fs)
|
||||
}
|
||||
}
|
||||
|
||||
func (o *Options) Validate() []error {
|
||||
@@ -69,6 +79,11 @@ func (o *Options) Validate() []error {
|
||||
}
|
||||
}
|
||||
|
||||
for _, api := range o.APIOptions {
|
||||
if errs := api.ValidateOptions(); len(errs) != 0 {
|
||||
return errs
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -100,7 +115,6 @@ func (o *Options) ApplyTo(serverConfig *genericapiserver.RecommendedConfig) erro
|
||||
}
|
||||
serverConfig.SecureServing = nil
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ import (
|
||||
"fmt"
|
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
"github.com/spf13/pflag"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
|
||||
@@ -19,6 +18,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/services/accesscontrol/actest"
|
||||
"github.com/grafana/grafana/pkg/services/apiserver/builder"
|
||||
"github.com/grafana/grafana/pkg/services/apiserver/endpoints/request"
|
||||
"github.com/grafana/grafana/pkg/services/apiserver/options"
|
||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
testdatasource "github.com/grafana/grafana/pkg/tsdb/grafana-testdata-datasource"
|
||||
@@ -26,7 +26,7 @@ import (
|
||||
|
||||
type APIServerFactory interface {
|
||||
// Called before the groups are loaded so any custom command can be registered
|
||||
InitFlags(flags *pflag.FlagSet)
|
||||
GetOptions() options.OptionsProvider
|
||||
|
||||
// Given the flags, what can we produce
|
||||
GetEnabled(runtime []RuntimeConfig) ([]schema.GroupVersion, error)
|
||||
@@ -42,7 +42,9 @@ func GetDummyAPIFactory() APIServerFactory {
|
||||
|
||||
type DummyAPIFactory struct{}
|
||||
|
||||
func (p *DummyAPIFactory) InitFlags(flags *pflag.FlagSet) {}
|
||||
func (p *DummyAPIFactory) GetOptions() options.OptionsProvider {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *DummyAPIFactory) GetEnabled(runtime []RuntimeConfig) ([]schema.GroupVersion, error) {
|
||||
gv := []schema.GroupVersion{}
|
||||
|
||||
Reference in New Issue
Block a user