Skip to content

Commit

Permalink
e2e: allow unknown providers with a warning
Browse files Browse the repository at this point in the history
The E2E refactoring tightened the sanity checking of the --provider
parameter such that it only allowed known providers. That seemed to
make sense because it catches typos, but it turned out that various
callers depended on the "accept arbitrary provider value" behavior,
therefore it gets restored.
  • Loading branch information
pohly committed Oct 24, 2018
1 parent daf17e2 commit bf08f5c
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
1 change: 1 addition & 0 deletions test/e2e/framework/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ go_library(
"//vendor/github.com/onsi/ginkgo/config:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/github.com/onsi/gomega/types:go_default_library",
"//vendor/github.com/pkg/errors:go_default_library",
"//vendor/github.com/prometheus/common/expfmt:go_default_library",
"//vendor/github.com/prometheus/common/model:go_default_library",
"//vendor/golang.org/x/crypto/ssh:go_default_library",
Expand Down
5 changes: 4 additions & 1 deletion test/e2e/framework/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,11 @@ package framework

import (
"fmt"
"os"
"sync"

"github.com/pkg/errors"

"k8s.io/api/core/v1"
clientset "k8s.io/client-go/kubernetes"
)
Expand Down Expand Up @@ -66,7 +69,7 @@ func SetupProviderConfig(providerName string) (ProviderInterface, error) {
defer mutex.Unlock()
factory, ok := providers[providerName]
if !ok {
return nil, fmt.Errorf("The provider %s is unknown.", providerName)
return nil, errors.Wrapf(os.ErrNotExist, "The provider %s is unknown.", providerName)
}
provider, err := factory()

Expand Down
16 changes: 15 additions & 1 deletion test/e2e/framework/test_context.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (

"github.com/golang/glog"
"github.com/onsi/ginkgo/config"
"github.com/pkg/errors"
utilflag "k8s.io/apiserver/pkg/util/flag"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
Expand Down Expand Up @@ -366,7 +367,20 @@ func AfterReadingAllFlags(t *TestContextType) {
// Make sure that all test runs have a valid TestContext.CloudConfig.Provider.
var err error
TestContext.CloudConfig.Provider, err = SetupProviderConfig(TestContext.Provider)
if err == nil {
return
}
if !os.IsNotExist(errors.Cause(err)) {
Failf("Failed to setup provider config: %v", err)
}
// We allow unknown provider parameters for historic reasons. At least log a
// warning to catch typos.
// TODO (https://github.com/kubernetes/kubernetes/issues/70200):
// - remove the fallback for unknown providers
// - proper error message instead of Failf (which panics)
glog.Warningf("Unknown provider %q, proceeding as for --provider=skeleton.", TestContext.Provider)
TestContext.CloudConfig.Provider, err = SetupProviderConfig("skeleton")
if err != nil {
Failf("Failed to setup provide r config: %v", err)
Failf("Failed to setup fallback skeleton provider config: %v", err)
}
}

0 comments on commit bf08f5c

Please sign in to comment.