Sha256: 63ced0dd813b6438ca1c0c5d09da900142b3dd4c50f1f4a00a4d33891b6ce484

Contents?: true

Size: 1.89 KB

Versions: 12

Compression:

Stored size: 1.89 KB

Contents

# frozen_string_literal: true

module Awspec::Type
  class RdsProxy < ResourceBase
    aws_resource Aws::RDS::Types::DBProxy

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

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

    STATES = %w[
      available creating deleting incompatible-network
      insufficient-resource-limits modifying reactivating
      suspended suspending
    ]

    STATES.each do |state|
      define_method "#{state.tr('-', '_')}?" do
        resource_via_client.status == state
      end
    end

    def vpc_id
      resource_via_client.vpc_id
    end

    def has_security_group?(sg_id)
      return true if has_vpc_security_group_id?(sg_id)
      return true if has_vpc_security_group_name?(sg_id)
      return true if has_vpc_security_group_tag_name?(sg_id)
    end

    private

    def has_vpc_security_group_id?(sg_id)
      resource_via_client.vpc_security_group_ids.include?(sg_id)
    end

    def has_vpc_security_group_name?(sg_id)
      sgs = resource_via_client.vpc_security_group_ids
      res = ec2_client.describe_security_groups({
                                                  filters: [{ name: 'group-name', values: [sg_id] }]
                                                })
      return false unless res.security_groups.count == 1

      sgs.find do |sg|
        sg == res.security_groups.first.group_id
      end
    end

    def has_vpc_security_group_tag_name?(sg_id)
      sgs = resource_via_client.vpc_security_group_ids
      res = ec2_client.describe_security_groups({
                                                  filters: [{ name: 'tag:Name', values: [sg_id] }]
                                                })
      return false unless res.security_groups.count == 1

      sgs.find do |sg|
        sg == res.security_groups.first.group_id
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

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