mirror of https://github.com/containers/podman.git
Add --filename option to generate kube
This allows writing output directly to a file, instead of STDOUT. Makes things easier for some scripting tasks. Like the unit tests for 'play kube'. Signed-off-by: Matthew Heon <matthew.heon@pm.me>
This commit is contained in:
parent
53435d4d47
commit
f909b745ec
|
@ -145,7 +145,8 @@ type ExportValues struct {
|
|||
}
|
||||
type GenerateKubeValues struct {
|
||||
PodmanCommand
|
||||
Service bool
|
||||
Service bool
|
||||
Filename string
|
||||
}
|
||||
|
||||
type GenerateSystemdValues struct {
|
||||
|
|
|
@ -2,6 +2,9 @@ package main
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
"github.com/containers/libpod/cmd/podman/cliconfig"
|
||||
"github.com/containers/libpod/pkg/adapter"
|
||||
podmanVersion "github.com/containers/libpod/version"
|
||||
|
@ -37,6 +40,7 @@ func init() {
|
|||
containerKubeCommand.SetUsageTemplate(UsageTemplate())
|
||||
flags := containerKubeCommand.Flags()
|
||||
flags.BoolVarP(&containerKubeCommand.Service, "service", "s", false, "Generate YAML for kubernetes service object")
|
||||
flags.StringVarP(&containerKubeCommand.Filename, "filename", "f", "", "Filename to output to")
|
||||
}
|
||||
|
||||
func generateKubeYAMLCmd(c *cliconfig.GenerateKubeValues) error {
|
||||
|
@ -88,8 +92,19 @@ func generateKubeYAMLCmd(c *cliconfig.GenerateKubeValues) error {
|
|||
output = append(output, []byte("---\n")...)
|
||||
output = append(output, marshalledService...)
|
||||
}
|
||||
// Output the v1.Pod with the v1.Container
|
||||
fmt.Println(string(output))
|
||||
|
||||
if c.Filename != "" {
|
||||
if _, err := os.Stat(c.Filename); err == nil {
|
||||
return errors.Errorf("cannot write to %q - file exists", c.Filename)
|
||||
}
|
||||
|
||||
if err := ioutil.WriteFile(c.Filename, output, 0644); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
// Output the v1.Pod with the v1.Container
|
||||
fmt.Println(string(output))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -2467,7 +2467,9 @@ _podman_healthcheck_run() {
|
|||
}
|
||||
|
||||
_podman_generate_kube() {
|
||||
local options_with_args=""
|
||||
local options_with_args="
|
||||
--filename -f
|
||||
"
|
||||
|
||||
local boolean_options="
|
||||
-h
|
||||
|
|
|
@ -14,6 +14,10 @@ Note that the generated Kubernetes YAML file can be used to re-run the deploymen
|
|||
|
||||
## OPTIONS:
|
||||
|
||||
**--filename**, **-f**=**filename**
|
||||
|
||||
Output to the given file, instead of STDOUT. If the file already exists, `generate kube` will refuse to replace it and return an error.
|
||||
|
||||
**--service**, **-s**
|
||||
|
||||
Generate a Kubernetes service object in addition to the Pods. Used to generate a Service specification for the corresponding Pod ouput. In particular, if the object has portmap bindings, the service specification will include a NodePort declaration to expose the service. A
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
package integration
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
|
@ -120,14 +119,11 @@ var _ = Describe("Podman generate kube", func() {
|
|||
session2.WaitWithDefaultTimeout()
|
||||
Expect(session2.ExitCode()).To(Equal(0))
|
||||
|
||||
kube := podmanTest.Podman([]string{"generate", "kube", podName})
|
||||
outputFile := filepath.Join(podmanTest.RunRoot, "pod.yaml")
|
||||
kube := podmanTest.Podman([]string{"generate", "kube", "-f", outputFile, podName})
|
||||
kube.WaitWithDefaultTimeout()
|
||||
Expect(kube.ExitCode()).To(Equal(0))
|
||||
|
||||
outputFile := filepath.Join(podmanTest.RunRoot, "pod.yaml")
|
||||
err := ioutil.WriteFile(outputFile, []byte(kube.OutputToString()), 0644)
|
||||
Expect(err).To(BeNil())
|
||||
|
||||
session3 := podmanTest.Podman([]string{"pod", "rm", "-af"})
|
||||
session3.WaitWithDefaultTimeout()
|
||||
Expect(session3.ExitCode()).To(Equal(0))
|
||||
|
|
Loading…
Reference in New Issue