mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Adding events to federation apiserver
This commit is contained in:
		@@ -18,13 +18,13 @@ package main
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/federation/cmd/federation-apiserver/app"
 | 
						"k8s.io/kubernetes/federation/cmd/federation-apiserver/app"
 | 
				
			||||||
	genericoptions "k8s.io/kubernetes/pkg/genericapiserver/options"
 | 
						"k8s.io/kubernetes/federation/cmd/federation-apiserver/app/options"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewFederationAPIServer creates a new hyperkube Server object that includes the
 | 
					// NewFederationAPIServer creates a new hyperkube Server object that includes the
 | 
				
			||||||
// description and flags.
 | 
					// description and flags.
 | 
				
			||||||
func NewFederationAPIServer() *Server {
 | 
					func NewFederationAPIServer() *Server {
 | 
				
			||||||
	s := genericoptions.NewServerRunOptions().WithEtcdOptions()
 | 
						s := options.NewServerRunOptions()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	hks := Server{
 | 
						hks := Server{
 | 
				
			||||||
		SimpleUsage: "federation-apiserver",
 | 
							SimpleUsage: "federation-apiserver",
 | 
				
			||||||
@@ -33,7 +33,6 @@ func NewFederationAPIServer() *Server {
 | 
				
			|||||||
			return app.Run(s)
 | 
								return app.Run(s)
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	s.AddUniversalFlags(hks.Flags())
 | 
						s.AddFlags(hks.Flags())
 | 
				
			||||||
	s.AddEtcdStorageFlags(hks.Flags())
 | 
					 | 
				
			||||||
	return &hks
 | 
						return &hks
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/util/sets"
 | 
						"k8s.io/kubernetes/pkg/util/sets"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const importPrefix = "k8s.io/kubernetes/federation/api"
 | 
					const importPrefix = "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var accessor = meta.NewAccessor()
 | 
					var accessor = meta.NewAccessor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -99,7 +99,7 @@ func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper
 | 
				
			|||||||
		"DeleteOptions",
 | 
							"DeleteOptions",
 | 
				
			||||||
		"Status")
 | 
							"Status")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mapper := api.NewDefaultRESTMapper(externalVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped)
 | 
						mapper := api.NewDefaultRESTMapperFromScheme(externalVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped, core.Scheme)
 | 
				
			||||||
	// setup aliases for groups of resources
 | 
						// setup aliases for groups of resources
 | 
				
			||||||
	mapper.AddResourceAlias("all", userResources...)
 | 
						mapper.AddResourceAlias("all", userResources...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,6 +70,8 @@ func addKnownTypes(scheme *runtime.Scheme) error {
 | 
				
			|||||||
		&api.DeleteOptions{},
 | 
							&api.DeleteOptions{},
 | 
				
			||||||
		&api.Secret{},
 | 
							&api.Secret{},
 | 
				
			||||||
		&api.SecretList{},
 | 
							&api.SecretList{},
 | 
				
			||||||
 | 
							&api.Event{},
 | 
				
			||||||
 | 
							&api.EventList{},
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Register Unversioned types under their own special group
 | 
						// Register Unversioned types under their own special group
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,5 +81,14 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
 | 
				
			|||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if err := v1.AddFieldLabelConversionsForEvent(scheme); err != nil {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err := v1.AddFieldLabelConversionsForNamespace(scheme); err != nil {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err := v1.AddFieldLabelConversionsForSecret(scheme); err != nil {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,6 +45,8 @@ func addKnownTypes(scheme *runtime.Scheme) error {
 | 
				
			|||||||
		&v1.DeleteOptions{},
 | 
							&v1.DeleteOptions{},
 | 
				
			||||||
		&v1.Secret{},
 | 
							&v1.Secret{},
 | 
				
			||||||
		&v1.SecretList{},
 | 
							&v1.SecretList{},
 | 
				
			||||||
 | 
							&v1.Event{},
 | 
				
			||||||
 | 
							&v1.EventList{},
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Add common types
 | 
						// Add common types
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/federation/cmd/federation-apiserver/app"
 | 
						"k8s.io/kubernetes/federation/cmd/federation-apiserver/app"
 | 
				
			||||||
	genericoptions "k8s.io/kubernetes/pkg/genericapiserver/options"
 | 
						"k8s.io/kubernetes/federation/cmd/federation-apiserver/app/options"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/flag"
 | 
						"k8s.io/kubernetes/pkg/util/flag"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/logs"
 | 
						"k8s.io/kubernetes/pkg/util/logs"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/version/verflag"
 | 
						"k8s.io/kubernetes/pkg/version/verflag"
 | 
				
			||||||
@@ -36,9 +36,8 @@ import (
 | 
				
			|||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
	rand.Seed(time.Now().UTC().UnixNano())
 | 
						rand.Seed(time.Now().UTC().UnixNano())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	s := genericoptions.NewServerRunOptions().WithEtcdOptions()
 | 
						s := options.NewServerRunOptions()
 | 
				
			||||||
	s.AddUniversalFlags(pflag.CommandLine)
 | 
						s.AddFlags(pflag.CommandLine)
 | 
				
			||||||
	s.AddEtcdStorageFlags(pflag.CommandLine)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	flag.InitFlags()
 | 
						flag.InitFlags()
 | 
				
			||||||
	logs.InitLogs()
 | 
						logs.InitLogs()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,30 +18,32 @@ package app
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver"
 | 
					 | 
				
			||||||
	genericoptions "k8s.io/kubernetes/pkg/genericapiserver/options"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/federation/apis/core"
 | 
						"k8s.io/kubernetes/federation/apis/core"
 | 
				
			||||||
	_ "k8s.io/kubernetes/federation/apis/core/install"
 | 
						_ "k8s.io/kubernetes/federation/apis/core/install"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/apis/core/v1"
 | 
						"k8s.io/kubernetes/federation/apis/core/v1"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/federation/cmd/federation-apiserver/app/options"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/rest"
 | 
						"k8s.io/kubernetes/pkg/api/rest"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/genericapiserver"
 | 
				
			||||||
 | 
						eventetcd "k8s.io/kubernetes/pkg/registry/event/etcd"
 | 
				
			||||||
	namespaceetcd "k8s.io/kubernetes/pkg/registry/namespace/etcd"
 | 
						namespaceetcd "k8s.io/kubernetes/pkg/registry/namespace/etcd"
 | 
				
			||||||
	secretetcd "k8s.io/kubernetes/pkg/registry/secret/etcd"
 | 
						secretetcd "k8s.io/kubernetes/pkg/registry/secret/etcd"
 | 
				
			||||||
	serviceetcd "k8s.io/kubernetes/pkg/registry/service/etcd"
 | 
						serviceetcd "k8s.io/kubernetes/pkg/registry/service/etcd"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func installCoreAPIs(s *genericoptions.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory) {
 | 
					func installCoreAPIs(s *options.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory) {
 | 
				
			||||||
	serviceStore, serviceStatusStore := serviceetcd.NewREST(createRESTOptionsOrDie(s, g, f, api.Resource("service")))
 | 
						serviceStore, serviceStatusStore := serviceetcd.NewREST(createRESTOptionsOrDie(s, g, f, api.Resource("service")))
 | 
				
			||||||
	namespaceStore, namespaceStatusStore, _ := namespaceetcd.NewREST(createRESTOptionsOrDie(s, g, f, api.Resource("namespaces")))
 | 
						namespaceStore, namespaceStatusStore, _ := namespaceetcd.NewREST(createRESTOptionsOrDie(s, g, f, api.Resource("namespaces")))
 | 
				
			||||||
	secretStore := secretetcd.NewREST(createRESTOptionsOrDie(s, g, f, api.Resource("secrets")))
 | 
						secretStore := secretetcd.NewREST(createRESTOptionsOrDie(s, g, f, api.Resource("secrets")))
 | 
				
			||||||
 | 
						eventStore := eventetcd.NewREST(createRESTOptionsOrDie(s, g, f, api.Resource("events")), uint64(s.EventTTL.Seconds()))
 | 
				
			||||||
	coreResources := map[string]rest.Storage{
 | 
						coreResources := map[string]rest.Storage{
 | 
				
			||||||
		"secrets":           secretStore,
 | 
							"secrets":           secretStore,
 | 
				
			||||||
		"services":          serviceStore,
 | 
							"services":          serviceStore,
 | 
				
			||||||
		"services/status":   serviceStatusStore,
 | 
							"services/status":   serviceStatusStore,
 | 
				
			||||||
		"namespaces":        namespaceStore,
 | 
							"namespaces":        namespaceStore,
 | 
				
			||||||
		"namespaces/status": namespaceStatusStore,
 | 
							"namespaces/status": namespaceStatusStore,
 | 
				
			||||||
 | 
							"events":            eventStore,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	coreGroupMeta := registered.GroupOrDie(core.GroupName)
 | 
						coreGroupMeta := registered.GroupOrDie(core.GroupName)
 | 
				
			||||||
	apiGroupInfo := genericapiserver.APIGroupInfo{
 | 
						apiGroupInfo := genericapiserver.APIGroupInfo{
 | 
				
			||||||
@@ -56,6 +58,6 @@ func installCoreAPIs(s *genericoptions.ServerRunOptions, g *genericapiserver.Gen
 | 
				
			|||||||
		NegotiatedSerializer:   core.Codecs,
 | 
							NegotiatedSerializer:   core.Codecs,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if err := g.InstallAPIGroup(&apiGroupInfo); err != nil {
 | 
						if err := g.InstallAPIGroup(&apiGroupInfo); err != nil {
 | 
				
			||||||
		glog.Fatalf("Error in registering group version: %v", err)
 | 
							glog.Fatalf("Error in registering group version: %+v.\n Error: %v\n", apiGroupInfo, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,19 +18,18 @@ package app
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						"k8s.io/kubernetes/federation/cmd/federation-apiserver/app/options"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver"
 | 
					 | 
				
			||||||
	genericoptions "k8s.io/kubernetes/pkg/genericapiserver/options"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/rest"
 | 
						"k8s.io/kubernetes/pkg/api/rest"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/extensions/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/extensions/install"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/genericapiserver"
 | 
				
			||||||
	ingressetcd "k8s.io/kubernetes/pkg/registry/ingress/etcd"
 | 
						ingressetcd "k8s.io/kubernetes/pkg/registry/ingress/etcd"
 | 
				
			||||||
	replicasetetcd "k8s.io/kubernetes/pkg/registry/replicaset/etcd"
 | 
						replicasetetcd "k8s.io/kubernetes/pkg/registry/replicaset/etcd"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func installExtensionsAPIs(s *genericoptions.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory) {
 | 
					func installExtensionsAPIs(s *options.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory) {
 | 
				
			||||||
	replicaSetStorage := replicasetetcd.NewStorage(createRESTOptionsOrDie(s, g, f, extensions.Resource("replicasets")))
 | 
						replicaSetStorage := replicasetetcd.NewStorage(createRESTOptionsOrDie(s, g, f, extensions.Resource("replicasets")))
 | 
				
			||||||
	ingressStorage, ingressStatusStorage := ingressetcd.NewREST(createRESTOptionsOrDie(s, g, f, extensions.Resource("ingresses")))
 | 
						ingressStorage, ingressStatusStorage := ingressetcd.NewREST(createRESTOptionsOrDie(s, g, f, extensions.Resource("ingresses")))
 | 
				
			||||||
	extensionsResources := map[string]rest.Storage{
 | 
						extensionsResources := map[string]rest.Storage{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,17 +20,17 @@ import (
 | 
				
			|||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/federation/apis/federation"
 | 
						"k8s.io/kubernetes/federation/apis/federation"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/federation/cmd/federation-apiserver/app/options"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/rest"
 | 
						"k8s.io/kubernetes/pkg/api/rest"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver"
 | 
				
			||||||
	genericoptions "k8s.io/kubernetes/pkg/genericapiserver/options"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_ "k8s.io/kubernetes/federation/apis/federation/install"
 | 
						_ "k8s.io/kubernetes/federation/apis/federation/install"
 | 
				
			||||||
	clusteretcd "k8s.io/kubernetes/federation/registry/cluster/etcd"
 | 
						clusteretcd "k8s.io/kubernetes/federation/registry/cluster/etcd"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func installFederationAPIs(s *genericoptions.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory) {
 | 
					func installFederationAPIs(s *options.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory) {
 | 
				
			||||||
	clusterStorage, clusterStatusStorage := clusteretcd.NewREST(createRESTOptionsOrDie(s, g, f, federation.Resource("clusters")))
 | 
						clusterStorage, clusterStatusStorage := clusteretcd.NewREST(createRESTOptionsOrDie(s, g, f, federation.Resource("clusters")))
 | 
				
			||||||
	federationResources := map[string]rest.Storage{
 | 
						federationResources := map[string]rest.Storage{
 | 
				
			||||||
		"clusters":        clusterStorage,
 | 
							"clusters":        clusterStorage,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										52
									
								
								federation/cmd/federation-apiserver/app/options/options.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								federation/cmd/federation-apiserver/app/options/options.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2016 The Kubernetes Authors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Package options contains flags and options for initializing federation-apiserver.
 | 
				
			||||||
 | 
					package options
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						genericoptions "k8s.io/kubernetes/pkg/genericapiserver/options"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/spf13/pflag"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Runtime options for the federation-apiserver.
 | 
				
			||||||
 | 
					type ServerRunOptions struct {
 | 
				
			||||||
 | 
						*genericoptions.ServerRunOptions
 | 
				
			||||||
 | 
						EventTTL time.Duration
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewServerRunOptions creates a new ServerRunOptions object with default values.
 | 
				
			||||||
 | 
					func NewServerRunOptions() *ServerRunOptions {
 | 
				
			||||||
 | 
						s := ServerRunOptions{
 | 
				
			||||||
 | 
							ServerRunOptions: genericoptions.NewServerRunOptions().WithEtcdOptions(),
 | 
				
			||||||
 | 
							EventTTL:         1 * time.Hour,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &s
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// AddFlags adds flags for ServerRunOptions fields to be specified via FlagSet.
 | 
				
			||||||
 | 
					func (s *ServerRunOptions) AddFlags(fs *pflag.FlagSet) {
 | 
				
			||||||
 | 
						// Add the generic flags.
 | 
				
			||||||
 | 
						s.ServerRunOptions.AddUniversalFlags(fs)
 | 
				
			||||||
 | 
						//Add etcd specific flags.
 | 
				
			||||||
 | 
						s.ServerRunOptions.AddEtcdStorageFlags(fs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fs.DurationVar(&s.EventTTL, "event-ttl", s.EventTTL,
 | 
				
			||||||
 | 
							"Amount of time to retain events. Default is 1h.")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -27,6 +27,7 @@ import (
 | 
				
			|||||||
	"github.com/spf13/cobra"
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
	"github.com/spf13/pflag"
 | 
						"github.com/spf13/pflag"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/federation/cmd/federation-apiserver/app/options"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/admission"
 | 
						"k8s.io/kubernetes/pkg/admission"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
@@ -34,7 +35,6 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/apiserver/authenticator"
 | 
						"k8s.io/kubernetes/pkg/apiserver/authenticator"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller/framework/informers"
 | 
						"k8s.io/kubernetes/pkg/controller/framework/informers"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver"
 | 
				
			||||||
	genericoptions "k8s.io/kubernetes/pkg/genericapiserver/options"
 | 
					 | 
				
			||||||
	genericvalidation "k8s.io/kubernetes/pkg/genericapiserver/validation"
 | 
						genericvalidation "k8s.io/kubernetes/pkg/genericapiserver/validation"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/registry/cachesize"
 | 
						"k8s.io/kubernetes/pkg/registry/cachesize"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/registry/generic"
 | 
				
			||||||
@@ -43,9 +43,8 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewAPIServerCommand creates a *cobra.Command object with default parameters
 | 
					// NewAPIServerCommand creates a *cobra.Command object with default parameters
 | 
				
			||||||
func NewAPIServerCommand() *cobra.Command {
 | 
					func NewAPIServerCommand() *cobra.Command {
 | 
				
			||||||
	s := genericoptions.NewServerRunOptions().WithEtcdOptions()
 | 
						s := options.NewServerRunOptions()
 | 
				
			||||||
	s.AddUniversalFlags(pflag.CommandLine)
 | 
						s.AddFlags(pflag.CommandLine)
 | 
				
			||||||
	s.AddEtcdStorageFlags(pflag.CommandLine)
 | 
					 | 
				
			||||||
	cmd := &cobra.Command{
 | 
						cmd := &cobra.Command{
 | 
				
			||||||
		Use: "federation-apiserver",
 | 
							Use: "federation-apiserver",
 | 
				
			||||||
		Long: `The Kubernetes federation API server validates and configures data
 | 
							Long: `The Kubernetes federation API server validates and configures data
 | 
				
			||||||
@@ -55,14 +54,13 @@ cluster's shared state through which all other components interact.`,
 | 
				
			|||||||
		Run: func(cmd *cobra.Command, args []string) {
 | 
							Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return cmd
 | 
						return cmd
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Run runs the specified APIServer.  This should never exit.
 | 
					// Run runs the specified APIServer.  This should never exit.
 | 
				
			||||||
func Run(s *genericoptions.ServerRunOptions) error {
 | 
					func Run(s *options.ServerRunOptions) error {
 | 
				
			||||||
	genericvalidation.VerifyEtcdServersList(s)
 | 
						genericvalidation.VerifyEtcdServersList(s.ServerRunOptions)
 | 
				
			||||||
	genericapiserver.DefaultAndValidateRunOptions(s)
 | 
						genericapiserver.DefaultAndValidateRunOptions(s.ServerRunOptions)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO: register cluster federation resources here.
 | 
						// TODO: register cluster federation resources here.
 | 
				
			||||||
	resourceConfig := genericapiserver.NewResourceConfig()
 | 
						resourceConfig := genericapiserver.NewResourceConfig()
 | 
				
			||||||
@@ -132,7 +130,7 @@ func Run(s *genericoptions.ServerRunOptions) error {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		glog.Fatalf("Failed to initialize plugins: %v", err)
 | 
							glog.Fatalf("Failed to initialize plugins: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	genericConfig := genericapiserver.NewConfig(s)
 | 
						genericConfig := genericapiserver.NewConfig(s.ServerRunOptions)
 | 
				
			||||||
	// TODO: Move the following to generic api server as well.
 | 
						// TODO: Move the following to generic api server as well.
 | 
				
			||||||
	genericConfig.StorageFactory = storageFactory
 | 
						genericConfig.StorageFactory = storageFactory
 | 
				
			||||||
	genericConfig.Authenticator = authenticator
 | 
						genericConfig.Authenticator = authenticator
 | 
				
			||||||
@@ -159,11 +157,11 @@ func Run(s *genericoptions.ServerRunOptions) error {
 | 
				
			|||||||
	installExtensionsAPIs(s, m, storageFactory)
 | 
						installExtensionsAPIs(s, m, storageFactory)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sharedInformers.Start(wait.NeverStop)
 | 
						sharedInformers.Start(wait.NeverStop)
 | 
				
			||||||
	m.Run(s)
 | 
						m.Run(s.ServerRunOptions)
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func createRESTOptionsOrDie(s *genericoptions.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory, resource unversioned.GroupResource) generic.RESTOptions {
 | 
					func createRESTOptionsOrDie(s *options.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory, resource unversioned.GroupResource) generic.RESTOptions {
 | 
				
			||||||
	storage, err := f.New(resource)
 | 
						storage, err := f.New(resource)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		glog.Fatalf("Unable to find storage destination for %v, due to %v", resource, err.Error())
 | 
							glog.Fatalf("Unable to find storage destination for %v, due to %v", resource, err.Error())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,14 +29,14 @@ import (
 | 
				
			|||||||
	"github.com/stretchr/testify/assert"
 | 
						"github.com/stretchr/testify/assert"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fed_v1b1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						fed_v1b1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/federation/cmd/federation-apiserver/app/options"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	ext_v1b1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
						ext_v1b1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/options"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestLongRunningRequestRegexp(t *testing.T) {
 | 
					func TestLongRunningRequestRegexp(t *testing.T) {
 | 
				
			||||||
	regexp := regexp.MustCompile(options.NewServerRunOptions().WithEtcdOptions().LongRunningRequestRE)
 | 
						regexp := regexp.MustCompile(options.NewServerRunOptions().LongRunningRequestRE)
 | 
				
			||||||
	dontMatch := []string{
 | 
						dontMatch := []string{
 | 
				
			||||||
		"/api/v1/watch-namespace/",
 | 
							"/api/v1/watch-namespace/",
 | 
				
			||||||
		"/api/v1/namespace-proxy/",
 | 
							"/api/v1/namespace-proxy/",
 | 
				
			||||||
@@ -84,7 +84,7 @@ var groupVersions = []unversioned.GroupVersion{
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestRun(t *testing.T) {
 | 
					func TestRun(t *testing.T) {
 | 
				
			||||||
	s := options.NewServerRunOptions().WithEtcdOptions()
 | 
						s := options.NewServerRunOptions()
 | 
				
			||||||
	s.InsecurePort = insecurePort
 | 
						s.InsecurePort = insecurePort
 | 
				
			||||||
	_, ipNet, _ := net.ParseCIDR("10.10.10.0/24")
 | 
						_, ipNet, _ := net.ParseCIDR("10.10.10.0/24")
 | 
				
			||||||
	s.ServiceClusterIPRange = *ipNet
 | 
						s.ServiceClusterIPRange = *ipNet
 | 
				
			||||||
@@ -258,6 +258,8 @@ func testFederationResourceList(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	assert.Equal(t, "v1", apiResourceList.APIVersion)
 | 
						assert.Equal(t, "v1", apiResourceList.APIVersion)
 | 
				
			||||||
	assert.Equal(t, fed_v1b1.SchemeGroupVersion.String(), apiResourceList.GroupVersion)
 | 
						assert.Equal(t, fed_v1b1.SchemeGroupVersion.String(), apiResourceList.GroupVersion)
 | 
				
			||||||
 | 
						// Assert that there are exactly 2 resources.
 | 
				
			||||||
 | 
						assert.Equal(t, 2, len(apiResourceList.APIResources))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	found := findResource(apiResourceList.APIResources, "clusters")
 | 
						found := findResource(apiResourceList.APIResources, "clusters")
 | 
				
			||||||
	assert.NotNil(t, found)
 | 
						assert.NotNil(t, found)
 | 
				
			||||||
@@ -280,13 +282,34 @@ func testCoreResourceList(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	assert.Equal(t, "", apiResourceList.APIVersion)
 | 
						assert.Equal(t, "", apiResourceList.APIVersion)
 | 
				
			||||||
	assert.Equal(t, v1.SchemeGroupVersion.String(), apiResourceList.GroupVersion)
 | 
						assert.Equal(t, v1.SchemeGroupVersion.String(), apiResourceList.GroupVersion)
 | 
				
			||||||
 | 
						// Assert that there are exactly 6 resources.
 | 
				
			||||||
 | 
						assert.Equal(t, 6, len(apiResourceList.APIResources))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Verify services.
 | 
				
			||||||
	found := findResource(apiResourceList.APIResources, "services")
 | 
						found := findResource(apiResourceList.APIResources, "services")
 | 
				
			||||||
	assert.NotNil(t, found)
 | 
						assert.NotNil(t, found)
 | 
				
			||||||
	assert.True(t, found.Namespaced)
 | 
						assert.True(t, found.Namespaced)
 | 
				
			||||||
	found = findResource(apiResourceList.APIResources, "services/status")
 | 
						found = findResource(apiResourceList.APIResources, "services/status")
 | 
				
			||||||
	assert.NotNil(t, found)
 | 
						assert.NotNil(t, found)
 | 
				
			||||||
	assert.True(t, found.Namespaced)
 | 
						assert.True(t, found.Namespaced)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Verify namespaces.
 | 
				
			||||||
 | 
						found = findResource(apiResourceList.APIResources, "namespaces")
 | 
				
			||||||
 | 
						assert.NotNil(t, found)
 | 
				
			||||||
 | 
						assert.True(t, found.Namespaced)
 | 
				
			||||||
 | 
						found = findResource(apiResourceList.APIResources, "namespaces/status")
 | 
				
			||||||
 | 
						assert.NotNil(t, found)
 | 
				
			||||||
 | 
						assert.True(t, found.Namespaced)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Verify events.
 | 
				
			||||||
 | 
						found = findResource(apiResourceList.APIResources, "events")
 | 
				
			||||||
 | 
						assert.NotNil(t, found)
 | 
				
			||||||
 | 
						assert.True(t, found.Namespaced)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Verify secrets.
 | 
				
			||||||
 | 
						found = findResource(apiResourceList.APIResources, "secrets")
 | 
				
			||||||
 | 
						assert.NotNil(t, found)
 | 
				
			||||||
 | 
						assert.True(t, found.Namespaced)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func testExtensionsResourceList(t *testing.T) {
 | 
					func testExtensionsResourceList(t *testing.T) {
 | 
				
			||||||
@@ -303,6 +326,8 @@ func testExtensionsResourceList(t *testing.T) {
 | 
				
			|||||||
	// empty APIVersion for extensions group
 | 
						// empty APIVersion for extensions group
 | 
				
			||||||
	assert.Equal(t, "", apiResourceList.APIVersion)
 | 
						assert.Equal(t, "", apiResourceList.APIVersion)
 | 
				
			||||||
	assert.Equal(t, ext_v1b1.SchemeGroupVersion.String(), apiResourceList.GroupVersion)
 | 
						assert.Equal(t, ext_v1b1.SchemeGroupVersion.String(), apiResourceList.GroupVersion)
 | 
				
			||||||
 | 
						// Assert that there are exactly 5 resources.
 | 
				
			||||||
 | 
						assert.Equal(t, 5, len(apiResourceList.APIResources))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Verify replicasets.
 | 
						// Verify replicasets.
 | 
				
			||||||
	found := findResource(apiResourceList.APIResources, "replicasets")
 | 
						found := findResource(apiResourceList.APIResources, "replicasets")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/meta"
 | 
						"k8s.io/kubernetes/pkg/api/meta"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/sets"
 | 
						"k8s.io/kubernetes/pkg/util/sets"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -34,14 +35,21 @@ func RegisterRESTMapper(m meta.RESTMapper) {
 | 
				
			|||||||
	RESTMapper = append(RESTMapper.(meta.MultiRESTMapper), m)
 | 
						RESTMapper = append(RESTMapper.(meta.MultiRESTMapper), m)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Instantiates a DefaultRESTMapper based on types registered in api.Scheme
 | 
				
			||||||
func NewDefaultRESTMapper(defaultGroupVersions []unversioned.GroupVersion, interfacesFunc meta.VersionInterfacesFunc,
 | 
					func NewDefaultRESTMapper(defaultGroupVersions []unversioned.GroupVersion, interfacesFunc meta.VersionInterfacesFunc,
 | 
				
			||||||
	importPathPrefix string, ignoredKinds, rootScoped sets.String) *meta.DefaultRESTMapper {
 | 
						importPathPrefix string, ignoredKinds, rootScoped sets.String) *meta.DefaultRESTMapper {
 | 
				
			||||||
 | 
						return NewDefaultRESTMapperFromScheme(defaultGroupVersions, interfacesFunc, importPathPrefix, ignoredKinds, rootScoped, Scheme)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Instantiates a DefaultRESTMapper based on types registered in the given scheme.
 | 
				
			||||||
 | 
					func NewDefaultRESTMapperFromScheme(defaultGroupVersions []unversioned.GroupVersion, interfacesFunc meta.VersionInterfacesFunc,
 | 
				
			||||||
 | 
						importPathPrefix string, ignoredKinds, rootScoped sets.String, scheme *runtime.Scheme) *meta.DefaultRESTMapper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mapper := meta.NewDefaultRESTMapper(defaultGroupVersions, interfacesFunc)
 | 
						mapper := meta.NewDefaultRESTMapper(defaultGroupVersions, interfacesFunc)
 | 
				
			||||||
	// enumerate all supported versions, get the kinds, and register with the mapper how to address
 | 
						// enumerate all supported versions, get the kinds, and register with the mapper how to address
 | 
				
			||||||
	// our resources.
 | 
						// our resources.
 | 
				
			||||||
	for _, gv := range defaultGroupVersions {
 | 
						for _, gv := range defaultGroupVersions {
 | 
				
			||||||
		for kind, oType := range Scheme.KnownTypes(gv) {
 | 
							for kind, oType := range scheme.KnownTypes(gv) {
 | 
				
			||||||
			gvk := gv.WithKind(kind)
 | 
								gvk := gv.WithKind(kind)
 | 
				
			||||||
			// TODO: Remove import path check.
 | 
								// TODO: Remove import path check.
 | 
				
			||||||
			// We check the import path because we currently stuff both "api" and "extensions" objects
 | 
								// We check the import path because we currently stuff both "api" and "extensions" objects
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -172,7 +172,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
 | 
				
			|||||||
		"ServiceAccount",
 | 
							"ServiceAccount",
 | 
				
			||||||
		"ConfigMap",
 | 
							"ConfigMap",
 | 
				
			||||||
	} {
 | 
						} {
 | 
				
			||||||
		err = api.Scheme.AddFieldLabelConversionFunc("v1", kind,
 | 
							err = scheme.AddFieldLabelConversionFunc("v1", kind,
 | 
				
			||||||
			func(label, value string) (string, string, error) {
 | 
								func(label, value string) (string, string, error) {
 | 
				
			||||||
				switch label {
 | 
									switch label {
 | 
				
			||||||
				case "metadata.namespace",
 | 
									case "metadata.namespace",
 | 
				
			||||||
@@ -189,7 +189,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Add field conversion funcs.
 | 
						// Add field conversion funcs.
 | 
				
			||||||
	err = api.Scheme.AddFieldLabelConversionFunc("v1", "Pod",
 | 
						err = scheme.AddFieldLabelConversionFunc("v1", "Pod",
 | 
				
			||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "metadata.name",
 | 
								case "metadata.name",
 | 
				
			||||||
@@ -212,7 +212,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	err = api.Scheme.AddFieldLabelConversionFunc("v1", "Node",
 | 
						err = scheme.AddFieldLabelConversionFunc("v1", "Node",
 | 
				
			||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "metadata.name":
 | 
								case "metadata.name":
 | 
				
			||||||
@@ -227,7 +227,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	err = api.Scheme.AddFieldLabelConversionFunc("v1", "ReplicationController",
 | 
						err = scheme.AddFieldLabelConversionFunc("v1", "ReplicationController",
 | 
				
			||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "metadata.name",
 | 
								case "metadata.name",
 | 
				
			||||||
@@ -241,45 +241,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	err = api.Scheme.AddFieldLabelConversionFunc("v1", "Event",
 | 
						err = scheme.AddFieldLabelConversionFunc("v1", "PersistentVolume",
 | 
				
			||||||
		func(label, value string) (string, string, error) {
 | 
					 | 
				
			||||||
			switch label {
 | 
					 | 
				
			||||||
			case "involvedObject.kind",
 | 
					 | 
				
			||||||
				"involvedObject.namespace",
 | 
					 | 
				
			||||||
				"involvedObject.name",
 | 
					 | 
				
			||||||
				"involvedObject.uid",
 | 
					 | 
				
			||||||
				"involvedObject.apiVersion",
 | 
					 | 
				
			||||||
				"involvedObject.resourceVersion",
 | 
					 | 
				
			||||||
				"involvedObject.fieldPath",
 | 
					 | 
				
			||||||
				"reason",
 | 
					 | 
				
			||||||
				"source",
 | 
					 | 
				
			||||||
				"type",
 | 
					 | 
				
			||||||
				"metadata.namespace",
 | 
					 | 
				
			||||||
				"metadata.name":
 | 
					 | 
				
			||||||
				return label, value, nil
 | 
					 | 
				
			||||||
			default:
 | 
					 | 
				
			||||||
				return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	err = api.Scheme.AddFieldLabelConversionFunc("v1", "Namespace",
 | 
					 | 
				
			||||||
		func(label, value string) (string, string, error) {
 | 
					 | 
				
			||||||
			switch label {
 | 
					 | 
				
			||||||
			case "status.phase",
 | 
					 | 
				
			||||||
				"metadata.name":
 | 
					 | 
				
			||||||
				return label, value, nil
 | 
					 | 
				
			||||||
			default:
 | 
					 | 
				
			||||||
				return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	err = api.Scheme.AddFieldLabelConversionFunc("v1", "PersistentVolume",
 | 
					 | 
				
			||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "metadata.name":
 | 
								case "metadata.name":
 | 
				
			||||||
@@ -292,19 +254,13 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	err = api.Scheme.AddFieldLabelConversionFunc("v1", "Secret",
 | 
						if err := AddFieldLabelConversionsForEvent(scheme); err != nil {
 | 
				
			||||||
		func(label, value string) (string, string, error) {
 | 
							return err
 | 
				
			||||||
			switch label {
 | 
						}
 | 
				
			||||||
			case "type",
 | 
						if err := AddFieldLabelConversionsForNamespace(scheme); err != nil {
 | 
				
			||||||
				"metadata.namespace",
 | 
							return err
 | 
				
			||||||
				"metadata.name":
 | 
						}
 | 
				
			||||||
				return label, value, nil
 | 
						if err := AddFieldLabelConversionsForSecret(scheme); err != nil {
 | 
				
			||||||
			default:
 | 
					 | 
				
			||||||
				return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
@@ -769,3 +725,53 @@ func Convert_v1_ResourceList_To_api_ResourceList(in *ResourceList, out *api.Reso
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func AddFieldLabelConversionsForEvent(scheme *runtime.Scheme) error {
 | 
				
			||||||
 | 
						return scheme.AddFieldLabelConversionFunc("v1", "Event",
 | 
				
			||||||
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
 | 
								switch label {
 | 
				
			||||||
 | 
								case "involvedObject.kind",
 | 
				
			||||||
 | 
									"involvedObject.namespace",
 | 
				
			||||||
 | 
									"involvedObject.name",
 | 
				
			||||||
 | 
									"involvedObject.uid",
 | 
				
			||||||
 | 
									"involvedObject.apiVersion",
 | 
				
			||||||
 | 
									"involvedObject.resourceVersion",
 | 
				
			||||||
 | 
									"involvedObject.fieldPath",
 | 
				
			||||||
 | 
									"reason",
 | 
				
			||||||
 | 
									"source",
 | 
				
			||||||
 | 
									"type",
 | 
				
			||||||
 | 
									"metadata.namespace",
 | 
				
			||||||
 | 
									"metadata.name":
 | 
				
			||||||
 | 
									return label, value, nil
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func AddFieldLabelConversionsForNamespace(scheme *runtime.Scheme) error {
 | 
				
			||||||
 | 
						return scheme.AddFieldLabelConversionFunc("v1", "Namespace",
 | 
				
			||||||
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
 | 
								switch label {
 | 
				
			||||||
 | 
								case "status.phase",
 | 
				
			||||||
 | 
									"metadata.name":
 | 
				
			||||||
 | 
									return label, value, nil
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func AddFieldLabelConversionsForSecret(scheme *runtime.Scheme) error {
 | 
				
			||||||
 | 
						return scheme.AddFieldLabelConversionFunc("v1", "Secret",
 | 
				
			||||||
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
 | 
								switch label {
 | 
				
			||||||
 | 
								case "type",
 | 
				
			||||||
 | 
									"metadata.namespace",
 | 
				
			||||||
 | 
									"metadata.name":
 | 
				
			||||||
 | 
									return label, value, nil
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user