forked from toolshed/abra
		
	review cleanups
This commit is contained in:
		| @ -3,6 +3,7 @@ package app | |||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
| 	"coopcloud.tech/abra/cli/internal" | 	"coopcloud.tech/abra/cli/internal" | ||||||
| 	"coopcloud.tech/abra/pkg/autocomplete" | 	"coopcloud.tech/abra/pkg/autocomplete" | ||||||
| @ -18,7 +19,51 @@ var prune bool | |||||||
| var pruneFlag = &cli.BoolFlag{ | var pruneFlag = &cli.BoolFlag{ | ||||||
| 	Name:        "prune, p", | 	Name:        "prune, p", | ||||||
| 	Destination: &prune, | 	Destination: &prune, | ||||||
| 	Usage:       "Prunes unused containers, networks, and dangling images for stack", | 	Usage:       "Prunes unused containers, networks, and dangling images for an app", | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func cleanup(c *cli.Context) error { | ||||||
|  | 	for { | ||||||
|  | 		if !prune { | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  | 		app := internal.ValidateApp(c) | ||||||
|  | 		stackName := app.StackName() | ||||||
|  | 		cl, err := client.New(app.Server) | ||||||
|  | 		if err != nil { | ||||||
|  | 			logrus.Fatal(err) | ||||||
|  | 		} | ||||||
|  | 		ctx := context.Background() | ||||||
|  |  | ||||||
|  | 		pruneFilters := filters.NewArgs() | ||||||
|  | 		stackSearch := fmt.Sprintf("%s*", stackName) | ||||||
|  | 		pruneFilters.Add("label", stackSearch) | ||||||
|  | 		cr, err := cl.ContainersPrune(ctx, pruneFilters) | ||||||
|  | 		if err != nil { | ||||||
|  | 			logrus.Errorf(err.Error()) | ||||||
|  | 			time.Sleep(time.Second) | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		logrus.Infof("Containers deleted: %s; Space reclaimed: %v", cr.ContainersDeleted, cr.SpaceReclaimed) | ||||||
|  |  | ||||||
|  | 		nr, err := cl.NetworksPrune(ctx, pruneFilters) | ||||||
|  | 		if err != nil { | ||||||
|  | 			logrus.Errorf(err.Error()) | ||||||
|  | 			time.Sleep(time.Second) | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		logrus.Infof("Networks deleted %s", nr.NetworksDeleted) | ||||||
|  |  | ||||||
|  | 		ir, err := cl.ImagesPrune(ctx, pruneFilters) | ||||||
|  | 		if err != nil { | ||||||
|  | 			logrus.Errorf(err.Error()) | ||||||
|  | 			time.Sleep(time.Second) | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		logrus.Infof("Images deleted: %s; Space reclaimed: %v", ir.ImagesDeleted, ir.SpaceReclaimed) | ||||||
|  | 		break | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| var appUndeployCommand = cli.Command{ | var appUndeployCommand = cli.Command{ | ||||||
| @ -64,41 +109,7 @@ volumes as eligible for pruning once undeployed. | |||||||
| 		if err := stack.RunRemove(context.Background(), cl, rmOpts); err != nil { | 		if err := stack.RunRemove(context.Background(), cl, rmOpts); err != nil { | ||||||
| 			logrus.Fatal(err) | 			logrus.Fatal(err) | ||||||
| 		} | 		} | ||||||
|  | 		cleanup(c) | ||||||
| 		return nil |  | ||||||
| 	}, |  | ||||||
| 	After: func(c *cli.Context) error { |  | ||||||
| 		if !prune { |  | ||||||
| 			return nil |  | ||||||
| 		} |  | ||||||
| 		app := internal.ValidateApp(c) |  | ||||||
| 		stackName := app.StackName() |  | ||||||
| 		cl, err := client.New(app.Server) |  | ||||||
| 		if err != nil { |  | ||||||
| 			logrus.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		ctx := context.Background() |  | ||||||
|  |  | ||||||
| 		pruneFilters := filters.NewArgs() |  | ||||||
| 		stackSearch := fmt.Sprintf("%s*", stackName) |  | ||||||
| 		pruneFilters.Add("label", stackSearch) |  | ||||||
| 		cr, err := cl.ContainersPrune(ctx, pruneFilters) |  | ||||||
| 		if err != nil { |  | ||||||
| 			return err |  | ||||||
| 		} |  | ||||||
| 		logrus.Infof("Containers deleted: %s; Space reclaimed: %v", cr.ContainersDeleted, cr.SpaceReclaimed) |  | ||||||
|  |  | ||||||
| 		nr, err := cl.NetworksPrune(ctx, pruneFilters) |  | ||||||
| 		if err != nil { |  | ||||||
| 			return err |  | ||||||
| 		} |  | ||||||
| 		logrus.Infof("Networks deleted %s", nr.NetworksDeleted) |  | ||||||
|  |  | ||||||
| 		ir, err := cl.ImagesPrune(ctx, pruneFilters) |  | ||||||
| 		if err != nil { |  | ||||||
| 			return err |  | ||||||
| 		} |  | ||||||
| 		logrus.Infof("Images deleted: %s; Space reclaimed: %v", ir.ImagesDeleted, ir.SpaceReclaimed) |  | ||||||
| 		return nil | 		return nil | ||||||
| 	}, | 	}, | ||||||
| 	BashComplete: autocomplete.AppNameComplete, | 	BashComplete: autocomplete.AppNameComplete, | ||||||
|  | |||||||
| @ -27,13 +27,11 @@ var volumesFilterFlag = &cli.BoolFlag{ | |||||||
| } | } | ||||||
|  |  | ||||||
| var serverPruneCommand = cli.Command{ | var serverPruneCommand = cli.Command{ | ||||||
| 	Name:    "prune", | 	Name:        "prune", | ||||||
| 	Aliases: []string{"p"}, | 	Aliases:     []string{"p"}, | ||||||
| 	Usage:   "Prune a managed server; Runs a docker system prune", | 	Usage:       "Prune a managed server; Runs a docker system prune", | ||||||
| 	Description: ` | 	Description: "Prunes unused containers, networks, and dangling images", | ||||||
| 	Prunes unused containers, networks, and dangling images | 	ArgsUsage:   "[<server>]", | ||||||
| 	`, |  | ||||||
| 	ArgsUsage: "[<server>]", |  | ||||||
| 	Flags: []cli.Flag{ | 	Flags: []cli.Flag{ | ||||||
| 		allFilterFlag, | 		allFilterFlag, | ||||||
| 		volumesFilterFlag, | 		volumesFilterFlag, | ||||||
| @ -47,18 +45,18 @@ var serverPruneCommand = cli.Command{ | |||||||
|  |  | ||||||
| 		cl, err := client.New(serverName) | 		cl, err := client.New(serverName) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return err | 			logrus.Fatal(err) | ||||||
| 		} | 		} | ||||||
| 		ctx := context.Background() | 		ctx := context.Background() | ||||||
| 		cr, err := cl.ContainersPrune(ctx, args) | 		cr, err := cl.ContainersPrune(ctx, args) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return err | 			logrus.Fatal(err) | ||||||
| 		} | 		} | ||||||
| 		logrus.Infof("Containers deleted: %s; Space reclaimed: %v", cr.ContainersDeleted, cr.SpaceReclaimed) | 		logrus.Infof("Containers deleted: %s; Space reclaimed: %v", cr.ContainersDeleted, cr.SpaceReclaimed) | ||||||
|  |  | ||||||
| 		nr, err := cl.NetworksPrune(ctx, args) | 		nr, err := cl.NetworksPrune(ctx, args) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return err | 			logrus.Fatal(err) | ||||||
| 		} | 		} | ||||||
| 		logrus.Infof("Networks deleted %s", nr.NetworksDeleted) | 		logrus.Infof("Networks deleted %s", nr.NetworksDeleted) | ||||||
|  |  | ||||||
| @ -68,14 +66,14 @@ var serverPruneCommand = cli.Command{ | |||||||
| 		} | 		} | ||||||
| 		ir, err := cl.ImagesPrune(ctx, pruneFilters) | 		ir, err := cl.ImagesPrune(ctx, pruneFilters) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return err | 			logrus.Fatal(err) | ||||||
| 		} | 		} | ||||||
| 		logrus.Infof("Images deleted: %s; Space reclaimed: %v", ir.ImagesDeleted, ir.SpaceReclaimed) | 		logrus.Infof("Images deleted: %s; Space reclaimed: %v", ir.ImagesDeleted, ir.SpaceReclaimed) | ||||||
|  |  | ||||||
| 		if volunesFilter { | 		if volunesFilter { | ||||||
| 			vr, err := cl.VolumesPrune(ctx, args) | 			vr, err := cl.VolumesPrune(ctx, args) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				return err | 				logrus.Fatal(err) | ||||||
| 			} | 			} | ||||||
| 			logrus.Infof("Volumes deleted: %s; Space reclaimed: %v", vr.VolumesDeleted, vr.SpaceReclaimed) | 			logrus.Infof("Volumes deleted: %s; Space reclaimed: %v", vr.VolumesDeleted, vr.SpaceReclaimed) | ||||||
| 		} | 		} | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user