Sha256: 414cdf473c8fa91e60ebf9f2cee017a27c1ffb81b2b543dbd43dc5eadf282412

Contents?: true

Size: 1.17 KB

Versions: 13

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

module Awspec::Type
  class IamRole < ResourceBase
    aws_resource Aws::IAM::Role

    def resource_via_client
      @resource_via_client ||= find_iam_role(@display_name)
    end

    def id
      @id ||= resource_via_client.role_name if resource_via_client
    end

    def has_iam_policy?(policy_id)
      policies = select_iam_policy_by_role_name(resource_via_client.role_name)
      policies.find do |policy|
        policy.policy_arn == policy_id || policy.policy_name == policy_id
      end
    end

    def has_inline_policy?(policy_name, document = nil)
      return has_any_inline_policies? unless policy_name

      res = iam_client.get_role_policy({
                                         role_name: resource_via_client.role_name,
                                         policy_name: policy_name
                                       })
      return JSON.parse(URI.decode_www_form_component(res.policy_document)) == JSON.parse(document) if document

      res
    end

    private

    def has_any_inline_policies?
      res = iam_client.list_role_policies(role_name: resource_via_client.role_name)
      !res.policy_names.empty?
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
awspec-1.31.0 lib/awspec/type/iam_role.rb
awspec-1.30.0 lib/awspec/type/iam_role.rb
awspec-1.29.3 lib/awspec/type/iam_role.rb
awspec-1.29.2 lib/awspec/type/iam_role.rb
awspec-1.29.1 lib/awspec/type/iam_role.rb
awspec-1.29.0 lib/awspec/type/iam_role.rb
awspec-1.28.2 lib/awspec/type/iam_role.rb
awspec-1.28.1 lib/awspec/type/iam_role.rb
awspec-1.28.0 lib/awspec/type/iam_role.rb
awspec-1.27.1 lib/awspec/type/iam_role.rb
awspec-1.27.0 lib/awspec/type/iam_role.rb
awspec-1.26.0 lib/awspec/type/iam_role.rb
awspec-1.25.2 lib/awspec/type/iam_role.rb