dapp 0.22.6 → 0.22.7

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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/bin/dapp +9 -5
  3. data/config/en/common.yml +2 -0
  4. data/config/en/net_status.yml +9 -12
  5. data/lib/dapp.rb +12 -47
  6. data/lib/dapp/cli/command/options/tag.rb +39 -0
  7. data/lib/dapp/config/directive/base.rb +2 -1
  8. data/lib/dapp/dapp.rb +6 -9
  9. data/lib/dapp/dapp/command/common.rb +9 -4
  10. data/lib/dapp/dapp/logging/i18n.rb +5 -1
  11. data/lib/dapp/dapp/logging/process.rb +2 -2
  12. data/lib/dapp/deployment/config/config.rb +5 -5
  13. data/lib/dapp/deployment/config/directive/expose.rb +1 -1
  14. data/lib/dapp/deployment/config/directive/namespace/instance_methods.rb +1 -1
  15. data/lib/dapp/deployment/error/app.rb +1 -1
  16. data/lib/dapp/deployment/error/{base.rb → default.rb} +1 -1
  17. data/lib/dapp/deployment/error/deployment.rb +1 -1
  18. data/lib/dapp/deployment/error/kubernetes.rb +1 -1
  19. data/lib/dapp/deployment/kubernetes.rb +3 -3
  20. data/lib/dapp/deployment/kubernetes/error.rb +4 -4
  21. data/lib/dapp/deployment/secret.rb +1 -1
  22. data/lib/dapp/dimg/cli/command/dimg.rb +2 -1
  23. data/lib/dapp/dimg/cli/command/dimg/build_context/export.rb +5 -0
  24. data/lib/dapp/dimg/cli/command/dimg/flush_local.rb +24 -0
  25. data/lib/dapp/dimg/cli/command/dimg/push.rb +2 -26
  26. data/lib/dapp/dimg/cli/command/dimg/stages/base.rb +2 -2
  27. data/lib/dapp/dimg/cli/command/dimg/tag.rb +11 -4
  28. data/lib/dapp/dimg/config/config.rb +1 -1
  29. data/lib/dapp/dimg/config/directive/artifact.rb +5 -5
  30. data/lib/dapp/dimg/config/directive/artifact_base.rb +5 -5
  31. data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +1 -1
  32. data/lib/dapp/dimg/config/directive/dimg/validation.rb +11 -13
  33. data/lib/dapp/dimg/config/directive/docker/artifact.rb +1 -1
  34. data/lib/dapp/dimg/config/directive/docker/base.rb +1 -1
  35. data/lib/dapp/dimg/config/directive/git_artifact_local.rb +19 -3
  36. data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +3 -1
  37. data/lib/dapp/dimg/config/directive/mount.rb +3 -3
  38. data/lib/dapp/dimg/dapp/command/build.rb +1 -1
  39. data/lib/dapp/dimg/dapp/command/build_context/export.rb +17 -13
  40. data/lib/dapp/dimg/dapp/command/build_context/import.rb +24 -17
  41. data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +26 -33
  42. data/lib/dapp/dimg/dapp/command/common.rb +53 -56
  43. data/lib/dapp/dimg/dapp/command/flush_local.rb +18 -0
  44. data/lib/dapp/dimg/dapp/command/mrproper.rb +1 -1
  45. data/lib/dapp/dimg/dapp/command/push.rb +2 -8
  46. data/lib/dapp/dimg/dapp/command/spush.rb +2 -4
  47. data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +41 -46
  48. data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +35 -39
  49. data/lib/dapp/dimg/dapp/command/stages/common.rb +13 -3
  50. data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +1 -3
  51. data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +3 -3
  52. data/lib/dapp/dimg/dapp/command/stages/pull.rb +2 -12
  53. data/lib/dapp/dimg/dapp/command/stages/push.rb +2 -8
  54. data/lib/dapp/dimg/dapp/command/tag.rb +3 -6
  55. data/lib/dapp/dimg/dapp/dapp.rb +1 -0
  56. data/lib/dapp/dimg/dapp/dappfile.rb +11 -1
  57. data/lib/dapp/dimg/dimg.rb +39 -31
  58. data/lib/dapp/dimg/error/build.rb +1 -1
  59. data/lib/dapp/dimg/error/chef.rb +1 -5
  60. data/lib/dapp/dimg/error/{command.rb → default.rb} +1 -1
  61. data/lib/dapp/dimg/error/dimg.rb +1 -1
  62. data/lib/dapp/dimg/error/lock.rb +1 -1
  63. data/lib/dapp/dimg/error/registry.rb +1 -1
  64. data/lib/dapp/dimg/error/rugged.rb +1 -1
  65. data/lib/dapp/dimg/error/tar_writer.rb +1 -1
  66. data/lib/dapp/dimg/git_artifact.rb +3 -1
  67. data/lib/dapp/dimg/image/argument.rb +3 -1
  68. data/lib/dapp/dimg/image/dimg.rb +15 -0
  69. data/lib/dapp/dimg/image/stage.rb +0 -9
  70. data/lib/dapp/error/base.rb +1 -5
  71. data/lib/dapp/error/command.rb +5 -0
  72. data/lib/dapp/error/config.rb +5 -0
  73. data/lib/dapp/error/dapp.rb +1 -1
  74. data/lib/dapp/error/dappfile.rb +1 -1
  75. data/lib/dapp/error/default.rb +11 -0
  76. data/lib/dapp/error/mod/user.rb +11 -0
  77. data/lib/dapp/error/shellout.rb +1 -1
  78. data/lib/dapp/exception/base.rb +1 -1
  79. data/lib/dapp/helper/yaml.rb +3 -2
  80. data/lib/dapp/kube/cli/command/kube/deploy.rb +2 -26
  81. data/lib/dapp/kube/cli/command/kube/lint.rb +1 -26
  82. data/lib/dapp/kube/cli/command/kube/render.rb +2 -26
  83. data/lib/dapp/kube/cli/command/kube/secret_key_generate.rb +2 -2
  84. data/lib/dapp/kube/dapp/command/common.rb +19 -23
  85. data/lib/dapp/kube/dapp/command/deploy.rb +16 -9
  86. data/lib/dapp/kube/dapp/command/dismiss.rb +1 -1
  87. data/lib/dapp/kube/dapp/command/lint.rb +4 -10
  88. data/lib/dapp/kube/dapp/command/minikube_setup.rb +12 -18
  89. data/lib/dapp/kube/dapp/command/secret_edit.rb +2 -2
  90. data/lib/dapp/kube/error/{command.rb → default.rb} +1 -1
  91. data/lib/dapp/kube/error/kubernetes.rb +1 -1
  92. data/lib/dapp/kube/helm/release.rb +7 -33
  93. data/lib/dapp/kube/helm/values.rb +140 -0
  94. data/lib/dapp/kube/kubernetes/client.rb +9 -10
  95. data/lib/dapp/kube/kubernetes/client/error.rb +14 -8
  96. data/lib/dapp/kube/kubernetes/error.rb +15 -0
  97. data/lib/dapp/kube/kubernetes/manager/deployment.rb +2 -2
  98. data/lib/dapp/kube/secret.rb +1 -1
  99. data/lib/dapp/version.rb +1 -1
  100. metadata +15 -11
  101. data/lib/dapp/config/error/config.rb +0 -7
  102. data/lib/dapp/deployment/error/command.rb +0 -7
  103. data/lib/dapp/deployment/error/config.rb +0 -7
  104. data/lib/dapp/dimg/error/base.rb +0 -7
  105. data/lib/dapp/dimg/error/config.rb +0 -7
  106. data/lib/dapp/kube/error/base.rb +0 -11
