The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/7530
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) === Closes #7529 Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
From f6f18a6c6966de1318a643cfde829ebcc6b2cc93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com> Date: Sun, 14 Jun 2020 15:40:08 -0400 Subject: [PATCH] lxc/action: Properly handle --all with remotes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #7529 Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- lxc/action.go | 49 +++++++++++++++++++++++++++---------------------- lxc/main.go | 4 +++- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/lxc/action.go b/lxc/action.go index d595464ef7..2a715a4d31 100644 --- a/lxc/action.go +++ b/lxc/action.go @@ -205,39 +205,44 @@ func (c *cmdAction) Run(cmd *cobra.Command, args []string) error { conf := c.global.conf var names []string - if len(args) == 0 { - if !c.flagAll { - cmd.Help() - return nil + if c.flagAll { + // If no server passed, use current default. + if len(args) == 0 { + args = []string{fmt.Sprintf("%s:", conf.DefaultRemote)} } - d, err := conf.GetInstanceServer(conf.DefaultRemote) + // Get all the servers. + resources, err := c.global.ParseServers(args...) if err != nil { return err } - ctslist, err := d.GetInstances(api.InstanceTypeAny) - if err != nil { - return err - } + for _, resource := range resources { + // We don't allow instance names with --all. + if resource.name != "" { + return fmt.Errorf(i18n.G("Both --all and instance name given")) + } - for _, ct := range ctslist { - switch cmd.Name() { - case "start": - if ct.StatusCode == api.Running { - continue - } - case "stop": - if ct.StatusCode == api.Stopped { - continue + ctslist, err := resource.server.GetInstances(api.InstanceTypeAny) + if err != nil { + return err + } + + for _, ct := range ctslist { + switch cmd.Name() { + case "start": + if ct.StatusCode == api.Running { + continue + } + case "stop": + if ct.StatusCode == api.Stopped { + continue + } } + names = append(names, fmt.Sprintf("%s:%s", resource.remote, ct.Name)) } - names = append(names, ct.Name) } } else { - if c.flagAll { - return fmt.Errorf(i18n.G("Both --all and instance name given")) - } names = args } diff --git a/lxc/main.go b/lxc/main.go index c247818110..902c0ecea5 100644 --- a/lxc/main.go +++ b/lxc/main.go @@ -370,6 +370,7 @@ func (c *cmdGlobal) PostRun(cmd *cobra.Command, args []string) error { } type remoteResource struct { + remote string server lxd.InstanceServer name string } @@ -387,7 +388,8 @@ func (c *cmdGlobal) ParseServers(remotes ...string) ([]remoteResource, error) { // Setup the struct resource := remoteResource{ - name: name, + remote: remoteName, + name: name, } // Look at our cache
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel