1d274e9acf
This adds a new parameter insertDefaults to /services/{id}. When this is set, an empty field (such as UpdateConfig) will be populated with default values in the API response. Make "service inspect" use this, so that empty fields do not result in missing information when inspecting a service. Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
38 lines
1 KiB
Go
38 lines
1 KiB
Go
package client
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"net/url"
|
|
|
|
"github.com/docker/docker/api/types"
|
|
"github.com/docker/docker/api/types/swarm"
|
|
"golang.org/x/net/context"
|
|
)
|
|
|
|
// ServiceInspectWithRaw returns the service information and the raw data.
|
|
func (cli *Client) ServiceInspectWithRaw(ctx context.Context, serviceID string, opts types.ServiceInspectOptions) (swarm.Service, []byte, error) {
|
|
query := url.Values{}
|
|
query.Set("insertDefaults", fmt.Sprintf("%v", opts.InsertDefaults))
|
|
serverResp, err := cli.get(ctx, "/services/"+serviceID, query, nil)
|
|
if err != nil {
|
|
if serverResp.statusCode == http.StatusNotFound {
|
|
return swarm.Service{}, nil, serviceNotFoundError{serviceID}
|
|
}
|
|
return swarm.Service{}, nil, err
|
|
}
|
|
defer ensureReaderClosed(serverResp)
|
|
|
|
body, err := ioutil.ReadAll(serverResp.body)
|
|
if err != nil {
|
|
return swarm.Service{}, nil, err
|
|
}
|
|
|
|
var response swarm.Service
|
|
rdr := bytes.NewReader(body)
|
|
err = json.NewDecoder(rdr).Decode(&response)
|
|
return response, body, err
|
|
}
|