@@ -23,7 +23,9 @@ module Dapp
23
23
  .reject { |job| ['0', 'false'].include? job.annotations["dapp/recreate"].to_s }
24
24
  .select { |job| kube_job_list.include? job.name }
25
25
  .each do |job|
26
- log_process("Delete hooks job `#{job.name}` for release #{release.name}", short: true) { kube_delete_job!(job.name) }
26
+ log_process("Delete hooks job `#{job.name}` for release #{release.name}", short: true) do
27
+ kube_delete_job!(job.name) unless dry_run?
28
+ end
27
29
  end
28
30
  end
29
31
 
@@ -66,8 +68,11 @@ module Dapp
66
68
  watch_hooks_by_type['pre-install'].to_a + watch_hooks_by_type['post-install'].to_a
67
69
  end
68
70
 
69
- watch_hooks_thr = Thread.new do
70
- watch_hooks.each {|job| Kubernetes::Manager::Job.new(self, job.name).watch_till_done!}
71
+ watch_hooks_thr = nil
72
+ unless dry_run?
73
+ watch_hooks_thr = Thread.new do
74
+ watch_hooks.each {|job| Kubernetes::Manager::Job.new(self, job.name).watch_till_done!}
75
+ end
71
76
  end
72
77
 
73
78
  deployment_managers = release.deployments.values
