Merge pull request #6144 from mheon/fix_pod_create_noinfra

Fix `podman pod create --infra=false`
This commit is contained in:
OpenShift Merge Robot
2020-05-08 20:02:42 +02:00
committed by GitHub
3 changed files with 12 additions and 13 deletions

View File

@ -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 {

View File

@ -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 {

View File

@ -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
}