knowledge-ssm 0.1.1 → 0.1.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
  SHA256:
3
- metadata.gz: 43074dd7ec6e371a06c191d43b1a9b9680f84e2b42ba925528a5aa5a64d8f286
4
- data.tar.gz: 8cecd1bb1afbbdcfaa91d4d08ecdb10fef378db01b9563032dc732ee12f00332
3
+ metadata.gz: ff1d12d1fcdad26b496cdc51abdb22dc98528f518338a9ee1959b8792da4ee10
4
+ data.tar.gz: '00866e3590c120a8c2d7d6500186012d2850f6eb06a9cafc254741cecdcab2de'
5
5
  SHA512:
6
- metadata.gz: 3f8d61ff07a6dd9f45512efb2db62985716cfd5f3ee34a325466d7c9890398291564d106fb9fe0cd5c8df6184d5e62b26d19f83d4e8edb435761afc8f1272451
7
- data.tar.gz: 8147102694ad115149e7b0eab14b8a250ef1c857fca99900280c99d9227b2b21bdf28ea3b63075329b80bf499cfdf4ac07af8509e7b316c9faff48fcb9107f3a
6
+ metadata.gz: 789883aa2ef2ea21e993e1e8dfac6de5016196ba3ba6636b69f411b94e41e8d1d4746e1753788f5fa337ea1947d7f443d700b9dee91ddf11f42191b9348753a3
7
+ data.tar.gz: 79065e2c1d9b2510e4a70520805732a9f5675b85f1613da6252c3ec5effa6e9ac44aa104a74584d64d60640d495649d046fa070ddb95735ddba2906899a5a616
@@ -9,18 +9,18 @@ end
9
9
  module Knowledge
10
10
  module Adapters
11
11
  #
12
- # === Description ===
12
+ # === Description
13
13
  #
14
14
  # This adapter takes some vars in your SSM parameters and set it in your project's config.
15
15
  #
16
- # === Usage ===
16
+ # === Usage
17
17
  #
18
18
  # @example:
19
19
  # adapter = Knowledge::Adapters::Ssm.new(params: { root_path: '/path', setter: MySetter, variables: my_vars)
20
20
  #
21
21
  # adapter.run
22
22
  #
23
- # === Attributes ===
23
+ # === Attributes
24
24
  #
25
25
  # @attr_reader [Boolean] raise_not_found
26
26
  # @attr_reader [String] root_path
@@ -30,9 +30,18 @@ module Knowledge
30
30
  #
31
31
  class Ssm < Base
32
32
  # == Attributes ==================================================================================================
33
- attr_reader :raise_not_found, :root_path, :ssm_parameters
33
+
34
+ # Defines whether we should raise an error on param not found or not
35
+ attr_reader :raise_not_found
36
+
37
+ # Root path for SSM parameters
38
+ attr_reader :root_path
39
+
40
+ # Parameters to fetch
41
+ attr_reader :ssm_parameters
34
42
 
35
43
  # == Constructor =================================================================================================
44
+
36
45
  #
37
46
  # @param [Hash] :params
38
47
  # @option params [Aws::SSM::Client] :client
@@ -51,35 +60,32 @@ module Knowledge
51
60
  end
52
61
 
53
62
  # == Instance Methods ============================================================================================
54
- #
55
- # === Description ===
63
+
56
64
  #
57
65
  # Runs the actual adapter.
58
66
  #
59
67
  def run
60
- variables.each do |name, path|
68
+ variables.each do |name, (path, default_value)|
61
69
  base_path = root_path[0..-2] if root_path&.end_with?('/')
62
70
  path = "/#{path.sub('/', '')}"
63
71
  value = Array(@ssm_parameters).detect { |p| p.name == "#{base_path}#{path}" }&.value
64
72
 
65
- setter.set(name: name, value: value)
73
+ setter.set(name: name, value: extract_value(value, default_value))
66
74
  end