@@ -79,14 +84,16 @@ module Dapp
79
84
 
80
85
  deployment_managers.each(&:after_deploy)
81
86
 
82
- watch_hooks_thr.kill if watch_hooks_thr.alive?
87
+ watch_hooks_thr.kill if !dry_run? && watch_hooks_thr && watch_hooks_thr.alive?
83
88
 
84
- begin
85
- ::Timeout::timeout(self.options[:timeout] || 300) do
86
- deployment_managers.each {|deployment_manager| deployment_manager.watch_till_ready!}
89
+ unless dry_run?
90
+ begin
91
+ ::Timeout::timeout(self.options[:timeout] || 300) do
92
+ deployment_managers.each {|deployment_manager| deployment_manager.watch_till_ready!}
93
+ end
94
+ rescue ::Timeout::Error
95
+ raise ::Dapp::Error::Command, code: :kube_deploy_timeout
87
96
  end
88
- rescue ::Timeout::Error
89
- raise Kube::Error::Base, code: :deploy_timeout
90
97
  end
91
98
  end
92
99
  end
@@ -16,7 +16,7 @@ module Dapp
16
16
 
17
17
  def kube_check_helm_release!
18
18
  pr = shellout("helm list | grep #{kube_release_name}")
19
- raise Error::Command, code: :helm_release_not_exist, data: { name: kube_release_name } if pr.status == 1 || pr.stdout.empty?
19
+ raise ::Dapp::Error::Command, code: :helm_release_not_exist, data: { name: kube_release_name } if pr.status == 1 || pr.stdout.empty?
20
20
  end
21
21
  end
22
22
  end
@@ -8,7 +8,7 @@ module Dapp
8
8
  chart_spec = yaml_load_file(chart_yaml_path)
9
9
 
10
10
  if chart_spec["name"].nil? || chart_spec["name"].empty?
11
- raise Error::Command, code: :bad_helm_chart_spec_name, data: { name: chart_spec["name"], path: chart_yaml_path, raw_spec: chart_yaml_path.read.strip }
11
+ raise ::Dapp::Error::Command, code: :no_helm_chart_spec_name, data: { name: chart_spec["name"], path: chart_yaml_path, raw_spec: chart_yaml_path.read.strip }
12
12
  end
13
13
 
14
14
  chart_spec["name"]
@@ -32,8 +32,7 @@ module Dapp
32
32
 
33
33
  repo = option_repo
34
34
 
35
- docker_tag = options[:docker_tag]
36
- docker_tag = consistent_uniq_slugify(docker_tag) if docker_tag
35
+ docker_tag = option_tags.first
37
36
 
38
37
  with_kube_tmp_lint_chart_dir do
39
38
  kube_copy_chart
@@ -60,13 +59,8 @@ module Dapp
60
59
  end
61
60
  end
62
61
 
