mirror of https://github.com/docker/cli.git
cmd/docker: areFlagsSupported: don't Ping if not needed
This is a similar fix as 006c946389
, which
fixed this for detection of commands that were executed. Make sure we don't
call the "/_ping" endpoint if we don't need to.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
cdabfa2aa5
commit
bb57783ab8
|
@ -401,14 +401,22 @@ func areFlagsSupported(cmd *cobra.Command, details versionDetails) error {
|
||||||
errs := []string{}
|
errs := []string{}
|
||||||
|
|
||||||
cmd.Flags().VisitAll(func(f *pflag.Flag) {
|
cmd.Flags().VisitAll(func(f *pflag.Flag) {
|
||||||
if !f.Changed {
|
if !f.Changed || len(f.Annotations) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !isVersionSupported(f, details.CurrentVersion()) {
|
// Important: in the code below, calls to "details.CurrentVersion()" and
|
||||||
|
// "details.ServerInfo()" are deliberately executed inline to make them
|
||||||
|
// be executed "lazily". This is to prevent making a connection with the
|
||||||
|
// daemon to perform a "ping" (even for flags that do not require a
|
||||||
|
// daemon connection).
|
||||||
|
//
|
||||||
|
// See commit b39739123b845f872549e91be184cc583f5b387c for details.
|
||||||
|
|
||||||
|
if _, ok := f.Annotations["version"]; ok && !isVersionSupported(f, details.CurrentVersion()) {
|
||||||
errs = append(errs, fmt.Sprintf(`"--%s" requires API version %s, but the Docker daemon API version is %s`, f.Name, getFlagAnnotation(f, "version"), details.CurrentVersion()))
|
errs = append(errs, fmt.Sprintf(`"--%s" requires API version %s, but the Docker daemon API version is %s`, f.Name, getFlagAnnotation(f, "version"), details.CurrentVersion()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !isOSTypeSupported(f, details.ServerInfo().OSType) {
|
if _, ok := f.Annotations["ostype"]; ok && !isOSTypeSupported(f, details.ServerInfo().OSType) {
|
||||||
errs = append(errs, fmt.Sprintf(
|
errs = append(errs, fmt.Sprintf(
|
||||||
`"--%s" is only supported on a Docker daemon running on %s, but the Docker daemon is running on %s`,
|
`"--%s" is only supported on a Docker daemon running on %s, but the Docker daemon is running on %s`,
|
||||||
f.Name,
|
f.Name,
|
||||||
|
|
Loading…
Reference in New Issue