settings_reader-vault_resolver 0.5.0 → 0.6.1

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
  SHA256:
3
- metadata.gz: f3e683be3539c3e3fd46bf0de60c78f11c7aeda4bbc321246298ec19b068fa84
4
- data.tar.gz: 80a0bae40ee7bef3f22ac77761685fa89a53eeb21311295590dea2378c2b0a9b
3
+ metadata.gz: 1a4f83916758232ddc5e3b36f6cc9ea25b813cd5bc69fb0f4a71d5b651a07ddf
4
+ data.tar.gz: baa1b66b38f6d2b41bcf11fcf230613740a67a6cf78d68db531ff6a5960f8b0f
5
5
  SHA512:
6
- metadata.gz: 3c957e71f2730a18abe2b8a21e10d4fd93f1f0efcf779d7ca1f4cca791363a5bc5a2daeee83510b9a03b71045c7b8700957ce571ca5462355976e2fd203bd71a
7
- data.tar.gz: ce4d399a56ec38e4bf39f87ecb759a0f5a77b7269f84de42a8d32b0ef477e25b38522513c03bcd92f60a47eeb43867a69af797a751f1e108ab071fb0f0a6cebf
6
+ metadata.gz: 3d44012714aed2cb366128221b4764c5b260ff6dadb0548de267b30663864f0c2bc0e0d5e6848576b2791672001fdb81c88f18846dcd6cad1b498fe009ee6c53
7
+ data.tar.gz: 05ffe659944dbc215264ad3097f64a54a481f9943c9b7cee500281af806246727df9292cf29c6a10481f6049bbf0d174d0ab5165b19b946999eb044bbc0bd088
@@ -63,24 +63,22 @@ jobs:
63
63
 
64
64
  - name: Start Dependencies
65
65
  run: |
66
- docker-compose up -d
66
+ docker compose up -d
67
67
  echo "Waiting 15 seconds for initial configuraiton"
68
68
  sleep 15
69
69
 
70
70
  - name: Run specs
71
- env:
72
- COVERAGE: true
73
71
  run: bundle exec rspec
74
72
 
