pkg/apiserver: move validation.go into pkg/registry

This commit is contained in:
Dr. Stefan Schimanski 2016-12-14 11:11:25 +01:00
parent 3be6b3c045
commit aa81e1d51d
6 changed files with 13 additions and 31 deletions

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2016 The Kubernetes Authors. Copyright 2014 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -45,6 +45,7 @@ func validateServiceNodePort(options *ServerRunOptions) []error {
return errors return errors
} }
// Validate checks ServerRunOptions and return a slice of found errors.
func (options *ServerRunOptions) Validate() []error { func (options *ServerRunOptions) Validate() []error {
var errors []error var errors []error
if errs := options.Etcd.Validate(); len(errs) > 0 { if errs := options.Etcd.Validate(); len(errs) > 0 {

View File

@ -23,19 +23,18 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1" metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/apiserver"
"k8s.io/kubernetes/pkg/probe" "k8s.io/kubernetes/pkg/probe"
httpprober "k8s.io/kubernetes/pkg/probe/http" httpprober "k8s.io/kubernetes/pkg/probe/http"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
) )
type REST struct { type REST struct {
GetServersToValidate func() map[string]apiserver.Server GetServersToValidate func() map[string]Server
prober httpprober.HTTPProber prober httpprober.HTTPProber
} }
// NewStorage returns a new REST. // NewStorage returns a new REST.
func NewStorage(serverRetriever func() map[string]apiserver.Server) *REST { func NewStorage(serverRetriever func() map[string]Server) *REST {
return &REST{ return &REST{
GetServersToValidate: serverRetriever, GetServersToValidate: serverRetriever,
prober: httpprober.New(), prober: httpprober.New(),
@ -59,7 +58,7 @@ func (rs *REST) List(ctx api.Context, options *api.ListOptions) (runtime.Object,
wait.Add(len(servers)) wait.Add(len(servers))
statuses := make(chan api.ComponentStatus, len(servers)) statuses := make(chan api.ComponentStatus, len(servers))
for k, v := range servers { for k, v := range servers {
go func(name string, server apiserver.Server) { go func(name string, server Server) {
defer wait.Done() defer wait.Done()
status := rs.getComponentStatus(name, server) status := rs.getComponentStatus(name, server)
statuses <- *status statuses <- *status
@ -96,7 +95,7 @@ func ToConditionStatus(s probe.Result) api.ConditionStatus {
} }
} }
func (rs *REST) getComponentStatus(name string, server apiserver.Server) *api.ComponentStatus { func (rs *REST) getComponentStatus(name string, server Server) *api.ComponentStatus {
status, msg, err := server.DoServerCheck(rs.prober) status, msg, err := server.DoServerCheck(rs.prober)
errorMsg := "" errorMsg := ""
if err != nil { if err != nil {

View File

@ -28,7 +28,6 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1" metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/apiserver"
"k8s.io/kubernetes/pkg/probe" "k8s.io/kubernetes/pkg/probe"
"k8s.io/kubernetes/pkg/util/diff" "k8s.io/kubernetes/pkg/util/diff"
) )
@ -51,8 +50,8 @@ type testResponse struct {
func NewTestREST(resp testResponse) *REST { func NewTestREST(resp testResponse) *REST {
return &REST{ return &REST{
GetServersToValidate: func() map[string]apiserver.Server { GetServersToValidate: func() map[string]Server {
return map[string]apiserver.Server{ return map[string]Server{
"test1": {Addr: "testserver1", Port: 8000, Path: "/healthz"}, "test1": {Addr: "testserver1", Port: 8000, Path: "/healthz"},
} }
}, },

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package apiserver package componentstatus
import ( import (
"net/http" "net/http"

View File

@ -14,32 +14,16 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package apiserver package componentstatus
import ( import (
"errors" "errors"
"fmt" "fmt"
"testing" "testing"
"net/http"
"net/url"
"time"
"k8s.io/kubernetes/pkg/probe" "k8s.io/kubernetes/pkg/probe"
) )
type fakeHttpProber struct {
result probe.Result
body string
err error
}
func (f *fakeHttpProber) Probe(*url.URL, http.Header, time.Duration) (probe.Result, string, error) {
return f.result, f.body, f.err
}
func alwaysError([]byte) error { return errors.New("test error") }
func matchError(data []byte) error { func matchError(data []byte) error {
if string(data) != "bar" { if string(data) != "bar" {
return errors.New("match error") return errors.New("match error")

View File

@ -30,7 +30,6 @@ import (
"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/apiserver"
policyclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion" policyclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion"
"k8s.io/kubernetes/pkg/client/restclient" "k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/genericapiserver" "k8s.io/kubernetes/pkg/genericapiserver"
@ -243,8 +242,8 @@ type componentStatusStorage struct {
storageFactory genericapiserver.StorageFactory storageFactory genericapiserver.StorageFactory
} }
func (s componentStatusStorage) serversToValidate() map[string]apiserver.Server { func (s componentStatusStorage) serversToValidate() map[string]componentstatus.Server {
serversToValidate := map[string]apiserver.Server{ serversToValidate := map[string]componentstatus.Server{
"controller-manager": {Addr: "127.0.0.1", Port: ports.ControllerManagerPort, Path: "/healthz"}, "controller-manager": {Addr: "127.0.0.1", Port: ports.ControllerManagerPort, Path: "/healthz"},
"scheduler": {Addr: "127.0.0.1", Port: ports.SchedulerPort, Path: "/healthz"}, "scheduler": {Addr: "127.0.0.1", Port: ports.SchedulerPort, Path: "/healthz"},
} }
@ -270,7 +269,7 @@ func (s componentStatusStorage) serversToValidate() map[string]apiserver.Server
port = 2379 port = 2379
} }
// TODO: etcd health checking should be abstracted in the storage tier // TODO: etcd health checking should be abstracted in the storage tier
serversToValidate[fmt.Sprintf("etcd-%d", ix)] = apiserver.Server{ serversToValidate[fmt.Sprintf("etcd-%d", ix)] = componentstatus.Server{
Addr: addr, Addr: addr,
EnableHTTPS: etcdUrl.Scheme == "https", EnableHTTPS: etcdUrl.Scheme == "https",
Port: port, Port: port,