summaryrefslogtreecommitdiff
path: root/cmd/podman/play
diff options
context:
space:
mode:
authorChristian Stewart <christian@paral.in>2022-03-23 00:21:48 -0700
committerMatthew Heon <mheon@redhat.com>2022-03-30 15:36:05 -0400
commitb1cc5043fd6d4acea8bfff2464d61236df6a5e86 (patch)
treeb7953bf0a7c3614b026fca5a80035234a9fafde9 /cmd/podman/play
parentee9030bfdee6f0b6f3eb1e45081cb604c32581d0 (diff)
downloadpodman-b1cc5043fd6d4acea8bfff2464d61236df6a5e86.tar.gz
podman-b1cc5043fd6d4acea8bfff2464d61236df6a5e86.tar.bz2
podman-b1cc5043fd6d4acea8bfff2464d61236df6a5e86.zip
play: kube: use in-memory kubefile and remove tempfile
The PlayKube and PlayKubeDown commands accepted a "path" argument to a YAML file to play. This requires the caller to write the YAML to a file path. The downside of this is apparent in the HTTP handlers which have to use a temporary file on disk to store the YAML file. The file is opened & used as the body of the HTTP request. It's possible to instead pass a io.Reader and use a fully in-memory request body. Add backwards-compatible changes to bindings to allow passing either a filepath or a io.Reader body. Refactor the podman bindings to use a io.Reader instead of a filepath. Simplify the HTTP handlers for PlayKube by removing the now unneeded tempfile. [NO NEW TESTS NEEDED] Signed-off-by: Christian Stewart <christian@paral.in>
Diffstat (limited to 'cmd/podman/play')
-rw-r--r--cmd/podman/play/kube.go14
1 files changed, 12 insertions, 2 deletions
diff --git a/cmd/podman/play/kube.go b/cmd/podman/play/kube.go
index 1a430f2dc..7ff497a5c 100644
--- a/cmd/podman/play/kube.go
+++ b/cmd/podman/play/kube.go
@@ -185,10 +185,15 @@ func teardown(yamlfile string) error {
podRmErrors utils.OutputErrors
)
options := new(entities.PlayKubeDownOptions)
- reports, err := registry.ContainerEngine().PlayKubeDown(registry.GetContext(), yamlfile, *options)
+ f, err := os.Open(yamlfile)
if err != nil {
return err
}
+ defer f.Close()
+ reports, err := registry.ContainerEngine().PlayKubeDown(registry.GetContext(), f, *options)
+ if err != nil {
+ return errors.Wrap(err, yamlfile)
+ }
// Output stopped pods
fmt.Println("Pods stopped:")
@@ -218,10 +223,15 @@ func teardown(yamlfile string) error {
}
func playkube(yamlfile string) error {
- report, err := registry.ContainerEngine().PlayKube(registry.GetContext(), yamlfile, kubeOptions.PlayKubeOptions)
+ f, err := os.Open(yamlfile)
if err != nil {
return err
}
+ defer f.Close()
+ report, err := registry.ContainerEngine().PlayKube(registry.GetContext(), f, kubeOptions.PlayKubeOptions)
+ if err != nil {
+ return errors.Wrap(err, yamlfile)
+ }
// Print volumes report
for i, volume := range report.Volumes {
if i == 0 {