github.com/jonaz/heapster@v1.3.0-beta.0.0.20170208112634-cd3c15ca3d29/metrics/cmd/heapster-apiserver/app/heapstermetrics.go (about) 1 // Copyright 2016 Google Inc. All Rights Reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package app 16 17 import ( 18 "github.com/golang/glog" 19 20 "k8s.io/heapster/metrics/apis/metrics" 21 _ "k8s.io/heapster/metrics/apis/metrics/install" 22 metricsink "k8s.io/heapster/metrics/sinks/metric" 23 nodemetricsstorage "k8s.io/heapster/metrics/storage/nodemetrics" 24 podmetricsstorage "k8s.io/heapster/metrics/storage/podmetrics" 25 "k8s.io/kubernetes/pkg/api" 26 "k8s.io/kubernetes/pkg/api/rest" 27 "k8s.io/kubernetes/pkg/apimachinery/registered" 28 "k8s.io/kubernetes/pkg/client/cache" 29 "k8s.io/kubernetes/pkg/genericapiserver" 30 genericoptions "k8s.io/kubernetes/pkg/genericapiserver/options" 31 ) 32 33 func installMetricsAPIs(s *genericoptions.ServerRunOptions, g *genericapiserver.GenericAPIServer, 34 metricSink *metricsink.MetricSink, nodeLister *cache.StoreToNodeLister, podLister *cache.StoreToPodLister) { 35 36 nodemetricsStorage := nodemetricsstorage.NewStorage(metrics.Resource("nodemetrics"), metricSink, nodeLister) 37 podmetricsStorage := podmetricsstorage.NewStorage(metrics.Resource("podmetrics"), metricSink, podLister) 38 heapsterResources := map[string]rest.Storage{ 39 "nodes": nodemetricsStorage, 40 "pods": podmetricsStorage, 41 } 42 heapsterGroupMeta := registered.GroupOrDie(metrics.GroupName) 43 apiGroupInfo := genericapiserver.APIGroupInfo{ 44 GroupMeta: *heapsterGroupMeta, 45 VersionedResourcesStorageMap: map[string]map[string]rest.Storage{ 46 "v1alpha1": heapsterResources, 47 }, 48 OptionsExternalVersion: ®istered.GroupOrDie(api.GroupName).GroupVersion, 49 Scheme: api.Scheme, 50 ParameterCodec: api.ParameterCodec, 51 NegotiatedSerializer: api.Codecs, 52 } 53 if err := g.InstallAPIGroup(&apiGroupInfo); err != nil { 54 glog.Fatalf("Error in registering group versions: %v", err) 55 } 56 }