[lxc-devel] [lxd/master] Export kernel features

stgraber on Github lxc-bot at linuxcontainers.org
Sat Mar 23 06:25:13 UTC 2019


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 301 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20190322/6655bbcf/attachment.bin>
-------------- next part --------------
From fa48ba0222869525b8f0e4cc177a19c800bd54db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 22 Mar 2019 23:11:43 -0400
Subject: [PATCH 1/4] api: Add kernel_features extension

---
 doc/api-extensions.md | 3 +++
 shared/version/api.go | 1 +
 2 files changed, 4 insertions(+)

diff --git a/doc/api-extensions.md b/doc/api-extensions.md
index 1323dd7087..d30fc52cbd 100644
--- a/doc/api-extensions.md
+++ b/doc/api-extensions.md
@@ -707,3 +707,6 @@ Add a new GPU struct to the server resources, listing all usable GPUs on the sys
 
 ## resources\_numa
 Shows the NUMA node for all CPUs and GPUs.
+
+## kernel\_features
+Exposes the state of optional kernel features through the server environment.
diff --git a/shared/version/api.go b/shared/version/api.go
index 7270678eb2..6481e4f786 100644
--- a/shared/version/api.go
+++ b/shared/version/api.go
@@ -143,6 +143,7 @@ var APIExtensions = []string{
 	"resources_cpu_socket",
 	"resources_gpu",
 	"resources_numa",
+	"kernel_features",
 }
 
 // APIExtensionsCount returns the number of available API extensions.

From 13248962bf090176cf508f9cf4114f3e2a595416 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 22 Mar 2019 23:12:23 -0400
Subject: [PATCH 2/4] shared/api: Add KernelFeatures
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 shared/api/server.go | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/shared/api/server.go b/shared/api/server.go
index 74fb07c2fd..5d7c249b65 100644
--- a/shared/api/server.go
+++ b/shared/api/server.go
@@ -23,6 +23,9 @@ type ServerEnvironment struct {
 
 	// API extension: projects
 	Project string `json:"project" yaml:"project"`
+
+	// API extension: kernel_features
+	KernelFeatures map[string]string `json:"kernel_features" yaml:"kernel_features"`
 }
 
 // ServerPut represents the modifiable fields of a LXD server configuration

From 23fc33fbfb3b6416047a447012bfb04ba59d5b28 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 22 Mar 2019 23:12:01 -0400
Subject: [PATCH 3/4] lxd: Export kernel features

---
 lxd/api_1.0.go | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lxd/api_1.0.go b/lxd/api_1.0.go
index a3a44c64c1..249691f342 100644
--- a/lxd/api_1.0.go
+++ b/lxd/api_1.0.go
@@ -201,6 +201,12 @@ func api10Get(d *Daemon, r *http.Request) Response {
 		ServerName:             serverName,
 	}
 
+	env.KernelFeatures = map[string]string{
+		"netnsid_getifaddrs": fmt.Sprintf("%v", d.os.NetnsGetifaddrs),
+		"uevent_injection":   fmt.Sprintf("%v", d.os.UeventInjection),
+		"unpriv_fscaps":      fmt.Sprintf("%v", d.os.VFS3Fscaps),
+	}
+
 	drivers := readStoragePoolDriversCache()
 	for driver, version := range drivers {
 		if env.Storage != "" {

From 5352e707afa95bde621c322dd68cd8773d168f3d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 22 Mar 2019 23:20:20 -0400
Subject: [PATCH 4/4] shared/api: Sort ServerEnvironment struct
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 shared/api/server.go | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/shared/api/server.go b/shared/api/server.go
index 5d7c249b65..b2d961179f 100644
--- a/shared/api/server.go
+++ b/shared/api/server.go
@@ -10,22 +10,25 @@ type ServerEnvironment struct {
 	DriverVersion          string   `json:"driver_version" yaml:"driver_version"`
 	Kernel                 string   `json:"kernel" yaml:"kernel"`
 	KernelArchitecture     string   `json:"kernel_architecture" yaml:"kernel_architecture"`
-	KernelVersion          string   `json:"kernel_version" yaml:"kernel_version"`
-	Server                 string   `json:"server" yaml:"server"`
-	ServerPid              int      `json:"server_pid" yaml:"server_pid"`
-	ServerVersion          string   `json:"server_version" yaml:"server_version"`
-	Storage                string   `json:"storage" yaml:"storage"`
-	StorageVersion         string   `json:"storage_version" yaml:"storage_version"`
 
-	// API extension: clustering
-	ServerClustered bool   `json:"server_clustered" yaml:"server_clustered"`
-	ServerName      string `json:"server_name" yaml:"server_name"`
+	// API extension: kernel_features
+	KernelFeatures map[string]string `json:"kernel_features" yaml:"kernel_features"`
+
+	KernelVersion string `json:"kernel_version" yaml:"kernel_version"`
 
 	// API extension: projects
 	Project string `json:"project" yaml:"project"`
 
-	// API extension: kernel_features
-	KernelFeatures map[string]string `json:"kernel_features" yaml:"kernel_features"`
+	Server string `json:"server" yaml:"server"`
+
+	// API extension: clustering
+	ServerClustered bool   `json:"server_clustered" yaml:"server_clustered"`
+	ServerName      string `json:"server_name" yaml:"server_name"`
+
+	ServerPid      int    `json:"server_pid" yaml:"server_pid"`
+	ServerVersion  string `json:"server_version" yaml:"server_version"`
+	Storage        string `json:"storage" yaml:"storage"`
+	StorageVersion string `json:"storage_version" yaml:"storage_version"`
 }
 
 // ServerPut represents the modifiable fields of a LXD server configuration


More information about the lxc-devel mailing list