Merge pull request #38175 from sttts/sttts-server-fatal

Automatic merge from submit-queue

apiserver(s): Replace glog.Fatals with fmt.Errorfs
This commit is contained in:
Kubernetes Submit Queue 2016-12-14 02:00:39 -08:00 committed by GitHub
commit 7d235e147c
3 changed files with 25 additions and 12 deletions

View File

@ -25,6 +25,7 @@ import (
"net" "net"
"net/http" "net/http"
"net/url" "net/url"
"os"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -246,7 +247,15 @@ func Run(s *options.ServerRunOptions) error {
} }
client, err := internalclientset.NewForConfig(selfClientConfig) client, err := internalclientset.NewForConfig(selfClientConfig)
if err != nil { if err != nil {
glog.Errorf("Failed to create clientset: %v", err) kubeAPIVersions := os.Getenv("KUBE_API_VERSIONS")
if len(kubeAPIVersions) == 0 {
return fmt.Errorf("failed to create clientset: %v", err)
}
// KUBE_API_VERSIONS is used in test-update-storage-objects.sh, disabling a number of API
// groups. This leads to a nil client above and undefined behaviour further down.
// TODO: get rid of KUBE_API_VERSIONS or define sane behaviour if set
glog.Errorf("Failed to create clientset with KUBE_API_VERSIONS=%q. KUBE_API_VERSIONS is only for testing. Things will break.", kubeAPIVersions)
} }
sharedInformers := informers.NewSharedInformerFactory(nil, client, 10*time.Minute) sharedInformers := informers.NewSharedInformerFactory(nil, client, 10*time.Minute)

View File

@ -100,14 +100,14 @@ func Run(s *options.ServerRunOptions) error {
} }
storageGroupsToEncodingVersion, err := s.GenericServerRunOptions.StorageGroupsToEncodingVersion() storageGroupsToEncodingVersion, err := s.GenericServerRunOptions.StorageGroupsToEncodingVersion()
if err != nil { if err != nil {
glog.Fatalf("error generating storage version map: %s", err) return fmt.Errorf("error generating storage version map: %s", err)
} }
storageFactory, err := genericapiserver.BuildDefaultStorageFactory( storageFactory, err := genericapiserver.BuildDefaultStorageFactory(
s.Etcd.StorageConfig, s.GenericServerRunOptions.DefaultStorageMediaType, api.Codecs, s.Etcd.StorageConfig, s.GenericServerRunOptions.DefaultStorageMediaType, api.Codecs,
genericapiserver.NewDefaultResourceEncodingConfig(), storageGroupsToEncodingVersion, genericapiserver.NewDefaultResourceEncodingConfig(), storageGroupsToEncodingVersion,
[]schema.GroupVersionResource{}, resourceConfig, s.GenericServerRunOptions.RuntimeConfig) []schema.GroupVersionResource{}, resourceConfig, s.GenericServerRunOptions.RuntimeConfig)
if err != nil { if err != nil {
glog.Fatalf("error in initializing storage factory: %s", err) return fmt.Errorf("error in initializing storage factory: %s", err)
} }
for _, override := range s.Etcd.EtcdServersOverrides { for _, override := range s.Etcd.EtcdServersOverrides {
@ -132,31 +132,31 @@ func Run(s *options.ServerRunOptions) error {
apiAuthenticator, securityDefinitions, err := authenticator.New(s.Authentication.ToAuthenticationConfig()) apiAuthenticator, securityDefinitions, err := authenticator.New(s.Authentication.ToAuthenticationConfig())
if err != nil { if err != nil {
glog.Fatalf("Invalid Authentication Config: %v", err) return fmt.Errorf("invalid Authentication Config: %v", err)
} }
privilegedLoopbackToken := uuid.NewRandom().String() privilegedLoopbackToken := uuid.NewRandom().String()
selfClientConfig, err := genericapiserver.NewSelfClientConfig(genericConfig.SecureServingInfo, genericConfig.InsecureServingInfo, privilegedLoopbackToken) selfClientConfig, err := genericapiserver.NewSelfClientConfig(genericConfig.SecureServingInfo, genericConfig.InsecureServingInfo, privilegedLoopbackToken)
if err != nil { if err != nil {
glog.Fatalf("Failed to create clientset: %v", err) return fmt.Errorf("failed to create clientset: %v", err)
} }
client, err := internalclientset.NewForConfig(selfClientConfig) client, err := internalclientset.NewForConfig(selfClientConfig)
if err != nil { if err != nil {
glog.Errorf("Failed to create clientset: %v", err) return fmt.Errorf("failed to create clientset: %v", err)
} }
sharedInformers := informers.NewSharedInformerFactory(nil, client, 10*time.Minute) sharedInformers := informers.NewSharedInformerFactory(nil, client, 10*time.Minute)
authorizerconfig := s.Authorization.ToAuthorizationConfig(sharedInformers) authorizerconfig := s.Authorization.ToAuthorizationConfig(sharedInformers)
apiAuthorizer, err := authorizer.NewAuthorizerFromAuthorizationConfig(authorizerconfig) apiAuthorizer, err := authorizer.NewAuthorizerFromAuthorizationConfig(authorizerconfig)
if err != nil { if err != nil {
glog.Fatalf("Invalid Authorization Config: %v", err) return fmt.Errorf("invalid Authorization Config: %v", err)
} }
admissionControlPluginNames := strings.Split(s.GenericServerRunOptions.AdmissionControl, ",") admissionControlPluginNames := strings.Split(s.GenericServerRunOptions.AdmissionControl, ",")
pluginInitializer := admission.NewPluginInitializer(sharedInformers, apiAuthorizer) pluginInitializer := admission.NewPluginInitializer(sharedInformers, apiAuthorizer)
admissionController, err := admission.NewFromPlugins(client, admissionControlPluginNames, s.GenericServerRunOptions.AdmissionControlConfigFile, pluginInitializer) admissionController, err := admission.NewFromPlugins(client, admissionControlPluginNames, s.GenericServerRunOptions.AdmissionControlConfigFile, pluginInitializer)
if err != nil { if err != nil {
glog.Fatalf("Failed to initialize plugins: %v", err) return fmt.Errorf("failed to initialize plugins: %v", err)
} }
kubeVersion := version.Get() kubeVersion := version.Get()

View File

@ -31,13 +31,17 @@ import (
// NewSelfClientConfig returns a clientconfig which can be used to talk to this apiserver. // NewSelfClientConfig returns a clientconfig which can be used to talk to this apiserver.
func NewSelfClientConfig(secureServingInfo *SecureServingInfo, insecureServingInfo *ServingInfo, token string) (*restclient.Config, error) { func NewSelfClientConfig(secureServingInfo *SecureServingInfo, insecureServingInfo *ServingInfo, token string) (*restclient.Config, error) {
if cfg, err := secureServingInfo.NewSelfClientConfig(token); err != nil || cfg != nil { cfg, err := secureServingInfo.NewSelfClientConfig(token)
if cfg != nil && err == nil {
return cfg, nil
}
if err != nil {
if insecureServingInfo == nil { if insecureServingInfo == nil {
// be fatal if insecure port is not available // be fatal if insecure port is not available
return cfg, err return nil, err
} else {
glog.Warningf("Failed to create secure local client, falling back to insecure local connection: %v", err)
} }
glog.Warningf("Failed to create secure local client, falling back to insecure local connection: %v", err)
} }
if cfg, err := insecureServingInfo.NewSelfClientConfig(token); err != nil || cfg != nil { if cfg, err := insecureServingInfo.NewSelfClientConfig(token); err != nil || cfg != nil {
return cfg, err return cfg, err