samson_secret_puller 1.0.4 → 1.1.0

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/samson_secret_puller.rb +27 -13
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5ec9cdb607bbae9e364fded2d14ba38099b99b2d
4
- data.tar.gz: e65d94b641eb69bd2abdca7dc2486086e8bd4b58
3
+ metadata.gz: 51c888fa0b9252626544a64e036606bbdb3d199a
4
+ data.tar.gz: 0c5244ac03a2a9ed86c0ac66e277a0a9b708ac86
5
5
  SHA512:
6
- metadata.gz: 63a4c4081a5ffdee3f12f0278ce226f21e3b49ee4e05bf4ef06ff382ab268afbbbaf2f4d90b50a2a6eff6b0c5d0148ae1b0f7dbfd3317486b0a370b4bc2dc2a4
7
- data.tar.gz: 39261cf3683812b2b52cfc03a51b2554940f0de5eeae14a913b2e6813be8ef0a58094f4d6095b25c039653781d7129dc32cca7378f27d8fb16e2604e0de50b11
6
+ metadata.gz: fe78fb27da6431212caca45431265d937a8a085698453d5b2a902befe401346a1ac99ddec12ea401bc4fe43d508632577f4970c154b0c9ac7abc767fb56896d0
7
+ data.tar.gz: c156588e1ec7c22aaf8ccb1ff907e1850d4fdae074f25dfadd0c8d4a0c847a561a5fc21deef829714e0ac1b150d062ed142245313ca25b4b4f5d038143e00bea
@@ -2,18 +2,14 @@ require 'forwardable'
2
2
 
3
3
  module SamsonSecretPuller
4
4
  FOLDER = '/secrets'.freeze
5
- TIMEOUT = 60
6
-
7
- class TimeoutError < StandardError
8
- end
9
5
 
10
6
  ENV = ENV # store a copy since we might replace ENV on Object
11
7
 
12
8
  class << self
13
9
  extend Forwardable
14
10
  [
15
- :[], :fetch, :keys, :each, :has_key?, :key?, :include?, :delete,
16
- :each_with_object, :values_at, :reject, :select
11
+ :[], :fetch, :keys, :each, :has_key?, :key?, :include?,
12
+ :each_with_object, :values_at, :reject, :select, :to_a
17
13
  ].each do |method|
18
14
  def_delegator :secrets, method
19
15
  end
@@ -27,7 +23,22 @@ module SamsonSecretPuller
27
23
  end
28
24
 
29
25
  def []=(key, value)
30
- ENV[key] = secrets[key] = value
26
+ if value.nil?
27
+ delete key
28
+ elsif secrets && @secret_keys.include?(key)
29
+ secrets[key] = value
30
+ else
31
+ ENV[key] = secrets[key] = value
32
+ end
33
+ end
34
+
35
+ def delete(key)
36
+ secrets.delete(key)
37
+ ENV.delete(key)
38
+ end
39
+
40
+ def replace(other)
41
+ (secrets.keys + other.keys).uniq.each { |k| self[k] = other[k] }
31
42
  end
32
43
 
33
44
  # When we run in kubernetes we need to read secrets from ENV and secret storage
@@ -44,17 +55,20 @@ module SamsonSecretPuller
44
55
 
45
56
  def secrets
46
57
  @secrets ||= begin
47
- secrets = ENV.to_h
48
- merge_secrets(secrets) if File.exist?(FOLDER)
49
- secrets
58
+ combined = ENV.to_h
59
+ secrets = read_secrets
60
+ @secret_keys = secrets.keys
61
+ combined.merge!(secrets)
62
+ combined
50
63
  end
51
64
  end
52
65
 
53
- def merge_secrets(secrets)
54
- Dir.glob("#{FOLDER}/*").each do |file|
66
+ def read_secrets
67
+ return {} unless File.exist?(FOLDER)
68
+ Dir.glob("#{FOLDER}/*").each_with_object({}) do |file, all|
55
69
  name = File.basename(file)
56
70
  next if name.start_with?(".") # ignore .done and maybe others
57
- secrets[name] = File.read(file).strip
71
+ all[name] = File.read(file).strip
58
72
  end
59
73
  end
60
74
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: samson_secret_puller
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-04 00:00:00.000000000 Z
11
+ date: 2017-05-31 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: michael@grosser.it