mirror of
https://github.com/containers/podman.git
synced 2025-12-05 21:32:22 +08:00
Merge pull request #14926 from cdoern/generateSpec
podman generate spec
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
80
test/e2e/generate_spec_test.go
Normal file
80
test/e2e/generate_spec_test.go
Normal 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))
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user