[lxc-devel] [lxd/master] Add OS information to /1.0

stgraber on Github lxc-bot at linuxcontainers.org
Wed Apr 8 01:15:31 UTC 2020


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/20200407/db24398f/attachment.bin>
-------------- next part --------------
From 74322dc9e92e0f82ef5bafe12bb28c7c44dd34c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 7 Apr 2020 21:02:02 -0400
Subject: [PATCH 1/5] shared/osarch: Coding style
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/osarch/release.go | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/shared/osarch/release.go b/shared/osarch/release.go
index 22ba8d09b6..c016d06d73 100644
--- a/shared/osarch/release.go
+++ b/shared/osarch/release.go
@@ -13,6 +13,7 @@ func GetLSBRelease() (map[string]string, error) {
 	if os.IsNotExist(err) {
 		return getLSBRelease("/usr/lib/os-release")
 	}
+
 	return osRelease, err
 }
 
@@ -23,10 +24,12 @@ func getLSBRelease(filename string) (map[string]string, error) {
 	if err != nil {
 		return osRelease, err
 	}
+
 	for i, line := range strings.Split(string(data), "\n") {
 		if len(line) == 0 {
 			continue
 		}
+
 		if strings.HasPrefix(line, "#") {
 			continue
 		}
@@ -35,6 +38,7 @@ func getLSBRelease(filename string) (map[string]string, error) {
 		if len(tokens) != 2 {
 			return osRelease, fmt.Errorf("%s: invalid format on line %d", filename, i+1)
 		}
+
 		osRelease[tokens[0]] = strings.Trim(tokens[1], `'"`)
 	}
 

From 5dbc4ac9521a9ba8d9ff93daa5d75f1d4f36dd99 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 7 Apr 2020 21:06:05 -0400
Subject: [PATCH 2/5] shared/osarch: Don't fail on missing os-release
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/osarch/release.go | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/shared/osarch/release.go b/shared/osarch/release.go
index c016d06d73..83e300995a 100644
--- a/shared/osarch/release.go
+++ b/shared/osarch/release.go
@@ -22,6 +22,10 @@ func getLSBRelease(filename string) (map[string]string, error) {
 
 	data, err := ioutil.ReadFile(filename)
 	if err != nil {
+		if os.IsNotExist(err) {
+			return osRelease, nil
+		}
+
 		return osRelease, err
 	}
 

From 03b09db1446c850f8fb5ec50cf546963229c55dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 7 Apr 2020 21:11:11 -0400
Subject: [PATCH 3/5] shared/api: Add OS information
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #7153

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

diff --git a/shared/api/server.go b/shared/api/server.go
index 70f844a049..433b26287a 100644
--- a/shared/api/server.go
+++ b/shared/api/server.go
@@ -23,6 +23,10 @@ type ServerEnvironment struct {
 	// API extension: lxc_features
 	LXCFeatures map[string]string `json:"lxc_features" yaml:"lxc_features"`
 
+	// API extension: api_os
+	OSName    string `json:"os_name" yaml:"os_name"`
+	OSVersion string `json:"os_version" yaml:"os_version"`
+
 	// API extension: projects
 	Project string `json:"project" yaml:"project"`
 

From 474dc14d6f7d201eb07adf1f8af947557ce81cdc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 7 Apr 2020 21:11:29 -0400
Subject: [PATCH 4/5] lxd/api: Add OS information
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>
---
 lxd/api_1.0.go | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/lxd/api_1.0.go b/lxd/api_1.0.go
index 4d4bbbb6a6..4c8f42f9e7 100644
--- a/lxd/api_1.0.go
+++ b/lxd/api_1.0.go
@@ -188,6 +188,11 @@ func api10Get(d *Daemon, r *http.Request) response.Response {
 		projectName = project.Default
 	}
 
+	osInfo, err := osarch.GetLSBRelease()
+	if err != nil {
+		return response.InternalError(err)
+	}
+
 	env := api.ServerEnvironment{
 		Addresses:              addresses,
 		Architectures:          architectures,
@@ -198,6 +203,8 @@ func api10Get(d *Daemon, r *http.Request) response.Response {
 		Kernel:                 uname.Sysname,
 		KernelArchitecture:     uname.Machine,
 		KernelVersion:          uname.Release,
+		OSName:                 osInfo["NAME"],
+		OSVersion:              osInfo["VERSION_ID"],
 		Project:                projectName,
 		Server:                 "lxd",
 		ServerPid:              os.Getpid(),

From d039f97cdcb25d213941fa90717449813b3b642d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 7 Apr 2020 21:12:32 -0400
Subject: [PATCH 5/5] api: Add api_os
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>
---
 doc/api-extensions.md | 4 ++--
 shared/version/api.go | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/doc/api-extensions.md b/doc/api-extensions.md
index 9274f246b4..57f30068dc 100644
--- a/doc/api-extensions.md
+++ b/doc/api-extensions.md
@@ -1002,9 +1002,9 @@ This allows multiple ipvlan NIC devices to be added to a container.
 This adds USB and PCI devices to the output of `/1.0/resources`.
 
 ## resources\_cpu\_threads\_numa
-This indicates that the numa_node field is now recorded per-thread
+This indicates that the numa\_node field is now recorded per-thread
 rather than per core as some hardware apparently puts threads in
 different NUMA domains.
 
 ## resources\_cpu\_core\_die
-Exposes the die_id information on each core.
+Exposes the die\_id information on each core.
diff --git a/shared/version/api.go b/shared/version/api.go
index 04f131cc3a..87e58fd56b 100644
--- a/shared/version/api.go
+++ b/shared/version/api.go
@@ -204,6 +204,7 @@ var APIExtensions = []string{
 	"resources_usb_pci",
 	"resources_cpu_threads_numa",
 	"resources_cpu_core_die",
+	"api_os",
 }
 
 // APIExtensionsCount returns the number of available API extensions.


More information about the lxc-devel mailing list