Merge pull request #14926 from cdoern/generateSpec

podman generate spec
This commit is contained in:
OpenShift Merge Robot
2022-08-10 10:23:18 +00:00
committed by GitHub
13 changed files with 351 additions and 27 deletions

View File

@@ -527,3 +527,24 @@ t GET containers/status-test/json 200 .State.Status="stopping"
sleep 3
t GET containers/status-test/json 200 .State.Status="exited"
# test podman generate spec as input for the api
podman create --name=specgen alpine_labels
TMPD=$(mktemp -d podman-apiv2-test.build.XXXXXXXX)
podman generate spec -f ${TMPD}/input.txt -c specgen
curl -XPOST -o ${TMPD}/response.txt --dump-header ${TMPD}/headers.txt -H content-type:application/json http://$HOST:$PORT/v4.0.0/libpod/containers/create -d "@${TMPD}/input.txt"
if ! grep -q '201 Created' "${TMPD}/headers.txt"; then
cat "${TMPD}/headers.txt"
cat "${TMPD}/response.txt"
echo -e "${red}NOK: container create failed"
rm -rf $TMPD
exit 1
fi
rm -rf $TMPD
podman container rm -fa

View File

@@ -136,4 +136,24 @@ t DELETE "libpod/pods/foo (pod has already been deleted)" 404
t_timeout 5 GET "libpod/pods/stats?stream=true&delay=1" 200
podman pod create --name=specgen
TMPD=$(mktemp -d podman-apiv2-test.build.XXXXXXXX)
podman generate spec -f ${TMPD}/input.txt -c specgen
curl -XPOST -o ${TMPD}/response.txt --dump-header ${TMPD}/headers.txt -H content-type:application/json http://$HOST:$PORT/v4.0.0/libpod/pods/create -d "@${TMPD}/input.txt"
if ! grep -q '201 Created' "${TMPD}/headers.txt"; then
cat "${TMPD}/headers.txt"
cat "${TMPD}/response.txt"
echo -e "${red}NOK: pod create failed"
rm -rf $TMPD
exit 1
fi
rm -rf $TMPD
podman pod rm -fa
# vim: filetype=sh

View File

@@ -0,0 +1,80 @@
package integration
import (
"os"
"path/filepath"
. "github.com/containers/podman/v4/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gexec"
)
var _ = Describe("Podman generate spec", func() {
var (
tempdir string
err error
podmanTest *PodmanTestIntegration
)
BeforeEach(func() {
SkipIfRemote("podman generate spec is not supported on the remote client")
tempdir, err = CreateTempDirInTempDir()
if err != nil {
os.Exit(1)
}
podmanTest = PodmanTestCreate(tempdir)
podmanTest.Setup()
})
AfterEach(func() {
podmanTest.Cleanup()
f := CurrentGinkgoTestDescription()
processTestResult(f)
})
It("podman generate spec bogus should fail", func() {
session := podmanTest.Podman([]string{"generate", "spec", "foobar"})
session.WaitWithDefaultTimeout()
Expect(session).Should(ExitWithError())
})
It("podman generate spec basic usage", func() {
session := podmanTest.Podman([]string{"create", "--cpus", "5", "--name", "specgen", ALPINE})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
session = podmanTest.Podman([]string{"generate", "spec", "--compact", "specgen"})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
})
It("podman generate spec file", func() {
session := podmanTest.Podman([]string{"create", "--cpus", "5", "--name", "specgen", ALPINE})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
session = podmanTest.Podman([]string{"generate", "spec", "--filename", filepath.Join(tempdir, "out.json"), "specgen"})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
path := filepath.Join(tempdir, "out.json")
exec := SystemExec("cat", []string{path})
exec.WaitWithDefaultTimeout()
Expect(exec.OutputToString()).Should(ContainSubstring("specgen-clone"))
Expect(exec.OutputToString()).Should(ContainSubstring("500000"))
})
It("generate spec pod", func() {
session := podmanTest.Podman([]string{"pod", "create", "--cpus", "5", "--name", "podspecgen"})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
session = podmanTest.Podman([]string{"generate", "spec", "--compact", "podspecgen"})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
})
})