Sha256: 6a14040733d6bd6a9d9d975887e0da1eba819a3f563944677b770548d5d9a8d4

Contents?: true

Size: 913 Bytes

Versions: 3

Compression:

Stored size: 913 Bytes

Contents

module AwsRds
  class SecurityGroup
    include AwsServices

    # Returns Aws::EC2::Types::SecurityGroup
    def find_or_create(name)
      resp = ec2.describe_security_groups(
        filters: [
          {name: 'vpc-id', values: [AwsRds.config["vpc_id"]]},
          {name: 'group-name', values: [name]}]
        )
      sg = resp.security_groups.first
      return sg if sg

      puts "Creating security group #{name}"
      result = ec2.create_security_group(
        group_name: name,
        description: name,
        vpc_id: AwsRds.config["vpc_id"],
      )
      # TODO: add waiter
      # ec2.create_tags(
      #   resources: [result.group_id],
      #   tags: [{ key: "Name", value: name }],
      # )
      resp = ec2.describe_security_groups(group_ids: [result.group_id])
      resp.security_groups.first
    end

    def self.find_or_create(name)
      new.find_or_create(name)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
aws-rds-0.3.0 lib/aws_rds/security_group.rb
aws-rds-0.2.0 lib/aws_rds/security_group.rb
aws-rds-0.1.2 lib/aws_rds/security_group.rb