docker-engine 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +17 -0
  4. data/README.md +230 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/docker_engine/client.rb +77 -0
  7. data/lib/docker_engine/errors.rb +228 -0
  8. data/lib/docker_engine/file_part.rb +58 -0
  9. data/lib/docker_engine/internal/transport/base_client.rb +567 -0
  10. data/lib/docker_engine/internal/transport/pooled_net_requester.rb +210 -0
  11. data/lib/docker_engine/internal/type/array_of.rb +168 -0
  12. data/lib/docker_engine/internal/type/base_model.rb +529 -0
  13. data/lib/docker_engine/internal/type/base_page.rb +55 -0
  14. data/lib/docker_engine/internal/type/boolean.rb +77 -0
  15. data/lib/docker_engine/internal/type/converter.rb +327 -0
  16. data/lib/docker_engine/internal/type/enum.rb +131 -0
  17. data/lib/docker_engine/internal/type/file_input.rb +111 -0
  18. data/lib/docker_engine/internal/type/hash_of.rb +188 -0
  19. data/lib/docker_engine/internal/type/request_parameters.rb +42 -0
  20. data/lib/docker_engine/internal/type/union.rb +243 -0
  21. data/lib/docker_engine/internal/type/unknown.rb +81 -0
  22. data/lib/docker_engine/internal/util.rb +920 -0
  23. data/lib/docker_engine/internal.rb +20 -0
  24. data/lib/docker_engine/models/auth_login_params.rb +32 -0
  25. data/lib/docker_engine/models/auth_response.rb +27 -0
  26. data/lib/docker_engine/models/config.rb +307 -0
  27. data/lib/docker_engine/models/container.rb +2489 -0
  28. data/lib/docker_engine/models/container_create_params.rb +1716 -0
  29. data/lib/docker_engine/models/container_delete_params.rb +38 -0
  30. data/lib/docker_engine/models/container_inspect_params.rb +22 -0
  31. data/lib/docker_engine/models/container_kill_params.rb +25 -0
  32. data/lib/docker_engine/models/container_list_params.rb +70 -0
  33. data/lib/docker_engine/models/container_list_response.rb +8 -0
  34. data/lib/docker_engine/models/container_logs_params.rb +74 -0
  35. data/lib/docker_engine/models/container_start_params.rb +27 -0
  36. data/lib/docker_engine/models/container_stop_params.rb +33 -0
  37. data/lib/docker_engine/models/create_request.rb +348 -0
  38. data/lib/docker_engine/models/create_response.rb +27 -0
  39. data/lib/docker_engine/models/error.rb +18 -0
  40. data/lib/docker_engine/models/image.rb +1393 -0
  41. data/lib/docker_engine/models/image_delete_params.rb +43 -0
  42. data/lib/docker_engine/models/image_delete_response.rb +28 -0
  43. data/lib/docker_engine/models/image_inspect_params.rb +22 -0
  44. data/lib/docker_engine/models/image_list_params.rb +68 -0
  45. data/lib/docker_engine/models/image_list_response.rb +8 -0
  46. data/lib/docker_engine/models/image_pull_params.rb +115 -0
  47. data/lib/docker_engine/models/network.rb +253 -0
  48. data/lib/docker_engine/models/network_create_params.rb +210 -0
  49. data/lib/docker_engine/models/network_create_response.rb +27 -0
  50. data/lib/docker_engine/models/network_delete_params.rb +14 -0
  51. data/lib/docker_engine/models/network_inspect_params.rb +30 -0
  52. data/lib/docker_engine/models/network_inspect_response.rb +131 -0
  53. data/lib/docker_engine/models/network_list_params.rb +40 -0
  54. data/lib/docker_engine/models/network_list_response.rb +8 -0
  55. data/lib/docker_engine/models/service.rb +520 -0
  56. data/lib/docker_engine/models/service_create_params.rb +34 -0
  57. data/lib/docker_engine/models/service_create_response.rb +32 -0
  58. data/lib/docker_engine/models/service_delete_params.rb +14 -0
  59. data/lib/docker_engine/models/service_inspect_params.rb +22 -0
  60. data/lib/docker_engine/models/service_list_params.rb +41 -0
  61. data/lib/docker_engine/models/service_list_response.rb +8 -0
  62. data/lib/docker_engine/models/spec.rb +2302 -0
  63. data/lib/docker_engine/models/summary.rb +763 -0
  64. data/lib/docker_engine/models/system_info_params.rb +14 -0
  65. data/lib/docker_engine/models/system_info_response.rb +1879 -0
  66. data/lib/docker_engine/models/system_ping_params.rb +14 -0
  67. data/lib/docker_engine/models/system_ping_response.rb +7 -0
  68. data/lib/docker_engine/models/system_version_params.rb +14 -0
  69. data/lib/docker_engine/models/system_version_response.rb +164 -0
  70. data/lib/docker_engine/models/volume.rb +650 -0
  71. data/lib/docker_engine/models/volume_create_params.rb +14 -0
  72. data/lib/docker_engine/models/volume_delete_params.rb +22 -0
  73. data/lib/docker_engine/models/volume_inspect_params.rb +14 -0
  74. data/lib/docker_engine/models/volume_list_params.rb +34 -0
  75. data/lib/docker_engine/models/volume_list_response.rb +34 -0
  76. data/lib/docker_engine/models.rb +121 -0
  77. data/lib/docker_engine/request_options.rb +77 -0
  78. data/lib/docker_engine/resources/auth.rb +38 -0
  79. data/lib/docker_engine/resources/containers.rb +258 -0
  80. data/lib/docker_engine/resources/images.rb +156 -0
  81. data/lib/docker_engine/resources/networks.rb +139 -0
  82. data/lib/docker_engine/resources/services.rb +113 -0
  83. data/lib/docker_engine/resources/system.rb +70 -0
  84. data/lib/docker_engine/resources/volumes.rb +105 -0
  85. data/lib/docker_engine/version.rb +5 -0
  86. data/lib/docker_engine.rb +114 -0
  87. data/manifest.yaml +17 -0
  88. data/rbi/docker_engine/client.rbi +56 -0
  89. data/rbi/docker_engine/errors.rbi +205 -0
  90. data/rbi/docker_engine/file_part.rbi +37 -0
  91. data/rbi/docker_engine/internal/transport/base_client.rbi +300 -0
  92. data/rbi/docker_engine/internal/transport/pooled_net_requester.rbi +84 -0
  93. data/rbi/docker_engine/internal/type/array_of.rbi +104 -0
  94. data/rbi/docker_engine/internal/type/base_model.rbi +314 -0
  95. data/rbi/docker_engine/internal/type/base_page.rbi +43 -0
  96. data/rbi/docker_engine/internal/type/boolean.rbi +58 -0
  97. data/rbi/docker_engine/internal/type/converter.rbi +222 -0
  98. data/rbi/docker_engine/internal/type/enum.rbi +82 -0
  99. data/rbi/docker_engine/internal/type/file_input.rbi +59 -0
  100. data/rbi/docker_engine/internal/type/hash_of.rbi +104 -0
  101. data/rbi/docker_engine/internal/type/request_parameters.rbi +31 -0
  102. data/rbi/docker_engine/internal/type/union.rbi +128 -0
  103. data/rbi/docker_engine/internal/type/unknown.rbi +58 -0
  104. data/rbi/docker_engine/internal/util.rbi +487 -0
  105. data/rbi/docker_engine/internal.rbi +18 -0
  106. data/rbi/docker_engine/models/auth_login_params.rbi +62 -0
  107. data/rbi/docker_engine/models/auth_response.rbi +39 -0
  108. data/rbi/docker_engine/models/config.rbi +442 -0
  109. data/rbi/docker_engine/models/container.rbi +4575 -0
  110. data/rbi/docker_engine/models/container_create_params.rbi +3297 -0
  111. data/rbi/docker_engine/models/container_delete_params.rbi +71 -0
  112. data/rbi/docker_engine/models/container_inspect_params.rbi +46 -0
  113. data/rbi/docker_engine/models/container_kill_params.rbi +46 -0
  114. data/rbi/docker_engine/models/container_list_params.rbi +124 -0
  115. data/rbi/docker_engine/models/container_list_response.rbi +11 -0
  116. data/rbi/docker_engine/models/container_logs_params.rbi +117 -0
  117. data/rbi/docker_engine/models/container_start_params.rbi +50 -0
  118. data/rbi/docker_engine/models/container_stop_params.rbi +60 -0
  119. data/rbi/docker_engine/models/create_request.rbi +702 -0
  120. data/rbi/docker_engine/models/create_response.rbi +36 -0
  121. data/rbi/docker_engine/models/error.rbi +28 -0
  122. data/rbi/docker_engine/models/image.rbi +2323 -0
  123. data/rbi/docker_engine/models/image_delete_params.rbi +75 -0
  124. data/rbi/docker_engine/models/image_delete_response.rbi +52 -0
  125. data/rbi/docker_engine/models/image_inspect_params.rbi +49 -0
  126. data/rbi/docker_engine/models/image_list_params.rbi +112 -0
  127. data/rbi/docker_engine/models/image_list_response.rbi +11 -0
  128. data/rbi/docker_engine/models/image_pull_params.rbi +186 -0
  129. data/rbi/docker_engine/models/network.rbi +419 -0
  130. data/rbi/docker_engine/models/network_create_params.rbi +362 -0
  131. data/rbi/docker_engine/models/network_create_response.rbi +37 -0
  132. data/rbi/docker_engine/models/network_delete_params.rbi +32 -0
  133. data/rbi/docker_engine/models/network_inspect_params.rbi +60 -0
  134. data/rbi/docker_engine/models/network_inspect_response.rbi +329 -0
  135. data/rbi/docker_engine/models/network_list_params.rbi +76 -0
  136. data/rbi/docker_engine/models/network_list_response.rbi +11 -0
  137. data/rbi/docker_engine/models/service.rbi +1076 -0
  138. data/rbi/docker_engine/models/service_create_params.rbi +77 -0
  139. data/rbi/docker_engine/models/service_create_response.rbi +50 -0
  140. data/rbi/docker_engine/models/service_delete_params.rbi +32 -0
  141. data/rbi/docker_engine/models/service_inspect_params.rbi +49 -0
  142. data/rbi/docker_engine/models/service_list_params.rbi +76 -0
  143. data/rbi/docker_engine/models/service_list_response.rbi +11 -0
  144. data/rbi/docker_engine/models/spec.rbi +4587 -0
  145. data/rbi/docker_engine/models/summary.rbi +1298 -0
  146. data/rbi/docker_engine/models/system_info_params.rbi +29 -0
  147. data/rbi/docker_engine/models/system_info_response.rbi +3587 -0
  148. data/rbi/docker_engine/models/system_ping_params.rbi +29 -0
  149. data/rbi/docker_engine/models/system_ping_response.rbi +7 -0
  150. data/rbi/docker_engine/models/system_version_params.rbi +32 -0
  151. data/rbi/docker_engine/models/system_version_response.rbi +282 -0
  152. data/rbi/docker_engine/models/volume.rbi +1218 -0
  153. data/rbi/docker_engine/models/volume_create_params.rbi +32 -0
  154. data/rbi/docker_engine/models/volume_delete_params.rbi +46 -0
  155. data/rbi/docker_engine/models/volume_inspect_params.rbi +32 -0
  156. data/rbi/docker_engine/models/volume_list_params.rbi +61 -0
  157. data/rbi/docker_engine/models/volume_list_response.rbi +55 -0
  158. data/rbi/docker_engine/models.rbi +83 -0
  159. data/rbi/docker_engine/request_options.rbi +59 -0
  160. data/rbi/docker_engine/resources/auth.rbi +30 -0
  161. data/rbi/docker_engine/resources/containers.rbi +231 -0
  162. data/rbi/docker_engine/resources/images.rbi +164 -0
  163. data/rbi/docker_engine/resources/networks.rbi +133 -0
  164. data/rbi/docker_engine/resources/services.rbi +88 -0
  165. data/rbi/docker_engine/resources/system.rbi +40 -0
  166. data/rbi/docker_engine/resources/volumes.rbi +80 -0
  167. data/rbi/docker_engine/version.rbi +5 -0
  168. data/sig/docker_engine/client.rbs +33 -0
  169. data/sig/docker_engine/errors.rbs +117 -0
  170. data/sig/docker_engine/file_part.rbs +21 -0
  171. data/sig/docker_engine/internal/transport/base_client.rbs +131 -0
  172. data/sig/docker_engine/internal/transport/pooled_net_requester.rbs +48 -0
  173. data/sig/docker_engine/internal/type/array_of.rbs +48 -0
  174. data/sig/docker_engine/internal/type/base_model.rbs +104 -0
  175. data/sig/docker_engine/internal/type/base_page.rbs +24 -0
  176. data/sig/docker_engine/internal/type/boolean.rbs +26 -0
  177. data/sig/docker_engine/internal/type/converter.rbs +79 -0
  178. data/sig/docker_engine/internal/type/enum.rbs +32 -0
  179. data/sig/docker_engine/internal/type/file_input.rbs +25 -0
  180. data/sig/docker_engine/internal/type/hash_of.rbs +48 -0
  181. data/sig/docker_engine/internal/type/request_parameters.rbs +19 -0
  182. data/sig/docker_engine/internal/type/union.rbs +52 -0
  183. data/sig/docker_engine/internal/type/unknown.rbs +26 -0
  184. data/sig/docker_engine/internal/util.rbs +185 -0
  185. data/sig/docker_engine/internal.rbs +9 -0
  186. data/sig/docker_engine/models/auth_login_params.rbs +38 -0
  187. data/sig/docker_engine/models/auth_response.rbs +17 -0
  188. data/sig/docker_engine/models/config.rbs +225 -0
  189. data/sig/docker_engine/models/container.rbs +1973 -0
  190. data/sig/docker_engine/models/container_create_params.rbs +1352 -0
  191. data/sig/docker_engine/models/container_delete_params.rbs +38 -0
  192. data/sig/docker_engine/models/container_inspect_params.rbs +25 -0
  193. data/sig/docker_engine/models/container_kill_params.rbs +25 -0
  194. data/sig/docker_engine/models/container_list_params.rbs +44 -0
  195. data/sig/docker_engine/models/container_list_response.rbs +7 -0
  196. data/sig/docker_engine/models/container_logs_params.rbs +70 -0
  197. data/sig/docker_engine/models/container_start_params.rbs +25 -0
  198. data/sig/docker_engine/models/container_stop_params.rbs +32 -0
  199. data/sig/docker_engine/models/create_request.rbs +255 -0
  200. data/sig/docker_engine/models/create_response.rbs +15 -0
  201. data/sig/docker_engine/models/error.rbs +13 -0
  202. data/sig/docker_engine/models/image.rbs +1038 -0
  203. data/sig/docker_engine/models/image_delete_params.rbs +38 -0
  204. data/sig/docker_engine/models/image_delete_response.rbs +24 -0
  205. data/sig/docker_engine/models/image_inspect_params.rbs +25 -0
  206. data/sig/docker_engine/models/image_list_params.rbs +56 -0
  207. data/sig/docker_engine/models/image_list_response.rbs +7 -0
  208. data/sig/docker_engine/models/image_pull_params.rbs +84 -0
  209. data/sig/docker_engine/models/network.rbs +236 -0
  210. data/sig/docker_engine/models/network_create_params.rbs +203 -0
  211. data/sig/docker_engine/models/network_create_response.rbs +15 -0
  212. data/sig/docker_engine/models/network_delete_params.rbs +15 -0
  213. data/sig/docker_engine/models/network_inspect_params.rbs +32 -0
  214. data/sig/docker_engine/models/network_inspect_response.rbs +149 -0
  215. data/sig/docker_engine/models/network_list_params.rbs +25 -0
  216. data/sig/docker_engine/models/network_list_response.rbs +7 -0
  217. data/sig/docker_engine/models/service.rbs +471 -0
  218. data/sig/docker_engine/models/service_create_params.rbs +38 -0
  219. data/sig/docker_engine/models/service_create_response.rbs +17 -0
  220. data/sig/docker_engine/models/service_delete_params.rbs +15 -0
  221. data/sig/docker_engine/models/service_inspect_params.rbs +26 -0
  222. data/sig/docker_engine/models/service_list_params.rbs +32 -0
  223. data/sig/docker_engine/models/service_list_response.rbs +7 -0
  224. data/sig/docker_engine/models/spec.rbs +1984 -0
  225. data/sig/docker_engine/models/summary.rbs +634 -0
  226. data/sig/docker_engine/models/system_info_params.rbs +15 -0
  227. data/sig/docker_engine/models/system_info_response.rbs +1380 -0
  228. data/sig/docker_engine/models/system_ping_params.rbs +15 -0
  229. data/sig/docker_engine/models/system_ping_response.rbs +5 -0
  230. data/sig/docker_engine/models/system_version_params.rbs +15 -0
  231. data/sig/docker_engine/models/system_version_response.rbs +127 -0
  232. data/sig/docker_engine/models/volume.rbs +478 -0
  233. data/sig/docker_engine/models/volume_create_params.rbs +15 -0
  234. data/sig/docker_engine/models/volume_delete_params.rbs +25 -0
  235. data/sig/docker_engine/models/volume_inspect_params.rbs +15 -0
  236. data/sig/docker_engine/models/volume_list_params.rbs +25 -0
  237. data/sig/docker_engine/models/volume_list_response.rbs +28 -0
  238. data/sig/docker_engine/models.rbs +81 -0
  239. data/sig/docker_engine/request_options.rbs +36 -0
  240. data/sig/docker_engine/resources/auth.rbs +14 -0
  241. data/sig/docker_engine/resources/containers.rbs +67 -0
  242. data/sig/docker_engine/resources/images.rbs +43 -0
  243. data/sig/docker_engine/resources/networks.rbs +41 -0
  244. data/sig/docker_engine/resources/services.rbs +30 -0
  245. data/sig/docker_engine/resources/system.rbs +17 -0
  246. data/sig/docker_engine/resources/volumes.rbs +28 -0
  247. data/sig/docker_engine/version.rbs +3 -0
  248. metadata +319 -0
