The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/4668

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===

From 31a1ba2337840f685bdf39480196887d4079dc58 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@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 <stgra...@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?= <stgra...@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 <stgra...@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)
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to