client.go 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. package types
  2. import (
  3. "bufio"
  4. "io"
  5. "net"
  6. "github.com/docker/docker/api/types/container"
  7. "github.com/docker/docker/api/types/filters"
  8. "github.com/docker/go-units"
  9. )
  10. // CheckpointCreateOptions holds parameters to create a checkpoint from a container
  11. type CheckpointCreateOptions struct {
  12. CheckpointID string
  13. CheckpointDir string
  14. Exit bool
  15. }
  16. // CheckpointListOptions holds parameters to list checkpoints for a container
  17. type CheckpointListOptions struct {
  18. CheckpointDir string
  19. }
  20. // CheckpointDeleteOptions holds parameters to delete a checkpoint from a container
  21. type CheckpointDeleteOptions struct {
  22. CheckpointID string
  23. CheckpointDir string
  24. }
  25. // ContainerAttachOptions holds parameters to attach to a container.
  26. type ContainerAttachOptions struct {
  27. Stream bool
  28. Stdin bool
  29. Stdout bool
  30. Stderr bool
  31. DetachKeys string
  32. Logs bool
  33. }
  34. // ContainerCommitOptions holds parameters to commit changes into a container.
  35. type ContainerCommitOptions struct {
  36. Reference string
  37. Comment string
  38. Author string
  39. Changes []string
  40. Pause bool
  41. Config *container.Config
  42. }
  43. // ContainerExecInspect holds information returned by exec inspect.
  44. type ContainerExecInspect struct {
  45. ExecID string
  46. ContainerID string
  47. Running bool
  48. ExitCode int
  49. Pid int
  50. }
  51. // ContainerListOptions holds parameters to list containers with.
  52. type ContainerListOptions struct {
  53. Quiet bool
  54. Size bool
  55. All bool
  56. Latest bool
  57. Since string
  58. Before string
  59. Limit int
  60. Filters filters.Args
  61. }
  62. // ContainerLogsOptions holds parameters to filter logs with.
  63. type ContainerLogsOptions struct {
  64. ShowStdout bool
  65. ShowStderr bool
  66. Since string
  67. Timestamps bool
  68. Follow bool
  69. Tail string
  70. Details bool
  71. }
  72. // ContainerRemoveOptions holds parameters to remove containers.
  73. type ContainerRemoveOptions struct {
  74. RemoveVolumes bool
  75. RemoveLinks bool
  76. Force bool
  77. }
  78. // ContainerStartOptions holds parameters to start containers.
  79. type ContainerStartOptions struct {
  80. CheckpointID string
  81. CheckpointDir string
  82. }
  83. // CopyToContainerOptions holds information
  84. // about files to copy into a container
  85. type CopyToContainerOptions struct {
  86. AllowOverwriteDirWithFile bool
  87. }
  88. // EventsOptions holds parameters to filter events with.
  89. type EventsOptions struct {
  90. Since string
  91. Until string
  92. Filters filters.Args
  93. }
  94. // NetworkListOptions holds parameters to filter the list of networks with.
  95. type NetworkListOptions struct {
  96. Filters filters.Args
  97. }
  98. // HijackedResponse holds connection information for a hijacked request.
  99. type HijackedResponse struct {
  100. Conn net.Conn
  101. Reader *bufio.Reader
  102. }
  103. // Close closes the hijacked connection and reader.
  104. func (h *HijackedResponse) Close() {
  105. h.Conn.Close()
  106. }
  107. // CloseWriter is an interface that implements structs
  108. // that close input streams to prevent from writing.
  109. type CloseWriter interface {
  110. CloseWrite() error
  111. }
  112. // CloseWrite closes a readWriter for writing.
  113. func (h *HijackedResponse) CloseWrite() error {
  114. if conn, ok := h.Conn.(CloseWriter); ok {
  115. return conn.CloseWrite()
  116. }
  117. return nil
  118. }
  119. // ImageBuildOptions holds the information
  120. // necessary to build images.
  121. type ImageBuildOptions struct {
  122. Tags []string
  123. SuppressOutput bool
  124. RemoteContext string
  125. NoCache bool
  126. Remove bool
  127. ForceRemove bool
  128. PullParent bool
  129. Isolation container.Isolation
  130. CPUSetCPUs string
  131. CPUSetMems string
  132. CPUShares int64
  133. CPUQuota int64
  134. CPUPeriod int64
  135. Memory int64
  136. MemorySwap int64
  137. CgroupParent string
  138. NetworkMode string
  139. ShmSize int64
  140. Dockerfile string
  141. Ulimits []*units.Ulimit
  142. BuildArgs map[string]string
  143. AuthConfigs map[string]AuthConfig
  144. Context io.Reader
  145. Labels map[string]string
  146. // squash the resulting image's layers to the parent
  147. // preserves the original image and creates a new one from the parent with all
  148. // the changes applied to a single layer
  149. Squash bool
  150. // CacheFrom specifies images that are used for matching cache. Images
  151. // specified here do not need to have a valid parent chain to match cache.
  152. CacheFrom []string
  153. SecurityOpt []string
  154. }
  155. // ImageBuildResponse holds information
  156. // returned by a server after building
  157. // an image.
  158. type ImageBuildResponse struct {
  159. Body io.ReadCloser
  160. OSType string
  161. }
  162. // ImageCreateOptions holds information to create images.
  163. type ImageCreateOptions struct {
  164. RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry
  165. }
  166. // ImageImportSource holds source information for ImageImport
  167. type ImageImportSource struct {
  168. Source io.Reader // Source is the data to send to the server to create this image from (mutually exclusive with SourceName)
  169. SourceName string // SourceName is the name of the image to pull (mutually exclusive with Source)
  170. }
  171. // ImageImportOptions holds information to import images from the client host.
  172. type ImageImportOptions struct {
  173. Tag string // Tag is the name to tag this image with. This attribute is deprecated.
  174. Message string // Message is the message to tag the image with
  175. Changes []string // Changes are the raw changes to apply to this image
  176. }
  177. // ImageListOptions holds parameters to filter the list of images with.
  178. type ImageListOptions struct {
  179. MatchName string
  180. All bool
  181. Filters filters.Args
  182. }
  183. // ImageLoadResponse returns information to the client about a load process.
  184. type ImageLoadResponse struct {
  185. // Body must be closed to avoid a resource leak
  186. Body io.ReadCloser
  187. JSON bool
  188. }
  189. // ImagePullOptions holds information to pull images.
  190. type ImagePullOptions struct {
  191. All bool
  192. RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry
  193. PrivilegeFunc RequestPrivilegeFunc
  194. }
  195. // RequestPrivilegeFunc is a function interface that
  196. // clients can supply to retry operations after
  197. // getting an authorization error.
  198. // This function returns the registry authentication
  199. // header value in base 64 format, or an error
  200. // if the privilege request fails.
  201. type RequestPrivilegeFunc func() (string, error)
  202. //ImagePushOptions holds information to push images.
  203. type ImagePushOptions ImagePullOptions
  204. // ImageRemoveOptions holds parameters to remove images.
  205. type ImageRemoveOptions struct {
  206. Force bool
  207. PruneChildren bool
  208. }
  209. // ImageSearchOptions holds parameters to search images with.
  210. type ImageSearchOptions struct {
  211. RegistryAuth string
  212. PrivilegeFunc RequestPrivilegeFunc
  213. Filters filters.Args
  214. Limit int
  215. }
  216. // ResizeOptions holds parameters to resize a tty.
  217. // It can be used to resize container ttys and
  218. // exec process ttys too.
  219. type ResizeOptions struct {
  220. Height uint
  221. Width uint
  222. }
  223. // VersionResponse holds version information for the client and the server
  224. type VersionResponse struct {
  225. Client *Version
  226. Server *Version
  227. }
  228. // ServerOK returns true when the client could connect to the docker server
  229. // and parse the information received. It returns false otherwise.
  230. func (v VersionResponse) ServerOK() bool {
  231. return v.Server != nil
  232. }
  233. // NodeListOptions holds parameters to list nodes with.
  234. type NodeListOptions struct {
  235. Filters filters.Args
  236. }
  237. // NodeRemoveOptions holds parameters to remove nodes with.
  238. type NodeRemoveOptions struct {
  239. Force bool
  240. }
  241. // ServiceCreateOptions contains the options to use when creating a service.
  242. type ServiceCreateOptions struct {
  243. // EncodedRegistryAuth is the encoded registry authorization credentials to
  244. // use when updating the service.
  245. //
  246. // This field follows the format of the X-Registry-Auth header.
  247. EncodedRegistryAuth string
  248. }
  249. // ServiceCreateResponse contains the information returned to a client
  250. // on the creation of a new service.
  251. type ServiceCreateResponse struct {
  252. // ID is the ID of the created service.
  253. ID string
  254. }
  255. // Values for RegistryAuthFrom in ServiceUpdateOptions
  256. const (
  257. RegistryAuthFromSpec = "spec"
  258. RegistryAuthFromPreviousSpec = "previous-spec"
  259. )
  260. // ServiceUpdateOptions contains the options to be used for updating services.
  261. type ServiceUpdateOptions struct {
  262. // EncodedRegistryAuth is the encoded registry authorization credentials to
  263. // use when updating the service.
  264. //
  265. // This field follows the format of the X-Registry-Auth header.
  266. EncodedRegistryAuth string
  267. // TODO(stevvooe): Consider moving the version parameter of ServiceUpdate
  268. // into this field. While it does open API users up to racy writes, most
  269. // users may not need that level of consistency in practice.
  270. // RegistryAuthFrom specifies where to find the registry authorization
  271. // credentials if they are not given in EncodedRegistryAuth. Valid
  272. // values are "spec" and "previous-spec".
  273. RegistryAuthFrom string
  274. }
  275. // ServiceListOptions holds parameters to list services with.
  276. type ServiceListOptions struct {
  277. Filters filters.Args
  278. }
  279. // TaskListOptions holds parameters to list tasks with.
  280. type TaskListOptions struct {
  281. Filters filters.Args
  282. }
  283. // PluginRemoveOptions holds parameters to remove plugins.
  284. type PluginRemoveOptions struct {
  285. Force bool
  286. }
  287. // PluginInstallOptions holds parameters to install a plugin.
  288. type PluginInstallOptions struct {
  289. Disabled bool
  290. AcceptAllPermissions bool
  291. RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry
  292. PrivilegeFunc RequestPrivilegeFunc
  293. AcceptPermissionsFunc func(PluginPrivileges) (bool, error)
  294. }