Skip to content

Commit 1e0d9c3

Browse files
authored
Merge pull request #37 from pacoxu/cgroupv2-kernel-min-4.15
kernel version should be 4.19+; recommend version 5.8 for cgroup v2
2 parents 592c212 + e6e7785 commit 1e0d9c3

File tree

5 files changed

+42
-12
lines changed

5 files changed

+42
-12
lines changed

validators/kernel_validator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func (k *KernelValidator) validateKernelVersion(kSpec KernelSpec) error {
9090
}
9191
}
9292
k.Reporter.Report("KERNEL_VERSION", k.kernelRelease, bad)
93-
return fmt.Errorf("unsupported kernel release: %s", k.kernelRelease)
93+
return fmt.Errorf("kernel release %s is unsupported. %s", k.kernelRelease, kSpec.VersionsNote)
9494
}
9595

9696
// validateKernelConfig validates the kernel configurations.

validators/kernel_validator_test.go

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,45 @@ func TestValidateKernelVersion(t *testing.T) {
3131
// they may be different.
3232
// This is fine, because the test mainly tests the kernel version validation logic,
3333
// not the DefaultSysSpec. The DefaultSysSpec should be tested with node e2e.
34-
testRegex := []string{`^3\.[1-9][0-9].*$`, `^([4-9]|[1-9][0-9]+)\.([0-9]+)\.([0-9]+).*$`}
34+
testRegex := []string{`^4\.19.*$`, `^4\.[2-9][0-9].*$`, `^([5-9]|[1-9][0-9]+)\.([0-9]+)\.([0-9]+).*$`}
3535
for _, test := range []struct {
3636
name string
3737
version string
3838
err bool
3939
}{
4040
{
41-
name: "3.19.9-99-test first version regex matches",
41+
name: "3.19.9-99-test no version regex matches",
4242
version: "3.19.9-99-test",
43-
err: false,
43+
err: true,
4444
},
4545
{
46-
name: "4.4.14+ one of version regexes matches",
46+
name: "4.4.14+ no version regex matches",
4747
version: "4.4.14+",
48+
err: true,
49+
},
50+
{
51+
name: "4.7.1 no version regex matches",
52+
version: "4.7.1",
53+
err: true,
54+
},
55+
{
56+
name: "4.17.3 no version regex matches",
57+
version: "4.17.3",
58+
err: true,
59+
},
60+
{
61+
name: "4.19.3-99-test matches",
62+
version: "4.19.3-99-test",
63+
err: false,
64+
},
65+
{
66+
name: "4.20.3+ matches",
67+
version: "4.20.3+",
68+
err: false,
69+
},
70+
{
71+
name: "5.12.3 matches",
72+
version: "5.12.3",
4873
err: false,
4974
},
5075
{
@@ -79,7 +104,7 @@ func TestValidateKernelVersion(t *testing.T) {
79104
if !test.err {
80105
assert.Nil(t, err, "Expect error not to occur with kernel version %q", test.version)
81106
} else {
82-
assert.NotNil(t, err, "Expect error to occur with kenrel version %q", test.version)
107+
assert.NotNil(t, err, "Expect error to occur with kernel version %q", test.version)
83108
}
84109
})
85110
}
@@ -189,7 +214,7 @@ func TestValidateCachedKernelConfig(t *testing.T) {
189214
if !test.err {
190215
assert.Nil(t, err, "Expect error not to occur with kernel config %q", test.config)
191216
} else {
192-
assert.NotNil(t, err, "Expect error to occur with kenrel config %q", test.config)
217+
assert.NotNil(t, err, "Expect error to occur with kernel config %q", test.config)
193218
}
194219
})
195220
}

validators/types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ type KernelConfig struct {
4242
type KernelSpec struct {
4343
// Versions define supported kernel version. It is a group of regexps.
4444
Versions []string `json:"versions,omitempty"`
45+
// VersionsNote provides additional information if Versions do not match.
46+
VersionsNote string `json:"versionsNote,omitempty"`
4547
// Required contains all kernel configurations required to be enabled
4648
// (built in or as module).
4749
Required []KernelConfig `json:"required,omitempty"`

validators/types_unix.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ import (
2828
var DefaultSysSpec = SysSpec{
2929
OS: "Linux",
3030
KernelSpec: KernelSpec{
31-
Versions: []string{`^3\.[1-9][0-9].*$`, `^([4-9]|[1-9][0-9]+)\.([0-9]+)\.([0-9]+).*$`}, // Requires 3.10+, or newer
31+
// 4.19 is an active kernel Long Term Support (LTS) release, tracked in https://www.kernel.org/category/releases.html.
32+
Versions: []string{`^4\.19.*$`, `^4\.[2-9][0-9].*$`, `^([5-9]|[1-9][0-9]+)\.([0-9]+)\.([0-9]+).*$`},
33+
VersionsNote: "Recommended LTS version from the 4.x series is 4.19. Any 5.x or 6.x versions are also supported. For cgroups v2 support, the minimal version is 4.15 and the recommended version is 5.8+",
3234
// TODO(random-liu): Add more config
3335
// TODO(random-liu): Add description for each kernel configuration:
3436
Required: []KernelConfig{

validators/types_windows.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@ import (
2828
var DefaultSysSpec = SysSpec{
2929
OS: "Microsoft Windows Server 2016",
3030
KernelSpec: KernelSpec{
31-
Versions: []string{`10\.0\.1439[3-9]`, `10\.0\.14[4-9][0-9]{2}`, `10\.0\.1[5-9][0-9]{3}`, `10\.0\.[2-9][0-9]{4}`, `10\.[1-9]+\.[0-9]+`}, //requires >= '10.0.14393'
32-
Required: []KernelConfig{},
33-
Optional: []KernelConfig{},
34-
Forbidden: []KernelConfig{},
31+
Versions: []string{`10\.0\.1439[3-9]`, `10\.0\.14[4-9][0-9]{2}`, `10\.0\.1[5-9][0-9]{3}`, `10\.0\.[2-9][0-9]{4}`, `10\.[1-9]+\.[0-9]+`}, //requires >= '10.0.14393'
32+
VersionsNote: "The kernel version should be >= '10.0.14393'",
33+
Required: []KernelConfig{},
34+
Optional: []KernelConfig{},
35+
Forbidden: []KernelConfig{},
3536
},
3637
RuntimeSpec: RuntimeSpec{
3738
DockerSpec: &DockerSpec{

0 commit comments

Comments
 (0)