class PracticeTerraforming::Resource::IamRolePolicyAttachment
Public Class Methods
new(client)
click to toggle source
# File lib/practice_terraforming/resource/iam_role_policy_attachment.rb, line 16 def initialize(client) @client = client end
tf(client: Aws::IAM::Client.new)
click to toggle source
# File lib/practice_terraforming/resource/iam_role_policy_attachment.rb, line 8 def self.tf(client: Aws::IAM::Client.new) self.new(client).tf end
tfstate(client: Aws::IAM::Client.new)
click to toggle source
# File lib/practice_terraforming/resource/iam_role_policy_attachment.rb, line 12 def self.tfstate(client: Aws::IAM::Client.new) self.new(client).tfstate end
Public Instance Methods
tf()
click to toggle source
# File lib/practice_terraforming/resource/iam_role_policy_attachment.rb, line 20 def tf apply_template(@client, "tf/iam_role_policy_attachment") end
tfstate()
click to toggle source
# File lib/practice_terraforming/resource/iam_role_policy_attachment.rb, line 24 def tfstate iam_role_policy_attachments.inject({}) do |resources, role_policy_attachment| attributes = { "id" => role_policy_attachment[:name], "policy_arn" => role_policy_attachment[:policy_arn], "role" => role_policy_attachment[:role] } resources["aws_iam_role_policy_attachment.#{module_name_of(role_policy_attachment)}"] = { "type" => "aws_iam_role_policy_attachment", "primary" => { "id" => role_policy_attachment[:name], "attributes" => attributes } } resources end end
Private Instance Methods
attachment_name_from(role, policy)
click to toggle source
# File lib/practice_terraforming/resource/iam_role_policy_attachment.rb, line 45 def attachment_name_from(role, policy) "#{role.role_name}-#{policy.policy_name}-attachment" end
iam_role_policy_attachments()
click to toggle source
# File lib/practice_terraforming/resource/iam_role_policy_attachment.rb, line 57 def iam_role_policy_attachments iam_roles.map do |role| policies_attached_to(role).map do |policy| { role: role.role_name, policy_arn: policy.policy_arn, name: attachment_name_from(role, policy) } end end.flatten end
iam_roles()
click to toggle source
# File lib/practice_terraforming/resource/iam_role_policy_attachment.rb, line 49 def iam_roles @client.list_roles.map(&:roles).flatten end
module_name_of(role_policy_attachment)
click to toggle source
# File lib/practice_terraforming/resource/iam_role_policy_attachment.rb, line 69 def module_name_of(role_policy_attachment) normalize_module_name(role_policy_attachment[:name]) end
policies_attached_to(role)
click to toggle source
# File lib/practice_terraforming/resource/iam_role_policy_attachment.rb, line 53 def policies_attached_to(role) @client.list_attached_role_policies(role_name: role.role_name).attached_policies end