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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac16a9c84e2d3af89ad9a59a0aa51f7073c09552
4
- data.tar.gz: 5efbf94424686ef128e7d3d14e4ec34fd001b8ad
3
+ metadata.gz: 85e24f5f787e11e46f34a01a946986396ead3830
4
+ data.tar.gz: 075072783e8d9bb26fcf4545901a637bfb1847c0
5
5
  SHA512:
6
- metadata.gz: 2ab041b8537358ccc8137f7d737d343ab46debcd7fe128e269f7672f99bb479e4f2aef120d7373dc5d0c013008c46c83bfc2817b554f1a5e03d84cb2fbc67c29
7
- data.tar.gz: 65dde18c5f79aa88fc1f3f16af037ab377cb463e4ee5f59a5df7118a026060878033d603d18d7c9ebdab47f2afd05c0c5c635aaebe878d63bc9e450fda29e2a1
6
+ metadata.gz: 33db546ddeed11f985386d7c55aa48bc3704054745bb83a77e359060eb01d6e7ececf02470933e93776a4b826801fe19702a871d08c7906972ddfa14ae35bcaf
7
+ data.tar.gz: 25bbfc1a6f66fa507f344939b2e1584f1938f5ad12d62a95cadfe5d4409e894fbcffa9b1e58bbd719f61e65ec43f6c3b6301d169f322e0ca2e694e6760458a94
@@ -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
- image_history = registry.image_history(dimg[:tag], dimg[:dimg])
12
- dimg[:created_at] = Time.parse(image_history['created']).to_i
13
- dimg[:parent] = image_history['container_config']['Image']
14
- dimg[:labels] = image_history['config']['Labels'] || {}
15
- dimg[:labels]['dapp'] == name
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
- registry.image_delete(repo_image[:tag], repo_image[:dimg]) unless dry_run?
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::Registry, code: :method_not_allowed, data: { url: url, registry: api_url, method: options[:method] }
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::Registry, code: :page_not_found, data: { url: url, registry: api_url }
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::Registry, code: :user_not_authorized, data: { registry: api_url }
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::Registry, code: :authenticate_type_not_supported, data: { registry: api_url }
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::Registry
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']
@@ -16,7 +16,7 @@ module Dapp
16
16
 
17
17
  def tags
18
18
  super
19
- rescue Error::Registry => e
19
+ rescue DockerRegistry::Error::Base => e
20
20
  raise unless e.net_status[:code] == :page_not_found
21
21
  []
22
22
  end
@@ -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
@@ -1,4 +1,4 @@
1
1
  module Dapp
2
- VERSION = "0.30.1"
2
+ VERSION = "0.30.2"
3
3
  BUILD_CACHE_VERSION = 30
4
4
  end
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.1
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