Module: Amplify::ParameterStoreClient
- Defined in:
- lib/amplify/parameter_store_client.rb
Class Method Summary collapse
- .aws_region=(val) ⇒ Object
- .client ⇒ Object
- .deep_merge(result, value) ⇒ Object
-
.get_parameters_by_path(prefix_path) ⇒ Object
rubocop:disable Metrics/MethodLength rubocop:disable Lint/Loop.
-
.read(path) ⇒ Object
rubocop:enable Metrics/MethodLength rubocop:enable Lint/Loop.
- .reduce_parameters(result, parameter, prefix_path) ⇒ Object
- .remove_prefix(prefix_path, parameter_name) ⇒ Object
Class Method Details
.aws_region=(val) ⇒ Object
7 8 9 10 |
# File 'lib/amplify/parameter_store_client.rb', line 7 def self.aws_region=(val) ::Chef::Log.info "Setting aws_region to #{val}" @aws_region = val end |
.client ⇒ Object
12 13 14 15 |
# File 'lib/amplify/parameter_store_client.rb', line 12 def self.client require 'aws-sdk' Aws::SSM::Client.new(region: @aws_region) end |
.deep_merge(result, value) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/amplify/parameter_store_client.rb', line 17 def self.deep_merge(result, value) result = result.merge(value) do |_key, oldval, newval| if oldval.respond_to?(:merge) && newval.respond_to?(:merge) deep_merge(oldval, newval) else newval end end ::Hashie::Mash.new(result) end |
.get_parameters_by_path(prefix_path) ⇒ Object
rubocop:disable Metrics/MethodLength rubocop:disable Lint/Loop
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/amplify/parameter_store_client.rb', line 30 def self.get_parameters_by_path(prefix_path) next_token = nil result = [] begin api_result = client.get_parameters_by_path( path: prefix_path, recursive: true, max_results: 10, next_token: next_token, with_decryption: true ) next_token = api_result.next_token result = result.concat api_result.parameters end until next_token.nil? result end |
.read(path) ⇒ Object
rubocop:enable Metrics/MethodLength rubocop:enable Lint/Loop
51 52 53 54 55 56 57 |
# File 'lib/amplify/parameter_store_client.rb', line 51 def self.read(path) prefix_path = "/#{path}" result = get_parameters_by_path(prefix_path) .reduce({}) { |aggregate, param| reduce_parameters(aggregate, param, prefix_path) } result.empty? ? nil : result end |
.reduce_parameters(result, parameter, prefix_path) ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/amplify/parameter_store_client.rb', line 59 def self.reduce_parameters(result, parameter, prefix_path) sub_path = remove_prefix(prefix_path, parameter.name) name_parts = sub_path.split '/' value = name_parts.reverse.reduce(parameter.value) do |leaf, root| ::Hashie::Mash.new(root => leaf) end deep_merge(result, value) end |
.remove_prefix(prefix_path, parameter_name) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/amplify/parameter_store_client.rb', line 70 def self.remove_prefix(prefix_path, parameter_name) # prefix_path = '/secret/<env>/databags' # parameter_name = '/secret/<env>/databags/<app>/<name>' first_index = prefix_path.length + 1 # add / last_index = parameter_name.length - 1 parameter_name[first_index..last_index] end |