From 2fed50f4319a9204b5cb86c2924179963f111aae Mon Sep 17 00:00:00 2001
From: Valentin Rothberg <rothberg@redhat.com>
Date: Thu, 25 Jun 2020 10:13:58 +0200
Subject: generate systemd: improve pod-flags filter

When generating systemd unit for pods, we need to remove certain
pod-related flags from the containers' create commands.  Make sure
to account for all the syntax including a single argument with key and
value being split by `=`.

Fixes: #6766
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
---
 pkg/systemd/generate/common.go      | 5 +++++
 pkg/systemd/generate/common_test.go | 9 +++++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

(limited to 'pkg')

diff --git a/pkg/systemd/generate/common.go b/pkg/systemd/generate/common.go
index fe56dc874..d6d18a810 100644
--- a/pkg/systemd/generate/common.go
+++ b/pkg/systemd/generate/common.go
@@ -1,6 +1,8 @@
 package generate
 
 import (
+	"strings"
+
 	"github.com/pkg/errors"
 )
 
@@ -44,6 +46,9 @@ func filterPodFlags(command []string) []string {
 			i++
 			continue
 		}
+		if strings.HasPrefix(s, "--pod=") || strings.HasPrefix(s, "--pod-id-file=") {
+			continue
+		}
 		processed = append(processed, s)
 	}
 	return processed
diff --git a/pkg/systemd/generate/common_test.go b/pkg/systemd/generate/common_test.go
index f53bb7828..389c30f59 100644
--- a/pkg/systemd/generate/common_test.go
+++ b/pkg/systemd/generate/common_test.go
@@ -1,6 +1,7 @@
 package generate
 
 import (
+	"strings"
 	"testing"
 
 	"github.com/stretchr/testify/assert"
@@ -14,12 +15,16 @@ func TestFilterPodFlags(t *testing.T) {
 		{[]string{"podman", "pod", "create"}},
 		{[]string{"podman", "pod", "create", "--name", "foo"}},
 		{[]string{"podman", "pod", "create", "--pod-id-file", "foo"}},
+		{[]string{"podman", "pod", "create", "--pod-id-file=foo"}},
 		{[]string{"podman", "run", "--pod", "foo"}},
+		{[]string{"podman", "run", "--pod=foo"}},
 	}
 
 	for _, test := range tests {
 		processed := filterPodFlags(test.input)
-		assert.NotContains(t, processed, "--pod-id-file")
-		assert.NotContains(t, processed, "--pod")
+		for _, s := range processed {
+			assert.False(t, strings.HasPrefix(s, "--pod-id-file"))
+			assert.False(t, strings.HasPrefix(s, "--pod"))
+		}
 	}
 }
-- 
cgit v1.2.3-54-g00ecf