Change:
} // Make sure that all test runs have a valid TestContext.CloudConfig.Provider. <ins> // TODO: whether and how long this code is needed is getting discussed // in https://github.com/kubernetes/kubernetes/issues/70194. if TestContext.Provider == "" { // Some users of the e2e.test binary pass --provider=. // We need to support that, changing it would break those usages. Logf("The --provider flag is not set. Continuing as if --provider=skeleton had been used.") TestContext.Provider = "skeleton" } </ins> var err error TestContext.CloudConfig.Provider, err = SetupProviderConfig(TestContext.Provider) <del> 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) klog.Warningf("Unknown provider %q, proceeding as for --provider=skeleton.", TestContext.Provider) TestContext.CloudConfig.Provider, err = SetupProviderConfig("skeleton") </del> if err != nil { <del> Failf("Failed to setup fallback skeleton provider config: %v", err) </del> <ins> if os.IsNotExist(errors.Cause(err)) { // Provide a more helpful error message when the provider is unknown. var providers []string for _, name := range GetProviders() { // The empty string is accepted, but looks odd in the output below unless we quote it. if name == "" { name = `""` } providers = append(providers, name) } sort.Strings(providers) klog.Errorf("Unknown provider %q. The following providers are known: %v", TestContext.Provider, strings.Join(providers, " ")) } else { klog.Errorf("Failed to setup provider config for %q: %v", TestContext.Provider, err) } os.Exit(1) </ins> } }

Discussion:
<!-- This form is for bug reports and feature requests ONLY! If you're looking for help check and the . If the matter is security related, please disclose it privately via --Is this a BUG REPORT or FEATURE REQUEST?: /kind cleanup What happened: In PR we tightened the --provider parameter checking of the binary such that it only accepted known providers. This turned out to be problematic () because people had started to depend on the previous behavior, which was to accept anything and merely warn about it. For the sake of giving people time to adapt, PR reverted to the older behavior. What you expected to happen: In 1.14 we want to allow only known providers. While at it, the error handling for unknown providers should be enhanced (print proper error message instead of calling Failf, which panics). /assign /sig testing
Issues go stale after 90d of inactivity. Mark the issue as fresh with . Stale issues rot after an additional 30d of inactivity and eventually close. If this issue is safe to close now please do so with . Send feedback to sig-testing, kubernetes/test-infra and/or . /lifecycle stale
kubeadm was one of the tools which got broken by the tightening of the parameter checking. Does kubeadm still rely on the acceptance of unknown provider parameters or can the current warning be turned into an error now? /remove-lifecycle stale
yes the kubernetes-anywhere deployer is still bound to provider=kubernetes-anywhere (unknown) in test infra jobs. we went back and forth on this topic, but if you wish to replace this support for unknown deployers i can switch those jobs to . LMK.
given one release has passed with the deprecated message on the CLI, it's probably safe to remove this functionality now. :)
"Lubomir I. Ivanov" <: Yes, please do. Once that is complete, I'll turn the warning into an error.
done: