dapp 0.13.19 → 0.13.20
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.
- checksums.yaml +4 -4
- data/lib/dapp/config/config.rb +4 -0
- data/lib/dapp/config/directive/base.rb +13 -15
- data/lib/dapp/dapp/dappfile.rb +1 -0
- data/lib/dapp/dimg/build/stage/artifact_default.rb +3 -3
- data/lib/dapp/dimg/config/config.rb +4 -0
- data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +40 -0
- data/lib/dapp/dimg/config/directive/dimg/validation.rb +1 -5
- data/lib/dapp/kube/kubernetes/client.rb +9 -6
- data/lib/dapp/kube/kubernetes/client/error.rb +7 -0
- data/lib/dapp/kube/kubernetes/manager/container.rb +1 -1
- data/lib/dapp/kube/kubernetes/manager/deployment.rb +1 -1
- data/lib/dapp/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76cb1be7940f4087220a9b04e6d8352cfecae333
|
4
|
+
data.tar.gz: 2a0af558bbf26b660f8bd53524bf8c1cfde2692d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59003aea36976ff49f4687fdca7052a32643617c21aa0bb6dfba445a865c1f66b46421bc1b8a3ef7fc1d68225a41f529ddf068d8a6a0c2ae7dd14952b2da886a
|
7
|
+
data.tar.gz: 1249d96364c8bddee9d369513c146c0e20710f0efa20d00942ce846ac502841043b94634c704fc7947fc3aebcc594080e40089a17bea75a6a546ba76541060c2
|
data/lib/dapp/config/config.rb
CHANGED
@@ -48,21 +48,22 @@ module Dapp
|
|
48
48
|
|
49
49
|
def pass_to(obj, clone_method = :clone)
|
50
50
|
passed_directives.each do |directive|
|
51
|
-
|
52
|
-
|
53
|
-
obj.instance_variable_set(directive, begin
|
54
|
-
case variable
|
55
|
-
when Base then variable.public_send(clone_method)
|
56
|
-
when String, Symbol, Integer, TrueClass, FalseClass then variable
|
57
|
-
when Array, Hash then marshal_clone(variable)
|
58
|
-
else
|
59
|
-
raise
|
60
|
-
end
|
61
|
-
end)
|
51
|
+
obj.instance_variable_set(directive, clone_variable(instance_variable_get(directive), clone_method))
|
62
52
|
end
|
63
53
|
obj
|
64
54
|
end
|
65
55
|
|
56
|
+
def clone_variable(var, clone_method = :clone)
|
57
|
+
case var
|
58
|
+
when Base then var.public_send(clone_method)
|
59
|
+
when String, Symbol, Integer, TrueClass, FalseClass then var
|
60
|
+
when Array, Hash then marshal_clone(var)
|
61
|
+
when NilClass then nil
|
62
|
+
else
|
63
|
+
raise
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
66
67
|
def passed_directives
|
67
68
|
[]
|
68
69
|
end
|
@@ -78,10 +79,7 @@ module Dapp
|
|
78
79
|
end
|
79
80
|
|
80
81
|
def marshal_load(variable_values)
|
81
|
-
variable_values.each
|
82
|
-
instance_variable_set(variable, value)
|
83
|
-
end
|
84
|
-
|
82
|
+
variable_values.each { |variable, value| instance_variable_set(variable, clone_variable(value)) }
|
85
83
|
self
|
86
84
|
end
|
87
85
|
|
data/lib/dapp/dapp/dappfile.rb
CHANGED
@@ -33,6 +33,7 @@ module Dapp
|
|
33
33
|
::Dapp::Config::Config.new(dapp: self).tap do |config|
|
34
34
|
begin
|
35
35
|
config.instance_eval File.read(dappfile_path), dappfile_path
|
36
|
+
config.after_parsing!
|
36
37
|
config.validate!
|
37
38
|
rescue SyntaxError, StandardError => e
|
38
39
|
backtrace = e.backtrace.find { |line| line.start_with?(dappfile_path) }
|
@@ -17,10 +17,10 @@ module Dapp
|
|
17
17
|
group = artifact[:options][:group]
|
18
18
|
to = artifact[:options][:to]
|
19
19
|
|
20
|
-
command = safe_cp(cwd, artifact_dimg.container_tmp_path(artifact_name).to_s, nil, nil, include_paths, exclude_paths)
|
20
|
+
command = safe_cp(cwd, artifact_dimg.container_tmp_path(artifact_name, 'data').to_s, nil, nil, include_paths, exclude_paths)
|
21
21
|
run_artifact_dimg(artifact_dimg, artifact_name, command)
|
22
22
|
|
23
|
-
command = safe_cp(dimg.container_tmp_path('artifact', artifact_name).to_s, to, owner, group, include_paths, exclude_paths)
|
23
|
+
command = safe_cp(dimg.container_tmp_path('artifact', artifact_name, 'data').to_s, to, owner, group, include_paths, exclude_paths)
|
24
24
|
image.add_command command
|
25
25
|
image.add_volume "#{dimg.tmp_path('artifact', artifact_name)}:#{dimg.container_tmp_path('artifact', artifact_name)}:ro"
|
26
26
|
end
|
@@ -71,7 +71,7 @@ module Dapp
|
|
71
71
|
|
72
72
|
# Слэш после from — это инструкция rsync'у для копирования
|
73
73
|
# содержимого директории from, а не самой директории.
|
74
|
-
cmd << " #{from}/ #{to}"
|
74
|
+
cmd << " $(if [ -d #{from} ] ; then echo #{from}/ ; else echo #{from} ; fi) #{to}"
|
75
75
|
end
|
76
76
|
end
|
77
77
|
# rubocop:enable Metrics/ParameterLists
|
@@ -8,6 +8,10 @@ module Dapp
|
|
8
8
|
|
9
9
|
protected
|
10
10
|
|
11
|
+
def dimg_after_parsing!
|
12
|
+
_dimg.each(&:artifacts_after_parsing!)
|
13
|
+
end
|
14
|
+
|
11
15
|
def dimg_config_validate!
|
12
16
|
raise Error::Config, code: :dimg_name_required if _dimg.any? { |dimg| dimg._name.nil? } && _dimg.size > 1
|
13
17
|
_dimg.each(&:validate!)
|
@@ -130,6 +130,10 @@ module Dapp
|
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
+
def artifacts_after_parsing!
|
134
|
+
_artifacts_auto_excluding!
|
135
|
+
end
|
136
|
+
|
133
137
|
protected
|
134
138
|
|
135
139
|
def builder(type)
|
@@ -140,6 +144,42 @@ module Dapp
|
|
140
144
|
def passed_directives
|
141
145
|
[:@_chef, :@_shell, :@_docker, :@_git_artifact, :@_mount, :@_artifact_groups, :@_builder]
|
142
146
|
end
|
147
|
+
|
148
|
+
def _artifacts_auto_excluding!
|
149
|
+
path_to_relative = proc { |path| path.reverse.chomp('/').reverse }
|
150
|
+
|
151
|
+
all_artifacts.reduce({}) do |hash, artifact|
|
152
|
+
unless artifact._to.nil?
|
153
|
+
to_common = artifact._to[/^\/[^\/]*/]
|
154
|
+
hash[to_common] ||= []
|
155
|
+
hash[to_common] << artifact
|
156
|
+
end
|
157
|
+
hash
|
158
|
+
end.each do |to_common, artifacts|
|
159
|
+
include_paths_common = artifacts.reduce([]) do |arr, artifact|
|
160
|
+
arr << artifact._to.sub(to_common, '')
|
161
|
+
arr.concat(artifact._include_paths.map { |path| File.join(artifact._to.sub(to_common, ''), path) } )
|
162
|
+
arr
|
163
|
+
end.map(&path_to_relative).uniq
|
164
|
+
|
165
|
+
artifacts.each do |artifact|
|
166
|
+
artifact_include_shift = path_to_relative.call(artifact._to.sub(to_common, ''))
|
167
|
+
|
168
|
+
include_paths_common.each do |path|
|
169
|
+
next if artifact_include_shift.start_with? path
|
170
|
+
|
171
|
+
path = path_to_relative.call(path.sub(artifact_include_shift, ''))
|
172
|
+
unless artifact._exclude_paths.any? { |epath| path.start_with? epath }
|
173
|
+
artifact._exclude_paths << path
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
def all_artifacts
|
181
|
+
_artifact + _git_artifact._local + _git_artifact._remote
|
182
|
+
end
|
143
183
|
end # InstanceMethods
|
144
184
|
# rubocop:enable Metrics/ModuleLength
|
145
185
|
end # Dimg
|
@@ -67,7 +67,7 @@ module Dapp
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def validate_artifacts!
|
70
|
-
artifacts = validate_artifact_format(
|
70
|
+
artifacts = validate_artifact_format(all_artifacts)
|
71
71
|
loop do
|
72
72
|
break if artifacts.empty?
|
73
73
|
verifiable_artifact = artifacts.shift
|
@@ -133,10 +133,6 @@ module Dapp
|
|
133
133
|
!(art._before.nil? && art._after.nil?)
|
134
134
|
end
|
135
135
|
end
|
136
|
-
|
137
|
-
def validated_artifacts
|
138
|
-
_artifact + _git_artifact._local + _git_artifact._remote
|
139
|
-
end
|
140
136
|
end # Validation
|
141
137
|
# rubocop:enable Metrics/ModuleLength
|
142
138
|
end # Dimg
|
@@ -106,13 +106,16 @@ module Dapp
|
|
106
106
|
rescue Excon::Error::Timeout
|
107
107
|
raise Error::Timeout
|
108
108
|
rescue Error::Base => err
|
109
|
-
if err.net_status[:code] == :bad_request and
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
109
|
+
if err.net_status[:code] == :bad_request and err.net_status[:data][:response_body]
|
110
|
+
msg = err.net_status[:data][:response_body]['message']
|
111
|
+
if msg.end_with? 'ContainerCreating'
|
112
|
+
raise Error::Pod::ContainerCreating, data: err.net_status[:data]
|
113
|
+
elsif msg.end_with? 'PodInitializing'
|
114
|
+
raise Error::Pod::PodInitializing, data: err.net_status[:data]
|
115
|
+
end
|
115
116
|
end
|
117
|
+
|
118
|
+
raise
|
116
119
|
end
|
117
120
|
|
118
121
|
def event_list(**query_parameters)
|
@@ -19,11 +19,18 @@ module Dapp
|
|
19
19
|
|
20
20
|
module Pod
|
21
21
|
class NotFound < Kubernetes::Client::Error::NotFound ; end
|
22
|
+
|
22
23
|
class ContainerCreating < Kubernetes::Client::Error::Base
|
23
24
|
def initialize(**net_status)
|
24
25
|
super({code: :container_creating}.merge(net_status))
|
25
26
|
end
|
26
27
|
end
|
28
|
+
|
29
|
+
class PodInitializing < Kubernetes::Client::Error::Base
|
30
|
+
def initialize(**net_status)
|
31
|
+
super({code: :pod_initializing}.merge(net_status))
|
32
|
+
end
|
33
|
+
end
|
27
34
|
end # Pod
|
28
35
|
end # Kubernetes::Client::Error
|
29
36
|
end # Kube
|
@@ -38,7 +38,7 @@ module Dapp
|
|
38
38
|
[timestamp, data]
|
39
39
|
end
|
40
40
|
.reject {|timestamp, _| @processed_log_timestamps.include? timestamp}
|
41
|
-
rescue Kubernetes::Client::Error::Pod::ContainerCreating
|
41
|
+
rescue Kubernetes::Client::Error::Pod::ContainerCreating, Kubernetes::Client::Error::Pod::PodInitializing
|
42
42
|
sleep 0.1
|
43
43
|
next
|
44
44
|
end
|
data/lib/dapp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.
|
4
|
+
version: 0.13.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Stolyarov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-shellout
|