func runRemove(dockerCli *client.DockerCli, sids []string) error { client := dockerCli.Client() ctx := context.Background() var errs []string for _, sid := range sids { err := client.ServiceRemove(ctx, sid) if err != nil { errs = append(errs, err.Error()) continue } fmt.Fprintf(dockerCli.Out(), "%s\n", sid) } if len(errs) > 0 { return fmt.Errorf(strings.Join(errs, "\n")) } return nil }
func runRemove(dockerCli *client.DockerCli, opts removeOptions) error { namespace := opts.namespace client := dockerCli.Client() stderr := dockerCli.Err() ctx := context.Background() hasError := false services, err := getServices(ctx, client, namespace) if err != nil { return err } for _, service := range services { fmt.Fprintf(stderr, "Removing service %s\n", service.Spec.Name) if err := client.ServiceRemove(ctx, service.ID); err != nil { hasError = true fmt.Fprintf(stderr, "Failed to remove service %s: %s", service.ID, err) } } networks, err := getNetworks(ctx, client, namespace) if err != nil { return err } for _, network := range networks { fmt.Fprintf(stderr, "Removing network %s\n", network.Name) if err := client.NetworkRemove(ctx, network.ID); err != nil { hasError = true fmt.Fprintf(stderr, "Failed to remove network %s: %s", network.ID, err) } } if len(services) == 0 && len(networks) == 0 { fmt.Fprintf(dockerCli.Out(), "Nothing found in stack: %s\n", namespace) return nil } if hasError { return fmt.Errorf("Failed to remove some resources") } return nil }