Skip to content

Commit 863ae26

Browse files
committed
Apply review comments
1 parent e6c0e3e commit 863ae26

File tree

5 files changed

+32
-19
lines changed

5 files changed

+32
-19
lines changed

pkg/apiserver/apiserver.go

+15-11
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import (
2727
genericapiserver "k8s.io/apiserver/pkg/server"
2828

2929
"github.com/kubernetes-incubator/custom-metrics-apiserver/pkg/provider"
30-
cm_install "k8s.io/metrics/pkg/apis/custom_metrics/install"
31-
em_install "k8s.io/metrics/pkg/apis/external_metrics/install"
30+
cminstall "k8s.io/metrics/pkg/apis/custom_metrics/install"
31+
eminstall "k8s.io/metrics/pkg/apis/external_metrics/install"
3232
)
3333

3434
var (
@@ -39,8 +39,8 @@ var (
3939
)
4040

4141
func init() {
42-
cm_install.Install(groupFactoryRegistry, registry, Scheme)
43-
em_install.Install(groupFactoryRegistry, registry, Scheme)
42+
cminstall.Install(groupFactoryRegistry, registry, Scheme)
43+
eminstall.Install(groupFactoryRegistry, registry, Scheme)
4444

4545
// we need to add the options to empty v1
4646
// TODO fix the server code to avoid this
@@ -63,8 +63,9 @@ type Config struct {
6363

6464
// CustomMetricsAdapterServer contains state for a Kubernetes cluster master/api server.
6565
type CustomMetricsAdapterServer struct {
66-
GenericAPIServer *genericapiserver.GenericAPIServer
67-
Provider provider.MetricsProvider
66+
GenericAPIServer *genericapiserver.GenericAPIServer
67+
customMetricsProvider provider.CustomMetricsProvider
68+
externalMetricsProvider provider.ExternalMetricsProvider
6869
}
6970

7071
type completedConfig struct {
@@ -82,23 +83,26 @@ func (c *Config) Complete() completedConfig {
8283

8384
// New returns a new instance of CustomMetricsAdapterServer from the given config.
8485
// name is used to differentiate for logging.
85-
func (c completedConfig) New(name string, metricsProvider provider.MetricsProvider, enableCustomMetricsAPI bool, enableExternalMetricsAPI bool) (*CustomMetricsAdapterServer, error) {
86+
// Each of the arguments: customMetricsProvider, externalMetricsProvider can be set either to
87+
// a provider implementation, or to nil to disable one of the APIs.
88+
func (c completedConfig) New(name string, customMetricsProvider provider.CustomMetricsProvider, externalMetricsProvider provider.ExternalMetricsProvider) (*CustomMetricsAdapterServer, error) {
8689
genericServer, err := c.CompletedConfig.New(name, genericapiserver.EmptyDelegate) // completion is done in Complete, no need for a second time
8790
if err != nil {
8891
return nil, err
8992
}
9093

9194
s := &CustomMetricsAdapterServer{
92-
GenericAPIServer: genericServer,
93-
Provider: metricsProvider,
95+
GenericAPIServer: genericServer,
96+
customMetricsProvider: customMetricsProvider,
97+
externalMetricsProvider: externalMetricsProvider,
9498
}
9599

96-
if enableCustomMetricsAPI {
100+
if customMetricsProvider != nil {
97101
if err := s.InstallCustomMetricsAPI(); err != nil {
98102
return nil, err
99103
}
100104
}
101-
if enableExternalMetricsAPI {
105+
if externalMetricsProvider != nil {
102106
if err := s.InstallExternalMetricsAPI(); err != nil {
103107
return nil, err
104108
}

pkg/apiserver/cmapis.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func (s *CustomMetricsAdapterServer) InstallCustomMetricsAPI() error {
6262
}
6363

6464
func (s *CustomMetricsAdapterServer) cmAPI(groupMeta *apimachinery.GroupMeta, groupVersion *schema.GroupVersion) *specificapi.MetricsAPIGroupVersion {
65-
resourceStorage := metricstorage.NewREST(s.Provider)
65+
resourceStorage := metricstorage.NewREST(s.customMetricsProvider)
6666

6767
return &specificapi.MetricsAPIGroupVersion{
6868
DynamicStorage: resourceStorage,
@@ -85,7 +85,7 @@ func (s *CustomMetricsAdapterServer) cmAPI(groupMeta *apimachinery.GroupMeta, gr
8585
OptionsExternalVersion: &schema.GroupVersion{Version: "v1"},
8686
},
8787

88-
ResourceLister: provider.NewCustomMetricResourceLister(s.Provider),
88+
ResourceLister: provider.NewCustomMetricResourceLister(s.customMetricsProvider),
8989
Handlers: &specificapi.CMHandlers{},
9090
}
9191
}

pkg/apiserver/emapis.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func (s *CustomMetricsAdapterServer) InstallExternalMetricsAPI() error {
6363
}
6464

6565
func (s *CustomMetricsAdapterServer) emAPI(groupMeta *apimachinery.GroupMeta, groupVersion *schema.GroupVersion) *specificapi.MetricsAPIGroupVersion {
66-
resourceStorage := metricstorage.NewREST(s.Provider)
66+
resourceStorage := metricstorage.NewREST(s.externalMetricsProvider)
6767

6868
return &specificapi.MetricsAPIGroupVersion{
6969
DynamicStorage: resourceStorage,
@@ -85,7 +85,7 @@ func (s *CustomMetricsAdapterServer) emAPI(groupMeta *apimachinery.GroupMeta, gr
8585
MinRequestTimeout: s.GenericAPIServer.MinRequestTimeout(),
8686
OptionsExternalVersion: &schema.GroupVersion{Version: "v1"},
8787
},
88-
ResourceLister: provider.NewExternalMetricResourceLister(s.Provider),
88+
ResourceLister: provider.NewExternalMetricResourceLister(s.externalMetricsProvider),
8989
Handlers: &specificapi.EMHandlers{},
9090
}
9191
}

pkg/apiserver/installer/installer.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ type MetricsAPIGroupVersion struct {
5656

5757
ResourceLister discovery.APIResourceLister
5858

59-
Handlers Handlers
59+
Handlers apiHandlers
6060
}
6161

62-
type Handlers interface {
62+
type apiHandlers interface {
6363
registerResourceHandlers(a *MetricsAPIInstaller, ws *restful.WebService) error
6464
}
6565

@@ -103,7 +103,7 @@ type MetricsAPIInstaller struct {
103103
group *MetricsAPIGroupVersion
104104
prefix string // Path prefix where API resources are to be registered.
105105
minRequestTimeout time.Duration
106-
handlers Handlers
106+
handlers apiHandlers
107107

108108
// TODO: do we want to embed a normal API installer here so we can serve normal
109109
// endpoints side by side with dynamic ones (from the same API group)?

pkg/sample-cmd/server/start.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,17 @@ func (o SampleAdapterServerOptions) RunCustomMetricsAdapterServer(stopCh <-chan
116116
}
117117

118118
metricsProvider := provider.NewFakeProvider(clientPool, dynamicMapper)
119+
customMetricsProvider := metricsProvider
120+
externalMetricsProvider := metricsProvider
121+
if !o.EnableCustomMetricsAPI {
122+
customMetricsProvider = nil
123+
}
124+
if !o.EnableExternalMetricsAPI {
125+
externalMetricsProvider = nil
126+
}
119127

120-
server, err := config.Complete().New("sample-custom-metrics-adapter", metricsProvider, o.EnableCustomMetricsAPI, o.EnableExternalMetricsAPI)
128+
// In this example, the same provider implements both Custom Metrics API and External Metrics API
129+
server, err := config.Complete().New("sample-custom-metrics-adapter", customMetricsProvider, externalMetricsProvider)
121130
if err != nil {
122131
return err
123132
}

0 commit comments

Comments
 (0)