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,1218 @@
1
+ # typed: strong
2
+
3
+ module DockerEngine
4
+ module Models
5
+ class Volume < DockerEngine::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(DockerEngine::Volume, DockerEngine::Internal::AnyHash)
9
+ end
10
+
11
+ # Name of the volume driver used by the volume.
12
+ sig { returns(String) }
13
+ attr_accessor :driver
14
+
15
+ # User-defined key/value metadata.
16
+ sig { returns(T::Hash[Symbol, String]) }
17
+ attr_accessor :labels
18
+
19
+ # Mount path of the volume on the host.
20
+ sig { returns(String) }
21
+ attr_accessor :mountpoint
22
+
23
+ # Name of the volume.
24
+ sig { returns(String) }
25
+ attr_accessor :name
26
+
27
+ # The driver specific options used when creating the volume.
28
+ sig { returns(T::Hash[Symbol, String]) }
29
+ attr_accessor :options
30
+
31
+ # The level at which the volume exists. Either `global` for cluster-wide, or
32
+ # `local` for machine level.
33
+ sig { returns(DockerEngine::Volume::Scope::TaggedSymbol) }
34
+ attr_accessor :scope
35
+
36
+ # Options and information specific to, and only present on, Swarm CSI cluster
37
+ # volumes.
38
+ sig { returns(T.nilable(DockerEngine::Volume::ClusterVolume)) }
39
+ attr_reader :cluster_volume
40
+
41
+ sig do
42
+ params(cluster_volume: DockerEngine::Volume::ClusterVolume::OrHash).void
43
+ end
44
+ attr_writer :cluster_volume
45
+
46
+ # Date/Time the volume was created.
47
+ sig { returns(T.nilable(String)) }
48
+ attr_reader :created_at
49
+
50
+ sig { params(created_at: String).void }
51
+ attr_writer :created_at
52
+
53
+ # Low-level details about the volume, provided by the volume driver. Details are
54
+ # returned as a map with key/value pairs: `{"key":"value","key2":"value2"}`.
55
+ #
56
+ # The `Status` field is optional, and is omitted if the volume driver does not
57
+ # support this feature.
58
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
59
+ attr_reader :status
60
+
61
+ sig { params(status: T::Hash[Symbol, T.anything]).void }
62
+ attr_writer :status
63
+
64
+ # Usage details about the volume. This information is used by the `GET /system/df`
65
+ # endpoint, and omitted in other endpoints.
66
+ sig { returns(T.nilable(DockerEngine::Volume::UsageData)) }
67
+ attr_reader :usage_data
68
+
69
+ sig do
70
+ params(
71
+ usage_data: T.nilable(DockerEngine::Volume::UsageData::OrHash)
72
+ ).void
73
+ end
74
+ attr_writer :usage_data
75
+
76
+ sig do
77
+ params(
78
+ driver: String,
79
+ labels: T::Hash[Symbol, String],
80
+ mountpoint: String,
81
+ name: String,
82
+ options: T::Hash[Symbol, String],
83
+ scope: DockerEngine::Volume::Scope::OrSymbol,
84
+ cluster_volume: DockerEngine::Volume::ClusterVolume::OrHash,
85
+ created_at: String,
86
+ status: T::Hash[Symbol, T.anything],
87
+ usage_data: T.nilable(DockerEngine::Volume::UsageData::OrHash)
88
+ ).returns(T.attached_class)
89
+ end
90
+ def self.new(
91
+ # Name of the volume driver used by the volume.
92
+ driver:,
93
+ # User-defined key/value metadata.
94
+ labels:,
95
+ # Mount path of the volume on the host.
96
+ mountpoint:,
97
+ # Name of the volume.
98
+ name:,
99
+ # The driver specific options used when creating the volume.
100
+ options:,
101
+ # The level at which the volume exists. Either `global` for cluster-wide, or
102
+ # `local` for machine level.
103
+ scope:,
104
+ # Options and information specific to, and only present on, Swarm CSI cluster
105
+ # volumes.
106
+ cluster_volume: nil,
107
+ # Date/Time the volume was created.
108
+ created_at: nil,
109
+ # Low-level details about the volume, provided by the volume driver. Details are
110
+ # returned as a map with key/value pairs: `{"key":"value","key2":"value2"}`.
111
+ #
112
+ # The `Status` field is optional, and is omitted if the volume driver does not
113
+ # support this feature.
114
+ status: nil,
115
+ # Usage details about the volume. This information is used by the `GET /system/df`
116
+ # endpoint, and omitted in other endpoints.
117
+ usage_data: nil
118
+ )
119
+ end
120
+
121
+ sig do
122
+ override.returns(
123
+ {
124
+ driver: String,
125
+ labels: T::Hash[Symbol, String],
126
+ mountpoint: String,
127
+ name: String,
128
+ options: T::Hash[Symbol, String],
129
+ scope: DockerEngine::Volume::Scope::TaggedSymbol,
130
+ cluster_volume: DockerEngine::Volume::ClusterVolume,
131
+ created_at: String,
132
+ status: T::Hash[Symbol, T.anything],
133
+ usage_data: T.nilable(DockerEngine::Volume::UsageData)
134
+ }
135
+ )
136
+ end
137
+ def to_hash
138
+ end
139
+
140
+ # The level at which the volume exists. Either `global` for cluster-wide, or
141
+ # `local` for machine level.
142
+ module Scope
143
+ extend DockerEngine::Internal::Type::Enum
144
+
145
+ TaggedSymbol =
146
+ T.type_alias { T.all(Symbol, DockerEngine::Volume::Scope) }
147
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
148
+
149
+ LOCAL = T.let(:local, DockerEngine::Volume::Scope::TaggedSymbol)
150
+ GLOBAL = T.let(:global, DockerEngine::Volume::Scope::TaggedSymbol)
151
+
152
+ sig do
153
+ override.returns(T::Array[DockerEngine::Volume::Scope::TaggedSymbol])
154
+ end
155
+ def self.values
156
+ end
157
+ end
158
+
159
+ class ClusterVolume < DockerEngine::Internal::Type::BaseModel
160
+ OrHash =
161
+ T.type_alias do
162
+ T.any(
163
+ DockerEngine::Volume::ClusterVolume,
164
+ DockerEngine::Internal::AnyHash
165
+ )
166
+ end
167
+
168
+ sig { returns(T.nilable(String)) }
169
+ attr_reader :created_at
170
+
171
+ sig { params(created_at: String).void }
172
+ attr_writer :created_at
173
+
174
+ # The Swarm ID of this volume. Because cluster volumes are Swarm objects, they
175
+ # have an ID, unlike non-cluster volumes. This ID can be used to refer to the
176
+ # Volume instead of the name.
177
+ sig { returns(T.nilable(String)) }
178
+ attr_reader :id
179
+
180
+ sig { params(id: String).void }
181
+ attr_writer :id
182
+
183
+ # Information about the global status of the volume.
184
+ sig { returns(T.nilable(DockerEngine::Volume::ClusterVolume::Info)) }
185
+ attr_reader :info
186
+
187
+ sig do
188
+ params(info: DockerEngine::Volume::ClusterVolume::Info::OrHash).void
189
+ end
190
+ attr_writer :info
191
+
192
+ # The status of the volume as it pertains to its publishing and use on specific
193
+ # nodes
194
+ sig do
195
+ returns(
196
+ T.nilable(
197
+ T::Array[DockerEngine::Volume::ClusterVolume::PublishStatus]
198
+ )
199
+ )
200
+ end
201
+ attr_reader :publish_status
202
+
203
+ sig do
204
+ params(
205
+ publish_status:
206
+ T::Array[
207
+ DockerEngine::Volume::ClusterVolume::PublishStatus::OrHash
208
+ ]
209
+ ).void
210
+ end
211
+ attr_writer :publish_status
212
+
213
+ # Cluster-specific options used to create the volume.
214
+ sig { returns(T.nilable(DockerEngine::Volume::ClusterVolume::Spec)) }
215
+ attr_reader :spec
216
+
217
+ sig do
218
+ params(spec: DockerEngine::Volume::ClusterVolume::Spec::OrHash).void
219
+ end
220
+ attr_writer :spec
221
+
222
+ sig { returns(T.nilable(String)) }
223
+ attr_reader :updated_at
224
+
225
+ sig { params(updated_at: String).void }
226
+ attr_writer :updated_at
227
+
228
+ # The version number of the object such as node, service, etc. This is needed to
229
+ # avoid conflicting writes. The client must send the version number along with the
230
+ # modified specification when updating these objects.
231
+ #
232
+ # This approach ensures safe concurrency and determinism in that the change on the
233
+ # object may not be applied if the version number has changed from the last read.
234
+ # In other words, if two update requests specify the same base version, only one
235
+ # of the requests can succeed. As a result, two separate update requests that
236
+ # happen at the same time will not unintentionally overwrite each other.
237
+ sig { returns(T.nilable(DockerEngine::Volume::ClusterVolume::Version)) }
238
+ attr_reader :version
239
+
240
+ sig do
241
+ params(
242
+ version: DockerEngine::Volume::ClusterVolume::Version::OrHash
243
+ ).void
244
+ end
245
+ attr_writer :version
246
+
247
+ # Options and information specific to, and only present on, Swarm CSI cluster
248
+ # volumes.
249
+ sig do
250
+ params(
251
+ created_at: String,
252
+ id: String,
253
+ info: DockerEngine::Volume::ClusterVolume::Info::OrHash,
254
+ publish_status:
255
+ T::Array[
256
+ DockerEngine::Volume::ClusterVolume::PublishStatus::OrHash
257
+ ],
258
+ spec: DockerEngine::Volume::ClusterVolume::Spec::OrHash,
259
+ updated_at: String,
260
+ version: DockerEngine::Volume::ClusterVolume::Version::OrHash
261
+ ).returns(T.attached_class)
262
+ end
263
+ def self.new(
264
+ created_at: nil,
265
+ # The Swarm ID of this volume. Because cluster volumes are Swarm objects, they
266
+ # have an ID, unlike non-cluster volumes. This ID can be used to refer to the
267
+ # Volume instead of the name.
268
+ id: nil,
269
+ # Information about the global status of the volume.
270
+ info: nil,
271
+ # The status of the volume as it pertains to its publishing and use on specific
272
+ # nodes
273
+ publish_status: nil,
274
+ # Cluster-specific options used to create the volume.
275
+ spec: nil,
276
+ updated_at: nil,
277
+ # The version number of the object such as node, service, etc. This is needed to
278
+ # avoid conflicting writes. The client must send the version number along with the
279
+ # modified specification when updating these objects.
280
+ #
281
+ # This approach ensures safe concurrency and determinism in that the change on the
282
+ # object may not be applied if the version number has changed from the last read.
283
+ # In other words, if two update requests specify the same base version, only one
284
+ # of the requests can succeed. As a result, two separate update requests that
285
+ # happen at the same time will not unintentionally overwrite each other.
286
+ version: nil
287
+ )
288
+ end
289
+
290
+ sig do
291
+ override.returns(
292
+ {
293
+ created_at: String,
294
+ id: String,
295
+ info: DockerEngine::Volume::ClusterVolume::Info,
296
+ publish_status:
297
+ T::Array[DockerEngine::Volume::ClusterVolume::PublishStatus],
298
+ spec: DockerEngine::Volume::ClusterVolume::Spec,
299
+ updated_at: String,
300
+ version: DockerEngine::Volume::ClusterVolume::Version
301
+ }
302
+ )
303
+ end
304
+ def to_hash
305
+ end
306
+
307
+ class Info < DockerEngine::Internal::Type::BaseModel
308
+ OrHash =
309
+ T.type_alias do
310
+ T.any(
311
+ DockerEngine::Volume::ClusterVolume::Info,
312
+ DockerEngine::Internal::AnyHash
313
+ )
314
+ end
315
+
316
+ # The topology this volume is actually accessible from.
317
+ sig { returns(T.nilable(T::Array[T::Hash[Symbol, String]])) }
318
+ attr_reader :accessible_topology
319
+
320
+ sig do
321
+ params(accessible_topology: T::Array[T::Hash[Symbol, String]]).void
322
+ end
323
+ attr_writer :accessible_topology
324
+
325
+ # The capacity of the volume in bytes. A value of 0 indicates that the capacity is
326
+ # unknown.
327
+ sig { returns(T.nilable(Integer)) }
328
+ attr_reader :capacity_bytes
329
+
330
+ sig { params(capacity_bytes: Integer).void }
331
+ attr_writer :capacity_bytes
332
+
333
+ # A map of strings to strings returned from the storage plugin when the volume is
334
+ # created.
335
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
336
+ attr_reader :volume_context
337
+
338
+ sig { params(volume_context: T::Hash[Symbol, String]).void }
339
+ attr_writer :volume_context
340
+
341
+ # The ID of the volume as returned by the CSI storage plugin. This is distinct
342
+ # from the volume's ID as provided by Docker. This ID is never used by the user
343
+ # when communicating with Docker to refer to this volume. If the ID is blank, then
344
+ # the Volume has not been successfully created in the plugin yet.
345
+ sig { returns(T.nilable(String)) }
346
+ attr_reader :volume_id
347
+
348
+ sig { params(volume_id: String).void }
349
+ attr_writer :volume_id
350
+
351
+ # Information about the global status of the volume.
352
+ sig do
353
+ params(
354
+ accessible_topology: T::Array[T::Hash[Symbol, String]],
355
+ capacity_bytes: Integer,
356
+ volume_context: T::Hash[Symbol, String],
357
+ volume_id: String
358
+ ).returns(T.attached_class)
359
+ end
360
+ def self.new(
361
+ # The topology this volume is actually accessible from.
362
+ accessible_topology: nil,
363
+ # The capacity of the volume in bytes. A value of 0 indicates that the capacity is
364
+ # unknown.
365
+ capacity_bytes: nil,
366
+ # A map of strings to strings returned from the storage plugin when the volume is
367
+ # created.
368
+ volume_context: nil,
369
+ # The ID of the volume as returned by the CSI storage plugin. This is distinct
370
+ # from the volume's ID as provided by Docker. This ID is never used by the user
371
+ # when communicating with Docker to refer to this volume. If the ID is blank, then
372
+ # the Volume has not been successfully created in the plugin yet.
373
+ volume_id: nil
374
+ )
375
+ end
376
+
377
+ sig do
378
+ override.returns(
379
+ {
380
+ accessible_topology: T::Array[T::Hash[Symbol, String]],
381
+ capacity_bytes: Integer,
382
+ volume_context: T::Hash[Symbol, String],
383
+ volume_id: String
384
+ }
385
+ )
386
+ end
387
+ def to_hash
388
+ end
389
+ end
390
+
391
+ class PublishStatus < DockerEngine::Internal::Type::BaseModel
392
+ OrHash =
393
+ T.type_alias do
394
+ T.any(
395
+ DockerEngine::Volume::ClusterVolume::PublishStatus,
396
+ DockerEngine::Internal::AnyHash
397
+ )
398
+ end
399
+
400
+ # The ID of the Swarm node the volume is published on.
401
+ sig { returns(T.nilable(String)) }
402
+ attr_reader :node_id
403
+
404
+ sig { params(node_id: String).void }
405
+ attr_writer :node_id
406
+
407
+ # A map of strings to strings returned by the CSI controller plugin when a volume
408
+ # is published.
409
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
410
+ attr_reader :publish_context
411
+
412
+ sig { params(publish_context: T::Hash[Symbol, String]).void }
413
+ attr_writer :publish_context
414
+
415
+ # The published state of the volume.
416
+ #
417
+ # - `pending-publish` The volume should be published to this node, but the call to
418
+ # the controller plugin to do so has not yet been successfully completed.
419
+ # - `published` The volume is published successfully to the node.
420
+ # - `pending-node-unpublish` The volume should be unpublished from the node, and
421
+ # the manager is awaiting confirmation from the worker that it has done so.
422
+ # - `pending-controller-unpublish` The volume is successfully unpublished from the
423
+ # node, but has not yet been successfully unpublished on the controller.
424
+ sig do
425
+ returns(
426
+ T.nilable(
427
+ DockerEngine::Volume::ClusterVolume::PublishStatus::State::TaggedSymbol
428
+ )
429
+ )
430
+ end
431
+ attr_reader :state
432
+
433
+ sig do
434
+ params(
435
+ state:
436
+ DockerEngine::Volume::ClusterVolume::PublishStatus::State::OrSymbol
437
+ ).void
438
+ end
439
+ attr_writer :state
440
+
441
+ sig do
442
+ params(
443
+ node_id: String,
444
+ publish_context: T::Hash[Symbol, String],
445
+ state:
446
+ DockerEngine::Volume::ClusterVolume::PublishStatus::State::OrSymbol
447
+ ).returns(T.attached_class)
448
+ end
449
+ def self.new(
450
+ # The ID of the Swarm node the volume is published on.
451
+ node_id: nil,
452
+ # A map of strings to strings returned by the CSI controller plugin when a volume
453
+ # is published.
454
+ publish_context: nil,
455
+ # The published state of the volume.
456
+ #
457
+ # - `pending-publish` The volume should be published to this node, but the call to
458
+ # the controller plugin to do so has not yet been successfully completed.
459
+ # - `published` The volume is published successfully to the node.
460
+ # - `pending-node-unpublish` The volume should be unpublished from the node, and
461
+ # the manager is awaiting confirmation from the worker that it has done so.
462
+ # - `pending-controller-unpublish` The volume is successfully unpublished from the
463
+ # node, but has not yet been successfully unpublished on the controller.
464
+ state: nil
465
+ )
466
+ end
467
+
468
+ sig do
469
+ override.returns(
470
+ {
471
+ node_id: String,
472
+ publish_context: T::Hash[Symbol, String],
473
+ state:
474
+ DockerEngine::Volume::ClusterVolume::PublishStatus::State::TaggedSymbol
475
+ }
476
+ )
477
+ end
478
+ def to_hash
479
+ end
480
+
481
+ # The published state of the volume.
482
+ #
483
+ # - `pending-publish` The volume should be published to this node, but the call to
484
+ # the controller plugin to do so has not yet been successfully completed.
485
+ # - `published` The volume is published successfully to the node.
486
+ # - `pending-node-unpublish` The volume should be unpublished from the node, and
487
+ # the manager is awaiting confirmation from the worker that it has done so.
488
+ # - `pending-controller-unpublish` The volume is successfully unpublished from the
489
+ # node, but has not yet been successfully unpublished on the controller.
490
+ module State
491
+ extend DockerEngine::Internal::Type::Enum
492
+
493
+ TaggedSymbol =
494
+ T.type_alias do
495
+ T.all(
496
+ Symbol,
497
+ DockerEngine::Volume::ClusterVolume::PublishStatus::State
498
+ )
499
+ end
500
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
501
+
502
+ PENDING_PUBLISH =
503
+ T.let(
504
+ :"pending-publish",
505
+ DockerEngine::Volume::ClusterVolume::PublishStatus::State::TaggedSymbol
506
+ )
507
+ PUBLISHED =
508
+ T.let(
509
+ :published,
510
+ DockerEngine::Volume::ClusterVolume::PublishStatus::State::TaggedSymbol
511
+ )
512
+ PENDING_NODE_UNPUBLISH =
513
+ T.let(
514
+ :"pending-node-unpublish",
515
+ DockerEngine::Volume::ClusterVolume::PublishStatus::State::TaggedSymbol
516
+ )
517
+ PENDING_CONTROLLER_UNPUBLISH =
518
+ T.let(
519
+ :"pending-controller-unpublish",
520
+ DockerEngine::Volume::ClusterVolume::PublishStatus::State::TaggedSymbol
521
+ )
522
+
523
+ sig do
524
+ override.returns(
525
+ T::Array[
526
+ DockerEngine::Volume::ClusterVolume::PublishStatus::State::TaggedSymbol
527
+ ]
528
+ )
529
+ end
530
+ def self.values
531
+ end
532
+ end
533
+ end
534
+
535
+ class Spec < DockerEngine::Internal::Type::BaseModel
536
+ OrHash =
537
+ T.type_alias do
538
+ T.any(
539
+ DockerEngine::Volume::ClusterVolume::Spec,
540
+ DockerEngine::Internal::AnyHash
541
+ )
542
+ end
543
+
544
+ # Defines how the volume is used by tasks.
545
+ sig do
546
+ returns(
547
+ T.nilable(DockerEngine::Volume::ClusterVolume::Spec::AccessMode)
548
+ )
549
+ end
550
+ attr_reader :access_mode
551
+
552
+ sig do
553
+ params(
554
+ access_mode:
555
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::OrHash
556
+ ).void
557
+ end
558
+ attr_writer :access_mode
559
+
560
+ # Group defines the volume group of this volume. Volumes belonging to the same
561
+ # group can be referred to by group name when creating Services. Referring to a
562
+ # volume by group instructs Swarm to treat volumes in that group interchangeably
563
+ # for the purpose of scheduling. Volumes with an empty string for a group
564
+ # technically all belong to the same, emptystring group.
565
+ sig { returns(T.nilable(String)) }
566
+ attr_reader :group
567
+
568
+ sig { params(group: String).void }
569
+ attr_writer :group
570
+
571
+ # Cluster-specific options used to create the volume.
572
+ sig do
573
+ params(
574
+ access_mode:
575
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::OrHash,
576
+ group: String
577
+ ).returns(T.attached_class)
578
+ end
579
+ def self.new(
580
+ # Defines how the volume is used by tasks.
581
+ access_mode: nil,
582
+ # Group defines the volume group of this volume. Volumes belonging to the same
583
+ # group can be referred to by group name when creating Services. Referring to a
584
+ # volume by group instructs Swarm to treat volumes in that group interchangeably
585
+ # for the purpose of scheduling. Volumes with an empty string for a group
586
+ # technically all belong to the same, emptystring group.
587
+ group: nil
588
+ )
589
+ end
590
+
591
+ sig do
592
+ override.returns(
593
+ {
594
+ access_mode:
595
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode,
596
+ group: String
597
+ }
598
+ )
599
+ end
600
+ def to_hash
601
+ end
602
+
603
+ class AccessMode < DockerEngine::Internal::Type::BaseModel
604
+ OrHash =
605
+ T.type_alias do
606
+ T.any(
607
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode,
608
+ DockerEngine::Internal::AnyHash
609
+ )
610
+ end
611
+
612
+ # Requirements for the accessible topology of the volume. These fields are
613
+ # optional. For an in-depth description of what these fields mean, see the CSI
614
+ # specification.
615
+ sig do
616
+ returns(
617
+ T.nilable(
618
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::AccessibilityRequirements
619
+ )
620
+ )
621
+ end
622
+ attr_reader :accessibility_requirements
623
+
624
+ sig do
625
+ params(
626
+ accessibility_requirements:
627
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::AccessibilityRequirements::OrHash
628
+ ).void
629
+ end
630
+ attr_writer :accessibility_requirements
631
+
632
+ # The availability of the volume for use in tasks.
633
+ #
634
+ # - `active` The volume is fully available for scheduling on the cluster
635
+ # - `pause` No new workloads should use the volume, but existing workloads are not
636
+ # stopped.
637
+ # - `drain` All workloads using this volume should be stopped and rescheduled, and
638
+ # no new ones should be started.
639
+ sig do
640
+ returns(
641
+ T.nilable(
642
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Availability::TaggedSymbol
643
+ )
644
+ )
645
+ end
646
+ attr_reader :availability
647
+
648
+ sig do
649
+ params(
650
+ availability:
651
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Availability::OrSymbol
652
+ ).void
653
+ end
654
+ attr_writer :availability
655
+
656
+ # The desired capacity that the volume should be created with. If empty, the
657
+ # plugin will decide the capacity.
658
+ sig do
659
+ returns(
660
+ T.nilable(
661
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::CapacityRange
662
+ )
663
+ )
664
+ end
665
+ attr_reader :capacity_range
666
+
667
+ sig do
668
+ params(
669
+ capacity_range:
670
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::CapacityRange::OrHash
671
+ ).void
672
+ end
673
+ attr_writer :capacity_range
674
+
675
+ # Options for using this volume as a Mount-type volume.
676
+ #
677
+ # Either MountVolume or BlockVolume, but not both, must be
678
+ # present.
679
+ #
680
+ # properties: FsType: type: "string" description: | Specifies the filesystem type
681
+ # for the mount volume. Optional. MountFlags: type: "array" description: | Flags
682
+ # to pass when mounting the volume. Optional. items: type: "string" BlockVolume:
683
+ # type: "object" description: | Options for using this volume as a Block-type
684
+ # volume. Intentionally empty.
685
+ sig { returns(T.nilable(T.anything)) }
686
+ attr_reader :mount_volume
687
+
688
+ sig { params(mount_volume: T.anything).void }
689
+ attr_writer :mount_volume
690
+
691
+ # The set of nodes this volume can be used on at one time.
692
+ #
693
+ # - `single` The volume may only be scheduled to one node at a time.
694
+ # - `multi` the volume may be scheduled to any supported number of nodes at a
695
+ # time.
696
+ sig do
697
+ returns(
698
+ T.nilable(
699
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Scope::TaggedSymbol
700
+ )
701
+ )
702
+ end
703
+ attr_reader :scope
704
+
705
+ sig do
706
+ params(
707
+ scope:
708
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Scope::OrSymbol
709
+ ).void
710
+ end
711
+ attr_writer :scope
712
+
713
+ # Swarm Secrets that are passed to the CSI storage plugin when operating on this
714
+ # volume.
715
+ sig do
716
+ returns(
717
+ T.nilable(
718
+ T::Array[
719
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Secret
720
+ ]
721
+ )
722
+ )
723
+ end
724
+ attr_reader :secrets
725
+
726
+ sig do
727
+ params(
728
+ secrets:
729
+ T::Array[
730
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Secret::OrHash
731
+ ]
732
+ ).void
733
+ end
734
+ attr_writer :secrets
735
+
736
+ # The number and way that different tasks can use this volume at one time.
737
+ #
738
+ # - `none` The volume may only be used by one task at a time.
739
+ # - `readonly` The volume may be used by any number of tasks, but they all must
740
+ # mount the volume as readonly
741
+ # - `onewriter` The volume may be used by any number of tasks, but only one may
742
+ # mount it as read/write.
743
+ # - `all` The volume may have any number of readers and writers.
744
+ sig do
745
+ returns(
746
+ T.nilable(
747
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Sharing::TaggedSymbol
748
+ )
749
+ )
750
+ end
751
+ attr_reader :sharing
752
+
753
+ sig do
754
+ params(
755
+ sharing:
756
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Sharing::OrSymbol
757
+ ).void
758
+ end
759
+ attr_writer :sharing
760
+
761
+ # Defines how the volume is used by tasks.
762
+ sig do
763
+ params(
764
+ accessibility_requirements:
765
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::AccessibilityRequirements::OrHash,
766
+ availability:
767
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Availability::OrSymbol,
768
+ capacity_range:
769
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::CapacityRange::OrHash,
770
+ mount_volume: T.anything,
771
+ scope:
772
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Scope::OrSymbol,
773
+ secrets:
774
+ T::Array[
775
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Secret::OrHash
776
+ ],
777
+ sharing:
778
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Sharing::OrSymbol
779
+ ).returns(T.attached_class)
780
+ end
781
+ def self.new(
782
+ # Requirements for the accessible topology of the volume. These fields are
783
+ # optional. For an in-depth description of what these fields mean, see the CSI
784
+ # specification.
785
+ accessibility_requirements: nil,
786
+ # The availability of the volume for use in tasks.
787
+ #
788
+ # - `active` The volume is fully available for scheduling on the cluster
789
+ # - `pause` No new workloads should use the volume, but existing workloads are not
790
+ # stopped.
791
+ # - `drain` All workloads using this volume should be stopped and rescheduled, and
792
+ # no new ones should be started.
793
+ availability: nil,
794
+ # The desired capacity that the volume should be created with. If empty, the
795
+ # plugin will decide the capacity.
796
+ capacity_range: nil,
797
+ # Options for using this volume as a Mount-type volume.
798
+ #
799
+ # Either MountVolume or BlockVolume, but not both, must be
800
+ # present.
801
+ #
802
+ # properties: FsType: type: "string" description: | Specifies the filesystem type
803
+ # for the mount volume. Optional. MountFlags: type: "array" description: | Flags
804
+ # to pass when mounting the volume. Optional. items: type: "string" BlockVolume:
805
+ # type: "object" description: | Options for using this volume as a Block-type
806
+ # volume. Intentionally empty.
807
+ mount_volume: nil,
808
+ # The set of nodes this volume can be used on at one time.
809
+ #
810
+ # - `single` The volume may only be scheduled to one node at a time.
811
+ # - `multi` the volume may be scheduled to any supported number of nodes at a
812
+ # time.
813
+ scope: nil,
814
+ # Swarm Secrets that are passed to the CSI storage plugin when operating on this
815
+ # volume.
816
+ secrets: nil,
817
+ # The number and way that different tasks can use this volume at one time.
818
+ #
819
+ # - `none` The volume may only be used by one task at a time.
820
+ # - `readonly` The volume may be used by any number of tasks, but they all must
821
+ # mount the volume as readonly
822
+ # - `onewriter` The volume may be used by any number of tasks, but only one may
823
+ # mount it as read/write.
824
+ # - `all` The volume may have any number of readers and writers.
825
+ sharing: nil
826
+ )
827
+ end
828
+
829
+ sig do
830
+ override.returns(
831
+ {
832
+ accessibility_requirements:
833
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::AccessibilityRequirements,
834
+ availability:
835
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Availability::TaggedSymbol,
836
+ capacity_range:
837
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::CapacityRange,
838
+ mount_volume: T.anything,
839
+ scope:
840
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Scope::TaggedSymbol,
841
+ secrets:
842
+ T::Array[
843
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Secret
844
+ ],
845
+ sharing:
846
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Sharing::TaggedSymbol
847
+ }
848
+ )
849
+ end
850
+ def to_hash
851
+ end
852
+
853
+ class AccessibilityRequirements < DockerEngine::Internal::Type::BaseModel
854
+ OrHash =
855
+ T.type_alias do
856
+ T.any(
857
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::AccessibilityRequirements,
858
+ DockerEngine::Internal::AnyHash
859
+ )
860
+ end
861
+
862
+ # A list of topologies that the volume should attempt to be provisioned in.
863
+ sig { returns(T.nilable(T::Array[T::Hash[Symbol, String]])) }
864
+ attr_reader :preferred
865
+
866
+ sig { params(preferred: T::Array[T::Hash[Symbol, String]]).void }
867
+ attr_writer :preferred
868
+
869
+ # A list of required topologies, at least one of which the volume must be
870
+ # accessible from.
871
+ sig { returns(T.nilable(T::Array[T::Hash[Symbol, String]])) }
872
+ attr_reader :requisite
873
+
874
+ sig { params(requisite: T::Array[T::Hash[Symbol, String]]).void }
875
+ attr_writer :requisite
876
+
877
+ # Requirements for the accessible topology of the volume. These fields are
878
+ # optional. For an in-depth description of what these fields mean, see the CSI
879
+ # specification.
880
+ sig do
881
+ params(
882
+ preferred: T::Array[T::Hash[Symbol, String]],
883
+ requisite: T::Array[T::Hash[Symbol, String]]
884
+ ).returns(T.attached_class)
885
+ end
886
+ def self.new(
887
+ # A list of topologies that the volume should attempt to be provisioned in.
888
+ preferred: nil,
889
+ # A list of required topologies, at least one of which the volume must be
890
+ # accessible from.
891
+ requisite: nil
892
+ )
893
+ end
894
+
895
+ sig do
896
+ override.returns(
897
+ {
898
+ preferred: T::Array[T::Hash[Symbol, String]],
899
+ requisite: T::Array[T::Hash[Symbol, String]]
900
+ }
901
+ )
902
+ end
903
+ def to_hash
904
+ end
905
+ end
906
+
907
+ # The availability of the volume for use in tasks.
908
+ #
909
+ # - `active` The volume is fully available for scheduling on the cluster
910
+ # - `pause` No new workloads should use the volume, but existing workloads are not
911
+ # stopped.
912
+ # - `drain` All workloads using this volume should be stopped and rescheduled, and
913
+ # no new ones should be started.
914
+ module Availability
915
+ extend DockerEngine::Internal::Type::Enum
916
+
917
+ TaggedSymbol =
918
+ T.type_alias do
919
+ T.all(
920
+ Symbol,
921
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Availability
922
+ )
923
+ end
924
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
925
+
926
+ ACTIVE =
927
+ T.let(
928
+ :active,
929
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Availability::TaggedSymbol
930
+ )
931
+ PAUSE =
932
+ T.let(
933
+ :pause,
934
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Availability::TaggedSymbol
935
+ )
936
+ DRAIN =
937
+ T.let(
938
+ :drain,
939
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Availability::TaggedSymbol
940
+ )
941
+
942
+ sig do
943
+ override.returns(
944
+ T::Array[
945
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Availability::TaggedSymbol
946
+ ]
947
+ )
948
+ end
949
+ def self.values
950
+ end
951
+ end
952
+
953
+ class CapacityRange < DockerEngine::Internal::Type::BaseModel
954
+ OrHash =
955
+ T.type_alias do
956
+ T.any(
957
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::CapacityRange,
958
+ DockerEngine::Internal::AnyHash
959
+ )
960
+ end
961
+
962
+ # The volume must not be bigger than this. The value of 0 indicates an unspecified
963
+ # maximum.
964
+ sig { returns(T.nilable(Integer)) }
965
+ attr_reader :limit_bytes
966
+
967
+ sig { params(limit_bytes: Integer).void }
968
+ attr_writer :limit_bytes
969
+
970
+ # The volume must be at least this big. The value of 0 indicates an unspecified
971
+ # minimum
972
+ sig { returns(T.nilable(Integer)) }
973
+ attr_reader :required_bytes
974
+
975
+ sig { params(required_bytes: Integer).void }
976
+ attr_writer :required_bytes
977
+
978
+ # The desired capacity that the volume should be created with. If empty, the
979
+ # plugin will decide the capacity.
980
+ sig do
981
+ params(limit_bytes: Integer, required_bytes: Integer).returns(
982
+ T.attached_class
983
+ )
984
+ end
985
+ def self.new(
986
+ # The volume must not be bigger than this. The value of 0 indicates an unspecified
987
+ # maximum.
988
+ limit_bytes: nil,
989
+ # The volume must be at least this big. The value of 0 indicates an unspecified
990
+ # minimum
991
+ required_bytes: nil
992
+ )
993
+ end
994
+
995
+ sig do
996
+ override.returns(
997
+ { limit_bytes: Integer, required_bytes: Integer }
998
+ )
999
+ end
1000
+ def to_hash
1001
+ end
1002
+ end
1003
+
1004
+ # The set of nodes this volume can be used on at one time.
1005
+ #
1006
+ # - `single` The volume may only be scheduled to one node at a time.
1007
+ # - `multi` the volume may be scheduled to any supported number of nodes at a
1008
+ # time.
1009
+ module Scope
1010
+ extend DockerEngine::Internal::Type::Enum
1011
+
1012
+ TaggedSymbol =
1013
+ T.type_alias do
1014
+ T.all(
1015
+ Symbol,
1016
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Scope
1017
+ )
1018
+ end
1019
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1020
+
1021
+ SINGLE =
1022
+ T.let(
1023
+ :single,
1024
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Scope::TaggedSymbol
1025
+ )
1026
+ MULTI =
1027
+ T.let(
1028
+ :multi,
1029
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Scope::TaggedSymbol
1030
+ )
1031
+
1032
+ sig do
1033
+ override.returns(
1034
+ T::Array[
1035
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Scope::TaggedSymbol
1036
+ ]
1037
+ )
1038
+ end
1039
+ def self.values
1040
+ end
1041
+ end
1042
+
1043
+ class Secret < DockerEngine::Internal::Type::BaseModel
1044
+ OrHash =
1045
+ T.type_alias do
1046
+ T.any(
1047
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Secret,
1048
+ DockerEngine::Internal::AnyHash
1049
+ )
1050
+ end
1051
+
1052
+ # Key is the name of the key of the key-value pair passed to the plugin.
1053
+ sig { returns(T.nilable(String)) }
1054
+ attr_reader :key
1055
+
1056
+ sig { params(key: String).void }
1057
+ attr_writer :key
1058
+
1059
+ # Secret is the swarm Secret object from which to read data. This can be a Secret
1060
+ # name or ID. The Secret data is retrieved by swarm and used as the value of the
1061
+ # key-value pair passed to the plugin.
1062
+ sig { returns(T.nilable(String)) }
1063
+ attr_reader :secret
1064
+
1065
+ sig { params(secret: String).void }
1066
+ attr_writer :secret
1067
+
1068
+ # One cluster volume secret entry. Defines a key-value pair that is passed to the
1069
+ # plugin.
1070
+ sig do
1071
+ params(key: String, secret: String).returns(T.attached_class)
1072
+ end
1073
+ def self.new(
1074
+ # Key is the name of the key of the key-value pair passed to the plugin.
1075
+ key: nil,
1076
+ # Secret is the swarm Secret object from which to read data. This can be a Secret
1077
+ # name or ID. The Secret data is retrieved by swarm and used as the value of the
1078
+ # key-value pair passed to the plugin.
1079
+ secret: nil
1080
+ )
1081
+ end
1082
+
1083
+ sig { override.returns({ key: String, secret: String }) }
1084
+ def to_hash
1085
+ end
1086
+ end
1087
+
1088
+ # The number and way that different tasks can use this volume at one time.
1089
+ #
1090
+ # - `none` The volume may only be used by one task at a time.
1091
+ # - `readonly` The volume may be used by any number of tasks, but they all must
1092
+ # mount the volume as readonly
1093
+ # - `onewriter` The volume may be used by any number of tasks, but only one may
1094
+ # mount it as read/write.
1095
+ # - `all` The volume may have any number of readers and writers.
1096
+ module Sharing
1097
+ extend DockerEngine::Internal::Type::Enum
1098
+
1099
+ TaggedSymbol =
1100
+ T.type_alias do
1101
+ T.all(
1102
+ Symbol,
1103
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Sharing
1104
+ )
1105
+ end
1106
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1107
+
1108
+ NONE =
1109
+ T.let(
1110
+ :none,
1111
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Sharing::TaggedSymbol
1112
+ )
1113
+ READONLY =
1114
+ T.let(
1115
+ :readonly,
1116
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Sharing::TaggedSymbol
1117
+ )
1118
+ ONEWRITER =
1119
+ T.let(
1120
+ :onewriter,
1121
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Sharing::TaggedSymbol
1122
+ )
1123
+ ALL =
1124
+ T.let(
1125
+ :all,
1126
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Sharing::TaggedSymbol
1127
+ )
1128
+
1129
+ sig do
1130
+ override.returns(
1131
+ T::Array[
1132
+ DockerEngine::Volume::ClusterVolume::Spec::AccessMode::Sharing::TaggedSymbol
1133
+ ]
1134
+ )
1135
+ end
1136
+ def self.values
1137
+ end
1138
+ end
1139
+ end
1140
+ end
1141
+
1142
+ class Version < DockerEngine::Internal::Type::BaseModel
1143
+ OrHash =
1144
+ T.type_alias do
1145
+ T.any(
1146
+ DockerEngine::Volume::ClusterVolume::Version,
1147
+ DockerEngine::Internal::AnyHash
1148
+ )
1149
+ end
1150
+
1151
+ sig { returns(T.nilable(Integer)) }
1152
+ attr_reader :index
1153
+
1154
+ sig { params(index: Integer).void }
1155
+ attr_writer :index
1156
+
1157
+ # The version number of the object such as node, service, etc. This is needed to
1158
+ # avoid conflicting writes. The client must send the version number along with the
1159
+ # modified specification when updating these objects.
1160
+ #
1161
+ # This approach ensures safe concurrency and determinism in that the change on the
1162
+ # object may not be applied if the version number has changed from the last read.
1163
+ # In other words, if two update requests specify the same base version, only one
1164
+ # of the requests can succeed. As a result, two separate update requests that
1165
+ # happen at the same time will not unintentionally overwrite each other.
1166
+ sig { params(index: Integer).returns(T.attached_class) }
1167
+ def self.new(index: nil)
1168
+ end
1169
+
1170
+ sig { override.returns({ index: Integer }) }
1171
+ def to_hash
1172
+ end
1173
+ end
1174
+ end
1175
+
1176
+ class UsageData < DockerEngine::Internal::Type::BaseModel
1177
+ OrHash =
1178
+ T.type_alias do
1179
+ T.any(
1180
+ DockerEngine::Volume::UsageData,
1181
+ DockerEngine::Internal::AnyHash
1182
+ )
1183
+ end
1184
+
1185
+ # The number of containers referencing this volume. This field is set to `-1` if
1186
+ # the reference-count is not available.
1187
+ sig { returns(Integer) }
1188
+ attr_accessor :ref_count
1189
+
1190
+ # Amount of disk space used by the volume (in bytes). This information is only
1191
+ # available for volumes created with the `"local"` volume driver. For volumes
1192
+ # created with other volume drivers, this field is set to `-1` ("not available")
1193
+ sig { returns(Integer) }
1194
+ attr_accessor :size
1195
+
1196
+ # Usage details about the volume. This information is used by the `GET /system/df`
1197
+ # endpoint, and omitted in other endpoints.
1198
+ sig do
1199
+ params(ref_count: Integer, size: Integer).returns(T.attached_class)
1200
+ end
1201
+ def self.new(
1202
+ # The number of containers referencing this volume. This field is set to `-1` if
1203
+ # the reference-count is not available.
1204
+ ref_count:,
1205
+ # Amount of disk space used by the volume (in bytes). This information is only
1206
+ # available for volumes created with the `"local"` volume driver. For volumes
1207
+ # created with other volume drivers, this field is set to `-1` ("not available")
1208
+ size:
1209
+ )
1210
+ end
1211
+
1212
+ sig { override.returns({ ref_count: Integer, size: Integer }) }
1213
+ def to_hash
1214
+ end
1215
+ end
1216
+ end
1217
+ end
1218
+ end