rubyconfig-vault 1.0.1 → 1.0.4
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/config/vault/vault_source.rb +23 -12
- data/lib/config/vault/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 161ede1df26b9ba941d4e64dd921b4c4f98f9c66ed443b5f83d3ebeb55bc7ae3
|
4
|
+
data.tar.gz: 54e80ec49323dbbf1540dd39ce99623ff3acf86968ca3dcf4ba9122e099ee364
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 617735e0edf543dfed976f9b07a090414b47f4ec218e28e7821762da19ffbf44aa447072c205d3ab79db68b619de946d4d962385cdd50f74bd5ceac5c886f4a6
|
7
|
+
data.tar.gz: c96b23a0ae4b45daaf688b39d65948bbee01909ad3866bacfd78eb91aa1c1c97a53bfd2961c17dbe31f4e6b330a8606120dbced79b403410a9ed8b5378824f46
|
@@ -1,10 +1,11 @@
|
|
1
|
+
require 'config'
|
1
2
|
require 'vault'
|
2
3
|
|
3
4
|
module Config
|
4
5
|
module Sources
|
5
6
|
# A vault source for Config
|
6
7
|
class VaultSource
|
7
|
-
attr_accessor :kv, :root
|
8
|
+
attr_accessor :kv, :root, :flatten
|
8
9
|
attr_reader :paths, :client
|
9
10
|
|
10
11
|
# Create a new Config source, all Vault::Client parameters supported
|
@@ -27,6 +28,7 @@ module Config
|
|
27
28
|
@root = client_opts.delete(:root)
|
28
29
|
@flatten = client_opts.delete(:flatten)
|
29
30
|
@paths << client_opts.delete(:paths) if client_opts.key?(:paths)
|
31
|
+
@map = {}
|
30
32
|
@paths.map! do |p|
|
31
33
|
if p.is_a?(Array)
|
32
34
|
p
|
@@ -34,7 +36,7 @@ module Config
|
|
34
36
|
[p, @root]
|
35
37
|
end
|
36
38
|
end
|
37
|
-
@client = Vault::Client.new(client_opts)
|
39
|
+
@client = ::Vault::Client.new(client_opts)
|
38
40
|
end
|
39
41
|
|
40
42
|
# Add a path to Config source
|
@@ -50,6 +52,13 @@ module Config
|
|
50
52
|
@paths << [path, root]
|
51
53
|
end
|
52
54
|
|
55
|
+
# Re-map individual key names
|
56
|
+
#
|
57
|
+
# @param hsh [Hash] mappings for keys
|
58
|
+
def map(hsh)
|
59
|
+
@map = hsh
|
60
|
+
end
|
61
|
+
|
53
62
|
# Remove added paths
|
54
63
|
def clear_paths
|
55
64
|
@paths = []
|
@@ -59,10 +68,10 @@ module Config
|
|
59
68
|
#
|
60
69
|
# @return [Hash]
|
61
70
|
def load
|
62
|
-
Vault.with_retries(Vault::HTTPError,
|
63
|
-
|
64
|
-
|
65
|
-
|
71
|
+
::Vault.with_retries(::Vault::HTTPError,
|
72
|
+
attempts: @attempts,
|
73
|
+
base: @base,
|
74
|
+
max_wait: @max_wait) do
|
66
75
|
process_paths
|
67
76
|
end
|
68
77
|
end
|
@@ -95,9 +104,12 @@ module Config
|
|
95
104
|
query_path, idx, parent = stack.pop
|
96
105
|
sp = subpaths[idx]
|
97
106
|
if sp.nil? || sp.eql?('*')
|
98
|
-
data = client_ops.read(query_path)&.data
|
99
|
-
|
100
|
-
parent
|
107
|
+
data = client_ops.read(query_path)&.data || {}
|
108
|
+
node = root if @flatten
|
109
|
+
node = parent unless @flatten
|
110
|
+
node.merge!(data)
|
111
|
+
node.transform_keys! { |key| @map[key] || key }
|
112
|
+
node.compact!
|
101
113
|
end
|
102
114
|
|
103
115
|
if sp.eql?('**') || sp.eql?('*')
|
@@ -106,19 +118,18 @@ module Config
|
|
106
118
|
new_parent = {}
|
107
119
|
new_key = st.split('/').last.downcase.to_sym
|
108
120
|
new_query_path = [query_path, st].join('/')
|
109
|
-
parent[new_key] = new_parent
|
121
|
+
parent[new_key] = new_parent unless @flatten
|
110
122
|
stack.push([new_query_path, idx + 1, new_parent])
|
111
123
|
end
|
112
124
|
elsif sp
|
113
125
|
query_path = [query_path, sp].compact.join('/')
|
114
126
|
idx += 1
|
115
127
|
new_parent = {}
|
116
|
-
parent[sp.downcase.to_sym] = new_parent
|
128
|
+
parent[sp.downcase.to_sym] = new_parent unless @flatten
|
117
129
|
stack.push([query_path, idx, new_parent])
|
118
130
|
end
|
119
131
|
end
|
120
132
|
|
121
|
-
root = root.flatten if @flatten
|
122
133
|
if path.last
|
123
134
|
{ @root => root }
|
124
135
|
else
|
data/lib/config/vault/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyconfig-vault
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Young
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-04-
|
11
|
+
date: 2022-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: vault
|
@@ -80,7 +80,7 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
description:
|
83
|
+
description:
|
84
84
|
email:
|
85
85
|
- da.young@f5.com
|
86
86
|
executables: []
|
@@ -97,7 +97,7 @@ metadata:
|
|
97
97
|
homepage_uri: https://github.com/CrunchwrapSupreme/rubyconfig-vault
|
98
98
|
source_code_uri: https://github.com/CrunchwrapSupreme/rubyconfig-vault
|
99
99
|
documentation_uri: https://www.rubydoc.info/gems/rubyconfig-vault/index
|
100
|
-
post_install_message:
|
100
|
+
post_install_message:
|
101
101
|
rdoc_options: []
|
102
102
|
require_paths:
|
103
103
|
- lib
|
@@ -112,8 +112,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
112
|
- !ruby/object:Gem::Version
|
113
113
|
version: '0'
|
114
114
|
requirements: []
|
115
|
-
rubygems_version: 3.
|
116
|
-
signing_key:
|
115
|
+
rubygems_version: 3.1.2
|
116
|
+
signing_key:
|
117
117
|
specification_version: 4
|
118
118
|
summary: Implements a ruby config source from vault
|
119
119
|
test_files: []
|