class Miam::DSL::Context::Role

Public Class Methods

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

Public Instance Methods

result() click to toggle source
# File lib/miam/dsl/context/role.rb, line 11
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/miam/dsl/context/role.rb, line 29
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
end
attached_managed_policies(*policies) click to toggle source
# File lib/miam/dsl/context/role.rb, line 59
def attached_managed_policies(*policies)
  @result[:attached_managed_policies].concat(policies.map(&:to_s))
end
instance_profiles(*profiles) click to toggle source
# File lib/miam/dsl/context/role.rb, line 21
def instance_profiles(*profiles)
  @result[:instance_profiles].concat(profiles.map(&:to_s))
end
max_session_duration(duration) click to toggle source
# File lib/miam/dsl/context/role.rb, line 25
def max_session_duration(duration)
  @result[:max_session_duration] = duration
end
policy(name) { || ... } click to toggle source
# File lib/miam/dsl/context/role.rb, line 43
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
end