github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/cmd/podman/network_rm.go (about)

     1  // +build !remoteclient
     2  
     3  package main
     4  
     5  import (
     6  	"fmt"
     7  
     8  	"github.com/containers/libpod/cmd/podman/cliconfig"
     9  	"github.com/containers/libpod/pkg/adapter"
    10  	"github.com/containers/libpod/pkg/rootless"
    11  	"github.com/pkg/errors"
    12  	"github.com/sirupsen/logrus"
    13  	"github.com/spf13/cobra"
    14  )
    15  
    16  var (
    17  	networkrmCommand     cliconfig.NetworkRmValues
    18  	networkrmDescription = `Remove networks`
    19  	_networkrmCommand    = &cobra.Command{
    20  		Use:   "rm [flags] NETWORK [NETWORK...]",
    21  		Short: "network rm",
    22  		Long:  networkrmDescription,
    23  		RunE: func(cmd *cobra.Command, args []string) error {
    24  			networkrmCommand.InputArgs = args
    25  			networkrmCommand.GlobalFlags = MainGlobalOpts
    26  			networkrmCommand.Remote = remoteclient
    27  			return networkrmCmd(&networkrmCommand)
    28  		},
    29  		Example: `podman network rm podman`,
    30  	}
    31  )
    32  
    33  func init() {
    34  	networkrmCommand.Command = _networkrmCommand
    35  	networkrmCommand.SetHelpTemplate(HelpTemplate())
    36  	networkrmCommand.SetUsageTemplate(UsageTemplate())
    37  	flags := networkrmCommand.Flags()
    38  	flags.BoolVarP(&networkrmCommand.Force, "force", "f", false, "remove any containers using network")
    39  }
    40  
    41  func networkrmCmd(c *cliconfig.NetworkRmValues) error {
    42  	if rootless.IsRootless() && !remoteclient {
    43  		return errors.New("network rm is not supported for rootless mode")
    44  	}
    45  	if len(c.InputArgs) < 1 {
    46  		return errors.Errorf("at least one network name is required")
    47  	}
    48  	runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
    49  	if err != nil {
    50  		return err
    51  	}
    52  	deletes, rmErrors, lastErr := runtime.NetworkRemove(getContext(), c)
    53  	for _, d := range deletes {
    54  		fmt.Println(d)
    55  	}
    56  	// we only want to print errors if there is more
    57  	// than one
    58  	for network, removalErr := range rmErrors {
    59  		logrus.Errorf("unable to remove %q: %q", network, removalErr)
    60  	}
    61  	return lastErr
    62  }