75
- - name: Upload coverage
76
- env:
77
- CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
78
- run: bash <(curl -s https://codecov.io/bash)
79
-
80
73
  release:
81
74
  runs-on: ubuntu-latest
82
75
  needs: build
83
- if: github.event_name == 'release' && github.event.action == 'published'
76
+ # if: github.event_name == 'release' && github.event.action == 'published'
77
+
78
+ permissions:
79
+ # contents: write
80
+ id-token: write
81
+
84
82
  steps:
85
83
  - name: Checkout
86
84
  uses: actions/checkout@v3
@@ -90,19 +88,16 @@ jobs:
90
88
  with:
91
89
  ruby-version: 2.7
92
90
  bundler-cache: true
93
- - name: Set up credentials
94
- run: |
95
- mkdir -p $HOME/.gem
96
- touch $HOME/.gem/credentials
97
- chmod 0600 $HOME/.gem/credentials
98
- printf -- "---\n:rubygems_api_key: ${{secrets.RUBYGEMS_AUTH_TOKEN}}\n" > $HOME/.gem/credentials
99
91
 
100
- - name: Get version
101
- run: echo "${GITHUB_REF/refs\/tags\//}" > release.tag
92
+
93
+ # - name: Get version
94
+ # run: echo "${GITHUB_REF/refs\/tags\//}" > release.tag
102
95
  - name: Set version
103
- run: sed -i "s/0.0.0/$(<release.tag)/g" $(find . -name "version.rb")
96
+ run: sed -i "s/0.0.0/0.6.1/g" $(find . -name "version.rb")
97
+
98
+ - uses: rubygems/configure-rubygems-credentials@v1.0.0
104
99
 
105
100
  - name: Build gem
106
101
  run: gem build *.gemspec
107
102
  - name: Push gem
108
- run: gem push *.gem
103
+ run: gem push *.gem
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  AllCops:
2
2
  NewCops: enable
3
3
  SuggestExtensions: false
4
- TargetRubyVersion: 2.5
4
+ TargetRubyVersion: 2.7
5
5
 
6
6
  Gemspec/RequireMFA:
7
7
  Enabled: false
data/.simplecov CHANGED
@@ -1,9 +1,7 @@
1
1
  if ENV['COVERAGE']
2
2
  require 'simplecov'
3
- require 'codecov'
4
3
  SimpleCov.start do
5
4
  enable_coverage :branch
6
5
  primary_coverage :branch
7
- formatter SimpleCov::Formatter::Codecov
8
6
  end
9
7
  end
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.3.8
data/Gemfile CHANGED
@@ -3,7 +3,6 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in settings_reader-vault_resolver.gemspec
4
4
  gemspec
5
5
 
6
- gem 'codecov'
7
6
  gem 'rake'
8
7
  gem 'rspec'
9
8
  gem 'rubocop'
data/Gemfile.lock CHANGED
@@ -9,22 +9,25 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- ast (2.4.2)
12
+ ast (2.4.3)
13
13
  aws-eventstream (1.2.0)
14
14
  aws-sigv4 (1.4.0)
15
15
  aws-eventstream (~> 1, >= 1.0.2)
16
- codecov (0.6.0)
17
- simplecov (>= 0.15, < 0.22)
18
16
  concurrent-ruby (1.1.9)
19
17
  diff-lcs (1.5.0)
20
18
  docile (1.4.0)
21
- parallel (1.21.0)
22
- parser (3.1.1.0)
19
+ json (2.13.2)
20
+ language_server-protocol (3.17.0.5)
21
+ lint_roller (1.1.0)
22
+ parallel (1.27.0)
23
+ parser (3.3.9.0)
23
24
  ast (~> 2.4.1)
25
+ racc
26
+ prism (1.4.0)
27
+ racc (1.8.1)
24
28
  rainbow (3.1.1)
25
29
  rake (13.0.6)
26
- regexp_parser (2.2.1)
27
- rexml (3.2.5)
30
+ regexp_parser (2.11.2)
28
31
  rspec (3.10.0)
29
32
  rspec-core (~> 3.10.0)
30
33
  rspec-expectations (~> 3.10.0)
@@ -38,20 +41,23 @@ GEM
38
41
  diff-lcs (>= 1.2.0, < 2.0)
39
42
  rspec-support (~> 3.10.0)
40
43
  rspec-support (3.10.3)
41
- rubocop (1.25.1)
44
+ rubocop (1.80.2)
45
+ json (~> 2.3)
46
+ language_server-protocol (~> 3.17.0.2)
47
+ lint_roller (~> 1.1.0)
42
48
  parallel (~> 1.10)
43
- parser (>= 3.1.0.0)
49
+ parser (>= 3.3.0.2)
44
50
  rainbow (>= 2.2.2, < 4.0)
45
- regexp_parser (>= 1.8, < 3.0)
46
- rexml
47
- rubocop-ast (>= 1.15.1, < 2.0)
51
+ regexp_parser (>= 2.9.3, < 3.0)
52
+ rubocop-ast (>= 1.46.0, < 2.0)
48
53
  ruby-progressbar (~> 1.7)
49
- unicode-display_width (>= 1.4.0, < 3.0)
50
- rubocop-ast (1.16.0)
51
- parser (>= 3.1.1.0)
54
+ unicode-display_width (>= 2.4.0, < 4.0)
55
+ rubocop-ast (1.46.0)
56
+ parser (>= 3.3.7.2)
57
+ prism (~> 1.4)
52
58
  rubocop-rspec (1.32.0)
53
59
  rubocop (>= 0.60.0)
54
- ruby-progressbar (1.11.0)
60
+ ruby-progressbar (1.13.0)
55
61
  settings_reader (0.1.0)
56
62
  simplecov (0.21.2)
57
63
  docile (~> 1.1)
@@ -60,7 +66,9 @@ GEM
60
66
  simplecov-html (0.12.3)
61
67
  simplecov_json_formatter (0.1.4)
62
68
  timecop (0.9.4)
63
- unicode-display_width (2.1.0)
69
+ unicode-display_width (3.2.0)
70
+ unicode-emoji (~> 4.1)
71
+ unicode-emoji (4.1.0)
64
72
  vault (0.16.0)
65
73
  aws-sigv4
66
74
 
@@ -68,7 +76,6 @@ PLATFORMS
68
76
  ruby
69
77
 
70
78
  DEPENDENCIES
71
- codecov
72
79
  rake
73
80
  rspec
74
81
  rubocop
@@ -42,7 +42,11 @@ module SettingsReader
42
42
  # Default: empty proc
43
43
  attr_accessor :lease_not_found_handler
44
44
 
45
- def initialize
45
+ # Whether to raise error or return nil when secret or attribute is missing
46
+ # Default: false
47
+ attr_accessor :raise_error_on_missing_secret
48
+
49
+ def initialize # rubocop:disable Metrics/MethodLength
46
50
  @logger = Logger.new($stdout, level: Logger::ERROR)
47
51
  @retriable_errors = [OpenSSL::SSL::SSLError, Vault::HTTPConnectionError]
48
52
  @retrieval_retries = 2
@@ -53,6 +57,7 @@ module SettingsReader
53
57
  @lease_renew_success_listener = ->(_result) {}
54
58
  @vault_initializer = -> {}
55
59
  @lease_not_found_handler = ->(_entry) {}
60
+ @raise_error_on_missing_secret = false
56
61
  end
57
62
 
58
63
  def setup_lease_refresher(cache, previous_task = nil)
@@ -16,9 +16,11 @@ module SettingsReader
16
16
  end
17
17
 
18
18
  def get(address)
19
- return unless (vault_secret = get_and_retry_auth(address))
19
+ vault_secret = get_and_retry_auth(address)
20
+ entry = wrap_secret(address, vault_secret) if vault_secret
21
+ validate_secret!(entry, address) if config.raise_error_on_missing_secret
20
22
 
21
- wrap_secret(address, vault_secret)
23
+ entry
22
24
  rescue Vault::VaultError => e
23
25
  raise SettingsReader::VaultResolver::Error, e.message
24
26
  end
@@ -78,6 +80,14 @@ module SettingsReader
78
80
  def auth_error?(error)
79
81
  error.code == 403 || error.message =~ /token mac for token_version.*is incorrect/
80
82
  end
83
+
84
+ def validate_secret!(entry, address)
85
+ secret_value = entry&.value_for(address.attribute)
86
+ return if secret_value && !secret_value.empty?
87
+
88
+ raise SettingsReader::VaultResolver::Error,
89
+ "Secret not found at #{address}. Secret data: #{entry&.secret&.to_h}"
90
+ end
81
91
  end
82
92
  end
83
93
  end
@@ -7,7 +7,6 @@ module SettingsReader
7
7
  include Logging
8
8
 
9
9
  IDENTIFIER = 'vault://'.freeze
10
- DATABASE_MOUNT = 'database'.freeze
11
10
 
12
11
  attr_reader :config
13
12
 
@@ -22,7 +21,7 @@ module SettingsReader
22
21
  value.start_with?(IDENTIFIER)
23
22
  end
24
23
 
25
- # Expect value in format `vault://mount/path/to/secret?attribute_name`
24
+ # Expect value in format `vault://mount/path/to/secret#attribute_name`
26
25
  def resolve(value, _path)
27
26
  debug { "Resolving Vault secret at #{value}" }
28
27
  address = SettingsReader::VaultResolver::Address.new(value)
@@ -1,5 +1,5 @@
1
1
  module SettingsReader
2
2
  module VaultResolver
3
- VERSION = '0.5.0'.freeze
3
+ VERSION = '0.6.1'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: settings_reader-vault_resolver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Volodymyr Mykhailyk
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-22 00:00:00.000000000 Z
11
+ date: 2025-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -68,6 +68,7 @@ files:
68
68
  - ".rspec"
69
69
  - ".rubocop.yml"
70
70
  - ".simplecov"
71
+ - ".tool-versions"
71
72
  - CHANGELOG.md
72
73
  - CODE_OF_CONDUCT.md
73
74
  - Gemfile
@@ -77,7 +78,6 @@ files:
77
78
  - Rakefile
78
79
  - bin/console
79
80
  - bin/setup
80
- - codecov.yml
81
81
  - docker-compose.yml
82
82
  - lib/settings_reader/vault_resolver.rb
83
83
  - lib/settings_reader/vault_resolver/address.rb
@@ -104,7 +104,7 @@ metadata:
104
104
  homepage_uri: https://github.com/matic-insurance/settings_reader-vault_resolver
105
105
  source_code_uri: https://github.com/matic-insurance/settings_reader-vault_resolver
106
106
  changelog_uri: https://github.com/matic-insurance/settings_reader-vault_resolver/blob/master/CHANGELOG.md
107
- post_install_message:
107
+ post_install_message:
108
108
  rdoc_options: []
109
109
  require_paths:
110
110
  - lib
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  requirements: []
122
122
  rubygems_version: 3.1.6
123
- signing_key:
123
+ signing_key:
124
124
  specification_version: 4
125
125
  summary: Settings Reader plugin to resolve values using in Hashicorp Vault
126
126
  test_files: []
data/codecov.yml DELETED
@@ -1,12 +0,0 @@
1
- codecov:
2
- require_ci_to_pass: yes
3
-
4
- coverage:
5
- precision: 2
6
- round: up
7
- range: "90...100"
8
-
9
- ignore:
10
- - "spec"
11
- - "bin"
12
- - "local"