diff options
author | Christian Stewart <christian@paral.in> | 2022-03-23 00:21:48 -0700 |
---|---|---|
committer | Matthew Heon <mheon@redhat.com> | 2022-03-30 15:36:05 -0400 |
commit | b1cc5043fd6d4acea8bfff2464d61236df6a5e86 (patch) | |
tree | b7953bf0a7c3614b026fca5a80035234a9fafde9 /cmd/podman/play | |
parent | ee9030bfdee6f0b6f3eb1e45081cb604c32581d0 (diff) | |
download | podman-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.go | 14 |
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 { |