diff options
author | baude <bbaude@redhat.com> | 2017-12-21 12:33:10 -0600 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2017-12-30 10:26:14 +0000 |
commit | ef4035e208f1431745cd044adb4b789fab3a98b6 (patch) | |
tree | 355c3667f5ba5aa537133254261a8cd383c69df5 | |
parent | 7e922b103595fe64938a910fd4cd862685624391 (diff) | |
download | podman-ef4035e208f1431745cd044adb4b789fab3a98b6.tar.gz podman-ef4035e208f1431745cd044adb4b789fab3a98b6.tar.bz2 podman-ef4035e208f1431745cd044adb4b789fab3a98b6.zip |
Host networking
Allow for the user to specify network=host|bridge. If network
is not specified, the default will be bridge. While "none" is now
a valid option, it is not included in this.
Signed-off-by: baude <bbaude@redhat.com>
Closes: #164
Approved by: rhatdan
-rw-r--r-- | cmd/podman/common.go | 3 | ||||
-rw-r--r-- | cmd/podman/spec.go | 24 | ||||
-rw-r--r-- | test/podman_networking.bats | 23 |
3 files changed, 39 insertions, 11 deletions
diff --git a/cmd/podman/common.go b/cmd/podman/common.go index e6c2645c9..4b268dfff 100644 --- a/cmd/podman/common.go +++ b/cmd/podman/common.go @@ -324,7 +324,8 @@ var createFlags = []cli.Flag{ }, cli.StringFlag{ Name: "network", - Usage: "Connect a container to a network (default 'default')", + Usage: "Connect a container to a network", + Value: "bridge", }, cli.StringSliceFlag{ Name: "network-alias", diff --git a/cmd/podman/spec.go b/cmd/podman/spec.go index 037b18950..e000467e2 100644 --- a/cmd/podman/spec.go +++ b/cmd/podman/spec.go @@ -73,15 +73,16 @@ func addPidNS(config *createConfig, g *generate.Generator) error { func addNetNS(config *createConfig, g *generate.Generator) error { netMode := config.NetMode if netMode.IsHost() { + logrus.Debug("Using host netmode") return g.RemoveLinuxNamespace(libpod.NetNamespace) - } - if netMode.IsNone() { - return libpod.ErrNotImplemented - } - if netMode.IsBridge() { - return libpod.ErrNotImplemented - } - if netMode.IsContainer() { + } else if netMode.IsNone() { + logrus.Debug("Using none netmode") + return nil + } else if netMode.IsBridge() { + logrus.Debug("Using bridge netmode") + return nil + } else if netMode.IsContainer() { + logrus.Debug("Using container netmode") ctr, err := config.Runtime.LookupContainer(netMode.ConnectedContainer()) if err != nil { return errors.Wrapf(err, "container %q not found", netMode.ConnectedContainer()) @@ -94,6 +95,8 @@ func addNetNS(config *createConfig, g *generate.Generator) error { if err := g.AddOrReplaceLinuxNamespace(libpod.NetNamespace, nsPath); err != nil { return err } + } else { + return errors.Errorf("unknown network mode") } return nil } @@ -556,8 +559,9 @@ func (c *createConfig) GetContainerCreateOptions() ([]libpod.CtrCreateOption, er options = append(options, libpod.WithName(c.Name)) } // TODO parse ports into libpod format and include - // TODO should not happen if --net=host - options = append(options, libpod.WithNetNS([]ocicni.PortMapping{})) + if !c.NetMode.IsHost() { + options = append(options, libpod.WithNetNS([]ocicni.PortMapping{})) + } options = append(options, libpod.WithStopSignal(c.StopSignal)) options = append(options, libpod.WithStopTimeout(c.StopTimeout)) return options, nil diff --git a/test/podman_networking.bats b/test/podman_networking.bats new file mode 100644 index 000000000..017f24d8f --- /dev/null +++ b/test/podman_networking.bats @@ -0,0 +1,23 @@ +#!/usr/bin/env bats + +load helpers + +function teardown() { + cleanup_test +} + +function setup() { + copy_images +} + +@test "test network connection with default bridge" { + run ${KPOD_BINARY} ${KPOD_OPTIONS} run -dt ${ALPINE} wget www.yahoo.com + echo "$output" + [ "$status" -eq 0 ] +} + +@test "test network connection with host" { + run ${KPOD_BINARY} ${KPOD_OPTIONS} run -dt --network host ${ALPINE} wget www.yahoo.com + echo "$output" + [ "$status" -eq 0 ] +} |