interface.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package client
  2. import (
  3. "io"
  4. "time"
  5. "github.com/docker/docker/api/types"
  6. "github.com/docker/docker/api/types/container"
  7. "github.com/docker/docker/api/types/events"
  8. "github.com/docker/docker/api/types/filters"
  9. "github.com/docker/docker/api/types/image"
  10. "github.com/docker/docker/api/types/network"
  11. "github.com/docker/docker/api/types/registry"
  12. "github.com/docker/docker/api/types/swarm"
  13. volumetypes "github.com/docker/docker/api/types/volume"
  14. "golang.org/x/net/context"
  15. )
  16. // CommonAPIClient is the common methods between stable and experimental versions of APIClient.
  17. type CommonAPIClient interface {
  18. ConfigAPIClient
  19. ContainerAPIClient
  20. DistributionAPIClient
  21. ImageAPIClient
  22. NodeAPIClient
  23. NetworkAPIClient
  24. PluginAPIClient
  25. ServiceAPIClient
  26. SwarmAPIClient
  27. SecretAPIClient
  28. SystemAPIClient
  29. VolumeAPIClient
  30. ClientVersion() string
  31. DaemonHost() string
  32. ServerVersion(ctx context.Context) (types.Version, error)
  33. NegotiateAPIVersion(ctx context.Context)
  34. NegotiateAPIVersionPing(types.Ping)
  35. }
  36. // ContainerAPIClient defines API client methods for the containers
  37. type ContainerAPIClient interface {
  38. ContainerAttach(ctx context.Context, container string, options types.ContainerAttachOptions) (types.HijackedResponse, error)
  39. ContainerCommit(ctx context.Context, container string, options types.ContainerCommitOptions) (types.IDResponse, error)
  40. ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, containerName string) (container.ContainerCreateCreatedBody, error)
  41. ContainerDiff(ctx context.Context, container string) ([]container.ContainerChangeResponseItem, error)
  42. ContainerExecAttach(ctx context.Context, execID string, config types.ExecConfig) (types.HijackedResponse, error)
  43. ContainerExecCreate(ctx context.Context, container string, config types.ExecConfig) (types.IDResponse, error)
  44. ContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error)
  45. ContainerExecResize(ctx context.Context, execID string, options types.ResizeOptions) error
  46. ContainerExecStart(ctx context.Context, execID string, config types.ExecStartCheck) error
  47. ContainerExport(ctx context.Context, container string) (io.ReadCloser, error)
  48. ContainerInspect(ctx context.Context, container string) (types.ContainerJSON, error)
  49. ContainerInspectWithRaw(ctx context.Context, container string, getSize bool) (types.ContainerJSON, []byte, error)
  50. ContainerKill(ctx context.Context, container, signal string) error
  51. ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error)
  52. ContainerLogs(ctx context.Context, container string, options types.ContainerLogsOptions) (io.ReadCloser, error)
  53. ContainerPause(ctx context.Context, container string) error
  54. ContainerRemove(ctx context.Context, container string, options types.ContainerRemoveOptions) error
  55. ContainerRename(ctx context.Context, container, newContainerName string) error
  56. ContainerResize(ctx context.Context, container string, options types.ResizeOptions) error
  57. ContainerRestart(ctx context.Context, container string, timeout *time.Duration) error
  58. ContainerStatPath(ctx context.Context, container, path string) (types.ContainerPathStat, error)
  59. ContainerStats(ctx context.Context, container string, stream bool) (types.ContainerStats, error)
  60. ContainerStart(ctx context.Context, container string, options types.ContainerStartOptions) error
  61. ContainerStop(ctx context.Context, container string, timeout *time.Duration) error
  62. ContainerTop(ctx context.Context, container string, arguments []string) (container.ContainerTopOKBody, error)
  63. ContainerUnpause(ctx context.Context, container string) error
  64. ContainerUpdate(ctx context.Context, container string, updateConfig container.UpdateConfig) (container.ContainerUpdateOKBody, error)
  65. ContainerWait(ctx context.Context, container string, condition container.WaitCondition) (<-chan container.ContainerWaitOKBody, <-chan error)
  66. CopyFromContainer(ctx context.Context, container, srcPath string) (io.ReadCloser, types.ContainerPathStat, error)
  67. CopyToContainer(ctx context.Context, container, path string, content io.Reader, options types.CopyToContainerOptions) error
  68. ContainersPrune(ctx context.Context, pruneFilters filters.Args) (types.ContainersPruneReport, error)
  69. }
  70. // DistributionAPIClient defines API client methods for the registry
  71. type DistributionAPIClient interface {
  72. DistributionInspect(ctx context.Context, image, encodedRegistryAuth string) (registry.DistributionInspect, error)
  73. }
  74. // ImageAPIClient defines API client methods for the images
  75. type ImageAPIClient interface {
  76. ImageBuild(ctx context.Context, context io.Reader, options types.ImageBuildOptions) (types.ImageBuildResponse, error)
  77. ImageCreate(ctx context.Context, parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error)
  78. ImageHistory(ctx context.Context, image string) ([]image.HistoryResponseItem, error)
  79. ImageImport(ctx context.Context, source types.ImageImportSource, ref string, options types.ImageImportOptions) (io.ReadCloser, error)
  80. ImageInspectWithRaw(ctx context.Context, image string) (types.ImageInspect, []byte, error)
  81. ImageList(ctx context.Context, options types.ImageListOptions) ([]types.ImageSummary, error)
  82. ImageLoad(ctx context.Context, input io.Reader, quiet bool) (types.ImageLoadResponse, error)
  83. ImagePull(ctx context.Context, ref string, options types.ImagePullOptions) (io.ReadCloser, error)
  84. ImagePush(ctx context.Context, ref string, options types.ImagePushOptions) (io.ReadCloser, error)
  85. ImageRemove(ctx context.Context, image string, options types.ImageRemoveOptions) ([]types.ImageDeleteResponseItem, error)
  86. ImageSearch(ctx context.Context, term string, options types.ImageSearchOptions) ([]registry.SearchResult, error)
  87. ImageSave(ctx context.Context, images []string) (io.ReadCloser, error)
  88. ImageTag(ctx context.Context, image, ref string) error
  89. ImagesPrune(ctx context.Context, pruneFilter filters.Args) (types.ImagesPruneReport, error)
  90. }
  91. // NetworkAPIClient defines API client methods for the networks
  92. type NetworkAPIClient interface {
  93. NetworkConnect(ctx context.Context, networkID, container string, config *network.EndpointSettings) error
  94. NetworkCreate(ctx context.Context, name string, options types.NetworkCreate) (types.NetworkCreateResponse, error)
  95. NetworkDisconnect(ctx context.Context, networkID, container string, force bool) error
  96. NetworkInspect(ctx context.Context, networkID string, options types.NetworkInspectOptions) (types.NetworkResource, error)
  97. NetworkInspectWithRaw(ctx context.Context, networkID string, options types.NetworkInspectOptions) (types.NetworkResource, []byte, error)
  98. NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error)
  99. NetworkRemove(ctx context.Context, networkID string) error
  100. NetworksPrune(ctx context.Context, pruneFilter filters.Args) (types.NetworksPruneReport, error)
  101. }
  102. // NodeAPIClient defines API client methods for the nodes
  103. type NodeAPIClient interface {
  104. NodeInspectWithRaw(ctx context.Context, nodeID string) (swarm.Node, []byte, error)
  105. NodeList(ctx context.Context, options types.NodeListOptions) ([]swarm.Node, error)
  106. NodeRemove(ctx context.Context, nodeID string, options types.NodeRemoveOptions) error
  107. NodeUpdate(ctx context.Context, nodeID string, version swarm.Version, node swarm.NodeSpec) error
  108. }
  109. // PluginAPIClient defines API client methods for the plugins
  110. type PluginAPIClient interface {
  111. PluginList(ctx context.Context, filter filters.Args) (types.PluginsListResponse, error)
  112. PluginRemove(ctx context.Context, name string, options types.PluginRemoveOptions) error
  113. PluginEnable(ctx context.Context, name string, options types.PluginEnableOptions) error
  114. PluginDisable(ctx context.Context, name string, options types.PluginDisableOptions) error
  115. PluginInstall(ctx context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error)
  116. PluginUpgrade(ctx context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error)
  117. PluginPush(ctx context.Context, name string, registryAuth string) (io.ReadCloser, error)
  118. PluginSet(ctx context.Context, name string, args []string) error
  119. PluginInspectWithRaw(ctx context.Context, name string) (*types.Plugin, []byte, error)
  120. PluginCreate(ctx context.Context, createContext io.Reader, options types.PluginCreateOptions) error
  121. }
  122. // ServiceAPIClient defines API client methods for the services
  123. type ServiceAPIClient interface {
  124. ServiceCreate(ctx context.Context, service swarm.ServiceSpec, options types.ServiceCreateOptions) (types.ServiceCreateResponse, error)
  125. ServiceInspectWithRaw(ctx context.Context, serviceID string, options types.ServiceInspectOptions) (swarm.Service, []byte, error)
  126. ServiceList(ctx context.Context, options types.ServiceListOptions) ([]swarm.Service, error)
  127. ServiceRemove(ctx context.Context, serviceID string) error
  128. ServiceUpdate(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (types.ServiceUpdateResponse, error)
  129. ServiceLogs(ctx context.Context, serviceID string, options types.ContainerLogsOptions) (io.ReadCloser, error)
  130. TaskLogs(ctx context.Context, taskID string, options types.ContainerLogsOptions) (io.ReadCloser, error)
  131. TaskInspectWithRaw(ctx context.Context, taskID string) (swarm.Task, []byte, error)
  132. TaskList(ctx context.Context, options types.TaskListOptions) ([]swarm.Task, error)
  133. }
  134. // SwarmAPIClient defines API client methods for the swarm
  135. type SwarmAPIClient interface {
  136. SwarmInit(ctx context.Context, req swarm.InitRequest) (string, error)
  137. SwarmJoin(ctx context.Context, req swarm.JoinRequest) error
  138. SwarmGetUnlockKey(ctx context.Context) (types.SwarmUnlockKeyResponse, error)
  139. SwarmUnlock(ctx context.Context, req swarm.UnlockRequest) error
  140. SwarmLeave(ctx context.Context, force bool) error
  141. SwarmInspect(ctx context.Context) (swarm.Swarm, error)
  142. SwarmUpdate(ctx context.Context, version swarm.Version, swarm swarm.Spec, flags swarm.UpdateFlags) error
  143. }
  144. // SystemAPIClient defines API client methods for the system
  145. type SystemAPIClient interface {
  146. Events(ctx context.Context, options types.EventsOptions) (<-chan events.Message, <-chan error)
  147. Info(ctx context.Context) (types.Info, error)
  148. RegistryLogin(ctx context.Context, auth types.AuthConfig) (registry.AuthenticateOKBody, error)
  149. DiskUsage(ctx context.Context) (types.DiskUsage, error)
  150. Ping(ctx context.Context) (types.Ping, error)
  151. }
  152. // VolumeAPIClient defines API client methods for the volumes
  153. type VolumeAPIClient interface {
  154. VolumeCreate(ctx context.Context, options volumetypes.VolumesCreateBody) (types.Volume, error)
  155. VolumeInspect(ctx context.Context, volumeID string) (types.Volume, error)
  156. VolumeInspectWithRaw(ctx context.Context, volumeID string) (types.Volume, []byte, error)
  157. VolumeList(ctx context.Context, filter filters.Args) (volumetypes.VolumesListOKBody, error)
  158. VolumeRemove(ctx context.Context, volumeID string, force bool) error
  159. VolumesPrune(ctx context.Context, pruneFilter filters.Args) (types.VolumesPruneReport, error)
  160. }
  161. // SecretAPIClient defines API client methods for secrets
  162. type SecretAPIClient interface {
  163. SecretList(ctx context.Context, options types.SecretListOptions) ([]swarm.Secret, error)
  164. SecretCreate(ctx context.Context, secret swarm.SecretSpec) (types.SecretCreateResponse, error)
  165. SecretRemove(ctx context.Context, id string) error
  166. SecretInspectWithRaw(ctx context.Context, name string) (swarm.Secret, []byte, error)
  167. SecretUpdate(ctx context.Context, id string, version swarm.Version, secret swarm.SecretSpec) error
  168. }
  169. // ConfigAPIClient defines API client methods for configs
  170. type ConfigAPIClient interface {
  171. ConfigList(ctx context.Context, options types.ConfigListOptions) ([]swarm.Config, error)
  172. ConfigCreate(ctx context.Context, config swarm.ConfigSpec) (types.ConfigCreateResponse, error)
  173. ConfigRemove(ctx context.Context, id string) error
  174. ConfigInspectWithRaw(ctx context.Context, name string) (swarm.Config, []byte, error)
  175. ConfigUpdate(ctx context.Context, id string, version swarm.Version, config swarm.ConfigSpec) error
  176. }