Class: StackMaster::ParameterResolvers::JsonParameterStoreResolver

Inherits:
Resolver
  • Object
show all
Defined in:
lib/stack_master/parameter_resolvers/json_parameter_store_resolver.rb

Instance Method Summary collapse

Constructor Details

#initialize(config, stack_definition) ⇒ JsonParameterStoreResolver

Returns a new instance of JsonParameterStoreResolver.



8
9
10
11
# File 'lib/stack_master/parameter_resolvers/json_parameter_store_resolver.rb', line 8

def initialize(config, stack_definition)
  @config = config
  @stack_definition = stack_definition
end

Instance Method Details

#parse_json(json, partition) ⇒ Object



26
27
28
# File 'lib/stack_master/parameter_resolvers/json_parameter_store_resolver.rb', line 26

def parse_json(json, partition)
  JMESPath.search(partition[:jmespath], json)
end

#partition_value(value) ⇒ Object



30
31
32
33
# File 'lib/stack_master/parameter_resolvers/json_parameter_store_resolver.rb', line 30

def partition_value(value)
  partition = value.partition('#')
  {parampath: partition.first, jmespath: partition.last}
end

#resolve(value) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/stack_master/parameter_resolvers/json_parameter_store_resolver.rb', line 13

def resolve(value)
  partition = partition_value(value)
  begin
    resp = ssm.get_parameter({
      name: partition[:parampath],
      with_decryption: false
    })
  rescue Aws::SSM::Errors::ParameterNotFound
    raise StackMaster::ParameterResolvers::ParameterStore::ParameterNotFound, "Unable to find #{partition[:parampath]} in Parameter Store"
  end
  parse_json(JSON.parse(resp.parameter.value), partition)
end