ping.go 828 B

1234567891011121314151617181920212223242526272829303132
  1. package client
  2. import (
  3. "path"
  4. "github.com/docker/docker/api/types"
  5. "golang.org/x/net/context"
  6. )
  7. // Ping pings the server and returns the value of the "Docker-Experimental", "OS-Type" & "API-Version" headers
  8. func (cli *Client) Ping(ctx context.Context) (types.Ping, error) {
  9. var ping types.Ping
  10. req, err := cli.buildRequest("GET", path.Join(cli.basePath, "/_ping"), nil, nil)
  11. if err != nil {
  12. return ping, err
  13. }
  14. serverResp, err := cli.doRequest(ctx, req)
  15. if err != nil {
  16. return ping, err
  17. }
  18. defer ensureReaderClosed(serverResp)
  19. if serverResp.header != nil {
  20. ping.APIVersion = serverResp.header.Get("API-Version")
  21. if serverResp.header.Get("Docker-Experimental") == "true" {
  22. ping.Experimental = true
  23. }
  24. ping.OSType = serverResp.header.Get("OSType")
  25. }
  26. return ping, cli.checkResponseErr(serverResp)
  27. }