Sha256: 41057ba7136819632afa2ae7a455788c8d4a34c617101f80a8c32e58fbfa1925

Contents?: true

Size: 1.42 KB

Versions: 5

Compression:

Stored size: 1.42 KB

Contents

module Inventory::Iam::Shared
  def group_names(user)
    groups = groups_for(user)
    groups.map(&:group_name)
  end

  @@groups = {}
  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

  # 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
  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

  def groupless_users
    selected_users = all_users.select do |user_name, group_names|
        group_names.empty?
      end
      selected_users.map { |a| a[0] }
  end

  # {
  #   "tung": ["admin", "developers"],
  #   "vuon": ["admin"],
  #   "bob": ["developers"]
  # }
  def all_users
    @all_users ||= users.inject({}) do |result, user|
      result[user.user_name] = group_names(user)
      result
    end
  end

  def user_count(group)
    group_counts[group.group_name]
  end

  def user_names(group)
    users.each do |user|
      result[user.user_name] = group_names(user)
      result
    end
  end

  def users
    @users ||= iam.list_users.users
  end

  def groups
    @groups ||= iam.list_groups.groups
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
aws-inventory-0.3.2 lib/inventory/iam/shared.rb
aws-inventory-0.3.1 lib/inventory/iam/shared.rb
aws-inventory-0.3.0 lib/inventory/iam/shared.rb
aws-inventory-0.2.1 lib/inventory/iam/shared.rb
aws-inventory-0.2.0 lib/inventory/iam/shared.rb