mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
pkg/apiserver: move validation.go into pkg/registry
This commit is contained in:
parent
3be6b3c045
commit
aa81e1d51d
@ -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 {
|
||||||
|
@ -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 {
|
||||||
|
@ -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"},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -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"
|
@ -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")
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user