63
- all_values['global'] = {
64
- 'namespace' => kube_namespace,
65
- 'dapp' => {
66
- 'repo' => repo,
67
- 'docker_tag' => docker_tag
68
- }
69
- }
62
+ service_values = Helm::Values.service_values_hash(self, repo, kube_namespace, docker_tag, fake: true)
63
+ all_values = all_values.in_depth_merge service_values
70
64
 
71
65
  kube_chart_path_for_helm.join("values.yaml").write YAML.dump(all_values)
72
66
 
@@ -3,12 +3,6 @@ module Dapp
3
3
  module Dapp
4
4
  module Command
5
5
  module MinikubeSetup
6
- class MinikubeSetupError < Error::Command
7
- def initialize(**net_status)
8
- super(**net_status, context: :minikube_setup)
9
- end
10
- end
11
-
12
6
  def kube_minikube_setup
13
7
  _minikube_restart_minikube
14
8
 
@@ -34,7 +28,7 @@ module Dapp
34
28
 
35
29
  def _minikube_restart_minikube
36
30
  log_process("Restart minikube") do
37
- raise MinikubeSetupError, code: :minikube_not_found if shellout('which minikube').exitstatus == 1
31
+ raise ::Dapp::Error::Command, code: :minikube_not_found if shellout('which minikube').exitstatus == 1
38
32
 
39
33
  Process.fork do
40
34
  _minikube_set_original_sudo_caller_process_user!
@@ -50,7 +44,7 @@ module Dapp
50
44
  end
51
45
 
52
46
  _, status = Process.wait2
53
- raise MinikubeSetupError, code: :cannot_restart_minikube unless status.success?
47
+ raise ::Dapp::Error::Command, code: :cannot_restart_minikube unless status.success?
54
48
  end
55
49
  end
56
50
 
@@ -97,7 +91,7 @@ module Dapp
97
91
  rescue Errno::ESRCH
98
92
  daemon_ok = false
99
93
  end
100
- raise MinikubeSetupError, code: :"#{name}_daemon_failed" unless daemon_ok
94
+ raise ::Dapp::Error::Command, code: :"#{name}_daemon_failed" unless daemon_ok
101
95
  end
102
96
 
103
97
  def _minikube_run_minikube_persisted_storage_daemon
@@ -127,7 +121,7 @@ module Dapp
127
121
  sleep 1
128
122
  end
129
123
 
130
- raise MinikubeSetupError, code: :minikube_readiness_timeout
124
+ raise ::Dapp::Error::Command, code: :minikube_readiness_timeout
131
125
  end
132
126
  end
133
127
 
@@ -145,7 +139,7 @@ module Dapp
145
139
  end
146
140
  sleep 1
147
141
  end
148
- raise MinikubeSetupError, code: :registry_replicationcontroller_shutdown_failed unless shutdown_ok
142
+ raise ::Dapp::Error::Command, code: :registry_replicationcontroller_shutdown_failed unless shutdown_ok
149
143
  end
150
144
 
151
145
  _minikube_kubernetes.delete_pods! labelSelector: 'k8s-app=kube-registry'
@@ -157,7 +151,7 @@ module Dapp
157
151
  end
158
152
  sleep 1
159
153
  end
160
- raise MinikubeSetupError, code: :registry_pod_shutdown_failed unless shutdown_ok
154
+ raise ::Dapp::Error::Command, code: :registry_pod_shutdown_failed unless shutdown_ok
161
155
 
162
156
  if _minikube_kubernetes.service? _minikube_registry_service_spec['metadata']['name']
163
157
  _minikube_kubernetes.delete_service! _minikube_registry_service_spec['metadata']['name']
@@ -170,7 +164,7 @@ module Dapp
170
164
  end
171
165
  sleep 1
172
166
  end
173
- raise MinikubeSetupError, code: :registry_service_shutdown_failed unless shutdown_ok
167
+ raise ::Dapp::Error::Command, code: :registry_service_shutdown_failed unless shutdown_ok
174
168
  end
175
169
 
