diff options
author | Matthew Heon <matthew.heon@pm.me> | 2020-05-08 13:25:41 -0400 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2020-05-08 13:25:41 -0400 |
commit | 7989e422b404c2fe182dac5154fbfe218c561b93 (patch) | |
tree | f6c398b04ea5c5cd863ab8d2643607df4f4c96bb | |
parent | 13db0f2b61b17e6f959fff832b40270352cd54da (diff) | |
download | podman-7989e422b404c2fe182dac5154fbfe218c561b93.tar.gz podman-7989e422b404c2fe182dac5154fbfe218c561b93.tar.bz2 podman-7989e422b404c2fe182dac5154fbfe218c561b93.zip |
Fix `podman pod create --infra=false`
We were accidentally setting incorrect defaults for the network
namespace for rootless `pod create` when infra containers were
not being created. This should resolve that issue.
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
-rw-r--r-- | cmd/podman/pods/create.go | 4 | ||||
-rw-r--r-- | pkg/specgen/generate/pod_create.go | 9 | ||||
-rw-r--r-- | pkg/specgen/pod_validate.go | 12 |
3 files changed, 12 insertions, 13 deletions
diff --git a/cmd/podman/pods/create.go b/cmd/podman/pods/create.go index f97fa836a..e24cdef98 100644 --- a/cmd/podman/pods/create.go +++ b/cmd/podman/pods/create.go @@ -16,6 +16,7 @@ import ( "github.com/containers/libpod/pkg/specgen" "github.com/containers/libpod/pkg/util" "github.com/pkg/errors" + "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/pflag" ) @@ -81,6 +82,7 @@ func create(cmd *cobra.Command, args []string) error { } if !createOptions.Infra { + logrus.Debugf("Not creating an infra container") if cmd.Flag("infra-command").Changed { return errors.New("cannot set infra-command without an infra container") } @@ -114,6 +116,7 @@ func create(cmd *cobra.Command, args []string) error { if err != nil { return err } + createOptions.Net.Network = specgen.Namespace{} if cmd.Flag("network").Changed { netInput, err := cmd.Flags().GetString("network") if err != nil { @@ -132,6 +135,7 @@ func create(cmd *cobra.Command, args []string) error { n.NSMode = specgen.Bridge createOptions.Net.CNINetworks = strings.Split(netInput, ",") } + createOptions.Net.Network = n } if len(createOptions.Net.PublishPorts) > 0 { if !createOptions.Infra { diff --git a/pkg/specgen/generate/pod_create.go b/pkg/specgen/generate/pod_create.go index df5775f8b..cd2d69cfb 100644 --- a/pkg/specgen/generate/pod_create.go +++ b/pkg/specgen/generate/pod_create.go @@ -5,6 +5,7 @@ import ( "github.com/containers/libpod/libpod" "github.com/containers/libpod/pkg/specgen" + "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -68,15 +69,17 @@ func createPodOptions(p *specgen.PodSpecGenerator) ([]libpod.PodCreateOption, er if p.NoManageResolvConf { options = append(options, libpod.WithPodUseImageResolvConf()) } + if len(p.CNINetworks) > 0 { + options = append(options, libpod.WithPodNetworks(p.CNINetworks)) + } switch p.NetNS.NSMode { - case specgen.Bridge: + case specgen.Bridge, specgen.Default, "": logrus.Debugf("Pod using default network mode") case specgen.Host: logrus.Debugf("Pod will use host networking") options = append(options, libpod.WithPodHostNetwork()) default: - logrus.Debugf("Pod joining CNI networks: %v", p.CNINetworks) - options = append(options, libpod.WithPodNetworks(p.CNINetworks)) + return nil, errors.Errorf("pods presently do not support network mode %s", p.NetNS.NSMode) } if p.NoManageHosts { diff --git a/pkg/specgen/pod_validate.go b/pkg/specgen/pod_validate.go index 08f1c0300..640447e71 100644 --- a/pkg/specgen/pod_validate.go +++ b/pkg/specgen/pod_validate.go @@ -1,7 +1,6 @@ package specgen import ( - "github.com/containers/libpod/pkg/rootless" "github.com/containers/libpod/pkg/util" "github.com/pkg/errors" ) @@ -37,8 +36,8 @@ func (p *PodSpecGenerator) Validate() error { return err } if p.NoInfra { - if p.NetNS.NSMode == NoNetwork { - return errors.New("NoInfra and a none network cannot be used toegther") + if p.NetNS.NSMode != Default && p.NetNS.NSMode != "" { + return errors.New("NoInfra and network modes cannot be used toegther") } if p.StaticIP != nil { return exclusivePodOptions("NoInfra", "StaticIP") @@ -86,13 +85,6 @@ func (p *PodSpecGenerator) Validate() error { } // Set Defaults - if p.NetNS.Value == "" { - if rootless.IsRootless() { - p.NetNS.NSMode = Slirp - } else { - p.NetNS.NSMode = Bridge - } - } if len(p.InfraImage) < 1 { p.InfraImage = containerConfig.Engine.InfraImage } |