samson_secret_puller 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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