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

Reply via email to