67
75
  end
68
76
 
69
77
  protected
70
78
 
71
- #
72
- # === Description ===
73
79
  #
74
80
  # Credentials for AWS should be loaded from the ENV vars by the client itself.
75
81
  # Authorization is done automatically according to the current AWS policies.
76
82
  #
77
- # === Errors ===
83
+ # === Errors
78
84
  #
79
85
  # @raise [Aws::SSM::Errors::UnrecognizedClientException]
80
86
  # @raise [Aws::SSM::AccessDeniedException]
81
87
  #
82
- # === Parameters ===
88
+ # === Parameters
83
89
  #
84
90
  # @return [Aws::SSM::Client]
85
91
  #
@@ -88,11 +94,35 @@ module Knowledge
88
94
  end
89
95
 
90
96
  #
91
- # === Description ===
97
+ # Fallbacks to the default value if the value is empty
98
+ #
99
+ # === Parameters
100
+ #
101
+ # @attr [Any] initial_value
102
+ # @attr [Any] default_value
103
+ #
104
+ # @return [Any] the value or the default
105
+ #
106
+ def extract_value(initial_value, default_value = nil)
107
+ # If no default value given
108
+ return initial_value if default_value.nil?
109
+
110
+ # If boolean value
111
+ return initial_value if initial_value == !!initial_value
112
+
113
+ # If number
114
+ return initial_value if initial_value.respond_to?(:to_f) && initial_value.to_f == initial_value
115
+
116
+ # If initial value nil or empty
117
+ return default_value if initial_value.nil? || (initial_value.respond_to?(:empty?) && initial_value.empty?)
118
+
119
+ initial_value
120
+ end
121
+
92
122
  #
93
123
  # Fetches parameters one by one on SSM according to their specific path
94
124
  #
95
- # === Parameters ===
125
+ # === Parameters
96
126
  #
97
127
  # @return [Array<Aws::SSM::Types::Parameter>]
98
128
  #
@@ -100,16 +130,14 @@ module Knowledge
100
130
  variables.map { |_name, path| fetch_parameter(path: path) }.compact
101
131
  end
102
132
 
103
- #
104
- # === Description ===
105
133
  #
106
134
  # Recursively fetches parameters on SSM according to the given path
107
135
  #
108
- # === Errors ===
136
+ # === Errors
109
137
  #
110
138
  # @raise [Knowledge::SsmError]
111
139
  #
112
- # === Parameters ===
140
+ # === Parameters
113
141
  #
114
142
  # @return [Array<Aws::SSM::Types::Parameter>]
115
143
  #
@@ -135,16 +163,14 @@ module Knowledge
135
163
  raise ::Knowledge::SsmError, "[#{e.class}]: #{e.message}"
136
164
  end
137
165
 
138
- #
139
- # === Description ===
140
166
  #
141
167
  # Fetches a parameter by its path on SSM
142
168
  #
143
- # === Error ===
169
+ # === Error
144
170
  #
145
171
  # @raise [Knowledge::SsmError]
146
172
  #
147
- # === Parameters ===
173
+ # === Parameters
148
174
  #
149
175
  # @param [String] :path
150
176
  #
data/lib/knowledge/ssm.rb CHANGED
@@ -6,11 +6,11 @@ module Knowledge
6
6
  class SsmError < Error; end
7
7
 
8
8
  #
9
- # === Description ===
9
+ # === Description
10
10
  #
11
11
  # SSM Adapter for Knowledge gem
12
12
  #
13
- # === Usage ===
13
+ # === Usage
14
14
  #
15
15
  # @example:
16
16
  # require 'knowledge/ssm'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Knowledge
4
4
  module Ssm
5
- VERSION = '0.1.1'
5
+ VERSION = '0.1.2'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knowledge-ssm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johann Wilfrid-Calixte
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-12 00:00:00.000000000 Z
11
+ date: 2018-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: knowledge