class Cumulus::IAM::IamGroups
Public Class Methods
new(iam)
click to toggle source
Calls superclass method
# File lib/iam/manager/IamGroups.rb, line 15 def initialize(iam) super(iam) @type = "group" @migration_dir = "groups" end
Public Instance Methods
aws_resources()
click to toggle source
# File lib/iam/manager/IamGroups.rb, line 33 def aws_resources @aws_groups ||= init_aws_groups end
create(difference)
click to toggle source
# File lib/iam/manager/IamGroups.rb, line 43 def create(difference) @iam.create_group({ :group_name => difference.local.name }) resource = Aws::IAM::Group.new(difference.local.name, { :client => @iam }) add_users(resource, difference.local.users) resource end
empty_config()
click to toggle source
# File lib/iam/manager/IamGroups.rb, line 69 def empty_config GroupConfig.new end
init_aws_groups()
click to toggle source
# File lib/iam/manager/IamGroups.rb, line 37 def init_aws_groups @iam.list_groups().groups.map do |group| Aws::IAM::Group.new(group.group_name, { :client => @iam }) end end
local_resources()
click to toggle source
# File lib/iam/manager/IamGroups.rb, line 21 def local_resources local = {} Loader.groups.each do |group| local[group.name] = group end local end
migrate_additional(configs_to_aws)
click to toggle source
# File lib/iam/manager/IamGroups.rb, line 73 def migrate_additional(configs_to_aws) configs_to_aws.map do |config, resource| config.users = resource.users.map { |u| u.name } end end
one_local(name)
click to toggle source
# File lib/iam/manager/IamGroups.rb, line 29 def one_local(name) Loader.group(name) end
update(resource, diffs)
click to toggle source
Calls superclass method
# File lib/iam/manager/IamGroups.rb, line 52 def update(resource, diffs) super(resource, diffs) if diffs.size == 1 and diffs[0].type == Common::DiffChange::ADD puts Colors.blue("\tadding users...") add_users(resource, diffs[0].local.users) else diffs.each do |diff| if diff.type == IamChange::USER puts Colors.blue("\tupdating users...") add_users(resource, diff.added_users) diff.removed_users.each { |u| resource.remove_user({ :user_name => u }) } end end end end
Private Instance Methods
add_users(resource, users)
click to toggle source
Internal: Add the users assigned to the group to the group, handling the case that the user doesn't exist
resource - the aws group resource users - the users to add
# File lib/iam/manager/IamGroups.rb, line 86 def add_users(resource, users) users.each do |u| begin resource.add_user({ :user_name => u }) rescue Aws::IAM::Errors::NoSuchEntity puts Colors.red("\tNo such user #{u}!") end end end