diff --git a/api/client/plugin/install.go b/api/client/plugin/install.go index 486dc4f622..2baea0a347 100644 --- a/api/client/plugin/install.go +++ b/api/client/plugin/install.go @@ -19,6 +19,7 @@ import ( type pluginOptions struct { name string grantPerms bool + disable bool } func newInstallCommand(dockerCli *client.DockerCli) *cobra.Command { @@ -35,6 +36,7 @@ func newInstallCommand(dockerCli *client.DockerCli) *cobra.Command { flags := cmd.Flags() flags.BoolVar(&options.grantPerms, "grant-all-permissions", true, "grant all permissions necessary to run the plugin") + flags.BoolVar(&options.disable, "disable", false, "do not enable the plugin on install") return cmd } @@ -62,10 +64,9 @@ func runInstall(dockerCli *client.DockerCli, opts pluginOptions) error { requestPrivilege := dockerCli.RegistryAuthenticationPrivilegedFunc(repoInfo.Index, "plugin install") - // TODO: pass acceptAllPermissions and noEnable flag options := types.PluginInstallOptions{ RegistryAuth: encodedAuth, - Disabled: false, + Disabled: opts.disable, AcceptAllPermissions: opts.grantPerms, AcceptPermissionsFunc: acceptPrivileges(dockerCli, opts.name), PrivilegeFunc: requestPrivilege, diff --git a/integration-cli/docker_cli_plugins_test.go b/integration-cli/docker_cli_plugins_test.go index ad031b7ff6..fdb99431d3 100644 --- a/integration-cli/docker_cli_plugins_test.go +++ b/integration-cli/docker_cli_plugins_test.go @@ -34,3 +34,21 @@ func (s *DockerSuite) TestPluginBasicOps(c *check.C) { c.Assert(err, checker.IsNil) c.Assert(out, checker.Contains, nameWithTag) } + +func (s *DockerSuite) TestPluginInstallDisable(c *check.C) { + testRequires(c, DaemonIsLinux, ExperimentalDaemon) + name := "tiborvass/no-remove" + tag := "latest" + nameWithTag := name + ":" + tag + + _, _, err := dockerCmdWithError("plugin", "install", name, "--disable") + c.Assert(err, checker.IsNil) + + out, _, err := dockerCmdWithError("plugin", "ls") + c.Assert(err, checker.IsNil) + c.Assert(out, checker.Contains, "false") + + out, _, err = dockerCmdWithError("plugin", "remove", nameWithTag) + c.Assert(err, checker.IsNil) + c.Assert(out, checker.Contains, nameWithTag) +}