service_update.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package client
  2. import (
  3. "encoding/json"
  4. "net/url"
  5. "strconv"
  6. "github.com/docker/docker/api/types"
  7. "github.com/docker/docker/api/types/swarm"
  8. "golang.org/x/net/context"
  9. )
  10. // ServiceUpdate updates a Service.
  11. func (cli *Client) ServiceUpdate(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (types.ServiceUpdateResponse, error) {
  12. var (
  13. headers map[string][]string
  14. query = url.Values{}
  15. )
  16. if options.EncodedRegistryAuth != "" {
  17. headers = map[string][]string{
  18. "X-Registry-Auth": {options.EncodedRegistryAuth},
  19. }
  20. }
  21. if options.RegistryAuthFrom != "" {
  22. query.Set("registryAuthFrom", options.RegistryAuthFrom)
  23. }
  24. query.Set("version", strconv.FormatUint(version.Index, 10))
  25. var response types.ServiceUpdateResponse
  26. resp, err := cli.post(ctx, "/services/"+serviceID+"/update", query, service, headers)
  27. if err != nil {
  28. return response, err
  29. }
  30. err = json.NewDecoder(resp.body).Decode(&response)
  31. ensureReaderClosed(resp)
  32. return response, err
  33. }