k8ts 0.13.2 → 0.14.0

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 (585) hide show
  1. package/dist/common-world.d.ts +3 -8
  2. package/dist/common-world.d.ts.map +1 -1
  3. package/dist/common-world.js +6 -9
  4. package/dist/common-world.js.map +1 -1
  5. package/dist/env/env.d.ts +7 -7
  6. package/dist/env/env.d.ts.map +1 -1
  7. package/dist/env/env.js +21 -23
  8. package/dist/env/env.js.map +1 -1
  9. package/dist/env/error.d.ts +5 -0
  10. package/dist/env/error.d.ts.map +1 -0
  11. package/dist/env/error.js +12 -0
  12. package/dist/env/error.js.map +1 -0
  13. package/dist/env/index.d.ts +1 -1
  14. package/dist/env/index.d.ts.map +1 -1
  15. package/dist/env/types.d.ts +5 -5
  16. package/dist/env/types.d.ts.map +1 -1
  17. package/dist/gvks/apps.d.ts +29 -0
  18. package/dist/gvks/apps.d.ts.map +1 -0
  19. package/dist/gvks/apps.js.map +1 -0
  20. package/dist/gvks/batch.d.ts +17 -0
  21. package/dist/gvks/batch.d.ts.map +1 -0
  22. package/dist/gvks/batch.js.map +1 -0
  23. package/dist/gvks/default.d.ts +73 -0
  24. package/dist/gvks/default.d.ts.map +1 -0
  25. package/dist/gvks/default.js.map +1 -0
  26. package/dist/gvks/gateway.d.ts +29 -0
  27. package/dist/gvks/gateway.d.ts.map +1 -0
  28. package/dist/gvks/gateway.js.map +1 -0
  29. package/dist/gvks/index.d.ts.map +1 -0
  30. package/dist/gvks/index.js.map +1 -0
  31. package/dist/gvks/metrics.d.ts +17 -0
  32. package/dist/gvks/metrics.d.ts.map +1 -0
  33. package/dist/gvks/metrics.js.map +1 -0
  34. package/dist/gvks/networking.d.ts +13 -0
  35. package/dist/gvks/networking.d.ts.map +1 -0
  36. package/dist/gvks/networking.js.map +1 -0
  37. package/dist/gvks/rbac.d.ts +25 -0
  38. package/dist/gvks/rbac.d.ts.map +1 -0
  39. package/dist/gvks/rbac.js.map +1 -0
  40. package/dist/gvks/storage.d.ts +17 -0
  41. package/dist/gvks/storage.d.ts.map +1 -0
  42. package/dist/gvks/storage.js.map +1 -0
  43. package/dist/index.d.ts +2 -2
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +2 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/kinds.d.ts +2 -0
  48. package/dist/kinds.d.ts.map +1 -0
  49. package/dist/kinds.js +18 -0
  50. package/dist/kinds.js.map +1 -0
  51. package/dist/origins/file/file.d.ts +13 -14
  52. package/dist/origins/file/file.d.ts.map +1 -1
  53. package/dist/origins/file/file.js +14 -17
  54. package/dist/origins/file/file.js.map +1 -1
  55. package/dist/origins/file/index.d.ts +0 -1
  56. package/dist/origins/file/index.d.ts.map +1 -1
  57. package/dist/origins/file/index.js +0 -1
  58. package/dist/origins/file/index.js.map +1 -1
  59. package/dist/origins/file/section.d.ts +11 -11
  60. package/dist/origins/file/section.d.ts.map +1 -1
  61. package/dist/origins/file/section.js +15 -13
  62. package/dist/origins/file/section.js.map +1 -1
  63. package/dist/origins/world.d.ts +6 -5
  64. package/dist/origins/world.d.ts.map +1 -1
  65. package/dist/origins/world.js +9 -5
  66. package/dist/origins/world.js.map +1 -1
  67. package/dist/resources/annotations.d.ts +2 -0
  68. package/dist/resources/annotations.d.ts.map +1 -0
  69. package/dist/resources/{persistent/block-mode.js → annotations.js} +1 -1
  70. package/dist/resources/annotations.js.map +1 -0
  71. package/dist/resources/config/configmap.d.ts +7 -7
  72. package/dist/resources/config/configmap.d.ts.map +1 -1
  73. package/dist/resources/config/configmap.js +7 -6
  74. package/dist/resources/config/configmap.js.map +1 -1
  75. package/dist/resources/config/index.d.ts +0 -1
  76. package/dist/resources/config/index.d.ts.map +1 -1
  77. package/dist/resources/config/index.js +0 -1
  78. package/dist/resources/config/index.js.map +1 -1
  79. package/dist/resources/config/resolver.d.ts +2 -2
  80. package/dist/resources/config/resolver.d.ts.map +1 -1
  81. package/dist/resources/config/resolver.js +4 -3
  82. package/dist/resources/config/resolver.js.map +1 -1
  83. package/dist/resources/config/secret.d.ts +7 -14
  84. package/dist/resources/config/secret.d.ts.map +1 -1
  85. package/dist/resources/config/secret.js +6 -4
  86. package/dist/resources/config/secret.js.map +1 -1
  87. package/dist/resources/errors.d.ts +7 -0
  88. package/dist/resources/errors.d.ts.map +1 -0
  89. package/dist/resources/errors.js +12 -0
  90. package/dist/resources/errors.js.map +1 -0
  91. package/dist/resources/hostpath.d.ts +1 -1
  92. package/dist/resources/hostpath.d.ts.map +1 -1
  93. package/dist/resources/index.d.ts +2 -5
  94. package/dist/resources/index.d.ts.map +1 -1
  95. package/dist/resources/index.js +2 -5
  96. package/dist/resources/index.js.map +1 -1
  97. package/dist/resources/namespace/namespace.d.ts +7 -9
  98. package/dist/resources/namespace/namespace.d.ts.map +1 -1
  99. package/dist/resources/namespace/namespace.js +7 -4
  100. package/dist/resources/namespace/namespace.js.map +1 -1
  101. package/dist/resources/network/http-route/http-route.d.ts +19 -0
  102. package/dist/resources/network/http-route/http-route.d.ts.map +1 -0
  103. package/dist/resources/network/http-route/http-route.js +51 -0
  104. package/dist/resources/network/http-route/http-route.js.map +1 -0
  105. package/dist/resources/network/http-route/index.d.ts.map +1 -0
  106. package/dist/resources/network/http-route/index.js.map +1 -0
  107. package/dist/resources/network/index.d.ts +3 -0
  108. package/dist/resources/network/index.d.ts.map +1 -0
  109. package/dist/resources/network/index.js +19 -0
  110. package/dist/resources/network/index.js.map +1 -0
  111. package/dist/resources/network/service/index.d.ts.map +1 -0
  112. package/dist/resources/network/service/index.js.map +1 -0
  113. package/dist/resources/network/service/service-port.d.ts +12 -0
  114. package/dist/resources/network/service/service-port.d.ts.map +1 -0
  115. package/dist/resources/{service → network/service}/service-port.js +5 -5
  116. package/dist/resources/network/service/service-port.js.map +1 -0
  117. package/dist/resources/network/service/service.d.ts +46 -0
  118. package/dist/resources/network/service/service.d.ts.map +1 -0
  119. package/dist/resources/{service → network/service}/service.js +34 -22
  120. package/dist/resources/network/service/service.js.map +1 -0
  121. package/dist/resources/network/service/utils.d.ts +5 -0
  122. package/dist/resources/network/service/utils.d.ts.map +1 -0
  123. package/dist/resources/network/service/utils.js +22 -0
  124. package/dist/resources/network/service/utils.js.map +1 -0
  125. package/dist/resources/persistent/access-mode.d.ts +4 -7
  126. package/dist/resources/persistent/access-mode.d.ts.map +1 -1
  127. package/dist/resources/persistent/access-mode.js +20 -24
  128. package/dist/resources/persistent/access-mode.js.map +1 -1
  129. package/dist/resources/persistent/claim/pvc.d.ts +17 -20
  130. package/dist/resources/persistent/claim/pvc.d.ts.map +1 -1
  131. package/dist/resources/persistent/claim/pvc.js +22 -28
  132. package/dist/resources/persistent/claim/pvc.js.map +1 -1
  133. package/dist/resources/persistent/index.d.ts +1 -1
  134. package/dist/resources/persistent/index.d.ts.map +1 -1
  135. package/dist/resources/persistent/index.js +1 -1
  136. package/dist/resources/persistent/index.js.map +1 -1
  137. package/dist/resources/persistent/volume/parse-backend.d.ts +1 -1
  138. package/dist/resources/persistent/volume/parse-backend.js +3 -3
  139. package/dist/resources/persistent/volume/parse-backend.js.map +1 -1
  140. package/dist/resources/persistent/volume/pv.d.ts +23 -25
  141. package/dist/resources/persistent/volume/pv.d.ts.map +1 -1
  142. package/dist/resources/persistent/volume/pv.js +23 -29
  143. package/dist/resources/persistent/volume/pv.js.map +1 -1
  144. package/dist/resources/persistent/volume-mode.d.ts +2 -0
  145. package/dist/resources/persistent/volume-mode.d.ts.map +1 -0
  146. package/dist/resources/persistent/volume-mode.js +3 -0
  147. package/dist/resources/persistent/volume-mode.js.map +1 -0
  148. package/dist/resources/rbac/cluster-role-binding.d.ts +12 -12
  149. package/dist/resources/rbac/cluster-role-binding.d.ts.map +1 -1
  150. package/dist/resources/rbac/cluster-role-binding.js +12 -10
  151. package/dist/resources/rbac/cluster-role-binding.js.map +1 -1
  152. package/dist/resources/rbac/cluster-role.d.ts +6 -23
  153. package/dist/resources/rbac/cluster-role.d.ts.map +1 -1
  154. package/dist/resources/rbac/cluster-role.js +9 -18
  155. package/dist/resources/rbac/cluster-role.js.map +1 -1
  156. package/dist/resources/rbac/role-props.d.ts +20 -0
  157. package/dist/resources/rbac/role-props.d.ts.map +1 -0
  158. package/dist/resources/rbac/role-props.js +17 -0
  159. package/dist/resources/rbac/role-props.js.map +1 -0
  160. package/dist/resources/rbac/service-account.d.ts +8 -8
  161. package/dist/resources/rbac/service-account.d.ts.map +1 -1
  162. package/dist/resources/rbac/service-account.js +8 -6
  163. package/dist/resources/rbac/service-account.js.map +1 -1
  164. package/dist/resources/workload/cronjob/index.d.ts +21 -0
  165. package/dist/resources/workload/cronjob/index.d.ts.map +1 -0
  166. package/dist/resources/workload/cronjob/index.js +98 -0
  167. package/dist/resources/workload/cronjob/index.js.map +1 -0
  168. package/dist/resources/workload/daemonset/daemonset.d.ts +16 -0
  169. package/dist/resources/workload/daemonset/daemonset.d.ts.map +1 -0
  170. package/dist/resources/workload/daemonset/daemonset.js +117 -0
  171. package/dist/resources/workload/daemonset/daemonset.js.map +1 -0
  172. package/dist/resources/workload/daemonset/index.d.ts +2 -0
  173. package/dist/resources/workload/daemonset/index.d.ts.map +1 -0
  174. package/dist/resources/workload/daemonset/index.js +18 -0
  175. package/dist/resources/workload/daemonset/index.js.map +1 -0
  176. package/dist/resources/workload/daemonset/props.d.ts +15 -0
  177. package/dist/resources/workload/daemonset/props.d.ts.map +1 -0
  178. package/dist/resources/{pod/container/mounts.js → workload/daemonset/props.js} +1 -1
  179. package/dist/resources/workload/daemonset/props.js.map +1 -0
  180. package/dist/resources/workload/deployment/deployment.d.ts +16 -0
  181. package/dist/resources/workload/deployment/deployment.d.ts.map +1 -0
  182. package/dist/resources/{deployment → workload/deployment}/deployment.js +39 -34
  183. package/dist/resources/workload/deployment/deployment.js.map +1 -0
  184. package/dist/resources/workload/deployment/index.d.ts.map +1 -0
  185. package/dist/resources/workload/deployment/index.js.map +1 -0
  186. package/dist/resources/workload/deployment/props.d.ts +17 -0
  187. package/dist/resources/workload/deployment/props.d.ts.map +1 -0
  188. package/dist/{_type/prefix$.js → resources/workload/deployment/props.js} +1 -1
  189. package/dist/resources/workload/deployment/props.js.map +1 -0
  190. package/dist/resources/workload/index.d.ts +7 -0
  191. package/dist/resources/workload/index.d.ts.map +1 -0
  192. package/dist/resources/{pod → workload}/index.js +6 -3
  193. package/dist/resources/workload/index.js.map +1 -0
  194. package/dist/resources/workload/pod/container/container.d.ts +47 -0
  195. package/dist/resources/workload/pod/container/container.d.ts.map +1 -0
  196. package/dist/resources/{pod → workload/pod}/container/container.js +46 -38
  197. package/dist/resources/workload/pod/container/container.js.map +1 -0
  198. package/dist/resources/workload/pod/container/index.d.ts +3 -0
  199. package/dist/resources/workload/pod/container/index.d.ts.map +1 -0
  200. package/dist/resources/{pod → workload/pod}/container/index.js +1 -0
  201. package/dist/resources/workload/pod/container/index.js.map +1 -0
  202. package/dist/resources/workload/pod/container/mounts/device.d.ts +17 -0
  203. package/dist/resources/workload/pod/container/mounts/device.d.ts.map +1 -0
  204. package/dist/resources/workload/pod/container/mounts/device.js +29 -0
  205. package/dist/resources/workload/pod/container/mounts/device.js.map +1 -0
  206. package/dist/resources/workload/pod/container/mounts/volume.d.ts +21 -0
  207. package/dist/resources/workload/pod/container/mounts/volume.d.ts.map +1 -0
  208. package/dist/resources/{pod → workload/pod}/container/mounts/volume.js +9 -7
  209. package/dist/resources/workload/pod/container/mounts/volume.js.map +1 -0
  210. package/dist/resources/workload/pod/container/ref.d.ts +6 -0
  211. package/dist/resources/workload/pod/container/ref.d.ts.map +1 -0
  212. package/dist/{runner/exporter/meta.js → resources/workload/pod/container/ref.js} +1 -1
  213. package/dist/resources/workload/pod/container/ref.js.map +1 -0
  214. package/dist/resources/workload/pod/container/scope.d.ts +25 -0
  215. package/dist/resources/workload/pod/container/scope.d.ts.map +1 -0
  216. package/dist/resources/workload/pod/container/scope.js +50 -0
  217. package/dist/resources/workload/pod/container/scope.js.map +1 -0
  218. package/dist/resources/workload/pod/container/utils.d.ts +5 -0
  219. package/dist/resources/workload/pod/container/utils.d.ts.map +1 -0
  220. package/dist/resources/workload/pod/container/utils.js +18 -0
  221. package/dist/resources/workload/pod/container/utils.js.map +1 -0
  222. package/dist/resources/workload/pod/pod.d.ts +27 -0
  223. package/dist/resources/workload/pod/pod.d.ts.map +1 -0
  224. package/dist/resources/workload/pod/pod.js +78 -0
  225. package/dist/resources/workload/pod/pod.js.map +1 -0
  226. package/dist/resources/workload/pod/volume/devices.d.ts +24 -0
  227. package/dist/resources/workload/pod/volume/devices.d.ts.map +1 -0
  228. package/dist/resources/{pod → workload/pod}/volume/devices.js +11 -9
  229. package/dist/resources/workload/pod/volume/devices.js.map +1 -0
  230. package/dist/resources/workload/pod/volume/index.d.ts +3 -0
  231. package/dist/resources/workload/pod/volume/index.d.ts.map +1 -0
  232. package/dist/resources/workload/pod/volume/index.js +8 -0
  233. package/dist/resources/workload/pod/volume/index.js.map +1 -0
  234. package/dist/resources/workload/pod/volume/volumes.d.ts +74 -0
  235. package/dist/resources/workload/pod/volume/volumes.d.ts.map +1 -0
  236. package/dist/resources/workload/pod/volume/volumes.js +111 -0
  237. package/dist/resources/workload/pod/volume/volumes.js.map +1 -0
  238. package/dist/resources/workload/statefulset/index.d.ts +2 -0
  239. package/dist/resources/workload/statefulset/index.d.ts.map +1 -0
  240. package/dist/resources/workload/statefulset/index.js +18 -0
  241. package/dist/resources/workload/statefulset/index.js.map +1 -0
  242. package/dist/resources/workload/statefulset/props.d.ts +24 -0
  243. package/dist/resources/workload/statefulset/props.d.ts.map +1 -0
  244. package/dist/{runner/proverbs.js → resources/workload/statefulset/props.js} +1 -1
  245. package/dist/resources/workload/statefulset/props.js.map +1 -0
  246. package/dist/resources/workload/statefulset/scope.d.ts +13 -0
  247. package/dist/resources/workload/statefulset/scope.d.ts.map +1 -0
  248. package/dist/resources/workload/statefulset/scope.js +26 -0
  249. package/dist/resources/workload/statefulset/scope.js.map +1 -0
  250. package/dist/resources/workload/statefulset/statefulset.d.ts +22 -0
  251. package/dist/resources/workload/statefulset/statefulset.d.ts.map +1 -0
  252. package/dist/resources/workload/statefulset/statefulset.js +110 -0
  253. package/dist/resources/workload/statefulset/statefulset.js.map +1 -0
  254. package/dist/resources/workload/util.d.ts +4 -0
  255. package/dist/resources/workload/util.d.ts.map +1 -0
  256. package/dist/resources/workload/util.js +10 -0
  257. package/dist/resources/workload/util.js.map +1 -0
  258. package/dist/resources/workload/workload-ref.d.ts +5 -0
  259. package/dist/resources/workload/workload-ref.d.ts.map +1 -0
  260. package/dist/resources/workload/workload-ref.js +3 -0
  261. package/dist/resources/workload/workload-ref.js.map +1 -0
  262. package/dist/runner/{exporter → engine}/assembler.d.ts +15 -14
  263. package/dist/runner/engine/assembler.d.ts.map +1 -0
  264. package/dist/runner/{exporter → engine}/assembler.js +63 -40
  265. package/dist/runner/engine/assembler.js.map +1 -0
  266. package/dist/runner/engine/index.d.ts +3 -0
  267. package/dist/runner/engine/index.d.ts.map +1 -0
  268. package/dist/runner/{exporter → engine}/index.js +1 -1
  269. package/dist/runner/engine/index.js.map +1 -0
  270. package/dist/runner/engine/loader.d.ts +19 -0
  271. package/dist/runner/engine/loader.d.ts.map +1 -0
  272. package/dist/runner/{exporter → engine}/loader.js +18 -19
  273. package/dist/runner/engine/loader.js.map +1 -0
  274. package/dist/runner/{exporter → engine}/manifester.d.ts +8 -8
  275. package/dist/runner/engine/manifester.d.ts.map +1 -0
  276. package/dist/runner/{exporter → engine}/manifester.js +4 -25
  277. package/dist/runner/engine/manifester.js.map +1 -0
  278. package/dist/runner/{exporter → engine}/saver.d.ts +5 -4
  279. package/dist/runner/engine/saver.d.ts.map +1 -0
  280. package/dist/runner/{exporter → engine}/saver.js +5 -10
  281. package/dist/runner/engine/saver.js.map +1 -0
  282. package/dist/runner/engine/serializer.d.ts +20 -0
  283. package/dist/runner/engine/serializer.d.ts.map +1 -0
  284. package/dist/runner/{exporter → engine}/serializer.js +8 -17
  285. package/dist/runner/engine/serializer.js.map +1 -0
  286. package/dist/runner/{exporter → engine}/stage.d.ts +2 -2
  287. package/dist/runner/engine/stage.d.ts.map +1 -0
  288. package/dist/runner/{exporter → engine}/stage.js +10 -10
  289. package/dist/runner/engine/stage.js.map +1 -0
  290. package/dist/runner/error.d.ts +7 -0
  291. package/dist/runner/error.d.ts.map +1 -0
  292. package/dist/runner/error.js +12 -0
  293. package/dist/runner/error.js.map +1 -0
  294. package/dist/runner/index.d.ts +1 -1
  295. package/dist/runner/index.d.ts.map +1 -1
  296. package/dist/runner/index.js +3 -15
  297. package/dist/runner/index.js.map +1 -1
  298. package/dist/runner/runner.d.ts +8 -6
  299. package/dist/runner/runner.d.ts.map +1 -1
  300. package/dist/runner/runner.js +27 -22
  301. package/dist/runner/runner.js.map +1 -1
  302. package/dist/runner/viz/progress-shower.d.ts +11 -0
  303. package/dist/runner/viz/progress-shower.d.ts.map +1 -0
  304. package/dist/runner/viz/progress-shower.js +63 -0
  305. package/dist/runner/viz/progress-shower.js.map +1 -0
  306. package/dist/runner/{summarizer.d.ts → viz/summarizer.d.ts} +5 -5
  307. package/dist/runner/viz/summarizer.d.ts.map +1 -0
  308. package/dist/runner/{summarizer.js → viz/summarizer.js} +9 -10
  309. package/dist/runner/viz/summarizer.js.map +1 -0
  310. package/dist/util/merge.d.ts +2 -0
  311. package/dist/util/merge.d.ts.map +1 -0
  312. package/dist/util/merge.js +3 -0
  313. package/dist/util/merge.js.map +1 -0
  314. package/package.json +12 -12
  315. package/src/common-world.ts +10 -11
  316. package/src/env/env.ts +33 -35
  317. package/src/env/error.ts +7 -0
  318. package/src/env/index.ts +1 -1
  319. package/src/env/types.ts +5 -5
  320. package/src/index.ts +2 -2
  321. package/src/kinds.ts +1 -0
  322. package/src/origins/file/file.ts +25 -33
  323. package/src/origins/file/index.ts +0 -1
  324. package/src/origins/file/section.ts +17 -16
  325. package/src/origins/world.ts +19 -13
  326. package/src/resources/config/configmap.ts +14 -13
  327. package/src/resources/config/index.ts +0 -1
  328. package/src/resources/config/resolver.ts +8 -5
  329. package/src/resources/config/secret.ts +11 -7
  330. package/src/resources/errors.ts +7 -0
  331. package/src/resources/hostpath.ts +1 -1
  332. package/src/resources/index.ts +2 -5
  333. package/src/resources/namespace/namespace.ts +11 -8
  334. package/src/resources/network/http-route/http-route.ts +62 -0
  335. package/src/resources/network/index.ts +2 -0
  336. package/src/resources/network/service/service-port.ts +17 -0
  337. package/src/resources/network/service/service.ts +135 -0
  338. package/src/resources/network/service/utils.ts +20 -0
  339. package/src/resources/persistent/access-mode.ts +20 -24
  340. package/src/resources/persistent/claim/pvc.ts +41 -43
  341. package/src/resources/persistent/index.ts +1 -1
  342. package/src/resources/persistent/volume/parse-backend.ts +3 -3
  343. package/src/resources/persistent/volume/pv.ts +55 -51
  344. package/src/resources/persistent/volume-mode.ts +1 -0
  345. package/src/resources/rbac/cluster-role-binding.ts +19 -17
  346. package/src/resources/rbac/cluster-role.ts +13 -62
  347. package/src/resources/rbac/role-props.ts +26 -0
  348. package/src/resources/rbac/service-account.ts +14 -12
  349. package/src/resources/workload/cronjob/index.ts +74 -0
  350. package/src/resources/workload/daemonset/daemonset.ts +82 -0
  351. package/src/resources/workload/daemonset/index.ts +1 -0
  352. package/src/resources/workload/daemonset/props.ts +19 -0
  353. package/src/resources/workload/deployment/deployment.ts +79 -0
  354. package/src/resources/workload/deployment/props.ts +19 -0
  355. package/src/resources/workload/index.ts +6 -0
  356. package/src/resources/workload/pod/container/container.ts +227 -0
  357. package/src/resources/{pod → workload/pod}/container/index.ts +1 -0
  358. package/src/resources/workload/pod/container/mounts/device.ts +41 -0
  359. package/src/resources/workload/pod/container/mounts/volume.ts +46 -0
  360. package/src/resources/workload/pod/container/ref.ts +6 -0
  361. package/src/resources/workload/pod/container/scope.ts +83 -0
  362. package/src/resources/workload/pod/container/utils.ts +16 -0
  363. package/src/resources/workload/pod/pod.ts +96 -0
  364. package/src/resources/workload/pod/volume/devices.ts +56 -0
  365. package/src/resources/workload/pod/volume/index.ts +2 -0
  366. package/src/resources/workload/pod/volume/volumes.ts +203 -0
  367. package/src/resources/workload/statefulset/index.ts +1 -0
  368. package/src/resources/workload/statefulset/props.ts +34 -0
  369. package/src/resources/workload/statefulset/scope.ts +25 -0
  370. package/src/resources/workload/statefulset/statefulset.ts +137 -0
  371. package/src/resources/workload/util.ts +8 -0
  372. package/src/resources/workload/workload-ref.ts +5 -0
  373. package/src/runner/{exporter → engine}/assembler.ts +83 -54
  374. package/src/runner/engine/index.ts +2 -0
  375. package/src/runner/{exporter → engine}/loader.ts +32 -29
  376. package/src/runner/{exporter → engine}/manifester.ts +20 -32
  377. package/src/runner/{exporter → engine}/saver.ts +8 -9
  378. package/src/runner/{exporter → engine}/serializer.ts +21 -20
  379. package/src/runner/{exporter → engine}/stage.ts +5 -5
  380. package/src/runner/error.ts +7 -0
  381. package/src/runner/index.ts +1 -1
  382. package/src/runner/runner.ts +44 -29
  383. package/src/runner/{exporter → viz}/progress-shower.ts +21 -21
  384. package/src/runner/{summarizer.ts → viz/summarizer.ts} +21 -21
  385. package/dist/_type/prefix$.d.ts +0 -4
  386. package/dist/_type/prefix$.d.ts.map +0 -1
  387. package/dist/_type/prefix$.js.map +0 -1
  388. package/dist/kinds/apps.d.ts +0 -29
  389. package/dist/kinds/apps.d.ts.map +0 -1
  390. package/dist/kinds/apps.js.map +0 -1
  391. package/dist/kinds/batch.d.ts +0 -17
  392. package/dist/kinds/batch.d.ts.map +0 -1
  393. package/dist/kinds/batch.js.map +0 -1
  394. package/dist/kinds/default.d.ts +0 -73
  395. package/dist/kinds/default.d.ts.map +0 -1
  396. package/dist/kinds/default.js.map +0 -1
  397. package/dist/kinds/gateway.d.ts +0 -29
  398. package/dist/kinds/gateway.d.ts.map +0 -1
  399. package/dist/kinds/gateway.js.map +0 -1
  400. package/dist/kinds/index.d.ts.map +0 -1
  401. package/dist/kinds/index.js.map +0 -1
  402. package/dist/kinds/metrics.d.ts +0 -17
  403. package/dist/kinds/metrics.d.ts.map +0 -1
  404. package/dist/kinds/metrics.js.map +0 -1
  405. package/dist/kinds/networking.d.ts +0 -13
  406. package/dist/kinds/networking.d.ts.map +0 -1
  407. package/dist/kinds/networking.js.map +0 -1
  408. package/dist/kinds/rbac.d.ts +0 -25
  409. package/dist/kinds/rbac.d.ts.map +0 -1
  410. package/dist/kinds/rbac.js.map +0 -1
  411. package/dist/kinds/storage.d.ts +0 -17
  412. package/dist/kinds/storage.d.ts.map +0 -1
  413. package/dist/kinds/storage.js.map +0 -1
  414. package/dist/origins/file/modifier.d.ts +0 -10
  415. package/dist/origins/file/modifier.d.ts.map +0 -1
  416. package/dist/origins/file/modifier.js +0 -21
  417. package/dist/origins/file/modifier.js.map +0 -1
  418. package/dist/resources/config/config-keys-of.d.ts +0 -2
  419. package/dist/resources/config/config-keys-of.d.ts.map +0 -1
  420. package/dist/resources/config/config-keys-of.js +0 -3
  421. package/dist/resources/config/config-keys-of.js.map +0 -1
  422. package/dist/resources/config/key-ref.d.ts +0 -7
  423. package/dist/resources/config/key-ref.d.ts.map +0 -1
  424. package/dist/resources/config/key-ref.js +0 -13
  425. package/dist/resources/config/key-ref.js.map +0 -1
  426. package/dist/resources/cronjob/index.d.ts +0 -20
  427. package/dist/resources/cronjob/index.d.ts.map +0 -1
  428. package/dist/resources/cronjob/index.js +0 -37
  429. package/dist/resources/cronjob/index.js.map +0 -1
  430. package/dist/resources/deployment/deployment.d.ts +0 -30
  431. package/dist/resources/deployment/deployment.d.ts.map +0 -1
  432. package/dist/resources/deployment/deployment.js.map +0 -1
  433. package/dist/resources/deployment/index.d.ts.map +0 -1
  434. package/dist/resources/deployment/index.js.map +0 -1
  435. package/dist/resources/http-route/http-route.d.ts +0 -21
  436. package/dist/resources/http-route/http-route.d.ts.map +0 -1
  437. package/dist/resources/http-route/http-route.js +0 -45
  438. package/dist/resources/http-route/http-route.js.map +0 -1
  439. package/dist/resources/http-route/index.d.ts.map +0 -1
  440. package/dist/resources/http-route/index.js.map +0 -1
  441. package/dist/resources/persistent/block-mode.d.ts +0 -2
  442. package/dist/resources/persistent/block-mode.d.ts.map +0 -1
  443. package/dist/resources/persistent/block-mode.js.map +0 -1
  444. package/dist/resources/pod/container/container.d.ts +0 -47
  445. package/dist/resources/pod/container/container.d.ts.map +0 -1
  446. package/dist/resources/pod/container/container.js.map +0 -1
  447. package/dist/resources/pod/container/index.d.ts +0 -2
  448. package/dist/resources/pod/container/index.d.ts.map +0 -1
  449. package/dist/resources/pod/container/index.js.map +0 -1
  450. package/dist/resources/pod/container/mounts/device.d.ts +0 -17
  451. package/dist/resources/pod/container/mounts/device.d.ts.map +0 -1
  452. package/dist/resources/pod/container/mounts/device.js +0 -27
  453. package/dist/resources/pod/container/mounts/device.js.map +0 -1
  454. package/dist/resources/pod/container/mounts/volume.d.ts +0 -21
  455. package/dist/resources/pod/container/mounts/volume.d.ts.map +0 -1
  456. package/dist/resources/pod/container/mounts/volume.js.map +0 -1
  457. package/dist/resources/pod/container/mounts.d.ts +0 -3
  458. package/dist/resources/pod/container/mounts.d.ts.map +0 -1
  459. package/dist/resources/pod/container/mounts.js.map +0 -1
  460. package/dist/resources/pod/index.d.ts +0 -4
  461. package/dist/resources/pod/index.d.ts.map +0 -1
  462. package/dist/resources/pod/index.js.map +0 -1
  463. package/dist/resources/pod/pod-template.d.ts +0 -54
  464. package/dist/resources/pod/pod-template.d.ts.map +0 -1
  465. package/dist/resources/pod/pod-template.js +0 -119
  466. package/dist/resources/pod/pod-template.js.map +0 -1
  467. package/dist/resources/pod/volume/devices.d.ts +0 -24
  468. package/dist/resources/pod/volume/devices.d.ts.map +0 -1
  469. package/dist/resources/pod/volume/devices.js.map +0 -1
  470. package/dist/resources/pod/volume/index.d.ts +0 -3
  471. package/dist/resources/pod/volume/index.d.ts.map +0 -1
  472. package/dist/resources/pod/volume/index.js +0 -8
  473. package/dist/resources/pod/volume/index.js.map +0 -1
  474. package/dist/resources/pod/volume/volumes.d.ts +0 -66
  475. package/dist/resources/pod/volume/volumes.d.ts.map +0 -1
  476. package/dist/resources/pod/volume/volumes.js +0 -97
  477. package/dist/resources/pod/volume/volumes.js.map +0 -1
  478. package/dist/resources/service/index.d.ts.map +0 -1
  479. package/dist/resources/service/index.js.map +0 -1
  480. package/dist/resources/service/service-port.d.ts +0 -12
  481. package/dist/resources/service/service-port.d.ts.map +0 -1
  482. package/dist/resources/service/service-port.js.map +0 -1
  483. package/dist/resources/service/service.d.ts +0 -39
  484. package/dist/resources/service/service.d.ts.map +0 -1
  485. package/dist/resources/service/service.js.map +0 -1
  486. package/dist/resources/utils/adapters.d.ts +0 -7
  487. package/dist/resources/utils/adapters.d.ts.map +0 -1
  488. package/dist/resources/utils/adapters.js +0 -32
  489. package/dist/resources/utils/adapters.js.map +0 -1
  490. package/dist/runner/exporter/assembler.d.ts.map +0 -1
  491. package/dist/runner/exporter/assembler.js.map +0 -1
  492. package/dist/runner/exporter/index.d.ts +0 -3
  493. package/dist/runner/exporter/index.d.ts.map +0 -1
  494. package/dist/runner/exporter/index.js.map +0 -1
  495. package/dist/runner/exporter/loader.d.ts +0 -18
  496. package/dist/runner/exporter/loader.d.ts.map +0 -1
  497. package/dist/runner/exporter/loader.js.map +0 -1
  498. package/dist/runner/exporter/manifester.d.ts.map +0 -1
  499. package/dist/runner/exporter/manifester.js.map +0 -1
  500. package/dist/runner/exporter/meta.d.ts +0 -2
  501. package/dist/runner/exporter/meta.d.ts.map +0 -1
  502. package/dist/runner/exporter/meta.js.map +0 -1
  503. package/dist/runner/exporter/progress-shower.d.ts +0 -11
  504. package/dist/runner/exporter/progress-shower.d.ts.map +0 -1
  505. package/dist/runner/exporter/progress-shower.js +0 -69
  506. package/dist/runner/exporter/progress-shower.js.map +0 -1
  507. package/dist/runner/exporter/saver.d.ts.map +0 -1
  508. package/dist/runner/exporter/saver.js.map +0 -1
  509. package/dist/runner/exporter/serializer.d.ts +0 -19
  510. package/dist/runner/exporter/serializer.d.ts.map +0 -1
  511. package/dist/runner/exporter/serializer.js.map +0 -1
  512. package/dist/runner/exporter/stage.d.ts.map +0 -1
  513. package/dist/runner/exporter/stage.js.map +0 -1
  514. package/dist/runner/exporter/validator.d.ts +0 -16
  515. package/dist/runner/exporter/validator.d.ts.map +0 -1
  516. package/dist/runner/exporter/validator.js +0 -12
  517. package/dist/runner/exporter/validator.js.map +0 -1
  518. package/dist/runner/paths.d.ts +0 -2
  519. package/dist/runner/paths.d.ts.map +0 -1
  520. package/dist/runner/paths.js +0 -5
  521. package/dist/runner/paths.js.map +0 -1
  522. package/dist/runner/proverbs.d.ts +0 -2
  523. package/dist/runner/proverbs.d.ts.map +0 -1
  524. package/dist/runner/proverbs.js.map +0 -1
  525. package/dist/runner/silly/proverbs.d.ts +0 -7
  526. package/dist/runner/silly/proverbs.d.ts.map +0 -1
  527. package/dist/runner/silly/proverbs.js +0 -21
  528. package/dist/runner/silly/proverbs.js.map +0 -1
  529. package/dist/runner/summarizer.d.ts.map +0 -1
  530. package/dist/runner/summarizer.js.map +0 -1
  531. package/proverbs.txt +0 -20
  532. package/src/_type/prefix$.ts +0 -3
  533. package/src/origins/file/modifier.ts +0 -21
  534. package/src/resources/config/key-ref.ts +0 -8
  535. package/src/resources/cronjob/index.ts +0 -50
  536. package/src/resources/deployment/deployment.ts +0 -95
  537. package/src/resources/http-route/http-route.ts +0 -60
  538. package/src/resources/persistent/block-mode.ts +0 -1
  539. package/src/resources/pod/container/container.ts +0 -215
  540. package/src/resources/pod/container/mounts/device.ts +0 -33
  541. package/src/resources/pod/container/mounts/volume.ts +0 -38
  542. package/src/resources/pod/container/mounts.ts +0 -2
  543. package/src/resources/pod/index.ts +0 -3
  544. package/src/resources/pod/pod-template.ts +0 -166
  545. package/src/resources/pod/volume/devices.ts +0 -55
  546. package/src/resources/pod/volume/index.ts +0 -2
  547. package/src/resources/pod/volume/volumes.ts +0 -170
  548. package/src/resources/service/service-port.ts +0 -17
  549. package/src/resources/service/service.ts +0 -101
  550. package/src/resources/utils/adapters.ts +0 -29
  551. package/src/runner/exporter/index.ts +0 -2
  552. package/src/runner/exporter/validator.ts +0 -13
  553. package/src/runner/paths.ts +0 -1
  554. package/src/runner/proverbs.ts +0 -0
  555. package/src/runner/silly/proverbs.ts +0 -14
  556. /package/dist/{kinds → gvks}/apps.js +0 -0
  557. /package/dist/{kinds → gvks}/batch.js +0 -0
  558. /package/dist/{kinds → gvks}/default.js +0 -0
  559. /package/dist/{kinds → gvks}/gateway.js +0 -0
  560. /package/dist/{kinds → gvks}/index.d.ts +0 -0
  561. /package/dist/{kinds → gvks}/index.js +0 -0
  562. /package/dist/{kinds → gvks}/metrics.js +0 -0
  563. /package/dist/{kinds → gvks}/networking.js +0 -0
  564. /package/dist/{kinds → gvks}/rbac.js +0 -0
  565. /package/dist/{kinds → gvks}/storage.js +0 -0
  566. /package/dist/resources/{http-route → network/http-route}/index.d.ts +0 -0
  567. /package/dist/resources/{http-route → network/http-route}/index.js +0 -0
  568. /package/dist/resources/{service → network/service}/index.d.ts +0 -0
  569. /package/dist/resources/{service → network/service}/index.js +0 -0
  570. /package/dist/resources/{deployment → workload/deployment}/index.d.ts +0 -0
  571. /package/dist/resources/{deployment → workload/deployment}/index.js +0 -0
  572. /package/src/{kinds → gvks}/apps.ts +0 -0
  573. /package/src/{kinds → gvks}/batch.ts +0 -0
  574. /package/src/{kinds → gvks}/default.ts +0 -0
  575. /package/src/{kinds → gvks}/gateway.ts +0 -0
  576. /package/src/{kinds → gvks}/index.ts +0 -0
  577. /package/src/{kinds → gvks}/metrics.ts +0 -0
  578. /package/src/{kinds → gvks}/networking.ts +0 -0
  579. /package/src/{kinds → gvks}/rbac.ts +0 -0
  580. /package/src/{kinds → gvks}/storage.ts +0 -0
  581. /package/src/resources/{config/config-keys-of.ts → annotations.ts} +0 -0
  582. /package/src/resources/{http-route → network/http-route}/index.ts +0 -0
  583. /package/src/resources/{service → network/service}/index.ts +0 -0
  584. /package/src/resources/{deployment → workload/deployment}/index.ts +0 -0
  585. /package/src/{runner/exporter/meta.ts → util/merge.ts} +0 -0