176
170
  if _minikube_kubernetes.pod? _minikube_registry_proxy_pod_spec['metadata']['name']
@@ -184,7 +178,7 @@ module Dapp
184
178
  end
185
179
  sleep 1
186
180
  end
187
- raise MinikubeSetupError, code: :registry_proxy_pod_shutdown_failed unless shutdown_ok
181
+ raise ::Dapp::Error::Command, code: :registry_proxy_pod_shutdown_failed unless shutdown_ok
188
182
  end
189
183
 
190
184
  _minikube_kubernetes.create_replicationcontroller!(_minikube_registry_replicationcontroller_spec)
@@ -199,7 +193,7 @@ module Dapp
199
193
  end
200
194
  sleep 1
201
195
  end
202
- raise MinikubeSetupError, code: :registry_pod_not_ok unless registry_pod_ok
196
+ raise ::Dapp::Error::Command, code: :registry_pod_not_ok unless registry_pod_ok
203
197
 
204
198
  _minikube_kubernetes.create_service!(_minikube_registry_service_spec)
205
199
  registry_service_ok = false
@@ -210,7 +204,7 @@ module Dapp
210
204
  end
211
205
  sleep 1
212
206
  end
213
- raise MinikubeSetupError, code: :registry_service_not_ok unless registry_service_ok
207
+ raise ::Dapp::Error::Command, code: :registry_service_not_ok unless registry_service_ok
214
208
 
215
209
  _minikube_kubernetes.create_pod! _minikube_registry_proxy_pod_spec
216
210
  registry_proxy_pod_ok = false
@@ -224,7 +218,7 @@ module Dapp
224
218
  end
225
219
  sleep 1
226
220
  end
227
- raise MinikubeSetupError, code: :registry_proxy_pod_not_ok unless registry_proxy_pod_ok
221
+ raise ::Dapp::Error::Command, code: :registry_proxy_pod_not_ok unless registry_proxy_pod_ok
228
222
  end
229
223
  end
230
224
  end
@@ -237,7 +231,7 @@ module Dapp
237
231
  rescue Errno::ECONNREFUSED
238
232
  false
239
233
  end
240
- raise MinikubeSetupError, code: :registry_port_in_use, data: {host: 'localhost', port: 5000} if registry_port_in_use
234
+ raise ::Dapp::Error::Command, code: :registry_port_in_use, data: {host: 'localhost', port: 5000} if registry_port_in_use
241
235
 
242
236
  _minikube_run_daemon(:registry_forwarder) do
243
237
  STDIN.reopen '/dev/null'
@@ -43,7 +43,7 @@ module Dapp
43
43
 
44
44
  IO.binwrite(file_path, "#{encoded_data}\n")
45
45
  break
46
- rescue ::Dapp::Error::Base => e
46
+ rescue ::Dapp::Error::Default => e
47
47
  log_warning(Helper::NetStatus.message(e))
48
48
  print 'Do you want to change file (Y/n)?'
49
49
  response = $stdin.getch.tap { print "\n" }
@@ -56,7 +56,7 @@ module Dapp
56
56
  def kube_secret_editor
57
57
  return ENV['EDITOR'] unless ENV['EDITOR'].nil?
58
58
  %w(vim vi nano).each { |editor| return editor unless shellout("which #{editor}").exitstatus.nonzero? }
59
- raise Error::Command, code: :editor_not_found
59
+ raise ::Dapp::Error::Command, code: :editor_not_found
60
60
  end
61
61
 
62
62
  private
@@ -1,7 +1,7 @@
1
1
  module Dapp
2
2
  module Kube
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 Kube
3
3
  module Error
4
- class Kubernetes < Base; end
4
+ class Kubernetes < Default; end
5
5
  end
6
6
  end
7
7
  end
@@ -123,40 +123,10 @@ module Dapp
123
123
 
124
124
  def set_options(without_registry: false)
125
125
  [].tap do |options|
