Class: Jets::Resource::Permission

Inherits:
Object
  • Object
show all
Extended by:
Memoist
Defined in:
lib/jets/resource/permission.rb

Instance Method Summary collapse

Constructor Details

#initialize(replacements, associated_resource) ⇒ Permission

Returns a new instance of Permission.



5
6
7
8
9
10
# File 'lib/jets/resource/permission.rb', line 5

def initialize(replacements, associated_resource)
  @replacements = replacements
  # puts caller
  # puts "replacements #{replacements.inspect}"
  @associated_resource = associated_resource
end

Instance Method Details

#attributesObject



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/jets/resource/permission.rb', line 30

def attributes
  attributes = {
    type: "AWS::Lambda::Permission",
    properties: {
      function_name: "!GetAtt {namespace}LambdaFunction.Arn",
      action: "lambda:InvokeFunction",
      principal: principal,
      source_arn: source_arn,
    }
  }
  attributes = replacer.replace_placeholders(attributes)
  Jets::Pascalize.pascalize(attributes)
end

#logical_idObject



12
13
14
15
16
17
18
19
20
# File 'lib/jets/resource/permission.rb', line 12

def logical_id
  logical_id = "{namespace}Permission"
  md = @associated_resource.logical_id.match(/(\d+)/)
  counter = md[1] if md
  logical_id = [logical_id, counter].compact.join('')
  # replace possible {namespace} in the logical id
  logical_id = replacer.replace_value(logical_id)
  Jets::Pascalize.pascalize_string(logical_id)
end

#principalObject

Auto-detect principal from the associated resources.



46
47
48
# File 'lib/jets/resource/permission.rb', line 46

def principal
  Replacer.principal_map(@associated_resource.type)
end

#propertiesObject



26
27
28
# File 'lib/jets/resource/permission.rb', line 26

def properties
  attributes['Properties']
end

#replacerObject



55
56
57
# File 'lib/jets/resource/permission.rb', line 55

def replacer
  Replacer.new(@replacements)
end

#source_arnObject



50
51
52
53
# File 'lib/jets/resource/permission.rb', line 50

def source_arn
  default_arn = "!GetAtt #{@associated_resource.logical_id}.Arn"
  Replacer.source_arn_map(@associated_resource.type) || default_arn
end

#typeObject



22
23
24
# File 'lib/jets/resource/permission.rb', line 22

def type
  attributes['Type']
end