Merge pull request #4608 from rhatdan/vendor

Fix podman-remote version to print client and server
This commit is contained in:
OpenShift Merge Robot
2019-12-02 17:57:44 +01:00
committed by GitHub
3 changed files with 56 additions and 30 deletions

View File

@ -37,13 +37,40 @@ func init() {
flags := versionCommand.Flags()
flags.StringVarP(&versionCommand.Format, "format", "f", "", "Change the output format to JSON or a Go template")
}
func getRemoteVersion(c *cliconfig.VersionValues) (version define.Version, err error) {
runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil {
return version, errors.Wrapf(err, "could not get runtime")
}
defer runtime.DeferredShutdown(false)
return runtime.GetVersion()
}
type versionStruct struct {
Client define.Version
Server define.Version
}
// versionCmd gets and prints version info for version command
func versionCmd(c *cliconfig.VersionValues) error {
clientVersion, err := define.GetVersion()
var (
v versionStruct
err error
)
v.Client, err = define.GetVersion()
if err != nil {
return errors.Wrapf(err, "unable to determine version")
}
if remote {
v.Server, err = getRemoteVersion(c)
if err != nil {
return err
}
} else {
v.Server = v.Client
}
versionOutputFormat := c.Format
if versionOutputFormat != "" {
@ -53,11 +80,20 @@ func versionCmd(c *cliconfig.VersionValues) error {
var out formats.Writer
switch versionOutputFormat {
case formats.JSONString:
out = formats.JSONStruct{Output: clientVersion}
out = formats.JSONStruct{Output: v}
return out.Out()
default:
out = formats.StdoutTemplate{Output: clientVersion, Template: versionOutputFormat}
out = formats.StdoutTemplate{Output: v, Template: versionOutputFormat}
err := out.Out()
if err != nil {
// On Failure, assume user is using older version of podman version --format and check client
out = formats.StdoutTemplate{Output: v.Client, Template: versionOutputFormat}
if err1 := out.Out(); err1 != nil {
return err
}
}
}
return out.Out()
return nil
}
w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
defer w.Flush()
@ -66,25 +102,13 @@ func versionCmd(c *cliconfig.VersionValues) error {
if _, err := fmt.Fprintf(w, "Client:\n"); err != nil {
return err
}
}
formatVersion(w, clientVersion)
if remote {
if _, err := fmt.Fprintf(w, "\nService:\n"); err != nil {
formatVersion(w, v.Client)
if _, err := fmt.Fprintf(w, "\nServer:\n"); err != nil {
return err
}
runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil {
return errors.Wrapf(err, "could not get runtime")
}
defer runtime.DeferredShutdown(false)
serviceVersion, err := runtime.GetVersion()
if err != nil {
return err
}
formatVersion(w, serviceVersion)
formatVersion(w, v.Server)
} else {
formatVersion(w, v.Client)
}
return nil
}

View File

@ -34,8 +34,8 @@ OS/Arch: linux/amd64
Filtering out only the version:
```
$ podman version --format '{{.Version}}'
0.11.2
$ podman version --format '{{.Client.Version}}'
1.6.3
```
## SEE ALSO

View File

@ -33,7 +33,6 @@ var _ = Describe("Podman version", func() {
})
It("podman version", func() {
SkipIfRemote()
session := podmanTest.Podman([]string{"version"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@ -43,7 +42,6 @@ var _ = Describe("Podman version", func() {
})
It("podman -v", func() {
SkipIfRemote()
session := podmanTest.Podman([]string{"-v"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@ -52,7 +50,6 @@ var _ = Describe("Podman version", func() {
})
It("podman --version", func() {
SkipIfRemote()
session := podmanTest.Podman([]string{"--version"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@ -61,7 +58,6 @@ var _ = Describe("Podman version", func() {
})
It("podman version --format json", func() {
SkipIfRemote()
session := podmanTest.Podman([]string{"version", "--format", "json"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@ -69,7 +65,6 @@ var _ = Describe("Podman version", func() {
})
It("podman version --format json", func() {
SkipIfRemote()
session := podmanTest.Podman([]string{"version", "--format", "{{ json .}}"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@ -77,8 +72,15 @@ var _ = Describe("Podman version", func() {
})
It("podman version --format GO template", func() {
SkipIfRemote()
session := podmanTest.Podman([]string{"version", "--format", "{{ .Version }}"})
session := podmanTest.Podman([]string{"version", "--format", "{{ .Client.Version }}"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session = podmanTest.Podman([]string{"version", "--format", "{{ .Server.Version }}"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session = podmanTest.Podman([]string{"version", "--format", "{{ .Version }}"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
})