2efd6e2078
Modify the service update and create APIs to return optional warning messages as part of the response. Populate these messages with an informative reason when digest resolution fails. This is a small API change, but significantly improves the UX. The user can now get immediate feedback when they've specified a nonexistent image or unreachable registry. Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com> Upstream-commit: 948e60691e523022f88e7f8129f02106a0f8826c Component: engine
42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package client
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/url"
|
|
"strconv"
|
|
|
|
"github.com/docker/docker/api/types"
|
|
"github.com/docker/docker/api/types/swarm"
|
|
"golang.org/x/net/context"
|
|
)
|
|
|
|
// ServiceUpdate updates a Service.
|
|
func (cli *Client) ServiceUpdate(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (types.ServiceUpdateResponse, error) {
|
|
var (
|
|
headers map[string][]string
|
|
query = url.Values{}
|
|
)
|
|
|
|
if options.EncodedRegistryAuth != "" {
|
|
headers = map[string][]string{
|
|
"X-Registry-Auth": {options.EncodedRegistryAuth},
|
|
}
|
|
}
|
|
|
|
if options.RegistryAuthFrom != "" {
|
|
query.Set("registryAuthFrom", options.RegistryAuthFrom)
|
|
}
|
|
|
|
query.Set("version", strconv.FormatUint(version.Index, 10))
|
|
|
|
var response types.ServiceUpdateResponse
|
|
resp, err := cli.post(ctx, "/services/"+serviceID+"/update", query, service, headers)
|
|
if err != nil {
|
|
return response, err
|
|
}
|
|
|
|
err = json.NewDecoder(resp.body).Decode(&response)
|
|
ensureReaderClosed(resp)
|
|
return response, err
|
|
}
|