mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #113465 from chendave/golang_generic
kubeadm: bump to use golang generic
This commit is contained in:
commit
08160f7975
@ -238,7 +238,7 @@ func ValidateTokenGroups(usages []string, groups []string, fldPath *field.Path)
|
|||||||
allErrs := field.ErrorList{}
|
allErrs := field.ErrorList{}
|
||||||
|
|
||||||
// adding groups only makes sense for authentication
|
// adding groups only makes sense for authentication
|
||||||
usagesSet := sets.NewString(usages...)
|
usagesSet := sets.New(usages...)
|
||||||
usageAuthentication := strings.TrimPrefix(bootstrapapi.BootstrapTokenUsageAuthentication, bootstrapapi.BootstrapTokenUsagePrefix)
|
usageAuthentication := strings.TrimPrefix(bootstrapapi.BootstrapTokenUsageAuthentication, bootstrapapi.BootstrapTokenUsagePrefix)
|
||||||
if len(groups) > 0 && !usagesSet.Has(usageAuthentication) {
|
if len(groups) > 0 && !usagesSet.Has(usageAuthentication) {
|
||||||
allErrs = append(allErrs, field.Invalid(fldPath, groups, fmt.Sprintf("token groups cannot be specified unless --usages includes %q", usageAuthentication)))
|
allErrs = append(allErrs, field.Invalid(fldPath, groups, fmt.Sprintf("token groups cannot be specified unless --usages includes %q", usageAuthentication)))
|
||||||
@ -564,7 +564,7 @@ func ValidateMixedArguments(flag *pflag.FlagSet) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func isAllowedFlag(flagName string) bool {
|
func isAllowedFlag(flagName string) bool {
|
||||||
allowedFlags := sets.NewString(kubeadmcmdoptions.CfgPath,
|
allowedFlags := sets.New(kubeadmcmdoptions.CfgPath,
|
||||||
kubeadmcmdoptions.IgnorePreflightErrors,
|
kubeadmcmdoptions.IgnorePreflightErrors,
|
||||||
kubeadmcmdoptions.DryRun,
|
kubeadmcmdoptions.DryRun,
|
||||||
kubeadmcmdoptions.KubeconfigPath,
|
kubeadmcmdoptions.KubeconfigPath,
|
||||||
@ -603,8 +603,8 @@ func ValidateAPIEndpoint(c *kubeadm.APIEndpoint, fldPath *field.Path) field.Erro
|
|||||||
// ValidateIgnorePreflightErrors validates duplicates in:
|
// ValidateIgnorePreflightErrors validates duplicates in:
|
||||||
// - ignore-preflight-errors flag and
|
// - ignore-preflight-errors flag and
|
||||||
// - ignorePreflightErrors field in {Init,Join}Configuration files.
|
// - ignorePreflightErrors field in {Init,Join}Configuration files.
|
||||||
func ValidateIgnorePreflightErrors(ignorePreflightErrorsFromCLI, ignorePreflightErrorsFromConfigFile []string) (sets.String, error) {
|
func ValidateIgnorePreflightErrors(ignorePreflightErrorsFromCLI, ignorePreflightErrorsFromConfigFile []string) (sets.Set[string], error) {
|
||||||
ignoreErrors := sets.NewString()
|
ignoreErrors := sets.New[string]()
|
||||||
allErrs := field.ErrorList{}
|
allErrs := field.ErrorList{}
|
||||||
|
|
||||||
for _, item := range ignorePreflightErrorsFromConfigFile {
|
for _, item := range ignorePreflightErrorsFromConfigFile {
|
||||||
@ -623,7 +623,7 @@ func ValidateIgnorePreflightErrors(ignorePreflightErrorsFromCLI, ignorePreflight
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ignoreErrors.Has("all") && ignoreErrors.Len() > 1 {
|
if ignoreErrors.Has("all") && ignoreErrors.Len() > 1 {
|
||||||
allErrs = append(allErrs, field.Invalid(field.NewPath("ignore-preflight-errors"), strings.Join(ignoreErrors.List(), ","), "don't specify individual checks if 'all' is used"))
|
allErrs = append(allErrs, field.Invalid(field.NewPath("ignore-preflight-errors"), strings.Join(sets.List(ignoreErrors), ","), "don't specify individual checks if 'all' is used"))
|
||||||
}
|
}
|
||||||
|
|
||||||
return ignoreErrors, allErrs.ToAggregate()
|
return ignoreErrors, allErrs.ToAggregate()
|
||||||
|
@ -761,67 +761,67 @@ func TestValidateIgnorePreflightErrors(t *testing.T) {
|
|||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
ignorePreflightErrorsFromCLI []string
|
ignorePreflightErrorsFromCLI []string
|
||||||
ignorePreflightErrorsFromConfigFile []string
|
ignorePreflightErrorsFromConfigFile []string
|
||||||
expectedSet sets.String
|
expectedSet sets.Set[string]
|
||||||
expectedError bool
|
expectedError bool
|
||||||
}{
|
}{
|
||||||
{ // empty lists in CLI and config file
|
{ // empty lists in CLI and config file
|
||||||
[]string{},
|
[]string{},
|
||||||
[]string{},
|
[]string{},
|
||||||
sets.NewString(),
|
sets.New[string](),
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
{ // empty list in CLI only
|
{ // empty list in CLI only
|
||||||
[]string{},
|
[]string{},
|
||||||
[]string{"a"},
|
[]string{"a"},
|
||||||
sets.NewString("a"),
|
sets.New("a"),
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
{ // empty list in config file only
|
{ // empty list in config file only
|
||||||
[]string{"a"},
|
[]string{"a"},
|
||||||
[]string{},
|
[]string{},
|
||||||
sets.NewString("a"),
|
sets.New("a"),
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
{ // no duplicates, no overlap
|
{ // no duplicates, no overlap
|
||||||
[]string{"a", "b"},
|
[]string{"a", "b"},
|
||||||
[]string{"c", "d"},
|
[]string{"c", "d"},
|
||||||
sets.NewString("a", "b", "c", "d"),
|
sets.New("a", "b", "c", "d"),
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
{ // some duplicates, with some overlapping duplicates
|
{ // some duplicates, with some overlapping duplicates
|
||||||
[]string{"a", "b", "a"},
|
[]string{"a", "b", "a"},
|
||||||
[]string{"c", "b"},
|
[]string{"c", "b"},
|
||||||
sets.NewString("a", "b", "c"),
|
sets.New("a", "b", "c"),
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
{ // non-duplicate, but 'all' present together with individual checks in CLI
|
{ // non-duplicate, but 'all' present together with individual checks in CLI
|
||||||
[]string{"a", "b", "all"},
|
[]string{"a", "b", "all"},
|
||||||
[]string{},
|
[]string{},
|
||||||
sets.NewString(),
|
sets.New[string](),
|
||||||
true,
|
true,
|
||||||
},
|
},
|
||||||
{ // empty list in CLI, but 'all' present in config file, which is forbidden
|
{ // empty list in CLI, but 'all' present in config file, which is forbidden
|
||||||
[]string{},
|
[]string{},
|
||||||
[]string{"all"},
|
[]string{"all"},
|
||||||
sets.NewString(),
|
sets.New[string](),
|
||||||
true,
|
true,
|
||||||
},
|
},
|
||||||
{ // non-duplicate, but 'all' present in config file, which is forbidden
|
{ // non-duplicate, but 'all' present in config file, which is forbidden
|
||||||
[]string{"a", "b"},
|
[]string{"a", "b"},
|
||||||
[]string{"all"},
|
[]string{"all"},
|
||||||
sets.NewString(),
|
sets.New[string](),
|
||||||
true,
|
true,
|
||||||
},
|
},
|
||||||
{ // non-duplicate, but 'all' present in CLI, while values are in config file, which is forbidden
|
{ // non-duplicate, but 'all' present in CLI, while values are in config file, which is forbidden
|
||||||
[]string{"all"},
|
[]string{"all"},
|
||||||
[]string{"a", "b"},
|
[]string{"a", "b"},
|
||||||
sets.NewString(),
|
sets.New[string](),
|
||||||
true,
|
true,
|
||||||
},
|
},
|
||||||
{ // skip all checks
|
{ // skip all checks
|
||||||
[]string{"all"},
|
[]string{"all"},
|
||||||
[]string{},
|
[]string{},
|
||||||
sets.NewString("all"),
|
sets.New("all"),
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ type initData struct {
|
|||||||
dryRun bool
|
dryRun bool
|
||||||
kubeconfigDir string
|
kubeconfigDir string
|
||||||
kubeconfigPath string
|
kubeconfigPath string
|
||||||
ignorePreflightErrors sets.String
|
ignorePreflightErrors sets.Set[string]
|
||||||
certificatesDir string
|
certificatesDir string
|
||||||
dryRunDir string
|
dryRunDir string
|
||||||
externalCA bool
|
externalCA bool
|
||||||
@ -307,7 +307,7 @@ func newInitData(cmd *cobra.Command, args []string, options *initOptions, out io
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
// Also set the union of pre-flight errors to InitConfiguration, to provide a consistent view of the runtime configuration:
|
// Also set the union of pre-flight errors to InitConfiguration, to provide a consistent view of the runtime configuration:
|
||||||
cfg.NodeRegistration.IgnorePreflightErrors = ignorePreflightErrorsSet.List()
|
cfg.NodeRegistration.IgnorePreflightErrors = sets.List(ignorePreflightErrorsSet)
|
||||||
|
|
||||||
// override node name from the command line option
|
// override node name from the command line option
|
||||||
if options.externalInitCfg.NodeRegistration.Name != "" {
|
if options.externalInitCfg.NodeRegistration.Name != "" {
|
||||||
@ -416,7 +416,7 @@ func (d *initData) SkipTokenPrint() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// IgnorePreflightErrors returns the IgnorePreflightErrors flag.
|
// IgnorePreflightErrors returns the IgnorePreflightErrors flag.
|
||||||
func (d *initData) IgnorePreflightErrors() sets.String {
|
func (d *initData) IgnorePreflightErrors() sets.Set[string] {
|
||||||
return d.ignorePreflightErrors
|
return d.ignorePreflightErrors
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,13 +174,13 @@ func TestNewInitData(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func expectedInitIgnorePreflightErrors(expectedItems ...string) func(t *testing.T, data *initData) {
|
func expectedInitIgnorePreflightErrors(expectedItems ...string) func(t *testing.T, data *initData) {
|
||||||
expected := sets.NewString(expectedItems...)
|
expected := sets.New(expectedItems...)
|
||||||
return func(t *testing.T, data *initData) {
|
return func(t *testing.T, data *initData) {
|
||||||
if !expected.Equal(data.ignorePreflightErrors) {
|
if !expected.Equal(data.ignorePreflightErrors) {
|
||||||
t.Errorf("Invalid ignore preflight errors. Expected: %v. Actual: %v", expected.List(), data.ignorePreflightErrors.List())
|
t.Errorf("Invalid ignore preflight errors. Expected: %v. Actual: %v", sets.List(expected), sets.List(data.ignorePreflightErrors))
|
||||||
}
|
}
|
||||||
if !expected.HasAll(data.cfg.NodeRegistration.IgnorePreflightErrors...) {
|
if !expected.HasAll(data.cfg.NodeRegistration.IgnorePreflightErrors...) {
|
||||||
t.Errorf("Invalid ignore preflight errors in InitConfiguration. Expected: %v. Actual: %v", expected.List(), data.cfg.NodeRegistration.IgnorePreflightErrors)
|
t.Errorf("Invalid ignore preflight errors in InitConfiguration. Expected: %v. Actual: %v", sets.List(expected), data.cfg.NodeRegistration.IgnorePreflightErrors)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -147,7 +147,7 @@ type joinData struct {
|
|||||||
initCfg *kubeadmapi.InitConfiguration
|
initCfg *kubeadmapi.InitConfiguration
|
||||||
tlsBootstrapCfg *clientcmdapi.Config
|
tlsBootstrapCfg *clientcmdapi.Config
|
||||||
client clientset.Interface
|
client clientset.Interface
|
||||||
ignorePreflightErrors sets.String
|
ignorePreflightErrors sets.Set[string]
|
||||||
outputWriter io.Writer
|
outputWriter io.Writer
|
||||||
patchesDir string
|
patchesDir string
|
||||||
dryRun bool
|
dryRun bool
|
||||||
@ -432,7 +432,7 @@ func newJoinData(cmd *cobra.Command, args []string, opt *joinOptions, out io.Wri
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
// Also set the union of pre-flight errors to JoinConfiguration, to provide a consistent view of the runtime configuration:
|
// Also set the union of pre-flight errors to JoinConfiguration, to provide a consistent view of the runtime configuration:
|
||||||
cfg.NodeRegistration.IgnorePreflightErrors = ignorePreflightErrorsSet.List()
|
cfg.NodeRegistration.IgnorePreflightErrors = sets.List(ignorePreflightErrorsSet)
|
||||||
|
|
||||||
// override node name and CRI socket from the command line opt
|
// override node name and CRI socket from the command line opt
|
||||||
if opt.externalcfg.NodeRegistration.Name != "" {
|
if opt.externalcfg.NodeRegistration.Name != "" {
|
||||||
@ -558,7 +558,7 @@ func (j *joinData) Client() (clientset.Interface, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// IgnorePreflightErrors returns the list of preflight errors to ignore.
|
// IgnorePreflightErrors returns the list of preflight errors to ignore.
|
||||||
func (j *joinData) IgnorePreflightErrors() sets.String {
|
func (j *joinData) IgnorePreflightErrors() sets.Set[string] {
|
||||||
return j.ignorePreflightErrors
|
return j.ignorePreflightErrors
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,14 +236,14 @@ func TestNewJoinData(t *testing.T) {
|
|||||||
options.IgnorePreflightErrors: "a,b",
|
options.IgnorePreflightErrors: "a,b",
|
||||||
options.FileDiscovery: "https://foo", //required only to pass discovery validation
|
options.FileDiscovery: "https://foo", //required only to pass discovery validation
|
||||||
},
|
},
|
||||||
validate: expectedJoinIgnorePreflightErrors(sets.NewString("a", "b")),
|
validate: expectedJoinIgnorePreflightErrors(sets.New("a", "b")),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "pre-flights errors from JoinConfiguration only",
|
name: "pre-flights errors from JoinConfiguration only",
|
||||||
flags: map[string]string{
|
flags: map[string]string{
|
||||||
options.CfgPath: configFilePath,
|
options.CfgPath: configFilePath,
|
||||||
},
|
},
|
||||||
validate: expectedJoinIgnorePreflightErrors(sets.NewString("c", "d")),
|
validate: expectedJoinIgnorePreflightErrors(sets.New("c", "d")),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "pre-flights errors from both CLI args and JoinConfiguration",
|
name: "pre-flights errors from both CLI args and JoinConfiguration",
|
||||||
@ -251,7 +251,7 @@ func TestNewJoinData(t *testing.T) {
|
|||||||
options.CfgPath: configFilePath,
|
options.CfgPath: configFilePath,
|
||||||
options.IgnorePreflightErrors: "a,b",
|
options.IgnorePreflightErrors: "a,b",
|
||||||
},
|
},
|
||||||
validate: expectedJoinIgnorePreflightErrors(sets.NewString("a", "b", "c", "d")),
|
validate: expectedJoinIgnorePreflightErrors(sets.New("a", "b", "c", "d")),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "warn if --control-plane flag is not set",
|
name: "warn if --control-plane flag is not set",
|
||||||
@ -315,13 +315,13 @@ func TestNewJoinData(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func expectedJoinIgnorePreflightErrors(expected sets.String) func(t *testing.T, data *joinData) {
|
func expectedJoinIgnorePreflightErrors(expected sets.Set[string]) func(t *testing.T, data *joinData) {
|
||||||
return func(t *testing.T, data *joinData) {
|
return func(t *testing.T, data *joinData) {
|
||||||
if !expected.Equal(data.ignorePreflightErrors) {
|
if !expected.Equal(data.ignorePreflightErrors) {
|
||||||
t.Errorf("Invalid ignore preflight errors. Expected: %v. Actual: %v", expected.List(), data.ignorePreflightErrors.List())
|
t.Errorf("Invalid ignore preflight errors. Expected: %v. Actual: %v", sets.List(expected), sets.List(data.ignorePreflightErrors))
|
||||||
}
|
}
|
||||||
if !expected.HasAll(data.cfg.NodeRegistration.IgnorePreflightErrors...) {
|
if !expected.HasAll(data.cfg.NodeRegistration.IgnorePreflightErrors...) {
|
||||||
t.Errorf("Invalid ignore preflight errors in JoinConfiguration. Expected: %v. Actual: %v", expected.List(), data.cfg.NodeRegistration.IgnorePreflightErrors)
|
t.Errorf("Invalid ignore preflight errors in JoinConfiguration. Expected: %v. Actual: %v", sets.List(expected), data.cfg.NodeRegistration.IgnorePreflightErrors)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ type InitData interface {
|
|||||||
Cfg() *kubeadmapi.InitConfiguration
|
Cfg() *kubeadmapi.InitConfiguration
|
||||||
DryRun() bool
|
DryRun() bool
|
||||||
SkipTokenPrint() bool
|
SkipTokenPrint() bool
|
||||||
IgnorePreflightErrors() sets.String
|
IgnorePreflightErrors() sets.Set[string]
|
||||||
CertificateWriteDir() string
|
CertificateWriteDir() string
|
||||||
CertificateDir() string
|
CertificateDir() string
|
||||||
KubeConfigDir() string
|
KubeConfigDir() string
|
||||||
|
@ -31,22 +31,22 @@ type testInitData struct{}
|
|||||||
// testInitData must satisfy InitData.
|
// testInitData must satisfy InitData.
|
||||||
var _ InitData = &testInitData{}
|
var _ InitData = &testInitData{}
|
||||||
|
|
||||||
func (t *testInitData) UploadCerts() bool { return false }
|
func (t *testInitData) UploadCerts() bool { return false }
|
||||||
func (t *testInitData) CertificateKey() string { return "" }
|
func (t *testInitData) CertificateKey() string { return "" }
|
||||||
func (t *testInitData) SetCertificateKey(key string) {}
|
func (t *testInitData) SetCertificateKey(key string) {}
|
||||||
func (t *testInitData) SkipCertificateKeyPrint() bool { return false }
|
func (t *testInitData) SkipCertificateKeyPrint() bool { return false }
|
||||||
func (t *testInitData) Cfg() *kubeadmapi.InitConfiguration { return nil }
|
func (t *testInitData) Cfg() *kubeadmapi.InitConfiguration { return nil }
|
||||||
func (t *testInitData) DryRun() bool { return false }
|
func (t *testInitData) DryRun() bool { return false }
|
||||||
func (t *testInitData) SkipTokenPrint() bool { return false }
|
func (t *testInitData) SkipTokenPrint() bool { return false }
|
||||||
func (t *testInitData) IgnorePreflightErrors() sets.String { return nil }
|
func (t *testInitData) IgnorePreflightErrors() sets.Set[string] { return nil }
|
||||||
func (t *testInitData) CertificateWriteDir() string { return "" }
|
func (t *testInitData) CertificateWriteDir() string { return "" }
|
||||||
func (t *testInitData) CertificateDir() string { return "" }
|
func (t *testInitData) CertificateDir() string { return "" }
|
||||||
func (t *testInitData) KubeConfigDir() string { return "" }
|
func (t *testInitData) KubeConfigDir() string { return "" }
|
||||||
func (t *testInitData) KubeConfigPath() string { return "" }
|
func (t *testInitData) KubeConfigPath() string { return "" }
|
||||||
func (t *testInitData) ManifestDir() string { return "" }
|
func (t *testInitData) ManifestDir() string { return "" }
|
||||||
func (t *testInitData) KubeletDir() string { return "" }
|
func (t *testInitData) KubeletDir() string { return "" }
|
||||||
func (t *testInitData) ExternalCA() bool { return false }
|
func (t *testInitData) ExternalCA() bool { return false }
|
||||||
func (t *testInitData) OutputWriter() io.Writer { return nil }
|
func (t *testInitData) OutputWriter() io.Writer { return nil }
|
||||||
func (t *testInitData) Client() (clientset.Interface, error) { return nil, nil }
|
func (t *testInitData) Client() (clientset.Interface, error) { return nil, nil }
|
||||||
func (t *testInitData) Tokens() []string { return nil }
|
func (t *testInitData) Tokens() []string { return nil }
|
||||||
func (t *testInitData) PatchesDir() string { return "" }
|
func (t *testInitData) PatchesDir() string { return "" }
|
||||||
|
@ -34,7 +34,7 @@ type JoinData interface {
|
|||||||
TLSBootstrapCfg() (*clientcmdapi.Config, error)
|
TLSBootstrapCfg() (*clientcmdapi.Config, error)
|
||||||
InitCfg() (*kubeadmapi.InitConfiguration, error)
|
InitCfg() (*kubeadmapi.InitConfiguration, error)
|
||||||
Client() (clientset.Interface, error)
|
Client() (clientset.Interface, error)
|
||||||
IgnorePreflightErrors() sets.String
|
IgnorePreflightErrors() sets.Set[string]
|
||||||
OutputWriter() io.Writer
|
OutputWriter() io.Writer
|
||||||
PatchesDir() string
|
PatchesDir() string
|
||||||
DryRun() bool
|
DryRun() bool
|
||||||
|
@ -37,7 +37,7 @@ func (j *testJoinData) Cfg() *kubeadmapi.JoinConfiguration { return
|
|||||||
func (j *testJoinData) TLSBootstrapCfg() (*clientcmdapi.Config, error) { return nil, nil }
|
func (j *testJoinData) TLSBootstrapCfg() (*clientcmdapi.Config, error) { return nil, nil }
|
||||||
func (j *testJoinData) InitCfg() (*kubeadmapi.InitConfiguration, error) { return nil, nil }
|
func (j *testJoinData) InitCfg() (*kubeadmapi.InitConfiguration, error) { return nil, nil }
|
||||||
func (j *testJoinData) Client() (clientset.Interface, error) { return nil, nil }
|
func (j *testJoinData) Client() (clientset.Interface, error) { return nil, nil }
|
||||||
func (j *testJoinData) IgnorePreflightErrors() sets.String { return nil }
|
func (j *testJoinData) IgnorePreflightErrors() sets.Set[string] { return nil }
|
||||||
func (j *testJoinData) OutputWriter() io.Writer { return nil }
|
func (j *testJoinData) OutputWriter() io.Writer { return nil }
|
||||||
func (j *testJoinData) PatchesDir() string { return "" }
|
func (j *testJoinData) PatchesDir() string { return "" }
|
||||||
func (t *testJoinData) DryRun() bool { return false }
|
func (t *testJoinData) DryRun() bool { return false }
|
||||||
|
@ -30,7 +30,7 @@ import (
|
|||||||
type resetData interface {
|
type resetData interface {
|
||||||
ForceReset() bool
|
ForceReset() bool
|
||||||
InputReader() io.Reader
|
InputReader() io.Reader
|
||||||
IgnorePreflightErrors() sets.String
|
IgnorePreflightErrors() sets.Set[string]
|
||||||
Cfg() *kubeadmapi.InitConfiguration
|
Cfg() *kubeadmapi.InitConfiguration
|
||||||
DryRun() bool
|
DryRun() bool
|
||||||
Client() clientset.Interface
|
Client() clientset.Interface
|
||||||
|
@ -31,12 +31,12 @@ type testData struct{}
|
|||||||
// testData must satisfy resetData.
|
// testData must satisfy resetData.
|
||||||
var _ resetData = &testData{}
|
var _ resetData = &testData{}
|
||||||
|
|
||||||
func (t *testData) ForceReset() bool { return false }
|
func (t *testData) ForceReset() bool { return false }
|
||||||
func (t *testData) InputReader() io.Reader { return nil }
|
func (t *testData) InputReader() io.Reader { return nil }
|
||||||
func (t *testData) IgnorePreflightErrors() sets.String { return nil }
|
func (t *testData) IgnorePreflightErrors() sets.Set[string] { return nil }
|
||||||
func (t *testData) Cfg() *kubeadmapi.InitConfiguration { return nil }
|
func (t *testData) Cfg() *kubeadmapi.InitConfiguration { return nil }
|
||||||
func (t *testData) DryRun() bool { return false }
|
func (t *testData) DryRun() bool { return false }
|
||||||
func (t *testData) Client() clientset.Interface { return nil }
|
func (t *testData) Client() clientset.Interface { return nil }
|
||||||
func (t *testData) CertificatesDir() string { return "" }
|
func (t *testData) CertificatesDir() string { return "" }
|
||||||
func (t *testData) CRISocketPath() string { return "" }
|
func (t *testData) CRISocketPath() string { return "" }
|
||||||
func (t *testData) CleanupTmpDir() bool { return false }
|
func (t *testData) CleanupTmpDir() bool { return false }
|
||||||
|
@ -34,7 +34,7 @@ type Data interface {
|
|||||||
Cfg() *kubeadmapi.InitConfiguration
|
Cfg() *kubeadmapi.InitConfiguration
|
||||||
IsControlPlaneNode() bool
|
IsControlPlaneNode() bool
|
||||||
Client() clientset.Interface
|
Client() clientset.Interface
|
||||||
IgnorePreflightErrors() sets.String
|
IgnorePreflightErrors() sets.Set[string]
|
||||||
PatchesDir() string
|
PatchesDir() string
|
||||||
KubeConfigPath() string
|
KubeConfigPath() string
|
||||||
OutputWriter() io.Writer
|
OutputWriter() io.Writer
|
||||||
|
@ -31,13 +31,13 @@ type testData struct{}
|
|||||||
// testData must satisfy Data.
|
// testData must satisfy Data.
|
||||||
var _ Data = &testData{}
|
var _ Data = &testData{}
|
||||||
|
|
||||||
func (t *testData) EtcdUpgrade() bool { return false }
|
func (t *testData) EtcdUpgrade() bool { return false }
|
||||||
func (t *testData) RenewCerts() bool { return false }
|
func (t *testData) RenewCerts() bool { return false }
|
||||||
func (t *testData) DryRun() bool { return false }
|
func (t *testData) DryRun() bool { return false }
|
||||||
func (t *testData) Cfg() *kubeadmapi.InitConfiguration { return nil }
|
func (t *testData) Cfg() *kubeadmapi.InitConfiguration { return nil }
|
||||||
func (t *testData) IsControlPlaneNode() bool { return false }
|
func (t *testData) IsControlPlaneNode() bool { return false }
|
||||||
func (t *testData) Client() clientset.Interface { return nil }
|
func (t *testData) Client() clientset.Interface { return nil }
|
||||||
func (t *testData) IgnorePreflightErrors() sets.String { return nil }
|
func (t *testData) IgnorePreflightErrors() sets.Set[string] { return nil }
|
||||||
func (t *testData) PatchesDir() string { return "" }
|
func (t *testData) PatchesDir() string { return "" }
|
||||||
func (t *testData) KubeConfigPath() string { return "" }
|
func (t *testData) KubeConfigPath() string { return "" }
|
||||||
func (t *testData) OutputWriter() io.Writer { return nil }
|
func (t *testData) OutputWriter() io.Writer { return nil }
|
||||||
|
@ -76,7 +76,7 @@ type resetData struct {
|
|||||||
client clientset.Interface
|
client clientset.Interface
|
||||||
criSocketPath string
|
criSocketPath string
|
||||||
forceReset bool
|
forceReset bool
|
||||||
ignorePreflightErrors sets.String
|
ignorePreflightErrors sets.Set[string]
|
||||||
inputReader io.Reader
|
inputReader io.Reader
|
||||||
outputWriter io.Writer
|
outputWriter io.Writer
|
||||||
cfg *kubeadmapi.InitConfiguration
|
cfg *kubeadmapi.InitConfiguration
|
||||||
@ -116,7 +116,7 @@ func newResetData(cmd *cobra.Command, options *resetOptions, in io.Reader, out i
|
|||||||
}
|
}
|
||||||
if cfg != nil {
|
if cfg != nil {
|
||||||
// Also set the union of pre-flight errors to InitConfiguration, to provide a consistent view of the runtime configuration:
|
// Also set the union of pre-flight errors to InitConfiguration, to provide a consistent view of the runtime configuration:
|
||||||
cfg.NodeRegistration.IgnorePreflightErrors = ignorePreflightErrorsSet.List()
|
cfg.NodeRegistration.IgnorePreflightErrors = sets.List(ignorePreflightErrorsSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
var criSocketPath string
|
var criSocketPath string
|
||||||
@ -249,7 +249,7 @@ func (r *resetData) InputReader() io.Reader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// IgnorePreflightErrors returns the list of preflight errors to ignore.
|
// IgnorePreflightErrors returns the list of preflight errors to ignore.
|
||||||
func (r *resetData) IgnorePreflightErrors() sets.String {
|
func (r *resetData) IgnorePreflightErrors() sets.Set[string] {
|
||||||
return r.ignorePreflightErrors
|
return r.ignorePreflightErrors
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ func TestNewResetData(t *testing.T) {
|
|||||||
data: &resetData{
|
data: &resetData{
|
||||||
certificatesDir: "/tmp",
|
certificatesDir: "/tmp",
|
||||||
criSocketPath: "unix:///var/run/crio/crio.sock",
|
criSocketPath: "unix:///var/run/crio/crio.sock",
|
||||||
ignorePreflightErrors: sets.NewString("all"),
|
ignorePreflightErrors: sets.New("all"),
|
||||||
forceReset: true,
|
forceReset: true,
|
||||||
dryRun: true,
|
dryRun: true,
|
||||||
cleanupTmpDir: true,
|
cleanupTmpDir: true,
|
||||||
@ -67,7 +67,7 @@ func TestNewResetData(t *testing.T) {
|
|||||||
flags: map[string]string{
|
flags: map[string]string{
|
||||||
options.IgnorePreflightErrors: "a,b",
|
options.IgnorePreflightErrors: "a,b",
|
||||||
},
|
},
|
||||||
validate: expectedResetIgnorePreflightErrors(sets.NewString("a", "b")),
|
validate: expectedResetIgnorePreflightErrors(sets.New("a", "b")),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
@ -103,13 +103,13 @@ func TestNewResetData(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func expectedResetIgnorePreflightErrors(expected sets.String) func(t *testing.T, data *resetData) {
|
func expectedResetIgnorePreflightErrors(expected sets.Set[string]) func(t *testing.T, data *resetData) {
|
||||||
return func(t *testing.T, data *resetData) {
|
return func(t *testing.T, data *resetData) {
|
||||||
if !expected.Equal(data.ignorePreflightErrors) {
|
if !expected.Equal(data.ignorePreflightErrors) {
|
||||||
t.Errorf("Invalid ignore preflight errors. Expected: %v. Actual: %v", expected.List(), data.ignorePreflightErrors.List())
|
t.Errorf("Invalid ignore preflight errors. Expected: %v. Actual: %v", sets.List(expected), sets.List(data.ignorePreflightErrors))
|
||||||
}
|
}
|
||||||
if data.cfg != nil && !expected.HasAll(data.cfg.NodeRegistration.IgnorePreflightErrors...) {
|
if data.cfg != nil && !expected.HasAll(data.cfg.NodeRegistration.IgnorePreflightErrors...) {
|
||||||
t.Errorf("Invalid ignore preflight errors in InitConfiguration. Expected: %v. Actual: %v", expected.List(), data.cfg.NodeRegistration.IgnorePreflightErrors)
|
t.Errorf("Invalid ignore preflight errors in InitConfiguration. Expected: %v. Actual: %v", sets.List(expected), data.cfg.NodeRegistration.IgnorePreflightErrors)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -143,7 +143,7 @@ func runApply(flags *applyFlags, args []string) error {
|
|||||||
fmt.Println("[upgrade/prepull] Pulling images required for setting up a Kubernetes cluster")
|
fmt.Println("[upgrade/prepull] Pulling images required for setting up a Kubernetes cluster")
|
||||||
fmt.Println("[upgrade/prepull] This might take a minute or two, depending on the speed of your internet connection")
|
fmt.Println("[upgrade/prepull] This might take a minute or two, depending on the speed of your internet connection")
|
||||||
fmt.Println("[upgrade/prepull] You can also perform this action in beforehand using 'kubeadm config images pull'")
|
fmt.Println("[upgrade/prepull] You can also perform this action in beforehand using 'kubeadm config images pull'")
|
||||||
if err := preflight.RunPullImagesCheck(utilsexec.New(), cfg, sets.NewString(cfg.NodeRegistration.IgnorePreflightErrors...)); err != nil {
|
if err := preflight.RunPullImagesCheck(utilsexec.New(), cfg, sets.New(cfg.NodeRegistration.IgnorePreflightErrors...)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -164,7 +164,7 @@ func runApply(flags *applyFlags, args []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if flags.dryRun {
|
if flags.dryRun {
|
||||||
fmt.Println("[upgrade/successful] Finished dryrunning successfully!")
|
fmt.Println("[upgrade/successful] Finished dryrunning successfully!")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ func enforceRequirements(flags *applyPlanFlags, args []string, dryRun bool, upgr
|
|||||||
return nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
}
|
}
|
||||||
// Also set the union of pre-flight errors to InitConfiguration, to provide a consistent view of the runtime configuration:
|
// Also set the union of pre-flight errors to InitConfiguration, to provide a consistent view of the runtime configuration:
|
||||||
cfg.NodeRegistration.IgnorePreflightErrors = ignorePreflightErrorsSet.List()
|
cfg.NodeRegistration.IgnorePreflightErrors = sets.List(ignorePreflightErrorsSet)
|
||||||
|
|
||||||
// Ensure the user is root
|
// Ensure the user is root
|
||||||
klog.V(1).Info("running preflight checks")
|
klog.V(1).Info("running preflight checks")
|
||||||
@ -234,7 +234,7 @@ func printConfiguration(clustercfg *kubeadmapi.ClusterConfiguration, w io.Writer
|
|||||||
}
|
}
|
||||||
|
|
||||||
// runPreflightChecks runs the root preflight check
|
// runPreflightChecks runs the root preflight check
|
||||||
func runPreflightChecks(client clientset.Interface, ignorePreflightErrors sets.String, cfg *kubeadmapi.ClusterConfiguration, printer output.Printer) error {
|
func runPreflightChecks(client clientset.Interface, ignorePreflightErrors sets.Set[string], cfg *kubeadmapi.ClusterConfiguration, printer output.Printer) error {
|
||||||
printer.Printf("[preflight] Running pre-flight checks.\n")
|
printer.Printf("[preflight] Running pre-flight checks.\n")
|
||||||
err := preflight.RunRootCheckOnly(ignorePreflightErrors)
|
err := preflight.RunRootCheckOnly(ignorePreflightErrors)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -61,7 +61,7 @@ type nodeData struct {
|
|||||||
isControlPlaneNode bool
|
isControlPlaneNode bool
|
||||||
client clientset.Interface
|
client clientset.Interface
|
||||||
patchesDir string
|
patchesDir string
|
||||||
ignorePreflightErrors sets.String
|
ignorePreflightErrors sets.Set[string]
|
||||||
kubeConfigPath string
|
kubeConfigPath string
|
||||||
outputWriter io.Writer
|
outputWriter io.Writer
|
||||||
}
|
}
|
||||||
@ -151,8 +151,7 @@ func newNodeData(cmd *cobra.Command, args []string, options *nodeOptions, out io
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
// Also set the union of pre-flight errors to JoinConfiguration, to provide a consistent view of the runtime configuration:
|
// Also set the union of pre-flight errors to JoinConfiguration, to provide a consistent view of the runtime configuration:
|
||||||
cfg.NodeRegistration.IgnorePreflightErrors = ignorePreflightErrorsSet.List()
|
cfg.NodeRegistration.IgnorePreflightErrors = sets.List(ignorePreflightErrorsSet)
|
||||||
|
|
||||||
return &nodeData{
|
return &nodeData{
|
||||||
etcdUpgrade: options.etcdUpgrade,
|
etcdUpgrade: options.etcdUpgrade,
|
||||||
renewCerts: options.renewCerts,
|
renewCerts: options.renewCerts,
|
||||||
@ -203,7 +202,7 @@ func (d *nodeData) PatchesDir() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// IgnorePreflightErrors returns the list of preflight errors to ignore.
|
// IgnorePreflightErrors returns the list of preflight errors to ignore.
|
||||||
func (d *nodeData) IgnorePreflightErrors() sets.String {
|
func (d *nodeData) IgnorePreflightErrors() sets.Set[string] {
|
||||||
return d.ignorePreflightErrors
|
return d.ignorePreflightErrors
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -530,9 +530,9 @@ func errorDiffArguments(t *testing.T, name string, actual, expected []string) {
|
|||||||
// removeCommon removes common items from left list
|
// removeCommon removes common items from left list
|
||||||
// makes compairing two cmdline (with lots of arguments) easier
|
// makes compairing two cmdline (with lots of arguments) easier
|
||||||
func removeCommon(left, right []string) []string {
|
func removeCommon(left, right []string) []string {
|
||||||
origSet := sets.NewString(left...)
|
origSet := sets.New(left...)
|
||||||
origSet.Delete(right...)
|
origSet.Delete(right...)
|
||||||
return origSet.List()
|
return sets.List(origSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetControllerManagerCommand(t *testing.T) {
|
func TestGetControllerManagerCommand(t *testing.T) {
|
||||||
|
@ -175,7 +175,7 @@ func (c *controlPlaneHostPathMounts) addComponentVolumeMount(component string, v
|
|||||||
// getEtcdCertVolumes returns the volumes/volumemounts needed for talking to an external etcd cluster
|
// getEtcdCertVolumes returns the volumes/volumemounts needed for talking to an external etcd cluster
|
||||||
func getEtcdCertVolumes(etcdCfg *kubeadmapi.ExternalEtcd, k8sCertificatesDir string) ([]v1.Volume, []v1.VolumeMount) {
|
func getEtcdCertVolumes(etcdCfg *kubeadmapi.ExternalEtcd, k8sCertificatesDir string) ([]v1.Volume, []v1.VolumeMount) {
|
||||||
certPaths := []string{etcdCfg.CAFile, etcdCfg.CertFile, etcdCfg.KeyFile}
|
certPaths := []string{etcdCfg.CAFile, etcdCfg.CertFile, etcdCfg.KeyFile}
|
||||||
certDirs := sets.NewString()
|
certDirs := sets.New[string]()
|
||||||
for _, certPath := range certPaths {
|
for _, certPath := range certPaths {
|
||||||
certDir := filepath.ToSlash(filepath.Dir(certPath))
|
certDir := filepath.ToSlash(filepath.Dir(certPath))
|
||||||
// Ignore ".", which is the result of passing an empty path.
|
// Ignore ".", which is the result of passing an empty path.
|
||||||
@ -193,7 +193,7 @@ func getEtcdCertVolumes(etcdCfg *kubeadmapi.ExternalEtcd, k8sCertificatesDir str
|
|||||||
}
|
}
|
||||||
// Filter out any existing hostpath mounts in the list that contains a subset of the path
|
// Filter out any existing hostpath mounts in the list that contains a subset of the path
|
||||||
alreadyExists := false
|
alreadyExists := false
|
||||||
for _, existingCertDir := range certDirs.List() {
|
for _, existingCertDir := range sets.List(certDirs) {
|
||||||
// If the current directory is a parent of an existing one, remove the already existing one
|
// If the current directory is a parent of an existing one, remove the already existing one
|
||||||
if strings.HasPrefix(existingCertDir, certDir) {
|
if strings.HasPrefix(existingCertDir, certDir) {
|
||||||
certDirs.Delete(existingCertDir)
|
certDirs.Delete(existingCertDir)
|
||||||
@ -211,7 +211,7 @@ func getEtcdCertVolumes(etcdCfg *kubeadmapi.ExternalEtcd, k8sCertificatesDir str
|
|||||||
volumes := []v1.Volume{}
|
volumes := []v1.Volume{}
|
||||||
volumeMounts := []v1.VolumeMount{}
|
volumeMounts := []v1.VolumeMount{}
|
||||||
pathType := v1.HostPathDirectoryOrCreate
|
pathType := v1.HostPathDirectoryOrCreate
|
||||||
for i, certDir := range certDirs.List() {
|
for i, certDir := range sets.List(certDirs) {
|
||||||
name := fmt.Sprintf("etcd-certs-%d", i)
|
name := fmt.Sprintf("etcd-certs-%d", i)
|
||||||
volumes = append(volumes, staticpodutil.NewVolume(name, certDir, &pathType))
|
volumes = append(volumes, staticpodutil.NewVolume(name, certDir, &pathType))
|
||||||
volumeMounts = append(volumeMounts, staticpodutil.NewVolumeMount(name, certDir, true))
|
volumeMounts = append(volumeMounts, staticpodutil.NewVolumeMount(name, certDir, true))
|
||||||
|
@ -66,7 +66,7 @@ func (c *healthCheck) Name() string {
|
|||||||
// - the API /healthz endpoint is healthy
|
// - the API /healthz endpoint is healthy
|
||||||
// - all control-plane Nodes are Ready
|
// - all control-plane Nodes are Ready
|
||||||
// - (if static pod-hosted) that all required Static Pod manifests exist on disk
|
// - (if static pod-hosted) that all required Static Pod manifests exist on disk
|
||||||
func CheckClusterHealth(client clientset.Interface, cfg *kubeadmapi.ClusterConfiguration, ignoreChecksErrors sets.String) error {
|
func CheckClusterHealth(client clientset.Interface, cfg *kubeadmapi.ClusterConfiguration, ignoreChecksErrors sets.Set[string]) error {
|
||||||
fmt.Println("[upgrade] Running cluster health checks")
|
fmt.Println("[upgrade] Running cluster health checks")
|
||||||
|
|
||||||
healthChecks := []preflight.Checker{
|
healthChecks := []preflight.Checker{
|
||||||
|
@ -54,7 +54,7 @@ func (c CoreDNSCheck) Check() (warnings, errors []error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RunCoreDNSMigrationCheck initializes checks related to CoreDNS migration.
|
// RunCoreDNSMigrationCheck initializes checks related to CoreDNS migration.
|
||||||
func RunCoreDNSMigrationCheck(client clientset.Interface, ignorePreflightErrors sets.String) error {
|
func RunCoreDNSMigrationCheck(client clientset.Interface, ignorePreflightErrors sets.Set[string]) error {
|
||||||
migrationChecks := []preflight.Checker{
|
migrationChecks := []preflight.Checker{
|
||||||
&CoreDNSCheck{
|
&CoreDNSCheck{
|
||||||
name: "CoreDNSUnsupportedPlugins",
|
name: "CoreDNSUnsupportedPlugins",
|
||||||
|
@ -892,7 +892,7 @@ func (MemCheck) Name() string {
|
|||||||
// The boolean flag 'isSecondaryControlPlane' controls whether we are running checks in a --join-control-plane scenario.
|
// The boolean flag 'isSecondaryControlPlane' controls whether we are running checks in a --join-control-plane scenario.
|
||||||
// The boolean flag 'downloadCerts' controls whether we should skip checks on certificates because we are downloading them.
|
// The boolean flag 'downloadCerts' controls whether we should skip checks on certificates because we are downloading them.
|
||||||
// If the flag is set to true we should skip checks already executed by RunJoinNodeChecks.
|
// If the flag is set to true we should skip checks already executed by RunJoinNodeChecks.
|
||||||
func RunInitNodeChecks(execer utilsexec.Interface, cfg *kubeadmapi.InitConfiguration, ignorePreflightErrors sets.String, isSecondaryControlPlane bool, downloadCerts bool) error {
|
func RunInitNodeChecks(execer utilsexec.Interface, cfg *kubeadmapi.InitConfiguration, ignorePreflightErrors sets.Set[string], isSecondaryControlPlane bool, downloadCerts bool) error {
|
||||||
if !isSecondaryControlPlane {
|
if !isSecondaryControlPlane {
|
||||||
// First, check if we're root separately from the other preflight checks and fail fast
|
// First, check if we're root separately from the other preflight checks and fail fast
|
||||||
if err := RunRootCheckOnly(ignorePreflightErrors); err != nil {
|
if err := RunRootCheckOnly(ignorePreflightErrors); err != nil {
|
||||||
@ -972,7 +972,7 @@ func RunInitNodeChecks(execer utilsexec.Interface, cfg *kubeadmapi.InitConfigura
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RunJoinNodeChecks executes all individual, applicable to node checks.
|
// RunJoinNodeChecks executes all individual, applicable to node checks.
|
||||||
func RunJoinNodeChecks(execer utilsexec.Interface, cfg *kubeadmapi.JoinConfiguration, ignorePreflightErrors sets.String) error {
|
func RunJoinNodeChecks(execer utilsexec.Interface, cfg *kubeadmapi.JoinConfiguration, ignorePreflightErrors sets.Set[string]) error {
|
||||||
// First, check if we're root separately from the other preflight checks and fail fast
|
// First, check if we're root separately from the other preflight checks and fail fast
|
||||||
if err := RunRootCheckOnly(ignorePreflightErrors); err != nil {
|
if err := RunRootCheckOnly(ignorePreflightErrors); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -1049,7 +1049,7 @@ func addCommonChecks(execer utilsexec.Interface, k8sVersion string, nodeReg *kub
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RunRootCheckOnly initializes checks slice of structs and call RunChecks
|
// RunRootCheckOnly initializes checks slice of structs and call RunChecks
|
||||||
func RunRootCheckOnly(ignorePreflightErrors sets.String) error {
|
func RunRootCheckOnly(ignorePreflightErrors sets.Set[string]) error {
|
||||||
checks := []Checker{
|
checks := []Checker{
|
||||||
IsPrivilegedUserCheck{},
|
IsPrivilegedUserCheck{},
|
||||||
}
|
}
|
||||||
@ -1058,7 +1058,7 @@ func RunRootCheckOnly(ignorePreflightErrors sets.String) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RunPullImagesCheck will pull images kubeadm needs if they are not found on the system
|
// RunPullImagesCheck will pull images kubeadm needs if they are not found on the system
|
||||||
func RunPullImagesCheck(execer utilsexec.Interface, cfg *kubeadmapi.InitConfiguration, ignorePreflightErrors sets.String) error {
|
func RunPullImagesCheck(execer utilsexec.Interface, cfg *kubeadmapi.InitConfiguration, ignorePreflightErrors sets.Set[string]) error {
|
||||||
containerRuntime, err := utilruntime.NewContainerRuntime(utilsexec.New(), cfg.NodeRegistration.CRISocket)
|
containerRuntime, err := utilruntime.NewContainerRuntime(utilsexec.New(), cfg.NodeRegistration.CRISocket)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &Error{Msg: err.Error()}
|
return &Error{Msg: err.Error()}
|
||||||
@ -1072,7 +1072,7 @@ func RunPullImagesCheck(execer utilsexec.Interface, cfg *kubeadmapi.InitConfigur
|
|||||||
|
|
||||||
// RunChecks runs each check, displays it's warnings/errors, and once all
|
// RunChecks runs each check, displays it's warnings/errors, and once all
|
||||||
// are processed will exit if any errors occurred.
|
// are processed will exit if any errors occurred.
|
||||||
func RunChecks(checks []Checker, ww io.Writer, ignorePreflightErrors sets.String) error {
|
func RunChecks(checks []Checker, ww io.Writer, ignorePreflightErrors sets.Set[string]) error {
|
||||||
var errsBuffer bytes.Buffer
|
var errsBuffer bytes.Buffer
|
||||||
|
|
||||||
for _, c := range checks {
|
for _, c := range checks {
|
||||||
@ -1099,7 +1099,7 @@ func RunChecks(checks []Checker, ww io.Writer, ignorePreflightErrors sets.String
|
|||||||
}
|
}
|
||||||
|
|
||||||
// setHasItemOrAll is helper function that return true if item is present in the set (case insensitive) or special key 'all' is present
|
// setHasItemOrAll is helper function that return true if item is present in the set (case insensitive) or special key 'all' is present
|
||||||
func setHasItemOrAll(s sets.String, item string) bool {
|
func setHasItemOrAll(s sets.Set[string], item string) bool {
|
||||||
if s.Has("all") || s.Has(strings.ToLower(item)) {
|
if s.Has("all") || s.Has(strings.ToLower(item)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -436,7 +436,7 @@ func TestRunChecks(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, rt := range tokenTest {
|
for _, rt := range tokenTest {
|
||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
actual := RunChecks(rt.p, buf, sets.NewString())
|
actual := RunChecks(rt.p, buf, sets.New[string]())
|
||||||
if (actual == nil) != rt.expected {
|
if (actual == nil) != rt.expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"failed RunChecks:\n\texpected: %t\n\t actual: %t",
|
"failed RunChecks:\n\texpected: %t\n\t actual: %t",
|
||||||
@ -836,16 +836,16 @@ func TestKubeletVersionCheck(t *testing.T) {
|
|||||||
|
|
||||||
func TestSetHasItemOrAll(t *testing.T) {
|
func TestSetHasItemOrAll(t *testing.T) {
|
||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
ignoreSet sets.String
|
ignoreSet sets.Set[string]
|
||||||
testString string
|
testString string
|
||||||
expectedResult bool
|
expectedResult bool
|
||||||
}{
|
}{
|
||||||
{sets.NewString(), "foo", false},
|
{sets.New[string](), "foo", false},
|
||||||
{sets.NewString("all"), "foo", true},
|
{sets.New("all"), "foo", true},
|
||||||
{sets.NewString("all", "bar"), "foo", true},
|
{sets.New("all", "bar"), "foo", true},
|
||||||
{sets.NewString("bar"), "foo", false},
|
{sets.New("bar"), "foo", false},
|
||||||
{sets.NewString("baz", "foo", "bar"), "foo", true},
|
{sets.New("baz", "foo", "bar"), "foo", true},
|
||||||
{sets.NewString("baz", "bar", "foo"), "Foo", true},
|
{sets.New("baz", "bar", "foo"), "Foo", true},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, rt := range tests {
|
for _, rt := range tests {
|
||||||
|
@ -500,7 +500,7 @@ func getAltNames(cfg *kubeadmapi.InitConfiguration, certName string) (*certutil.
|
|||||||
// valid IP address strings are parsed and added to altNames.IPs as net.IP's
|
// valid IP address strings are parsed and added to altNames.IPs as net.IP's
|
||||||
// RFC-1123 compliant DNS strings are added to altNames.DNSNames as strings
|
// RFC-1123 compliant DNS strings are added to altNames.DNSNames as strings
|
||||||
// RFC-1123 compliant wildcard DNS strings are added to altNames.DNSNames as strings
|
// RFC-1123 compliant wildcard DNS strings are added to altNames.DNSNames as strings
|
||||||
// certNames is used to print user facing warnings and should be the name of the cert the altNames will be used for
|
// certNames is used to print user facing warnings and should be the name of the cert the altNames will be used for
|
||||||
func appendSANsToAltNames(altNames *certutil.AltNames, SANs []string, certName string) {
|
func appendSANsToAltNames(altNames *certutil.AltNames, SANs []string, certName string) {
|
||||||
for _, altname := range SANs {
|
for _, altname := range SANs {
|
||||||
if ip := netutils.ParseIPSloppy(altname); ip != nil {
|
if ip := netutils.ParseIPSloppy(altname); ip != nil {
|
||||||
@ -680,7 +680,7 @@ func RemoveDuplicateAltNames(altNames *certutil.AltNames) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if altNames.DNSNames != nil {
|
if altNames.DNSNames != nil {
|
||||||
altNames.DNSNames = sets.NewString(altNames.DNSNames...).List()
|
altNames.DNSNames = sets.List(sets.New(altNames.DNSNames...))
|
||||||
}
|
}
|
||||||
|
|
||||||
ipsKeys := make(map[string]struct{})
|
ipsKeys := make(map[string]struct{})
|
||||||
|
Loading…
Reference in New Issue
Block a user