[lxc-devel] [lxd/master] lxd/instance/drivers: Add custom volumes to disk state

monstermunchkin on Github lxc-bot at linuxcontainers.org
Tue Mar 24 16:31:39 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 355 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200324/d0b51996/attachment.bin>
-------------- next part --------------
From cb00c4b41a2c1434c8f08ed4ffee28a23b30f790 Mon Sep 17 00:00:00 2001
From: Thomas Hipp <thomas.hipp at canonical.com>
Date: Mon, 23 Mar 2020 21:18:36 +0100
Subject: [PATCH] lxd/instance/drivers: Add custom volumes to disk state

Signed-off-by: Thomas Hipp <thomas.hipp at canonical.com>
---
 lxd/instance/drivers/driver_lxc.go | 40 +++++++++++++++++++-----------
 1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/lxd/instance/drivers/driver_lxc.go b/lxd/instance/drivers/driver_lxc.go
index e1dbf32119..424c199c8e 100644
--- a/lxd/instance/drivers/driver_lxc.go
+++ b/lxd/instance/drivers/driver_lxc.go
@@ -5678,24 +5678,36 @@ func (c *lxc) diskState() map[string]api.InstanceStateDisk {
 			continue
 		}
 
-		if dev.Config["path"] != "/" {
-			continue
-		}
-
 		var usage int64
 
-		pool, err := storagePools.GetPoolByInstance(c.state, c)
-		if err != nil {
-			logger.Error("Error loading storage pool", log.Ctx{"project": c.Project(), "instance": c.Name(), "err": err})
-			continue
-		}
+		if dev.Config["path"] == "/" {
+			pool, err := storagePools.GetPoolByInstance(c.state, c)
+			if err != nil {
+				logger.Error("Error loading storage pool", log.Ctx{"project": c.Project(), "instance": c.Name(), "err": err})
+				continue
+			}
 
-		usage, err = pool.GetInstanceUsage(c)
-		if err != nil {
-			if err != storageDrivers.ErrNotSupported {
-				logger.Error("Error getting disk usage", log.Ctx{"project": c.Project(), "instance": c.Name(), "err": err})
+			usage, err = pool.GetInstanceUsage(c)
+			if err != nil {
+				if err != storageDrivers.ErrNotSupported {
+					logger.Error("Error getting disk usage", log.Ctx{"project": c.Project(), "instance": c.Name(), "err": err})
+				}
+				continue
+			}
+		} else {
+			pool, err := storagePools.GetPoolByName(c.state, dev.Config["pool"])
+			if err != nil {
+				logger.Error("Error loading storage pool", log.Ctx{"project": c.Project(), "poolName": dev.Config["pool"], "err": err})
+				continue
+			}
+
+			usage, err = pool.GetCustomVolumeUsage(c.Project(), dev.Config["source"])
+			if err != nil {
+				if err != storageDrivers.ErrNotSupported {
+					logger.Error("Error getting volume usage", log.Ctx{"project": c.Project(), "volume": dev.Config["source"], "err": err})
+				}
+				continue
 			}
-			continue
 		}
 
 		disk[dev.Name] = api.InstanceStateDisk{Usage: usage}


More information about the lxc-devel mailing list