github.com/rish1988/moby@v25.0.2+incompatible/client/plugin_upgrade.go (about) 1 package client // import "github.com/docker/docker/client" 2 3 import ( 4 "context" 5 "io" 6 "net/http" 7 "net/url" 8 9 "github.com/distribution/reference" 10 "github.com/docker/docker/api/types" 11 "github.com/docker/docker/api/types/registry" 12 "github.com/pkg/errors" 13 ) 14 15 // PluginUpgrade upgrades a plugin 16 func (cli *Client) PluginUpgrade(ctx context.Context, name string, options types.PluginInstallOptions) (rc io.ReadCloser, err error) { 17 if err := cli.NewVersionError(ctx, "1.26", "plugin upgrade"); err != nil { 18 return nil, err 19 } 20 query := url.Values{} 21 if _, err := reference.ParseNormalizedNamed(options.RemoteRef); err != nil { 22 return nil, errors.Wrap(err, "invalid remote reference") 23 } 24 query.Set("remote", options.RemoteRef) 25 26 privileges, err := cli.checkPluginPermissions(ctx, query, options) 27 if err != nil { 28 return nil, err 29 } 30 31 resp, err := cli.tryPluginUpgrade(ctx, query, privileges, name, options.RegistryAuth) 32 if err != nil { 33 return nil, err 34 } 35 return resp.body, nil 36 } 37 38 func (cli *Client) tryPluginUpgrade(ctx context.Context, query url.Values, privileges types.PluginPrivileges, name, registryAuth string) (serverResponse, error) { 39 return cli.post(ctx, "/plugins/"+name+"/upgrade", query, privileges, http.Header{ 40 registry.AuthHeader: {registryAuth}, 41 }) 42 }