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