types.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. package types
  2. import (
  3. "os"
  4. "time"
  5. "github.com/docker/docker/api/types/network"
  6. "github.com/docker/docker/api/types/registry"
  7. "github.com/docker/docker/pkg/nat"
  8. "github.com/docker/docker/pkg/version"
  9. "github.com/docker/docker/runconfig"
  10. )
  11. // ContainerCreateResponse contains the information returned to a client on the
  12. // creation of a new container.
  13. type ContainerCreateResponse struct {
  14. // ID is the ID of the created container.
  15. ID string `json:"Id"`
  16. // Warnings are any warnings encountered during the creation of the container.
  17. Warnings []string `json:"Warnings"`
  18. }
  19. // ContainerExecCreateResponse contains response of Remote API:
  20. // POST "/containers/{name:.*}/exec"
  21. type ContainerExecCreateResponse struct {
  22. // ID is the exec ID.
  23. ID string `json:"Id"`
  24. }
  25. // AuthResponse contains response of Remote API:
  26. // POST "/auth"
  27. type AuthResponse struct {
  28. // Status is the authentication status
  29. Status string `json:"Status"`
  30. }
  31. // ContainerWaitResponse contains response of Remote API:
  32. // POST "/containers/"+containerID+"/wait"
  33. type ContainerWaitResponse struct {
  34. // StatusCode is the status code of the wait job
  35. StatusCode int `json:"StatusCode"`
  36. }
  37. // ContainerCommitResponse contains response of Remote API:
  38. // POST "/commit?container="+containerID
  39. type ContainerCommitResponse struct {
  40. ID string `json:"Id"`
  41. }
  42. // ContainerChange contains response of Remote API:
  43. // GET "/containers/{name:.*}/changes"
  44. type ContainerChange struct {
  45. Kind int
  46. Path string
  47. }
  48. // ImageHistory contains response of Remote API:
  49. // GET "/images/{name:.*}/history"
  50. type ImageHistory struct {
  51. ID string `json:"Id"`
  52. Created int64
  53. CreatedBy string
  54. Tags []string
  55. Size int64
  56. Comment string
  57. }
  58. // ImageDelete contains response of Remote API:
  59. // DELETE "/images/{name:.*}"
  60. type ImageDelete struct {
  61. Untagged string `json:",omitempty"`
  62. Deleted string `json:",omitempty"`
  63. }
  64. // Image contains response of Remote API:
  65. // GET "/images/json"
  66. type Image struct {
  67. ID string `json:"Id"`
  68. ParentID string `json:"ParentId"`
  69. RepoTags []string
  70. RepoDigests []string
  71. Created int64
  72. Size int64
  73. VirtualSize int64
  74. Labels map[string]string
  75. }
  76. // GraphDriverData returns Image's graph driver config info
  77. // when calling inspect command
  78. type GraphDriverData struct {
  79. Name string
  80. Data map[string]string
  81. }
  82. // ImageInspect contains response of Remote API:
  83. // GET "/images/{name:.*}/json"
  84. type ImageInspect struct {
  85. ID string `json:"Id"`
  86. RepoTags []string
  87. RepoDigests []string
  88. Parent string
  89. Comment string
  90. Created string
  91. Container string
  92. ContainerConfig *runconfig.Config
  93. DockerVersion string
  94. Author string
  95. Config *runconfig.Config
  96. Architecture string
  97. Os string
  98. Size int64
  99. VirtualSize int64
  100. GraphDriver GraphDriverData
  101. }
  102. // Port stores open ports info of container
  103. // e.g. {"PrivatePort": 8080, "PublicPort": 80, "Type": "tcp"}
  104. type Port struct {
  105. IP string `json:",omitempty"`
  106. PrivatePort int
  107. PublicPort int `json:",omitempty"`
  108. Type string
  109. }
  110. // Container contains response of Remote API:
  111. // GET "/containers/json"
  112. type Container struct {
  113. ID string `json:"Id"`
  114. Names []string
  115. Image string
  116. ImageID string
  117. Command string
  118. Created int64
  119. Ports []Port
  120. SizeRw int64 `json:",omitempty"`
  121. SizeRootFs int64 `json:",omitempty"`
  122. Labels map[string]string
  123. Status string
  124. HostConfig struct {
  125. NetworkMode string `json:",omitempty"`
  126. }
  127. }
  128. // CopyConfig contains request body of Remote API:
  129. // POST "/containers/"+containerID+"/copy"
  130. type CopyConfig struct {
  131. Resource string
  132. }
  133. // ContainerPathStat is used to encode the header from
  134. // GET "/containers/{name:.*}/archive"
  135. // "Name" is the file or directory name.
  136. type ContainerPathStat struct {
  137. Name string `json:"name"`
  138. Size int64 `json:"size"`
  139. Mode os.FileMode `json:"mode"`
  140. Mtime time.Time `json:"mtime"`
  141. LinkTarget string `json:"linkTarget"`
  142. }
  143. // ContainerProcessList contains response of Remote API:
  144. // GET "/containers/{name:.*}/top"
  145. type ContainerProcessList struct {
  146. Processes [][]string
  147. Titles []string
  148. }
  149. // Version contains response of Remote API:
  150. // GET "/version"
  151. type Version struct {
  152. Version string
  153. APIVersion version.Version `json:"ApiVersion"`
  154. GitCommit string
  155. GoVersion string
  156. Os string
  157. Arch string
  158. KernelVersion string `json:",omitempty"`
  159. Experimental bool `json:",omitempty"`
  160. BuildTime string `json:",omitempty"`
  161. }
  162. // Info contains response of Remote API:
  163. // GET "/info"
  164. type Info struct {
  165. ID string
  166. Containers int
  167. Images int
  168. Driver string
  169. DriverStatus [][2]string
  170. Plugins PluginsInfo
  171. MemoryLimit bool
  172. SwapLimit bool
  173. CPUCfsPeriod bool `json:"CpuCfsPeriod"`
  174. CPUCfsQuota bool `json:"CpuCfsQuota"`
  175. CPUShares bool
  176. CPUSet bool
  177. IPv4Forwarding bool
  178. BridgeNfIptables bool
  179. BridgeNfIP6tables bool `json:"BridgeNfIp6tables"`
  180. Debug bool
  181. NFd int
  182. OomKillDisable bool
  183. NGoroutines int
  184. SystemTime string
  185. ExecutionDriver string
  186. LoggingDriver string
  187. NEventsListener int
  188. KernelVersion string
  189. OperatingSystem string
  190. OSType string
  191. Architecture string
  192. IndexServerAddress string
  193. RegistryConfig *registry.ServiceConfig
  194. InitSha1 string
  195. InitPath string
  196. NCPU int
  197. MemTotal int64
  198. DockerRootDir string
  199. HTTPProxy string `json:"HttpProxy"`
  200. HTTPSProxy string `json:"HttpsProxy"`
  201. NoProxy string
  202. Name string
  203. Labels []string
  204. ExperimentalBuild bool
  205. ServerVersion string
  206. ClusterStore string
  207. ClusterAdvertise string
  208. }
  209. // PluginsInfo is temp struct holds Plugins name
  210. // registered with docker daemon. It used by Info struct
  211. type PluginsInfo struct {
  212. // List of Volume plugins registered
  213. Volume []string
  214. // List of Network plugins registered
  215. Network []string
  216. }
  217. // ExecStartCheck is a temp struct used by execStart
  218. // Config fields is part of ExecConfig in runconfig package
  219. type ExecStartCheck struct {
  220. // ExecStart will first check if it's detached
  221. Detach bool
  222. // Check if there's a tty
  223. Tty bool
  224. }
  225. // ContainerState stores container's running state
  226. // it's part of ContainerJSONBase and will return by "inspect" command
  227. type ContainerState struct {
  228. Status string
  229. Running bool
  230. Paused bool
  231. Restarting bool
  232. OOMKilled bool
  233. Dead bool
  234. Pid int
  235. ExitCode int
  236. Error string
  237. StartedAt string
  238. FinishedAt string
  239. }
  240. // ContainerJSONBase contains response of Remote API:
  241. // GET "/containers/{name:.*}/json"
  242. type ContainerJSONBase struct {
  243. ID string `json:"Id"`
  244. Created string
  245. Path string
  246. Args []string
  247. State *ContainerState
  248. Image string
  249. ResolvConfPath string
  250. HostnamePath string
  251. HostsPath string
  252. LogPath string
  253. Name string
  254. RestartCount int
  255. Driver string
  256. MountLabel string
  257. ProcessLabel string
  258. AppArmorProfile string
  259. ExecIDs []string
  260. HostConfig *runconfig.HostConfig
  261. GraphDriver GraphDriverData
  262. SizeRw *int64 `json:",omitempty"`
  263. SizeRootFs *int64 `json:",omitempty"`
  264. }
  265. // ContainerJSON is newly used struct along with MountPoint
  266. type ContainerJSON struct {
  267. *ContainerJSONBase
  268. Mounts []MountPoint
  269. Config *runconfig.Config
  270. NetworkSettings *NetworkSettings
  271. }
  272. // NetworkSettings exposes the network settings in the api
  273. type NetworkSettings struct {
  274. NetworkSettingsBase
  275. DefaultNetworkSettings
  276. Networks map[string]*network.EndpointSettings
  277. }
  278. // NetworkSettingsBase holds basic information about networks
  279. type NetworkSettingsBase struct {
  280. Bridge string
  281. SandboxID string
  282. HairpinMode bool
  283. LinkLocalIPv6Address string
  284. LinkLocalIPv6PrefixLen int
  285. Ports nat.PortMap
  286. SandboxKey string
  287. SecondaryIPAddresses []network.Address
  288. SecondaryIPv6Addresses []network.Address
  289. }
  290. // DefaultNetworkSettings holds network information
  291. // during the 2 release deprecation period.
  292. // It will be removed in Docker 1.11.
  293. type DefaultNetworkSettings struct {
  294. EndpointID string
  295. Gateway string
  296. GlobalIPv6Address string
  297. GlobalIPv6PrefixLen int
  298. IPAddress string
  299. IPPrefixLen int
  300. IPv6Gateway string
  301. MacAddress string
  302. }
  303. // MountPoint represents a mount point configuration inside the container.
  304. type MountPoint struct {
  305. Name string `json:",omitempty"`
  306. Source string
  307. Destination string
  308. Driver string `json:",omitempty"`
  309. Mode string
  310. RW bool
  311. Propagation string
  312. }
  313. // Volume represents the configuration of a volume for the remote API
  314. type Volume struct {
  315. Name string // Name is the name of the volume
  316. Driver string // Driver is the Driver name used to create the volume
  317. Mountpoint string // Mountpoint is the location on disk of the volume
  318. }
  319. // VolumesListResponse contains the response for the remote API:
  320. // GET "/volumes"
  321. type VolumesListResponse struct {
  322. Volumes []*Volume // Volumes is the list of volumes being returned
  323. }
  324. // VolumeCreateRequest contains the response for the remote API:
  325. // POST "/volumes/create"
  326. type VolumeCreateRequest struct {
  327. Name string // Name is the requested name of the volume
  328. Driver string // Driver is the name of the driver that should be used to create the volume
  329. DriverOpts map[string]string // DriverOpts holds the driver specific options to use for when creating the volume.
  330. }
  331. // NetworkResource is the body of the "get network" http response message
  332. type NetworkResource struct {
  333. Name string
  334. ID string `json:"Id"`
  335. Scope string
  336. Driver string
  337. IPAM network.IPAM
  338. Containers map[string]EndpointResource
  339. Options map[string]string
  340. }
  341. // EndpointResource contains network resources allocated and used for a container in a network
  342. type EndpointResource struct {
  343. Name string
  344. EndpointID string
  345. MacAddress string
  346. IPv4Address string
  347. IPv6Address string
  348. }
  349. // NetworkCreate is the expected body of the "create network" http request message
  350. type NetworkCreate struct {
  351. Name string
  352. CheckDuplicate bool
  353. Driver string
  354. IPAM network.IPAM
  355. Options map[string]string
  356. }
  357. // NetworkCreateResponse is the response message sent by the server for network create call
  358. type NetworkCreateResponse struct {
  359. ID string `json:"Id"`
  360. Warning string
  361. }
  362. // NetworkConnect represents the data to be used to connect a container to the network
  363. type NetworkConnect struct {
  364. Container string
  365. }
  366. // NetworkDisconnect represents the data to be used to disconnect a container from the network
  367. type NetworkDisconnect struct {
  368. Container string
  369. }