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
@@ -0,0 +1,402 @@
1
+ module Dapp
2
+ module Kube
3
+ module Dapp
4
+ module Command
5
+ module MinikubeSetup
6
+ def kube_minikube_setup
7
+ _minikube_restart_minikube
8
+
9
+ # NOTICE: На данный момент выключено из-за непригодной
10
+ # NOTICE: для использования медленности 'minikube mount' томов
11
+ # _minikube_run_minikube_persisted_storage_daemon
12
+
13
+ _minikube_wait_till_ready
14
+ _minikube_run_registry
15
+ _minikube_run_registry_forwarder_daemon
16
+ end
17
+
18
+ def _minikube_set_original_sudo_caller_process_user!
19
+ if ENV['SUDO_UID'] and ENV['SUDO_GID']
20
+ original_uid = ENV['SUDO_UID'].to_i
21
+ original_gid = ENV['SUDO_GID'].to_i
22
+ if original_uid != Process.uid && ENV['HOME'] == Etc.getpwuid(original_uid).dir
23
+ Process::Sys.setgid(original_gid)
24
+ Process::Sys.setuid(original_uid)
25
+ end
26
+ end
27
+ end
28
+
29
+ def _minikube_restart_minikube
30
+ log_process("Restart minikube") do
31
+ raise ::Dapp::Error::Command, code: :minikube_not_found if shellout('which minikube').exitstatus == 1
32
+
33
+ Process.fork do
34
+ _minikube_set_original_sudo_caller_process_user!
35
+
36
+ begin
37
+ if shellout('minikube status').stdout.split("\n").map(&:strip).first =~ /minikube(VM)?: Running/
38
+ shellout! 'minikube stop', verbose: true
39
+ end
40
+ shellout! 'minikube start --insecure-registry localhost:5000', verbose: true
41
+ rescue ::Dapp::Error::Shellout
42
+ exit 1
43
+ end
44
+ end
45
+
46
+ _, status = Process.wait2
47
+ raise ::Dapp::Error::Command, code: :cannot_restart_minikube unless status.success?
48
+ end
49
+ end
50
+
51
+ def _minikube_run_daemon(name, &blk)
52
+ uid = Process.euid
53
+ if uid != 0 && File.exists?("/run/user/#{uid}")
54
+ pid_file_path = "/run/user/#{uid}/dapp_#{name}_daemon.pid"
55
+ elsif uid != 0
56
+ pid_file_path = "/tmp/dapp_#{name}_daemon.pid"
57
+ else
58
+ pid_file_path = "/run/dapp_#{name}_daemon.pid"
59
+ end
60
+
61
+ old_daemon_pid = begin
62
+ File.open(pid_file_path, 'r').read.strip.to_i
63
+ rescue Errno::ENOENT
64
+ end
65
+ if old_daemon_pid
66
+ begin
67
+ if Process.kill(0, old_daemon_pid)
68
+ Process.kill('TERM', old_daemon_pid)
69
+ end
70
+ if Process.kill(0, old_daemon_pid)
71
+ Process.kill('KILL', old_daemon_pid)
72
+ end
73
+ rescue Errno::ESRCH
74
+ end
75
+ end
76
+
77
+ daemon_pid = Process.fork do
78
+ File.open(pid_file_path, 'w') {|f| f.write "#{Process.pid}\n"}
79
+ yield
80
+ end
81
+ Process.detach(daemon_pid)
82
+
83
+ daemon_ok = true
84
+ begin
85
+ Process.kill(0, daemon_pid)
86
+
87
+ 5.times do
88
+ sleep 1
89
+ Process.kill(0, daemon_pid)
90
+ end
91
+ rescue Errno::ESRCH
92
+ daemon_ok = false
93
+ end
94
+ raise ::Dapp::Error::Command, code: :"#{name}_daemon_failed" unless daemon_ok
95
+ end
96
+
97
+ def _minikube_run_minikube_persisted_storage_daemon
98
+ log_process("Run minikube persisted storage daemon") do
99
+ _minikube_run_daemon(:minikube_persisted_storage) do
100
+ _minikube_set_original_sudo_caller_process_user!
101
+
102
+ STDIN.reopen '/dev/null'
103
+ STDOUT.reopen '/dev/null', 'a'
104
+
105
+ mountdir = File.join(ENV['HOME'], '.minikube', 'persisted_storage')
106
+ FileUtils.mkdir_p mountdir
107
+
108
+ exec "minikube mount #{mountdir}"
109
+ end
110
+ end
111
+ end
112
+
113
+ def _minikube_wait_till_ready
114
+ log_process("Wait till minikube ready") do
115
+ 600.times do
116
+ begin
117
+ return if _minikube_kubernetes.service?('kube-dns')
118
+ rescue Kubernetes::Client::Error::ConnectionRefused
119
+ end
120
+
121
+ sleep 1
122
+ end
123
+
124
+ raise ::Dapp::Error::Command, code: :minikube_readiness_timeout
125
+ end
126
+ end
127
+
128
+ def _minikube_run_registry
129
+ log_process("Run registry") do
130
+ _minikube_kubernetes.with_query(gracePeriodSeconds: 0) do
131
+ if _minikube_kubernetes.replicationcontroller? _minikube_registry_replicationcontroller_spec['metadata']['name']
132
+ _minikube_kubernetes.delete_replicationcontroller! _minikube_registry_replicationcontroller_spec['metadata']['name']
133
+
134
+ shutdown_ok = false
135
+ 600.times do
136
+ unless _minikube_kubernetes.replicationcontroller? _minikube_registry_replicationcontroller_spec['metadata']['name']
137
+ shutdown_ok = true
138
+ break
139
+ end
140
+ sleep 1
141
+ end
142
+ raise ::Dapp::Error::Command, code: :registry_replicationcontroller_shutdown_failed unless shutdown_ok
143
+ end
144
+
145
+ _minikube_kubernetes.delete_pods! labelSelector: 'k8s-app=kube-registry'
146
+ shutdown_ok = false
147
+ 600.times do
148
+ unless _minikube_find_registry_pod
149
+ shutdown_ok = true
150
+ break
151
+ end
152
+ sleep 1
153
+ end
154
+ raise ::Dapp::Error::Command, code: :registry_pod_shutdown_failed unless shutdown_ok
155
+
156
+ if _minikube_kubernetes.service? _minikube_registry_service_spec['metadata']['name']
157
+ _minikube_kubernetes.delete_service! _minikube_registry_service_spec['metadata']['name']
158
+
159
+ shutdown_ok = false
160
+ 600.times do
161
+ unless _minikube_kubernetes.service? _minikube_registry_service_spec['metadata']['name']
162
+ shutdown_ok = true
163
+ break
164
+ end
165
+ sleep 1
166
+ end
167
+ raise ::Dapp::Error::Command, code: :registry_service_shutdown_failed unless shutdown_ok
168
+ end
169
+
170
+ if _minikube_kubernetes.pod? _minikube_registry_proxy_pod_spec['metadata']['name']
171
+ _minikube_kubernetes.delete_pod! _minikube_registry_proxy_pod_spec['metadata']['name']
172
+
173
+ shutdown_ok = false
174
+ 600.times do
175
+ unless _minikube_kubernetes.pod? _minikube_registry_proxy_pod_spec['metadata']['name']
176
+ shutdown_ok = true
177
+ break
178
+ end
179
+ sleep 1
180
+ end
181
+ raise ::Dapp::Error::Command, code: :registry_proxy_pod_shutdown_failed unless shutdown_ok
182
+ end
183
+
184
+ _minikube_kubernetes.create_replicationcontroller!(_minikube_registry_replicationcontroller_spec)
185
+ registry_pod_ok = false
186
+ 600.times do
187
+ if registry_pod = _minikube_find_registry_pod
188
+ if registry_pod['status']['phase'] == 'Running'
189
+ registry_pod_ok = true
190
+ @_minikube_registry_pod_name = registry_pod['metadata']['name']
191
+ break
192
+ end
193
+ end
194
+ sleep 1
195
+ end
196
+ raise ::Dapp::Error::Command, code: :registry_pod_not_ok unless registry_pod_ok
197
+
198
+ _minikube_kubernetes.create_service!(_minikube_registry_service_spec)
199
+ registry_service_ok = false
200
+ 600.times do
201
+ if _minikube_kubernetes.service? _minikube_registry_service_spec['metadata']['name']
202
+ registry_service_ok = true
203
+ break
204
+ end
205
+ sleep 1
206
+ end
207
+ raise ::Dapp::Error::Command, code: :registry_service_not_ok unless registry_service_ok
208
+
209
+ _minikube_kubernetes.create_pod! _minikube_registry_proxy_pod_spec
210
+ registry_proxy_pod_ok = false
211
+ 600.times do
212
+ if _minikube_kubernetes.pod? _minikube_registry_proxy_pod_spec['metadata']['name']
213
+ registry_proxy_pod = _minikube_kubernetes.pod(_minikube_registry_proxy_pod_spec['metadata']['name'])
214
+ if registry_proxy_pod['status']['phase'] == 'Running'
215
+ registry_proxy_pod_ok = true
216
+ break
217
+ end
218
+ end
219
+ sleep 1
220
+ end
221
+ raise ::Dapp::Error::Command, code: :registry_proxy_pod_not_ok unless registry_proxy_pod_ok
222
+ end
223
+ end
224
+ end
225
+
226
+ def _minikube_run_registry_forwarder_daemon
227
+ log_process("Run registry forwarder daemon") do
228
+ registry_port_in_use = begin
229
+ Socket.tcp('localhost', 5000).close
230
+ true
231
+ rescue Errno::ECONNREFUSED
232
+ false
233
+ end
234
+ raise ::Dapp::Error::Command, code: :registry_port_in_use, data: {host: 'localhost', port: 5000} if registry_port_in_use
235
+
236
+ _minikube_run_daemon(:registry_forwarder) do
237
+ STDIN.reopen '/dev/null'
238
+ STDOUT.reopen '/dev/null', 'a'
239
+
240
+ exec "kubectl port-forward --namespace kube-system #{_minikube_registry_pod_name} 5000:5000"
241
+ end
242
+ end
243
+ end
244
+
245
+ def _minikube_find_registry_pod
246
+ _minikube_kubernetes.pod_list(labelSelector: "k8s-app=kube-registry")['items'].first
247
+ end
248
+
249
+ def _minikube_registry_pod_name
250
+ @_minikube_registry_pod_name
251
+ end
252
+
253
+ def _minikube_kubernetes
254
+ @_minikube_kubernetes ||= Kubernetes::Client.new(
255
+ kubernetes_config,
256
+ kubernetes_config.current_context_name,
257
+ 'kube-system',
258
+ timeout: options[:kubernetes_timeout],
259
+ )
260
+ end
261
+
262
+ def _minikube_registry_replicationcontroller_spec
263
+ {
264
+ 'metadata' => {
265
+ 'name' => 'kube-registry',
266
+ 'namespace' => 'kube-system',
267
+ 'labels' => {
268
+ 'k8s-app' => 'kube-registry',
269
+ 'version' => 'v0',
270
+ 'kubernetes.io/cluster-service' => 'true'
271
+ }
272
+ },
273
+ 'spec' => {
274
+ 'replicas' => 1,
275
+ 'selector' => {
276
+ 'k8s-app' => 'kube-registry',
277
+ 'version' => 'v0'
278
+ },
279
+ 'template' => {
280
+ 'metadata' => {
281
+ 'labels' => {
282
+ 'k8s-app' => 'kube-registry',
283
+ 'version' => 'v0',
284
+ 'kubernetes.io/cluster-service' => 'true'
285
+ }
286
+ },
287
+ 'spec' => {
288
+ 'containers' => [
289
+ {
290
+ 'name' => 'registry',
291
+ 'image' => 'registry:2',
292
+ 'env' => [
293
+ {
294
+ 'name' => 'REGISTRY_HTTP_ADDR',
295
+ 'value' => ':5000'
296
+ },
297
+ {
298
+ 'name' => 'REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY',
299
+ 'value' => '/var/lib/registry'
300
+ },
301
+ {
302
+ 'name' => 'REGISTRY_STORAGE_DELETE_ENABLED',
303
+ 'value' => 'true',
304
+ }
305
+ ],
306
+ 'volumeMounts' => [
307
+ {
308
+ 'name' => 'image-store',
309
+ 'mountPath' => '/var/lib/registry'
310
+ }
311
+ ],
312
+ 'ports' => [
313
+ {
314
+ 'containerPort' => 5000,
315
+ 'name' => 'registry',
316
+ 'protocol' => 'TCP'
317
+ }
318
+ ]
319
+ }
320
+ ],
321
+ 'volumes' => [
322
+ {
323
+ 'name' => 'image-store',
324
+ 'hostPath' => {
325
+ 'path' => '/var/lib/docker/registry_data'
326
+ }
327
+ }
328
+ ]
329
+ }
330
+ }
331
+ }
332
+ }
333
+ end
334
+
335
+ def _minikube_registry_service_spec
336
+ {
337
+ 'metadata' => {
338
+ 'name' => 'kube-registry',
339
+ 'namespace' => 'kube-system',
340
+ 'labels' => {
341
+ 'k8s-app' => 'kube-registry',
342
+ 'kubernetes.io/cluster-service' => 'true',
343
+ 'kubernetes.io/name' => 'KubeRegistry'
344
+ }
345
+ },
346
+ 'spec' => {
347
+ 'selector' => {
348
+ 'k8s-app' => 'kube-registry'
349
+ },
350
+ 'ports' => [
351
+ {
352
+ 'name' => 'registry',
353
+ 'port' => 5000,
354
+ 'protocol' => 'TCP'
355
+ }
356
+ ]
357
+ }
358
+ }
359
+ end
360
+
361
+ def _minikube_registry_proxy_pod_spec
362
+ {
363
+ 'metadata' => {
364
+ 'name' => 'kube-registry-proxy',
365
+ 'namespace' => 'kube-system'
366
+ },
367
+ 'spec' => {
368
+ 'containers' => [
369
+ {
370
+ 'name' => 'kube-registry-proxy',
371
+ 'image' => 'gcr.io/google_containers/kube-registry-proxy:0.3',
372
+ 'env' => [
373
+ {
374
+ 'name' => 'REGISTRY_HOST',
375
+ 'value' => 'kube-registry.kube-system.svc.cluster.local'
376
+ },
377
+ {
378
+ 'name' => 'REGISTRY_PORT',
379
+ 'value' => '5000'
380
+ },
381
+ {
382
+ 'name' => 'FORWARD_PORT',
383
+ 'value' => '5000'
384
+ }
385
+ ],
386
+ 'ports' => [
387
+ {
388
+ 'name' => 'registry',
389
+ 'containerPort' => 5000,
390
+ 'hostPort' => 5000
391
+ }
392
+ ]
393
+ }
394
+ ]
395
+ }
396
+ }
397
+ end
398
+ end
399
+ end
400
+ end
401
+ end
402
+ end
@@ -0,0 +1,54 @@
1
+ module Dapp
2
+ module Kube
3
+ module Dapp
4
+ module Command
5
+ module Render
6
+ def kube_render
7
+ command = "render"
8
+
9
+ # TODO: move project dir logic to golang
10
+ project_dir = path.to_s
11
+
12
+ dimgs = self.build_configs.map do |config|
13
+ {"Name" => config._name, "ImageTag" => "DOCKER_TAG", "Repo" => "REPO"}
14
+ end.uniq do |dimg|
15
+ dimg["Name"]
16
+ end
17
+
18
+ res = ruby2go_deploy(
19
+ "command" => command,
20
+ "projectDir" => project_dir,
21
+ "rubyCliOptions" => JSON.dump(self.options),
22
+ "dimgs" => JSON.dump(dimgs),
23
+ )
24
+
25
+ raise ::Dapp::Error::Command, code: :ruby2go_deploy_command_failed, data: { command: command, message: res["error"] } unless res["error"].nil?
26
+ end
27
+
28
+ def kube_render_old
29
+ helm_release do |release|
30
+ templates = begin
31
+ if options[:templates].any?
32
+ release.templates.select do |template_path, _|
33
+ options[:templates].map { |t| "#{t}*" }.any? do |template_path_pattern|
34
+ template_path_without_chart_name = template_path[/.*?\/(.*)/, 1]
35
+ template_relative_path_pattern = Pathname(File.expand_path(template_path_pattern)).subpath_of(path('.helm'))
36
+ template_relative_path_pattern ||= template_path_pattern
37
+
38
+ File.fnmatch?(template_relative_path_pattern, template_path_without_chart_name, File::FNM_PATHNAME|File::FNM_DOTMATCH) ||
39
+ File.fnmatch?(template_relative_path_pattern, template_path, File::FNM_PATHNAME|File::FNM_DOTMATCH)
40
+ end
41
+ end
42
+ else
43
+ release.templates
44
+ end
45
+ end
46
+
47
+ templates.values.each { |t| puts t }
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,17 @@
1
+ module Dapp
2
+ module Kube
3
+ module Dapp
4
+ module Command
5
+ module Ruby2Go
6
+ def ruby2go_deploy_command(command:, raw_command_options: nil, **options)
7
+ (options[:options] ||= {}).merge!(project_dir: path.to_s, raw_command_options: raw_command_options)
8
+ ruby2go_deploy(command: command, **options).tap do |res|
9
+ raise ::Dapp::Error::Command, code: :ruby2go_deploy_command_failed, data: { command: command, message: res["error"] } unless res["error"].nil?
10
+ break res['data']
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ module Dapp
2
+ module Kube
3
+ module Dapp
4
+ module Command
5
+ module SecretEdit
6
+ def kube_secret_edit(file_path)
7
+ ruby2go_deploy_command(command: :secret_edit, options: kube_secret_edit_command_options(file_path))
8
+ end
9
+
10
+ def kube_secret_edit_command_options(file_path)
11
+ {
12
+ tmp_dir: _ruby2go_tmp_dir,
13
+ file_path: file_path,
14
+ values: options[:values]
15
+ }
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ module Dapp
2
+ module Kube
3
+ module Dapp
4
+ module Command
5
+ module SecretExtract
6
+ def kube_secret_extract(file_path)
7
+ ruby2go_deploy_command(command: :secret_extract, raw_command_options: kube_secret_extract_raw_command_options(file_path))
8
+ end
9
+
10
+ def kube_secret_extract_raw_command_options(file_path)
11
+ kube_secret_generate_raw_command_options(file_path)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ module Dapp
2
+ module Kube
3
+ module Dapp
4
+ module Command
5
+ module SecretGenerate
6
+ def kube_secret_generate(file_path)
7
+ ruby2go_deploy_command(command: :secret_generate, raw_command_options: kube_secret_generate_raw_command_options(file_path))
8
+ end
9
+
10
+ def kube_secret_generate_raw_command_options(file_path)
11
+ JSON.dump({
12
+ file_path: file_path,
13
+ output_file_path: options[:output_file_path],
14
+ values: options[:values]
15
+ })
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,13 @@
1
+ module Dapp
2
+ module Kube
3
+ module Dapp
4
+ module Command
5
+ module SecretKeyGenerate
6
+ def kube_secret_key_generate
7
+ ruby2go_deploy_command(command: :secret_key_generate)
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Dapp
2
+ module Kube
3
+ module Dapp
4
+ module Command
5
+ module SecretRegenerate
6
+ def kube_secret_regenerate(*secret_values_paths)
7
+ ruby2go_deploy_command(command: :secret_regenerate, options: { old_key: options[:old_secret_key], secret_values_paths: secret_values_paths })
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,32 @@
1
+ module Dapp
2
+ module Kube
3
+ module Dapp
4
+ module Command
5
+ module ValueGet
6
+ def kube_value_get(value_key)
7
+ service_values = Helm::Values.service_values_hash(
8
+ self, option_repo, kube_namespace, option_tags.first,
9
+ without_registry: self.options[:without_registry],
10
+ disable_warnings: true
11
+ )
12
+
13
+ res = service_values
14
+ value_key.split(".").each do |value_key_part|
15
+ if res.is_a?(Hash) && res.key?(value_key_part)
16
+ res = res[value_key_part]
17
+ else
18
+ exit(1)
19
+ end
20
+ end
21
+
22
+ if res.is_a? Hash
23
+ puts YAML.dump(res)
24
+ else
25
+ puts JSON.dump(res)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,26 @@
1
+ module Dapp
2
+ module Kube
3
+ module Dapp
4
+ module Dapp
5
+ include Helper::YAML
6
+
7
+ include Command::Deploy
8
+ include Command::Dismiss
9
+ include Command::SecretKeyGenerate
10
+ include Command::SecretGenerate
11
+ include Command::SecretExtract
12
+ include Command::SecretRegenerate
13
+ include Command::SecretEdit
14
+ include Command::MinikubeSetup
15
+ include Command::ChartCreate
16
+ include Command::Render
17
+ include Command::Lint
18
+ include Command::ValueGet
19
+ include Command::Common
20
+ include Command::Ruby2Go
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ ::Dapp::Dapp.send(:include, ::Dapp::Kube::Dapp::Dapp)
@@ -0,0 +1,7 @@
1
+ module Dapp
2
+ module Kube
3
+ module Error
4
+ class Default < ::Dapp::Error::Default; end
5
+ end
6
+ end
7
+ end