class Opsicle::Permit

Public Class Methods

new(environment) click to toggle source
# File lib/opsicle/commands/permit.rb, line 3
def initialize(environment)
  @client = Client.new(environment)
end

Public Instance Methods

all_stack_ids() click to toggle source
# File lib/opsicle/commands/permit.rb, line 16
def all_stack_ids
  @client.api_call(:describe_stacks)[:stacks].map{ |stack| stack[:stack_id] }
end
current_stack_id() click to toggle source
# File lib/opsicle/commands/permit.rb, line 20
def current_stack_id
  @client.config.opsworks_config[:stack_id]
end
execute(options={}) click to toggle source
# File lib/opsicle/commands/permit.rb, line 7
def execute(options={})
  stack_ids = options[:all_stacks] ? all_stack_ids : [current_stack_id]
  stack_ids.each do |stack_id|
    iam_user_arns(options[:user]).each do |arn|
      set_permission(arn, stack_id)
    end
  end
end
iam_user_arns(user_names) click to toggle source
# File lib/opsicle/commands/permit.rb, line 24
def iam_user_arns(user_names)
  if user_names && !user_names.empty?
    user_names.map do |user_name|
      profile = profiles.detect{ |profile| profile[:name] == user_name || profile[:ssh_username] == user_name}
      raise ArgumentError, "User #{user_name} not found" unless profile
      profile[:iam_user_arn]
    end
  else
    [UserProfile.new(@client).arn]
  end
end

Private Instance Methods

profiles() click to toggle source
# File lib/opsicle/commands/permit.rb, line 41
def profiles
  @profiles ||= @client.api_call(:describe_user_profiles)[:user_profiles]
end
set_permission(arn, stack_id) click to toggle source
# File lib/opsicle/commands/permit.rb, line 36
def set_permission(arn, stack_id)
  @client.api_call(:set_permission, { allow_ssh: true, allow_sudo: true, iam_user_arn: arn , stack_id: stack_id } )
end