126
- options.concat(set.map { |opt| "--set #{opt}" })
127
- options << "--set global.dapp.repo=#{repo}"
128
- options << "--set global.dapp.docker_tag=#{docker_tag}"
129
-
130
- if dapp.nameless_dimg?
131
- options << "--set global.dapp.docker_image=#{repo}:#{docker_tag}"
132
- if self.without_registry || without_registry
133
- options << "--set global.dapp.docker_image_id=\\\"-\\\""
134
- else
135
- options << "--set global.dapp.docker_image_id=#{dimg_registry.image_id(docker_tag, nil)}"
136
- end
137
- else
138
- dapp.dimgs_names.each do |dimg_name|
139
- options << "--set global.dapp.docker_image.#{dimg_name}=#{repo}/#{dimg_name}:#{docker_tag}"
140
- if self.without_registry || without_registry
141
- options << "--set global.dapp.docker_image_id.#{dimg_name}=\\\"-\\\""
142
- else
143
- options << "--set global.dapp.docker_image_id.#{dimg_name}=#{dimg_registry.image_id(docker_tag, dimg_name)}"
144
- end
145
- end
146
- end
126
+ options.concat set.map {|opt| "--set #{opt}"}
147
127
 
148
- is_branch = if ENV["CI_COMMIT_TAG"]
149
- false
150
- elsif ENV["CI_COMMIT_REF_NAME"]
151
- true
152
- elsif dapp.git_path and dapp.git_local_repo.branch != "HEAD"
153
- true
154
- else
155
- false
156
- end
157
- options << "--set global.dapp.is_branch=#{is_branch}"
158
-
159
- options << "--set global.namespace=#{namespace}"
128
+ service_values = Helm::Values.service_values(dapp, repo, namespace, docker_tag, without_registry: self.without_registry || without_registry)
129
+ options.concat service_values.to_set_options
160
130
  end
161
131
  end
162
132
 
@@ -171,6 +141,10 @@ module Dapp
171
141
  options << "--timeout #{deploy_timeout}" if deploy_timeout
172
142
  end
173
143
  end
144
+
145
+ class << self
146
+
147
+ end # << self
174
148
  end # Helm::Release
175
149
  end # Kube
176
150
  end # Dapp
