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
@@ -2,106 +2,63 @@ module Dapp
2
2
  module Dimg
3
3
  module DockerRegistry
4
4
  class Base
5
- include Request
6
- include Authorization
5
+ attr_accessor :dapp
6
+ attr_accessor :repository
7
7
 
8
- API_VERSION = 'v2'.freeze
9
-
10
- attr_accessor :repo
11
- attr_accessor :hostname_url
12
- attr_accessor :repo_suffix
13
-
14
- def initialize(repo, hostname_url, repo_suffix)
15
- self.repo = repo
16
- self.hostname_url = hostname_url
17
- self.repo_suffix = repo_suffix
18
- end
19
-
20
- def repo_exist?
21
- tags.any?
22
- end
23
-
24
- def tags
25
- @tags ||= api_request(repo_suffix, 'tags/list')['tags'] || []
26
- rescue Error::Registry => e
27
- raise Exception::Registry, code: :no_such_dimg, data: { registry: api_url } if e.net_status[:code] == :page_not_found
28
- raise
8
+ def initialize(dapp, repository)
9
+ self.dapp = dapp
10
+ self.repository = repository
29
11
  end
30
12
 
31
13
  def image_id(tag)
32
- response = manifest_v2(tag)
33
- response['config']['digest'] if response['schemaVersion'] == 2
14
+ ruby2go_docker_registry_command(command: :image_id, options: { reference: tag_reference(tag) })
34
15
  end
35
16
 
36
17
  def image_parent_id(tag)
37
- image_history(tag)['container_config']['Image']
38
- end
39
-
40
- def image_labels(tag)
41
- image_history(tag)['config']['Labels']
42
- end
43
-
44
- def image_delete(tag)
45
- image_blobs(tag).each { |hash| blob_delete(hash.values.first) }
46
- api_request(repo_suffix, "/manifests/#{image_digest(tag)}",
47
- method: :delete,
48
- expects: [202, 404],
49
- headers: { Accept: 'Accept: application/vnd.docker.distribution.manifest.v2+json' })
50
- end
51
-
52
- def image_history(tag)
53
- response = manifest_v1(tag)
54
- JSON.load(response['history'].first['v1Compatibility'])
18
+ ruby2go_docker_registry_command(command: :image_parent_id, options: { reference: tag_reference(tag) })
55
19
  end
56
20
 
57
- protected
58
-
59
- def image_digest(tag)
60
- raw_api_request(repo_suffix, "/manifests/#{tag}",
61
- headers: { Accept: 'application/vnd.docker.distribution.manifest.v2+json' }).headers['Docker-Content-Digest']
21
+ def image_config(tag)
22
+ ruby2go_docker_registry_command(command: :image_config, options: { reference: tag_reference(tag) })
62
23
  end
63
24
 
64
- def image_blobs(tag)
65
- manifest_v1(tag)['fsLayers']
25
+ def gcr_image_delete(tag)
26
+ image_delete_by_tag(tag)
66
27
  end
67
28
 
68
- def manifest_v1(tag)
69
- api_request(repo_suffix, "/manifests/#{tag}")
29
+ def image_delete(tag)
30
+ digest = image_digest(tag)
31
+ image_delete_by_digest(digest)
70
32
  end
71
33
 
72
- def manifest_v2(tag)
73
- api_request(repo_suffix, "/manifests/#{tag}",
74
- headers: { Accept: 'application/vnd.docker.distribution.manifest.v2+json' })
34
+ def image_delete_by_tag(tag)
35
+ ruby2go_docker_registry_command(command: :image_delete, options: { reference: tag_reference(tag) })
75
36
  end
76
37
 
77
- def blob_delete(id)
78
- api_request(repo_suffix, "/blobs/#{id}",
79
- method: :delete, expects: [202, 404])
38
+ def image_delete_by_digest(digest)
39
+ ruby2go_docker_registry_command(command: :image_delete, options: { reference: digest_reference(digest) })
80
40
  end
