[lxc-devel] [lxd/master] lxd/resources: serial/uuid may not be accessible

stgraber on Github lxc-bot at linuxcontainers.org
Thu Apr 16 02:22:11 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 354 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200415/51a0762d/attachment.bin>
-------------- next part --------------
From c276eadbe9994802ca1954c2f59b7ab2a064d1aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 15 Apr 2020 22:16:13 -0400
Subject: [PATCH] lxd/resources: serial/uuid may not be accessible
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/resources/system.go | 26 +++++---------------------
 1 file changed, 5 insertions(+), 21 deletions(-)

diff --git a/lxd/resources/system.go b/lxd/resources/system.go
index 4c398840ba..bf0a7f494d 100644
--- a/lxd/resources/system.go
+++ b/lxd/resources/system.go
@@ -2,6 +2,7 @@ package resources
 
 import (
 	"io/ioutil"
+	"os"
 	"os/exec"
 	"path/filepath"
 	"strings"
@@ -35,9 +36,8 @@ func GetSystem() (*api.ResourcesSystem, error) {
 	productUUIDPath := filepath.Join(sysClassDMIID, "product_uuid")
 	if sysfsExists(productUUIDPath) {
 		content, err := ioutil.ReadFile(productUUIDPath)
-		if err != nil {
+		if err != nil && !os.IsPermission(err) {
 			return nil, errors.Wrapf(err, "Failed to read %q", productUUIDPath)
-
 		}
 
 		system.UUID = strings.TrimSpace(string(content))
@@ -49,7 +49,6 @@ func GetSystem() (*api.ResourcesSystem, error) {
 		content, err := ioutil.ReadFile(vendorPath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", vendorPath)
-
 		}
 
 		system.Vendor = strings.TrimSpace(string(content))
@@ -61,7 +60,6 @@ func GetSystem() (*api.ResourcesSystem, error) {
 		content, err := ioutil.ReadFile(productNamePath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", productNamePath)
-
 		}
 
 		system.Product = strings.TrimSpace(string(content))
@@ -73,7 +71,6 @@ func GetSystem() (*api.ResourcesSystem, error) {
 		content, err := ioutil.ReadFile(productFamilyPath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", productFamilyPath)
-
 		}
 
 		system.Family = strings.TrimSpace(string(content))
@@ -85,7 +82,6 @@ func GetSystem() (*api.ResourcesSystem, error) {
 		content, err := ioutil.ReadFile(productVersion)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", productVersion)
-
 		}
 
 		system.Version = strings.TrimSpace(string(content))
@@ -97,7 +93,6 @@ func GetSystem() (*api.ResourcesSystem, error) {
 		content, err := ioutil.ReadFile(productSKUPath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", productSKUPath)
-
 		}
 
 		system.Sku = strings.TrimSpace(string(content))
@@ -107,9 +102,8 @@ func GetSystem() (*api.ResourcesSystem, error) {
 	productSerialPath := filepath.Join(sysClassDMIID, "product_serial")
 	if sysfsExists(productSerialPath) {
 		content, err := ioutil.ReadFile(productSerialPath)
-		if err != nil {
+		if err != nil && !os.IsPermission(err) {
 			return nil, errors.Wrapf(err, "Failed to read %q", productSerialPath)
-
 		}
 
 		system.Serial = strings.TrimSpace(string(content))
@@ -166,7 +160,6 @@ func systemGetFirmware() (*api.ResourcesSystemFirmware, error) {
 		content, err := ioutil.ReadFile(biosVendorPath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", biosVendorPath)
-
 		}
 
 		firmware.Vendor = strings.TrimSpace(string(content))
@@ -178,7 +171,6 @@ func systemGetFirmware() (*api.ResourcesSystemFirmware, error) {
 		content, err := ioutil.ReadFile(biosDatePath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", biosDatePath)
-
 		}
 
 		firmware.Date = strings.TrimSpace(string(content))
@@ -190,7 +182,6 @@ func systemGetFirmware() (*api.ResourcesSystemFirmware, error) {
 		content, err := ioutil.ReadFile(biosVersionPath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", biosVersionPath)
-
 		}
 
 		firmware.Version = strings.TrimSpace(string(content))
@@ -208,7 +199,6 @@ func systemGetChassis() (*api.ResourcesSystemChassis, error) {
 		content, err := ioutil.ReadFile(chassisVendorPath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", chassisVendorPath)
-
 		}
 
 		chassis.Vendor = strings.TrimSpace(string(content))
@@ -269,9 +259,8 @@ func systemGetChassis() (*api.ResourcesSystemChassis, error) {
 	chassisSerialPath := filepath.Join(sysClassDMIID, "chassis_serial")
 	if sysfsExists(chassisSerialPath) {
 		content, err := ioutil.ReadFile(chassisSerialPath)
-		if err != nil {
+		if err != nil && !os.IsPermission(err) {
 			return nil, errors.Wrapf(err, "Failed to read %q", chassisSerialPath)
-
 		}
 
 		chassis.Serial = strings.TrimSpace(string(content))
@@ -283,7 +272,6 @@ func systemGetChassis() (*api.ResourcesSystemChassis, error) {
 		content, err := ioutil.ReadFile(chassisVersionPath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", chassisVersionPath)
-
 		}
 
 		chassis.Version = strings.TrimSpace(string(content))
@@ -301,7 +289,6 @@ func systemGetMotherboard() (*api.ResourcesSystemMotherboard, error) {
 		content, err := ioutil.ReadFile(boardVendorPath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", boardVendorPath)
-
 		}
 
 		motherboard.Vendor = strings.TrimSpace(string(content))
@@ -313,7 +300,6 @@ func systemGetMotherboard() (*api.ResourcesSystemMotherboard, error) {
 		content, err := ioutil.ReadFile(boardNamePath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", boardNamePath)
-
 		}
 
 		motherboard.Product = strings.TrimSpace(string(content))
@@ -323,9 +309,8 @@ func systemGetMotherboard() (*api.ResourcesSystemMotherboard, error) {
 	boardSerialPath := filepath.Join(sysClassDMIID, "board_serial")
 	if sysfsExists(boardSerialPath) {
 		content, err := ioutil.ReadFile(boardSerialPath)
-		if err != nil {
+		if err != nil && !os.IsPermission(err) {
 			return nil, errors.Wrapf(err, "Failed to read %q", boardSerialPath)
-
 		}
 
 		motherboard.Serial = strings.TrimSpace(string(content))
@@ -337,7 +322,6 @@ func systemGetMotherboard() (*api.ResourcesSystemMotherboard, error) {
 		content, err := ioutil.ReadFile(boardVersionPath)
 		if err != nil {
 			return nil, errors.Wrapf(err, "Failed to read %q", boardVersionPath)
-
 		}
 
 		motherboard.Version = strings.TrimSpace(string(content))


More information about the lxc-devel mailing list