disconnect.go 1006 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package network
  2. import (
  3. "golang.org/x/net/context"
  4. "github.com/docker/docker/api/client"
  5. "github.com/docker/docker/cli"
  6. "github.com/spf13/cobra"
  7. )
  8. type disconnectOptions struct {
  9. network string
  10. container string
  11. force bool
  12. }
  13. func newDisconnectCommand(dockerCli *client.DockerCli) *cobra.Command {
  14. opts := disconnectOptions{}
  15. cmd := &cobra.Command{
  16. Use: "disconnect [OPTIONS] NETWORK CONTAINER",
  17. Short: "Disconnect a container from a network",
  18. Args: cli.ExactArgs(2),
  19. RunE: func(cmd *cobra.Command, args []string) error {
  20. opts.network = args[0]
  21. opts.container = args[1]
  22. return runDisconnect(dockerCli, opts)
  23. },
  24. }
  25. flags := cmd.Flags()
  26. flags.BoolVarP(&opts.force, "force", "f", false, "Force the container to disconnect from a network")
  27. return cmd
  28. }
  29. func runDisconnect(dockerCli *client.DockerCli, opts disconnectOptions) error {
  30. client := dockerCli.Client()
  31. return client.NetworkDisconnect(context.Background(), opts.network, opts.container, opts.force)
  32. }