github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/client/service_inspect.go (about) 1 package client // import "github.com/docker/docker/client" 2 3 import ( 4 "bytes" 5 "context" 6 "encoding/json" 7 "fmt" 8 "io" 9 "net/url" 10 11 "github.com/docker/docker/api/types" 12 "github.com/docker/docker/api/types/swarm" 13 ) 14 15 // ServiceInspectWithRaw returns the service information and the raw data. 16 func (cli *Client) ServiceInspectWithRaw(ctx context.Context, serviceID string, opts types.ServiceInspectOptions) (swarm.Service, []byte, error) { 17 if serviceID == "" { 18 return swarm.Service{}, nil, objectNotFoundError{object: "service", id: serviceID} 19 } 20 query := url.Values{} 21 query.Set("insertDefaults", fmt.Sprintf("%v", opts.InsertDefaults)) 22 serverResp, err := cli.get(ctx, "/services/"+serviceID, query, nil) 23 defer ensureReaderClosed(serverResp) 24 if err != nil { 25 return swarm.Service{}, nil, wrapResponseError(err, serverResp, "service", serviceID) 26 } 27 28 body, err := io.ReadAll(serverResp.body) 29 if err != nil { 30 return swarm.Service{}, nil, err 31 } 32 33 var response swarm.Service 34 rdr := bytes.NewReader(body) 35 err = json.NewDecoder(rdr).Decode(&response) 36 return response, body, err 37 }