@@ -0,0 +1,140 @@
1
+ module Dapp
2
+ module Kube
3
+ class Helm::Values
4
+ TEMPLATE_EMPTY_VALUE = "\\\"-\\\""
5
+
6
+ class << self
7
+ def service_values(*a, &b)
8
+ self.new(service_values_hash(*a, &b))
9
+ end
10
+
11
+ def service_values_hash(dapp, repo, namespace, docker_tag, fake: false, without_registry: false)
12
+ res = {
13
+ "global" => {
14
+ "namespace" => namespace,
15
+ "dapp" => {
16
+ "name" => dapp.name,
17
+ "repo" => repo,
18
+ "docker_tag" => docker_tag,
19
+ }
20
+ }
21
+ }
22
+
23
+ ci_info = {
24
+ "is_tag" => false,
25
+ "is_branch" => false,
26
+ "branch" => TEMPLATE_EMPTY_VALUE,
27
+ "tag" => TEMPLATE_EMPTY_VALUE,
28
+ "ref" => TEMPLATE_EMPTY_VALUE
29
+ }
30
+ res["global"]["dapp"]["ci"] = ci_info
31
+
32
+ if fake
33
+ elsif ENV["CI_COMMIT_TAG"]
34
+ ci_info["tag"] = ci_info["ref"] = ENV["CI_COMMIT_TAG"]
35
+ ci_info["is_tag"] = true
36
+ elsif ENV["CI_COMMIT_REF_NAME"]
37
+ ci_info["branch"] = ci_info["ref"] = ENV["CI_COMMIT_REF_NAME"]
38
+ ci_info["is_branch"] = true
39
+ elsif dapp.git_path and dapp.git_local_repo.branch != "HEAD"
40
+ ci_info["branch"] = ci_info["ref"] = dapp.git_local_repo.branch
41
+ ci_info["is_branch"] = true
42
+ elsif dapp.git_path
43
+ git = dapp.git_local_repo.send(:git)
44
+
45
+ tagref = git.references.find do |r|
46
+ if r.name.start_with?("refs/tags/")
47
+ if r.target.is_a? Rugged::Tag::Annotation
48
+ r.target.target_id == git.head.target_id
49
+ else
50
+ r.target_id == git.head.target_id
51
+ end
52
+ end
53
+ end
54
+
55
+ if tagref
56
+ tag = tagref.name.partition("refs/tags/").last
57
+ else
58
+ tag = git.head.target_id
59
+ end
60
+
61
+ ci_info["tag"] = ci_info["ref"] = tag
62
+ ci_info["is_tag"] = true
63
+ end
64
+
65
+ dimgs = dapp.build_configs.map do |config|
66
+ ::Dapp::Dimg::Dimg.new(config: config, dapp: dapp, ignore_git_fetch: true)
67
+ end.uniq do |dimg|
68
+ dimg.config._name
69
+ end
70
+
71
+ dimgs.each do |dimg|
72
+ dimg_data = {}
73
+ if dimg.config._name
74
+ res["global"]["dapp"]["is_nameless_dimg"] = false
75
+ res["global"]["dapp"]["dimg"] ||= {}
76
+ res["global"]["dapp"]["dimg"][dimg.config._name] = dimg_data
77
+ else
78
+ res["global"]["dapp"]["is_nameless_dimg"] = true
79
+ res["global"]["dapp"]["dimg"] = dimg_data
80
+ end
81
+
82
+ dimg_labels = {}
83
+ docker_image_id = TEMPLATE_EMPTY_VALUE
84
+ unless fake || without_registry
85
+ dimg_labels = dapp.dimg_registry(repo).image_labels(docker_tag, dimg.config._name)
86
+ docker_image_id = dapp.dimg_registry(repo).image_id(docker_tag, dimg.config._name)
87
+ end
88
+
89
+ dimg_data["docker_image"] = [[repo, dimg.config._name].compact.join("/"), docker_tag].join(":")
90
+ dimg_data["docker_image_id"] = docker_image_id
91
+
92
+ [*dimg.local_git_artifacts, *dimg.remote_git_artifacts].each do |ga|
93
+ if ga.as
94
+ commit_id = dimg_labels[dapp.dimgstage_g_a_commit_label(ga.paramshash)] || TEMPLATE_EMPTY_VALUE
95
+
96
+ dimg_data["git"] ||= {}
97
+ dimg_data["git"][ga.as] ||= {}
98
+ dimg_data["git"][ga.as]["commit_id"] = commit_id
99
+ end
100
+ end
101
+ end
102
+
103
+ res
104
+ end
105
+ end
106
+
107
+ attr_reader :data
108
+
109
+ def initialize(data={})
110
+ @data = data
111
+ end
112
+
113
+ def as_set_options
114
+ options = {}
115
+
116
+ queue = [[nil, data]]
117
+
118
+ loop do
119
+ option_key, hash = queue.shift
120
+ break unless hash
121
+
122
+ hash.each do |k, v|
123
+ new_option_key = [option_key, k].compact.join(".")
124
+ if v.is_a? Hash
125
+ queue << [new_option_key, v]
126
+ else
127
+ options[new_option_key] = v
128
+ end
129
+ end
130
+ end
131
+
132
+ options
133
+ end
134
+
135
+ def to_set_options
136
+ as_set_options.map {|k, v| "--set #{k}=#{v}"}
137
+ end
138
+ end # Helm::ServiceValues
139
+ end # Kube
140
+ end # Dapp
@@ -150,15 +150,14 @@ module Dapp
150
150
  else
151
151
  err_data = {}
152
152
  err_data[:response_http_status] = response.status
153
+ err_data[:response_raw_body] = response.body
153
154
  if response_body = (JSON.parse(response.body) rescue nil)
154
155
  err_data[:response_body] = response_body
155
- else
156
- err_data[:response_raw_body] = response.body
157
156
  end
