[lxc-devel] [lxd/master] lxc/action: Properly handle --all with remotes
stgraber on Github
lxc-bot at linuxcontainers.org
Sun Jun 14 19:40:56 UTC 2020
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 370 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200614/16310bcb/attachment.bin>
-------------- next part --------------
From f6f18a6c6966de1318a643cfde829ebcc6b2cc93 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at 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 <stgraber at 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
More information about the lxc-devel
mailing list