The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/5159
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) ===
From 5f3508d70ac8eaece38167dd7b47eb616a79fbdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com> Date: Sat, 13 Oct 2018 13:37:24 -0400 Subject: [PATCH 1/2] lxd/db: Fix bad limits.cpu --- lxd/db/cluster/update_test.go | 2 +- lxd/db/migration_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lxd/db/cluster/update_test.go b/lxd/db/cluster/update_test.go index 6a15b94b1d..8ce8f28b4b 100644 --- a/lxd/db/cluster/update_test.go +++ b/lxd/db/cluster/update_test.go @@ -405,7 +405,7 @@ INSERT INTO images_aliases VALUES (1, 'my-img', 1, NULL) INSERT INTO profiles VALUES (1, 'default', NULL); INSERT INTO profiles VALUES(2, 'users', ''); INSERT INTO profiles_config VALUES(2, 2, 'boot.autostart', 'false'); -INSERT INTO profiles_config VALUES(3, 2, 'limits.cpu', '50%'); +INSERT INTO profiles_config VALUES(3, 2, 'limits.cpu.allowance', '50%'); INSERT INTO profiles_devices VALUES(1, 1, 'eth0', 1); INSERT INTO profiles_devices VALUES(2, 1, 'root', 1); INSERT INTO profiles_devices_config VALUES(1, 1, 'nictype', 'bridged'); diff --git a/lxd/db/migration_test.go b/lxd/db/migration_test.go index 352b759858..80a1a28c08 100644 --- a/lxd/db/migration_test.go +++ b/lxd/db/migration_test.go @@ -140,7 +140,7 @@ func TestImportPreClusteringData(t *testing.T) { assert.Equal(t, map[string]string{ "boot.autostart": "false", - "limits.cpu": "50%"}, + "limits.cpu.allowance": "50%"}, profile.Config) assert.Equal(t, map[string]map[string]string{}, profile.Devices) } @@ -163,7 +163,7 @@ func newPreClusteringTx(t *testing.T) *sql.Tx { "INSERT INTO profiles VALUES(1, 'default', 'Default LXD profile')", "INSERT INTO profiles VALUES(2, 'users', '')", "INSERT INTO profiles_config VALUES(2, 2, 'boot.autostart', 'false')", - "INSERT INTO profiles_config VALUES(3, 2, 'limits.cpu', '50%')", + "INSERT INTO profiles_config VALUES(3, 2, 'limits.cpu.allowance', '50%')", "INSERT INTO profiles_devices VALUES(1, 1, 'eth0', 1)", "INSERT INTO profiles_devices VALUES(2, 1, 'root', 1)", "INSERT INTO profiles_devices_config VALUES(1, 1, 'nictype', 'bridged')", From be85a58f47aae5a5336292ca53f6154ad836cbc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com> Date: Sat, 13 Oct 2018 13:37:42 -0400 Subject: [PATCH 2/2] shared: Add limits.cpu validator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #5158 Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- lxd/db/migration_test.go | 4 ++-- shared/container.go | 25 ++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/lxd/db/migration_test.go b/lxd/db/migration_test.go index 80a1a28c08..36e8f46a8a 100644 --- a/lxd/db/migration_test.go +++ b/lxd/db/migration_test.go @@ -139,8 +139,8 @@ func TestImportPreClusteringData(t *testing.T) { require.NoError(t, err) assert.Equal(t, map[string]string{ - "boot.autostart": "false", - "limits.cpu.allowance": "50%"}, + "boot.autostart": "false", + "limits.cpu.allowance": "50%"}, profile.Config) assert.Equal(t, map[string]map[string]string{}, profile.Devices) } diff --git a/shared/container.go b/shared/container.go index 17220508d2..0996a49138 100644 --- a/shared/container.go +++ b/shared/container.go @@ -2,6 +2,7 @@ package shared import ( "fmt" + "regexp" "strconv" "strings" ) @@ -144,7 +145,29 @@ var KnownContainerConfigKeys = map[string]func(value string) error{ "boot.stop.priority": IsInt64, "boot.host_shutdown_timeout": IsInt64, - "limits.cpu": IsAny, + "limits.cpu": func(value string) error { + if value == "" { + return nil + } + + // Validate the character set + match, _ := regexp.MatchString("^[-,0-9]*$", value) + if !match { + return fmt.Errorf("Invalid CPU limit syntax") + } + + // Validate first character + if strings.HasPrefix(value, "-") || strings.HasPrefix(value, ",") { + return fmt.Errorf("CPU limit can't start with a separator") + } + + // Validate last character + if strings.HasSuffix(value, "-") || strings.HasSuffix(value, ",") { + return fmt.Errorf("CPU limit can't end with a separator") + } + + return nil + }, "limits.cpu.allowance": func(value string) error { if value == "" { return nil
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel