Merge pull request #31513 from thaJeztah/better-handling-of-older-api-versions

Improve error handling of commands run against unsupported daemon
This commit is contained in:
Vincent Demeester 2017-03-16 16:46:06 +01:00 committed by GitHub
commit c1b04a8d6e
8 changed files with 14 additions and 10 deletions

View File

@ -15,6 +15,7 @@ func NewNodeCommand(dockerCli *command.DockerCli) *cobra.Command {
Short: "Manage Swarm nodes",
Args: cli.NoArgs,
RunE: dockerCli.ShowHelp,
Tags: map[string]string{"version": "1.24"},
}
cmd.AddCommand(
newDemoteCommand(dockerCli),

View File

@ -13,6 +13,7 @@ func NewPluginCommand(dockerCli *command.DockerCli) *cobra.Command {
Short: "Manage plugins",
Args: cli.NoArgs,
RunE: dockerCli.ShowHelp,
Tags: map[string]string{"version": "1.25"},
}
cmd.AddCommand(

View File

@ -26,6 +26,7 @@ func newUpgradeCommand(dockerCli *command.DockerCli) *cobra.Command {
}
return runUpgrade(dockerCli, options)
},
Tags: map[string]string{"version": "1.26"},
}
flags := cmd.Flags()

View File

@ -14,6 +14,7 @@ func NewSecretCommand(dockerCli *command.DockerCli) *cobra.Command {
Short: "Manage Docker secrets",
Args: cli.NoArgs,
RunE: dockerCli.ShowHelp,
Tags: map[string]string{"version": "1.25"},
}
cmd.AddCommand(
newSecretListCommand(dockerCli),

View File

@ -14,6 +14,7 @@ func NewServiceCommand(dockerCli *command.DockerCli) *cobra.Command {
Short: "Manage services",
Args: cli.NoArgs,
RunE: dockerCli.ShowHelp,
Tags: map[string]string{"version": "1.24"},
}
cmd.AddCommand(
newCreateCommand(dockerCli),

View File

@ -14,6 +14,7 @@ func NewSwarmCommand(dockerCli *command.DockerCli) *cobra.Command {
Short: "Manage Swarm",
Args: cli.NoArgs,
RunE: dockerCli.ShowHelp,
Tags: map[string]string{"version": "1.24"},
}
cmd.AddCommand(
newInitCommand(dockerCli),

View File

@ -13,6 +13,7 @@ func NewVolumeCommand(dockerCli *command.DockerCli) *cobra.Command {
Short: "Manage volumes",
Args: cli.NoArgs,
RunE: dockerCli.ShowHelp,
Tags: map[string]string{"version": "1.21"},
}
cmd.AddCommand(
newCreateCommand(dockerCli),

View File

@ -229,17 +229,14 @@ func hideUnsupportedFeatures(cmd *cobra.Command, clientVersion, osType string, h
}
func isSupported(cmd *cobra.Command, clientVersion, osType string, hasExperimental bool) error {
// We check recursively so that, e.g., `docker stack ls` will return the same output as `docker stack`
if !hasExperimental {
for curr := cmd; curr != nil; curr = curr.Parent() {
if _, ok := curr.Tags["experimental"]; ok {
return errors.New("only supported on a Docker daemon with experimental features enabled")
}
// Check recursively so that, e.g., `docker stack ls` returns the same output as `docker stack`
for curr := cmd; curr != nil; curr = curr.Parent() {
if cmdVersion, ok := curr.Tags["version"]; ok && versions.LessThan(clientVersion, cmdVersion) {
return fmt.Errorf("%s requires API version %s, but the Docker daemon API version is %s", cmd.CommandPath(), cmdVersion, clientVersion)
}
if _, ok := curr.Tags["experimental"]; ok && !hasExperimental {
return fmt.Errorf("%s is only supported on a Docker daemon with experimental features enabled", cmd.CommandPath())
}
}
if cmdVersion, ok := cmd.Tags["version"]; ok && versions.LessThan(clientVersion, cmdVersion) {
return fmt.Errorf("requires API version %s, but the Docker daemon API version is %s", cmdVersion, clientVersion)
}
errs := []string{}