dapp 0.30.1 → 0.30.2
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.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
|