Sha256: a9c5ca648a601d96bbfcc31a475139fe24b05eb557b75fa6beadbcf164e2bcfc

Contents?: true

Size: 931 Bytes

Versions: 1

Compression:

Stored size: 931 Bytes

Contents

require 'aws-sdk-v1'

module Capistrano
  module Ec2RoleTag
    class AwsEc2Loader
      def initialize(options = {})
        if options[:region].nil?
          @ec2 = AWS::EC2::Client.new(region: 'us-west-2')
        else
          @ec2 = AWS::EC2::Client.new(region: options[:region])
        end
      end
      def fetch(options = {})
        apps = @ec2.describe_instances(
          {filters: [
            {name: "tag:Stage", values: [options[:stage].to_s]},
            {name: "tag:Role", values: [options[:role].to_s]},
            {name: "instance-state-name", values: ["running"]}
          ]})
        return [] if apps.reservation_set.empty?

        result = []
        apps.reservation_set.each do |reservation|
          next if reservation.instances_set.empty?
          result += reservation.instances_set.map {|instance| instance.private_dns_name }
        end

        return result
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
capistrano-ec2_role_tag-0.0.6 lib/capistrano/ec2_role_tag/aws_ec2_loader.rb