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