interface.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package client
  2. import (
  3. "io"
  4. "time"
  5. "github.com/docker/engine-api/types"
  6. "github.com/docker/engine-api/types/container"
  7. "github.com/docker/engine-api/types/filters"
  8. "github.com/docker/engine-api/types/network"
  9. "github.com/docker/engine-api/types/registry"
  10. "github.com/docker/engine-api/types/swarm"
  11. "golang.org/x/net/context"
  12. )
  13. // CommonAPIClient is the common methods between stable and experimental versions of APIClient.
  14. type CommonAPIClient interface {
  15. ContainerAPIClient
  16. ImageAPIClient
  17. NodeAPIClient
  18. NetworkAPIClient
  19. ServiceAPIClient
  20. SwarmAPIClient
  21. SystemAPIClient
  22. VolumeAPIClient
  23. ClientVersion() string
  24. ServerVersion(ctx context.Context) (types.Version, error)
  25. UpdateClientVersion(v string)
  26. }
  27. // ContainerAPIClient defines API client methods for the containers
  28. type ContainerAPIClient interface {
  29. ContainerAttach(ctx context.Context, container string, options types.ContainerAttachOptions) (types.HijackedResponse, error)
  30. ContainerCommit(ctx context.Context, container string, options types.ContainerCommitOptions) (types.ContainerCommitResponse, error)
  31. ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, containerName string) (types.ContainerCreateResponse, error)
  32. ContainerDiff(ctx context.Context, container string) ([]types.ContainerChange, error)
  33. ContainerExecAttach(ctx context.Context, execID string, config types.ExecConfig) (types.HijackedResponse, error)
  34. ContainerExecCreate(ctx context.Context, container string, config types.ExecConfig) (types.ContainerExecCreateResponse, error)
  35. ContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error)
  36. ContainerExecResize(ctx context.Context, execID string, options types.ResizeOptions) error
  37. ContainerExecStart(ctx context.Context, execID string, config types.ExecStartCheck) error
  38. ContainerExport(ctx context.Context, container string) (io.ReadCloser, error)
  39. ContainerInspect(ctx context.Context, container string) (types.ContainerJSON, error)
  40. ContainerInspectWithRaw(ctx context.Context, container string, getSize bool) (types.ContainerJSON, []byte, error)
  41. ContainerKill(ctx context.Context, container, signal string) error
  42. ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error)
  43. ContainerLogs(ctx context.Context, container string, options types.ContainerLogsOptions) (io.ReadCloser, error)
  44. ContainerPause(ctx context.Context, container string) error
  45. ContainerRemove(ctx context.Context, container string, options types.ContainerRemoveOptions) error
  46. ContainerRename(ctx context.Context, container, newContainerName string) error
  47. ContainerResize(ctx context.Context, container string, options types.ResizeOptions) error
  48. ContainerRestart(ctx context.Context, container string, timeout *time.Duration) error
  49. ContainerStatPath(ctx context.Context, container, path string) (types.ContainerPathStat, error)
  50. ContainerStats(ctx context.Context, container string, stream bool) (io.ReadCloser, error)
  51. ContainerStart(ctx context.Context, container string, options types.ContainerStartOptions) error
  52. ContainerStop(ctx context.Context, container string, timeout *time.Duration) error
  53. ContainerTop(ctx context.Context, container string, arguments []string) (types.ContainerProcessList, error)
  54. ContainerUnpause(ctx context.Context, container string) error
  55. ContainerUpdate(ctx context.Context, container string, updateConfig container.UpdateConfig) error
  56. ContainerWait(ctx context.Context, container string) (int, error)
  57. CopyFromContainer(ctx context.Context, container, srcPath string) (io.ReadCloser, types.ContainerPathStat, error)
  58. CopyToContainer(ctx context.Context, container, path string, content io.Reader, options types.CopyToContainerOptions) error
  59. }
  60. // ImageAPIClient defines API client methods for the images
  61. type ImageAPIClient interface {
  62. ImageBuild(ctx context.Context, context io.Reader, options types.ImageBuildOptions) (types.ImageBuildResponse, error)
  63. ImageCreate(ctx context.Context, parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error)
  64. ImageHistory(ctx context.Context, image string) ([]types.ImageHistory, error)
  65. ImageImport(ctx context.Context, source types.ImageImportSource, ref string, options types.ImageImportOptions) (io.ReadCloser, error)
  66. ImageInspectWithRaw(ctx context.Context, image string) (types.ImageInspect, []byte, error)
  67. ImageList(ctx context.Context, options types.ImageListOptions) ([]types.Image, error)
  68. ImageLoad(ctx context.Context, input io.Reader, quiet bool) (types.ImageLoadResponse, error)
  69. ImagePull(ctx context.Context, ref string, options types.ImagePullOptions) (io.ReadCloser, error)
  70. ImagePush(ctx context.Context, ref string, options types.ImagePushOptions) (io.ReadCloser, error)
  71. ImageRemove(ctx context.Context, image string, options types.ImageRemoveOptions) ([]types.ImageDelete, error)
  72. ImageSearch(ctx context.Context, term string, options types.ImageSearchOptions) ([]registry.SearchResult, error)
  73. ImageSave(ctx context.Context, images []string) (io.ReadCloser, error)
  74. ImageTag(ctx context.Context, image, ref string) error
  75. }
  76. // NetworkAPIClient defines API client methods for the networks
  77. type NetworkAPIClient interface {
  78. NetworkConnect(ctx context.Context, networkID, container string, config *network.EndpointSettings) error
  79. NetworkCreate(ctx context.Context, name string, options types.NetworkCreate) (types.NetworkCreateResponse, error)
  80. NetworkDisconnect(ctx context.Context, networkID, container string, force bool) error
  81. NetworkInspect(ctx context.Context, networkID string) (types.NetworkResource, error)
  82. NetworkInspectWithRaw(ctx context.Context, networkID string) (types.NetworkResource, []byte, error)
  83. NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error)
  84. NetworkRemove(ctx context.Context, networkID string) error
  85. }
  86. // NodeAPIClient defines API client methods for the nodes
  87. type NodeAPIClient interface {
  88. NodeInspectWithRaw(ctx context.Context, nodeID string) (swarm.Node, []byte, error)
  89. NodeList(ctx context.Context, options types.NodeListOptions) ([]swarm.Node, error)
  90. NodeRemove(ctx context.Context, nodeID string, options types.NodeRemoveOptions) error
  91. NodeUpdate(ctx context.Context, nodeID string, version swarm.Version, node swarm.NodeSpec) error
  92. }
  93. // ServiceAPIClient defines API client methods for the services
  94. type ServiceAPIClient interface {
  95. ServiceCreate(ctx context.Context, service swarm.ServiceSpec, options types.ServiceCreateOptions) (types.ServiceCreateResponse, error)
  96. ServiceInspectWithRaw(ctx context.Context, serviceID string) (swarm.Service, []byte, error)
  97. ServiceList(ctx context.Context, options types.ServiceListOptions) ([]swarm.Service, error)
  98. ServiceRemove(ctx context.Context, serviceID string) error
  99. ServiceUpdate(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) error
  100. TaskInspectWithRaw(ctx context.Context, taskID string) (swarm.Task, []byte, error)
  101. TaskList(ctx context.Context, options types.TaskListOptions) ([]swarm.Task, error)
  102. }
  103. // SwarmAPIClient defines API client methods for the swarm
  104. type SwarmAPIClient interface {
  105. SwarmInit(ctx context.Context, req swarm.InitRequest) (string, error)
  106. SwarmJoin(ctx context.Context, req swarm.JoinRequest) error
  107. SwarmLeave(ctx context.Context, force bool) error
  108. SwarmInspect(ctx context.Context) (swarm.Swarm, error)
  109. SwarmUpdate(ctx context.Context, version swarm.Version, swarm swarm.Spec, flags swarm.UpdateFlags) error
  110. }
  111. // SystemAPIClient defines API client methods for the system
  112. type SystemAPIClient interface {
  113. Events(ctx context.Context, options types.EventsOptions) (io.ReadCloser, error)
  114. Info(ctx context.Context) (types.Info, error)
  115. RegistryLogin(ctx context.Context, auth types.AuthConfig) (types.AuthResponse, error)
  116. }
  117. // VolumeAPIClient defines API client methods for the volumes
  118. type VolumeAPIClient interface {
  119. VolumeCreate(ctx context.Context, options types.VolumeCreateRequest) (types.Volume, error)
  120. VolumeInspect(ctx context.Context, volumeID string) (types.Volume, error)
  121. VolumeInspectWithRaw(ctx context.Context, volumeID string) (types.Volume, []byte, error)
  122. VolumeList(ctx context.Context, filter filters.Args) (types.VolumesListResponse, error)
  123. VolumeRemove(ctx context.Context, volumeID string, force bool) error
  124. }