minor adjustments in the sample apiserver around resource creation.

issue: #47868
This commit is contained in:
p0lyn0mial 2017-07-05 18:07:13 +02:00
parent ce91f2ab26
commit 6a3191a2d4
8 changed files with 36 additions and 27 deletions

View File

@ -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",
],

View File

@ -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 {

View File

@ -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",

View File

@ -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
}

View File

@ -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",
],
)

View File

@ -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
}

View File

@ -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 &registry.REST{store}
return &registry.REST{store}, nil
}

View File

@ -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 &registry.REST{store}
return &registry.REST{store}, nil
}