@@ -1,34 +1,13 @@
1
- import { Ident_Kind, Rsc_Top, type Ident_Group } from "@k8ts/instruments"
2
- import { CDK } from "@k8ts/sample-interfaces"
1
+ import { K8sResource } from "@k8ts/instruments"
2
+ import { K8S } from "@k8ts/sample-interfaces"
3
3
  import { seq } from "doddle"
4
- import { rbac } from "../../kinds/rbac"
5
- export interface ClusterRole_Rule<
6
- Groups extends Ident_Group[] = Ident_Group[],
7
- Resources extends Ident_Kind<Groups[number]["name"], string, string>[] = Ident_Kind[]
4
+ import { merge } from "lodash"
5
+ import { rbac } from "../../gvks/rbac"
6
+ import { type ClusterRole_Props, type ClusterRole_Rule, ClusterRole_Scope } from "./role-props"
7
+ export class ClusterRole<Name extends string = string> extends K8sResource<
8
+ Name,
9
+ ClusterRole_Props
8
10
  > {
9
- resources: Resources
10
- verbs: Verbs[]
11
- }
12
- export type ClusterRole_RuleProducer<Rules extends ClusterRole_Rule> = (
13
- scope: ClusterRole_Scope
14
- ) => Iterable<Rules>
15
- class ClusterRole_Scope {
16
- Rule<const R extends Ident_Kind[]>(...resources: R) {
17
- return {
18
- verbs(...verbs: Verbs[]) {
19
- return {
20
- resources: resources,
21
- verbs: verbs
22
- }
23
- }
24
- }
25
- }
26
- }
27
- export interface ClusterRole_Props<Rules extends ClusterRole_Rule = ClusterRole_Rule> {
28
- rules: ClusterRole_RuleProducer<Rules>
29
- }
30
-
31
- export class ClusterRole<Name extends string = string> extends Rsc_Top<Name, ClusterRole_Props> {
32
11
  get kind() {
33
12
  return rbac.v1.ClusterRole._
34
13
  }
@@ -38,21 +17,22 @@ export class ClusterRole<Name extends string = string> extends Rsc_Top<Name, Clu
38
17
 
39
18
  private _fromObject(rule: ClusterRole_Rule) {
40
19
  return {
41
- apiGroups: Array.from(new Set(rule.resources.map(x => x.parent.parent.name))),
20
+ apiGroups: Array.from(new Set(rule.resources.map(x => x.parent.parent.value))),
42
21
  resources: rule.resources.map(r => r.plural),
43
22
  verbs: rule.verbs
44
23
  }
45
24
  }
46
- protected body(): CDK.KubeClusterRoleProps {
47
- const rules = seq(this.props.rules(new ClusterRole_Scope()))
25
+ protected __body__(): K8S.KubeClusterRoleProps {
26
+ const rules = seq(this.props.rules$(new ClusterRole_Scope()))
48
27
  .map(rule => {
49
28
  return this._fromObject(rule)
50
29
  })
51
30
  .toArray()
52
31
  .pull()
53
- return {
32
+ const body = {
54
33
  rules: rules
55
34
  }
35
+ return merge(body, this.props.$$manifest)
56
36
  }
57
37
  }
58
38
 
@@ -65,32 +45,3 @@ export type Verbs =
65
45
  | "patch"
66
46
  | "delete"
67
47
  | "deletecollection"
68
-
69
- export type ApiGroup =
70
- | "namespaces"
71
- | "pods"
72
- | "services"
73
- | "endpoints"
74
- | "persistentvolumeclaims"
75
- | "events"
76
- | "configmaps"
77
- | "secrets"
78
- | "httproutes"
79
- | "gateways"
80
- | "jobs"
81
- | "cronjobs"
82
- | "deployments"
83
- | "replicasets"
84
- | "statefulsets"
85
- | "daemonsets"
86
- | "podtemplates"
87
- | "clusterroles"
88
- | "roles"
89
- | "rolebindings"
90
- | "clusterrolebindings"
91
- | "serviceaccounts"
92
- | "nodes"
93
- | "persistentvolumes"
94
- | "storageclasses"
95
- | "volumeattachments"
96
- | "persistentvolumeclaims"
@@ -0,0 +1,26 @@
1
+ import type { Gvk, Resource_Props_Top } from "@k8ts/instruments"
2
+ import type { K8S } from "@k8ts/sample-interfaces"
3
+ import type { Verbs } from "./cluster-role"
4
+ export interface ClusterRole_Rule<Resources extends Gvk[] = Gvk[]> {
5
+ resources: Resources
6
+ verbs: Verbs[]
7
+ }
8
+ export type ClusterRole_RuleProducer<Rules extends ClusterRole_Rule> = (
9
+ Role: ClusterRole_Scope
10
+ ) => Iterable<Rules>
11
+ export class ClusterRole_Scope {
12
+ Rule<const R extends Gvk[]>(...resources: R) {
13
+ return {
14
+ verbs(...verbs: Verbs[]) {
15
+ return {
16
+ resources: resources,
17
+ verbs: verbs
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
23
+ export interface ClusterRole_Props<Rules extends ClusterRole_Rule = ClusterRole_Rule>
24
+ extends Resource_Props_Top<K8S.KubeClusterRoleProps> {
25
+ rules$: ClusterRole_RuleProducer<Rules>
26
+ }
@@ -1,25 +1,27 @@
1
- import { Rsc_Top } from "@k8ts/instruments"
2
- import { CDK } from "@k8ts/sample-interfaces"
3
- import { v1 } from "../../kinds/default"
4
- export interface ServiceAccount_Props {
5
- automountToken?: boolean
6
- imagePullSecrets?: string[]
1
+ import { K8sResource, type Resource_Props_Top } from "@k8ts/instruments"
2
+ import { K8S } from "@k8ts/sample-interfaces"
3
+ import { merge } from "lodash"
4
+ import { v1 } from "../../gvks/default"
5
+ export interface ServiceAccount_Props extends Resource_Props_Top<K8S.KubeServiceAccountProps> {
6
+ $automountToken?: boolean
7
+ $imagePullSecrets?: string[]
7
8
  }
8
9
 
9
- export class ServiceAccount<Name extends string = string> extends Rsc_Top<
10
+ export class ServiceAccount<Name extends string = string> extends K8sResource<
10
11
  Name,
11
12
  ServiceAccount_Props
12
13
  > {
13
14
  get kind() {
14
15
  return v1.ServiceAccount._
15
16
  }
16
- protected body(): CDK.KubeServiceAccountProps {
17
+ protected __body__(): K8S.KubeServiceAccountProps {
17
18
  const self = this
18
- return {
19
- automountServiceAccountToken: self.props.automountToken,
20
- imagePullSecrets: self.props.imagePullSecrets?.map(name => ({
19
+ const body = {
20
+ automountServiceAccountToken: self.props.$automountToken,
21
+ imagePullSecrets: self.props.$imagePullSecrets?.map(name => ({
21
22
  name
22
23
  }))
23
- }
24
+ } satisfies K8S.KubeServiceAccountProps
25
+ return merge(body, self.props.$$manifest)
24
26
  }
25
27
  }
@@ -0,0 +1,74 @@
1
+ import {
2
+ CronStanza,
3
+ K8sResource,
4
+ TemplateOrigin,
5
+ type Cron_Record,
6
+ type Resource_Props_Top,
7
+ type ResourceRef,
8
+ type Timezone
9
+ } from "@k8ts/instruments"
10
+ import { type Metadata_Input } from "@k8ts/metadata"
11
+ import { K8S } from "@k8ts/sample-interfaces"
12
+ import { doddlify } from "doddle"
13
+ import { merge, omitBy } from "lodash"
14
+ import { batch } from "../../../gvks/batch"
15
+ import { Pod, Pod_Props } from "../pod/pod"
16
+ import { createSelectionMetadata } from "../util"
17
+ export interface CronJob_Props<CronSpec extends Cron_Record>
18
+ extends Resource_Props_Top<K8S.KubeCronJobProps> {
19
+ $schedule: CronStanza<CronSpec>
20
+ $template: Pod_Props<never> & {
21
+ restartPolicy: "Always" | "OnFailure" | "Never"
22
+ }
23
+ $metadata?: Metadata_Input
24
+ timeZone: Timezone
25
+ }
26
+
27
+ export class CronJob<
28
+ Name extends string = string,
29
+ Cron extends Cron_Record = Cron_Record
30
+ > extends K8sResource<Name, CronJob_Props<Cron>> {
31
+ private _template = new TemplateOrigin("CronJobTemplate", {
32
+ owner: this
33
+ })
34
+ get kind() {
35
+ return batch.v1.CronJob._
36
+ }
37
+ get selectorLabels() {
38
+ return createSelectionMetadata(this)
39
+ }
40
+ @doddlify
41
+ get PodTemplate() {
42
+ const p = new Pod(this.ident.name, this.props.$template, {
43
+ origins: {
44
+ own: this._template,
45
+ subscope: this.__origin__
46
+ },
47
+ metadata: this.selectorLabels
48
+ })
49
+ return p
50
+ }
51
+
52
+ protected __kids__(): Iterable<ResourceRef> {
53
+ this.PodTemplate
54
+ return super.__kids__()
55
+ }
56
+
57
+ protected async __body__(): Promise<K8S.KubeCronJobProps> {
58
+ const self = this
59
+ const template = await self.PodTemplate["__manifest__"]()
60
+ const object = {
61
+ spec: {
62
+ ...omitBy(self.props, (x, k) => k.startsWith("$") || k === "timeZone"),
63
+ schedule: self.props.$schedule.toString(),
64
+ timeZone: self.props.timeZone,
65
+ jobTemplate: {
66
+ spec: {
67
+ template: template
68
+ }
69
+ }
70
+ }
71
+ }
72
+ return merge(object, self.props.$$manifest)
73
+ }
74
+ }
@@ -0,0 +1,82 @@
1
+ import { K8sResource, ResourceRef, TemplateOrigin } from "@k8ts/instruments"
2
+ import { K8S } from "@k8ts/sample-interfaces"
3
+ import { doddlify } from "doddle"
4
+ import { merge, omit } from "lodash"
5
+ import { apps } from "../../../gvks/apps"
6
+ import { K8tsResourceError } from "../../errors"
7
+ import { Pod } from "../pod/pod"
8
+ import { createSelectionMetadata } from "../util"
9
+ import type { Workload_Ref } from "../workload-ref"
10
+ import type { DaemonSet_Props } from "./props"
11
+
12
+ export class DaemonSet<Name extends string, Ports extends string = string>
13
+ extends K8sResource<Name, DaemonSet_Props<Ports>>
14
+ implements Workload_Ref<Ports>
15
+ {
16
+ private _template = new TemplateOrigin("DaemonSetTemplate", {
17
+ owner: this
18
+ })
19
+ get kind() {
20
+ return apps.v1.DaemonSet._
21
+ }
22
+
23
+ get selectorLabels() {
24
+ return createSelectionMetadata(this)
25
+ }
26
+
27
+ protected __kids__(): Iterable<ResourceRef> {
28
+ return [this.PodTemplate]
29
+ }
30
+
31
+ protected async __body__(): Promise<K8S.KubeDaemonSetProps> {
32
+ const self = this
33
+ const template = await self.PodTemplate["__manifest__"]()
34
+ const noKindFields = omit(template, ["kind", "apiVersion"])
35
+ const spec = {
36
+ selector: {
37
+ matchLabels: this.selectorLabels.labels
38
+ },
39
+ template: noKindFields,
40
+ updateStrategy: self._updateStrategy
41
+ } satisfies K8S.DaemonSetSpec
42
+ const spec2 = merge(spec, self.props.$$manifest)
43
+ return {
44
+ spec: spec2
45
+ }
46
+ }
47
+
48
+ private get _updateStrategy() {
49
+ const strategy = this.props.$updateStrategy
50
+ if (!strategy) {
51
+ return undefined
52
+ }
53
+ if (strategy.type === "OnDelete") {
54
+ return { type: "OnDelete" }
55
+ }
56
+ if (strategy.type === "RollingUpdate") {
57
+ return {
58
+ type: "RollingUpdate",
59
+ rollingUpdate: omit(strategy, "type")
60
+ }
61
+ }
62
+ throw new K8tsResourceError(`Invalid update strategy type: ${strategy}`)
63
+ }
64
+
65
+ @doddlify
66
+ get PodTemplate() {
67
+ const self = this
68
+ const resource = new Pod(`${self.ident.name}`, self.props.$template, {
69
+ origins: {
70
+ subscope: self.__origin__,
71
+ own: self._template
72
+ },
73
+ metadata: this.selectorLabels
74
+ })
75
+
76
+ return resource
77
+ }
78
+
79
+ get ports() {
80
+ return this.PodTemplate.ports
81
+ }
82
+ }
@@ -0,0 +1 @@
1
+ export * from "./daemonset"
@@ -0,0 +1,19 @@
1
+ import type { Resource_Props_Top } from "@k8ts/instruments"
2
+ import type { K8S } from "@k8ts/sample-interfaces"
3
+ import type { Pod_Props } from "../../.."
4
+
5
+ export interface DaemonSet_UpdateStrategy_RollingUpdate extends K8S.RollingUpdateDaemonSet {
6
+ type: "RollingUpdate"
7
+ }
8
+ export interface DaemonSet_UpdateStrategy_OnDelete {
9
+ type: "OnDelete"
10
+ }
11
+ export type DaemonSet_UpdateStrategy =
12
+ | DaemonSet_UpdateStrategy_RollingUpdate
13
+ | DaemonSet_UpdateStrategy_OnDelete
14
+
15
+ export interface DaemonSet_Props<Ports extends string>
16
+ extends Resource_Props_Top<K8S.DaemonSetSpec> {
17
+ $template: Pod_Props<Ports>
18
+ $updateStrategy?: DaemonSet_UpdateStrategy
19
+ }
@@ -0,0 +1,79 @@
1
+ import { K8sResource, ResourceRef, TemplateOrigin } from "@k8ts/instruments"
2
+ import { K8S } from "@k8ts/sample-interfaces"
3
+ import { doddlify } from "doddle"
4
+ import { merge, omit } from "lodash"
5
+ import { apps } from "../../../gvks/apps"
6
+ import { K8tsResourceError } from "../../errors"
7
+ import { Pod } from "../pod/pod"
8
+ import { createSelectionMetadata } from "../util"
9
+ import type { Workload_Ref } from "../workload-ref"
10
+ import type { Deployment_Props } from "./props"
11
+ export class Deployment<Name extends string, Ports extends string = string>
12
+ extends K8sResource<Name, Deployment_Props<Ports>>
13
+ implements Workload_Ref<Ports>
14
+ {
15
+ private _template = new TemplateOrigin("DeploymentTemplate", {
16
+ owner: this
17
+ })
18
+ get kind() {
19
+ return apps.v1.Deployment._
20
+ }
21
+
22
+ get selectorLabels() {
23
+ return createSelectionMetadata(this)
24
+ }
25
+
26
+ protected __kids__(): Iterable<ResourceRef> {
27
+ return [this.PodTemplate]
28
+ }
29
+ protected async __body__(): Promise<K8S.KubeDeploymentProps> {
30
+ const self = this
31
+ const template = await self.PodTemplate["__manifest__"]()
32
+ const noKindFields = omit(template, ["kind", "apiVersion"])
33
+ const spec = {
34
+ replicas: self.props.$replicas,
35
+ selector: {
36
+ matchLabels: this.selectorLabels.labels
37
+ },
38
+ template: noKindFields,
39
+ strategy: self._strategy
40
+ } satisfies K8S.DeploymentSpec
41
+ const spec2 = merge(spec, self.props.$$manifest)
42
+ return {
43
+ spec: spec2
44
+ }
45
+ }
46
+ private get _strategy() {
47
+ const strat = this.props.$strategy
48
+ if (!strat) {
49
+ return undefined
50
+ }
51
+ if (strat.type === "Recreate") {
52
+ return strat
53
+ }
54
+ if (strat.type === "RollingUpdate") {
55
+ return {
56
+ type: "RollingUpdate",
57
+ rollingUpdate: omit(strat, "type")
58
+ }
59
+ }
60
+ throw new K8tsResourceError(`Invalid strategy type: ${strat}`)
61
+ }
62
+
63
+ @doddlify
64
+ get PodTemplate() {
65
+ const self = this
66
+ const resource = new Pod(`${self.ident.name}`, self.props.$template, {
67
+ origins: {
68
+ own: self._template,
69
+ subscope: self.__origin__
70
+ },
71
+ metadata: this.selectorLabels
72
+ })
73
+ return resource
74
+ }
75
+
76
+ get ports() {
77
+ return this.PodTemplate.ports
78
+ }
79
+ }
@@ -0,0 +1,19 @@
1
+ import type { Resource_Props_Top } from "@k8ts/instruments"
2
+ import type { K8S } from "@k8ts/sample-interfaces"
3
+ import type { Pod_Props } from "../../.."
4
+
5
+ export interface Deployment_Strategy_RollingUpdate extends K8S.RollingUpdateDeployment {
6
+ type: "RollingUpdate"
7
+ options?: K8S.RollingUpdateDeployment
8
+ }
9
+ export interface Deployment_Strategy_Recreate {
10
+ type: "Recreate"
11
+ }
12
+ export type Deployment_Strategy = Deployment_Strategy_RollingUpdate | Deployment_Strategy_Recreate
13
+
14
+ export interface Deployment_Props<Ports extends string>
15
+ extends Resource_Props_Top<K8S.DeploymentSpec> {
16
+ $replicas?: number
17
+ $template: Pod_Props<Ports>
18
+ $strategy?: Deployment_Strategy
19
+ }
@@ -0,0 +1,6 @@
1
+ export * from "./cronjob"
2
+ export * from "./daemonset"
3
+ export * from "./deployment"
4
+ export * from "./pod/pod"
5
+ export * from "./statefulset"
6
+ export * from "./workload-ref"
@@ -0,0 +1,227 @@
1
+ import {
2
+ PortExports,
3
+ Reqs,
4
+ Units,
5
+ type Cmd,
6
+ type Image,
7
+ type PortExports_Input,
8
+ type Resource_Props,
9
+ type ResourceRef
10
+ } from "@k8ts/instruments"
11
+ import type { K8S } from "@k8ts/sample-interfaces"
12
+
13
+ import { K8sResource, ResourceEntity, ResourcePart } from "@k8ts/instruments"
14
+ import { seq } from "doddle"
15
+ import { mapKeys, mapValues, merge } from "lodash"
16
+ import { Env } from "../../../../env"
17
+ import type { EnvValue } from "../../../../env/types"
18
+ import { v1 } from "../../../../gvks/default"
19
+ import { K8tsResourceError } from "../../../errors"
20
+ import { PodDevice, PodVolume } from "../volume"
21
+ import { ContainerDeviceMount, type ContainerDeviceMount_Input } from "./mounts/device"
22
+ import { ContainerVolumeMount, type ContainerVolumeMount_Unbound } from "./mounts/volume"
23
+ import { toContainerPorts } from "./utils"
24
+ const container_ResourcesSpec = new Reqs({
25
+ cpu: Units.Cpu,
26
+ memory: Units.Data
27
+ })
28
+
29
+ type PodContainerResources = (typeof container_ResourcesSpec)["__INPUT__"]
30
+ type PodContainerMountAny =
31
+ | ContainerVolumeMount_Unbound
32
+ | ContainerDeviceMount_Input
33
+ | ResourceRef<v1.Pod.Device._>
34
+ | ResourceRef<v1.Pod.Volume._>
35
+ export type PodContainer_Mounts = {
36
+ [key: string]: PodContainerMountAny
37
+ }
38
+
39
+ export interface PodContainer_EnvFromItem {
40
+ source: ResourceRef<v1.ConfigMap._> | ResourceRef<v1.Secret._>
41
+ prefix?: string
42
+ optional?: boolean
43
+ }
44
+ export interface PodContainer_Props<
45
+ Ports extends string = never,
46
+ _Env extends Record<string, EnvValue> = Record<string, EnvValue>
47
+ > extends Resource_Props<Partial<K8S.Container>> {
48
+ $image: Image
49
+ $ports?: PortExports_Input<Ports>
50
+ $command?: Cmd
51
+ $mounts?: PodContainer_Mounts
52
+ $env?: _Env
53
+ $envFrom?: PodContainer_EnvFromItem[]
54
+ $resources?: PodContainerResources
55
+ }
56
+
57
+ export class PodContainer<Ports extends string = string> extends ResourcePart<
58
+ PodContainer_Props<Ports>
59
+ > {
60
+ __PORTS__!: Ports
61
+ get kind() {
62
+ return v1.Pod.Container._
63
+ }
64
+
65
+ protected __needs__(): Record<string, ResourceRef | ResourceRef[]> {
66
+ const a = this.mounts
67
+ return mapValues(
68
+ mapKeys(a, x => x.path),
69
+ x => x.backend
70
+ )
71
+ }
72
+ get mounts() {
73
+ return seq(Object.entries(this.props.$mounts ?? {}))
74
+ .map(([path, mount]: [string, PodContainerMountAny]) => {
75
+ if ("kind" in mount) {
76
+ var backend = mount
77
+ } else {
78
+ var backend = mount.$backend
79
+ }
80
+ if (backend.is(PodDevice)) {
81
+ return new ContainerDeviceMount(this, {
82
+ $backend: backend,
83
+ mountPath: path
84
+ })
85
+ } else if (backend.is(PodVolume)) {
86
+ const x = mount as any
87
+ return new ContainerVolumeMount(this, {
88
+ $backend: backend,
89
+ mountPath: path,
90
+ readOnly: x.readOnly,
91
+ subPath: x.subPath
92
+ })
93
+ }
94
+ throw new K8tsResourceError(`Unsupported mount backend type: ${backend}`)
95
+ })
96
+ .filter(x => !x.props.$noEmit)
97
+ .toArray()
98
+ .pull()
99
+ }
100
+
101
+ get volumes() {
102
+ return seq(this.mounts.map(x => x.backend))
103
+ .filter(x => {
104
+ const a = 1
105
+ return !x.noEmit
106
+ })
107
+
108
+ .uniq()
109
+ .toArray()
110
+ .pull()
111
+ }
112
+ get ports() {
113
+ return PortExports(this.props.$ports)
114
+ }
115
+ protected __submanifest__(): K8S.Container {
116
+ const self = this
117
+ const { $image, $ports, $command, $env } = self.props
118
+ let resourcesObject = self._resources()?.toObject()
119
+ const pex = PortExports($ports)
120
+ const containerPorts = $ports && toContainerPorts(pex)
121
+
122
+ const env = Env($env)
123
+ for (const [key, value] of env.entries) {
124
+ if (typeof value !== "object") {
125
+ continue
126
+ }
127
+ if (!value) {
128
+ continue
129
+ }
130
+ const backend = value.$backend
131
+ if (backend instanceof ResourceEntity) {
132
+ if (backend.ident.namespace !== self.ident.namespace) {
133
+ throw new K8tsResourceError(
134
+ `Environment variable reference "${key}" must be in the same namespace as the container "${self}", but was ${backend}"`
135
+ )
136
+ }
137
+ }
138
+ }
139
+ for (const vol of self.volumes) {
140
+ if (vol.ident.namespace !== self.ident.namespace) {
141
+ throw new K8tsResourceError(
142
+ `Volume reference "${vol}" had an inherited namespace ${vol.ident.namespace}, which is different from the container "${self}"`
143
+ )
144
+ }
145
+ }
146
+ const envFroms = (self.props.$envFrom ?? []).map(ef => {
147
+ const source = ef.source as any as ResourceEntity
148
+ if (source.ident.namespace !== self.ident.namespace) {
149
+ throw new K8tsResourceError(
150
+ `EnvFrom source reference "${source}" must be in the same namespace as the container "${self}"`
151
+ )
152
+ }
153
+ if (source.is(v1.Secret._)) {
154
+ return {
155
+ secretRef: {
156
+ optional: ef.optional,
157
+ name: source.ident.name
158
+ }
159
+ } as K8S.EnvFromSource
160
+ } else if (source.is(v1.ConfigMap._)) {
161
+ return {
162
+ configMapRef: {
163
+ optional: ef.optional,
164
+ name: source.ident.name
165
+ }
166
+ } as K8S.EnvFromSource
167
+ } else {
168
+ throw new K8tsResourceError(
169
+ `EnvFrom source reference "${source}" must be a ConfigMap or Secret, but was ${source.kind}`
170
+ )
171
+ }
172
+ })
173
+ const container: K8S.Container = {
174
+ name: self.ident.name,
175
+ image: $image.toString(),
176
+ ports: containerPorts,
177
+ resources: resourcesObject,
178
+ command: $command?.toArray(),
179
+ env: Env($env).toEnvVars(),
180
+ envFrom: envFroms,
181
+ ...self._groupedMounts()
182
+ }
183
+ return merge(container, self.props.$$manifest)
184
+ }
185
+ constructor(
186
+ parent: ResourceEntity,
187
+ name: string,
188
+ readonly subtype: "init" | "main",
189
+ override readonly props: PodContainer_Props<Ports>
190
+ ) {
191
+ super(parent, name, props)
192
+ }
193
+
194
+ private _groupedMounts() {
195
+ const volumeMounts = [] as K8S.VolumeMount[]
196
+ const volumeDevices = [] as K8S.VolumeDevice[]
197
+ for (const mnt of this.mounts) {
198
+ if (mnt.backend.is(PodDevice)) {
199
+ const deviceMount = mnt as ContainerDeviceMount
200
+ volumeDevices!.push(deviceMount["__submanifest__"]())
201
+ } else if (mnt.backend.is(PodVolume)) {
202
+ const volumeMount = mnt as ContainerVolumeMount
203
+ volumeMounts!.push(volumeMount["__submanifest__"]())
204
+ }
205
+ }
206
+ return {
207
+ volumeMounts: volumeMounts.length > 0 ? volumeMounts : undefined,
208
+ volumeDevices: volumeDevices.length > 0 ? volumeDevices : undefined
209
+ }
210
+ }
211
+ private _resources() {
212
+ if (!this.props.$resources) {
213
+ return undefined
214
+ }
215
+ const result = container_ResourcesSpec.parse(this.props.$resources)
216
+ return result
217
+ }
218
+ }
219
+
220
+ export function make<Ports extends string>(
221
+ parent: K8sResource,
222
+ name: string,
223
+ subtype: "init" | "main",
224
+ props: PodContainer_Props<Ports>
225
+ ) {
226
+ return new PodContainer(parent, name, subtype, props)
227
+ }
@@ -1 +1,2 @@
1
1
  export * from "./container"
2
+ export * from "./ref"