[lxc-devel] [lxd/master] Fix some MAAS issues
stgraber on Github
lxc-bot at linuxcontainers.org
Mon Jun 18 20:35:02 UTC 2018
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/20180618/a044ef4b/attachment.bin>
-------------- next part --------------
From 31a1ba2337840f685bdf39480196887d4079dc58 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Mon, 18 Jun 2018 14:22:17 -0400
Subject: [PATCH 1/2] lxd/containers: Don't update MAAS for snapshots
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Closes #4661
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
lxd/container_lxc.go | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/lxd/container_lxc.go b/lxd/container_lxc.go
index 2f9b3bdb5..36028f461 100644
--- a/lxd/container_lxc.go
+++ b/lxd/container_lxc.go
@@ -446,11 +446,13 @@ func containerLXCCreate(s *state.State, args db.ContainerArgs) (container, error
}
// Update MAAS
- err = c.maasUpdate(false)
- if err != nil {
- c.Delete()
- logger.Error("Failed creating container", ctxMap)
- return nil, err
+ if !c.IsSnapshot() {
+ err = c.maasUpdate(false)
+ if err != nil {
+ c.Delete()
+ logger.Error("Failed creating container", ctxMap)
+ return nil, err
+ }
}
// Update lease files
@@ -3398,9 +3400,11 @@ func (c *containerLXC) Rename(newName string) error {
c.cleanup()
// Rename the MAAS entry
- err = c.maasRename(newName)
- if err != nil {
- return err
+ if !c.IsSnapshot() {
+ err = c.maasRename(newName)
+ if err != nil {
+ return err
+ }
}
// Rename the logging path
@@ -3982,7 +3986,7 @@ func (c *containerLXC) Update(args db.ContainerArgs, userRequested bool) error {
}
}
- if updateMAAS {
+ if !c.IsSnapshot() && updateMAAS {
err = c.maasUpdate(true)
if err != nil {
return err
From 00655c6da0e6add54ce6a1c432358b8407569871 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Mon, 18 Jun 2018 16:33:20 -0400
Subject: [PATCH 2/2] lxd/maas: Allow starting with MAAS offline
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Closes #4636
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
lxd/container_lxc.go | 34 +++++++++++++++++++++++++++++++---
lxd/daemon.go | 18 +++++++++++++-----
2 files changed, 44 insertions(+), 8 deletions(-)
diff --git a/lxd/container_lxc.go b/lxd/container_lxc.go
index 36028f461..771e70451 100644
--- a/lxd/container_lxc.go
+++ b/lxd/container_lxc.go
@@ -25,6 +25,7 @@ import (
"gopkg.in/lxc/go-lxc.v2"
"gopkg.in/yaml.v2"
+ "github.com/lxc/lxd/lxd/cluster"
"github.com/lxc/lxd/lxd/db"
"github.com/lxc/lxd/lxd/db/query"
"github.com/lxc/lxd/lxd/maas"
@@ -8326,10 +8327,19 @@ func (c *containerLXC) maasConnected() bool {
}
func (c *containerLXC) maasUpdate(force bool) error {
- if c.state.MAAS == nil {
+ maasURL, err := cluster.ConfigGetString(c.state.Cluster, "maas.api.url")
+ if err != nil {
+ return err
+ }
+
+ if maasURL == "" {
return nil
}
+ if c.state.MAAS == nil {
+ return fmt.Errorf("Can't perform the operation because MAAS is currently unavailable")
+ }
+
if !c.maasConnected() {
if force {
exists, err := c.state.MAAS.DefinedContainer(c.name)
@@ -8362,10 +8372,19 @@ func (c *containerLXC) maasUpdate(force bool) error {
}
func (c *containerLXC) maasRename(newName string) error {
- if c.state.MAAS == nil {
+ maasURL, err := cluster.ConfigGetString(c.state.Cluster, "maas.api.url")
+ if err != nil {
+ return err
+ }
+
+ if maasURL == "" {
return nil
}
+ if c.state.MAAS == nil {
+ return fmt.Errorf("Can't perform the operation because MAAS is currently unavailable")
+ }
+
if !c.maasConnected() {
return nil
}
@@ -8383,10 +8402,19 @@ func (c *containerLXC) maasRename(newName string) error {
}
func (c *containerLXC) maasDelete() error {
- if c.state.MAAS == nil {
+ maasURL, err := cluster.ConfigGetString(c.state.Cluster, "maas.api.url")
+ if err != nil {
+ return err
+ }
+
+ if maasURL == "" {
return nil
}
+ if c.state.MAAS == nil {
+ return fmt.Errorf("Can't perform the operation because MAAS is currently unavailable")
+ }
+
if !c.maasConnected() {
return nil
}
diff --git a/lxd/daemon.go b/lxd/daemon.go
index d1a30fcfb..fef03f24f 100644
--- a/lxd/daemon.go
+++ b/lxd/daemon.go
@@ -614,12 +614,20 @@ func (d *Daemon) init() error {
// Read the trusted certificates
readSavedClientCAList(d)
- }
- // Connect to MAAS
- err = d.setupMAASController(maasAPIURL, maasAPIKey, maasMachine)
- if err != nil {
- return err
+ // Connect to MAAS
+ go func() {
+ for {
+ err = d.setupMAASController(maasAPIURL, maasAPIKey, maasMachine)
+ if err == nil {
+ logger.Info("Connected to MAAS controller")
+ break
+ }
+
+ logger.Warn("Unable to connect to MAAS, trying again in a minute", log.Ctx{"err": err})
+ time.Sleep(time.Minute)
+ }
+ }()
}
close(d.setupChan)
More information about the lxc-devel
mailing list