class GeoEngineer::Resources::AwsIamPolicyAttachment

AwsIamPolicyAttachment aws_iam_policy_attachment terrform resource,

{www.terraform.io/docs/providers/aws/r/iam_policy_attachment.html Terraform Docs}

Public Instance Methods

build_remote_resource_params(arn, entities) click to toggle source
# File lib/geoengineer/resources/aws_iam_policy_attachment.rb, line 84
def build_remote_resource_params(arn, entities)
  {
    name: _policy.name,
    _terraform_id: arn,
    _geo_id: _policy.name,
    policy_arn: arn,
    users: entities[:policy_users].map(&:user_name),
    groups: entities[:policy_groups].map(&:group_name),
    roles: entities[:policy_roles].map(&:role_name)
  }
end
find_remote_as_individual?() click to toggle source
# File lib/geoengineer/resources/aws_iam_policy_attachment.rb, line 71
def find_remote_as_individual?
  true
end
remote_resource_params() click to toggle source
# File lib/geoengineer/resources/aws_iam_policy_attachment.rb, line 75
def remote_resource_params
  return {} unless _policy
  return {} unless _policy.remote_resource

  arn = _policy.remote_resource._terraform_id
  entities = AwsClients.iam(provider).list_entities_for_policy({ policy_arn: arn })
  build_remote_resource_params(arn, entities)
end
shares_name_with_policy?() click to toggle source
# File lib/geoengineer/resources/aws_iam_policy_attachment.rb, line 21
def shares_name_with_policy?
  policy && name.to_s == policy.name
end
support_tags?() click to toggle source
# File lib/geoengineer/resources/aws_iam_policy_attachment.rb, line 67
def support_tags?
  false
end
terraform_groups_attributes() click to toggle source
# File lib/geoengineer/resources/aws_iam_policy_attachment.rb, line 49
def terraform_groups_attributes
  return {} if groups.nil?

  groups_attributes = { 'groups.#' => groups.count.to_s }
  groups.each_with_index { |g, i| groups_attributes["groups.#{i}"] = g }

  groups_attributes
end
terraform_roles_attributes() click to toggle source
# File lib/geoengineer/resources/aws_iam_policy_attachment.rb, line 58
def terraform_roles_attributes
  return {} if roles.nil?

  roles_attributes = { 'roles.#' => roles.count.to_s }
  roles.each_with_index { |r, i| roles_attributes["roles.#{i}"] = r }

  roles_attributes
end
terraform_users_attributes() click to toggle source
# File lib/geoengineer/resources/aws_iam_policy_attachment.rb, line 40
def terraform_users_attributes
  return {} if users.nil?

  user_attributes = { 'users.#' => users.count.to_s }
  users.each_with_index { |u, i| user_attributes["users.#{i}"] = u }

  user_attributes
end
to_terraform_state() click to toggle source
# File lib/geoengineer/resources/aws_iam_policy_attachment.rb, line 25
def to_terraform_state
  tfstate = super

  attributes = { 'name' => name.to_s }
  attributes['policy_arn'] = remote_resource.policy_arn if remote_resource

  attributes = attributes
               .merge(terraform_users_attributes)
               .merge(terraform_groups_attributes)
               .merge(terraform_roles_attributes)

  tfstate[:primary][:attributes] = attributes
  tfstate
end
validate_shares_name_with_policy() click to toggle source
# File lib/geoengineer/resources/aws_iam_policy_attachment.rb, line 16
def validate_shares_name_with_policy
  return "Policy attachment must share a name with the policy" unless shares_name_with_policy?
  []
end