Class: KubesAws::SSM

Inherits:
Object
  • Object
show all
Includes:
Services
Defined in:
lib/kubes_aws/ssm.rb,
lib/kubes_aws/ssm/fetcher.rb

Defined Under Namespace

Classes: Fetcher

Constant Summary collapse

PAGE_SIZE =
1

Instance Method Summary collapse

Methods included from Services

#eks, #iam, #secrets, #ssm

Constructor Details

#initialize(upcase: false, base64: false, prefix: nil, filters: []) ⇒ SSM

Returns a new instance of SSM.



5
6
7
8
# File 'lib/kubes_aws/ssm.rb', line 5

def initialize(upcase: false, base64: false, prefix: nil, filters: [])
  @upcase, @base64, @filters = upcase, base64, filters
  @prefix = ENV['AWS_SSM_PREFIX'] || prefix # IE: prefix: /demo/dev/
end

Instance Method Details

#callObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/kubes_aws/ssm.rb', line 10

def call
  items.each do |item|
    next unless item.name.include?(@prefix)

    resp = ssm.get_parameter(name: item.name, with_decryption: true)
    parameter = resp.parameter

    key = parameter.name.sub(@prefix,'')
    value = parameter.value
    value = Base64.strict_encode64(value).strip if @base64

    key = key.upcase if @upcase
    self.class.data[key] = value
  end
end

#dataObject



50
51
52
# File 'lib/kubes_aws/ssm.rb', line 50

def data
  self.class.data
end

#itemsObject

Returns flattened lazy Enumerator



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/kubes_aws/ssm.rb', line 27

def items
  Enumerator.new do |y|
    next_token = nil
    loop do
      args = {max_results: PAGE_SIZE}
      args[:next_token] = next_token if next_token
      args.merge!(parameter_filters: @filters)

      resp = ssm.get_parameters_by_path(
        path: @prefix,
      )

      items = resp.parameters
      next_token = resp.next_token

      y.yield(items, resp) # also provided the original resp always in case it is useful
      break unless next_token
    end
  end.lazy.flat_map { |v| v }
end