class Plat::Role::IAMRole

Constants

ACCESS_TYPES

Attributes

cpu_role[R]

Public Class Methods

new(cpu_role) click to toggle source
# File lib/plat/role/iam_role.rb, line 10
def initialize(cpu_role)
  @cpu_role = cpu_role
end

Public Instance Methods

accessible_roles() click to toggle source
# File lib/plat/role/iam_role.rb, line 18
def accessible_roles
  if access_options = options[:access]
    if (access_options.keys & ACCESS_TYPES).empty?
      roles_with_access access_options, :full
    else
      ACCESS_TYPES.map do |access_type|
        access_options[access_type] ? roles_with_access(access_options[access_type],access_type) : {}
      end.collect(&:+)
    end
  else
    roles_with_access all_roles, :full 
  end
end
all_roles() click to toggle source
# File lib/plat/role/iam_role.rb, line 14
def all_roles
  @all_roles ||= layout.roles.keys
end
aws_policy() click to toggle source
# File lib/plat/role/iam_role.rb, line 46
def aws_policy
  @aws_policy ||= AWS::IAM::Policy.new do |policy|
    accessible_roles.each_pair do |role,access_type|
      role.allow_access(policy,access_type)
    end
  end
end
roles_with_access(access_options,access_type) click to toggle source
# File lib/plat/role/iam_role.rb, line 31
def roles_with_access(access_options,access_type)
  roles = all_roles
  if access_options.is_a? Hash
    if access_options[:only]
      roles &= Array(access_options[:only])
    end
    if access_options[:except]
      roles -= Array(access_options[:except])
    end
  else
    roles &= Array(access_options)
  end
  roles.map { |role| [role,access_type] }.to_hash
end