module AwsInventory::Iam::Shared

Public Instance Methods

all_users() click to toggle source

{

"tung": ["admin", "developers"],
"vuon": ["admin"],
"bob": ["developers"]

}

# File lib/aws_inventory/iam/shared.rb, line 37
def all_users
  @all_users ||= users.inject({}) do |result, user|
    result[user.user_name] = group_names(user)
    result
  end
end
group_names(user) click to toggle source
# File lib/aws_inventory/iam/shared.rb, line 2
def group_names(user)
  groups = groups_for(user)
  groups.map(&:group_name)
end
groupless_users() click to toggle source
# File lib/aws_inventory/iam/shared.rb, line 25
def groupless_users
  selected_users = all_users.select do |user_name, group_names|
      group_names.empty?
    end
    selected_users.map { |a| a[0] }
end
groups() click to toggle source
# File lib/aws_inventory/iam/shared.rb, line 59
def groups
  @groups ||= iam.list_groups.groups
end
groups_for(user) click to toggle source
# File lib/aws_inventory/iam/shared.rb, line 8
def groups_for(user)
  return @@groups[user.user_name] if @@groups[user.user_name]

  @@groups[user.user_name] = iam.list_groups_for_user(user_name: user.user_name).groups
end
user_count(group) click to toggle source
# File lib/aws_inventory/iam/shared.rb, line 44
def user_count(group)
  group_counts[group.group_name]
end
user_names(group) click to toggle source
# File lib/aws_inventory/iam/shared.rb, line 48
def user_names(group)
  users.each do |user|
    result[user.user_name] = group_names(user)
    result
  end
end
users() click to toggle source
# File lib/aws_inventory/iam/shared.rb, line 55
def users
  @users ||= iam.list_users.users
end
users_in_group(group_name) click to toggle source

iam.list_groups does not show the users in the groups. so users_in_groups returns an Array of the user_names in the specified group

# File lib/aws_inventory/iam/shared.rb, line 16
def users_in_group(group_name)
  # user_name is a String
  # group_names is an Array of Strings
  selected_users = all_users.select do |user_name, group_names|
      group_names.include?(group_name)
    end
  selected_users.map { |a| a[0] }
end