Skip to content

Commit 44b7719

Browse files
committed
e2e: Enable testing BGP using podman
When using podman, BGP test suite fails due to checks against the env container runtime which are not compatible with podman: - Inspecting network objects is not compatible due to diffrences in how podman and docker persist network objects - List containers using JSON format To overcome the above, change network inspect operation and container list using format to a form that compatible with bot docker and podman. Signed-off-by: Or Mergi <[email protected]>
1 parent 7d19991 commit 44b7719

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

test/e2e/containerengine/container_engine.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@ func (ce ContainerEngine) String() string {
1212
return string(ce)
1313
}
1414

15+
func (ce ContainerEngine) NetworkCIDRsFmt() string {
16+
if ce == Podman {
17+
return "{{json .Subnets }}"
18+
}
19+
if ce == Docker {
20+
return "{{json .IPAM.Config }}"
21+
}
22+
return ""
23+
}
24+
1525
const (
1626
Docker ContainerEngine = "docker"
1727
Podman ContainerEngine = "podman"

test/e2e/infraprovider/providers/kind/kind.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,6 @@ func (c *contextKind) cleanUp() error {
414414

415415
const (
416416
nameFormat = "{{.Name}}"
417-
inspectNetworkIPAMJSON = "{{json .IPAM.Config }}"
418417
inspectNetworkIPv4GWKeyStr = "{{ .NetworkSettings.Networks.%s.Gateway }}"
419418
inspectNetworkIPv4AddrKeyStr = "{{ .NetworkSettings.Networks.%s.IPAddress }}"
420419
inspectNetworkIPv4PrefixKeyStr = "{{ .NetworkSettings.Networks.%s.IPPrefixLen }}"
@@ -437,7 +436,7 @@ func isNetworkAttachedToContainer(networkName, containerName string) bool {
437436

438437
func doesContainerNameExist(name string) bool {
439438
// check if it is present before retrieving logs
440-
stdOut, err := exec.Command(containerengine.Get().String(), "ps", "-f", fmt.Sprintf("Name=^%s$", name), "-q").CombinedOutput()
439+
stdOut, err := exec.Command(containerengine.Get().String(), "ps", "-f", fmt.Sprintf("name=^%s$", name), "-q").CombinedOutput()
441440
if err != nil {
442441
panic(fmt.Sprintf("failed to check if external container (%s) exists: %v (%s)", name, err, stdOut))
443442
}
@@ -466,13 +465,16 @@ func getNetwork(networkName string) (containerEngineNetwork, error) {
466465
return n, api.NotFound
467466
}
468467
configs := make([]containerEngineNetworkConfig, 0, 1)
469-
dataBytes, err := exec.Command(containerengine.Get().String(), "network", "inspect", "-f", inspectNetworkIPAMJSON, networkName).CombinedOutput()
468+
469+
ce := containerengine.Get()
470+
netConfFmt := ce.NetworkCIDRsFmt()
471+
dataBytes, err := exec.Command(ce.String(), "network", "inspect", "-f", netConfFmt, networkName).CombinedOutput()
470472
if err != nil {
471473
return n, fmt.Errorf("failed to extract network %q data: %v", networkName, err)
472474
}
473475
dataBytes = []byte(strings.Trim(string(dataBytes), "\n"))
474476
if err = json.Unmarshal(dataBytes, &configs); err != nil {
475-
return n, fmt.Errorf("failed to unmarshall network %q configuration using network inspect -f %q: %v", networkName, inspectNetworkIPAMJSON, err)
477+
return n, fmt.Errorf("failed to unmarshall network %q configuration using network inspect -f %q: %v", networkName, netConfFmt, err)
476478
}
477479
if len(configs) == 0 {
478480
return n, fmt.Errorf("failed to find any IPAM configuration for network %s", networkName)

0 commit comments

Comments
 (0)