81
41
 
82
- def api_request(*uri, **options)
83
- JSON.load(raw_api_request(*uri, **options).body)
42
+ def image_digest(tag)
43
+ ruby2go_docker_registry_command(command: :image_digest, options: { reference: tag_reference(tag) })
84
44
  end
85
45
 
86
- def raw_api_request(*uri, **options)
87
- url = api_url(*uri)
88
- request(url, **default_api_options.merge(options))
89
- rescue Excon::Error::NotFound
90
- raise Error::Registry, code: :page_not_found, data: { url: url, registry: api_url }
91
- rescue Excon::Error::Unauthorized
92
- user_not_authorized!
93
- end
46
+ protected
94
47
 
95
- def api_url(*uri)
96
- File.join(hostname_url, API_VERSION, '/', *uri)
48
+ def tag_reference(tag = nil)
49
+ [self.repository.chomp("/"), tag].compact.join(":")
97
50
  end
98
51
 
99
- def default_api_options
100
- { expects: [200] }
52
+ def digest_reference(digest = nil)
53
+ [self.repository.chomp("/"), digest].compact.join("@")
101
54
  end
102
55
 
103
- def user_not_authorized!
104
- raise Error::Registry, code: :user_not_authorized, data: { registry: api_url }
56
+ def ruby2go_docker_registry_command(command:, **options)
57
+ (options[:options] ||= {}).merge!(host_docker_config_dir: dapp.class.host_docker_config_dir)
58
+ dapp.ruby2go_docker_registry(command: command, **options).tap do |res|
59
+ raise Error::Registry, code: :ruby2go_docker_registry_command_failed_unexpected_error, data: { command: command, message: res["error"] } unless res["error"].nil?
60
+ break res['data']
61
+ end
105
62
  end
106
63
  end
107
64
  end # DockerRegistry
@@ -0,0 +1,55 @@
1
+ module Dapp
2
+ module Dimg
3
+ module DockerRegistry
4
+ class Dimg < Base
5
+ def dimgstages_tags
6
+ ruby2go_docker_registry_command(command: :dimgstage_tags, options: { reference: tag_reference })
7
+ end
8
+
9
+ def dimg_tags(dimg_name)
10
+ with_dimg_repository(dimg_name.to_s) do
11
+ ruby2go_docker_registry_command(command: :dimg_tags, options: { reference: tag_reference })
12
+ end
13
+ end
14
+
15
+ def nameless_dimg_tags
16
+ ruby2go_docker_registry_command(command: :dimg_tags, options: { reference: tag_reference })
17
+ end
18
+
19
+ def image_id(tag, dimg_repository = nil)
20
+ with_dimg_repository(dimg_repository.to_s) { super(tag) }
21
+ end
22
+
23
+ def image_parent_id(tag, dimg_repository = nil)
24
+ with_dimg_repository(dimg_repository.to_s) { super(tag) }
25
+ end
26
+
27
+ def image_config(tag, dimg_repository = nil)
28
+ with_dimg_repository(dimg_repository.to_s) { super(tag) }
29
+ end
30
+
31
+ def gcr_image_delete(tag, dimg_repository = nil)
32
+ with_dimg_repository(dimg_repository.to_s) { super(tag) }
33
+ end
34
+
35
+ def image_delete(tag, dimg_repository = nil)
36
+ with_dimg_repository(dimg_repository.to_s) { super(tag) }
37
+ end
38
+
39
+ def image_digest(tag, dimg_repository = nil)
40
+ with_dimg_repository(dimg_repository.to_s) { super(tag) }
41
+ end
42
+
43
+ protected
44
+
45
+ def with_dimg_repository(dimg_repository)
46
+ old_repository = repository
47
+ @repository = File.join(old_repository, dimg_repository)
48
+ yield
49
+ ensure
50
+ @repository = old_repository
51
+ end
52
+ end
53
+ end # DockerRegistry
54
+ end # Dimg
55
+ end # Dapp
@@ -1,37 +1,19 @@
1
1
  module Dapp
