apiserver: make config completion structural recursion

Kubernetes-commit: 1bcea54104cb7f53e58924dd5413cf4ba7ceb587
This commit is contained in:
Dr. Stefan Schimanski 2017-09-06 18:06:18 +02:00 committed by Kubernetes Publisher
parent 2afdeada7b
commit e4b1b0656b
3 changed files with 12 additions and 11 deletions

View File

@ -62,6 +62,7 @@ import (
certutil "k8s.io/client-go/util/cert"
openapicommon "k8s.io/kube-openapi/pkg/common"
// install apis
_ "k8s.io/apiserver/pkg/apis/apiserver/install"
)
@ -302,9 +303,14 @@ type completedConfig struct {
*Config
}
type CompletedConfig struct {
// Embed a private pointer that cannot be instantiated outside of this package.
*completedConfig
}
// Complete fills in any fields not set that are required to have valid data and can be derived
// from other fields. If you're going to `ApplyOptions`, do that first. It's mutating the receiver.
func (c *Config) Complete() completedConfig {
func (c *Config) Complete() CompletedConfig {
if len(c.ExternalAddress) == 0 && c.PublicAddress != nil {
hostAndPort := c.PublicAddress.String()
if c.ReadWritePort != 0 {
@ -379,12 +385,7 @@ func (c *Config) Complete() completedConfig {
c.RequestInfoResolver = NewRequestInfoResolver(c)
}
return completedConfig{c}
}
// SkipComplete provides a way to construct a server instance without config completion.
func (c *Config) SkipComplete() completedConfig {
return completedConfig{c}
return CompletedConfig{&completedConfig{c}}
}
// New creates a new server which logically combines the handling chain with the passed server.

View File

@ -52,7 +52,7 @@ func TestNewWithDelegate(t *testing.T) {
return fmt.Errorf("delegate failed healthcheck")
}))
delegateServer, err := delegateConfig.SkipComplete().New("test", EmptyDelegate)
delegateServer, err := delegateConfig.Complete().New("test", EmptyDelegate)
if err != nil {
t.Fatal(err)
}

View File

@ -147,7 +147,7 @@ func TestInstallAPIGroups(t *testing.T) {
config.LegacyAPIGroupPrefixes = sets.NewString("/apiPrefix")
config.DiscoveryAddresses = discovery.DefaultAddresses{DefaultAddress: "ExternalAddress"}
s, err := config.SkipComplete().New("test", EmptyDelegate)
s, err := config.Complete().New("test", EmptyDelegate)
if err != nil {
t.Fatalf("Error in bringing up the server: %v", err)
}
@ -351,7 +351,7 @@ func TestCustomHandlerChain(t *testing.T) {
called = true
})
s, err := config.SkipComplete().New("test", EmptyDelegate)
s, err := config.Complete().New("test", EmptyDelegate)
if err != nil {
t.Fatalf("Error in bringing up the server: %v", err)
}
@ -406,7 +406,7 @@ func TestNotRestRoutesHaveAuth(t *testing.T) {
kubeVersion := fakeVersion()
config.Version = &kubeVersion
s, err := config.SkipComplete().New("test", EmptyDelegate)
s, err := config.Complete().New("test", EmptyDelegate)
if err != nil {
t.Fatalf("Error in bringing up the server: %v", err)
}