@@ -0,0 +1,4587 @@
1
+ # typed: strong
2
+
3
+ module DockerEngine
4
+ module Models
5
+ class Spec < DockerEngine::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(DockerEngine::Spec, DockerEngine::Internal::AnyHash)
9
+ end
10
+
11
+ # Properties that can be configured to access and load balance a service.
12
+ sig { returns(T.nilable(DockerEngine::Spec::EndpointSpec)) }
13
+ attr_reader :endpoint_spec
14
+
15
+ sig do
16
+ params(endpoint_spec: DockerEngine::Spec::EndpointSpec::OrHash).void
17
+ end
18
+ attr_writer :endpoint_spec
19
+
20
+ # User-defined key/value metadata.
21
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
22
+ attr_reader :labels
23
+
24
+ sig { params(labels: T::Hash[Symbol, String]).void }
25
+ attr_writer :labels
26
+
27
+ # Scheduling mode for the service.
28
+ sig { returns(T.nilable(DockerEngine::Spec::Mode)) }
29
+ attr_reader :mode
30
+
31
+ sig { params(mode: DockerEngine::Spec::Mode::OrHash).void }
32
+ attr_writer :mode
33
+
34
+ # Name of the service.
35
+ sig { returns(T.nilable(String)) }
36
+ attr_reader :name
37
+
38
+ sig { params(name: String).void }
39
+ attr_writer :name
40
+
41
+ # Specifies which networks the service should attach to.
42
+ #
43
+ # Deprecated: This field is deprecated since v1.44. The Networks field in TaskSpec
44
+ # should be used instead.
45
+ sig { returns(T.nilable(T::Array[DockerEngine::Spec::Network])) }
46
+ attr_reader :networks
47
+
48
+ sig do
49
+ params(networks: T::Array[DockerEngine::Spec::Network::OrHash]).void
50
+ end
51
+ attr_writer :networks
52
+
53
+ # Specification for the rollback strategy of the service.
54
+ sig { returns(T.nilable(DockerEngine::Spec::RollbackConfig)) }
55
+ attr_reader :rollback_config
56
+
57
+ sig do
58
+ params(rollback_config: DockerEngine::Spec::RollbackConfig::OrHash).void
59
+ end
60
+ attr_writer :rollback_config
61
+
62
+ # User modifiable task configuration.
63
+ sig { returns(T.nilable(DockerEngine::Spec::TaskTemplate)) }
64
+ attr_reader :task_template
65
+
66
+ sig do
67
+ params(task_template: DockerEngine::Spec::TaskTemplate::OrHash).void
68
+ end
69
+ attr_writer :task_template
70
+
71
+ # Specification for the update strategy of the service.
72
+ sig { returns(T.nilable(DockerEngine::Spec::UpdateConfig)) }
73
+ attr_reader :update_config
74
+
75
+ sig do
76
+ params(update_config: DockerEngine::Spec::UpdateConfig::OrHash).void
77
+ end
78
+ attr_writer :update_config
79
+
80
+ # User modifiable configuration for a service.
81
+ sig do
82
+ params(
83
+ endpoint_spec: DockerEngine::Spec::EndpointSpec::OrHash,
84
+ labels: T::Hash[Symbol, String],
85
+ mode: DockerEngine::Spec::Mode::OrHash,
86
+ name: String,
87
+ networks: T::Array[DockerEngine::Spec::Network::OrHash],
88
+ rollback_config: DockerEngine::Spec::RollbackConfig::OrHash,
89
+ task_template: DockerEngine::Spec::TaskTemplate::OrHash,
90
+ update_config: DockerEngine::Spec::UpdateConfig::OrHash
91
+ ).returns(T.attached_class)
92
+ end
93
+ def self.new(
94
+ # Properties that can be configured to access and load balance a service.
95
+ endpoint_spec: nil,
96
+ # User-defined key/value metadata.
97
+ labels: nil,
98
+ # Scheduling mode for the service.
99
+ mode: nil,
100
+ # Name of the service.
101
+ name: nil,
102
+ # Specifies which networks the service should attach to.
103
+ #
104
+ # Deprecated: This field is deprecated since v1.44. The Networks field in TaskSpec
105
+ # should be used instead.
106
+ networks: nil,
107
+ # Specification for the rollback strategy of the service.
108
+ rollback_config: nil,
109
+ # User modifiable task configuration.
110
+ task_template: nil,
111
+ # Specification for the update strategy of the service.
112
+ update_config: nil
113
+ )
114
+ end
115
+
116
+ sig do
117
+ override.returns(
118
+ {
119
+ endpoint_spec: DockerEngine::Spec::EndpointSpec,
120
+ labels: T::Hash[Symbol, String],
121
+ mode: DockerEngine::Spec::Mode,
122
+ name: String,
123
+ networks: T::Array[DockerEngine::Spec::Network],
124
+ rollback_config: DockerEngine::Spec::RollbackConfig,
125
+ task_template: DockerEngine::Spec::TaskTemplate,
126
+ update_config: DockerEngine::Spec::UpdateConfig
127
+ }
128
+ )
129
+ end
130
+ def to_hash
131
+ end
132
+
133
+ class EndpointSpec < DockerEngine::Internal::Type::BaseModel
134
+ OrHash =
135
+ T.type_alias do
136
+ T.any(
137
+ DockerEngine::Spec::EndpointSpec,
138
+ DockerEngine::Internal::AnyHash
139
+ )
140
+ end
141
+
142
+ # The mode of resolution to use for internal load balancing between tasks.
143
+ sig do
144
+ returns(T.nilable(DockerEngine::Spec::EndpointSpec::Mode::OrSymbol))
145
+ end
146
+ attr_reader :mode
147
+
148
+ sig do
149
+ params(mode: DockerEngine::Spec::EndpointSpec::Mode::OrSymbol).void
150
+ end
151
+ attr_writer :mode
152
+
153
+ # List of exposed ports that this service is accessible on from the outside. Ports
154
+ # can only be provided if `vip` resolution mode is used.
155
+ sig do
156
+ returns(T.nilable(T::Array[DockerEngine::Spec::EndpointSpec::Port]))
157
+ end
158
+ attr_reader :ports
159
+
160
+ sig do
161
+ params(
162
+ ports: T::Array[DockerEngine::Spec::EndpointSpec::Port::OrHash]
163
+ ).void
164
+ end
165
+ attr_writer :ports
166
+
167
+ # Properties that can be configured to access and load balance a service.
168
+ sig do
169
+ params(
170
+ mode: DockerEngine::Spec::EndpointSpec::Mode::OrSymbol,
171
+ ports: T::Array[DockerEngine::Spec::EndpointSpec::Port::OrHash]
172
+ ).returns(T.attached_class)
173
+ end
174
+ def self.new(
175
+ # The mode of resolution to use for internal load balancing between tasks.
176
+ mode: nil,
177
+ # List of exposed ports that this service is accessible on from the outside. Ports
178
+ # can only be provided if `vip` resolution mode is used.
179
+ ports: nil
180
+ )
181
+ end
182
+
183
+ sig do
184
+ override.returns(
185
+ {
186
+ mode: DockerEngine::Spec::EndpointSpec::Mode::OrSymbol,
187
+ ports: T::Array[DockerEngine::Spec::EndpointSpec::Port]
188
+ }
189
+ )
190
+ end
191
+ def to_hash
192
+ end
193
+
194
+ # The mode of resolution to use for internal load balancing between tasks.
195
+ module Mode
196
+ extend DockerEngine::Internal::Type::Enum
197
+
198
+ TaggedSymbol =
199
+ T.type_alias do
200
+ T.all(Symbol, DockerEngine::Spec::EndpointSpec::Mode)
201
+ end
202
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
203
+
204
+ VIP =
205
+ T.let(:vip, DockerEngine::Spec::EndpointSpec::Mode::TaggedSymbol)
206
+ DNSRR =
207
+ T.let(:dnsrr, DockerEngine::Spec::EndpointSpec::Mode::TaggedSymbol)
208
+
209
+ sig do
210
+ override.returns(
211
+ T::Array[DockerEngine::Spec::EndpointSpec::Mode::TaggedSymbol]
212
+ )
213
+ end
214
+ def self.values
215
+ end
216
+ end
217
+
218
+ class Port < DockerEngine::Internal::Type::BaseModel
219
+ OrHash =
220
+ T.type_alias do
221
+ T.any(
222
+ DockerEngine::Spec::EndpointSpec::Port,
223
+ DockerEngine::Internal::AnyHash
224
+ )
225
+ end
226
+
227
+ sig { returns(T.nilable(String)) }
228
+ attr_reader :name
229
+
230
+ sig { params(name: String).void }
231
+ attr_writer :name
232
+
233
+ sig do
234
+ returns(
235
+ T.nilable(
236
+ DockerEngine::Spec::EndpointSpec::Port::Protocol::OrSymbol
237
+ )
238
+ )
239
+ end
240
+ attr_reader :protocol
241
+
242
+ sig do
243
+ params(
244
+ protocol:
245
+ DockerEngine::Spec::EndpointSpec::Port::Protocol::OrSymbol
246
+ ).void
247
+ end
248
+ attr_writer :protocol
249
+
250
+ # The port on the swarm hosts.
251
+ sig { returns(T.nilable(Integer)) }
252
+ attr_reader :published_port
253
+
254
+ sig { params(published_port: Integer).void }
255
+ attr_writer :published_port
256
+
257
+ # The mode in which port is published.
258
+ #
259
+ # <p><br /></p>
260
+ #
261
+ # - "ingress" makes the target port accessible on every node, regardless of
262
+ # whether there is a task for the service running on that node or not.
263
+ # - "host" bypasses the routing mesh and publish the port directly on the swarm
264
+ # node where that service is running.
265
+ sig do
266
+ returns(
267
+ T.nilable(
268
+ DockerEngine::Spec::EndpointSpec::Port::PublishMode::OrSymbol
269
+ )
270
+ )
271
+ end
272
+ attr_reader :publish_mode
273
+
274
+ sig do
275
+ params(
276
+ publish_mode:
277
+ DockerEngine::Spec::EndpointSpec::Port::PublishMode::OrSymbol
278
+ ).void
279
+ end
280
+ attr_writer :publish_mode
281
+
282
+ # The port inside the container.
283
+ sig { returns(T.nilable(Integer)) }
284
+ attr_reader :target_port
285
+
286
+ sig { params(target_port: Integer).void }
287
+ attr_writer :target_port
288
+
289
+ sig do
290
+ params(
291
+ name: String,
292
+ protocol:
293
+ DockerEngine::Spec::EndpointSpec::Port::Protocol::OrSymbol,
294
+ published_port: Integer,
295
+ publish_mode:
296
+ DockerEngine::Spec::EndpointSpec::Port::PublishMode::OrSymbol,
297
+ target_port: Integer
298
+ ).returns(T.attached_class)
299
+ end
300
+ def self.new(
301
+ name: nil,
302
+ protocol: nil,
303
+ # The port on the swarm hosts.
304
+ published_port: nil,
305
+ # The mode in which port is published.
306
+ #
307
+ # <p><br /></p>
308
+ #
309
+ # - "ingress" makes the target port accessible on every node, regardless of
310
+ # whether there is a task for the service running on that node or not.
311
+ # - "host" bypasses the routing mesh and publish the port directly on the swarm
312
+ # node where that service is running.
313
+ publish_mode: nil,
314
+ # The port inside the container.
315
+ target_port: nil
316
+ )
317
+ end
318
+
319
+ sig do
320
+ override.returns(
321
+ {
322
+ name: String,
323
+ protocol:
324
+ DockerEngine::Spec::EndpointSpec::Port::Protocol::OrSymbol,
325
+ published_port: Integer,
326
+ publish_mode:
327
+ DockerEngine::Spec::EndpointSpec::Port::PublishMode::OrSymbol,
328
+ target_port: Integer
329
+ }
330
+ )
331
+ end
332
+ def to_hash
333
+ end
334
+
335
+ module Protocol
336
+ extend DockerEngine::Internal::Type::Enum
337
+
338
+ TaggedSymbol =
339
+ T.type_alias do
340
+ T.all(Symbol, DockerEngine::Spec::EndpointSpec::Port::Protocol)
341
+ end
342
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
343
+
344
+ TCP =
345
+ T.let(
346
+ :tcp,
347
+ DockerEngine::Spec::EndpointSpec::Port::Protocol::TaggedSymbol
348
+ )
349
+ UDP =
350
+ T.let(
351
+ :udp,
352
+ DockerEngine::Spec::EndpointSpec::Port::Protocol::TaggedSymbol
353
+ )
354
+ SCTP =
355
+ T.let(
356
+ :sctp,
357
+ DockerEngine::Spec::EndpointSpec::Port::Protocol::TaggedSymbol
358
+ )
359
+
360
+ sig do
361
+ override.returns(
362
+ T::Array[
363
+ DockerEngine::Spec::EndpointSpec::Port::Protocol::TaggedSymbol
364
+ ]
365
+ )
366
+ end
367
+ def self.values
368
+ end
369
+ end
370
+
371
+ # The mode in which port is published.
372
+ #
373
+ # <p><br /></p>
374
+ #
375
+ # - "ingress" makes the target port accessible on every node, regardless of
376
+ # whether there is a task for the service running on that node or not.
377
+ # - "host" bypasses the routing mesh and publish the port directly on the swarm
378
+ # node where that service is running.
379
+ module PublishMode
380
+ extend DockerEngine::Internal::Type::Enum
381
+
382
+ TaggedSymbol =
383
+ T.type_alias do
384
+ T.all(
385
+ Symbol,
386
+ DockerEngine::Spec::EndpointSpec::Port::PublishMode
387
+ )
388
+ end
389
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
390
+
391
+ INGRESS =
392
+ T.let(
393
+ :ingress,
394
+ DockerEngine::Spec::EndpointSpec::Port::PublishMode::TaggedSymbol
395
+ )
396
+ HOST =
397
+ T.let(
398
+ :host,
399
+ DockerEngine::Spec::EndpointSpec::Port::PublishMode::TaggedSymbol
400
+ )
401
+
402
+ sig do
403
+ override.returns(
404
+ T::Array[
405
+ DockerEngine::Spec::EndpointSpec::Port::PublishMode::TaggedSymbol
406
+ ]
407
+ )
408
+ end
409
+ def self.values
410
+ end
411
+ end
412
+ end
413
+ end
414
+
415
+ class Mode < DockerEngine::Internal::Type::BaseModel
416
+ OrHash =
417
+ T.type_alias do
418
+ T.any(DockerEngine::Spec::Mode, DockerEngine::Internal::AnyHash)
419
+ end
420
+
421
+ sig { returns(T.nilable(T.anything)) }
422
+ attr_reader :global
423
+
424
+ sig { params(global: T.anything).void }
425
+ attr_writer :global
426
+
427
+ # The mode used for services which run a task to the completed state on each valid
428
+ # node.
429
+ sig { returns(T.nilable(T.anything)) }
430
+ attr_reader :global_job
431
+
432
+ sig { params(global_job: T.anything).void }
433
+ attr_writer :global_job
434
+
435
+ sig { returns(T.nilable(DockerEngine::Spec::Mode::Replicated)) }
436
+ attr_reader :replicated
437
+
438
+ sig do
439
+ params(replicated: DockerEngine::Spec::Mode::Replicated::OrHash).void
440
+ end
441
+ attr_writer :replicated
442
+
443
+ # The mode used for services with a finite number of tasks that run to a completed
444
+ # state.
445
+ sig { returns(T.nilable(DockerEngine::Spec::Mode::ReplicatedJob)) }
446
+ attr_reader :replicated_job
447
+
448
+ sig do
449
+ params(
450
+ replicated_job: DockerEngine::Spec::Mode::ReplicatedJob::OrHash
451
+ ).void
452
+ end
453
+ attr_writer :replicated_job
454
+
455
+ # Scheduling mode for the service.
456
+ sig do
457
+ params(
458
+ global: T.anything,
459
+ global_job: T.anything,
460
+ replicated: DockerEngine::Spec::Mode::Replicated::OrHash,
461
+ replicated_job: DockerEngine::Spec::Mode::ReplicatedJob::OrHash
462
+ ).returns(T.attached_class)
463
+ end
464
+ def self.new(
465
+ global: nil,
466
+ # The mode used for services which run a task to the completed state on each valid
467
+ # node.
468
+ global_job: nil,
469
+ replicated: nil,
470
+ # The mode used for services with a finite number of tasks that run to a completed
471
+ # state.
472
+ replicated_job: nil
473
+ )
474
+ end
475
+
476
+ sig do
477
+ override.returns(
478
+ {
479
+ global: T.anything,
480
+ global_job: T.anything,
481
+ replicated: DockerEngine::Spec::Mode::Replicated,
482
+ replicated_job: DockerEngine::Spec::Mode::ReplicatedJob
483
+ }
484
+ )
485
+ end
486
+ def to_hash
487
+ end
488
+
489
+ class Replicated < DockerEngine::Internal::Type::BaseModel
490
+ OrHash =
491
+ T.type_alias do
492
+ T.any(
493
+ DockerEngine::Spec::Mode::Replicated,
494
+ DockerEngine::Internal::AnyHash
495
+ )
496
+ end
497
+
498
+ sig { returns(T.nilable(Integer)) }
499
+ attr_reader :replicas
500
+
501
+ sig { params(replicas: Integer).void }
502
+ attr_writer :replicas
503
+
504
+ sig { params(replicas: Integer).returns(T.attached_class) }
505
+ def self.new(replicas: nil)
506
+ end
507
+
508
+ sig { override.returns({ replicas: Integer }) }
509
+ def to_hash
510
+ end
511
+ end
512
+
513
+ class ReplicatedJob < DockerEngine::Internal::Type::BaseModel
514
+ OrHash =
515
+ T.type_alias do
516
+ T.any(
517
+ DockerEngine::Spec::Mode::ReplicatedJob,
518
+ DockerEngine::Internal::AnyHash
519
+ )
520
+ end
521
+
522
+ # The maximum number of replicas to run simultaneously.
523
+ sig { returns(T.nilable(Integer)) }
524
+ attr_reader :max_concurrent
525
+
526
+ sig { params(max_concurrent: Integer).void }
527
+ attr_writer :max_concurrent
528
+
529
+ # The total number of replicas desired to reach the Completed state. If unset,
530
+ # will default to the value of `MaxConcurrent`
531
+ sig { returns(T.nilable(Integer)) }
532
+ attr_reader :total_completions
533
+
534
+ sig { params(total_completions: Integer).void }
535
+ attr_writer :total_completions
536
+
537
+ # The mode used for services with a finite number of tasks that run to a completed
538
+ # state.
539
+ sig do
540
+ params(max_concurrent: Integer, total_completions: Integer).returns(
541
+ T.attached_class
542
+ )
543
+ end
544
+ def self.new(
545
+ # The maximum number of replicas to run simultaneously.
546
+ max_concurrent: nil,
547
+ # The total number of replicas desired to reach the Completed state. If unset,
548
+ # will default to the value of `MaxConcurrent`
549
+ total_completions: nil
550
+ )
551
+ end
552
+
553
+ sig do
554
+ override.returns(
555
+ { max_concurrent: Integer, total_completions: Integer }
556
+ )
557
+ end
558
+ def to_hash
559
+ end
560
+ end
561
+ end
562
+
563
+ class Network < DockerEngine::Internal::Type::BaseModel
564
+ OrHash =
565
+ T.type_alias do
566
+ T.any(DockerEngine::Spec::Network, DockerEngine::Internal::AnyHash)
567
+ end
568
+
569
+ # Discoverable alternate names for the service on this network.
570
+ sig { returns(T.nilable(T::Array[String])) }
571
+ attr_reader :aliases
572
+
573
+ sig { params(aliases: T::Array[String]).void }
574
+ attr_writer :aliases
575
+
576
+ # Driver attachment options for the network target.
577
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
578
+ attr_reader :driver_opts
579
+
580
+ sig { params(driver_opts: T::Hash[Symbol, String]).void }
581
+ attr_writer :driver_opts
582
+
583
+ # The target network for attachment. Must be a network name or ID.
584
+ sig { returns(T.nilable(String)) }
585
+ attr_reader :target
586
+
587
+ sig { params(target: String).void }
588
+ attr_writer :target
589
+
590
+ # Specifies how a service should be attached to a particular network.
591
+ sig do
592
+ params(
593
+ aliases: T::Array[String],
594
+ driver_opts: T::Hash[Symbol, String],
595
+ target: String
596
+ ).returns(T.attached_class)
597
+ end
598
+ def self.new(
599
+ # Discoverable alternate names for the service on this network.
600
+ aliases: nil,
601
+ # Driver attachment options for the network target.
602
+ driver_opts: nil,
603
+ # The target network for attachment. Must be a network name or ID.
604
+ target: nil
605
+ )
606
+ end
607
+
608
+ sig do
609
+ override.returns(
610
+ {
611
+ aliases: T::Array[String],
612
+ driver_opts: T::Hash[Symbol, String],
613
+ target: String
614
+ }
615
+ )
616
+ end
617
+ def to_hash
618
+ end
619
+ end
620
+
621
+ class RollbackConfig < DockerEngine::Internal::Type::BaseModel
622
+ OrHash =
623
+ T.type_alias do
624
+ T.any(
625
+ DockerEngine::Spec::RollbackConfig,
626
+ DockerEngine::Internal::AnyHash
627
+ )
628
+ end
629
+
630
+ # Amount of time between rollback iterations, in nanoseconds.
631
+ sig { returns(T.nilable(Integer)) }
632
+ attr_reader :delay
633
+
634
+ sig { params(delay: Integer).void }
635
+ attr_writer :delay
636
+
637
+ # Action to take if an rolled back task fails to run, or stops running during the
638
+ # rollback.
639
+ sig do
640
+ returns(
641
+ T.nilable(
642
+ DockerEngine::Spec::RollbackConfig::FailureAction::OrSymbol
643
+ )
644
+ )
645
+ end
646
+ attr_reader :failure_action
647
+
648
+ sig do
649
+ params(
650
+ failure_action:
651
+ DockerEngine::Spec::RollbackConfig::FailureAction::OrSymbol
652
+ ).void
653
+ end
654
+ attr_writer :failure_action
655
+
656
+ # The fraction of tasks that may fail during a rollback before the failure action
657
+ # is invoked, specified as a floating point number between 0 and 1.
658
+ sig { returns(T.nilable(Float)) }
659
+ attr_reader :max_failure_ratio
660
+
661
+ sig { params(max_failure_ratio: Float).void }
662
+ attr_writer :max_failure_ratio
663
+
664
+ # Amount of time to monitor each rolled back task for failures, in nanoseconds.
665
+ sig { returns(T.nilable(Integer)) }
666
+ attr_reader :monitor
667
+
668
+ sig { params(monitor: Integer).void }
669
+ attr_writer :monitor
670
+
671
+ # The order of operations when rolling back a task. Either the old task is shut
672
+ # down before the new task is started, or the new task is started before the old
673
+ # task is shut down.
674
+ sig do
675
+ returns(
676
+ T.nilable(DockerEngine::Spec::RollbackConfig::Order::OrSymbol)
677
+ )
678
+ end
679
+ attr_reader :order
680
+
681
+ sig do
682
+ params(
683
+ order: DockerEngine::Spec::RollbackConfig::Order::OrSymbol
684
+ ).void
685
+ end
686
+ attr_writer :order
687
+
688
+ # Maximum number of tasks to be rolled back in one iteration (0 means unlimited
689
+ # parallelism).
690
+ sig { returns(T.nilable(Integer)) }
691
+ attr_reader :parallelism
692
+
693
+ sig { params(parallelism: Integer).void }
694
+ attr_writer :parallelism
695
+
696
+ # Specification for the rollback strategy of the service.
697
+ sig do
698
+ params(
699
+ delay: Integer,
700
+ failure_action:
701
+ DockerEngine::Spec::RollbackConfig::FailureAction::OrSymbol,
702
+ max_failure_ratio: Float,
703
+ monitor: Integer,
704
+ order: DockerEngine::Spec::RollbackConfig::Order::OrSymbol,
705
+ parallelism: Integer
706
+ ).returns(T.attached_class)
707
+ end
708
+ def self.new(
709
+ # Amount of time between rollback iterations, in nanoseconds.
710
+ delay: nil,
711
+ # Action to take if an rolled back task fails to run, or stops running during the
712
+ # rollback.
713
+ failure_action: nil,
714
+ # The fraction of tasks that may fail during a rollback before the failure action
715
+ # is invoked, specified as a floating point number between 0 and 1.
716
+ max_failure_ratio: nil,
717
+ # Amount of time to monitor each rolled back task for failures, in nanoseconds.
718
+ monitor: nil,
719
+ # The order of operations when rolling back a task. Either the old task is shut
720
+ # down before the new task is started, or the new task is started before the old
721
+ # task is shut down.
722
+ order: nil,
723
+ # Maximum number of tasks to be rolled back in one iteration (0 means unlimited
724
+ # parallelism).
725
+ parallelism: nil
726
+ )
727
+ end
728
+
729
+ sig do
730
+ override.returns(
731
+ {
732
+ delay: Integer,
733
+ failure_action:
734
+ DockerEngine::Spec::RollbackConfig::FailureAction::OrSymbol,
735
+ max_failure_ratio: Float,
736
+ monitor: Integer,
737
+ order: DockerEngine::Spec::RollbackConfig::Order::OrSymbol,
738
+ parallelism: Integer
739
+ }
740
+ )
741
+ end
742
+ def to_hash
743
+ end
744
+
745
+ # Action to take if an rolled back task fails to run, or stops running during the
746
+ # rollback.
747
+ module FailureAction
748
+ extend DockerEngine::Internal::Type::Enum
749
+
750
+ TaggedSymbol =
751
+ T.type_alias do
752
+ T.all(Symbol, DockerEngine::Spec::RollbackConfig::FailureAction)
753
+ end
754
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
755
+
756
+ CONTINUE =
757
+ T.let(
758
+ :continue,
759
+ DockerEngine::Spec::RollbackConfig::FailureAction::TaggedSymbol
760
+ )
761
+ PAUSE =
762
+ T.let(
763
+ :pause,
764
+ DockerEngine::Spec::RollbackConfig::FailureAction::TaggedSymbol
765
+ )
766
+
767
+ sig do
768
+ override.returns(
769
+ T::Array[
770
+ DockerEngine::Spec::RollbackConfig::FailureAction::TaggedSymbol
771
+ ]
772
+ )
773
+ end
774
+ def self.values
775
+ end
776
+ end
777
+
778
+ # The order of operations when rolling back a task. Either the old task is shut
779
+ # down before the new task is started, or the new task is started before the old
780
+ # task is shut down.
781
+ module Order
782
+ extend DockerEngine::Internal::Type::Enum
783
+
784
+ TaggedSymbol =
785
+ T.type_alias do
786
+ T.all(Symbol, DockerEngine::Spec::RollbackConfig::Order)
787
+ end
788
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
789
+
790
+ STOP_FIRST =
791
+ T.let(
792
+ :"stop-first",
793
+ DockerEngine::Spec::RollbackConfig::Order::TaggedSymbol
794
+ )
795
+ START_FIRST =
796
+ T.let(
797
+ :"start-first",
798
+ DockerEngine::Spec::RollbackConfig::Order::TaggedSymbol
799
+ )
800
+
801
+ sig do
802
+ override.returns(
803
+ T::Array[DockerEngine::Spec::RollbackConfig::Order::TaggedSymbol]
804
+ )
805
+ end
806
+ def self.values
807
+ end
808
+ end
809
+ end
810
+
811
+ class TaskTemplate < DockerEngine::Internal::Type::BaseModel
812
+ OrHash =
813
+ T.type_alias do
814
+ T.any(
815
+ DockerEngine::Spec::TaskTemplate,
816
+ DockerEngine::Internal::AnyHash
817
+ )
818
+ end
819
+
820
+ # Container spec for the service.
821
+ #
822
+ # <p><br /></p>
823
+ #
824
+ # > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are mutually
825
+ # > exclusive. PluginSpec is only used when the Runtime field is set to `plugin`.
826
+ # > NetworkAttachmentSpec is used when the Runtime field is set to `attachment`.
827
+ sig do
828
+ returns(T.nilable(DockerEngine::Spec::TaskTemplate::ContainerSpec))
829
+ end
830
+ attr_reader :container_spec
831
+
832
+ sig do
833
+ params(
834
+ container_spec:
835
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::OrHash
836
+ ).void
837
+ end
838
+ attr_writer :container_spec
839
+
840
+ # A counter that triggers an update even if no relevant parameters have been
841
+ # changed.
842
+ sig { returns(T.nilable(Integer)) }
843
+ attr_reader :force_update
844
+
845
+ sig { params(force_update: Integer).void }
846
+ attr_writer :force_update
847
+
848
+ # Specifies the log driver to use for tasks created from this spec. If not
849
+ # present, the default one for the swarm will be used, finally falling back to the
850
+ # engine default if not specified.
851
+ sig { returns(T.nilable(DockerEngine::Spec::TaskTemplate::LogDriver)) }
852
+ attr_reader :log_driver
853
+
854
+ sig do
855
+ params(
856
+ log_driver: DockerEngine::Spec::TaskTemplate::LogDriver::OrHash
857
+ ).void
858
+ end
859
+ attr_writer :log_driver
860
+
861
+ # Read-only spec type for non-swarm containers attached to swarm overlay networks.
862
+ #
863
+ # <p><br /></p>
864
+ #
865
+ # > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are mutually
866
+ # > exclusive. PluginSpec is only used when the Runtime field is set to `plugin`.
867
+ # > NetworkAttachmentSpec is used when the Runtime field is set to `attachment`.
868
+ sig do
869
+ returns(
870
+ T.nilable(DockerEngine::Spec::TaskTemplate::NetworkAttachmentSpec)
871
+ )
872
+ end
873
+ attr_reader :network_attachment_spec
874
+
875
+ sig do
876
+ params(
877
+ network_attachment_spec:
878
+ DockerEngine::Spec::TaskTemplate::NetworkAttachmentSpec::OrHash
879
+ ).void
880
+ end
881
+ attr_writer :network_attachment_spec
882
+
883
+ # Specifies which networks the service should attach to.
884
+ sig do
885
+ returns(
886
+ T.nilable(T::Array[DockerEngine::Spec::TaskTemplate::Network])
887
+ )
888
+ end
889
+ attr_reader :networks
890
+
891
+ sig do
892
+ params(
893
+ networks:
894
+ T::Array[DockerEngine::Spec::TaskTemplate::Network::OrHash]
895
+ ).void
896
+ end
897
+ attr_writer :networks
898
+
899
+ sig { returns(T.nilable(DockerEngine::Spec::TaskTemplate::Placement)) }
900
+ attr_reader :placement
901
+
902
+ sig do
903
+ params(
904
+ placement: DockerEngine::Spec::TaskTemplate::Placement::OrHash
905
+ ).void
906
+ end
907
+ attr_writer :placement
908
+
909
+ # Plugin spec for the service. _(Experimental release only.)_
910
+ #
911
+ # <p><br /></p>
912
+ #
913
+ # > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are mutually
914
+ # > exclusive. PluginSpec is only used when the Runtime field is set to `plugin`.
915
+ # > NetworkAttachmentSpec is used when the Runtime field is set to `attachment`.
916
+ sig { returns(T.nilable(DockerEngine::Spec::TaskTemplate::PluginSpec)) }
917
+ attr_reader :plugin_spec
918
+
919
+ sig do
920
+ params(
921
+ plugin_spec: DockerEngine::Spec::TaskTemplate::PluginSpec::OrHash
922
+ ).void
923
+ end
924
+ attr_writer :plugin_spec
925
+
926
+ # Resource requirements which apply to each individual container created as part
927
+ # of the service.
928
+ sig { returns(T.nilable(DockerEngine::Spec::TaskTemplate::Resources)) }
929
+ attr_reader :resources
930
+
931
+ sig do
932
+ params(
933
+ resources: DockerEngine::Spec::TaskTemplate::Resources::OrHash
934
+ ).void
935
+ end
936
+ attr_writer :resources
937
+
938
+ # Specification for the restart policy which applies to containers created as part
939
+ # of this service.
940
+ sig do
941
+ returns(T.nilable(DockerEngine::Spec::TaskTemplate::RestartPolicy))
942
+ end
943
+ attr_reader :restart_policy
944
+
945
+ sig do
946
+ params(
947
+ restart_policy:
948
+ DockerEngine::Spec::TaskTemplate::RestartPolicy::OrHash
949
+ ).void
950
+ end
951
+ attr_writer :restart_policy
952
+
953
+ # Runtime is the type of runtime specified for the task executor.
954
+ sig { returns(T.nilable(String)) }
955
+ attr_reader :runtime
956
+
957
+ sig { params(runtime: String).void }
958
+ attr_writer :runtime
959
+
960
+ # User modifiable task configuration.
961
+ sig do
962
+ params(
963
+ container_spec:
964
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::OrHash,
965
+ force_update: Integer,
966
+ log_driver: DockerEngine::Spec::TaskTemplate::LogDriver::OrHash,
967
+ network_attachment_spec:
968
+ DockerEngine::Spec::TaskTemplate::NetworkAttachmentSpec::OrHash,
969
+ networks:
970
+ T::Array[DockerEngine::Spec::TaskTemplate::Network::OrHash],
971
+ placement: DockerEngine::Spec::TaskTemplate::Placement::OrHash,
972
+ plugin_spec: DockerEngine::Spec::TaskTemplate::PluginSpec::OrHash,
973
+ resources: DockerEngine::Spec::TaskTemplate::Resources::OrHash,
974
+ restart_policy:
975
+ DockerEngine::Spec::TaskTemplate::RestartPolicy::OrHash,
976
+ runtime: String
977
+ ).returns(T.attached_class)
978
+ end
979
+ def self.new(
980
+ # Container spec for the service.
981
+ #
982
+ # <p><br /></p>
983
+ #
984
+ # > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are mutually
985
+ # > exclusive. PluginSpec is only used when the Runtime field is set to `plugin`.
986
+ # > NetworkAttachmentSpec is used when the Runtime field is set to `attachment`.
987
+ container_spec: nil,
988
+ # A counter that triggers an update even if no relevant parameters have been
989
+ # changed.
990
+ force_update: nil,
991
+ # Specifies the log driver to use for tasks created from this spec. If not
992
+ # present, the default one for the swarm will be used, finally falling back to the
993
+ # engine default if not specified.
994
+ log_driver: nil,
995
+ # Read-only spec type for non-swarm containers attached to swarm overlay networks.
996
+ #
997
+ # <p><br /></p>
998
+ #
999
+ # > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are mutually
1000
+ # > exclusive. PluginSpec is only used when the Runtime field is set to `plugin`.
1001
+ # > NetworkAttachmentSpec is used when the Runtime field is set to `attachment`.
1002
+ network_attachment_spec: nil,
1003
+ # Specifies which networks the service should attach to.
1004
+ networks: nil,
1005
+ placement: nil,
1006
+ # Plugin spec for the service. _(Experimental release only.)_
1007
+ #
1008
+ # <p><br /></p>
1009
+ #
1010
+ # > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are mutually
1011
+ # > exclusive. PluginSpec is only used when the Runtime field is set to `plugin`.
1012
+ # > NetworkAttachmentSpec is used when the Runtime field is set to `attachment`.
1013
+ plugin_spec: nil,
1014
+ # Resource requirements which apply to each individual container created as part
1015
+ # of the service.
1016
+ resources: nil,
1017
+ # Specification for the restart policy which applies to containers created as part
1018
+ # of this service.
1019
+ restart_policy: nil,
1020
+ # Runtime is the type of runtime specified for the task executor.
1021
+ runtime: nil
1022
+ )
1023
+ end
1024
+
1025
+ sig do
1026
+ override.returns(
1027
+ {
1028
+ container_spec: DockerEngine::Spec::TaskTemplate::ContainerSpec,
1029
+ force_update: Integer,
1030
+ log_driver: DockerEngine::Spec::TaskTemplate::LogDriver,
1031
+ network_attachment_spec:
1032
+ DockerEngine::Spec::TaskTemplate::NetworkAttachmentSpec,
1033
+ networks: T::Array[DockerEngine::Spec::TaskTemplate::Network],
1034
+ placement: DockerEngine::Spec::TaskTemplate::Placement,
1035
+ plugin_spec: DockerEngine::Spec::TaskTemplate::PluginSpec,
1036
+ resources: DockerEngine::Spec::TaskTemplate::Resources,
1037
+ restart_policy: DockerEngine::Spec::TaskTemplate::RestartPolicy,
1038
+ runtime: String
1039
+ }
1040
+ )
1041
+ end
1042
+ def to_hash
1043
+ end
1044
+
1045
+ class ContainerSpec < DockerEngine::Internal::Type::BaseModel
1046
+ OrHash =
1047
+ T.type_alias do
1048
+ T.any(
1049
+ DockerEngine::Spec::TaskTemplate::ContainerSpec,
1050
+ DockerEngine::Internal::AnyHash
1051
+ )
1052
+ end
1053
+
1054
+ # Arguments to the command.
1055
+ sig { returns(T.nilable(T::Array[String])) }
1056
+ attr_reader :args
1057
+
1058
+ sig { params(args: T::Array[String]).void }
1059
+ attr_writer :args
1060
+
1061
+ # A list of kernel capabilities to add to the default set for the container.
1062
+ sig { returns(T.nilable(T::Array[String])) }
1063
+ attr_reader :capability_add
1064
+
1065
+ sig { params(capability_add: T::Array[String]).void }
1066
+ attr_writer :capability_add
1067
+
1068
+ # A list of kernel capabilities to drop from the default set for the container.
1069
+ sig { returns(T.nilable(T::Array[String])) }
1070
+ attr_reader :capability_drop
1071
+
1072
+ sig { params(capability_drop: T::Array[String]).void }
1073
+ attr_writer :capability_drop
1074
+
1075
+ # The command to be run in the image.
1076
+ sig { returns(T.nilable(T::Array[String])) }
1077
+ attr_reader :command
1078
+
1079
+ sig { params(command: T::Array[String]).void }
1080
+ attr_writer :command
1081
+
1082
+ # Configs contains references to zero or more configs that will be exposed to the
1083
+ # service.
1084
+ sig do
1085
+ returns(
1086
+ T.nilable(
1087
+ T::Array[
1088
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Config
1089
+ ]
1090
+ )
1091
+ )
1092
+ end
1093
+ attr_reader :configs
1094
+
1095
+ sig do
1096
+ params(
1097
+ configs:
1098
+ T::Array[
1099
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Config::OrHash
1100
+ ]
1101
+ ).void
1102
+ end
1103
+ attr_writer :configs
1104
+
1105
+ # The working directory for commands to run in.
1106
+ sig { returns(T.nilable(String)) }
1107
+ attr_reader :dir
1108
+
1109
+ sig { params(dir: String).void }
1110
+ attr_writer :dir
1111
+
1112
+ # Specification for DNS related configurations in resolver configuration file
1113
+ # (`resolv.conf`).
1114
+ sig do
1115
+ returns(
1116
+ T.nilable(
1117
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::DNSConfig
1118
+ )
1119
+ )
1120
+ end
1121
+ attr_reader :dns_config
1122
+
1123
+ sig do
1124
+ params(
1125
+ dns_config:
1126
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::DNSConfig::OrHash
1127
+ ).void
1128
+ end
1129
+ attr_writer :dns_config
1130
+
1131
+ # A list of environment variables in the form `VAR=value`.
1132
+ sig { returns(T.nilable(T::Array[String])) }
1133
+ attr_reader :env
1134
+
1135
+ sig { params(env: T::Array[String]).void }
1136
+ attr_writer :env
1137
+
1138
+ # A list of additional groups that the container process will run as.
1139
+ sig { returns(T.nilable(T::Array[String])) }
1140
+ attr_reader :groups
1141
+
1142
+ sig { params(groups: T::Array[String]).void }
1143
+ attr_writer :groups
1144
+
1145
+ # A test to perform to check that the container is healthy. Healthcheck commands
1146
+ # should be side-effect free.
1147
+ sig do
1148
+ returns(
1149
+ T.nilable(
1150
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::HealthCheck
1151
+ )
1152
+ )
1153
+ end
1154
+ attr_reader :health_check
1155
+
1156
+ sig do
1157
+ params(
1158
+ health_check:
1159
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::HealthCheck::OrHash
1160
+ ).void
1161
+ end
1162
+ attr_writer :health_check
1163
+
1164
+ # The hostname to use for the container, as a valid
1165
+ # [RFC 1123](https://tools.ietf.org/html/rfc1123) hostname.
1166
+ sig { returns(T.nilable(String)) }
1167
+ attr_reader :hostname
1168
+
1169
+ sig { params(hostname: String).void }
1170
+ attr_writer :hostname
1171
+
1172
+ # A list of hostname/IP mappings to add to the container's `hosts` file. The
1173
+ # format of extra hosts is specified in the
1174
+ # [hosts(5)](http://man7.org/linux/man-pages/man5/hosts.5.html) man page:
1175
+ #
1176
+ # IP_address canonical_hostname [aliases...]
1177
+ sig { returns(T.nilable(T::Array[String])) }
1178
+ attr_reader :hosts
1179
+
1180
+ sig { params(hosts: T::Array[String]).void }
1181
+ attr_writer :hosts
1182
+
1183
+ # The image name to use for the container
1184
+ sig { returns(T.nilable(String)) }
1185
+ attr_reader :image
1186
+
1187
+ sig { params(image: String).void }
1188
+ attr_writer :image
1189
+
1190
+ # Run an init inside the container that forwards signals and reaps processes. This
1191
+ # field is omitted if empty, and the default (as configured on the daemon) is
1192
+ # used.
1193
+ sig { returns(T.nilable(T::Boolean)) }
1194
+ attr_accessor :init
1195
+
1196
+ # Isolation technology of the containers running the service. (Windows only)
1197
+ sig do
1198
+ returns(
1199
+ T.nilable(
1200
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Isolation::OrSymbol
1201
+ )
1202
+ )
1203
+ end
1204
+ attr_reader :isolation
1205
+
1206
+ sig do
1207
+ params(
1208
+ isolation:
1209
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Isolation::OrSymbol
1210
+ ).void
1211
+ end
1212
+ attr_writer :isolation
1213
+
1214
+ # User-defined key/value data.
1215
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
1216
+ attr_reader :labels
1217
+
1218
+ sig { params(labels: T::Hash[Symbol, String]).void }
1219
+ attr_writer :labels
1220
+
1221
+ # Specification for mounts to be added to containers created as part of the
1222
+ # service.
1223
+ sig do
1224
+ returns(
1225
+ T.nilable(
1226
+ T::Array[DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount]
1227
+ )
1228
+ )
1229
+ end
1230
+ attr_reader :mounts
1231
+
1232
+ sig do
1233
+ params(
1234
+ mounts:
1235
+ T::Array[
1236
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::OrHash
1237
+ ]
1238
+ ).void
1239
+ end
1240
+ attr_writer :mounts
1241
+
1242
+ # An integer value containing the score given to the container in order to tune
1243
+ # OOM killer preferences.
1244
+ sig { returns(T.nilable(Integer)) }
1245
+ attr_reader :oom_score_adj
1246
+
1247
+ sig { params(oom_score_adj: Integer).void }
1248
+ attr_writer :oom_score_adj
1249
+
1250
+ # Open `stdin`
1251
+ sig { returns(T.nilable(T::Boolean)) }
1252
+ attr_reader :open_stdin
1253
+
1254
+ sig { params(open_stdin: T::Boolean).void }
1255
+ attr_writer :open_stdin
1256
+
1257
+ # Security options for the container
1258
+ sig do
1259
+ returns(
1260
+ T.nilable(
1261
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges
1262
+ )
1263
+ )
1264
+ end
1265
+ attr_reader :privileges
1266
+
1267
+ sig do
1268
+ params(
1269
+ privileges:
1270
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::OrHash
1271
+ ).void
1272
+ end
1273
+ attr_writer :privileges
1274
+
1275
+ # Mount the container's root filesystem as read only.
1276
+ sig { returns(T.nilable(T::Boolean)) }
1277
+ attr_reader :read_only
1278
+
1279
+ sig { params(read_only: T::Boolean).void }
1280
+ attr_writer :read_only
1281
+
1282
+ # Secrets contains references to zero or more secrets that will be exposed to the
1283
+ # service.
1284
+ sig do
1285
+ returns(
1286
+ T.nilable(
1287
+ T::Array[
1288
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Secret
1289
+ ]
1290
+ )
1291
+ )
1292
+ end
1293
+ attr_reader :secrets
1294
+
1295
+ sig do
1296
+ params(
1297
+ secrets:
1298
+ T::Array[
1299
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Secret::OrHash
1300
+ ]
1301
+ ).void
1302
+ end
1303
+ attr_writer :secrets
1304
+
1305
+ # Amount of time to wait for the container to terminate before forcefully killing
1306
+ # it.
1307
+ sig { returns(T.nilable(Integer)) }
1308
+ attr_reader :stop_grace_period
1309
+
1310
+ sig { params(stop_grace_period: Integer).void }
1311
+ attr_writer :stop_grace_period
1312
+
1313
+ # Signal to stop the container.
1314
+ sig { returns(T.nilable(String)) }
1315
+ attr_reader :stop_signal
1316
+
1317
+ sig { params(stop_signal: String).void }
1318
+ attr_writer :stop_signal
1319
+
1320
+ # Set kernel namedspaced parameters (sysctls) in the container. The Sysctls option
1321
+ # on services accepts the same sysctls as the are supported on containers. Note
1322
+ # that while the same sysctls are supported, no guarantees or checks are made
1323
+ # about their suitability for a clustered environment, and it's up to the user to
1324
+ # determine whether a given sysctl will work properly in a Service.
1325
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
1326
+ attr_reader :sysctls
1327
+
1328
+ sig { params(sysctls: T::Hash[Symbol, String]).void }
1329
+ attr_writer :sysctls
1330
+
1331
+ # Whether a pseudo-TTY should be allocated.
1332
+ sig { returns(T.nilable(T::Boolean)) }
1333
+ attr_reader :tty
1334
+
1335
+ sig { params(tty: T::Boolean).void }
1336
+ attr_writer :tty
1337
+
1338
+ # A list of resource limits to set in the container. For example:
1339
+ # `{"Name": "nofile", "Soft": 1024, "Hard": 2048}`"
1340
+ sig do
1341
+ returns(
1342
+ T.nilable(
1343
+ T::Array[
1344
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Ulimit
1345
+ ]
1346
+ )
1347
+ )
1348
+ end
1349
+ attr_reader :ulimits
1350
+
1351
+ sig do
1352
+ params(
1353
+ ulimits:
1354
+ T::Array[
1355
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Ulimit::OrHash
1356
+ ]
1357
+ ).void
1358
+ end
1359
+ attr_writer :ulimits
1360
+
1361
+ # The user inside the container.
1362
+ sig { returns(T.nilable(String)) }
1363
+ attr_reader :user
1364
+
1365
+ sig { params(user: String).void }
1366
+ attr_writer :user
1367
+
1368
+ # Container spec for the service.
1369
+ #
1370
+ # <p><br /></p>
1371
+ #
1372
+ # > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are mutually
1373
+ # > exclusive. PluginSpec is only used when the Runtime field is set to `plugin`.
1374
+ # > NetworkAttachmentSpec is used when the Runtime field is set to `attachment`.
1375
+ sig do
1376
+ params(
1377
+ args: T::Array[String],
1378
+ capability_add: T::Array[String],
1379
+ capability_drop: T::Array[String],
1380
+ command: T::Array[String],
1381
+ configs:
1382
+ T::Array[
1383
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Config::OrHash
1384
+ ],
1385
+ dir: String,
1386
+ dns_config:
1387
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::DNSConfig::OrHash,
1388
+ env: T::Array[String],
1389
+ groups: T::Array[String],
1390
+ health_check:
1391
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::HealthCheck::OrHash,
1392
+ hostname: String,
1393
+ hosts: T::Array[String],
1394
+ image: String,
1395
+ init: T.nilable(T::Boolean),
1396
+ isolation:
1397
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Isolation::OrSymbol,
1398
+ labels: T::Hash[Symbol, String],
1399
+ mounts:
1400
+ T::Array[
1401
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::OrHash
1402
+ ],
1403
+ oom_score_adj: Integer,
1404
+ open_stdin: T::Boolean,
1405
+ privileges:
1406
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::OrHash,
1407
+ read_only: T::Boolean,
1408
+ secrets:
1409
+ T::Array[
1410
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Secret::OrHash
1411
+ ],
1412
+ stop_grace_period: Integer,
1413
+ stop_signal: String,
1414
+ sysctls: T::Hash[Symbol, String],
1415
+ tty: T::Boolean,
1416
+ ulimits:
1417
+ T::Array[
1418
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Ulimit::OrHash
1419
+ ],
1420
+ user: String
1421
+ ).returns(T.attached_class)
1422
+ end
1423
+ def self.new(
1424
+ # Arguments to the command.
1425
+ args: nil,
1426
+ # A list of kernel capabilities to add to the default set for the container.
1427
+ capability_add: nil,
1428
+ # A list of kernel capabilities to drop from the default set for the container.
1429
+ capability_drop: nil,
1430
+ # The command to be run in the image.
1431
+ command: nil,
1432
+ # Configs contains references to zero or more configs that will be exposed to the
1433
+ # service.
1434
+ configs: nil,
1435
+ # The working directory for commands to run in.
1436
+ dir: nil,
1437
+ # Specification for DNS related configurations in resolver configuration file
1438
+ # (`resolv.conf`).
1439
+ dns_config: nil,
1440
+ # A list of environment variables in the form `VAR=value`.
1441
+ env: nil,
1442
+ # A list of additional groups that the container process will run as.
1443
+ groups: nil,
1444
+ # A test to perform to check that the container is healthy. Healthcheck commands
1445
+ # should be side-effect free.
1446
+ health_check: nil,
1447
+ # The hostname to use for the container, as a valid
1448
+ # [RFC 1123](https://tools.ietf.org/html/rfc1123) hostname.
1449
+ hostname: nil,
1450
+ # A list of hostname/IP mappings to add to the container's `hosts` file. The
1451
+ # format of extra hosts is specified in the
1452
+ # [hosts(5)](http://man7.org/linux/man-pages/man5/hosts.5.html) man page:
1453
+ #
1454
+ # IP_address canonical_hostname [aliases...]
1455
+ hosts: nil,
1456
+ # The image name to use for the container
1457
+ image: nil,
1458
+ # Run an init inside the container that forwards signals and reaps processes. This
1459
+ # field is omitted if empty, and the default (as configured on the daemon) is
1460
+ # used.
1461
+ init: nil,
1462
+ # Isolation technology of the containers running the service. (Windows only)
1463
+ isolation: nil,
1464
+ # User-defined key/value data.
1465
+ labels: nil,
1466
+ # Specification for mounts to be added to containers created as part of the
1467
+ # service.
1468
+ mounts: nil,
1469
+ # An integer value containing the score given to the container in order to tune
1470
+ # OOM killer preferences.
1471
+ oom_score_adj: nil,
1472
+ # Open `stdin`
1473
+ open_stdin: nil,
1474
+ # Security options for the container
1475
+ privileges: nil,
1476
+ # Mount the container's root filesystem as read only.
1477
+ read_only: nil,
1478
+ # Secrets contains references to zero or more secrets that will be exposed to the
1479
+ # service.
1480
+ secrets: nil,
1481
+ # Amount of time to wait for the container to terminate before forcefully killing
1482
+ # it.
1483
+ stop_grace_period: nil,
1484
+ # Signal to stop the container.
1485
+ stop_signal: nil,
1486
+ # Set kernel namedspaced parameters (sysctls) in the container. The Sysctls option
1487
+ # on services accepts the same sysctls as the are supported on containers. Note
1488
+ # that while the same sysctls are supported, no guarantees or checks are made
1489
+ # about their suitability for a clustered environment, and it's up to the user to
1490
+ # determine whether a given sysctl will work properly in a Service.
1491
+ sysctls: nil,
1492
+ # Whether a pseudo-TTY should be allocated.
1493
+ tty: nil,
1494
+ # A list of resource limits to set in the container. For example:
1495
+ # `{"Name": "nofile", "Soft": 1024, "Hard": 2048}`"
1496
+ ulimits: nil,
1497
+ # The user inside the container.
1498
+ user: nil
1499
+ )
1500
+ end
1501
+
1502
+ sig do
1503
+ override.returns(
1504
+ {
1505
+ args: T::Array[String],
1506
+ capability_add: T::Array[String],
1507
+ capability_drop: T::Array[String],
1508
+ command: T::Array[String],
1509
+ configs:
1510
+ T::Array[
1511
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Config
1512
+ ],
1513
+ dir: String,
1514
+ dns_config:
1515
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::DNSConfig,
1516
+ env: T::Array[String],
1517
+ groups: T::Array[String],
1518
+ health_check:
1519
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::HealthCheck,
1520
+ hostname: String,
1521
+ hosts: T::Array[String],
1522
+ image: String,
1523
+ init: T.nilable(T::Boolean),
1524
+ isolation:
1525
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Isolation::OrSymbol,
1526
+ labels: T::Hash[Symbol, String],
1527
+ mounts:
1528
+ T::Array[
1529
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount
1530
+ ],
1531
+ oom_score_adj: Integer,
1532
+ open_stdin: T::Boolean,
1533
+ privileges:
1534
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges,
1535
+ read_only: T::Boolean,
1536
+ secrets:
1537
+ T::Array[
1538
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Secret
1539
+ ],
1540
+ stop_grace_period: Integer,
1541
+ stop_signal: String,
1542
+ sysctls: T::Hash[Symbol, String],
1543
+ tty: T::Boolean,
1544
+ ulimits:
1545
+ T::Array[
1546
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Ulimit
1547
+ ],
1548
+ user: String
1549
+ }
1550
+ )
1551
+ end
1552
+ def to_hash
1553
+ end
1554
+
1555
+ class Config < DockerEngine::Internal::Type::BaseModel
1556
+ OrHash =
1557
+ T.type_alias do
1558
+ T.any(
1559
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Config,
1560
+ DockerEngine::Internal::AnyHash
1561
+ )
1562
+ end
1563
+
1564
+ # ConfigID represents the ID of the specific config that we're referencing.
1565
+ sig { returns(T.nilable(String)) }
1566
+ attr_reader :config_id
1567
+
1568
+ sig { params(config_id: String).void }
1569
+ attr_writer :config_id
1570
+
1571
+ # ConfigName is the name of the config that this references, but this is just
1572
+ # provided for lookup/display purposes. The config in the reference will be
1573
+ # identified by its ID.
1574
+ sig { returns(T.nilable(String)) }
1575
+ attr_reader :config_name
1576
+
1577
+ sig { params(config_name: String).void }
1578
+ attr_writer :config_name
1579
+
1580
+ # File represents a specific target that is backed by a file.
1581
+ #
1582
+ # <p><br /><p>
1583
+ #
1584
+ # > **Note**: `Configs.File` and `Configs.Runtime` are mutually exclusive
1585
+ sig do
1586
+ returns(
1587
+ T.nilable(
1588
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Config::File
1589
+ )
1590
+ )
1591
+ end
1592
+ attr_reader :file
1593
+
1594
+ sig do
1595
+ params(
1596
+ file:
1597
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Config::File::OrHash
1598
+ ).void
1599
+ end
1600
+ attr_writer :file
1601
+
1602
+ # Runtime represents a target that is not mounted into the container but is used
1603
+ # by the task
1604
+ #
1605
+ # <p><br /><p>
1606
+ #
1607
+ # > **Note**: `Configs.File` and `Configs.Runtime` are mutually exclusive
1608
+ sig { returns(T.nilable(T.anything)) }
1609
+ attr_reader :runtime
1610
+
1611
+ sig { params(runtime: T.anything).void }
1612
+ attr_writer :runtime
1613
+
1614
+ sig do
1615
+ params(
1616
+ config_id: String,
1617
+ config_name: String,
1618
+ file:
1619
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Config::File::OrHash,
1620
+ runtime: T.anything
1621
+ ).returns(T.attached_class)
1622
+ end
1623
+ def self.new(
1624
+ # ConfigID represents the ID of the specific config that we're referencing.
1625
+ config_id: nil,
1626
+ # ConfigName is the name of the config that this references, but this is just
1627
+ # provided for lookup/display purposes. The config in the reference will be
1628
+ # identified by its ID.
1629
+ config_name: nil,
1630
+ # File represents a specific target that is backed by a file.
1631
+ #
1632
+ # <p><br /><p>
1633
+ #
1634
+ # > **Note**: `Configs.File` and `Configs.Runtime` are mutually exclusive
1635
+ file: nil,
1636
+ # Runtime represents a target that is not mounted into the container but is used
1637
+ # by the task
1638
+ #
1639
+ # <p><br /><p>
1640
+ #
1641
+ # > **Note**: `Configs.File` and `Configs.Runtime` are mutually exclusive
1642
+ runtime: nil
1643
+ )
1644
+ end
1645
+
1646
+ sig do
1647
+ override.returns(
1648
+ {
1649
+ config_id: String,
1650
+ config_name: String,
1651
+ file:
1652
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Config::File,
1653
+ runtime: T.anything
1654
+ }
1655
+ )
1656
+ end
1657
+ def to_hash
1658
+ end
1659
+
1660
+ class File < DockerEngine::Internal::Type::BaseModel
1661
+ OrHash =
1662
+ T.type_alias do
1663
+ T.any(
1664
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Config::File,
1665
+ DockerEngine::Internal::AnyHash
1666
+ )
1667
+ end
1668
+
1669
+ # GID represents the file GID.
1670
+ sig { returns(T.nilable(String)) }
1671
+ attr_reader :gid
1672
+
1673
+ sig { params(gid: String).void }
1674
+ attr_writer :gid
1675
+
1676
+ # Mode represents the FileMode of the file.
1677
+ sig { returns(T.nilable(Integer)) }
1678
+ attr_reader :mode
1679
+
1680
+ sig { params(mode: Integer).void }
1681
+ attr_writer :mode
1682
+
1683
+ # Name represents the final filename in the filesystem.
1684
+ sig { returns(T.nilable(String)) }
1685
+ attr_reader :name
1686
+
1687
+ sig { params(name: String).void }
1688
+ attr_writer :name
1689
+
1690
+ # UID represents the file UID.
1691
+ sig { returns(T.nilable(String)) }
1692
+ attr_reader :uid
1693
+
1694
+ sig { params(uid: String).void }
1695
+ attr_writer :uid
1696
+
1697
+ # File represents a specific target that is backed by a file.
1698
+ #
1699
+ # <p><br /><p>
1700
+ #
1701
+ # > **Note**: `Configs.File` and `Configs.Runtime` are mutually exclusive
1702
+ sig do
1703
+ params(
1704
+ gid: String,
1705
+ mode: Integer,
1706
+ name: String,
1707
+ uid: String
1708
+ ).returns(T.attached_class)
1709
+ end
1710
+ def self.new(
1711
+ # GID represents the file GID.
1712
+ gid: nil,
1713
+ # Mode represents the FileMode of the file.
1714
+ mode: nil,
1715
+ # Name represents the final filename in the filesystem.
1716
+ name: nil,
1717
+ # UID represents the file UID.
1718
+ uid: nil
1719
+ )
1720
+ end
1721
+
1722
+ sig do
1723
+ override.returns(
1724
+ { gid: String, mode: Integer, name: String, uid: String }
1725
+ )
1726
+ end
1727
+ def to_hash
1728
+ end
1729
+ end
1730
+ end
1731
+
1732
+ class DNSConfig < DockerEngine::Internal::Type::BaseModel
1733
+ OrHash =
1734
+ T.type_alias do
1735
+ T.any(
1736
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::DNSConfig,
1737
+ DockerEngine::Internal::AnyHash
1738
+ )
1739
+ end
1740
+
1741
+ # The IP addresses of the name servers.
1742
+ sig { returns(T.nilable(T::Array[String])) }
1743
+ attr_reader :nameservers
1744
+
1745
+ sig { params(nameservers: T::Array[String]).void }
1746
+ attr_writer :nameservers
1747
+
1748
+ # A list of internal resolver variables to be modified (e.g., `debug`, `ndots:3`,
1749
+ # etc.).
1750
+ sig { returns(T.nilable(T::Array[String])) }
1751
+ attr_reader :options
1752
+
1753
+ sig { params(options: T::Array[String]).void }
1754
+ attr_writer :options
1755
+
1756
+ # A search list for host-name lookup.
1757
+ sig { returns(T.nilable(T::Array[String])) }
1758
+ attr_reader :search
1759
+
1760
+ sig { params(search: T::Array[String]).void }
1761
+ attr_writer :search
1762
+
1763
+ # Specification for DNS related configurations in resolver configuration file
1764
+ # (`resolv.conf`).
1765
+ sig do
1766
+ params(
1767
+ nameservers: T::Array[String],
1768
+ options: T::Array[String],
1769
+ search: T::Array[String]
1770
+ ).returns(T.attached_class)
1771
+ end
1772
+ def self.new(
1773
+ # The IP addresses of the name servers.
1774
+ nameservers: nil,
1775
+ # A list of internal resolver variables to be modified (e.g., `debug`, `ndots:3`,
1776
+ # etc.).
1777
+ options: nil,
1778
+ # A search list for host-name lookup.
1779
+ search: nil
1780
+ )
1781
+ end
1782
+
1783
+ sig do
1784
+ override.returns(
1785
+ {
1786
+ nameservers: T::Array[String],
1787
+ options: T::Array[String],
1788
+ search: T::Array[String]
1789
+ }
1790
+ )
1791
+ end
1792
+ def to_hash
1793
+ end
1794
+ end
1795
+
1796
+ class HealthCheck < DockerEngine::Internal::Type::BaseModel
1797
+ OrHash =
1798
+ T.type_alias do
1799
+ T.any(
1800
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::HealthCheck,
1801
+ DockerEngine::Internal::AnyHash
1802
+ )
1803
+ end
1804
+
1805
+ # The time to wait between checks in nanoseconds. It should be 0 or at least
1806
+ # 1000000 (1 ms). 0 means inherit.
1807
+ sig { returns(T.nilable(Integer)) }
1808
+ attr_reader :interval
1809
+
1810
+ sig { params(interval: Integer).void }
1811
+ attr_writer :interval
1812
+
1813
+ # The number of consecutive failures needed to consider a container as unhealthy.
1814
+ # 0 means inherit.
1815
+ sig { returns(T.nilable(Integer)) }
1816
+ attr_reader :retries
1817
+
1818
+ sig { params(retries: Integer).void }
1819
+ attr_writer :retries
1820
+
1821
+ # The time to wait between checks in nanoseconds during the start period. It
1822
+ # should be 0 or at least 1000000 (1 ms). 0 means inherit.
1823
+ sig { returns(T.nilable(Integer)) }
1824
+ attr_reader :start_interval
1825
+
1826
+ sig { params(start_interval: Integer).void }
1827
+ attr_writer :start_interval
1828
+
1829
+ # Start period for the container to initialize before starting health-retries
1830
+ # countdown in nanoseconds. It should be 0 or at least 1000000 (1 ms). 0 means
1831
+ # inherit.
1832
+ sig { returns(T.nilable(Integer)) }
1833
+ attr_reader :start_period
1834
+
1835
+ sig { params(start_period: Integer).void }
1836
+ attr_writer :start_period
1837
+
1838
+ # The test to perform. Possible values are:
1839
+ #
1840
+ # - `[]` inherit healthcheck from image or parent image
1841
+ # - `["NONE"]` disable healthcheck
1842
+ # - `["CMD", args...]` exec arguments directly
1843
+ # - `["CMD-SHELL", command]` run command with system's default shell
1844
+ #
1845
+ # A non-zero exit code indicates a failed healthcheck:
1846
+ #
1847
+ # - `0` healthy
1848
+ # - `1` unhealthy
1849
+ # - `2` reserved (treated as unhealthy)
1850
+ # - other values: error running probe
1851
+ sig { returns(T.nilable(T::Array[String])) }
1852
+ attr_reader :test_
1853
+
1854
+ sig { params(test_: T::Array[String]).void }
1855
+ attr_writer :test_
1856
+
1857
+ # The time to wait before considering the check to have hung. It should be 0 or at
1858
+ # least 1000000 (1 ms). 0 means inherit.
1859
+ #
1860
+ # If the health check command does not complete within this timeout, the check is
1861
+ # considered failed and the health check process is forcibly terminated without a
1862
+ # graceful shutdown.
1863
+ sig { returns(T.nilable(Integer)) }
1864
+ attr_reader :timeout
1865
+
1866
+ sig { params(timeout: Integer).void }
1867
+ attr_writer :timeout
1868
+
1869
+ # A test to perform to check that the container is healthy. Healthcheck commands
1870
+ # should be side-effect free.
1871
+ sig do
1872
+ params(
1873
+ interval: Integer,
1874
+ retries: Integer,
1875
+ start_interval: Integer,
1876
+ start_period: Integer,
1877
+ test_: T::Array[String],
1878
+ timeout: Integer
1879
+ ).returns(T.attached_class)
1880
+ end
1881
+ def self.new(
1882
+ # The time to wait between checks in nanoseconds. It should be 0 or at least
1883
+ # 1000000 (1 ms). 0 means inherit.
1884
+ interval: nil,
1885
+ # The number of consecutive failures needed to consider a container as unhealthy.
1886
+ # 0 means inherit.
1887
+ retries: nil,
1888
+ # The time to wait between checks in nanoseconds during the start period. It
1889
+ # should be 0 or at least 1000000 (1 ms). 0 means inherit.
1890
+ start_interval: nil,
1891
+ # Start period for the container to initialize before starting health-retries
1892
+ # countdown in nanoseconds. It should be 0 or at least 1000000 (1 ms). 0 means
1893
+ # inherit.
1894
+ start_period: nil,
1895
+ # The test to perform. Possible values are:
1896
+ #
1897
+ # - `[]` inherit healthcheck from image or parent image
1898
+ # - `["NONE"]` disable healthcheck
1899
+ # - `["CMD", args...]` exec arguments directly
1900
+ # - `["CMD-SHELL", command]` run command with system's default shell
1901
+ #
1902
+ # A non-zero exit code indicates a failed healthcheck:
1903
+ #
1904
+ # - `0` healthy
1905
+ # - `1` unhealthy
1906
+ # - `2` reserved (treated as unhealthy)
1907
+ # - other values: error running probe
1908
+ test_: nil,
1909
+ # The time to wait before considering the check to have hung. It should be 0 or at
1910
+ # least 1000000 (1 ms). 0 means inherit.
1911
+ #
1912
+ # If the health check command does not complete within this timeout, the check is
1913
+ # considered failed and the health check process is forcibly terminated without a
1914
+ # graceful shutdown.
1915
+ timeout: nil
1916
+ )
1917
+ end
1918
+
1919
+ sig do
1920
+ override.returns(
1921
+ {
1922
+ interval: Integer,
1923
+ retries: Integer,
1924
+ start_interval: Integer,
1925
+ start_period: Integer,
1926
+ test_: T::Array[String],
1927
+ timeout: Integer
1928
+ }
1929
+ )
1930
+ end
1931
+ def to_hash
1932
+ end
1933
+ end
1934
+
1935
+ # Isolation technology of the containers running the service. (Windows only)
1936
+ module Isolation
1937
+ extend DockerEngine::Internal::Type::Enum
1938
+
1939
+ TaggedSymbol =
1940
+ T.type_alias do
1941
+ T.all(
1942
+ Symbol,
1943
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Isolation
1944
+ )
1945
+ end
1946
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1947
+
1948
+ DEFAULT =
1949
+ T.let(
1950
+ :default,
1951
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Isolation::TaggedSymbol
1952
+ )
1953
+ PROCESS =
1954
+ T.let(
1955
+ :process,
1956
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Isolation::TaggedSymbol
1957
+ )
1958
+ HYPERV =
1959
+ T.let(
1960
+ :hyperv,
1961
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Isolation::TaggedSymbol
1962
+ )
1963
+ EMPTY =
1964
+ T.let(
1965
+ :"",
1966
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Isolation::TaggedSymbol
1967
+ )
1968
+
1969
+ sig do
1970
+ override.returns(
1971
+ T::Array[
1972
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Isolation::TaggedSymbol
1973
+ ]
1974
+ )
1975
+ end
1976
+ def self.values
1977
+ end
1978
+ end
1979
+
1980
+ class Mount < DockerEngine::Internal::Type::BaseModel
1981
+ OrHash =
1982
+ T.type_alias do
1983
+ T.any(
1984
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount,
1985
+ DockerEngine::Internal::AnyHash
1986
+ )
1987
+ end
1988
+
1989
+ # Optional configuration for the `bind` type.
1990
+ sig do
1991
+ returns(
1992
+ T.nilable(
1993
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions
1994
+ )
1995
+ )
1996
+ end
1997
+ attr_reader :bind_options
1998
+
1999
+ sig do
2000
+ params(
2001
+ bind_options:
2002
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::OrHash
2003
+ ).void
2004
+ end
2005
+ attr_writer :bind_options
2006
+
2007
+ # The consistency requirement for the mount: `default`, `consistent`, `cached`, or
2008
+ # `delegated`.
2009
+ sig { returns(T.nilable(String)) }
2010
+ attr_reader :consistency
2011
+
2012
+ sig { params(consistency: String).void }
2013
+ attr_writer :consistency
2014
+
2015
+ # Optional configuration for the `image` type.
2016
+ sig do
2017
+ returns(
2018
+ T.nilable(
2019
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::ImageOptions
2020
+ )
2021
+ )
2022
+ end
2023
+ attr_reader :image_options
2024
+
2025
+ sig do
2026
+ params(
2027
+ image_options:
2028
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::ImageOptions::OrHash
2029
+ ).void
2030
+ end
2031
+ attr_writer :image_options
2032
+
2033
+ # Whether the mount should be read-only.
2034
+ sig { returns(T.nilable(T::Boolean)) }
2035
+ attr_reader :read_only
2036
+
2037
+ sig { params(read_only: T::Boolean).void }
2038
+ attr_writer :read_only
2039
+
2040
+ # Mount source (e.g. a volume name, a host path). The source cannot be specified
2041
+ # when using `Type=tmpfs`. For `Type=bind`, the source path must either exist, or
2042
+ # the `CreateMountpoint` must be set to `true` to create the source path on the
2043
+ # host if missing.
2044
+ #
2045
+ # For `Type=npipe`, the pipe must exist prior to creating the container.
2046
+ sig { returns(T.nilable(String)) }
2047
+ attr_reader :source
2048
+
2049
+ sig { params(source: String).void }
2050
+ attr_writer :source
2051
+
2052
+ # Container path.
2053
+ sig { returns(T.nilable(String)) }
2054
+ attr_reader :target
2055
+
2056
+ sig { params(target: String).void }
2057
+ attr_writer :target
2058
+
2059
+ # Optional configuration for the `tmpfs` type.
2060
+ sig do
2061
+ returns(
2062
+ T.nilable(
2063
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::TmpfsOptions
2064
+ )
2065
+ )
2066
+ end
2067
+ attr_reader :tmpfs_options
2068
+
2069
+ sig do
2070
+ params(
2071
+ tmpfs_options:
2072
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::TmpfsOptions::OrHash
2073
+ ).void
2074
+ end
2075
+ attr_writer :tmpfs_options
2076
+
2077
+ # The mount type. Available types:
2078
+ #
2079
+ # - `bind` a mount of a file or directory from the host into the container.
2080
+ # - `cluster` a Swarm cluster volume.
2081
+ # - `image` an OCI image.
2082
+ # - `npipe` a named pipe from the host into the container.
2083
+ # - `tmpfs` a `tmpfs`.
2084
+ # - `volume` a docker volume with the given `Name`.
2085
+ sig do
2086
+ returns(
2087
+ T.nilable(
2088
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type::OrSymbol
2089
+ )
2090
+ )
2091
+ end
2092
+ attr_reader :type
2093
+
2094
+ sig do
2095
+ params(
2096
+ type:
2097
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type::OrSymbol
2098
+ ).void
2099
+ end
2100
+ attr_writer :type
2101
+
2102
+ # Optional configuration for the `volume` type.
2103
+ sig do
2104
+ returns(
2105
+ T.nilable(
2106
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::VolumeOptions
2107
+ )
2108
+ )
2109
+ end
2110
+ attr_reader :volume_options
2111
+
2112
+ sig do
2113
+ params(
2114
+ volume_options:
2115
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::VolumeOptions::OrHash
2116
+ ).void
2117
+ end
2118
+ attr_writer :volume_options
2119
+
2120
+ sig do
2121
+ params(
2122
+ bind_options:
2123
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::OrHash,
2124
+ consistency: String,
2125
+ image_options:
2126
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::ImageOptions::OrHash,
2127
+ read_only: T::Boolean,
2128
+ source: String,
2129
+ target: String,
2130
+ tmpfs_options:
2131
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::TmpfsOptions::OrHash,
2132
+ type:
2133
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type::OrSymbol,
2134
+ volume_options:
2135
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::VolumeOptions::OrHash
2136
+ ).returns(T.attached_class)
2137
+ end
2138
+ def self.new(
2139
+ # Optional configuration for the `bind` type.
2140
+ bind_options: nil,
2141
+ # The consistency requirement for the mount: `default`, `consistent`, `cached`, or
2142
+ # `delegated`.
2143
+ consistency: nil,
2144
+ # Optional configuration for the `image` type.
2145
+ image_options: nil,
2146
+ # Whether the mount should be read-only.
2147
+ read_only: nil,
2148
+ # Mount source (e.g. a volume name, a host path). The source cannot be specified
2149
+ # when using `Type=tmpfs`. For `Type=bind`, the source path must either exist, or
2150
+ # the `CreateMountpoint` must be set to `true` to create the source path on the
2151
+ # host if missing.
2152
+ #
2153
+ # For `Type=npipe`, the pipe must exist prior to creating the container.
2154
+ source: nil,
2155
+ # Container path.
2156
+ target: nil,
2157
+ # Optional configuration for the `tmpfs` type.
2158
+ tmpfs_options: nil,
2159
+ # The mount type. Available types:
2160
+ #
2161
+ # - `bind` a mount of a file or directory from the host into the container.
2162
+ # - `cluster` a Swarm cluster volume.
2163
+ # - `image` an OCI image.
2164
+ # - `npipe` a named pipe from the host into the container.
2165
+ # - `tmpfs` a `tmpfs`.
2166
+ # - `volume` a docker volume with the given `Name`.
2167
+ type: nil,
2168
+ # Optional configuration for the `volume` type.
2169
+ volume_options: nil
2170
+ )
2171
+ end
2172
+
2173
+ sig do
2174
+ override.returns(
2175
+ {
2176
+ bind_options:
2177
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions,
2178
+ consistency: String,
2179
+ image_options:
2180
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::ImageOptions,
2181
+ read_only: T::Boolean,
2182
+ source: String,
2183
+ target: String,
2184
+ tmpfs_options:
2185
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::TmpfsOptions,
2186
+ type:
2187
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type::OrSymbol,
2188
+ volume_options:
2189
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::VolumeOptions
2190
+ }
2191
+ )
2192
+ end
2193
+ def to_hash
2194
+ end
2195
+
2196
+ class BindOptions < DockerEngine::Internal::Type::BaseModel
2197
+ OrHash =
2198
+ T.type_alias do
2199
+ T.any(
2200
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions,
2201
+ DockerEngine::Internal::AnyHash
2202
+ )
2203
+ end
2204
+
2205
+ # Create mount point on host if missing
2206
+ sig { returns(T.nilable(T::Boolean)) }
2207
+ attr_reader :create_mountpoint
2208
+
2209
+ sig { params(create_mountpoint: T::Boolean).void }
2210
+ attr_writer :create_mountpoint
2211
+
2212
+ # Disable recursive bind mount.
2213
+ sig { returns(T.nilable(T::Boolean)) }
2214
+ attr_reader :non_recursive
2215
+
2216
+ sig { params(non_recursive: T::Boolean).void }
2217
+ attr_writer :non_recursive
2218
+
2219
+ # A propagation mode with the value `[r]private`, `[r]shared`, or `[r]slave`.
2220
+ sig do
2221
+ returns(
2222
+ T.nilable(
2223
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation::OrSymbol
2224
+ )
2225
+ )
2226
+ end
2227
+ attr_reader :propagation
2228
+
2229
+ sig do
2230
+ params(
2231
+ propagation:
2232
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation::OrSymbol
2233
+ ).void
2234
+ end
2235
+ attr_writer :propagation
2236
+
2237
+ # Raise an error if the mount cannot be made recursively read-only.
2238
+ sig { returns(T.nilable(T::Boolean)) }
2239
+ attr_reader :read_only_force_recursive
2240
+
2241
+ sig { params(read_only_force_recursive: T::Boolean).void }
2242
+ attr_writer :read_only_force_recursive
2243
+
2244
+ # Make the mount non-recursively read-only, but still leave the mount recursive
2245
+ # (unless NonRecursive is set to `true` in conjunction).
2246
+ #
2247
+ # Added in v1.44, before that version all read-only mounts were non-recursive by
2248
+ # default. To match the previous behaviour this will default to `true` for clients
2249
+ # on versions prior to v1.44.
2250
+ sig { returns(T.nilable(T::Boolean)) }
2251
+ attr_reader :read_only_non_recursive
2252
+
2253
+ sig { params(read_only_non_recursive: T::Boolean).void }
2254
+ attr_writer :read_only_non_recursive
2255
+
2256
+ # Optional configuration for the `bind` type.
2257
+ sig do
2258
+ params(
2259
+ create_mountpoint: T::Boolean,
2260
+ non_recursive: T::Boolean,
2261
+ propagation:
2262
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation::OrSymbol,
2263
+ read_only_force_recursive: T::Boolean,
2264
+ read_only_non_recursive: T::Boolean
2265
+ ).returns(T.attached_class)
2266
+ end
2267
+ def self.new(
2268
+ # Create mount point on host if missing
2269
+ create_mountpoint: nil,
2270
+ # Disable recursive bind mount.
2271
+ non_recursive: nil,
2272
+ # A propagation mode with the value `[r]private`, `[r]shared`, or `[r]slave`.
2273
+ propagation: nil,
2274
+ # Raise an error if the mount cannot be made recursively read-only.
2275
+ read_only_force_recursive: nil,
2276
+ # Make the mount non-recursively read-only, but still leave the mount recursive
2277
+ # (unless NonRecursive is set to `true` in conjunction).
2278
+ #
2279
+ # Added in v1.44, before that version all read-only mounts were non-recursive by
2280
+ # default. To match the previous behaviour this will default to `true` for clients
2281
+ # on versions prior to v1.44.
2282
+ read_only_non_recursive: nil
2283
+ )
2284
+ end
2285
+
2286
+ sig do
2287
+ override.returns(
2288
+ {
2289
+ create_mountpoint: T::Boolean,
2290
+ non_recursive: T::Boolean,
2291
+ propagation:
2292
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation::OrSymbol,
2293
+ read_only_force_recursive: T::Boolean,
2294
+ read_only_non_recursive: T::Boolean
2295
+ }
2296
+ )
2297
+ end
2298
+ def to_hash
2299
+ end
2300
+
2301
+ # A propagation mode with the value `[r]private`, `[r]shared`, or `[r]slave`.
2302
+ module Propagation
2303
+ extend DockerEngine::Internal::Type::Enum
2304
+
2305
+ TaggedSymbol =
2306
+ T.type_alias do
2307
+ T.all(
2308
+ Symbol,
2309
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation
2310
+ )
2311
+ end
2312
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2313
+
2314
+ PRIVATE =
2315
+ T.let(
2316
+ :private,
2317
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation::TaggedSymbol
2318
+ )
2319
+ RPRIVATE =
2320
+ T.let(
2321
+ :rprivate,
2322
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation::TaggedSymbol
2323
+ )
2324
+ SHARED =
2325
+ T.let(
2326
+ :shared,
2327
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation::TaggedSymbol
2328
+ )
2329
+ RSHARED =
2330
+ T.let(
2331
+ :rshared,
2332
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation::TaggedSymbol
2333
+ )
2334
+ SLAVE =
2335
+ T.let(
2336
+ :slave,
2337
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation::TaggedSymbol
2338
+ )
2339
+ RSLAVE =
2340
+ T.let(
2341
+ :rslave,
2342
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation::TaggedSymbol
2343
+ )
2344
+
2345
+ sig do
2346
+ override.returns(
2347
+ T::Array[
2348
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::BindOptions::Propagation::TaggedSymbol
2349
+ ]
2350
+ )
2351
+ end
2352
+ def self.values
2353
+ end
2354
+ end
2355
+ end
2356
+
2357
+ class ImageOptions < DockerEngine::Internal::Type::BaseModel
2358
+ OrHash =
2359
+ T.type_alias do
2360
+ T.any(
2361
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::ImageOptions,
2362
+ DockerEngine::Internal::AnyHash
2363
+ )
2364
+ end
2365
+
2366
+ # Source path inside the image. Must be relative without any back traversals.
2367
+ sig { returns(T.nilable(String)) }
2368
+ attr_reader :subpath
2369
+
2370
+ sig { params(subpath: String).void }
2371
+ attr_writer :subpath
2372
+
2373
+ # Optional configuration for the `image` type.
2374
+ sig { params(subpath: String).returns(T.attached_class) }
2375
+ def self.new(
2376
+ # Source path inside the image. Must be relative without any back traversals.
2377
+ subpath: nil
2378
+ )
2379
+ end
2380
+
2381
+ sig { override.returns({ subpath: String }) }
2382
+ def to_hash
2383
+ end
2384
+ end
2385
+
2386
+ class TmpfsOptions < DockerEngine::Internal::Type::BaseModel
2387
+ OrHash =
2388
+ T.type_alias do
2389
+ T.any(
2390
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::TmpfsOptions,
2391
+ DockerEngine::Internal::AnyHash
2392
+ )
2393
+ end
2394
+
2395
+ # The permission mode for the tmpfs mount in an integer. The value must not be in
2396
+ # octal format (e.g. 755) but rather the decimal representation of the octal value
2397
+ # (e.g. 493).
2398
+ sig { returns(T.nilable(Integer)) }
2399
+ attr_reader :mode
2400
+
2401
+ sig { params(mode: Integer).void }
2402
+ attr_writer :mode
2403
+
2404
+ # The options to be passed to the tmpfs mount. An array of arrays. Flag options
2405
+ # should be provided as 1-length arrays. Other types should be provided as as
2406
+ # 2-length arrays, where the first item is the key and the second the value.
2407
+ sig { returns(T.nilable(T::Array[T::Array[String]])) }
2408
+ attr_reader :options
2409
+
2410
+ sig { params(options: T::Array[T::Array[String]]).void }
2411
+ attr_writer :options
2412
+
2413
+ # The size for the tmpfs mount in bytes.
2414
+ sig { returns(T.nilable(Integer)) }
2415
+ attr_reader :size_bytes
2416
+
2417
+ sig { params(size_bytes: Integer).void }
2418
+ attr_writer :size_bytes
2419
+
2420
+ # Optional configuration for the `tmpfs` type.
2421
+ sig do
2422
+ params(
2423
+ mode: Integer,
2424
+ options: T::Array[T::Array[String]],
2425
+ size_bytes: Integer
2426
+ ).returns(T.attached_class)
2427
+ end
2428
+ def self.new(
2429
+ # The permission mode for the tmpfs mount in an integer. The value must not be in
2430
+ # octal format (e.g. 755) but rather the decimal representation of the octal value
2431
+ # (e.g. 493).
2432
+ mode: nil,
2433
+ # The options to be passed to the tmpfs mount. An array of arrays. Flag options
2434
+ # should be provided as 1-length arrays. Other types should be provided as as
2435
+ # 2-length arrays, where the first item is the key and the second the value.
2436
+ options: nil,
2437
+ # The size for the tmpfs mount in bytes.
2438
+ size_bytes: nil
2439
+ )
2440
+ end
2441
+
2442
+ sig do
2443
+ override.returns(
2444
+ {
2445
+ mode: Integer,
2446
+ options: T::Array[T::Array[String]],
2447
+ size_bytes: Integer
2448
+ }
2449
+ )
2450
+ end
2451
+ def to_hash
2452
+ end
2453
+ end
2454
+
2455
+ # The mount type. Available types:
2456
+ #
2457
+ # - `bind` a mount of a file or directory from the host into the container.
2458
+ # - `cluster` a Swarm cluster volume.
2459
+ # - `image` an OCI image.
2460
+ # - `npipe` a named pipe from the host into the container.
2461
+ # - `tmpfs` a `tmpfs`.
2462
+ # - `volume` a docker volume with the given `Name`.
2463
+ module Type
2464
+ extend DockerEngine::Internal::Type::Enum
2465
+
2466
+ TaggedSymbol =
2467
+ T.type_alias do
2468
+ T.all(
2469
+ Symbol,
2470
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type
2471
+ )
2472
+ end
2473
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2474
+
2475
+ BIND =
2476
+ T.let(
2477
+ :bind,
2478
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type::TaggedSymbol
2479
+ )
2480
+ CLUSTER =
2481
+ T.let(
2482
+ :cluster,
2483
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type::TaggedSymbol
2484
+ )
2485
+ IMAGE =
2486
+ T.let(
2487
+ :image,
2488
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type::TaggedSymbol
2489
+ )
2490
+ NPIPE =
2491
+ T.let(
2492
+ :npipe,
2493
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type::TaggedSymbol
2494
+ )
2495
+ TMPFS =
2496
+ T.let(
2497
+ :tmpfs,
2498
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type::TaggedSymbol
2499
+ )
2500
+ VOLUME =
2501
+ T.let(
2502
+ :volume,
2503
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type::TaggedSymbol
2504
+ )
2505
+
2506
+ sig do
2507
+ override.returns(
2508
+ T::Array[
2509
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::Type::TaggedSymbol
2510
+ ]
2511
+ )
2512
+ end
2513
+ def self.values
2514
+ end
2515
+ end
2516
+
2517
+ class VolumeOptions < DockerEngine::Internal::Type::BaseModel
2518
+ OrHash =
2519
+ T.type_alias do
2520
+ T.any(
2521
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::VolumeOptions,
2522
+ DockerEngine::Internal::AnyHash
2523
+ )
2524
+ end
2525
+
2526
+ # Map of driver specific options
2527
+ sig do
2528
+ returns(
2529
+ T.nilable(
2530
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::VolumeOptions::DriverConfig
2531
+ )
2532
+ )
2533
+ end
2534
+ attr_reader :driver_config
2535
+
2536
+ sig do
2537
+ params(
2538
+ driver_config:
2539
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::VolumeOptions::DriverConfig::OrHash
2540
+ ).void
2541
+ end
2542
+ attr_writer :driver_config
2543
+
2544
+ # User-defined key/value metadata.
2545
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
2546
+ attr_reader :labels
2547
+
2548
+ sig { params(labels: T::Hash[Symbol, String]).void }
2549
+ attr_writer :labels
2550
+
2551
+ # Populate volume with data from the target.
2552
+ sig { returns(T.nilable(T::Boolean)) }
2553
+ attr_reader :no_copy
2554
+
2555
+ sig { params(no_copy: T::Boolean).void }
2556
+ attr_writer :no_copy
2557
+
2558
+ # Source path inside the volume. Must be relative without any back traversals.
2559
+ sig { returns(T.nilable(String)) }
2560
+ attr_reader :subpath
2561
+
2562
+ sig { params(subpath: String).void }
2563
+ attr_writer :subpath
2564
+
2565
+ # Optional configuration for the `volume` type.
2566
+ sig do
2567
+ params(
2568
+ driver_config:
2569
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::VolumeOptions::DriverConfig::OrHash,
2570
+ labels: T::Hash[Symbol, String],
2571
+ no_copy: T::Boolean,
2572
+ subpath: String
2573
+ ).returns(T.attached_class)
2574
+ end
2575
+ def self.new(
2576
+ # Map of driver specific options
2577
+ driver_config: nil,
2578
+ # User-defined key/value metadata.
2579
+ labels: nil,
2580
+ # Populate volume with data from the target.
2581
+ no_copy: nil,
2582
+ # Source path inside the volume. Must be relative without any back traversals.
2583
+ subpath: nil
2584
+ )
2585
+ end
2586
+
2587
+ sig do
2588
+ override.returns(
2589
+ {
2590
+ driver_config:
2591
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::VolumeOptions::DriverConfig,
2592
+ labels: T::Hash[Symbol, String],
2593
+ no_copy: T::Boolean,
2594
+ subpath: String
2595
+ }
2596
+ )
2597
+ end
2598
+ def to_hash
2599
+ end
2600
+
2601
+ class DriverConfig < DockerEngine::Internal::Type::BaseModel
2602
+ OrHash =
2603
+ T.type_alias do
2604
+ T.any(
2605
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Mount::VolumeOptions::DriverConfig,
2606
+ DockerEngine::Internal::AnyHash
2607
+ )
2608
+ end
2609
+
2610
+ # Name of the driver to use to create the volume.
2611
+ sig { returns(T.nilable(String)) }
2612
+ attr_reader :name
2613
+
2614
+ sig { params(name: String).void }
2615
+ attr_writer :name
2616
+
2617
+ # key/value map of driver specific options.
2618
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
2619
+ attr_reader :options
2620
+
2621
+ sig { params(options: T::Hash[Symbol, String]).void }
2622
+ attr_writer :options
2623
+
2624
+ # Map of driver specific options
2625
+ sig do
2626
+ params(
2627
+ name: String,
2628
+ options: T::Hash[Symbol, String]
2629
+ ).returns(T.attached_class)
2630
+ end
2631
+ def self.new(
2632
+ # Name of the driver to use to create the volume.
2633
+ name: nil,
2634
+ # key/value map of driver specific options.
2635
+ options: nil
2636
+ )
2637
+ end
2638
+
2639
+ sig do
2640
+ override.returns(
2641
+ { name: String, options: T::Hash[Symbol, String] }
2642
+ )
2643
+ end
2644
+ def to_hash
2645
+ end
2646
+ end
2647
+ end
2648
+ end
2649
+
2650
+ class Privileges < DockerEngine::Internal::Type::BaseModel
2651
+ OrHash =
2652
+ T.type_alias do
2653
+ T.any(
2654
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges,
2655
+ DockerEngine::Internal::AnyHash
2656
+ )
2657
+ end
2658
+
2659
+ # Options for configuring AppArmor on the container
2660
+ sig do
2661
+ returns(
2662
+ T.nilable(
2663
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor
2664
+ )
2665
+ )
2666
+ end
2667
+ attr_reader :app_armor
2668
+
2669
+ sig do
2670
+ params(
2671
+ app_armor:
2672
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor::OrHash
2673
+ ).void
2674
+ end
2675
+ attr_writer :app_armor
2676
+
2677
+ # CredentialSpec for managed service account (Windows only)
2678
+ sig do
2679
+ returns(
2680
+ T.nilable(
2681
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::CredentialSpec
2682
+ )
2683
+ )
2684
+ end
2685
+ attr_reader :credential_spec
2686
+
2687
+ sig do
2688
+ params(
2689
+ credential_spec:
2690
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::CredentialSpec::OrHash
2691
+ ).void
2692
+ end
2693
+ attr_writer :credential_spec
2694
+
2695
+ # Configuration of the no_new_privs bit in the container
2696
+ sig { returns(T.nilable(T::Boolean)) }
2697
+ attr_reader :no_new_privileges
2698
+
2699
+ sig { params(no_new_privileges: T::Boolean).void }
2700
+ attr_writer :no_new_privileges
2701
+
2702
+ # Options for configuring seccomp on the container
2703
+ sig do
2704
+ returns(
2705
+ T.nilable(
2706
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp
2707
+ )
2708
+ )
2709
+ end
2710
+ attr_reader :seccomp
2711
+
2712
+ sig do
2713
+ params(
2714
+ seccomp:
2715
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp::OrHash
2716
+ ).void
2717
+ end
2718
+ attr_writer :seccomp
2719
+
2720
+ # SELinux labels of the container
2721
+ sig do
2722
+ returns(
2723
+ T.nilable(
2724
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::SeLinuxContext
2725
+ )
2726
+ )
2727
+ end
2728
+ attr_reader :se_linux_context
2729
+
2730
+ sig do
2731
+ params(
2732
+ se_linux_context:
2733
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::SeLinuxContext::OrHash
2734
+ ).void
2735
+ end
2736
+ attr_writer :se_linux_context
2737
+
2738
+ # Security options for the container
2739
+ sig do
2740
+ params(
2741
+ app_armor:
2742
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor::OrHash,
2743
+ credential_spec:
2744
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::CredentialSpec::OrHash,
2745
+ no_new_privileges: T::Boolean,
2746
+ seccomp:
2747
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp::OrHash,
2748
+ se_linux_context:
2749
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::SeLinuxContext::OrHash
2750
+ ).returns(T.attached_class)
2751
+ end
2752
+ def self.new(
2753
+ # Options for configuring AppArmor on the container
2754
+ app_armor: nil,
2755
+ # CredentialSpec for managed service account (Windows only)
2756
+ credential_spec: nil,
2757
+ # Configuration of the no_new_privs bit in the container
2758
+ no_new_privileges: nil,
2759
+ # Options for configuring seccomp on the container
2760
+ seccomp: nil,
2761
+ # SELinux labels of the container
2762
+ se_linux_context: nil
2763
+ )
2764
+ end
2765
+
2766
+ sig do
2767
+ override.returns(
2768
+ {
2769
+ app_armor:
2770
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor,
2771
+ credential_spec:
2772
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::CredentialSpec,
2773
+ no_new_privileges: T::Boolean,
2774
+ seccomp:
2775
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp,
2776
+ se_linux_context:
2777
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::SeLinuxContext
2778
+ }
2779
+ )
2780
+ end
2781
+ def to_hash
2782
+ end
2783
+
2784
+ class AppArmor < DockerEngine::Internal::Type::BaseModel
2785
+ OrHash =
2786
+ T.type_alias do
2787
+ T.any(
2788
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor,
2789
+ DockerEngine::Internal::AnyHash
2790
+ )
2791
+ end
2792
+
2793
+ sig do
2794
+ returns(
2795
+ T.nilable(
2796
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor::Mode::OrSymbol
2797
+ )
2798
+ )
2799
+ end
2800
+ attr_reader :mode
2801
+
2802
+ sig do
2803
+ params(
2804
+ mode:
2805
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor::Mode::OrSymbol
2806
+ ).void
2807
+ end
2808
+ attr_writer :mode
2809
+
2810
+ # Options for configuring AppArmor on the container
2811
+ sig do
2812
+ params(
2813
+ mode:
2814
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor::Mode::OrSymbol
2815
+ ).returns(T.attached_class)
2816
+ end
2817
+ def self.new(mode: nil)
2818
+ end
2819
+
2820
+ sig do
2821
+ override.returns(
2822
+ {
2823
+ mode:
2824
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor::Mode::OrSymbol
2825
+ }
2826
+ )
2827
+ end
2828
+ def to_hash
2829
+ end
2830
+
2831
+ module Mode
2832
+ extend DockerEngine::Internal::Type::Enum
2833
+
2834
+ TaggedSymbol =
2835
+ T.type_alias do
2836
+ T.all(
2837
+ Symbol,
2838
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor::Mode
2839
+ )
2840
+ end
2841
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2842
+
2843
+ DEFAULT =
2844
+ T.let(
2845
+ :default,
2846
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor::Mode::TaggedSymbol
2847
+ )
2848
+ DISABLED =
2849
+ T.let(
2850
+ :disabled,
2851
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor::Mode::TaggedSymbol
2852
+ )
2853
+
2854
+ sig do
2855
+ override.returns(
2856
+ T::Array[
2857
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::AppArmor::Mode::TaggedSymbol
2858
+ ]
2859
+ )
2860
+ end
2861
+ def self.values
2862
+ end
2863
+ end
2864
+ end
2865
+
2866
+ class CredentialSpec < DockerEngine::Internal::Type::BaseModel
2867
+ OrHash =
2868
+ T.type_alias do
2869
+ T.any(
2870
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::CredentialSpec,
2871
+ DockerEngine::Internal::AnyHash
2872
+ )
2873
+ end
2874
+
2875
+ # Load credential spec from a Swarm Config with the given ID. The specified config
2876
+ # must also be present in the Configs field with the Runtime property set.
2877
+ #
2878
+ # <p><br /></p>
2879
+ #
2880
+ # > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and
2881
+ # > `CredentialSpec.Config` are mutually exclusive.
2882
+ sig { returns(T.nilable(String)) }
2883
+ attr_reader :config
2884
+
2885
+ sig { params(config: String).void }
2886
+ attr_writer :config
2887
+
2888
+ # Load credential spec from this file. The file is read by the daemon, and must be
2889
+ # present in the `CredentialSpecs` subdirectory in the docker data directory,
2890
+ # which defaults to `C:\ProgramData\Docker\` on Windows.
2891
+ #
2892
+ # For example, specifying `spec.json` loads
2893
+ # `C:\ProgramData\Docker\CredentialSpecs\spec.json`.
2894
+ #
2895
+ # <p><br /></p>
2896
+ #
2897
+ # > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and
2898
+ # > `CredentialSpec.Config` are mutually exclusive.
2899
+ sig { returns(T.nilable(String)) }
2900
+ attr_reader :file
2901
+
2902
+ sig { params(file: String).void }
2903
+ attr_writer :file
2904
+
2905
+ # Load credential spec from this value in the Windows registry. The specified
2906
+ # registry value must be located in:
2907
+ #
2908
+ # `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Containers\CredentialSpecs`
2909
+ #
2910
+ # <p><br /></p>
2911
+ #
2912
+ # > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and
2913
+ # > `CredentialSpec.Config` are mutually exclusive.
2914
+ sig { returns(T.nilable(String)) }
2915
+ attr_reader :registry
2916
+
2917
+ sig { params(registry: String).void }
2918
+ attr_writer :registry
2919
+
2920
+ # CredentialSpec for managed service account (Windows only)
2921
+ sig do
2922
+ params(config: String, file: String, registry: String).returns(
2923
+ T.attached_class
2924
+ )
2925
+ end
2926
+ def self.new(
2927
+ # Load credential spec from a Swarm Config with the given ID. The specified config
2928
+ # must also be present in the Configs field with the Runtime property set.
2929
+ #
2930
+ # <p><br /></p>
2931
+ #
2932
+ # > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and
2933
+ # > `CredentialSpec.Config` are mutually exclusive.
2934
+ config: nil,
2935
+ # Load credential spec from this file. The file is read by the daemon, and must be
2936
+ # present in the `CredentialSpecs` subdirectory in the docker data directory,
2937
+ # which defaults to `C:\ProgramData\Docker\` on Windows.
2938
+ #
2939
+ # For example, specifying `spec.json` loads
2940
+ # `C:\ProgramData\Docker\CredentialSpecs\spec.json`.
2941
+ #
2942
+ # <p><br /></p>
2943
+ #
2944
+ # > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and
2945
+ # > `CredentialSpec.Config` are mutually exclusive.
2946
+ file: nil,
2947
+ # Load credential spec from this value in the Windows registry. The specified
2948
+ # registry value must be located in:
2949
+ #
2950
+ # `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Containers\CredentialSpecs`
2951
+ #
2952
+ # <p><br /></p>
2953
+ #
2954
+ # > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and
2955
+ # > `CredentialSpec.Config` are mutually exclusive.
2956
+ registry: nil
2957
+ )
2958
+ end
2959
+
2960
+ sig do
2961
+ override.returns(
2962
+ { config: String, file: String, registry: String }
2963
+ )
2964
+ end
2965
+ def to_hash
2966
+ end
2967
+ end
2968
+
2969
+ class Seccomp < DockerEngine::Internal::Type::BaseModel
2970
+ OrHash =
2971
+ T.type_alias do
2972
+ T.any(
2973
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp,
2974
+ DockerEngine::Internal::AnyHash
2975
+ )
2976
+ end
2977
+
2978
+ sig do
2979
+ returns(
2980
+ T.nilable(
2981
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp::Mode::OrSymbol
2982
+ )
2983
+ )
2984
+ end
2985
+ attr_reader :mode
2986
+
2987
+ sig do
2988
+ params(
2989
+ mode:
2990
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp::Mode::OrSymbol
2991
+ ).void
2992
+ end
2993
+ attr_writer :mode
2994
+
2995
+ # The custom seccomp profile as a json object
2996
+ sig { returns(T.nilable(String)) }
2997
+ attr_reader :profile
2998
+
2999
+ sig { params(profile: String).void }
3000
+ attr_writer :profile
3001
+
3002
+ # Options for configuring seccomp on the container
3003
+ sig do
3004
+ params(
3005
+ mode:
3006
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp::Mode::OrSymbol,
3007
+ profile: String
3008
+ ).returns(T.attached_class)
3009
+ end
3010
+ def self.new(
3011
+ mode: nil,
3012
+ # The custom seccomp profile as a json object
3013
+ profile: nil
3014
+ )
3015
+ end
3016
+
3017
+ sig do
3018
+ override.returns(
3019
+ {
3020
+ mode:
3021
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp::Mode::OrSymbol,
3022
+ profile: String
3023
+ }
3024
+ )
3025
+ end
3026
+ def to_hash
3027
+ end
3028
+
3029
+ module Mode
3030
+ extend DockerEngine::Internal::Type::Enum
3031
+
3032
+ TaggedSymbol =
3033
+ T.type_alias do
3034
+ T.all(
3035
+ Symbol,
3036
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp::Mode
3037
+ )
3038
+ end
3039
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
3040
+
3041
+ DEFAULT =
3042
+ T.let(
3043
+ :default,
3044
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp::Mode::TaggedSymbol
3045
+ )
3046
+ UNCONFINED =
3047
+ T.let(
3048
+ :unconfined,
3049
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp::Mode::TaggedSymbol
3050
+ )
3051
+ CUSTOM =
3052
+ T.let(
3053
+ :custom,
3054
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp::Mode::TaggedSymbol
3055
+ )
3056
+
3057
+ sig do
3058
+ override.returns(
3059
+ T::Array[
3060
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::Seccomp::Mode::TaggedSymbol
3061
+ ]
3062
+ )
3063
+ end
3064
+ def self.values
3065
+ end
3066
+ end
3067
+ end
3068
+
3069
+ class SeLinuxContext < DockerEngine::Internal::Type::BaseModel
3070
+ OrHash =
3071
+ T.type_alias do
3072
+ T.any(
3073
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Privileges::SeLinuxContext,
3074
+ DockerEngine::Internal::AnyHash
3075
+ )
3076
+ end
3077
+
3078
+ # Disable SELinux
3079
+ sig { returns(T.nilable(T::Boolean)) }
3080
+ attr_reader :disable
3081
+
3082
+ sig { params(disable: T::Boolean).void }
3083
+ attr_writer :disable
3084
+
3085
+ # SELinux level label
3086
+ sig { returns(T.nilable(String)) }
3087
+ attr_reader :level
3088
+
3089
+ sig { params(level: String).void }
3090
+ attr_writer :level
3091
+
3092
+ # SELinux role label
3093
+ sig { returns(T.nilable(String)) }
3094
+ attr_reader :role
3095
+
3096
+ sig { params(role: String).void }
3097
+ attr_writer :role
3098
+
3099
+ # SELinux type label
3100
+ sig { returns(T.nilable(String)) }
3101
+ attr_reader :type
3102
+
3103
+ sig { params(type: String).void }
3104
+ attr_writer :type
3105
+
3106
+ # SELinux user label
3107
+ sig { returns(T.nilable(String)) }
3108
+ attr_reader :user
3109
+
3110
+ sig { params(user: String).void }
3111
+ attr_writer :user
3112
+
3113
+ # SELinux labels of the container
3114
+ sig do
3115
+ params(
3116
+ disable: T::Boolean,
3117
+ level: String,
3118
+ role: String,
3119
+ type: String,
3120
+ user: String
3121
+ ).returns(T.attached_class)
3122
+ end
3123
+ def self.new(
3124
+ # Disable SELinux
3125
+ disable: nil,
3126
+ # SELinux level label
3127
+ level: nil,
3128
+ # SELinux role label
3129
+ role: nil,
3130
+ # SELinux type label
3131
+ type: nil,
3132
+ # SELinux user label
3133
+ user: nil
3134
+ )
3135
+ end
3136
+
3137
+ sig do
3138
+ override.returns(
3139
+ {
3140
+ disable: T::Boolean,
3141
+ level: String,
3142
+ role: String,
3143
+ type: String,
3144
+ user: String
3145
+ }
3146
+ )
3147
+ end
3148
+ def to_hash
3149
+ end
3150
+ end
3151
+ end
3152
+
3153
+ class Secret < DockerEngine::Internal::Type::BaseModel
3154
+ OrHash =
3155
+ T.type_alias do
3156
+ T.any(
3157
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Secret,
3158
+ DockerEngine::Internal::AnyHash
3159
+ )
3160
+ end
3161
+
3162
+ # File represents a specific target that is backed by a file.
3163
+ sig do
3164
+ returns(
3165
+ T.nilable(
3166
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Secret::File
3167
+ )
3168
+ )
3169
+ end
3170
+ attr_reader :file
3171
+
3172
+ sig do
3173
+ params(
3174
+ file:
3175
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Secret::File::OrHash
3176
+ ).void
3177
+ end
3178
+ attr_writer :file
3179
+
3180
+ # SecretID represents the ID of the specific secret that we're referencing.
3181
+ sig { returns(T.nilable(String)) }
3182
+ attr_reader :secret_id
3183
+
3184
+ sig { params(secret_id: String).void }
3185
+ attr_writer :secret_id
3186
+
3187
+ # SecretName is the name of the secret that this references, but this is just
3188
+ # provided for lookup/display purposes. The secret in the reference will be
3189
+ # identified by its ID.
3190
+ sig { returns(T.nilable(String)) }
3191
+ attr_reader :secret_name
3192
+
3193
+ sig { params(secret_name: String).void }
3194
+ attr_writer :secret_name
3195
+
3196
+ sig do
3197
+ params(
3198
+ file:
3199
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Secret::File::OrHash,
3200
+ secret_id: String,
3201
+ secret_name: String
3202
+ ).returns(T.attached_class)
3203
+ end
3204
+ def self.new(
3205
+ # File represents a specific target that is backed by a file.
3206
+ file: nil,
3207
+ # SecretID represents the ID of the specific secret that we're referencing.
3208
+ secret_id: nil,
3209
+ # SecretName is the name of the secret that this references, but this is just
3210
+ # provided for lookup/display purposes. The secret in the reference will be
3211
+ # identified by its ID.
3212
+ secret_name: nil
3213
+ )
3214
+ end
3215
+
3216
+ sig do
3217
+ override.returns(
3218
+ {
3219
+ file:
3220
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Secret::File,
3221
+ secret_id: String,
3222
+ secret_name: String
3223
+ }
3224
+ )
3225
+ end
3226
+ def to_hash
3227
+ end
3228
+
3229
+ class File < DockerEngine::Internal::Type::BaseModel
3230
+ OrHash =
3231
+ T.type_alias do
3232
+ T.any(
3233
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Secret::File,
3234
+ DockerEngine::Internal::AnyHash
3235
+ )
3236
+ end
3237
+
3238
+ # GID represents the file GID.
3239
+ sig { returns(T.nilable(String)) }
3240
+ attr_reader :gid
3241
+
3242
+ sig { params(gid: String).void }
3243
+ attr_writer :gid
3244
+
3245
+ # Mode represents the FileMode of the file.
3246
+ sig { returns(T.nilable(Integer)) }
3247
+ attr_reader :mode
3248
+
3249
+ sig { params(mode: Integer).void }
3250
+ attr_writer :mode
3251
+
3252
+ # Name represents the final filename in the filesystem.
3253
+ sig { returns(T.nilable(String)) }
3254
+ attr_reader :name
3255
+
3256
+ sig { params(name: String).void }
3257
+ attr_writer :name
3258
+
3259
+ # UID represents the file UID.
3260
+ sig { returns(T.nilable(String)) }
3261
+ attr_reader :uid
3262
+
3263
+ sig { params(uid: String).void }
3264
+ attr_writer :uid
3265
+
3266
+ # File represents a specific target that is backed by a file.
3267
+ sig do
3268
+ params(
3269
+ gid: String,
3270
+ mode: Integer,
3271
+ name: String,
3272
+ uid: String
3273
+ ).returns(T.attached_class)
3274
+ end
3275
+ def self.new(
3276
+ # GID represents the file GID.
3277
+ gid: nil,
3278
+ # Mode represents the FileMode of the file.
3279
+ mode: nil,
3280
+ # Name represents the final filename in the filesystem.
3281
+ name: nil,
3282
+ # UID represents the file UID.
3283
+ uid: nil
3284
+ )
3285
+ end
3286
+
3287
+ sig do
3288
+ override.returns(
3289
+ { gid: String, mode: Integer, name: String, uid: String }
3290
+ )
3291
+ end
3292
+ def to_hash
3293
+ end
3294
+ end
3295
+ end
3296
+
3297
+ class Ulimit < DockerEngine::Internal::Type::BaseModel
3298
+ OrHash =
3299
+ T.type_alias do
3300
+ T.any(
3301
+ DockerEngine::Spec::TaskTemplate::ContainerSpec::Ulimit,
3302
+ DockerEngine::Internal::AnyHash
3303
+ )
3304
+ end
3305
+
3306
+ # Hard limit
3307
+ sig { returns(T.nilable(Integer)) }
3308
+ attr_reader :hard
3309
+
3310
+ sig { params(hard: Integer).void }
3311
+ attr_writer :hard
3312
+
3313
+ # Name of ulimit
3314
+ sig { returns(T.nilable(String)) }
3315
+ attr_reader :name
3316
+
3317
+ sig { params(name: String).void }
3318
+ attr_writer :name
3319
+
3320
+ # Soft limit
3321
+ sig { returns(T.nilable(Integer)) }
3322
+ attr_reader :soft
3323
+
3324
+ sig { params(soft: Integer).void }
3325
+ attr_writer :soft
3326
+
3327
+ sig do
3328
+ params(hard: Integer, name: String, soft: Integer).returns(
3329
+ T.attached_class
3330
+ )
3331
+ end
3332
+ def self.new(
3333
+ # Hard limit
3334
+ hard: nil,
3335
+ # Name of ulimit
3336
+ name: nil,
3337
+ # Soft limit
3338
+ soft: nil
3339
+ )
3340
+ end
3341
+
3342
+ sig do
3343
+ override.returns({ hard: Integer, name: String, soft: Integer })
3344
+ end
3345
+ def to_hash
3346
+ end
3347
+ end
3348
+ end
3349
+
3350
+ class LogDriver < DockerEngine::Internal::Type::BaseModel
3351
+ OrHash =
3352
+ T.type_alias do
3353
+ T.any(
3354
+ DockerEngine::Spec::TaskTemplate::LogDriver,
3355
+ DockerEngine::Internal::AnyHash
3356
+ )
3357
+ end
3358
+
3359
+ sig { returns(T.nilable(String)) }
3360
+ attr_reader :name
3361
+
3362
+ sig { params(name: String).void }
3363
+ attr_writer :name
3364
+
3365
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
3366
+ attr_reader :options
3367
+
3368
+ sig { params(options: T::Hash[Symbol, String]).void }
3369
+ attr_writer :options
3370
+
3371
+ # Specifies the log driver to use for tasks created from this spec. If not
3372
+ # present, the default one for the swarm will be used, finally falling back to the
3373
+ # engine default if not specified.
3374
+ sig do
3375
+ params(name: String, options: T::Hash[Symbol, String]).returns(
3376
+ T.attached_class
3377
+ )
3378
+ end
3379
+ def self.new(name: nil, options: nil)
3380
+ end
3381
+
3382
+ sig do
3383
+ override.returns({ name: String, options: T::Hash[Symbol, String] })
3384
+ end
3385
+ def to_hash
3386
+ end
3387
+ end
3388
+
3389
+ class NetworkAttachmentSpec < DockerEngine::Internal::Type::BaseModel
3390
+ OrHash =
3391
+ T.type_alias do
3392
+ T.any(
3393
+ DockerEngine::Spec::TaskTemplate::NetworkAttachmentSpec,
3394
+ DockerEngine::Internal::AnyHash
3395
+ )
3396
+ end
3397
+
3398
+ # ID of the container represented by this task
3399
+ sig { returns(T.nilable(String)) }
3400
+ attr_reader :container_id
3401
+
3402
+ sig { params(container_id: String).void }
3403
+ attr_writer :container_id
3404
+
3405
+ # Read-only spec type for non-swarm containers attached to swarm overlay networks.
3406
+ #
3407
+ # <p><br /></p>
3408
+ #
3409
+ # > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are mutually
3410
+ # > exclusive. PluginSpec is only used when the Runtime field is set to `plugin`.
3411
+ # > NetworkAttachmentSpec is used when the Runtime field is set to `attachment`.
3412
+ sig { params(container_id: String).returns(T.attached_class) }
3413
+ def self.new(
3414
+ # ID of the container represented by this task
3415
+ container_id: nil
3416
+ )
3417
+ end
3418
+
3419
+ sig { override.returns({ container_id: String }) }
3420
+ def to_hash
3421
+ end
3422
+ end
3423
+
3424
+ class Network < DockerEngine::Internal::Type::BaseModel
3425
+ OrHash =
3426
+ T.type_alias do
3427
+ T.any(
3428
+ DockerEngine::Spec::TaskTemplate::Network,
3429
+ DockerEngine::Internal::AnyHash
3430
+ )
3431
+ end
3432
+
3433
+ # Discoverable alternate names for the service on this network.
3434
+ sig { returns(T.nilable(T::Array[String])) }
3435
+ attr_reader :aliases
3436
+
3437
+ sig { params(aliases: T::Array[String]).void }
3438
+ attr_writer :aliases
3439
+
3440
+ # Driver attachment options for the network target.
3441
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
3442
+ attr_reader :driver_opts
3443
+
3444
+ sig { params(driver_opts: T::Hash[Symbol, String]).void }
3445
+ attr_writer :driver_opts
3446
+
3447
+ # The target network for attachment. Must be a network name or ID.
3448
+ sig { returns(T.nilable(String)) }
3449
+ attr_reader :target
3450
+
3451
+ sig { params(target: String).void }
3452
+ attr_writer :target
3453
+
3454
+ # Specifies how a service should be attached to a particular network.
3455
+ sig do
3456
+ params(
3457
+ aliases: T::Array[String],
3458
+ driver_opts: T::Hash[Symbol, String],
3459
+ target: String
3460
+ ).returns(T.attached_class)
3461
+ end
3462
+ def self.new(
3463
+ # Discoverable alternate names for the service on this network.
3464
+ aliases: nil,
3465
+ # Driver attachment options for the network target.
3466
+ driver_opts: nil,
3467
+ # The target network for attachment. Must be a network name or ID.
3468
+ target: nil
3469
+ )
3470
+ end
3471
+
3472
+ sig do
3473
+ override.returns(
3474
+ {
3475
+ aliases: T::Array[String],
3476
+ driver_opts: T::Hash[Symbol, String],
3477
+ target: String
3478
+ }
3479
+ )
3480
+ end
3481
+ def to_hash
3482
+ end
3483
+ end
3484
+
3485
+ class Placement < DockerEngine::Internal::Type::BaseModel
3486
+ OrHash =
3487
+ T.type_alias do
3488
+ T.any(
3489
+ DockerEngine::Spec::TaskTemplate::Placement,
3490
+ DockerEngine::Internal::AnyHash
3491
+ )
3492
+ end
3493
+
3494
+ # An array of constraint expressions to limit the set of nodes where a task can be
3495
+ # scheduled. Constraint expressions can either use a _match_ (`==`) or _exclude_
3496
+ # (`!=`) rule. Multiple constraints find nodes that satisfy every expression (AND
3497
+ # match). Constraints can match node or Docker Engine labels as follows:
3498
+ #
3499
+ # | node attribute | matches | example |
3500
+ # | -------------------- | ------------------------------ | --------------------------------------------- |
3501
+ # | `node.id` | Node ID | `node.id==2ivku8v2gvtg4` |
3502
+ # | `node.hostname` | Node hostname | `node.hostname!=node-2` |
3503
+ # | `node.role` | Node role (`manager`/`worker`) | `node.role==manager` |
3504
+ # | `node.platform.os` | Node operating system | `node.platform.os==windows` |
3505
+ # | `node.platform.arch` | Node architecture | `node.platform.arch==x86_64` |
3506
+ # | `node.labels` | User-defined node labels | `node.labels.security==high` |
3507
+ # | `engine.labels` | Docker Engine's labels | `engine.labels.operatingsystem==ubuntu-24.04` |
3508
+ #
3509
+ # `engine.labels` apply to Docker Engine labels like operating system, drivers,
3510
+ # etc. Swarm administrators add `node.labels` for operational purposes by using
3511
+ # the [`node update endpoint`](#operation/NodeUpdate).
3512
+ sig { returns(T.nilable(T::Array[String])) }
3513
+ attr_reader :constraints
3514
+
3515
+ sig { params(constraints: T::Array[String]).void }
3516
+ attr_writer :constraints
3517
+
3518
+ # Maximum number of replicas for per node (default value is 0, which is unlimited)
3519
+ sig { returns(T.nilable(Integer)) }
3520
+ attr_reader :max_replicas
3521
+
3522
+ sig { params(max_replicas: Integer).void }
3523
+ attr_writer :max_replicas
3524
+
3525
+ # Platforms stores all the platforms that the service's image can run on. This
3526
+ # field is used in the platform filter for scheduling. If empty, then the platform
3527
+ # filter is off, meaning there are no scheduling restrictions.
3528
+ sig do
3529
+ returns(
3530
+ T.nilable(
3531
+ T::Array[DockerEngine::Spec::TaskTemplate::Placement::Platform]
3532
+ )
3533
+ )
3534
+ end
3535
+ attr_reader :platforms
3536
+
3537
+ sig do
3538
+ params(
3539
+ platforms:
3540
+ T::Array[
3541
+ DockerEngine::Spec::TaskTemplate::Placement::Platform::OrHash
3542
+ ]
3543
+ ).void
3544
+ end
3545
+ attr_writer :platforms
3546
+
3547
+ # Preferences provide a way to make the scheduler aware of factors such as
3548
+ # topology. They are provided in order from highest to lowest precedence.
3549
+ sig do
3550
+ returns(
3551
+ T.nilable(
3552
+ T::Array[
3553
+ DockerEngine::Spec::TaskTemplate::Placement::Preference
3554
+ ]
3555
+ )
3556
+ )
3557
+ end
3558
+ attr_reader :preferences
3559
+
3560
+ sig do
3561
+ params(
3562
+ preferences:
3563
+ T::Array[
3564
+ DockerEngine::Spec::TaskTemplate::Placement::Preference::OrHash
3565
+ ]
3566
+ ).void
3567
+ end
3568
+ attr_writer :preferences
3569
+
3570
+ sig do
3571
+ params(
3572
+ constraints: T::Array[String],
3573
+ max_replicas: Integer,
3574
+ platforms:
3575
+ T::Array[
3576
+ DockerEngine::Spec::TaskTemplate::Placement::Platform::OrHash
3577
+ ],
3578
+ preferences:
3579
+ T::Array[
3580
+ DockerEngine::Spec::TaskTemplate::Placement::Preference::OrHash
3581
+ ]
3582
+ ).returns(T.attached_class)
3583
+ end
3584
+ def self.new(
3585
+ # An array of constraint expressions to limit the set of nodes where a task can be
3586
+ # scheduled. Constraint expressions can either use a _match_ (`==`) or _exclude_
3587
+ # (`!=`) rule. Multiple constraints find nodes that satisfy every expression (AND
3588
+ # match). Constraints can match node or Docker Engine labels as follows:
3589
+ #
3590
+ # | node attribute | matches | example |
3591
+ # | -------------------- | ------------------------------ | --------------------------------------------- |
3592
+ # | `node.id` | Node ID | `node.id==2ivku8v2gvtg4` |
3593
+ # | `node.hostname` | Node hostname | `node.hostname!=node-2` |
3594
+ # | `node.role` | Node role (`manager`/`worker`) | `node.role==manager` |
3595
+ # | `node.platform.os` | Node operating system | `node.platform.os==windows` |
3596
+ # | `node.platform.arch` | Node architecture | `node.platform.arch==x86_64` |
3597
+ # | `node.labels` | User-defined node labels | `node.labels.security==high` |
3598
+ # | `engine.labels` | Docker Engine's labels | `engine.labels.operatingsystem==ubuntu-24.04` |
3599
+ #
3600
+ # `engine.labels` apply to Docker Engine labels like operating system, drivers,
3601
+ # etc. Swarm administrators add `node.labels` for operational purposes by using
3602
+ # the [`node update endpoint`](#operation/NodeUpdate).
3603
+ constraints: nil,
3604
+ # Maximum number of replicas for per node (default value is 0, which is unlimited)
3605
+ max_replicas: nil,
3606
+ # Platforms stores all the platforms that the service's image can run on. This
3607
+ # field is used in the platform filter for scheduling. If empty, then the platform
3608
+ # filter is off, meaning there are no scheduling restrictions.
3609
+ platforms: nil,
3610
+ # Preferences provide a way to make the scheduler aware of factors such as
3611
+ # topology. They are provided in order from highest to lowest precedence.
3612
+ preferences: nil
3613
+ )
3614
+ end
3615
+
3616
+ sig do
3617
+ override.returns(
3618
+ {
3619
+ constraints: T::Array[String],
3620
+ max_replicas: Integer,
3621
+ platforms:
3622
+ T::Array[
3623
+ DockerEngine::Spec::TaskTemplate::Placement::Platform
3624
+ ],
3625
+ preferences:
3626
+ T::Array[
3627
+ DockerEngine::Spec::TaskTemplate::Placement::Preference
3628
+ ]
3629
+ }
3630
+ )
3631
+ end
3632
+ def to_hash
3633
+ end
3634
+
3635
+ class Platform < DockerEngine::Internal::Type::BaseModel
3636
+ OrHash =
3637
+ T.type_alias do
3638
+ T.any(
3639
+ DockerEngine::Spec::TaskTemplate::Placement::Platform,
3640
+ DockerEngine::Internal::AnyHash
3641
+ )
3642
+ end
3643
+
3644
+ # Architecture represents the hardware architecture (for example, `x86_64`).
3645
+ sig { returns(T.nilable(String)) }
3646
+ attr_reader :architecture
3647
+
3648
+ sig { params(architecture: String).void }
3649
+ attr_writer :architecture
3650
+
3651
+ # OS represents the Operating System (for example, `linux` or `windows`).
3652
+ sig { returns(T.nilable(String)) }
3653
+ attr_reader :os
3654
+
3655
+ sig { params(os: String).void }
3656
+ attr_writer :os
3657
+
3658
+ # Platform represents the platform (Arch/OS).
3659
+ sig do
3660
+ params(architecture: String, os: String).returns(T.attached_class)
3661
+ end
3662
+ def self.new(
3663
+ # Architecture represents the hardware architecture (for example, `x86_64`).
3664
+ architecture: nil,
3665
+ # OS represents the Operating System (for example, `linux` or `windows`).
3666
+ os: nil
3667
+ )
3668
+ end
3669
+
3670
+ sig { override.returns({ architecture: String, os: String }) }
3671
+ def to_hash
3672
+ end
3673
+ end
3674
+
3675
+ class Preference < DockerEngine::Internal::Type::BaseModel
3676
+ OrHash =
3677
+ T.type_alias do
3678
+ T.any(
3679
+ DockerEngine::Spec::TaskTemplate::Placement::Preference,
3680
+ DockerEngine::Internal::AnyHash
3681
+ )
3682
+ end
3683
+
3684
+ sig do
3685
+ returns(
3686
+ T.nilable(
3687
+ DockerEngine::Spec::TaskTemplate::Placement::Preference::Spread
3688
+ )
3689
+ )
3690
+ end
3691
+ attr_reader :spread
3692
+
3693
+ sig do
3694
+ params(
3695
+ spread:
3696
+ DockerEngine::Spec::TaskTemplate::Placement::Preference::Spread::OrHash
3697
+ ).void
3698
+ end
3699
+ attr_writer :spread
3700
+
3701
+ sig do
3702
+ params(
3703
+ spread:
3704
+ DockerEngine::Spec::TaskTemplate::Placement::Preference::Spread::OrHash
3705
+ ).returns(T.attached_class)
3706
+ end
3707
+ def self.new(spread: nil)
3708
+ end
3709
+
3710
+ sig do
3711
+ override.returns(
3712
+ {
3713
+ spread:
3714
+ DockerEngine::Spec::TaskTemplate::Placement::Preference::Spread
3715
+ }
3716
+ )
3717
+ end
3718
+ def to_hash
3719
+ end
3720
+
3721
+ class Spread < DockerEngine::Internal::Type::BaseModel
3722
+ OrHash =
3723
+ T.type_alias do
3724
+ T.any(
3725
+ DockerEngine::Spec::TaskTemplate::Placement::Preference::Spread,
3726
+ DockerEngine::Internal::AnyHash
3727
+ )
3728
+ end
3729
+
3730
+ # label descriptor, such as `engine.labels.az`.
3731
+ sig { returns(T.nilable(String)) }
3732
+ attr_reader :spread_descriptor
3733
+
3734
+ sig { params(spread_descriptor: String).void }
3735
+ attr_writer :spread_descriptor
3736
+
3737
+ sig do
3738
+ params(spread_descriptor: String).returns(T.attached_class)
3739
+ end
3740
+ def self.new(
3741
+ # label descriptor, such as `engine.labels.az`.
3742
+ spread_descriptor: nil
3743
+ )
3744
+ end
3745
+
3746
+ sig { override.returns({ spread_descriptor: String }) }
3747
+ def to_hash
3748
+ end
3749
+ end
3750
+ end
3751
+ end
3752
+
3753
+ class PluginSpec < DockerEngine::Internal::Type::BaseModel
3754
+ OrHash =
3755
+ T.type_alias do
3756
+ T.any(
3757
+ DockerEngine::Spec::TaskTemplate::PluginSpec,
3758
+ DockerEngine::Internal::AnyHash
3759
+ )
3760
+ end
3761
+
3762
+ # Disable the plugin once scheduled.
3763
+ sig { returns(T.nilable(T::Boolean)) }
3764
+ attr_reader :disabled
3765
+
3766
+ sig { params(disabled: T::Boolean).void }
3767
+ attr_writer :disabled
3768
+
3769
+ # The name or 'alias' to use for the plugin.
3770
+ sig { returns(T.nilable(String)) }
3771
+ attr_reader :name
3772
+
3773
+ sig { params(name: String).void }
3774
+ attr_writer :name
3775
+
3776
+ sig do
3777
+ returns(
3778
+ T.nilable(
3779
+ T::Array[
3780
+ DockerEngine::Spec::TaskTemplate::PluginSpec::PluginPrivilege
3781
+ ]
3782
+ )
3783
+ )
3784
+ end
3785
+ attr_reader :plugin_privilege
3786
+
3787
+ sig do
3788
+ params(
3789
+ plugin_privilege:
3790
+ T::Array[
3791
+ DockerEngine::Spec::TaskTemplate::PluginSpec::PluginPrivilege::OrHash
3792
+ ]
3793
+ ).void
3794
+ end
3795
+ attr_writer :plugin_privilege
3796
+
3797
+ # The plugin image reference to use.
3798
+ sig { returns(T.nilable(String)) }
3799
+ attr_reader :remote
3800
+
3801
+ sig { params(remote: String).void }
3802
+ attr_writer :remote
3803
+
3804
+ # Plugin spec for the service. _(Experimental release only.)_
3805
+ #
3806
+ # <p><br /></p>
3807
+ #
3808
+ # > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are mutually
3809
+ # > exclusive. PluginSpec is only used when the Runtime field is set to `plugin`.
3810
+ # > NetworkAttachmentSpec is used when the Runtime field is set to `attachment`.
3811
+ sig do
3812
+ params(
3813
+ disabled: T::Boolean,
3814
+ name: String,
3815
+ plugin_privilege:
3816
+ T::Array[
3817
+ DockerEngine::Spec::TaskTemplate::PluginSpec::PluginPrivilege::OrHash
3818
+ ],
3819
+ remote: String
3820
+ ).returns(T.attached_class)
3821
+ end
3822
+ def self.new(
3823
+ # Disable the plugin once scheduled.
3824
+ disabled: nil,
3825
+ # The name or 'alias' to use for the plugin.
3826
+ name: nil,
3827
+ plugin_privilege: nil,
3828
+ # The plugin image reference to use.
3829
+ remote: nil
3830
+ )
3831
+ end
3832
+
3833
+ sig do
3834
+ override.returns(
3835
+ {
3836
+ disabled: T::Boolean,
3837
+ name: String,
3838
+ plugin_privilege:
3839
+ T::Array[
3840
+ DockerEngine::Spec::TaskTemplate::PluginSpec::PluginPrivilege
3841
+ ],
3842
+ remote: String
3843
+ }
3844
+ )
3845
+ end
3846
+ def to_hash
3847
+ end
3848
+
3849
+ class PluginPrivilege < DockerEngine::Internal::Type::BaseModel
3850
+ OrHash =
3851
+ T.type_alias do
3852
+ T.any(
3853
+ DockerEngine::Spec::TaskTemplate::PluginSpec::PluginPrivilege,
3854
+ DockerEngine::Internal::AnyHash
3855
+ )
3856
+ end
3857
+
3858
+ sig { returns(T.nilable(String)) }
3859
+ attr_reader :description
3860
+
3861
+ sig { params(description: String).void }
3862
+ attr_writer :description
3863
+
3864
+ sig { returns(T.nilable(String)) }
3865
+ attr_reader :name
3866
+
3867
+ sig { params(name: String).void }
3868
+ attr_writer :name
3869
+
3870
+ sig { returns(T.nilable(T::Array[String])) }
3871
+ attr_reader :value
3872
+
3873
+ sig { params(value: T::Array[String]).void }
3874
+ attr_writer :value
3875
+
3876
+ # Describes a permission the user has to accept upon installing the plugin.
3877
+ sig do
3878
+ params(
3879
+ description: String,
3880
+ name: String,
3881
+ value: T::Array[String]
3882
+ ).returns(T.attached_class)
3883
+ end
3884
+ def self.new(description: nil, name: nil, value: nil)
3885
+ end
3886
+
3887
+ sig do
3888
+ override.returns(
3889
+ { description: String, name: String, value: T::Array[String] }
3890
+ )
3891
+ end
3892
+ def to_hash
3893
+ end
3894
+ end
3895
+ end
3896
+
3897
+ class Resources < DockerEngine::Internal::Type::BaseModel
3898
+ OrHash =
3899
+ T.type_alias do
3900
+ T.any(
3901
+ DockerEngine::Spec::TaskTemplate::Resources,
3902
+ DockerEngine::Internal::AnyHash
3903
+ )
3904
+ end
3905
+
3906
+ # An object describing a limit on resources which can be requested by a task.
3907
+ sig do
3908
+ returns(
3909
+ T.nilable(DockerEngine::Spec::TaskTemplate::Resources::Limits)
3910
+ )
3911
+ end
3912
+ attr_reader :limits
3913
+
3914
+ sig do
3915
+ params(
3916
+ limits:
3917
+ DockerEngine::Spec::TaskTemplate::Resources::Limits::OrHash
3918
+ ).void
3919
+ end
3920
+ attr_writer :limits
3921
+
3922
+ # Tune the service's containers' memory swappiness (0 to 100). If not specified,
3923
+ # defaults to the containers' OS' default, generally 60, or whatever value was
3924
+ # predefined in the image. Set to -1 to unset a previously set value.
3925
+ sig { returns(T.nilable(Integer)) }
3926
+ attr_accessor :memory_swappiness
3927
+
3928
+ # An object describing the resources which can be advertised by a node and
3929
+ # requested by a task.
3930
+ sig do
3931
+ returns(
3932
+ T.nilable(
3933
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations
3934
+ )
3935
+ )
3936
+ end
3937
+ attr_reader :reservations
3938
+
3939
+ sig do
3940
+ params(
3941
+ reservations:
3942
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::OrHash
3943
+ ).void
3944
+ end
3945
+ attr_writer :reservations
3946
+
3947
+ # Amount of swap in bytes - can only be used together with a memory limit. If not
3948
+ # specified, the default behaviour is to grant a swap space twice as big as the
3949
+ # memory limit. Set to -1 to enable unlimited swap.
3950
+ sig { returns(T.nilable(Integer)) }
3951
+ attr_accessor :swap_bytes
3952
+
3953
+ # Resource requirements which apply to each individual container created as part
3954
+ # of the service.
3955
+ sig do
3956
+ params(
3957
+ limits:
3958
+ DockerEngine::Spec::TaskTemplate::Resources::Limits::OrHash,
3959
+ memory_swappiness: T.nilable(Integer),
3960
+ reservations:
3961
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::OrHash,
3962
+ swap_bytes: T.nilable(Integer)
3963
+ ).returns(T.attached_class)
3964
+ end
3965
+ def self.new(
3966
+ # An object describing a limit on resources which can be requested by a task.
3967
+ limits: nil,
3968
+ # Tune the service's containers' memory swappiness (0 to 100). If not specified,
3969
+ # defaults to the containers' OS' default, generally 60, or whatever value was
3970
+ # predefined in the image. Set to -1 to unset a previously set value.
3971
+ memory_swappiness: nil,
3972
+ # An object describing the resources which can be advertised by a node and
3973
+ # requested by a task.
3974
+ reservations: nil,
3975
+ # Amount of swap in bytes - can only be used together with a memory limit. If not
3976
+ # specified, the default behaviour is to grant a swap space twice as big as the
3977
+ # memory limit. Set to -1 to enable unlimited swap.
3978
+ swap_bytes: nil
3979
+ )
3980
+ end
3981
+
3982
+ sig do
3983
+ override.returns(
3984
+ {
3985
+ limits: DockerEngine::Spec::TaskTemplate::Resources::Limits,
3986
+ memory_swappiness: T.nilable(Integer),
3987
+ reservations:
3988
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations,
3989
+ swap_bytes: T.nilable(Integer)
3990
+ }
3991
+ )
3992
+ end
3993
+ def to_hash
3994
+ end
3995
+
3996
+ class Limits < DockerEngine::Internal::Type::BaseModel
3997
+ OrHash =
3998
+ T.type_alias do
3999
+ T.any(
4000
+ DockerEngine::Spec::TaskTemplate::Resources::Limits,
4001
+ DockerEngine::Internal::AnyHash
4002
+ )
4003
+ end
4004
+
4005
+ sig { returns(T.nilable(Integer)) }
4006
+ attr_reader :memory_bytes
4007
+
4008
+ sig { params(memory_bytes: Integer).void }
4009
+ attr_writer :memory_bytes
4010
+
4011
+ sig { returns(T.nilable(Integer)) }
4012
+ attr_reader :nano_cpus
4013
+
4014
+ sig { params(nano_cpus: Integer).void }
4015
+ attr_writer :nano_cpus
4016
+
4017
+ # Limits the maximum number of PIDs in the container. Set `0` for unlimited.
4018
+ sig { returns(T.nilable(Integer)) }
4019
+ attr_reader :pids
4020
+
4021
+ sig { params(pids: Integer).void }
4022
+ attr_writer :pids
4023
+
4024
+ # An object describing a limit on resources which can be requested by a task.
4025
+ sig do
4026
+ params(
4027
+ memory_bytes: Integer,
4028
+ nano_cpus: Integer,
4029
+ pids: Integer
4030
+ ).returns(T.attached_class)
4031
+ end
4032
+ def self.new(
4033
+ memory_bytes: nil,
4034
+ nano_cpus: nil,
4035
+ # Limits the maximum number of PIDs in the container. Set `0` for unlimited.
4036
+ pids: nil
4037
+ )
4038
+ end
4039
+
4040
+ sig do
4041
+ override.returns(
4042
+ { memory_bytes: Integer, nano_cpus: Integer, pids: Integer }
4043
+ )
4044
+ end
4045
+ def to_hash
4046
+ end
4047
+ end
4048
+
4049
+ class Reservations < DockerEngine::Internal::Type::BaseModel
4050
+ OrHash =
4051
+ T.type_alias do
4052
+ T.any(
4053
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations,
4054
+ DockerEngine::Internal::AnyHash
4055
+ )
4056
+ end
4057
+
4058
+ # User-defined resources can be either Integer resources (e.g, `SSD=3`) or String
4059
+ # resources (e.g, `GPU=UUID1`).
4060
+ sig do
4061
+ returns(
4062
+ T.nilable(
4063
+ T::Array[
4064
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource
4065
+ ]
4066
+ )
4067
+ )
4068
+ end
4069
+ attr_reader :generic_resources
4070
+
4071
+ sig do
4072
+ params(
4073
+ generic_resources:
4074
+ T::Array[
4075
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::OrHash
4076
+ ]
4077
+ ).void
4078
+ end
4079
+ attr_writer :generic_resources
4080
+
4081
+ sig { returns(T.nilable(Integer)) }
4082
+ attr_reader :memory_bytes
4083
+
4084
+ sig { params(memory_bytes: Integer).void }
4085
+ attr_writer :memory_bytes
4086
+
4087
+ sig { returns(T.nilable(Integer)) }
4088
+ attr_reader :nano_cpus
4089
+
4090
+ sig { params(nano_cpus: Integer).void }
4091
+ attr_writer :nano_cpus
4092
+
4093
+ # An object describing the resources which can be advertised by a node and
4094
+ # requested by a task.
4095
+ sig do
4096
+ params(
4097
+ generic_resources:
4098
+ T::Array[
4099
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::OrHash
4100
+ ],
4101
+ memory_bytes: Integer,
4102
+ nano_cpus: Integer
4103
+ ).returns(T.attached_class)
4104
+ end
4105
+ def self.new(
4106
+ # User-defined resources can be either Integer resources (e.g, `SSD=3`) or String
4107
+ # resources (e.g, `GPU=UUID1`).
4108
+ generic_resources: nil,
4109
+ memory_bytes: nil,
4110
+ nano_cpus: nil
4111
+ )
4112
+ end
4113
+
4114
+ sig do
4115
+ override.returns(
4116
+ {
4117
+ generic_resources:
4118
+ T::Array[
4119
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource
4120
+ ],
4121
+ memory_bytes: Integer,
4122
+ nano_cpus: Integer
4123
+ }
4124
+ )
4125
+ end
4126
+ def to_hash
4127
+ end
4128
+
4129
+ class GenericResource < DockerEngine::Internal::Type::BaseModel
4130
+ OrHash =
4131
+ T.type_alias do
4132
+ T.any(
4133
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource,
4134
+ DockerEngine::Internal::AnyHash
4135
+ )
4136
+ end
4137
+
4138
+ sig do
4139
+ returns(
4140
+ T.nilable(
4141
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::DiscreteResourceSpec
4142
+ )
4143
+ )
4144
+ end
4145
+ attr_reader :discrete_resource_spec
4146
+
4147
+ sig do
4148
+ params(
4149
+ discrete_resource_spec:
4150
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::DiscreteResourceSpec::OrHash
4151
+ ).void
4152
+ end
4153
+ attr_writer :discrete_resource_spec
4154
+
4155
+ sig do
4156
+ returns(
4157
+ T.nilable(
4158
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::NamedResourceSpec
4159
+ )
4160
+ )
4161
+ end
4162
+ attr_reader :named_resource_spec
4163
+
4164
+ sig do
4165
+ params(
4166
+ named_resource_spec:
4167
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::NamedResourceSpec::OrHash
4168
+ ).void
4169
+ end
4170
+ attr_writer :named_resource_spec
4171
+
4172
+ sig do
4173
+ params(
4174
+ discrete_resource_spec:
4175
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::DiscreteResourceSpec::OrHash,
4176
+ named_resource_spec:
4177
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::NamedResourceSpec::OrHash
4178
+ ).returns(T.attached_class)
4179
+ end
4180
+ def self.new(
4181
+ discrete_resource_spec: nil,
4182
+ named_resource_spec: nil
4183
+ )
4184
+ end
4185
+
4186
+ sig do
4187
+ override.returns(
4188
+ {
4189
+ discrete_resource_spec:
4190
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::DiscreteResourceSpec,
4191
+ named_resource_spec:
4192
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::NamedResourceSpec
4193
+ }
4194
+ )
4195
+ end
4196
+ def to_hash
4197
+ end
4198
+
4199
+ class DiscreteResourceSpec < DockerEngine::Internal::Type::BaseModel
4200
+ OrHash =
4201
+ T.type_alias do
4202
+ T.any(
4203
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::DiscreteResourceSpec,
4204
+ DockerEngine::Internal::AnyHash
4205
+ )
4206
+ end
4207
+
4208
+ sig { returns(T.nilable(String)) }
4209
+ attr_reader :kind
4210
+
4211
+ sig { params(kind: String).void }
4212
+ attr_writer :kind
4213
+
4214
+ sig { returns(T.nilable(Integer)) }
4215
+ attr_reader :value
4216
+
4217
+ sig { params(value: Integer).void }
4218
+ attr_writer :value
4219
+
4220
+ sig do
4221
+ params(kind: String, value: Integer).returns(T.attached_class)
4222
+ end
4223
+ def self.new(kind: nil, value: nil)
4224
+ end
4225
+
4226
+ sig { override.returns({ kind: String, value: Integer }) }
4227
+ def to_hash
4228
+ end
4229
+ end
4230
+
4231
+ class NamedResourceSpec < DockerEngine::Internal::Type::BaseModel
4232
+ OrHash =
4233
+ T.type_alias do
4234
+ T.any(
4235
+ DockerEngine::Spec::TaskTemplate::Resources::Reservations::GenericResource::NamedResourceSpec,
4236
+ DockerEngine::Internal::AnyHash
4237
+ )
4238
+ end
4239
+
4240
+ sig { returns(T.nilable(String)) }
4241
+ attr_reader :kind
4242
+
4243
+ sig { params(kind: String).void }
4244
+ attr_writer :kind
4245
+
4246
+ sig { returns(T.nilable(String)) }
4247
+ attr_reader :value
4248
+
4249
+ sig { params(value: String).void }
4250
+ attr_writer :value
4251
+
4252
+ sig do
4253
+ params(kind: String, value: String).returns(T.attached_class)
4254
+ end
4255
+ def self.new(kind: nil, value: nil)
4256
+ end
4257
+
4258
+ sig { override.returns({ kind: String, value: String }) }
4259
+ def to_hash
4260
+ end
4261
+ end
4262
+ end
4263
+ end
4264
+ end
4265
+
4266
+ class RestartPolicy < DockerEngine::Internal::Type::BaseModel
4267
+ OrHash =
4268
+ T.type_alias do
4269
+ T.any(
4270
+ DockerEngine::Spec::TaskTemplate::RestartPolicy,
4271
+ DockerEngine::Internal::AnyHash
4272
+ )
4273
+ end
4274
+
4275
+ # Condition for restart.
4276
+ sig do
4277
+ returns(
4278
+ T.nilable(
4279
+ DockerEngine::Spec::TaskTemplate::RestartPolicy::Condition::OrSymbol
4280
+ )
4281
+ )
4282
+ end
4283
+ attr_reader :condition
4284
+
4285
+ sig do
4286
+ params(
4287
+ condition:
4288
+ DockerEngine::Spec::TaskTemplate::RestartPolicy::Condition::OrSymbol
4289
+ ).void
4290
+ end
4291
+ attr_writer :condition
4292
+
4293
+ # Delay between restart attempts.
4294
+ sig { returns(T.nilable(Integer)) }
4295
+ attr_reader :delay
4296
+
4297
+ sig { params(delay: Integer).void }
4298
+ attr_writer :delay
4299
+
4300
+ # Maximum attempts to restart a given container before giving up (default value is
4301
+ # 0, which is ignored).
4302
+ sig { returns(T.nilable(Integer)) }
4303
+ attr_reader :max_attempts
4304
+
4305
+ sig { params(max_attempts: Integer).void }
4306
+ attr_writer :max_attempts
4307
+
4308
+ # Windows is the time window used to evaluate the restart policy (default value is
4309
+ # 0, which is unbounded).
4310
+ sig { returns(T.nilable(Integer)) }
4311
+ attr_reader :window
4312
+
4313
+ sig { params(window: Integer).void }
4314
+ attr_writer :window
4315
+
4316
+ # Specification for the restart policy which applies to containers created as part
4317
+ # of this service.
4318
+ sig do
4319
+ params(
4320
+ condition:
4321
+ DockerEngine::Spec::TaskTemplate::RestartPolicy::Condition::OrSymbol,
4322
+ delay: Integer,
4323
+ max_attempts: Integer,
4324
+ window: Integer
4325
+ ).returns(T.attached_class)
4326
+ end
4327
+ def self.new(
4328
+ # Condition for restart.
4329
+ condition: nil,
4330
+ # Delay between restart attempts.
4331
+ delay: nil,
4332
+ # Maximum attempts to restart a given container before giving up (default value is
4333
+ # 0, which is ignored).
4334
+ max_attempts: nil,
4335
+ # Windows is the time window used to evaluate the restart policy (default value is
4336
+ # 0, which is unbounded).
4337
+ window: nil
4338
+ )
4339
+ end
4340
+
4341
+ sig do
4342
+ override.returns(
4343
+ {
4344
+ condition:
4345
+ DockerEngine::Spec::TaskTemplate::RestartPolicy::Condition::OrSymbol,
4346
+ delay: Integer,
4347
+ max_attempts: Integer,
4348
+ window: Integer
4349
+ }
4350
+ )
4351
+ end
4352
+ def to_hash
4353
+ end
4354
+
4355
+ # Condition for restart.
4356
+ module Condition
4357
+ extend DockerEngine::Internal::Type::Enum
4358
+
4359
+ TaggedSymbol =
4360
+ T.type_alias do
4361
+ T.all(
4362
+ Symbol,
4363
+ DockerEngine::Spec::TaskTemplate::RestartPolicy::Condition
4364
+ )
4365
+ end
4366
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
4367
+
4368
+ NONE =
4369
+ T.let(
4370
+ :none,
4371
+ DockerEngine::Spec::TaskTemplate::RestartPolicy::Condition::TaggedSymbol
4372
+ )
4373
+ ON_FAILURE =
4374
+ T.let(
4375
+ :"on-failure",
4376
+ DockerEngine::Spec::TaskTemplate::RestartPolicy::Condition::TaggedSymbol
4377
+ )
4378
+ ANY =
4379
+ T.let(
4380
+ :any,
4381
+ DockerEngine::Spec::TaskTemplate::RestartPolicy::Condition::TaggedSymbol
4382
+ )
4383
+
4384
+ sig do
4385
+ override.returns(
4386
+ T::Array[
4387
+ DockerEngine::Spec::TaskTemplate::RestartPolicy::Condition::TaggedSymbol
4388
+ ]
4389
+ )
4390
+ end
4391
+ def self.values
4392
+ end
4393
+ end
4394
+ end
4395
+ end
4396
+
4397
+ class UpdateConfig < DockerEngine::Internal::Type::BaseModel
4398
+ OrHash =
4399
+ T.type_alias do
4400
+ T.any(
4401
+ DockerEngine::Spec::UpdateConfig,
4402
+ DockerEngine::Internal::AnyHash
4403
+ )
4404
+ end
4405
+
4406
+ # Amount of time between updates, in nanoseconds.
4407
+ sig { returns(T.nilable(Integer)) }
4408
+ attr_reader :delay
4409
+
4410
+ sig { params(delay: Integer).void }
4411
+ attr_writer :delay
4412
+
4413
+ # Action to take if an updated task fails to run, or stops running during the
4414
+ # update.
4415
+ sig do
4416
+ returns(
4417
+ T.nilable(DockerEngine::Spec::UpdateConfig::FailureAction::OrSymbol)
4418
+ )
4419
+ end
4420
+ attr_reader :failure_action
4421
+
4422
+ sig do
4423
+ params(
4424
+ failure_action:
4425
+ DockerEngine::Spec::UpdateConfig::FailureAction::OrSymbol
4426
+ ).void
4427
+ end
4428
+ attr_writer :failure_action
4429
+
4430
+ # The fraction of tasks that may fail during an update before the failure action
4431
+ # is invoked, specified as a floating point number between 0 and 1.
4432
+ sig { returns(T.nilable(Float)) }
4433
+ attr_reader :max_failure_ratio
4434
+
4435
+ sig { params(max_failure_ratio: Float).void }
4436
+ attr_writer :max_failure_ratio
4437
+
4438
+ # Amount of time to monitor each updated task for failures, in nanoseconds.
4439
+ sig { returns(T.nilable(Integer)) }
4440
+ attr_reader :monitor
4441
+
4442
+ sig { params(monitor: Integer).void }
4443
+ attr_writer :monitor
4444
+
4445
+ # The order of operations when rolling out an updated task. Either the old task is
4446
+ # shut down before the new task is started, or the new task is started before the
4447
+ # old task is shut down.
4448
+ sig do
4449
+ returns(T.nilable(DockerEngine::Spec::UpdateConfig::Order::OrSymbol))
4450
+ end
4451
+ attr_reader :order
4452
+
4453
+ sig do
4454
+ params(order: DockerEngine::Spec::UpdateConfig::Order::OrSymbol).void
4455
+ end
4456
+ attr_writer :order
4457
+
4458
+ # Maximum number of tasks to be updated in one iteration (0 means unlimited
4459
+ # parallelism).
4460
+ sig { returns(T.nilable(Integer)) }
4461
+ attr_reader :parallelism
4462
+
4463
+ sig { params(parallelism: Integer).void }
4464
+ attr_writer :parallelism
4465
+
4466
+ # Specification for the update strategy of the service.
4467
+ sig do
4468
+ params(
4469
+ delay: Integer,
4470
+ failure_action:
4471
+ DockerEngine::Spec::UpdateConfig::FailureAction::OrSymbol,
4472
+ max_failure_ratio: Float,
4473
+ monitor: Integer,
4474
+ order: DockerEngine::Spec::UpdateConfig::Order::OrSymbol,
4475
+ parallelism: Integer
4476
+ ).returns(T.attached_class)
4477
+ end
4478
+ def self.new(
4479
+ # Amount of time between updates, in nanoseconds.
4480
+ delay: nil,
4481
+ # Action to take if an updated task fails to run, or stops running during the
4482
+ # update.
4483
+ failure_action: nil,
4484
+ # The fraction of tasks that may fail during an update before the failure action
4485
+ # is invoked, specified as a floating point number between 0 and 1.
4486
+ max_failure_ratio: nil,
4487
+ # Amount of time to monitor each updated task for failures, in nanoseconds.
4488
+ monitor: nil,
4489
+ # The order of operations when rolling out an updated task. Either the old task is
4490
+ # shut down before the new task is started, or the new task is started before the
4491
+ # old task is shut down.
4492
+ order: nil,
4493
+ # Maximum number of tasks to be updated in one iteration (0 means unlimited
4494
+ # parallelism).
4495
+ parallelism: nil
4496
+ )
4497
+ end
4498
+
4499
+ sig do
4500
+ override.returns(
4501
+ {
4502
+ delay: Integer,
4503
+ failure_action:
4504
+ DockerEngine::Spec::UpdateConfig::FailureAction::OrSymbol,
4505
+ max_failure_ratio: Float,
4506
+ monitor: Integer,
4507
+ order: DockerEngine::Spec::UpdateConfig::Order::OrSymbol,
4508
+ parallelism: Integer
4509
+ }
4510
+ )
4511
+ end
4512
+ def to_hash
4513
+ end
4514
+
4515
+ # Action to take if an updated task fails to run, or stops running during the
4516
+ # update.
4517
+ module FailureAction
4518
+ extend DockerEngine::Internal::Type::Enum
4519
+
4520
+ TaggedSymbol =
4521
+ T.type_alias do
4522
+ T.all(Symbol, DockerEngine::Spec::UpdateConfig::FailureAction)
4523
+ end
4524
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
4525
+
4526
+ CONTINUE =
4527
+ T.let(
4528
+ :continue,
4529
+ DockerEngine::Spec::UpdateConfig::FailureAction::TaggedSymbol
4530
+ )
4531
+ PAUSE =
4532
+ T.let(
4533
+ :pause,
4534
+ DockerEngine::Spec::UpdateConfig::FailureAction::TaggedSymbol
4535
+ )
4536
+ ROLLBACK =
4537
+ T.let(
4538
+ :rollback,
4539
+ DockerEngine::Spec::UpdateConfig::FailureAction::TaggedSymbol
4540
+ )
4541
+
4542
+ sig do
4543
+ override.returns(
4544
+ T::Array[
4545
+ DockerEngine::Spec::UpdateConfig::FailureAction::TaggedSymbol
4546
+ ]
4547
+ )
4548
+ end
4549
+ def self.values
4550
+ end
4551
+ end
4552
+
4553
+ # The order of operations when rolling out an updated task. Either the old task is
4554
+ # shut down before the new task is started, or the new task is started before the
4555
+ # old task is shut down.
4556
+ module Order
4557
+ extend DockerEngine::Internal::Type::Enum
4558
+
4559
+ TaggedSymbol =
4560
+ T.type_alias do
4561
+ T.all(Symbol, DockerEngine::Spec::UpdateConfig::Order)
4562
+ end
4563
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
4564
+
4565
+ STOP_FIRST =
4566
+ T.let(
4567
+ :"stop-first",
4568
+ DockerEngine::Spec::UpdateConfig::Order::TaggedSymbol
4569
+ )
4570
+ START_FIRST =
4571
+ T.let(
4572
+ :"start-first",
4573
+ DockerEngine::Spec::UpdateConfig::Order::TaggedSymbol
4574
+ )
4575
+
4576
+ sig do
4577
+ override.returns(
4578
+ T::Array[DockerEngine::Spec::UpdateConfig::Order::TaggedSymbol]
4579
+ )
4580
+ end
4581
+ def self.values
4582
+ end
4583
+ end
4584
+ end
4585
+ end
4586
+ end
4587
+ end