mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Merge pull request #29212 from yongtang/29185-docker-inspect
Fix `docker plugin inspect <unkown object>` issue on Windows
This commit is contained in:
		
						commit
						e91604c0d2
					
				
					 3 changed files with 18 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -2,6 +2,7 @@ package system
 | 
			
		|||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/net/context"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -156,6 +157,10 @@ func inspectAll(ctx context.Context, dockerCli *command.DockerCli, getSize bool,
 | 
			
		|||
		return info.Swarm.ControlAvailable
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	isErrNotSupported := func(err error) bool {
 | 
			
		||||
		return strings.Contains(err.Error(), "not supported")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return func(ref string) (interface{}, []byte, error) {
 | 
			
		||||
		const (
 | 
			
		||||
			swarmSupportUnknown = iota
 | 
			
		||||
| 
						 | 
				
			
			@ -183,7 +188,7 @@ func inspectAll(ctx context.Context, dockerCli *command.DockerCli, getSize bool,
 | 
			
		|||
			}
 | 
			
		||||
			v, raw, err := inspectData.objectInspector(ref)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				if typeConstraint == "" && apiclient.IsErrNotFound(err) {
 | 
			
		||||
				if typeConstraint == "" && (apiclient.IsErrNotFound(err) || isErrNotSupported(err)) {
 | 
			
		||||
					continue
 | 
			
		||||
				}
 | 
			
		||||
				return v, raw, err
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -251,3 +251,14 @@ func (s *DockerSuite) TestPluginInspect(c *check.C) {
 | 
			
		|||
	_, _, err = dockerCmdWithError("plugin", "inspect", "-f", "{{.Id}}", id[:5])
 | 
			
		||||
	c.Assert(err, checker.NotNil)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Test case for https://github.com/docker/docker/pull/29186#discussion_r91277345
 | 
			
		||||
func (s *DockerSuite) TestPluginInspectOnWindows(c *check.C) {
 | 
			
		||||
	// This test should work on Windows only
 | 
			
		||||
	testRequires(c, DaemonIsWindows)
 | 
			
		||||
 | 
			
		||||
	out, _, err := dockerCmdWithError("plugin", "inspect", "foobar")
 | 
			
		||||
	c.Assert(err, checker.NotNil)
 | 
			
		||||
	c.Assert(out, checker.Contains, "plugins are not supported on this platform")
 | 
			
		||||
	c.Assert(err.Error(), checker.Contains, "plugins are not supported on this platform")
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,6 @@ package plugin
 | 
			
		|||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"net/http"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -26,10 +25,7 @@ func (pm *Manager) Enable(name string, config *types.PluginEnableConfig) error {
 | 
			
		|||
 | 
			
		||||
// Inspect examines a plugin config
 | 
			
		||||
func (pm *Manager) Inspect(refOrID string) (tp types.Plugin, err error) {
 | 
			
		||||
	// Even though plugin is not supported, we still want to return `not found`
 | 
			
		||||
	// error so that `docker inspect` (without `--type` specified) returns correct
 | 
			
		||||
	// `not found` message
 | 
			
		||||
	return tp, fmt.Errorf("no such plugin name or ID associated with %q", refOrID)
 | 
			
		||||
	return tp, errNotSupported
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Privileges pulls a plugin config and computes the privileges required to install it.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue