[lxc-devel] [lxd/master] Fix cdrom handling in resources API
stgraber on Github
lxc-bot at linuxcontainers.org
Mon Sep 16 07:49:30 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/20190916/02feaa51/attachment.bin>
-------------- next part --------------
From b37c0705def278447eb5a0908386c1720ea646f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Mon, 16 Sep 2019 09:48:07 +0200
Subject: [PATCH 1/2] lxd/resources: Don't fail on non-ATA drives
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/storage.go | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/lxd/resources/storage.go b/lxd/resources/storage.go
index 0a0fe6a1ad..24ce38ec46 100644
--- a/lxd/resources/storage.go
+++ b/lxd/resources/storage.go
@@ -22,11 +22,7 @@ var sysClassBlock = "/sys/class/block"
func storageAddDriveInfo(devicePath string, disk *api.ResourcesStorageDisk) error {
// Attempt to open the device path
f, err := os.Open(devicePath)
- if err != nil {
- if !os.IsPermission(err) && !os.IsNotExist(err) {
- return err
- }
- } else {
+ if err == nil {
defer f.Close()
fd := int(f.Fd())
From 16665a3cfe271e573d9e28a6dc18500a74f89d75 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Mon, 16 Sep 2019 09:48:42 +0200
Subject: [PATCH 2/2] lxd/resources: Cleanup disk type and add cdrom
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/storage.go | 48 +++++++++++++++++++++-------------------
1 file changed, 25 insertions(+), 23 deletions(-)
diff --git a/lxd/resources/storage.go b/lxd/resources/storage.go
index 24ce38ec46..b62c4f8052 100644
--- a/lxd/resources/storage.go
+++ b/lxd/resources/storage.go
@@ -45,6 +45,7 @@ func storageAddDriveInfo(devicePath string, disk *api.ResourcesStorageDisk) erro
}
defer f.Close()
+ udevProperties := map[string]string{}
udevInfo := bufio.NewScanner(f)
for udevInfo.Scan() {
line := strings.TrimSpace(udevInfo.Text())
@@ -60,35 +61,36 @@ func storageAddDriveInfo(devicePath string, disk *api.ResourcesStorageDisk) erro
key := strings.TrimSpace(fields[0])
value := strings.TrimSpace(fields[1])
+ udevProperties[key] = value
+ }
- // Finer grained disk type
- if key == "E:ID_ATA_SATA" && value == "1" {
- disk.Type = "sata"
- }
+ // Finer grained disk type
+ if udevProperties["E:ID_CDROM"] == "1" {
+ disk.Type = "cdrom"
+ } else if udevProperties["E:ID_USB_DRIVER"] == "usb-storage" {
+ disk.Type = "usb"
+ } else if udevProperties["E:ID_ATA_SATA"] == "1" {
+ disk.Type = "sata"
+ }
- if key == "E:ID_USB_DRIVER" && value == "usb-storage" {
- disk.Type = "usb"
- }
+ // Model revision number
+ if udevProperties["E:ID_REVISION"] != "" && disk.ModelRevision == "" {
+ disk.ModelRevision = udevProperties["E:ID_REVISION"]
+ }
- // Model revision number
- if key == "E:ID_REVISION" && disk.ModelRevision == "" {
- disk.ModelRevision = value
- }
+ // Serial number
+ if udevProperties["E:ID_SERIAL_SHORT"] != "" && disk.Serial == "" {
+ disk.Serial = udevProperties["E:ID_SERIAL_SHORT"]
+ }
- // Serial number
- if key == "E:ID_SERIAL_SHORT" && disk.Serial == "" {
- disk.Serial = value
+ // Rotation per minute
+ if udevProperties["E:ID_ATA_ROTATION_RATE_RPM"] != "" && disk.RPM == 0 {
+ valueUint, err := strconv.ParseUint(udevProperties["E:ID_ATA_ROTATION_RATE_RPM"], 10, 64)
+ if err != nil {
+ return errors.Wrap(err, "Failed to parse RPM value")
}
- // Rotation per minute
- if key == "E:ID_ATA_ROTATION_RATE_RPM" && disk.RPM == 0 {
- valueUint, err := strconv.ParseUint(value, 10, 64)
- if err != nil {
- return errors.Wrap(err, "Failed to parse RPM value")
- }
-
- disk.RPM = valueUint
- }
+ disk.RPM = valueUint
}
}
More information about the lxc-devel
mailing list