158
157
  err_data[:request_parameters] = request_parameters
159
158
 
160
159
  if response.status.to_s.start_with? '5'
161
- raise Error::Base, code: :server_error, data: err_data
160
+ raise Error::Default, code: :server_error, data: err_data
162
161
  elsif response.status.to_s == '404'
163
162
  case err_data.fetch(:response_body, {}).fetch('details', {})['kind']
164
163
  when 'pods'
@@ -177,8 +176,8 @@ module Dapp
177
176
  Excon.new(kube_cluster_config['cluster']['server'], **kube_server_options(excon_parameters)).tap(&:get)
178
177
  rescue Excon::Error::Socket => err
179
178
  raise Error::ConnectionRefused,
180
- code: :kube_server_connection_refused,
181
- data: { kube_cluster_config: kube_cluster_config, kube_user_config: kube_user_config, error: err.message }
179
+ code: :server_connection_refused,
180
+ data: { kube_cluster_config: kube_cluster_config, kube_user_config: kube_user_config, error: err.message }
182
181
  end
183
182
 
184
183
  return yield connection
@@ -217,7 +216,7 @@ module Dapp
217
216
  def kube_user_config
218
217
  @kube_user_config ||= begin
219
218
  kube_user_config = self.class.kube_user_config(kube_config, kube_context_config['context']['user'])
220
- raise Error::BadConfig, code: :kube_user_not_found, data: {context: kube_context_config} if kube_user_config.nil?
219
+ raise Error::BadConfig, code: :user_config_not_found, data: {config_path: self.class.kube_config_path, context: kube_context_config, user: kube_context_config['context']['user']} if kube_user_config.nil?
221
220
  kube_user_config
222
221
  end
223
222
  end
@@ -225,7 +224,7 @@ module Dapp
225
224
  def kube_cluster_config
226
225
  @kube_cluster_config ||= begin
227
226
  kube_cluster_config = self.class.kube_cluster_config(kube_config, kube_context_config['context']['cluster'])
228
- raise Error::BadConfig, code: :kube_cluster_not_found, data: {context: kube_context_config} if kube_cluster_config.nil?
227
+ raise Error::BadConfig, code: :cluster_config_not_found, data: {config_path: self.class.kube_config_path, context: kube_context_config, cluster: kube_context_config['context']['cluster']} if kube_cluster_config.nil?
229
228
  kube_cluster_config
230
229
  end
231
230
  end
@@ -234,7 +233,7 @@ module Dapp
234
233
  @kube_context_config ||= begin
235
234
  context_name = self.class.kube_context_name(kube_config)
236
235
  kube_context_config = self.class.kube_context_config(kube_config, context_name)
237
- raise Error::BadConfig, code: :kube_context_not_found, data: {context_name: context_name} if kube_context_config.nil?
236
+ raise Error::BadConfig, code: :config_context_not_found, data: {config_path: self.class.kube_config_path, config: kube_config, context_name: context_name} if kube_context_config.nil?
238
237
  kube_context_config
239
238
  end
240
239
  end
@@ -242,7 +241,7 @@ module Dapp
242
241
  def kube_config
243
242
  @kube_config ||= begin
244
243
  kube_config = self.class.kube_config(self.class.kube_config_path)
245
- raise Error::Base, code: :kube_config_not_found, data: { path: self.class.kube_config_path } if kube_config.nil?
244
+ raise Error::BadConfig, code: :config_not_found, data: { config_path: self.class.kube_config_path } if kube_config.nil?
246
245
  kube_config
247
246
  end
248
247
  end
@@ -260,7 +259,7 @@ module Dapp
260
259
 
261
260
  def kube_context_name(kube_config)
262
261
  kube_config['current-context'] || begin
263
- if context = kube_config.fetch('contexts', []).first
262
+ if (context = kube_config.fetch('contexts', []).first)
264
263
  warn "[WARN] .kube/config current-context is not set, using context '#{context['name']}'"
265
264
  context['name']
266
265
  end