summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2021-05-05 16:47:59 -0400
committerGitHub <noreply@github.com>2021-05-05 16:47:59 -0400
commited6f399770946bb2e88f8b94e1d2f279208648d4 (patch)
tree21d94cb2d4d3571952a933ea98cfd6f701c52a2d
parentdb48da4d99a69171c0ae9998ea527e6b31e0c680 (diff)
parentf8846bd17b5c6dacb5908112ec24ce332185e5d1 (diff)
downloadpodman-ed6f399770946bb2e88f8b94e1d2f279208648d4.tar.gz
podman-ed6f399770946bb2e88f8b94e1d2f279208648d4.tar.bz2
podman-ed6f399770946bb2e88f8b94e1d2f279208648d4.zip
Merge pull request #10193 from rhatdan/runlabel
Fix handling of runlabel IMAGE and NAME
-rw-r--r--pkg/domain/infra/abi/containers_runlabel.go19
-rw-r--r--pkg/domain/infra/abi/containers_runlabel_test.go40
2 files changed, 57 insertions, 2 deletions
diff --git a/pkg/domain/infra/abi/containers_runlabel.go b/pkg/domain/infra/abi/containers_runlabel.go
index 199ae43ad..d448627dc 100644
--- a/pkg/domain/infra/abi/containers_runlabel.go
+++ b/pkg/domain/infra/abi/containers_runlabel.go
@@ -180,13 +180,28 @@ func generateRunlabelCommand(runlabel string, img *libimage.Image, inputName str
}
func replaceName(arg, name string) string {
+ if arg == "NAME" {
+ return name
+ }
+
newarg := strings.ReplaceAll(arg, "$NAME", name)
- return strings.ReplaceAll(newarg, "${NAME}", name)
+ newarg = strings.ReplaceAll(newarg, "${NAME}", name)
+ if strings.HasSuffix(newarg, "=NAME") {
+ newarg = strings.ReplaceAll(newarg, "=NAME", fmt.Sprintf("=%s", name))
+ }
+ return newarg
}
func replaceImage(arg, image string) string {
+ if arg == "IMAGE" {
+ return image
+ }
newarg := strings.ReplaceAll(arg, "$IMAGE", image)
- return strings.ReplaceAll(newarg, "${IMAGE}", image)
+ newarg = strings.ReplaceAll(newarg, "${IMAGE}", image)
+ if strings.HasSuffix(newarg, "=IMAGE") {
+ newarg = strings.ReplaceAll(newarg, "=IMAGE", fmt.Sprintf("=%s", image))
+ }
+ return newarg
}
// generateCommand takes a label (string) and converts it to an executable command
diff --git a/pkg/domain/infra/abi/containers_runlabel_test.go b/pkg/domain/infra/abi/containers_runlabel_test.go
new file mode 100644
index 000000000..10f9ae004
--- /dev/null
+++ b/pkg/domain/infra/abi/containers_runlabel_test.go
@@ -0,0 +1,40 @@
+package abi
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestReplaceName(t *testing.T) {
+ tests := [][]string{
+ {"NAME=$NAME", "test1", "NAME=test1"},
+ {"NAME=${NAME}", "test2", "NAME=test2"},
+ {"NAME=NAME", "test3", "NAME=test3"},
+ {"NAME=NAMEFOO", "test3", "NAME=NAMEFOO"},
+ {"NAME", "test4", "test4"},
+ {"FNAME", "test5", "FNAME"},
+ {"NAME=foo", "test6", "NAME=foo"},
+ {"This is my NAME", "test7", "This is my NAME"},
+ }
+ for _, args := range tests {
+ val := replaceName(args[0], args[1])
+ assert.Equal(t, val, args[2])
+ }
+}
+
+func TestReplaceImage(t *testing.T) {
+ tests := [][]string{
+ {"IMAGE=$IMAGE", "test1", "IMAGE=test1"},
+ {"IMAGE=${IMAGE}", "test2", "IMAGE=test2"},
+ {"IMAGE=IMAGE", "test3", "IMAGE=test3"},
+ {"IMAGE=IMAGEFOO", "test3", "IMAGE=IMAGEFOO"},
+ {"IMAGE", "test4", "test4"},
+ {"FIMAGE", "test5", "FIMAGE"},
+ {"IMAGE=foo", "test6", "IMAGE=foo"},
+ }
+ for _, args := range tests {
+ val := replaceImage(args[0], args[1])
+ assert.Equal(t, val, args[2])
+ }
+}