dapp 0.22.6 → 0.22.7

Sign up to get free protection for your applications and to get access to all the features.
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