Merge pull request #3997 from smarterclayton/make_master_index_optional

Make master index optional when master is used in other contexts
This commit is contained in:
Alex Robinson 2015-02-02 12:45:18 -08:00
commit 9992abdfcf
4 changed files with 29 additions and 12 deletions

View File

@ -66,17 +66,21 @@ import (
// Config is a structure used to configure a Master. // Config is a structure used to configure a Master.
type Config struct { type Config struct {
Client *client.Client Client *client.Client
Cloud cloudprovider.Interface Cloud cloudprovider.Interface
EtcdHelper tools.EtcdHelper EtcdHelper tools.EtcdHelper
EventTTL time.Duration EventTTL time.Duration
MinionRegexp string MinionRegexp string
KubeletClient client.KubeletClient KubeletClient client.KubeletClient
PortalNet *net.IPNet PortalNet *net.IPNet
EnableLogsSupport bool EnableLogsSupport bool
EnableUISupport bool EnableUISupport bool
EnableSwaggerSupport bool // allow downstream consumers to disable swagger
EnableV1Beta3 bool EnableSwaggerSupport bool
// allow v1beta3 to be conditionally enabled
EnableV1Beta3 bool
// allow downstream consumers to disable the index route
EnableIndex bool
APIPrefix string APIPrefix string
CorsAllowedOriginList util.StringList CorsAllowedOriginList util.StringList
Authenticator authenticator.Request Authenticator authenticator.Request
@ -418,7 +422,10 @@ func (m *Master) init(c *Config) {
// Register root handler. // Register root handler.
// We do not register this using restful Webservice since we do not want to surface this in api docs. // We do not register this using restful Webservice since we do not want to surface this in api docs.
m.mux.HandleFunc("/", apiserver.IndexHandler(m.handlerContainer, m.muxHelper)) // Allow master to be embedded in contexts which already have something registered at the root
if c.EnableIndex {
m.mux.HandleFunc("/", apiserver.IndexHandler(m.handlerContainer, m.muxHelper))
}
// TODO: use go-restful // TODO: use go-restful
apiserver.InstallValidator(m.muxHelper, func() map[string]apiserver.Server { return m.getServersToValidate(c) }) apiserver.InstallValidator(m.muxHelper, func() map[string]apiserver.Server { return m.getServersToValidate(c) })

View File

@ -247,6 +247,7 @@ func (s *APIServer) Run(_ []string) error {
EnableLogsSupport: s.EnableLogsSupport, EnableLogsSupport: s.EnableLogsSupport,
EnableUISupport: true, EnableUISupport: true,
EnableSwaggerSupport: true, EnableSwaggerSupport: true,
EnableIndex: true,
APIPrefix: s.APIPrefix, APIPrefix: s.APIPrefix,
CorsAllowedOriginList: s.CorsAllowedOriginList, CorsAllowedOriginList: s.CorsAllowedOriginList,
ReadOnlyPort: s.ReadOnlyPort, ReadOnlyPort: s.ReadOnlyPort,

View File

@ -107,6 +107,7 @@ func RunApiServer(cl *client.Client, etcdClient tools.EtcdClient, addr net.IP, p
}, },
EnableLogsSupport: false, EnableLogsSupport: false,
EnableSwaggerSupport: true, EnableSwaggerSupport: true,
EnableIndex: true,
APIPrefix: "/api", APIPrefix: "/api",
Authorizer: apiserver.NewAlwaysAllowAuthorizer(), Authorizer: apiserver.NewAlwaysAllowAuthorizer(),

View File

@ -302,6 +302,7 @@ func TestAuthModeAlwaysAllow(t *testing.T) {
KubeletClient: client.FakeKubeletClient{}, KubeletClient: client.FakeKubeletClient{},
EnableLogsSupport: false, EnableLogsSupport: false,
EnableUISupport: false, EnableUISupport: false,
EnableIndex: true,
APIPrefix: "/api", APIPrefix: "/api",
Authorizer: apiserver.NewAlwaysAllowAuthorizer(), Authorizer: apiserver.NewAlwaysAllowAuthorizer(),
AdmissionControl: admit.NewAlwaysAdmit(), AdmissionControl: admit.NewAlwaysAdmit(),
@ -353,6 +354,7 @@ func TestAuthModeAlwaysDeny(t *testing.T) {
KubeletClient: client.FakeKubeletClient{}, KubeletClient: client.FakeKubeletClient{},
EnableLogsSupport: false, EnableLogsSupport: false,
EnableUISupport: false, EnableUISupport: false,
EnableIndex: true,
APIPrefix: "/api", APIPrefix: "/api",
Authorizer: apiserver.NewAlwaysDenyAuthorizer(), Authorizer: apiserver.NewAlwaysDenyAuthorizer(),
AdmissionControl: admit.NewAlwaysAdmit(), AdmissionControl: admit.NewAlwaysAdmit(),
@ -418,6 +420,7 @@ func TestAliceNotForbiddenOrUnauthorized(t *testing.T) {
KubeletClient: client.FakeKubeletClient{}, KubeletClient: client.FakeKubeletClient{},
EnableLogsSupport: false, EnableLogsSupport: false,
EnableUISupport: false, EnableUISupport: false,
EnableIndex: true,
APIPrefix: "/api", APIPrefix: "/api",
Authenticator: getTestTokenAuth(), Authenticator: getTestTokenAuth(),
Authorizer: allowAliceAuthorizer{}, Authorizer: allowAliceAuthorizer{},
@ -478,6 +481,7 @@ func TestBobIsForbidden(t *testing.T) {
KubeletClient: client.FakeKubeletClient{}, KubeletClient: client.FakeKubeletClient{},
EnableLogsSupport: false, EnableLogsSupport: false,
EnableUISupport: false, EnableUISupport: false,
EnableIndex: true,
APIPrefix: "/api", APIPrefix: "/api",
Authenticator: getTestTokenAuth(), Authenticator: getTestTokenAuth(),
Authorizer: allowAliceAuthorizer{}, Authorizer: allowAliceAuthorizer{},
@ -538,6 +542,7 @@ func TestUnknownUserIsUnauthorized(t *testing.T) {
KubeletClient: client.FakeKubeletClient{}, KubeletClient: client.FakeKubeletClient{},
EnableLogsSupport: false, EnableLogsSupport: false,
EnableUISupport: false, EnableUISupport: false,
EnableIndex: true,
APIPrefix: "/api", APIPrefix: "/api",
Authenticator: getTestTokenAuth(), Authenticator: getTestTokenAuth(),
Authorizer: allowAliceAuthorizer{}, Authorizer: allowAliceAuthorizer{},
@ -617,6 +622,7 @@ func TestNamespaceAuthorization(t *testing.T) {
KubeletClient: client.FakeKubeletClient{}, KubeletClient: client.FakeKubeletClient{},
EnableLogsSupport: false, EnableLogsSupport: false,
EnableUISupport: false, EnableUISupport: false,
EnableIndex: true,
APIPrefix: "/api", APIPrefix: "/api",
Authenticator: getTestTokenAuth(), Authenticator: getTestTokenAuth(),
Authorizer: a, Authorizer: a,
@ -701,6 +707,7 @@ func TestKindAuthorization(t *testing.T) {
KubeletClient: client.FakeKubeletClient{}, KubeletClient: client.FakeKubeletClient{},
EnableLogsSupport: false, EnableLogsSupport: false,
EnableUISupport: false, EnableUISupport: false,
EnableIndex: true,
APIPrefix: "/api", APIPrefix: "/api",
Authenticator: getTestTokenAuth(), Authenticator: getTestTokenAuth(),
Authorizer: a, Authorizer: a,
@ -779,6 +786,7 @@ func TestReadOnlyAuthorization(t *testing.T) {
KubeletClient: client.FakeKubeletClient{}, KubeletClient: client.FakeKubeletClient{},
EnableLogsSupport: false, EnableLogsSupport: false,
EnableUISupport: false, EnableUISupport: false,
EnableIndex: true,
APIPrefix: "/api", APIPrefix: "/api",
Authenticator: getTestTokenAuth(), Authenticator: getTestTokenAuth(),
Authorizer: a, Authorizer: a,