mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
ensureReaderClosed was designed to be usable regardless if a response was nil (error) or non-nil (success). Some code-paths were optimized to avoid using a defer (which used to have an overhead), but the overhead of defer is neglectable in current versions of Go, and some of these optimizations made the logic more complicated (and err-prone). This patch switches to use a defer for all places. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
22 lines
678 B
Go
22 lines
678 B
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
"net/url"
|
|
"strconv"
|
|
|
|
"github.com/moby/moby/api/types/swarm"
|
|
)
|
|
|
|
// SwarmUpdate updates the swarm.
|
|
func (cli *Client) SwarmUpdate(ctx context.Context, version swarm.Version, swarm swarm.Spec, flags swarm.UpdateFlags) error {
|
|
query := url.Values{}
|
|
query.Set("version", version.String())
|
|
query.Set("rotateWorkerToken", strconv.FormatBool(flags.RotateWorkerToken))
|
|
query.Set("rotateManagerToken", strconv.FormatBool(flags.RotateManagerToken))
|
|
query.Set("rotateManagerUnlockKey", strconv.FormatBool(flags.RotateManagerUnlockKey))
|
|
resp, err := cli.post(ctx, "/swarm/update", query, swarm, nil)
|
|
defer ensureReaderClosed(resp)
|
|
return err
|
|
}
|