mirror of https://github.com/docker/cli.git
Support plugins in `docker inspect`
This fix tries to address the proposal raised in 28946 to support plugins in `docker inspect`. The command `docker inspect` already supports "container", "image", "node", "network", "service", "volume", "task". However, `--type plugin` is not supported yet at the moment. This fix address this issue by adding the support of `--type plugin` for `docker inspect`. An additional integration test has been added to cover the changes. This fix fixes 28946. Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
This commit is contained in:
parent
f11c4529cb
commit
47f0fde2cf
21
errors.go
21
errors.go
|
@ -255,3 +255,24 @@ func IsErrSecretNotFound(err error) bool {
|
||||||
_, ok := err.(secretNotFoundError)
|
_, ok := err.(secretNotFoundError)
|
||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// pluginNotFoundError implements an error returned when a plugin is not in the docker host.
|
||||||
|
type pluginNotFoundError struct {
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NotFound indicates that this error type is of NotFound
|
||||||
|
func (e pluginNotFoundError) NotFound() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Error returns a string representation of a pluginNotFoundError
|
||||||
|
func (e pluginNotFoundError) Error() string {
|
||||||
|
return fmt.Sprintf("Error: No such plugin: %s", e.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsErrPluginNotFound returns true if the error is caused
|
||||||
|
// when a plugin is not found in the docker host.
|
||||||
|
func IsErrPluginNotFound(err error) bool {
|
||||||
|
return IsErrNotFound(err)
|
||||||
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
|
@ -13,6 +14,9 @@ import (
|
||||||
func (cli *Client) PluginInspectWithRaw(ctx context.Context, name string) (*types.Plugin, []byte, error) {
|
func (cli *Client) PluginInspectWithRaw(ctx context.Context, name string) (*types.Plugin, []byte, error) {
|
||||||
resp, err := cli.get(ctx, "/plugins/"+name, nil, nil)
|
resp, err := cli.get(ctx, "/plugins/"+name, nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if resp.statusCode == http.StatusNotFound {
|
||||||
|
return nil, nil, pluginNotFoundError{name}
|
||||||
|
}
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue