dapp 0.10.2 → 0.36.24

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 (287) hide show
  1. checksums.yaml +5 -5
  2. data/bin/dapp +77 -15
  3. data/config/en/common.yml +20 -11
  4. data/config/en/net_status.yml +108 -27
  5. data/lib/dapp/cli/cli.rb +1 -0
  6. data/lib/dapp/cli/command/base.rb +111 -0
  7. data/lib/dapp/cli/command/sample/base.rb +28 -0
  8. data/lib/dapp/cli/command/sample/create.rb +24 -0
  9. data/lib/dapp/cli/command/sample/list.rb +25 -0
  10. data/lib/dapp/cli/command/sample.rb +20 -0
  11. data/lib/dapp/cli/command/slug.rb +26 -0
  12. data/lib/dapp/cli/command/update.rb +65 -0
  13. data/lib/dapp/cli/options/ssh.rb +18 -0
  14. data/lib/dapp/cli/options/tag.rb +51 -0
  15. data/lib/dapp/cli.rb +11 -3
  16. data/lib/dapp/config/config.rb +21 -0
  17. data/lib/dapp/config/directive/base.rb +100 -3
  18. data/lib/dapp/core_ext/hash.rb +14 -0
  19. data/lib/dapp/core_ext/pathname.rb +6 -4
  20. data/lib/dapp/dapp/chef.rb +1 -9
  21. data/lib/dapp/dapp/command/common.rb +24 -0
  22. data/lib/dapp/dapp/command/sample/common.rb +54 -0
  23. data/lib/dapp/dapp/command/sample/create.rb +57 -0
  24. data/lib/dapp/dapp/command/sample/list.rb +13 -0
  25. data/lib/dapp/dapp/command/slug.rb +11 -0
  26. data/lib/dapp/dapp/dapp_config.rb +85 -0
  27. data/lib/dapp/dapp/dappfile.rb +108 -27
  28. data/lib/dapp/dapp/deps/base.rb +9 -32
  29. data/lib/dapp/dapp/deps/common.rb +26 -0
  30. data/lib/dapp/dapp/deps/gitartifact.rb +2 -20
  31. data/lib/dapp/dapp/deps/toolchain.rb +11 -0
  32. data/lib/dapp/dapp/git_artifact.rb +6 -4
  33. data/lib/dapp/dapp/lock.rb +6 -5
  34. data/lib/dapp/dapp/logging/base.rb +32 -20
  35. data/lib/dapp/dapp/logging/i18n.rb +5 -1
  36. data/lib/dapp/dapp/logging/process.rb +6 -6
  37. data/lib/dapp/dapp/option_tags.rb +98 -0
  38. data/lib/dapp/dapp/ruby2go.rb +130 -0
  39. data/lib/dapp/dapp/sentry.rb +97 -0
  40. data/lib/dapp/dapp/shellout/base.rb +26 -18
  41. data/lib/dapp/dapp/shellout/streaming.rb +2 -2
  42. data/lib/dapp/dapp/slug.rb +12 -0
  43. data/lib/dapp/dapp/ssh_agent.rb +25 -7
  44. data/lib/dapp/dapp.rb +192 -41
  45. data/lib/dapp/deployment.rb +1 -0
  46. data/lib/dapp/dimg/artifact.rb +12 -4
  47. data/lib/dapp/dimg/build/stage/artifact_base.rb +26 -30
  48. data/lib/dapp/dimg/build/stage/artifact_default.rb +50 -28
  49. data/lib/dapp/dimg/build/stage/base.rb +187 -52
  50. data/lib/dapp/dimg/build/stage/before_install.rb +4 -15
  51. data/lib/dapp/dimg/build/stage/before_install_artifact.rb +4 -0
  52. data/lib/dapp/dimg/build/stage/before_setup.rb +1 -20
  53. data/lib/dapp/dimg/build/stage/build_artifact.rb +1 -20
  54. data/lib/dapp/dimg/build/stage/docker_instructions.rb +5 -4
  55. data/lib/dapp/dimg/build/stage/from.rb +62 -9
  56. data/lib/dapp/dimg/build/stage/ga_archive.rb +14 -1
  57. data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +1 -5
  58. data/lib/dapp/dimg/build/stage/ga_base.rb +5 -35
  59. data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +15 -34
  60. data/lib/dapp/dimg/build/stage/ga_related_base.rb +21 -0
  61. data/lib/dapp/dimg/build/stage/import_artifact.rb +22 -11
  62. data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +6 -2
  63. data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +6 -2
  64. data/lib/dapp/dimg/build/stage/install/install.rb +1 -19
  65. data/lib/dapp/dimg/build/stage/instructions.rb +27 -0
  66. data/lib/dapp/dimg/build/stage/mod/group.rb +19 -7
  67. data/lib/dapp/dimg/build/stage/mod/logging.rb +15 -19
  68. data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +24 -1
  69. data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +6 -2
  70. data/lib/dapp/dimg/build/stage/setup/setup.rb +1 -19
  71. data/lib/dapp/dimg/builder/ansible.rb +5 -0
  72. data/lib/dapp/dimg/builder/chef/cookbook.rb +8 -8
  73. data/lib/dapp/dimg/builder/chef.rb +29 -16
  74. data/lib/dapp/dimg/builder/none.rb +1 -34
  75. data/lib/dapp/dimg/builder/ruby2go.rb +57 -0
  76. data/lib/dapp/dimg/builder/shell.rb +1 -20
  77. data/lib/dapp/dimg/cli/cli.rb +2 -1
  78. data/lib/dapp/dimg/cli/command/base.rb +24 -0
  79. data/lib/dapp/dimg/cli/command/dimg/bp.rb +60 -0
  80. data/lib/dapp/dimg/cli/command/dimg/build.rb +43 -0
  81. data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/export.rb +9 -4
  82. data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/import.rb +4 -4
  83. data/lib/dapp/dimg/cli/{build_context.rb → command/dimg/build_context.rb} +5 -5
  84. data/lib/dapp/dimg/cli/{cleanup.rb → command/dimg/cleanup.rb} +4 -6
  85. data/lib/dapp/dimg/cli/command/dimg/cleanup_repo.rb +47 -0
  86. data/lib/dapp/dimg/cli/command/dimg/flush_local.rb +24 -0
  87. data/lib/dapp/dimg/cli/command/dimg/flush_repo.rb +36 -0
  88. data/lib/dapp/dimg/cli/{list.rb → command/dimg/list.rb} +6 -3
  89. data/lib/dapp/dimg/cli/{mrproper.rb → command/dimg/mrproper.rb} +4 -4
  90. data/lib/dapp/dimg/cli/command/dimg/push.rb +39 -0
  91. data/lib/dapp/dimg/cli/{run.rb → command/dimg/run.rb} +30 -15
  92. data/lib/dapp/dimg/cli/{spush.rb → command/dimg/spush.rb} +4 -4
  93. data/lib/dapp/dimg/cli/{stage_image.rb → command/dimg/stage_image.rb} +12 -3
  94. data/lib/dapp/dimg/cli/command/dimg/stages/base.rb +13 -0
  95. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_local.rb +13 -9
  96. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_repo.rb +6 -8
  97. data/lib/dapp/dimg/cli/command/dimg/stages/flush_local.rb +21 -0
  98. data/lib/dapp/dimg/cli/command/dimg/stages/flush_repo.rb +28 -0
  99. data/lib/dapp/dimg/cli/command/dimg/stages/pull.rb +34 -0
  100. data/lib/dapp/dimg/cli/command/dimg/stages/push.rb +30 -0
  101. data/lib/dapp/dimg/cli/command/dimg/stages.rb +22 -0
  102. data/lib/dapp/dimg/cli/command/dimg/tag.rb +24 -0
  103. data/lib/dapp/dimg/cli/command/dimg.rb +31 -0
  104. data/lib/dapp/dimg/cli/options/introspection.rb +45 -0
  105. data/lib/dapp/dimg/config/config.rb +24 -0
  106. data/lib/dapp/dimg/config/directive/artifact.rb +13 -15
  107. data/lib/dapp/dimg/config/directive/artifact_base.rb +13 -8
  108. data/lib/dapp/dimg/config/directive/artifact_dimg.rb +12 -0
  109. data/lib/dapp/dimg/config/directive/artifact_group.rb +60 -0
  110. data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +203 -0
  111. data/lib/dapp/dimg/config/directive/dimg/validation.rb +217 -0
  112. data/lib/dapp/dimg/config/directive/dimg.rb +36 -0
  113. data/lib/dapp/dimg/config/directive/dimg_group.rb +73 -0
  114. data/lib/dapp/dimg/config/directive/dimg_group_base.rb +46 -0
  115. data/lib/dapp/dimg/config/directive/docker/artifact.rb +5 -0
  116. data/lib/dapp/dimg/config/directive/docker/base.rb +2 -3
  117. data/lib/dapp/dimg/config/directive/docker/dimg.rb +4 -4
  118. data/lib/dapp/dimg/config/directive/git_artifact_local.rb +24 -5
  119. data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +23 -12
  120. data/lib/dapp/dimg/config/directive/mount.rb +11 -3
  121. data/lib/dapp/dimg/config/directive/shell/dimg.rb +2 -2
  122. data/lib/dapp/dimg/dapp/command/bp.rb +3 -5
  123. data/lib/dapp/dimg/dapp/command/build.rb +4 -6
  124. data/lib/dapp/dimg/dapp/command/build_context/common.rb +2 -2
  125. data/lib/dapp/dimg/dapp/command/build_context/export.rb +14 -14
  126. data/lib/dapp/dimg/dapp/command/build_context/import.rb +28 -23
  127. data/lib/dapp/dimg/dapp/command/cleanup.rb +4 -11
  128. data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +143 -0
  129. data/lib/dapp/dimg/dapp/command/common.rb +148 -38
  130. data/lib/dapp/dimg/dapp/command/flush_local.rb +25 -0
  131. data/lib/dapp/dimg/dapp/command/flush_repo.rb +25 -0
  132. data/lib/dapp/dimg/dapp/command/list.rb +1 -1
  133. data/lib/dapp/dimg/dapp/command/mrproper.rb +16 -63
  134. data/lib/dapp/dimg/dapp/command/push.rb +11 -16
  135. data/lib/dapp/dimg/dapp/command/ruby2go_cleanup.rb +48 -0
  136. data/lib/dapp/dimg/dapp/command/run.rb +4 -4
  137. data/lib/dapp/dimg/dapp/command/spush.rb +4 -5
  138. data/lib/dapp/dimg/dapp/command/stage_image.rb +2 -2
  139. data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +13 -115
  140. data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +23 -102
  141. data/lib/dapp/dimg/dapp/command/stages/common.rb +57 -39
  142. data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +13 -7
  143. data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +14 -8
  144. data/lib/dapp/dimg/dapp/command/stages/pull.rb +4 -13
  145. data/lib/dapp/dimg/dapp/command/stages/push.rb +4 -9
  146. data/lib/dapp/dimg/dapp/command/tag.rb +4 -6
  147. data/lib/dapp/dimg/dapp/config_artifact_group.rb +20 -0
  148. data/lib/dapp/dimg/dapp/dapp.rb +40 -0
  149. data/lib/dapp/dimg/dapp/dappfile.rb +43 -0
  150. data/lib/dapp/dimg/dapp/dimg.rb +41 -0
  151. data/lib/dapp/dimg/dimg/git_artifact.rb +25 -11
  152. data/lib/dapp/dimg/dimg/path.rb +7 -9
  153. data/lib/dapp/dimg/dimg/stages.rb +27 -15
  154. data/lib/dapp/dimg/dimg.rb +172 -69
  155. data/lib/dapp/dimg/docker_registry/base.rb +31 -74
  156. data/lib/dapp/dimg/docker_registry/dimg.rb +55 -0
  157. data/lib/dapp/dimg/docker_registry.rb +5 -23
  158. data/lib/dapp/dimg/error/build.rb +1 -1
  159. data/lib/dapp/dimg/error/chef.rb +1 -5
  160. data/lib/dapp/dimg/error/{command.rb → default.rb} +1 -1
  161. data/lib/dapp/dimg/error/dimg.rb +1 -1
  162. data/lib/dapp/dimg/error/lock.rb +1 -1
  163. data/lib/dapp/dimg/error/registry.rb +1 -1
  164. data/lib/dapp/dimg/error/rugged.rb +1 -1
  165. data/lib/dapp/dimg/error/tar_writer.rb +1 -1
  166. data/lib/dapp/dimg/git_artifact.rb +195 -179
  167. data/lib/dapp/dimg/git_repo/base.rb +49 -45
  168. data/lib/dapp/dimg/git_repo/local.rb +45 -0
  169. data/lib/dapp/dimg/git_repo/own.rb +3 -31
  170. data/lib/dapp/dimg/git_repo/remote.rb +65 -26
  171. data/lib/dapp/dimg/image/argument.rb +15 -50
  172. data/lib/dapp/dimg/image/dimg.rb +15 -0
  173. data/lib/dapp/dimg/image/scratch.rb +35 -9
  174. data/lib/dapp/dimg/image/stage.rb +223 -44
  175. data/lib/dapp/dimg/lock/file.rb +4 -4
  176. data/lib/dapp/downloader.rb +117 -0
  177. data/lib/dapp/error/base.rb +1 -5
  178. data/lib/dapp/error/command.rb +5 -0
  179. data/lib/dapp/error/config.rb +5 -0
  180. data/lib/dapp/error/dapp.rb +1 -1
  181. data/lib/dapp/error/dappfile.rb +1 -1
  182. data/lib/dapp/error/default.rb +11 -0
  183. data/lib/dapp/error/mod/user.rb +11 -0
  184. data/lib/dapp/error/shellout.rb +1 -1
  185. data/lib/dapp/exception/base.rb +1 -1
  186. data/lib/dapp/helper/case_conversion.rb +17 -0
  187. data/lib/dapp/helper/cli.rb +18 -7
  188. data/lib/dapp/helper/net_status.rb +5 -1
  189. data/lib/dapp/helper/sha256.rb +1 -1
  190. data/lib/dapp/helper/tar.rb +31 -0
  191. data/lib/dapp/helper/trivia.rb +40 -1
  192. data/lib/dapp/helper/url.rb +23 -0
  193. data/lib/dapp/helper/yaml.rb +24 -0
  194. data/lib/dapp/kube/cli/cli.rb +1 -0
  195. data/lib/dapp/kube/cli/command/base.rb +14 -0
  196. data/lib/dapp/kube/cli/command/kube/chart_create.rb +19 -0
  197. data/lib/dapp/kube/cli/command/kube/deploy.rb +80 -0
  198. data/lib/dapp/kube/cli/command/kube/dismiss.rb +31 -0
  199. data/lib/dapp/kube/cli/command/kube/lint.rb +53 -0
  200. data/lib/dapp/kube/cli/command/kube/minikube_setup.rb +19 -0
  201. data/lib/dapp/kube/cli/command/kube/render.rb +63 -0
  202. data/lib/dapp/kube/cli/command/kube/secret_edit.rb +30 -0
  203. data/lib/dapp/kube/cli/command/kube/secret_extract.rb +39 -0
  204. data/lib/dapp/kube/cli/command/kube/secret_generate.rb +34 -0
  205. data/lib/dapp/kube/cli/command/kube/secret_key_generate.rb +16 -0
  206. data/lib/dapp/kube/cli/command/kube/secret_regenerate.rb +29 -0
  207. data/lib/dapp/kube/cli/command/kube/value_get.rb +47 -0
  208. data/lib/dapp/kube/cli/command/kube.rb +28 -0
  209. data/lib/dapp/kube/dapp/command/chart_create.rb +103 -0
  210. data/lib/dapp/kube/dapp/command/common.rb +379 -0
  211. data/lib/dapp/kube/dapp/command/deploy.rb +351 -0
  212. data/lib/dapp/kube/dapp/command/dismiss.rb +50 -0
  213. data/lib/dapp/kube/dapp/command/lint.rb +69 -0
  214. data/lib/dapp/kube/dapp/command/minikube_setup.rb +402 -0
  215. data/lib/dapp/kube/dapp/command/render.rb +54 -0
  216. data/lib/dapp/kube/dapp/command/ruby2go.rb +17 -0
  217. data/lib/dapp/kube/dapp/command/secret_edit.rb +21 -0
  218. data/lib/dapp/kube/dapp/command/secret_extract.rb +17 -0
  219. data/lib/dapp/kube/dapp/command/secret_generate.rb +21 -0
  220. data/lib/dapp/kube/dapp/command/secret_key_generate.rb +13 -0
  221. data/lib/dapp/kube/dapp/command/secret_regenerate.rb +13 -0
  222. data/lib/dapp/kube/dapp/command/value_get.rb +32 -0
  223. data/lib/dapp/kube/dapp/dapp.rb +26 -0
  224. data/lib/dapp/kube/error/default.rb +7 -0
  225. data/lib/dapp/kube/helm/release.rb +189 -0
  226. data/lib/dapp/kube/helm/values.rb +148 -0
  227. data/lib/dapp/kube/helm.rb +5 -0
  228. data/lib/dapp/kube/kubernetes/client/error.rb +43 -0
  229. data/lib/dapp/kube/kubernetes/client/resource/base.rb +33 -0
  230. data/lib/dapp/kube/kubernetes/client/resource/deployment.rb +11 -0
  231. data/lib/dapp/kube/kubernetes/client/resource/event.rb +8 -0
  232. data/lib/dapp/kube/kubernetes/client/resource/job.rb +27 -0
  233. data/lib/dapp/kube/kubernetes/client/resource/pod.rb +62 -0
  234. data/lib/dapp/kube/kubernetes/client/resource/replicaset.rb +8 -0
  235. data/lib/dapp/kube/kubernetes/client.rb +314 -0
  236. data/lib/dapp/kube/kubernetes/config.rb +132 -0
  237. data/lib/dapp/kube/kubernetes/error.rb +15 -0
  238. data/lib/dapp/kube/kubernetes/manager/base.rb +15 -0
  239. data/lib/dapp/kube/kubernetes/manager/container.rb +103 -0
  240. data/lib/dapp/kube/kubernetes/manager/deployment.rb +212 -0
  241. data/lib/dapp/kube/kubernetes/manager/job.rb +65 -0
  242. data/lib/dapp/kube/kubernetes/manager/pod.rb +69 -0
  243. data/lib/dapp/kube/kubernetes.rb +6 -0
  244. data/lib/dapp/kube/secret.rb +93 -0
  245. data/lib/dapp/kube.rb +1 -0
  246. data/lib/dapp/version.rb +2 -2
  247. data/lib/dapp.rb +155 -61
  248. metadata +208 -61
  249. data/lib/dapp/cli/base.rb +0 -63
  250. data/lib/dapp/config/base.rb +0 -54
  251. data/lib/dapp/config/error/config.rb +0 -7
  252. data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +0 -27
  253. data/lib/dapp/dimg/build/stage/ga_dependencies_base.rb +0 -20
  254. data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +0 -22
  255. data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +0 -22
  256. data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +0 -23
  257. data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +0 -32
  258. data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +0 -22
  259. data/lib/dapp/dimg/cli/base.rb +0 -16
  260. data/lib/dapp/dimg/cli/bp.rb +0 -37
  261. data/lib/dapp/dimg/cli/build.rb +0 -64
  262. data/lib/dapp/dimg/cli/dimg.rb +0 -30
  263. data/lib/dapp/dimg/cli/push.rb +0 -61
  264. data/lib/dapp/dimg/cli/stages/flush_local.rb +0 -23
  265. data/lib/dapp/dimg/cli/stages/flush_repo.rb +0 -24
  266. data/lib/dapp/dimg/cli/stages/pull.rb +0 -28
  267. data/lib/dapp/dimg/cli/stages/push.rb +0 -24
  268. data/lib/dapp/dimg/cli/stages.rb +0 -22
  269. data/lib/dapp/dimg/cli/tag.rb +0 -24
  270. data/lib/dapp/dimg/config/artifact_dimg.rb +0 -17
  271. data/lib/dapp/dimg/config/artifact_group.rb +0 -43
  272. data/lib/dapp/dimg/config/base.rb +0 -7
  273. data/lib/dapp/dimg/config/dimg/instance_methods.rb +0 -179
  274. data/lib/dapp/dimg/config/dimg/validation.rb +0 -126
  275. data/lib/dapp/dimg/config/dimg.rb +0 -24
  276. data/lib/dapp/dimg/config/dimg_group.rb +0 -61
  277. data/lib/dapp/dimg/config/dimg_group_base.rb +0 -54
  278. data/lib/dapp/dimg/config/dimg_group_main.rb +0 -22
  279. data/lib/dapp/dimg/dapp/command.rb +0 -21
  280. data/lib/dapp/dimg/dimg/tags.rb +0 -65
  281. data/lib/dapp/dimg/docker_registry/base/authorization.rb +0 -63
  282. data/lib/dapp/dimg/docker_registry/base/request.rb +0 -34
  283. data/lib/dapp/dimg/docker_registry/default.rb +0 -18
  284. data/lib/dapp/dimg/error/base.rb +0 -7
  285. data/lib/dapp/dimg/error/config.rb +0 -7
  286. data/lib/dapp/dimg/exception/introspect_image.rb +0 -7
  287. data/lib/dapp/dimg/image/docker.rb +0 -134
@@ -1,134 +1,32 @@
1
1
  module Dapp
2
2
  module Dimg
3
- class Dapp
3
+ module Dapp
4
4
  module Command
5
5
  module Stages
6
6
  module CleanupLocal
7
- def stages_cleanup_local(repo)
8
- lock_repo(repo, readonly: true) do
9
- raise Error::Command, code: :stages_cleanup_required_option unless stages_cleanup_option?
7
+ def stages_cleanup_local
8
+ raise ::Dapp::Error::Command, code: :stages_cleanup_required_option unless stages_cleanup_option?
10
9
 
11
- dapp_containers_flush
12
-
13
- proper_cache if proper_cache_version?
14
- stages_cleanup_by_repo(repo) if proper_repo_cache?
15
- proper_git_commit if proper_git_commit?
10
+ if proper_cache_version?
11
+ ruby2go_cleanup_command(:sync, cleanup_local_proper_cache_version_options_dump)
16
12
  end
17
- end
18
13
 
19
- protected
20
-
21
- def proper_cache
22
- log_proper_cache do
23
- lock("#{name}.images") do
24
- log_step_with_indent(name) do
25
- remove_images(dapp_images_names.select { |image_name| !actual_cache_images.include?(image_name) })
26
- end
27
- end
14
+ if proper_repo_cache?
15
+ ruby2go_cleanup_command(:sync, cleanup_local_proper_repo_cache_options_dump)
28
16
  end
