kube-apiserver options should be decoupled from impls
A few months ago we refactored options to keep it independent of the implementations, so that it could be used in CLI tools to validate config or to generate config, without pulling in the full dependency tree of the master. This change restores that by separating server_run_options.go back to its own package. Also, options structs should never contain non-serializable types, which storagebackend.Config was doing with runtime.Codec. Split the codec out. Fix a typo on the name of the etcd2.go storage backend. Finally, move DefaultStorageMediaType to server_run_options.
This commit is contained in:
@@ -26,7 +26,7 @@ import (
|
||||
"time"
|
||||
|
||||
"k8s.io/kubernetes/federation/cmd/federated-apiserver/app"
|
||||
"k8s.io/kubernetes/pkg/genericapiserver"
|
||||
genericoptions "k8s.io/kubernetes/pkg/genericapiserver/options"
|
||||
"k8s.io/kubernetes/pkg/util"
|
||||
"k8s.io/kubernetes/pkg/util/flag"
|
||||
"k8s.io/kubernetes/pkg/version/verflag"
|
||||
@@ -38,7 +38,7 @@ func main() {
|
||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||
rand.Seed(time.Now().UTC().UnixNano())
|
||||
|
||||
s := genericapiserver.NewServerRunOptions()
|
||||
s := genericoptions.NewServerRunOptions()
|
||||
s.AddFlags(pflag.CommandLine)
|
||||
|
||||
flag.InitFlags()
|
||||
|
@@ -20,6 +20,7 @@ import (
|
||||
"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/install"
|
||||
@@ -29,7 +30,7 @@ import (
|
||||
serviceetcd "k8s.io/kubernetes/pkg/registry/service/etcd"
|
||||
)
|
||||
|
||||
func installCoreAPIs(s *genericapiserver.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory) {
|
||||
func installCoreAPIs(s *genericoptions.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory) {
|
||||
serviceStore, serviceStatusStorage := serviceetcd.NewREST(createRESTOptionsOrDie(s, g, f, api.Resource("service")))
|
||||
coreResources := map[string]rest.Storage{
|
||||
"services": serviceStore,
|
||||
|
@@ -24,12 +24,13 @@ import (
|
||||
"k8s.io/kubernetes/pkg/api/rest"
|
||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
||||
"k8s.io/kubernetes/pkg/genericapiserver"
|
||||
genericoptions "k8s.io/kubernetes/pkg/genericapiserver/options"
|
||||
|
||||
_ "k8s.io/kubernetes/federation/apis/federation/install"
|
||||
clusteretcd "k8s.io/kubernetes/federation/registry/cluster/etcd"
|
||||
)
|
||||
|
||||
func installFederationAPIs(s *genericapiserver.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory) {
|
||||
func installFederationAPIs(s *genericoptions.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory) {
|
||||
clusterStorage, clusterStatusStorage := clusteretcd.NewREST(createRESTOptionsOrDie(s, g, f, federation.Resource("clusters")))
|
||||
federationResources := map[string]rest.Storage{
|
||||
"clusters": clusterStorage,
|
||||
|
@@ -32,13 +32,14 @@ import (
|
||||
"k8s.io/kubernetes/pkg/apiserver"
|
||||
"k8s.io/kubernetes/pkg/apiserver/authenticator"
|
||||
"k8s.io/kubernetes/pkg/genericapiserver"
|
||||
genericoptions "k8s.io/kubernetes/pkg/genericapiserver/options"
|
||||
"k8s.io/kubernetes/pkg/registry/cachesize"
|
||||
"k8s.io/kubernetes/pkg/registry/generic"
|
||||
)
|
||||
|
||||
// NewAPIServerCommand creates a *cobra.Command object with default parameters
|
||||
func NewAPIServerCommand() *cobra.Command {
|
||||
s := genericapiserver.NewServerRunOptions()
|
||||
s := genericoptions.NewServerRunOptions()
|
||||
s.AddFlags(pflag.CommandLine)
|
||||
cmd := &cobra.Command{
|
||||
Use: "federated-apiserver",
|
||||
@@ -54,7 +55,7 @@ cluster's shared state through which all other components interact.`,
|
||||
}
|
||||
|
||||
// Run runs the specified APIServer. This should never exit.
|
||||
func Run(s *genericapiserver.ServerRunOptions) error {
|
||||
func Run(s *genericoptions.ServerRunOptions) error {
|
||||
genericapiserver.DefaultAndValidateRunOptions(s)
|
||||
|
||||
// TODO: register cluster federation resources here.
|
||||
@@ -148,7 +149,7 @@ func Run(s *genericapiserver.ServerRunOptions) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func createRESTOptionsOrDie(s *genericapiserver.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory, resource unversioned.GroupResource) generic.RESTOptions {
|
||||
func createRESTOptionsOrDie(s *genericoptions.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory, resource unversioned.GroupResource) generic.RESTOptions {
|
||||
storage, err := f.New(resource)
|
||||
if err != nil {
|
||||
glog.Fatalf("Unable to find storage destination for %v, due to %v", resource, err.Error())
|
||||
|
@@ -31,11 +31,11 @@ import (
|
||||
fed_v1a1 "k8s.io/kubernetes/federation/apis/federation/v1alpha1"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/genericapiserver"
|
||||
"k8s.io/kubernetes/pkg/genericapiserver/options"
|
||||
)
|
||||
|
||||
func TestLongRunningRequestRegexp(t *testing.T) {
|
||||
regexp := regexp.MustCompile(genericapiserver.NewServerRunOptions().LongRunningRequestRE)
|
||||
regexp := regexp.MustCompile(options.NewServerRunOptions().LongRunningRequestRE)
|
||||
dontMatch := []string{
|
||||
"/api/v1/watch-namespace/",
|
||||
"/api/v1/namespace-proxy/",
|
||||
@@ -82,7 +82,7 @@ var groupVersions = []unversioned.GroupVersion{
|
||||
}
|
||||
|
||||
func TestRun(t *testing.T) {
|
||||
s := genericapiserver.NewServerRunOptions()
|
||||
s := options.NewServerRunOptions()
|
||||
s.InsecurePort = insecurePort
|
||||
_, ipNet, _ := net.ParseCIDR("10.10.10.0/24")
|
||||
s.ServiceClusterIPRange = *ipNet
|
||||
|
Reference in New Issue
Block a user