client/plugin_upgrade.go
4f0d95fa
 package client // import "github.com/docker/docker/client"
03c69497
 
 import (
7d62e40f
 	"context"
03c69497
 	"io"
 	"net/url"
 
 	"github.com/docker/distribution/reference"
 	"github.com/docker/docker/api/types"
 	"github.com/pkg/errors"
 )
 
 // PluginUpgrade upgrades a plugin
 func (cli *Client) PluginUpgrade(ctx context.Context, name string, options types.PluginInstallOptions) (rc io.ReadCloser, err error) {
1401342f
 	if err := cli.NewVersionError("1.26", "plugin upgrade"); err != nil {
 		return nil, err
 	}
03c69497
 	query := url.Values{}
3a127939
 	if _, err := reference.ParseNormalizedNamed(options.RemoteRef); err != nil {
03c69497
 		return nil, errors.Wrap(err, "invalid remote reference")
 	}
 	query.Set("remote", options.RemoteRef)
 
 	privileges, err := cli.checkPluginPermissions(ctx, query, options)
 	if err != nil {
 		return nil, err
 	}
 
 	resp, err := cli.tryPluginUpgrade(ctx, query, privileges, name, options.RegistryAuth)
 	if err != nil {
 		return nil, err
 	}
 	return resp.body, nil
 }
 
 func (cli *Client) tryPluginUpgrade(ctx context.Context, query url.Values, privileges types.PluginPrivileges, name, registryAuth string) (serverResponse, error) {
 	headers := map[string][]string{"X-Registry-Auth": {registryAuth}}
44c9ccc0
 	return cli.post(ctx, "/plugins/"+name+"/upgrade", query, privileges, headers)
03c69497
 }