From 114d7855f3ecc8c21d743ccef5d8e8a7ad15c55c Mon Sep 17 00:00:00 2001 From: Marek Counts Date: Thu, 29 Aug 2019 20:14:05 +0000 Subject: [PATCH] Removal of kubernetes error dependancies removed kubernetes error deps --- cmd/kubeadm/app/preflight/checks.go | 4 +-- cmd/kubeadm/app/util/system/BUILD | 1 - .../app/util/system/cgroup_validator.go | 9 ++++-- .../app/util/system/docker_validator.go | 14 ++++----- .../app/util/system/kernel_validator.go | 16 +++++----- cmd/kubeadm/app/util/system/os_validator.go | 9 ++++-- .../app/util/system/package_validator.go | 14 ++++----- .../app/util/system/package_validator_test.go | 30 ++++++++++++------- cmd/kubeadm/app/util/system/validators.go | 18 ++++++----- test/e2e_node/e2e_node_suite_test.go | 2 +- 10 files changed, 67 insertions(+), 50 deletions(-) diff --git a/cmd/kubeadm/app/preflight/checks.go b/cmd/kubeadm/app/preflight/checks.go index 8df04ce0f3c..1f7c50721ae 100644 --- a/cmd/kubeadm/app/preflight/checks.go +++ b/cmd/kubeadm/app/preflight/checks.go @@ -546,10 +546,10 @@ func (sysver SystemVerificationCheck) Check() (warnings, errorList []error) { for _, v := range validators { warn, err := v.Validate(system.DefaultSysSpec) if err != nil { - errs = append(errs, err) + errs = append(errs, err...) } if warn != nil { - warns = append(warns, warn) + warns = append(warns, warn...) } } diff --git a/cmd/kubeadm/app/util/system/BUILD b/cmd/kubeadm/app/util/system/BUILD index 5a0d8a07473..d006476ad4b 100644 --- a/cmd/kubeadm/app/util/system/BUILD +++ b/cmd/kubeadm/app/util/system/BUILD @@ -23,7 +23,6 @@ go_library( ], importpath = "k8s.io/kubernetes/cmd/kubeadm/app/util/system", deps = [ - "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/github.com/blang/semver:go_default_library", "//vendor/github.com/pkg/errors:go_default_library", ], diff --git a/cmd/kubeadm/app/util/system/cgroup_validator.go b/cmd/kubeadm/app/util/system/cgroup_validator.go index 84dd007c34a..014088728d3 100644 --- a/cmd/kubeadm/app/util/system/cgroup_validator.go +++ b/cmd/kubeadm/app/util/system/cgroup_validator.go @@ -41,12 +41,15 @@ const ( ) // Validate is part of the system.Validator interface. -func (c *CgroupsValidator) Validate(spec SysSpec) (error, error) { +func (c *CgroupsValidator) Validate(spec SysSpec) ([]error, []error) { subsystems, err := c.getCgroupSubsystems() if err != nil { - return nil, errors.Wrap(err, "failed to get cgroup subsystems") + return nil, []error{errors.Wrap(err, "failed to get cgroup subsystems")} } - return nil, c.validateCgroupSubsystems(spec.Cgroups, subsystems) + if err = c.validateCgroupSubsystems(spec.Cgroups, subsystems); err != nil { + return nil, []error{err} + } + return nil, nil } func (c *CgroupsValidator) validateCgroupSubsystems(cgroupSpec, subsystems []string) error { diff --git a/cmd/kubeadm/app/util/system/docker_validator.go b/cmd/kubeadm/app/util/system/docker_validator.go index 4131bbb2f83..65126bf4ebd 100644 --- a/cmd/kubeadm/app/util/system/docker_validator.go +++ b/cmd/kubeadm/app/util/system/docker_validator.go @@ -51,7 +51,7 @@ const ( // Validate is part of the system.Validator interface. // TODO(random-liu): Add more validating items. -func (d *DockerValidator) Validate(spec SysSpec) (error, error) { +func (d *DockerValidator) Validate(spec SysSpec) ([]error, []error) { if spec.RuntimeSpec.DockerSpec == nil { // If DockerSpec is not specified, assume current runtime is not // docker, skip the docker configuration validation. @@ -62,10 +62,10 @@ func (d *DockerValidator) Validate(spec SysSpec) (error, error) { info := dockerInfo{} out, err := exec.Command("docker", "info", "--format", "{{json .}}").CombinedOutput() if err != nil { - return nil, errors.Errorf(`failed executing "docker info --format '{{json .}}'"\noutput: %s\nerror: %v`, string(out), err) + return nil, []error{errors.Errorf(`failed executing "docker info --format '{{json .}}'"\noutput: %s\nerror: %v`, string(out), err)} } if err := d.unmarshalDockerInfo(out, &info); err != nil { - return nil, err + return nil, []error{err} } // validate the resulted docker info object against the spec @@ -79,7 +79,7 @@ func (d *DockerValidator) unmarshalDockerInfo(b []byte, info *dockerInfo) error return nil } -func (d *DockerValidator) validateDockerInfo(spec *DockerSpec, info dockerInfo) (error, error) { +func (d *DockerValidator) validateDockerInfo(spec *DockerSpec, info dockerInfo) ([]error, []error) { // Validate docker version. matched := false for _, v := range spec.Version { @@ -101,10 +101,10 @@ func (d *DockerValidator) validateDockerInfo(spec *DockerSpec, info dockerInfo) info.ServerVersion, latestValidatedDockerVersion, ) - return w, nil + return []error{w}, nil } d.Reporter.Report(dockerConfigPrefix+"VERSION", info.ServerVersion, bad) - return nil, errors.Errorf("unsupported docker version: %s", info.ServerVersion) + return nil, []error{errors.Errorf("unsupported docker version: %s", info.ServerVersion)} } // Validate graph driver. item := dockerConfigPrefix + "GRAPH_DRIVER" @@ -115,5 +115,5 @@ func (d *DockerValidator) validateDockerInfo(spec *DockerSpec, info dockerInfo) } } d.Reporter.Report(item, info.Driver, bad) - return nil, errors.Errorf("unsupported graph driver: %s", info.Driver) + return nil, []error{errors.Errorf("unsupported graph driver: %s", info.Driver)} } diff --git a/cmd/kubeadm/app/util/system/kernel_validator.go b/cmd/kubeadm/app/util/system/kernel_validator.go index 153ca633aca..d2a8b9de032 100644 --- a/cmd/kubeadm/app/util/system/kernel_validator.go +++ b/cmd/kubeadm/app/util/system/kernel_validator.go @@ -30,8 +30,6 @@ import ( "strings" "github.com/pkg/errors" - - errorsutil "k8s.io/apimachinery/pkg/util/errors" ) var _ Validator = &KernelValidator{} @@ -63,20 +61,24 @@ const ( ) // Validate is part of the system.Validator interface. -func (k *KernelValidator) Validate(spec SysSpec) (error, error) { +func (k *KernelValidator) Validate(spec SysSpec) ([]error, []error) { helper := KernelValidatorHelperImpl{} release, err := helper.GetKernelReleaseVersion() if err != nil { - return nil, errors.Wrap(err, "failed to get kernel release") + return nil, []error{errors.Wrap(err, "failed to get kernel release")} } k.kernelRelease = release var errs []error - errs = append(errs, k.validateKernelVersion(spec.KernelSpec)) + if err = k.validateKernelVersion(spec.KernelSpec); err != nil { + errs = append(errs, err) + } // only validate kernel config when necessary (currently no kernel config for windows) if len(spec.KernelSpec.Required) > 0 || len(spec.KernelSpec.Forbidden) > 0 || len(spec.KernelSpec.Optional) > 0 { - errs = append(errs, k.validateKernelConfig(spec.KernelSpec)) + if err = k.validateKernelConfig(spec.KernelSpec); err != nil { + errs = append(errs, err) + } } - return nil, errorsutil.NewAggregate(errs) + return nil, errs } // validateKernelVersion validates the kernel version. diff --git a/cmd/kubeadm/app/util/system/os_validator.go b/cmd/kubeadm/app/util/system/os_validator.go index e4372b8975b..8a20e51ce21 100644 --- a/cmd/kubeadm/app/util/system/os_validator.go +++ b/cmd/kubeadm/app/util/system/os_validator.go @@ -36,12 +36,15 @@ func (o *OSValidator) Name() string { } // Validate is part of the system.Validator interface. -func (o *OSValidator) Validate(spec SysSpec) (error, error) { +func (o *OSValidator) Validate(spec SysSpec) ([]error, []error) { os, err := exec.Command("uname").CombinedOutput() if err != nil { - return nil, errors.Wrap(err, "failed to get os name") + return nil, []error{errors.Wrap(err, "failed to get os name")} } - return nil, o.validateOS(strings.TrimSpace(string(os)), spec.OS) + if err = o.validateOS(strings.TrimSpace(string(os)), spec.OS); err != nil { + return nil, []error{err} + } + return nil, nil } func (o *OSValidator) validateOS(os, specOS string) error { diff --git a/cmd/kubeadm/app/util/system/package_validator.go b/cmd/kubeadm/app/util/system/package_validator.go index 35a8e4fd170..ab7dc0c8e8d 100644 --- a/cmd/kubeadm/app/util/system/package_validator.go +++ b/cmd/kubeadm/app/util/system/package_validator.go @@ -24,8 +24,6 @@ import ( "github.com/blang/semver" "github.com/pkg/errors" - - errorsutil "k8s.io/apimachinery/pkg/util/errors" ) // semVerDotsCount is the number of dots in a valid semantic version. @@ -92,22 +90,22 @@ func (validator *packageValidator) Name() string { // Validate checks packages and their versions against the spec using the // package manager on the running machine, and returns an error on any // package/version mismatch. -func (validator *packageValidator) Validate(spec SysSpec) (error, error) { +func (validator *packageValidator) Validate(spec SysSpec) ([]error, []error) { if len(spec.PackageSpecs) == 0 { return nil, nil } var err error if validator.kernelRelease, err = getKernelRelease(); err != nil { - return nil, err + return nil, []error{err} } if validator.osDistro, err = getOSDistro(); err != nil { - return nil, err + return nil, []error{err} } manager, err := newPackageManager() if err != nil { - return nil, err + return nil, []error{err} } specs := applyPackageSpecOverride(spec.PackageSpecs, spec.PackageSpecOverrides, validator.osDistro) return validator.validate(specs, manager) @@ -115,7 +113,7 @@ func (validator *packageValidator) Validate(spec SysSpec) (error, error) { // Validate checks packages and their versions against the packageSpecs using // the packageManager, and returns an error on any package/version mismatch. -func (validator *packageValidator) validate(packageSpecs []PackageSpec, manager packageManager) (error, error) { +func (validator *packageValidator) validate(packageSpecs []PackageSpec, manager packageManager) ([]error, []error) { var errs []error for _, spec := range packageSpecs { // Substitute variables in package name. @@ -155,7 +153,7 @@ func (validator *packageValidator) validate(packageSpecs []PackageSpec, manager validator.reporter.Report(nameWithVerRange, version, bad) } } - return nil, errorsutil.NewAggregate(errs) + return nil, errs } // getKernelRelease returns the kernel release of the local machine. diff --git a/cmd/kubeadm/app/util/system/package_validator_test.go b/cmd/kubeadm/app/util/system/package_validator_test.go index c88956a6327..ddcd08a27ab 100644 --- a/cmd/kubeadm/app/util/system/package_validator_test.go +++ b/cmd/kubeadm/app/util/system/package_validator_test.go @@ -185,7 +185,7 @@ func TestValidatePackageVersion(t *testing.T) { for _, test := range []struct { desc string specs []PackageSpec - err error + errs []error }{ { desc: "all packages meet the spec", @@ -200,14 +200,18 @@ func TestValidatePackageVersion(t *testing.T) { {Name: "foo", VersionRange: ">=1.0"}, {Name: "bar", VersionRange: ">=3.0"}, }, - err: errors.New("package \"bar 2.1.0\" does not meet the spec \"bar (>=3.0)\""), + errs: []error{ + errors.New("package \"bar 2.1.0\" does not meet the spec \"bar (>=3.0)\""), + }, }, { desc: "package not installed", specs: []PackageSpec{ {Name: "baz"}, }, - err: errors.New("package \"baz\" does not exist"), + errs: []error{ + errors.New("package \"baz\" does not exist"), + }, }, { desc: "use variable in package name", @@ -217,15 +221,21 @@ func TestValidatePackageVersion(t *testing.T) { }, } { t.Run(test.desc, func(t *testing.T) { - _, err := v.validate(test.specs, manager) - if test.err == nil && err != nil { - t.Errorf("%s: v.validate(): err = %s", test.desc, err) + _, errs := v.validate(test.specs, manager) + if len(test.errs) == 0 && len(errs) > 0 { + t.Errorf("%s: v.validate(): err = %s", test.desc, errs) } - if test.err != nil { - if err == nil { + if len(test.errs) > 0 { + if len(errs) == 0 { t.Errorf("%s: v.validate() is expected to fail.", test.desc) - } else if test.err.Error() != err.Error() { - t.Errorf("%s: v.validate(): err = %q, want = %q", test.desc, err, test.err) + } else if len(errs) != len(test.errs) { + t.Errorf("%s: v.validate(): errs = %q, want = %q", test.desc, errs, test.errs) + } else { + for i, v := range test.errs { + if v.Error() != errs[i].Error() { + t.Errorf("%s: v.validate(): errs = %q, want = %q", test.desc, errs, test.errs) + } + } } } }) diff --git a/cmd/kubeadm/app/util/system/validators.go b/cmd/kubeadm/app/util/system/validators.go index 01daa0f3676..12dd8ca6284 100644 --- a/cmd/kubeadm/app/util/system/validators.go +++ b/cmd/kubeadm/app/util/system/validators.go @@ -18,8 +18,6 @@ package system import ( "fmt" - - errorsutil "k8s.io/apimachinery/pkg/util/errors" ) // Validator is the interface for all validators. @@ -27,7 +25,7 @@ type Validator interface { // Name is the name of the validator. Name() string // Validate is the validate function. - Validate(SysSpec) (error, error) + Validate(SysSpec) ([]error, []error) } // Reporter is the interface for the reporters for the validators. @@ -37,21 +35,25 @@ type Reporter interface { } // Validate uses validators to validate the system and returns a warning or error. -func Validate(spec SysSpec, validators []Validator) (error, error) { +func Validate(spec SysSpec, validators []Validator) ([]error, []error) { var errs []error var warns []error for _, v := range validators { fmt.Printf("Validating %s...\n", v.Name()) warn, err := v.Validate(spec) - errs = append(errs, err) - warns = append(warns, warn) + if len(err) != 0 { + errs = append(errs, err...) + } + if len(warn) != 0 { + warns = append(warns, warn...) + } } - return errorsutil.NewAggregate(warns), errorsutil.NewAggregate(errs) + return warns, errs } // ValidateSpec uses all default validators to validate the system and writes to stdout. -func ValidateSpec(spec SysSpec, runtime string) (error, error) { +func ValidateSpec(spec SysSpec, runtime string) ([]error, []error) { // OS-level validators. var osValidators = []Validator{ &OSValidator{Reporter: DefaultReporter}, diff --git a/test/e2e_node/e2e_node_suite_test.go b/test/e2e_node/e2e_node_suite_test.go index 84c1a6d9b94..7b3cfb7136d 100644 --- a/test/e2e_node/e2e_node_suite_test.go +++ b/test/e2e_node/e2e_node_suite_test.go @@ -125,7 +125,7 @@ func TestE2eNode(t *testing.T) { klog.Exitf("chroot %q failed: %v", rootfs, err) } } - if _, err := system.ValidateSpec(*spec, framework.TestContext.ContainerRuntime); err != nil { + if _, err := system.ValidateSpec(*spec, framework.TestContext.ContainerRuntime); len(err) != 0 { klog.Exitf("system validation failed: %v", err) } return