2
2
  module Dimg
3
3
  module DockerRegistry
4
- def self.new(repo)
5
- /^#{repo_name_format}$/ =~ repo
6
- expected_hostname = Regexp.last_match(:hostname)
7
- expected_repo_suffix = Regexp.last_match(:repo_suffix)
8
- expected_hostname_url = expected_hostname ? "http://#{expected_hostname}" : nil
9
-
10
- if hostname_exist?(expected_hostname_url)
11
- Base.new(repo, expected_hostname_url, expected_repo_suffix)
12
- else
13
- Default.new(repo, File.join(*[expected_hostname, expected_repo_suffix].compact))
14
- end
4
+ def self.new(dapp, repo)
5
+ Dimg.new(dapp, repo)
15
6
  end
16
7
 
17
8
  def self.repo_name_format
18
- separator = '[_.]|__|[-]*'
19
- alpha_numeric = '[[:alnum:]]*'
20
- component = "#{alpha_numeric}[#{separator}#{alpha_numeric}]*"
21
- port_number = '[[:digit:]]+'
22
- hostcomponent = '[[:alnum:]_-]*[[:alnum:]]'
23
- hostname = "#{hostcomponent}[\\.#{hostcomponent}]*(?<port>:#{port_number})?"
24
- "(?<hostname>#{hostname}/)?(?<repo_suffix>#{component}[/#{component}]*)"
9
+ rpart = '[a-z0-9]+(([_.]|__|-+)[a-z0-9]+)*'
10
+ hpart = '(?!-)[a-z0-9-]+(?<!-)'
11
+ "(?<hostname>#{hpart}(\\.#{hpart})*(?<port>:[0-9]+)?\/)?(?<repo_suffix>#{rpart}(\/#{rpart})*)"
25
12
  end
26
13
 
27
14
  def self.repo_name?(name)
28
15
  !(/^#{repo_name_format}$/ =~ name).nil?
29
16
  end
30
-
31
- def self.hostname_exist?(url)
32
- return false unless url
33
- Base.url_available?(url)
34
- end
35
17
  end # DockerRegistry
36
18
  end # Dimg
37
19
  end # Dapp
@@ -1,7 +1,7 @@
1
1
  module Dapp
2
2
  module Dimg
3
3
  module Error
4
- class Build < Base; end
4
+ class Build < Default; end
5
5
  end
6
6
  end
7
7
  end
@@ -1,11 +1,7 @@
1
1
  module Dapp
2
2
  module Dimg
3
3
  module Error
4
- class Chef < Base
5
- def initialize(**net_status)
6
- super(context: 'chef', **net_status)
7
- end
8
- end
4
+ class Chef < Default; end
9
5
  end
10
6
  end
11
7
  end
@@ -1,7 +1,7 @@
1
1
  module Dapp
2
2
  module Dimg
3
3
  module Error
4
- class Command < Base; end
4
+ class Default < ::Dapp::Error::Default; end
5
5
  end
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  module Dapp
2
2
  module Dimg
3
3
  module Error
4
- class Dimg < Base; end
4
+ class Dimg < Default; end
5
5
  end
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  module Dapp
2
2
  module Dimg
3
3
  module Error
4
- class Lock < Base; end
4
+ class Lock < Default; end
5
5
  end
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  module Dapp
2
2
  module Dimg
3
3
  module Error
4
- class Registry < Base; end
4
+ class Registry < Default; end
5
5
  end
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  module Dapp
2
2
  module Dimg
3
3
  module Error
4
- class Rugged < Base; end
4
+ class Rugged < Default; end
5
5
  end
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  module Dapp
2
2
  module Dimg
3
3
  module Error
4
- class TarWriter < Base; end
4
+ class TarWriter < Default; end
5
5
  end
6
6
  end
7
7
  end