summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2022-05-06 16:08:47 -0400
committerGitHub <noreply@github.com>2022-05-06 16:08:47 -0400
commita0ecb8675d1c45f083a70a6b3faaebd22abe5417 (patch)
tree54774fbdff2fe6f5e0fd39a3b4f1d7c5963ef23b
parenta64dd312a293eb782072ffff976a1de644a00d04 (diff)
parented8c1dfb4c62b05a944c811d49cd56d21c1c1ede (diff)
downloadpodman-a0ecb8675d1c45f083a70a6b3faaebd22abe5417.tar.gz
podman-a0ecb8675d1c45f083a70a6b3faaebd22abe5417.tar.bz2
podman-a0ecb8675d1c45f083a70a6b3faaebd22abe5417.zip
Merge pull request #14136 from Luap99/config-networks
libpod: add c.ConfigWithNetworks()
-rw-r--r--libpod/container.go27
-rw-r--r--pkg/specgen/generate/container.go6
2 files changed, 21 insertions, 12 deletions
diff --git a/libpod/container.go b/libpod/container.go
index 457b290b7..4b2af02ab 100644
--- a/libpod/container.go
+++ b/libpod/container.go
@@ -281,21 +281,29 @@ type ContainerNetworkDescriptions map[string]int
// Config accessors
// Unlocked
-// Config returns the configuration used to create the container
+// Config returns the configuration used to create the container.
+// Note that the returned config does not include the actual networks.
+// Use ConfigWithNetworks() if you need them.
func (c *Container) Config() *ContainerConfig {
returnConfig := new(ContainerConfig)
if err := JSONDeepCopy(c.config, returnConfig); err != nil {
return nil
}
+ return returnConfig
+}
- if c != nil {
- networks, err := c.networks()
- if err != nil {
- return nil
- }
+// Config returns the configuration used to create the container.
+func (c *Container) ConfigWithNetworks() *ContainerConfig {
+ returnConfig := c.Config()
+ if returnConfig == nil {
+ return nil
+ }
- returnConfig.Networks = networks
+ networks, err := c.networks()
+ if err != nil {
+ return nil
}
+ returnConfig.Networks = networks
return returnConfig
}
@@ -1269,10 +1277,7 @@ func (c *Container) NetworkMode() string {
// Unlocked accessor for networks
func (c *Container) networks() (map[string]types.PerNetworkOptions, error) {
- if c != nil && c.runtime != nil && c.runtime.state != nil { // can fail if c.networks is called from the tests
- return c.runtime.state.GetNetworks(c)
- }
- return nil, nil
+ return c.runtime.state.GetNetworks(c)
}
// getInterfaceByName returns a formatted interface name for a given
diff --git a/pkg/specgen/generate/container.go b/pkg/specgen/generate/container.go
index 63caaa77c..d8008b10b 100644
--- a/pkg/specgen/generate/container.go
+++ b/pkg/specgen/generate/container.go
@@ -3,6 +3,7 @@ package generate
import (
"context"
"encoding/json"
+ "fmt"
"os"
"strings"
"time"
@@ -352,7 +353,10 @@ func ConfigToSpec(rt *libpod.Runtime, specg *specgen.SpecGenerator, contaierID s
if err != nil {
return nil, nil, err
}
- conf := c.Config()
+ conf := c.ConfigWithNetworks()
+ if conf == nil {
+ return nil, nil, fmt.Errorf("failed to get config for container %s", c.ID())
+ }
tmpSystemd := conf.Systemd
tmpMounts := conf.Mounts