Class: Knowledge::Adapters::Ssm

Inherits:
Base
  • Object
show all
Defined in:
lib/knowledge/adapters/ssm.rb

Overview

Description

This adapter takes some vars in your SSM parameters and set it in your project’s config.

Usage

@example:

adapter = Knowledge::Adapters::Ssm.new(params: { root_path: '/path', setter: MySetter, variables: my_vars)

adapter.run

Attributes

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params: {}, setter:, variables:) ⇒ Ssm

Returns a new instance of Ssm.

Parameters:

  • :params (Hash)
  • :variables (Hash)
  • :setter (Class)
  • params (Hash) (defaults to: {})

    a customizable set of options

Options Hash (params:):

  • :client (Aws::SSM::Client)
  • :raise_on_parameter_not_found (Boolean)
  • :root_path (String)


53
54
55
56
57
58
59
60
# File 'lib/knowledge/adapters/ssm.rb', line 53

def initialize(params: {}, setter:, variables:)
  super

  @client = params[:client] || params['client']
  @raise_not_found = params[:raise_on_parameter_not_found] || params['raise_on_parameter_not_found'] || false
  @root_path = params[:root_path] || params['root_path']
  @ssm_parameters = @root_path ? fetch_recursive_parameters : fetch_parameters
end

Instance Attribute Details

#raise_not_foundObject (readonly)

Defines whether we should raise an error on param not found or not



31
32
33
# File 'lib/knowledge/adapters/ssm.rb', line 31

def raise_not_found
  @raise_not_found
end

#root_pathObject (readonly)

Root path for SSM parameters



31
32
33
# File 'lib/knowledge/adapters/ssm.rb', line 31

def root_path
  @root_path
end

#setterClass (readonly)

Returns the current value of setter.

Returns:

  • (Class)

    the current value of setter



31
32
33
# File 'lib/knowledge/adapters/ssm.rb', line 31

def setter
  @setter
end

#ssm_parametersObject (readonly)

Parameters to fetch



31
32
33
# File 'lib/knowledge/adapters/ssm.rb', line 31

def ssm_parameters
  @ssm_parameters
end

#variablesHash (readonly)

Returns the current value of variables.

Returns:

  • (Hash)

    the current value of variables



31
32
33
# File 'lib/knowledge/adapters/ssm.rb', line 31

def variables
  @variables
end

Instance Method Details

#runObject

Runs the actual adapter.



67
68
69
70
71
72
73
74
# File 'lib/knowledge/adapters/ssm.rb', line 67

def run
  variables.each do |name, (path, default_value)|
    path = "/#{path.sub('/', '')}"
    value = Array(@ssm_parameters).detect { |p| p.name == "#{base_path}#{path}" }&.value

    setter.set(name: name, value: extract_value(value, default_value))
  end
end