29
17
  end
30
18
 
31
- def stages_cleanup_by_repo(repo)
32
- registry = registry(repo)
33
- repo_dimgs = repo_dimgs_images(registry)
34
-
35
- lock("#{name}.images") do
36
- log_step_with_indent(name) do
37
- dapp_dangling_images_flush
38
- dimgs, stages = dapp_images_hash.partition { |_, image_id| repo_dimgs.values.include?(image_id) }
39
- dimgs = dimgs.to_h
40
- stages = stages.to_h
41
- dimgs.each { |_, aiid| except_image_with_parents(aiid, stages) }
42
- remove_images(stages.keys)
43
- end
19
+ def cleanup_local_proper_cache_version_options_dump
20
+ ruby2go_cleanup_common_project_options.merge(ruby2go_cleanup_cache_version_options).tap do |data|
21
+ break JSON.dump(data)
44
22
  end
45
23
  end
46
24
 
47
- def repo_dimgs_images(registry)
48
- repo_dimgs_and_cache(registry).first
49
- end
50
-
51
- def actual_cache_images
52
- shellout!([
53
- 'docker images',
54
- '--format="{{.Repository}}:{{.Tag}}"',
55
- %(-f "label=dapp-cache-version=#{::Dapp::BUILD_CACHE_VERSION}"),
56
- stage_cache
57
- ].join(' ')).stdout.lines.map(&:strip)
58
- end
59
-
60
- def dapp_images_hash
61
- shellout!(%(docker images --format "{{.Repository}}:{{.Tag}};{{.ID}}" --no-trunc #{stage_cache})).stdout.lines.map do |line|
62
- line.strip.split(';')
63
- end.to_h
64
- end
65
-
66
- def except_image_with_parents(image_id, stages)
67
- if image_exist?(image_id)
68
- image_dapp_artifacts_label(image_id).each { |aiid| except_image_with_parents(aiid, stages) }
69
- iid = image_id
70
- loop do
71
- stages.delete_if { |_, siid| siid == iid }
72
- break if (iid = image_parent(iid)).empty?
73
- end
74
- else
75
- stages.delete_if { |_, siid| siid == image_id }
25
+ def cleanup_local_proper_repo_cache_options_dump
26
+ ruby2go_cleanup_common_project_options.merge(ruby2go_cleanup_common_repo_options).tap do |data|
27
+ break JSON.dump(data)
76
28
  end
77
29
  end
78
-
79
- def image_exist?(image_id)
80
- shellout!(%(docker inspect #{image_id}))
81
- true
82
- rescue ::Dapp::Error::Shellout
83
- false
84
- end
85
-
86
- def image_dapp_artifacts_label(image_id)
87
- select_dapp_artifacts_ids(::Dapp::Dimg::Image::Docker.image_config_option(image_id: image_id, option: 'labels'))
88
- end
89
-
90
- def image_parent(image_id)
91
- shellout!(%(docker inspect -f {{.Parent}} #{image_id})).stdout.strip
92
- end
93
-
94
- def proper_git_commit
95
- log_proper_git_commit do
96
- unproper_images_names = []
97
- dapp_images_detailed.each do |_, attrs|
98
- attrs['Config']['Labels'].each do |repo_name, commit|
99
- next if (repo = dapp_git_repositories[repo_name]).nil?
100
- unproper_images_names.concat(image_hierarchy_by_id(attrs['Id'])) unless repo.commit_exists?(commit)
101
- end
102
- end
103
- remove_images(unproper_images_names.uniq)
104
- end
105
- end
106
-
107
- def dapp_images_detailed
108
- @dapp_images_detailed ||= {}.tap do |images|
109
- dapp_images_names.each do |image_name|
110
- shellout!(%(docker inspect --format='{{json .}}' #{image_name})).stdout.strip.tap do |output|
111
- images[image_name] = output == 'null' ? {} : JSON.parse(output)
112
- end
113
- end
114
- end
115
- end
116
-
117
- def image_hierarchy_by_id(image_id)
118
- hierarchy = []
119
- iids = [image_id]
120
-
121
- loop do
122
- hierarchy.concat(dapp_images_detailed.map { |name, attrs| name if iids.include?(attrs['Id']) }.compact)
123
- break if begin
124
- iids.map! do |iid|
125
- dapp_images_detailed.map { |_, attrs| attrs['Id'] if attrs['Parent'] == iid }.compact
126
- end.flatten!.empty?
127
- end
128
- end
129
-
130
- hierarchy
131
- end
132
30
  end
133
31
  end
134
32
  end
@@ -1,119 +1,40 @@
1
1
  module Dapp
2
2
  module Dimg
3
- class Dapp
3
+ module Dapp
4
4
  module Command
5
5
  module Stages
6
6
  module CleanupRepo
7
- def stages_cleanup_repo(repo)
8
- lock_repo(repo) do
9
- raise Error::Command, code: :stages_cleanup_required_option unless stages_cleanup_option?
7
+ def stages_cleanup_repo
8
+ lock_repo(repo = option_repo) do
9
+ raise ::Dapp::Error::Command, code: :stages_cleanup_required_option unless stages_cleanup_option?
10
10
 
11
- registry = registry(repo)
12
- repo_dimgs, repo_stages = repo_dimgs_and_cache(registry)
13
- repo_stages.delete_if { |_, siid| repo_dimgs.values.include?(siid) } # ignoring stages with dimgs ids (v2)
14
-
15
- proper_repo_cache(registry, repo_stages) if proper_cache_version?
16
- repo_stages_cleanup(registry, repo_dimgs, repo_stages) if proper_repo_cache?
17
- proper_repo_git_commit(registry) if proper_git_commit?
18
- end
19
- end
20
-
21
- protected
22
-
23
- def proper_repo_cache(registry, repo_stages)
24
- log_proper_cache do
25
- wrong_cache_images = repo_stages.select do |image_tag, _|
26
- repo_image_dapp_cache_version_label(registry, image_tag) != ::Dapp::BUILD_CACHE_VERSION.to_s
27
- end
28
- wrong_cache_images.each { |image_tag, _| delete_repo_image(registry, image_tag) }
29
- repo_stages.delete_if { |image_tag, _| wrong_cache_images.keys.include?(image_tag) }
30
- end
31
- end
32
-
33
- def repo_stages_cleanup(registry, repo_dimgs, repo_stages)
34
- log_step_with_indent(repo) do
35
- repo_dimgs.each { |image_tag, image_id| clear_repo_stages(registry, repo_stages, image_tag, image_id) }
36
- repo_stages.keys.each { |image_tag| delete_repo_image(registry, image_tag) }
37
- end
38
- end
39
-
40
- def clear_repo_stages(registry, repo_stages, image_tag, image_id)
41
- repo_image_dapp_artifacts_labels(registry, image_tag).each do |iid|
42
- itag = find_image_tag_by_id(repo_stages, iid)
43
- clear_repo_stages(registry, repo_stages, itag, iid) unless itag.nil?
44
- end
45
-
46
- itag = image_tag
47
- iid = image_id
48
- loop do
49
- repo_stages.delete_if { |_, siid| siid == iid }
50
- break if itag.nil? || (iid = registry.image_parent_id(itag)).empty?
51
- itag = find_image_tag_by_id(repo_stages, iid)
11
+ ruby2go_cleanup_command(:sync, cleanup_repo_proper_cache_version_options_dump) if proper_cache_version?
12
+ repo_dimgstages_cleanup if proper_repo_cache?
52
13
  end
53
14
  end
54
15
 
55
- def repo_image_dapp_artifacts_labels(registry, image_tag)
56
- select_dapp_artifacts_ids(registry.image_labels(image_tag))
16
+ def repo_dimgstages_cleanup
17
+ ruby2go_cleanup_command(:sync, cleanup_repo_proper_repo_cache_options)
57
18
  end
58
19
 
59
- def repo_image_dapp_cache_version_label(registry, image_tag)
60
- registry.image_labels(image_tag)['dapp-cache-version']
61
- end
62
-
63
- def find_image_tag_by_id(images, image_id)
64
- images.each { |tag, id| return tag if id == image_id }
65
- nil
66
- end
67
-
68
- def proper_repo_git_commit(registry)
69
- log_proper_git_commit do
70
- unproper_images = []
71
- repo_dapp_dappstage_images_detailed(registry).each do |_, attrs|
72
- attrs[:labels].each do |repo_name, commit|
73
- next if (repo = dapp_git_repositories[repo_name]).nil?
74
- unproper_images.concat(repo_image_tags_hierarchy(registry, attrs[:id])) unless repo.commit_exists?(commit)
75
- end
76
- end
77
- remove_repo_images(registry, unproper_images.uniq)
20
+ def cleanup_repo_proper_cache_version_options_dump
21
+ ruby2go_cleanup_common_repo_options.merge(ruby2go_cleanup_cache_version_options).merge(
22
+ mode: {
23
+ sync_repo: true,
24
+ only_cache_version: true
25
+ }
26
+ ).tap do |data|
27
+ break JSON.dump(data)
78
28
  end
79
29
  end
80
30
 
81
- def repo_dapp_dappstage_images_detailed(registry)
82
- @repo_dapp_images_detailed ||= begin
83
- registry.tags.map do |tag|
84
- next unless tag.start_with?('dimgstage')
85
-
86
- image_history = registry.image_history(tag)
87
- attrs = {
88
- id: registry.image_id(tag),
89
- parent: image_history['container_config']['Image'],
90
- labels: image_history['config']['Labels']
91
- }
92
- [tag, attrs]
93
- end.compact
94
- end
95
- end
96
-
97
- def repo_image_tags_hierarchy(registry, registry_image_id)
98
- hierarchy = []
99
- iids = [registry_image_id]
100
-
101
- loop do
102
- hierarchy.concat(iids)
103
- break if begin
104
- iids.map! do |iid|
105
- repo_dapp_dappstage_images_detailed(registry).map { |_, attrs| attrs[:id] if attrs[:parent] == iid }.compact
106
- end.flatten!.empty?
107
- end
108
- end
109
-
110
- repo_dapp_dappstage_images_detailed(registry).map { |tag, attrs| tag if hierarchy.include? attrs[:id] }.compact
111
- end
112
-
113
- def remove_repo_images(registry, tags)
114
- tags.each do |tag|
115
- log(tag) if dry_run? || log_verbose?
116
- registry.image_delete(tag) unless dry_run?
31
+ def cleanup_repo_proper_repo_cache_options
32
+ ruby2go_cleanup_common_repo_options.merge(
33
+ mode: {
34
+ sync_repo: true
35
+ }
36
+ ).tap do |data|
37
+ break JSON.dump(data)
117
38
  end
118
39
  end
119
40
  end
@@ -1,69 +1,87 @@
1
1
  module Dapp
2
2
  module Dimg
3
- class Dapp
3
+ module Dapp
4
4
  module Command
5
5
  module Stages
6
6
  module Common
7
7
  protected
8
8
 
9
- def registry(repo)
10
- validate_repo_name(repo)
11
- ::Dapp::Dimg::DockerRegistry.new(repo)
9
+ def repo_detailed_dimgs_images(registry)
10
+ repo_dimgs_images(registry).select do |dimg|
11
+ begin
12
+ image_config = registry.image_config(dimg[:tag], dimg[:dimg])
13
+ dimg[:created_at] = Time.parse(image_config["created"]).to_i
14
+ dimg[:parent] = image_config["container_config"]["Image"]
15
+ dimg[:labels] = image_config["config"]["Labels"]
16
+ dimg[:labels]['dapp'] == name
17
+ rescue ::Dapp::Dimg::Error::Registry => e
18
+ raise unless e.net_status[:data][:message].include?("MANIFEST_UNKNOWN")
19
+ log_warning "WARNING: Ignore dimg `#{dimg[:dimg]}` tag `#{dimg[:tag]}`: got manifest-invalid-error from docker registry: #{e.net_status[:data][:message]}"
20
+ false
21
+ end
22
+ end
12
23
  end
13
24
 
14
- def repo_dimgs_and_cache(registry)
15
- format = proc do |arr|
16
- arr.map do |tag|
17
- if (id = registry.image_id(tag)).nil?
18
- log_warning(desc: { code: 'tag_ignored', data: { tag: tag } })
19
- else
20
- [tag, id]
21
- end
22
- end.compact.to_h
25
+ def repo_dimgs_images(registry)
26
+ [].tap do |dimgs_images|
27
+ {}.tap do |dimgs_tags|
28
+ dimgs_tags[nil] = registry.nameless_dimg_tags
29
+ dimgs_names.each do |dimg_name|
30
+ dimgs_tags[dimg_name] = registry.dimg_tags(dimg_name)
31
+ end unless nameless_dimg?
32
+ end.each do |dimg_name, tags|
33
+ dimgs_images.concat(tags_to_repo_images(registry, tags, dimg_name))
34
+ end
23
35
  end
24
- dimgs, stages = registry.tags.partition { |tag| !tag.start_with?('dimgstage') }
25
- [format.call(dimgs), format.call(stages)]
26
36
  end
27
37
 
28
- def registry_tags(registry)
29
- registry.tags
30
- rescue Exception::Registry => e
31
- raise unless e.net_status[:code] == :no_such_dimg
32
- log_warning(desc: { code: :dimg_not_found_in_registry })
33
- []
38
+ def repo_dimgstages_images(registry)
39
+ tags_to_repo_images(registry, registry.dimgstages_tags)
34
40
  end
35
41
 
36
- def delete_repo_image(registry, image_tag)
37
- if dry_run?
38
- log(image_tag)
39
- else
40
- registry.image_delete(image_tag)
41
- end
42
+ def tags_to_repo_images(registry, tags, dimg_name = nil)
43
+ tags.map { |tag| repo_image_format(registry, tag, dimg_name) }.compact
42
44
  end
43
45
 
44
- def select_dapp_artifacts_ids(hash)
45
- hash.select { |k, _v| k.start_with?('dapp-artifact') }.values
46
+ def repo_image_format(registry, tag, dimg_name = nil)
47
+ begin
48
+ id = registry.image_id(tag, dimg_name)
49
+
50
+ if id.nil?
51
+ log_warning(desc: { code: 'tag_ignored', data: { tag: tag } })
52
+ return nil
53
+ end
54
+
55
+ return { dimg: dimg_name, tag: tag, id: id }
56
+ rescue ::Dapp::Dimg::Error::Registry => e
57
+ raise unless e.net_status[:data][:message].include?("MANIFEST_UNKNOWN")
58
+ log_warning "WARNING: Ignore dimg `#{dimg_name}` tag `#{tag}`: got not-found-error from docker registry on get-image-manifest request: #{e.net_status[:data][:message]}"
59
+ return nil
60
+ end
46
61
  end
47
62
 
48
- def dapp_git_repositories
49
- @dapp_git_repositories ||= begin
50
- {}.tap do |repositories|
51
- dimgs = build_configs.map { |config| Dimg.new(config: config, dapp: self, ignore_git_fetch: true) }
52
- dimgs.each do |dimg|
53
- [dimg, dimg.artifacts].flatten
54
- .map(&:git_artifacts).flatten
55
- .map { |ga_artifact| repositories[ga_artifact.full_name] = ga_artifact.repo }
63
+ def delete_repo_image(registry, repo_image)
64
+ log([repo_image[:dimg], repo_image[:tag]].compact.join(':')) if dry_run? || log_verbose?
65
+ unless dry_run?
66
+ begin
67
+ if self.class.gcr_registry?
68
+ registry.gcr_image_delete(repo_image[:tag], repo_image[:dimg])
69
+ else
70
+ registry.image_delete(repo_image[:tag], repo_image[:dimg])
56
71
  end
72
+ rescue ::Dapp::Dimg::Error::Registry => e
73
+ raise unless e.net_status[:data][:message].include?("MANIFEST_UNKNOWN")
74
+ log_warning "WARNING: Ignore dimg `#{repo_image[:dimg]}` tag `#{repo_image[:tag]}`: got not-found-error from docker registry on image-delete request: #{e.net_status[:data][:message]}"
57
75
  end
58
76
  end
59
77
  end
60
78
 
61
79
  def proper_repo_cache?
62
- !!cli_options[:proper_repo_cache]
80
+ !!options[:proper_repo_cache]
63
81
  end
64
82
 
65
83
  def proper_git_commit?
66
- !!cli_options[:proper_git_commit]
84
+ !!options[:proper_git_commit]
67
85
  end
68
86
 
69
87
  def stages_cleanup_option?
@@ -1,16 +1,22 @@
1
1
  module Dapp
2
2
  module Dimg
3
- class Dapp
3
+ module Dapp
4
4
  module Command
5
5
  module Stages
6
6
  module FlushLocal
7
7
  def stages_flush_local
8
- lock("#{name}.images") do
9
- log_step_with_indent(name) do
10
- dapp_containers_flush
11
- dapp_dangling_images_flush
12
- remove_images(dapp_images_names)
13
- end
8
+ ruby2go_cleanup_command(:flush, ruby2go_cleanup_stages_flush_local_options_dump)
9
+ end
10
+
11
+ def ruby2go_cleanup_stages_flush_local_options_dump
12
+ ruby2go_cleanup_common_project_options.merge(
13
+ mode: {
14
+ with_dimgs: false,
15
+ with_stages: true,
16
+ only_repo: false,
17
+ }
18
+ ).tap do |json|
19
+ break JSON.dump(json)
14
20
  end
15
21
  end
16
22
  end
@@ -1,16 +1,22 @@
1
1
  module Dapp
2
2
  module Dimg
3
- class Dapp
3
+ module Dapp
4
4
  module Command
5
5
  module Stages
6
6
  module FlushRepo
7
- def stages_flush_repo(repo)
8
- lock_repo(repo) do
9
- log_step_with_indent(repo) do
10
- registry = registry(repo)
11
- repo_dimgs, repo_stages = repo_dimgs_and_cache(registry)
12
- repo_dimgs.merge(repo_stages).keys.each { |image_tag| delete_repo_image(registry, image_tag) }
13
- end
7
+ def stages_flush_repo
8
+ ruby2go_cleanup_command(:flush, ruby2go_cleanup_stages_flush_repo_options_dump)
9
+ end
10
+
11
+ def ruby2go_cleanup_stages_flush_repo_options_dump
12
+ ruby2go_cleanup_common_repo_options.merge(
13
+ mode: {
14
+ with_dimgs: false,
15
+ with_stages: true,
16
+ only_repo: true,
17
+ },
18
+ ).tap do |json|
19
+ break JSON.dump(json)
14
20
  end
15
21
  end
16
22
  end
@@ -1,23 +1,14 @@
1
1
  module Dapp
2
2
  module Dimg
3
- class Dapp
3
+ module Dapp
4
4
  module Command
5
5
  module Stages
6
6
  module Pull
7
- def stages_pull(repo)
8
- validate_repo_name(repo)
9
- build_configs.each do |config|
10
- log_dimg_name_with_indent(config) do
11
- Dimg.new(config: config, dapp: self, ignore_git_fetch: true).tap do |dimg|
12
- dimg.import_stages!(repo, format: '%{repo}:dimgstage-%{signature}')
13
- end
14
- end
7
+ def stages_pull
8
+ dimg_import_export_base(should_be_built: false) do |dimg|
9
+ dimg.import_stages!(option_repo, format: dimgstage_push_format)
15
10
  end
16
11
  end
17
-
18
- def pull_all_stages?
19
- !!cli_options[:pull_all_stages]
20
- end
21
12
  end
22
13
  end
23
14
  end
@@ -1,17 +1,12 @@
1
1
  module Dapp
2
2
  module Dimg
3
- class Dapp
3
+ module Dapp
4
4
  module Command
5
5
  module Stages
6
6
  module Push
7
- def stages_push(repo)
8
- validate_repo_name(repo)
9
- build_configs.each do |config|
10
- log_dimg_name_with_indent(config) do
11
- Dimg.new(config: config, dapp: self, ignore_git_fetch: true, should_be_built: true).tap do |dimg|
12
- dimg.export_stages!(repo, format: '%{repo}:dimgstage-%{signature}')
13
- end
14
- end
7
+ def stages_push
8
+ dimg_import_export_base(should_be_built: false) do |dimg|
9
+ dimg.export_stages!(option_repo, format: dimgstage_push_format)
15
10
  end
16
11
  end
17
12
  end
@@ -1,13 +1,11 @@
1
1
  module Dapp
2
2
  module Dimg
3
- class Dapp
3
+ module Dapp
4
4
  module Command
5
5
  module Tag
6
- def tag(tag)
7
- one_dimg!
8
- raise Error::Command, code: :tag_command_incorrect_tag, data: { name: tag } unless ::Dapp::Dimg::Image::Docker.image_name?(tag)
9
- Dimg.new(config: build_configs.first, dapp: self, ignore_git_fetch: true, should_be_built: true).tap do |app|
10
- app.tag!(tag)
6
+ def tag
7
+ dimg_import_export_base do |dimg|
8
+ dimg.tag!(option_repo, format: push_format(dimg.name))
11
9
  end
12
10
  end
13
11
  end
@@ -0,0 +1,20 @@
1
+ module Dapp
2
+ module Dimg
3
+ module Dapp
4
+ module ConfigArtifactGroup
5
+ def artifact_config_by_name(name)
6
+ artifacts_configs[name] || raise(::Dapp::Error::Config, code: :artifact_not_found, data: { name: name })
7
+ end
8
+
9
+ def artifact_config(name, artifact_config)
10
+ raise(::Dapp::Error::Config, code: :artifact_already_exists, data: { name: name }) if artifacts_configs.key?(name)
11
+ artifacts_configs[name] = artifact_config
12
+ end
13
+
14
+ def artifacts_configs
15
+ @artifacts_configs ||= {}
16
+ end
17
+ end # Dimg
18
+ end # Dapp
19
+ end # Dimg
20
+ end # Dapp
@@ -0,0 +1,40 @@
1
+ module Dapp
2
+ module Dimg
3
+ module Dapp
4
+ module Dapp
5
+ include Dappfile
6
+ include Dimg
7
+ include ConfigArtifactGroup
8
+
9
+ include Command::Common
10
+ include Command::Run
11
+ include Command::Build
12
+ include Command::Bp
13
+ include Command::Push
14
+ include Command::Spush
15
+ include Command::Tag
16
+ include Command::List
17
+ include Command::Stages::CleanupLocal
18
+ include Command::Stages::CleanupRepo
19
+ include Command::Stages::FlushLocal
20
+ include Command::Stages::FlushRepo
21
+ include Command::Stages::Push
22
+ include Command::Stages::Pull
23
+ include Command::Stages::Common
24
+ include Command::CleanupRepo
25
+ include Command::FlushLocal
26
+ include Command::FlushRepo
27
+ include Command::Cleanup
28
+ include Command::Mrproper
29
+ include Command::StageImage
30
+ include Command::BuildContext::Import
31
+ include Command::BuildContext::Export
32
+ include Command::BuildContext::Common
33
+
34
+ include Command::Ruby2GoCleanup
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ ::Dapp::Dapp.send(:include, ::Dapp::Dimg::Dapp::Dapp)
@@ -0,0 +1,43 @@
1
+ module Dapp
2
+ module Dimg
3
+ module Dapp
4
+ module Dappfile
5
+ def nameless_dimg?
6
+ dimgs_names.first.nil?
7
+ end
8
+
9
+ def dimg_name!
10
+ one_dimg!
11
+ build_configs.first._name
12
+ end
13
+
14
+ def one_dimg!
15
+ return if build_configs.one?
16
+ raise ::Dapp::Error::Command, code: :command_unexpected_dimgs_number, data: { dimgs_names: dimgs_names.join('`, `') }
17
+ end
18
+
19
+ def dimgs_names
20
+ build_configs.map(&:_name)
21
+ end
22
+
23
+ def build_configs
24
+ @build_configs ||= begin
25
+ config._dimg.select do |dimg|
26
+ dimgs_patterns.any? { |pattern| dimg._name.nil? || File.fnmatch(pattern, dimg._name) }
27
+ end.tap do |dimgs|
28
+ raise ::Dapp::Error::Dapp, code: :no_such_dimg, data: { dimgs_patterns: dimgs_patterns.join('`, `') } if dimgs.empty?
29
+ end
30
+ end
31
+ end
32
+
33
+ def dimgs_patterns
34
+ @dimgs_patterns ||= begin
35
+ (options[:dimgs_patterns] || []).tap do |dimgs_patterns|
36
+ dimgs_patterns << '*' unless dimgs_patterns.any?
37
+ end
38
+ end
39
+ end
40
+ end # Dappfile
41
+ end # Dapp
42
+ end # Dimg
43
+ end # Dapp