dapp 0.30.1 → 0.30.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dapp.rb +12 -11
- data/lib/dapp/dimg/dapp/command/stages/common.rb +17 -6
- data/lib/dapp/dimg/docker_registry/base.rb +21 -3
- data/lib/dapp/dimg/docker_registry/base/authorization.rb +2 -2
- data/lib/dapp/dimg/docker_registry/dimg.rb +1 -1
- data/lib/dapp/dimg/docker_registry/error.rb +25 -0
- data/lib/dapp/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85e24f5f787e11e46f34a01a946986396ead3830
|
4
|
+
data.tar.gz: 075072783e8d9bb26fcf4545901a637bfb1847c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33db546ddeed11f985386d7c55aa48bc3704054745bb83a77e359060eb01d6e7ececf02470933e93776a4b826801fe19702a871d08c7906972ddfa14ae35bcaf
|
7
|
+
data.tar.gz: 25bbfc1a6f66fa507f344939b2e1584f1938f5ad12d62a95cadfe5d4409e894fbcffa9b1e58bbd719f61e65ec43f6c3b6301d169f322e0ca2e694e6760458a94
|
data/lib/dapp.rb
CHANGED
@@ -133,6 +133,17 @@ require 'dapp/kube/dapp/command/lint'
|
|
133
133
|
require 'dapp/kube/dapp/command/value_get'
|
134
134
|
require 'dapp/kube/dapp/dapp'
|
135
135
|
require 'dapp/dimg'
|
136
|
+
require 'dapp/dimg/error/default'
|
137
|
+
require 'dapp/dimg/error/dimg'
|
138
|
+
require 'dapp/dimg/error/build'
|
139
|
+
require 'dapp/dimg/error/tar_writer'
|
140
|
+
require 'dapp/dimg/error/rugged'
|
141
|
+
require 'dapp/dimg/error/registry'
|
142
|
+
require 'dapp/dimg/error/chef'
|
143
|
+
require 'dapp/dimg/error/lock'
|
144
|
+
require 'dapp/dimg/exception/base'
|
145
|
+
require 'dapp/dimg/exception/introspect_image'
|
146
|
+
require 'dapp/dimg/exception/registry'
|
136
147
|
require 'dapp/dimg/builder'
|
137
148
|
require 'dapp/dimg/builder/base'
|
138
149
|
require 'dapp/dimg/builder/chef'
|
@@ -246,22 +257,12 @@ require 'dapp/dimg/dapp/dimg'
|
|
246
257
|
require 'dapp/dimg/dapp/config_artifact_group'
|
247
258
|
require 'dapp/dimg/dapp/dapp'
|
248
259
|
require 'dapp/dimg/docker_registry'
|
260
|
+
require 'dapp/dimg/docker_registry/error'
|
249
261
|
require 'dapp/dimg/docker_registry/base/request'
|
250
262
|
require 'dapp/dimg/docker_registry/base/authorization'
|
251
263
|
require 'dapp/dimg/docker_registry/base'
|
252
264
|
require 'dapp/dimg/docker_registry/dimg'
|
253
265
|
require 'dapp/dimg/docker_registry/default'
|
254
|
-
require 'dapp/dimg/error/default'
|
255
|
-
require 'dapp/dimg/error/dimg'
|
256
|
-
require 'dapp/dimg/error/build'
|
257
|
-
require 'dapp/dimg/error/tar_writer'
|
258
|
-
require 'dapp/dimg/error/rugged'
|
259
|
-
require 'dapp/dimg/error/registry'
|
260
|
-
require 'dapp/dimg/error/chef'
|
261
|
-
require 'dapp/dimg/error/lock'
|
262
|
-
require 'dapp/dimg/exception/base'
|
263
|
-
require 'dapp/dimg/exception/introspect_image'
|
264
|
-
require 'dapp/dimg/exception/registry'
|
265
266
|
require 'dapp/dimg/lock/base'
|
266
267
|
require 'dapp/dimg/lock/file'
|
267
268
|
require 'dapp/dimg/filelock'
|
@@ -8,11 +8,16 @@ module Dapp
|
|
8
8
|
|
9
9
|
def repo_detailed_dimgs_images(registry)
|
10
10
|
repo_dimgs_images(registry).select do |dimg|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
begin
|
12
|
+
image_history = registry.image_history(dimg[:tag], dimg[:dimg])
|
13
|
+
dimg[:created_at] = Time.parse(image_history['created']).to_i
|
14
|
+
dimg[:parent] = image_history['container_config']['Image']
|
15
|
+
dimg[:labels] = image_history['config']['Labels'] || {}
|
16
|
+
dimg[:labels]['dapp'] == name
|
17
|
+
rescue DockerRegistry::Error::ManifestInvalid => err
|
18
|
+
log_warning "WARNING: Ignore dimg `#{dimg[:dimg]}` tag `#{dimg[:tag]}`: got manifest-invalid-error from docker registry: #{err.message}"
|
19
|
+
false
|
20
|
+
end
|
16
21
|
end
|
17
22
|
end
|
18
23
|
|
@@ -48,7 +53,13 @@ module Dapp
|
|
48
53
|
|
49
54
|
def delete_repo_image(registry, repo_image)
|
50
55
|
log([repo_image[:dimg], repo_image[:tag]].compact.join(':')) if dry_run? || log_verbose?
|
51
|
-
|
56
|
+
unless dry_run?
|
57
|
+
begin
|
58
|
+
registry.image_delete(repo_image[:tag], repo_image[:dimg])
|
59
|
+
rescue DockerRegistry::Error::NotFound => err
|
60
|
+
log_warning "WARNING: Ignore dimg `#{repo_image[:dimg]}` tag `#{repo_image[:tag]}`: got not-found-error from docker registry: #{err.message}"
|
61
|
+
end
|
62
|
+
end
|
52
63
|
end
|
53
64
|
|
54
65
|
def select_dapp_artifacts_ids(labels)
|
@@ -70,11 +70,29 @@ module Dapp
|
|
70
70
|
url = api_url(*uri)
|
71
71
|
request(url, **default_api_options.merge(options))
|
72
72
|
rescue Excon::Error::MethodNotAllowed
|
73
|
-
raise Error::
|
73
|
+
raise DockerRegistry::Error::Base, code: :method_not_allowed, data: { url: url, registry: api_url, method: options[:method] }
|
74
74
|
rescue Excon::Error::NotFound
|
75
|
-
raise Error::
|
75
|
+
raise DockerRegistry::Error::ImageNotFound.new(url, api_url)
|
76
76
|
rescue Excon::Error::Unauthorized
|
77
77
|
user_not_authorized!
|
78
|
+
rescue Excon::Error => err
|
79
|
+
if err.is_a? Excon::Error::BadRequest
|
80
|
+
response_data = (JSON.load(err.response.body) rescue nil)
|
81
|
+
if response_data
|
82
|
+
(response_data["errors"] || []).each do |err_data|
|
83
|
+
if err_data["code"] == "MANIFEST_INVALID"
|
84
|
+
raise DockerRegistry::Error::ManifestInvalid.new(url, api_url, "#{err.response.status_line.strip}: #{err.response.reason_phrase.strip}: #{err.response.body.strip}")
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
raise(DockerRegistry::Error::Base,
|
91
|
+
code: :unknown_error,
|
92
|
+
data: { url: url,
|
93
|
+
registry: api_url,
|
94
|
+
message: "#{err.response.status_line.strip}: #{err.response.reason_phrase.strip}: #{err.response.body.strip}" }
|
95
|
+
)
|
78
96
|
end
|
79
97
|
|
80
98
|
def api_url(*uri)
|
@@ -86,7 +104,7 @@ module Dapp
|
|
86
104
|
end
|
87
105
|
|
88
106
|
def user_not_authorized!
|
89
|
-
raise Error::
|
107
|
+
raise DockerRegistry::Error::Base, code: :user_not_authorized, data: { registry: api_url }
|
90
108
|
end
|
91
109
|
end
|
92
110
|
end # DockerRegistry
|
@@ -9,7 +9,7 @@ module Dapp
|
|
9
9
|
when /Bearer/ then { headers: { Authorization: "Bearer #{authorization_token(authenticate_header)}" } }
|
10
10
|
when /Basic/ then { headers: { Authorization: "Basic #{authorization_auth}" } }
|
11
11
|
when nil then {}
|
12
|
-
else raise Error::
|
12
|
+
else raise DockerRegistry::Error::Base, code: :authenticate_type_not_supported, data: { registry: api_url }
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -19,7 +19,7 @@ module Dapp
|
|
19
19
|
realm = options.delete(:realm)
|
20
20
|
begin
|
21
21
|
response = raw_request(realm, headers: { Authorization: "Basic #{authorization_auth}" }, query: options, expects: [200])
|
22
|
-
rescue Error::
|
22
|
+
rescue DockerRegistry::Error::Base
|
23
23
|
raise unless (response = raw_request(realm, query: options)).status == 200
|
24
24
|
end
|
25
25
|
JSON.load(response.body)['token']
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module DockerRegistry
|
4
|
+
module Error
|
5
|
+
class Base < ::Dapp::Dimg::Error::Registry
|
6
|
+
def initialize(**net_status)
|
7
|
+
super(**net_status, context: :registry)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class ManifestInvalid < Base
|
12
|
+
def initialize(url, registry, response_body)
|
13
|
+
super(code: :manifest_invalid, data: {url: url, registry: registry, response_body: response_body})
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class ImageNotFound < Base
|
18
|
+
def initialize(url, registry)
|
19
|
+
super(code: :page_not_found, data: { url: url, registry: registry })
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end # Error
|
23
|
+
end # DockerRegistry
|
24
|
+
end # Dimg
|
25
|
+
end # Dapp
|
data/lib/dapp/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.30.
|
4
|
+
version: 0.30.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Stolyarov
|
@@ -621,6 +621,7 @@ files:
|
|
621
621
|
- lib/dapp/dimg/docker_registry/base/request.rb
|
622
622
|
- lib/dapp/dimg/docker_registry/default.rb
|
623
623
|
- lib/dapp/dimg/docker_registry/dimg.rb
|
624
|
+
- lib/dapp/dimg/docker_registry/error.rb
|
624
625
|
- lib/dapp/dimg/error/build.rb
|
625
626
|
- lib/dapp/dimg/error/chef.rb
|
626
627
|
- lib/dapp/dimg/error/default.rb
|