class Subiam::DSL::Context::Role

Public Class Methods

new(context, name, &block) click to toggle source
# File lib/subiam/dsl/context/role.rb, line 5
def initialize(context, name, &block)
  @role_name = name
  @context = context.merge(:role_name => name)
  @result = {:instance_profiles => [], :policies => {}, :attached_managed_policies => []}
  instance_eval(&block)
end

Public Instance Methods

result() click to toggle source
# File lib/subiam/dsl/context/role.rb, line 12
def result
  unless @result[:assume_role_policy_document]
    raise "Role `#{@role_name}`: AssumeRolePolicyDocument is not defined"
  end

  @result
end

Private Instance Methods

assume_role_policy_document() { || ... } click to toggle source
# File lib/subiam/dsl/context/role.rb, line 26
def assume_role_policy_document
  if @result[:assume_role_policy_document]
    raise "Role `#{@role_name}` > AssumeRolePolicyDocument: already defined"
  end

  assume_role_policy_document = yield

  unless assume_role_policy_document.kind_of?(Hash)
    raise "Role `#{@role_name}` > AssumeRolePolicyDocument: wrong argument type #{policy_document.class} (expected Hash)"
  end

  @result[:assume_role_policy_document] = assume_role_policy_document.keys_to_s_recursive
end
attached_managed_policies(*policies) click to toggle source
# File lib/subiam/dsl/context/role.rb, line 56
def attached_managed_policies(*policies)
  @result[:attached_managed_policies].concat(policies.map(&:to_s))
end
instance_profiles(*profiles) click to toggle source
# File lib/subiam/dsl/context/role.rb, line 22
def instance_profiles(*profiles)
  @result[:instance_profiles].concat(profiles.map(&:to_s))
end
policy(name) { || ... } click to toggle source
# File lib/subiam/dsl/context/role.rb, line 40
def policy(name)
  name = name.to_s

  if @result[:policies][name]
    raise "Role `#{@role_name}` > Policy `#{name}`: already defined"
  end

  policy_document = yield

  unless policy_document.kind_of?(Hash)
    raise "Role `#{@role_name}` > Policy `#{name}`: wrong argument type #{policy_document.class} (expected Hash)"
  end

  @result[:policies][name] = policy_document.keys_to_s_recursive
end