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 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