[lxc-devel] [lxd/master] Extend checks for `activateifneeded`
monstermunchkin on Github
lxc-bot at linuxcontainers.org
Fri Apr 3 07:33:03 UTC 2020
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 319 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200403/201000ad/attachment.bin>
-------------- next part --------------
From cf637d79802f2a63df211faa77121377a330fe8b Mon Sep 17 00:00:00 2001
From: Thomas Hipp <thomas.hipp at canonical.com>
Date: Fri, 3 Apr 2020 08:47:39 +0200
Subject: [PATCH 1/4] lxd/main_activateifneeded: s/container/instance/
This replaces the string "container" with "instance".
Signed-off-by: Thomas Hipp <thomas.hipp at canonical.com>
---
lxd/main_activateifneeded.go | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/lxd/main_activateifneeded.go b/lxd/main_activateifneeded.go
index 99331ead84..f1be7d5f2c 100644
--- a/lxd/main_activateifneeded.go
+++ b/lxd/main_activateifneeded.go
@@ -33,8 +33,8 @@ func (c *cmdActivateifneeded) Command() *cobra.Command {
cmd.Long = `Description:
Check if LXD should be started
- This command will check if LXD has any auto-started containers,
- containers which were running prior to LXD's last shutdown or if it's
+ This command will check if LXD has any auto-started instances,
+ instances which were running prior to LXD's last shutdown or if it's
configured to listen on the network address.
If at least one of those is true, then a connection will be attempted to the
@@ -86,13 +86,13 @@ func (c *cmdActivateifneeded) Run(cmd *cobra.Command, args []string) error {
return err
}
- // Load the idmap for unprivileged containers
+ // Load the idmap for unprivileged instances
d.os.IdmapSet, err = idmap.DefaultIdmapSet("", "")
if err != nil {
return err
}
- // Look for auto-started or previously started containers
+ // Look for auto-started or previously started instances
path = d.os.GlobalDatabasePath()
if !shared.PathExists(path) {
path = d.os.LegacyGlobalDatabasePath()
@@ -111,19 +111,19 @@ func (c *cmdActivateifneeded) Run(cmd *cobra.Command, args []string) error {
return err
}
- var containers []db.Instance
+ var instances []db.Instance
err = d.cluster.Transaction(func(tx *db.ClusterTx) error {
filter := db.InstanceFilter{Type: instancetype.Container}
var err error
- containers, err = tx.InstanceList(filter)
+ instances, err = tx.InstanceList(filter)
return err
})
if err != nil {
return err
}
- for _, container := range containers {
- c, err := instance.LoadByProjectAndName(d.State(), container.Project, container.Name)
+ for _, inst := range instances {
+ c, err := instance.LoadByProjectAndName(d.State(), inst.Project, inst.Name)
if err != nil {
sqldb.Close()
return err
@@ -135,14 +135,14 @@ func (c *cmdActivateifneeded) Run(cmd *cobra.Command, args []string) error {
if c.IsRunning() {
sqldb.Close()
- logger.Debugf("Daemon has running containers, activating...")
+ logger.Debugf("Daemon has running instances, activating...")
_, err := lxd.ConnectLXDUnix("", nil)
return err
}
if lastState == "RUNNING" || lastState == "Running" || shared.IsTrue(autoStart) {
sqldb.Close()
- logger.Debugf("Daemon has auto-started containers, activating...")
+ logger.Debugf("Daemon has auto-started instances, activating...")
_, err := lxd.ConnectLXDUnix("", nil)
return err
}
From b0239a80518090c65b152174e2192e0997ff175f Mon Sep 17 00:00:00 2001
From: Thomas Hipp <thomas.hipp at canonical.com>
Date: Fri, 3 Apr 2020 08:54:32 +0200
Subject: [PATCH 2/4] lxd/main_activateifneeded: Retrieve all instances
Instead of retrieving only containers in default project, this includes
all instance types (containers and VMs) in all projects.
Signed-off-by: Thomas Hipp <thomas.hipp at canonical.com>
---
lxd/main_activateifneeded.go | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/lxd/main_activateifneeded.go b/lxd/main_activateifneeded.go
index f1be7d5f2c..cd4618d8b8 100644
--- a/lxd/main_activateifneeded.go
+++ b/lxd/main_activateifneeded.go
@@ -11,7 +11,6 @@ import (
lxd "github.com/lxc/lxd/client"
"github.com/lxc/lxd/lxd/db"
"github.com/lxc/lxd/lxd/instance"
- "github.com/lxc/lxd/lxd/instance/instancetype"
"github.com/lxc/lxd/lxd/node"
"github.com/lxc/lxd/shared"
"github.com/lxc/lxd/shared/idmap"
@@ -113,10 +112,22 @@ func (c *cmdActivateifneeded) Run(cmd *cobra.Command, args []string) error {
var instances []db.Instance
err = d.cluster.Transaction(func(tx *db.ClusterTx) error {
- filter := db.InstanceFilter{Type: instancetype.Container}
- var err error
- instances, err = tx.InstanceList(filter)
- return err
+ // Get all projects
+ projects, err := tx.ProjectList(db.ProjectFilter{})
+ if err != nil {
+ return err
+ }
+
+ // Get instances of all projects
+ for _, project := range projects {
+ filter := db.InstanceFilter{Project: project.Name}
+ instances, err = tx.InstanceList(filter)
+ if err != nil {
+ return err
+ }
+ }
+
+ return nil
})
if err != nil {
return err
From 00f7c6dc2bf2c308d7fe2c0bfb7cf98541ca13db Mon Sep 17 00:00:00 2001
From: Thomas Hipp <thomas.hipp at canonical.com>
Date: Fri, 3 Apr 2020 09:27:15 +0200
Subject: [PATCH 3/4] lxd/main_activateifneeded: Check for scheduled instance
snapshots
This checks for scheduled instance snapshots, and activates LXD if
enabled.
Signed-off-by: Thomas Hipp <thomas.hipp at canonical.com>
---
lxd/main_activateifneeded.go | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/lxd/main_activateifneeded.go b/lxd/main_activateifneeded.go
index cd4618d8b8..64e4a395f4 100644
--- a/lxd/main_activateifneeded.go
+++ b/lxd/main_activateifneeded.go
@@ -157,6 +157,16 @@ func (c *cmdActivateifneeded) Run(cmd *cobra.Command, args []string) error {
_, err := lxd.ConnectLXDUnix("", nil)
return err
}
+
+ // Check for scheduled instance snapshots
+ snapshotsSchedule := config["snapshots.schedule"]
+
+ if snapshotsSchedule != "" {
+ sqldb.Close()
+ logger.Debugf("Daemon has scheduled instance snapshots, activating...")
+ _, err := lxd.ConnectLXDUnix("", nil)
+ return err
+ }
}
sqldb.Close()
From 27cf3d63b56c771cba1d29c9850821fff8c6f307 Mon Sep 17 00:00:00 2001
From: Thomas Hipp <thomas.hipp at canonical.com>
Date: Fri, 3 Apr 2020 09:28:09 +0200
Subject: [PATCH 4/4] lxd/main_activateifneeded: Check for scheduled volume
snapshots
This checks for scheduled volume snapshots, and activates LXD if
enabled.
Signed-off-by: Thomas Hipp <thomas.hipp at canonical.com>
---
lxd/main_activateifneeded.go | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/lxd/main_activateifneeded.go b/lxd/main_activateifneeded.go
index 64e4a395f4..b64bde5e14 100644
--- a/lxd/main_activateifneeded.go
+++ b/lxd/main_activateifneeded.go
@@ -169,6 +169,22 @@ func (c *cmdActivateifneeded) Run(cmd *cobra.Command, args []string) error {
}
}
+ // Check for scheduled volume snapshots
+ volumes, err := d.cluster.StoragePoolVolumesGetAllByType(db.StoragePoolVolumeTypeCustom)
+ if err != nil {
+ return err
+ }
+
+ for _, vol := range volumes {
+ snapshotsSchedule := vol.Config["snapshots.schedule"]
+ if snapshotsSchedule != "" {
+ sqldb.Close()
+ logger.Debugf("Daemon has scheduled volume snapshots, activating...")
+ _, err := lxd.ConnectLXDUnix("", nil)
+ return err
+ }
+ }
+
sqldb.Close()
logger.Debugf("No need to start the daemon now")
return nil
More information about the lxc-devel
mailing list