Refactored networkPrune function

Refactored the networkPrune function to improve readability.

This commit changes the `networkPrune` function to
use the `PrintNetworkPruneResults` function.

[NO NEW TESTS NEEDED]

Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
This commit is contained in:
Toshiki Sonoda
2022-07-08 08:33:20 +09:00
parent 700f1faf6e
commit d1754bdd4f
7 changed files with 25 additions and 39 deletions

View File

@ -52,10 +52,7 @@ func init() {
}
func networkPrune(cmd *cobra.Command, _ []string) error {
var (
errs utils.OutputErrors
err error
)
var err error
if !force {
reader := bufio.NewReader(os.Stdin)
fmt.Println("WARNING! This will remove all networks not used by at least one container.")
@ -77,13 +74,5 @@ func networkPrune(cmd *cobra.Command, _ []string) error {
setExitCode(err)
return err
}
for _, r := range responses {
if r.Error == nil {
fmt.Println(r.Name)
} else {
setExitCode(r.Error)
errs = append(errs, r.Error)
}
}
return errs.PrintErrors()
return utils.PrintNetworkPruneResults(responses, false)
}

View File

@ -85,16 +85,16 @@ func PrintImagePruneResults(imagePruneReports []*reports.PruneReport, heading bo
return nil
}
func PrintNetworkPruneResults(networkPruneReport []*reports.PruneReport, heading bool) error {
func PrintNetworkPruneResults(networkPruneReport []*entities.NetworkPruneReport, heading bool) error {
var errs OutputErrors
if heading && len(networkPruneReport) > 0 {
fmt.Println("Deleted Networks")
}
for _, r := range networkPruneReport {
if r.Err == nil {
fmt.Println(r.Id)
if r.Error == nil {
fmt.Println(r.Name)
} else {
errs = append(errs, r.Err)
errs = append(errs, r.Error)
}
}
return errs.PrintErrors()

View File

@ -81,8 +81,7 @@ type NetworkPruneReport struct {
Error error
}
// NetworkPruneOptions describes options for pruning
// unused cni networks
// NetworkPruneOptions describes options for pruning unused networks
type NetworkPruneOptions struct {
Filters map[string][]string
}

View File

@ -28,7 +28,7 @@ type SystemPruneReport struct {
PodPruneReport []*PodPruneReport
ContainerPruneReports []*reports.PruneReport
ImagePruneReports []*reports.PruneReport
NetworkPruneReports []*reports.PruneReport
NetworkPruneReports []*NetworkPruneReport
VolumePruneReports []*reports.PruneReport
ReclaimedSpace uint64
}

View File

@ -157,15 +157,15 @@ func (ic *ContainerEngine) SystemPrune(ctx context.Context, options entities.Sys
// TODO: Figure out cleaner way to handle all of the different PruneOptions
// Remove all unused pods.
podPruneReport, err := ic.prunePodHelper(ctx)
podPruneReports, err := ic.prunePodHelper(ctx)
if err != nil {
return nil, err
}
if len(podPruneReport) > 0 {
if len(podPruneReports) > 0 {
found = true
}
systemPruneReport.PodPruneReport = append(systemPruneReport.PodPruneReport, podPruneReport...)
systemPruneReport.PodPruneReport = append(systemPruneReport.PodPruneReport, podPruneReports...)
// Remove all unused containers.
containerPruneOptions := entities.ContainerPruneOptions{}
@ -201,38 +201,35 @@ func (ic *ContainerEngine) SystemPrune(ctx context.Context, options entities.Sys
networkPruneOptions := entities.NetworkPruneOptions{}
networkPruneOptions.Filters = options.Filters
networkPruneReport, err := ic.NetworkPrune(ctx, networkPruneOptions)
networkPruneReports, err := ic.NetworkPrune(ctx, networkPruneOptions)
if err != nil {
return nil, err
}
if len(networkPruneReport) > 0 {
if len(networkPruneReports) > 0 {
found = true
}
for _, net := range networkPruneReport {
systemPruneReport.NetworkPruneReports = append(systemPruneReport.NetworkPruneReports, &reports.PruneReport{
Id: net.Name,
Err: net.Error,
Size: 0,
})
}
// Networks reclaimedSpace are always '0'.
systemPruneReport.NetworkPruneReports = append(systemPruneReport.NetworkPruneReports, networkPruneReports...)
// Remove unused volume data.
if options.Volume {
volumePruneOptions := entities.VolumePruneOptions{}
volumePruneOptions.Filters = (url.Values)(options.Filters)
volumePruneReport, err := ic.VolumePrune(ctx, volumePruneOptions)
volumePruneReports, err := ic.VolumePrune(ctx, volumePruneOptions)
if err != nil {
return nil, err
}
if len(volumePruneReport) > 0 {
if len(volumePruneReports) > 0 {
found = true
}
reclaimedSpace += reports.PruneReportsSize(volumePruneReport)
systemPruneReport.VolumePruneReports = append(systemPruneReport.VolumePruneReports, volumePruneReport...)
reclaimedSpace += reports.PruneReportsSize(volumePruneReports)
systemPruneReport.VolumePruneReports = append(systemPruneReport.VolumePruneReports, volumePruneReports...)
}
}
systemPruneReport.ReclaimedSpace = reclaimedSpace
return systemPruneReport, nil
}

View File

@ -95,7 +95,7 @@ func (ic *ContainerEngine) NetworkExists(ctx context.Context, networkname string
}, nil
}
// Network prune removes unused cni networks
// Network prune removes unused networks
func (ic *ContainerEngine) NetworkPrune(ctx context.Context, options entities.NetworkPruneOptions) ([]*entities.NetworkPruneReport, error) {
opts := new(network.PruneOptions).WithFilters(options.Filters)
return network.Prune(ic.ClientCtx, opts)

View File

@ -259,11 +259,12 @@ var _ = Describe("Podman prune", func() {
})
It("podman system prune networks", func() {
// About netavark network backend test.
// Create new network.
session := podmanTest.Podman([]string{"network", "create", "test"})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
// Remove all unused networks.
session = podmanTest.Podman([]string{"system", "prune", "-f"})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
@ -274,7 +275,7 @@ var _ = Describe("Podman prune", func() {
Expect(session).Should(Exit(0))
Expect(session.OutputToStringArray()).To(HaveLen(1))
// Remove all unused networks.
// Unused networks removed.
session = podmanTest.Podman([]string{"network", "ls", "-q", "--filter", "name=^test$"})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))