diff --git a/staging/src/k8s.io/sample-apiserver/pkg/apiserver/BUILD b/staging/src/k8s.io/sample-apiserver/pkg/apiserver/BUILD index a5c9d03a186..cb52000262b 100644 --- a/staging/src/k8s.io/sample-apiserver/pkg/apiserver/BUILD +++ b/staging/src/k8s.io/sample-apiserver/pkg/apiserver/BUILD @@ -33,6 +33,7 @@ go_library( "//vendor/k8s.io/sample-apiserver/pkg/apis/wardle:go_default_library", "//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/install:go_default_library", "//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1:go_default_library", + "//vendor/k8s.io/sample-apiserver/pkg/registry:go_default_library", "//vendor/k8s.io/sample-apiserver/pkg/registry/wardle/fischer:go_default_library", "//vendor/k8s.io/sample-apiserver/pkg/registry/wardle/flunder:go_default_library", ], diff --git a/staging/src/k8s.io/sample-apiserver/pkg/apiserver/apiserver.go b/staging/src/k8s.io/sample-apiserver/pkg/apiserver/apiserver.go index 259694ff012..41e1d94aba5 100644 --- a/staging/src/k8s.io/sample-apiserver/pkg/apiserver/apiserver.go +++ b/staging/src/k8s.io/sample-apiserver/pkg/apiserver/apiserver.go @@ -30,6 +30,7 @@ import ( "k8s.io/sample-apiserver/pkg/apis/wardle" "k8s.io/sample-apiserver/pkg/apis/wardle/install" "k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1" + wardleregistry "k8s.io/sample-apiserver/pkg/registry" fischerstorage "k8s.io/sample-apiserver/pkg/registry/wardle/fischer" flunderstorage "k8s.io/sample-apiserver/pkg/registry/wardle/flunder" ) @@ -103,8 +104,8 @@ func (c completedConfig) New() (*WardleServer, error) { apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(wardle.GroupName, registry, Scheme, metav1.ParameterCodec, Codecs) apiGroupInfo.GroupMeta.GroupVersion = v1alpha1.SchemeGroupVersion v1alpha1storage := map[string]rest.Storage{} - v1alpha1storage["flunders"] = flunderstorage.RESTInPeace(Scheme, c.GenericConfig.RESTOptionsGetter) - v1alpha1storage["fischers"] = fischerstorage.RESTInPeace(Scheme, c.GenericConfig.RESTOptionsGetter) + v1alpha1storage["flunders"] = wardleregistry.RESTInPeace(flunderstorage.NewREST(Scheme, c.GenericConfig.RESTOptionsGetter)) + v1alpha1storage["fischers"] = wardleregistry.RESTInPeace(fischerstorage.NewREST(Scheme, c.GenericConfig.RESTOptionsGetter)) apiGroupInfo.VersionedResourcesStorageMap["v1alpha1"] = v1alpha1storage if err := s.GenericAPIServer.InstallAPIGroup(&apiGroupInfo); err != nil { diff --git a/staging/src/k8s.io/sample-apiserver/pkg/cmd/server/BUILD b/staging/src/k8s.io/sample-apiserver/pkg/cmd/server/BUILD index 7bc06013cc9..a1d8f0feb7d 100644 --- a/staging/src/k8s.io/sample-apiserver/pkg/cmd/server/BUILD +++ b/staging/src/k8s.io/sample-apiserver/pkg/cmd/server/BUILD @@ -13,7 +13,6 @@ go_library( tags = ["automanaged"], deps = [ "//vendor/github.com/spf13/cobra:go_default_library", - "//vendor/github.com/spf13/pflag:go_default_library", "//vendor/k8s.io/apiserver/pkg/server:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/options:go_default_library", "//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1:go_default_library", diff --git a/staging/src/k8s.io/sample-apiserver/pkg/cmd/server/start.go b/staging/src/k8s.io/sample-apiserver/pkg/cmd/server/start.go index 5b3f52f04bd..3ed49adb52c 100644 --- a/staging/src/k8s.io/sample-apiserver/pkg/cmd/server/start.go +++ b/staging/src/k8s.io/sample-apiserver/pkg/cmd/server/start.go @@ -22,7 +22,6 @@ import ( "net" "github.com/spf13/cobra" - "github.com/spf13/pflag" genericapiserver "k8s.io/apiserver/pkg/server" genericoptions "k8s.io/apiserver/pkg/server/options" @@ -52,11 +51,6 @@ func NewWardleServerOptions(out, errOut io.Writer) *WardleServerOptions { return o } -func (o *WardleServerOptions) addFlags(flags *pflag.FlagSet) { - o.RecommendedOptions.AddFlags(flags) - o.Admission.AddFlags(flags) -} - // NewCommandStartMaster provides a CLI handler for 'start master' command func NewCommandStartWardleServer(out, errOut io.Writer, stopCh <-chan struct{}) *cobra.Command { o := NewWardleServerOptions(out, errOut) @@ -79,7 +73,8 @@ func NewCommandStartWardleServer(out, errOut io.Writer, stopCh <-chan struct{}) } flags := cmd.Flags() - o.addFlags(flags) + o.RecommendedOptions.AddFlags(flags) + o.Admission.AddFlags(flags) return cmd } diff --git a/staging/src/k8s.io/sample-apiserver/pkg/registry/BUILD b/staging/src/k8s.io/sample-apiserver/pkg/registry/BUILD index 4f39f8a5c2f..65ee3af1880 100644 --- a/staging/src/k8s.io/sample-apiserver/pkg/registry/BUILD +++ b/staging/src/k8s.io/sample-apiserver/pkg/registry/BUILD @@ -11,5 +11,8 @@ go_library( name = "go_default_library", srcs = ["registry.go"], tags = ["automanaged"], - deps = ["//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library"], + deps = [ + "//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library", + "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", + ], ) diff --git a/staging/src/k8s.io/sample-apiserver/pkg/registry/registry.go b/staging/src/k8s.io/sample-apiserver/pkg/registry/registry.go index b6b757f4672..08eb0576261 100644 --- a/staging/src/k8s.io/sample-apiserver/pkg/registry/registry.go +++ b/staging/src/k8s.io/sample-apiserver/pkg/registry/registry.go @@ -16,9 +16,25 @@ limitations under the License. package registry -import genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" +import ( + "fmt" -// rest implements a RESTStorage for API services against etcd + genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" + "k8s.io/apiserver/pkg/registry/rest" +) + +// REST implements a RESTStorage for API services against etcd type REST struct { *genericregistry.Store } + +// RESTInPeace is just a simple function that panics on error. +// Otherwise returns the given storage object. It is meant to be +// a wrapper for wardle registries. +func RESTInPeace(storage rest.StandardStorage, err error) rest.StandardStorage { + if err != nil { + err = fmt.Errorf("Unable to create REST storage for a resource due to %v. Committing suicide.", err) + panic(err) + } + return storage +} diff --git a/staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/fischer/etcd.go b/staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/fischer/etcd.go index 33f4f507fee..5cf11ec8c8e 100644 --- a/staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/fischer/etcd.go +++ b/staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/fischer/etcd.go @@ -17,8 +17,6 @@ limitations under the License. package fischer import ( - "fmt" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apiserver/pkg/registry/generic" genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" @@ -26,8 +24,8 @@ import ( "k8s.io/sample-apiserver/pkg/registry" ) -// RESTInPeace returns a RESTStorage object that will work against API services. -func RESTInPeace(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) *registry.REST { +// NewREST returns a RESTStorage object that will work against API services. +func NewREST(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) (*registry.REST, error) { strategy := NewStrategy(scheme) store := &genericregistry.Store{ @@ -43,8 +41,7 @@ func RESTInPeace(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) * } options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: GetAttrs} if err := store.CompleteWithOptions(options); err != nil { - err = fmt.Errorf("Unable to create REST storage for fischer resource due to %v. Committing suicide.", err) - panic(err) + return nil, err } - return ®istry.REST{store} + return ®istry.REST{store}, nil } diff --git a/staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/flunder/etcd.go b/staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/flunder/etcd.go index 7357dd4ff5a..8bb5ef44033 100644 --- a/staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/flunder/etcd.go +++ b/staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/flunder/etcd.go @@ -17,8 +17,6 @@ limitations under the License. package flunder import ( - "fmt" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apiserver/pkg/registry/generic" genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" @@ -26,8 +24,8 @@ import ( "k8s.io/sample-apiserver/pkg/registry" ) -// RESTInPeace returns a RESTStorage object that will work against API services. -func RESTInPeace(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) *registry.REST { +// NewREST returns a RESTStorage object that will work against API services. +func NewREST(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) (*registry.REST, error) { strategy := NewStrategy(scheme) store := &genericregistry.Store{ @@ -43,8 +41,7 @@ func RESTInPeace(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) * } options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: GetAttrs} if err := store.CompleteWithOptions(options); err != nil { - err = fmt.Errorf("Unable to create REST storage for flunder resource due to %v. Committing suicide.", err) - panic(err) + return nil, err } - return ®istry.REST{store} + return ®istry.REST{store}, nil }